Skip to content

Add Slack Voice Operator — LLM-summarised channels, @mention daemon, voice send - #365

Open
hassan1731996 wants to merge 1 commit into
openhome-dev:devfrom
hassan1731996:feature/slack-voice-operator
Open

Add Slack Voice Operator — LLM-summarised channels, @mention daemon, voice send#365
hassan1731996 wants to merge 1 commit into
openhome-dev:devfrom
hassan1731996:feature/slack-voice-operator

Conversation

@hassan1731996

Copy link
Copy Markdown
Contributor

What this adds

A voice-first Slack companion that goes beyond raw message reading with three differentiators:

  1. LLM summarisation — channel activity condensed to 2–3 sentences focused on decisions, blockers, and action items — never a raw dump
  2. Background @mention daemon — polls every 10 minutes, interrupts only when there are new @mentions, urgency-scored (HIGH/MEDIUM/LOW), batched into one spoken alert
  3. Natural resolution — "message Jake" or "summarise my product channel" works via fuzzy match + LLM fallback; no exact handle required

Intents

Intent Example
MENTIONS "any mentions?" / "did anyone ping me?"
SUMMARY "what's happening in #engineering?"
SEND "message Jake: I'll be 5 minutes late"
CHANNELS "list my Slack channels"
SETUP first run / "change my Slack settings"

SDK patterns applied

  • Platform profile (user_profile.md / user_summary.md) read first for user name; only asks if empty
  • Passive data capture: SEND extracts recipient + message in one LLM call; single follow-up only if both fields are missing
  • EXIT_WORDS = standalone tokens only; EXIT_PHRASES for multi-word exits
  • Storage upsert: create_key first → fallback update_key
  • Background daemon: background_daemon_mode set before CapabilityWorker
  • resume_normal_flow() in finally on foreground; at top of watch_loop() in daemon
  • All API calls via get_api_keys("slack_bot_token") — no hardcoded credentials

Setup required

User creates a Slack app, adds scopes (channels:history, channels:read, groups:history, groups:read, im:history, im:read, chat:write, users:read), installs to workspace, and saves the bot token in OpenHome settings as slack_bot_token. First-voice-run setup resolves their Slack User ID by display name (fully voice-native, no copy-pasting IDs).

Validation

✅ All checks passed!

Voice-first Slack companion with LLM-powered channel summaries, proactive @mention alerts via background daemon, natural name/channel resolution, and voice message sending with confirmation.
@hassan1731996
hassan1731996 requested a review from a team as a code owner August 14, 2026 21:51
@github-actions

Copy link
Copy Markdown
Contributor

🔀 Branch Merge Check

PR direction: feature/slack-voice-operatordev

Passedfeature/slack-voice-operatordev is a valid merge direction

@github-actions

Copy link
Copy Markdown
Contributor

✅ Community PR Path Check — Passed

All changed files are inside the community/ folder. Looks good!

@github-actions github-actions Bot added the community-ability Community-contributed ability label Aug 14, 2026
@github-actions

Copy link
Copy Markdown
Contributor

✅ Ability Validation Passed

📋 Validating: community/slack-voice-operator
  ✅ All checks passed!

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Lint Results

🔧 Formatting fixes available

This PR is from a fork, so fixes could not be pushed automatically. Download the python-lint-results artifact from the workflow run for the patch file, then run:

git apply autofix.patch

__init__.py — Empty as expected

Files linted: community/slack-voice-operator/background.py community/slack-voice-operator/main.py

✅ Flake8 — Passed

✅ All checks passed!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community-ability Community-contributed ability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant