Skip to content

Slack Agents support: pin QM to the top bar (agent_view) - #572

Open
16francej wants to merge 7 commits into
mainfrom
feat/slack-agent-pane
Open

Slack Agents support: pin QM to the top bar (agent_view)#572
16francej wants to merge 7 commits into
mainfrom
feat/slack-agent-pane

Conversation

@16francej

@16francej 16francej commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Lets users pin QM to the Slack top bar (Slack Agents & AI Apps, current-generation agent_view — not the deprecated assistant tabs) and talk to it in the split pane.

What

  • Manifest (src/slack/manifest.json + CLI template): features.agent_view, assistant:write scope, and the assistant_thread_started, assistant_thread_context_changed, app_context_changed events.
  • New src/slack/agent-pane.ts: tracks agent threads and viewing context; guarded assistant.threads.setStatus/setTitle calls that feature-detect and self-disable on installs that haven't updated.
  • Wiring (events.ts): split-pane messages are ordinary message.im thread messages, so they dispatch through the existing DM turn machinery unchanged — same sessions, same behavior. Around dispatch we set a "thinking…" status (cleared even on silent/errored turns; a posted reply clears it natively), title the thread from its first message, and pass a currently_viewing note (message app_context → saved thread context → user's last app_context_changed) into the turn's gateway context so "summarize this" works.
  • Out of scope: streaming into the pane — agent-pane.ts marks the seam (setStatus is where a chat.startStream presenter slots in).

Backward compatibility

Installs whose manifest predates the feature never receive the new events, and the first missing_scope/unavailable response disables the pane API calls for the process (one warning, then silence). No turn ever hard-fails on this path. A client without assistant.* methods is a no-op.

Release notes

Slack: QM can now be pinned to the top bar (Agents & AI Apps). To enable it on an existing install, update the app manifest from src/slack/manifest.json (adds the agent_view feature, the assistant:write scope, and three assistant_*/app_context_changed events) and reinstall the app to the workspace. Requires a paid Slack plan (or a Developer Program sandbox). Installs that don't update keep working exactly as today.

Tests

test/slack-agent-pane.test.ts (13 cases): status set/cleared incl. on dispatch failure, one-time titling, context precedence and updates, no-pane and old-client no-ops, missing_scope self-disable, manifest parity test still green. Full slack suites: 366/366; tsc --noEmit and eslint clean.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Josh France and others added 7 commits August 18, 2026 04:29
… titles, and viewing context

Agent split-pane messages already arrive as DM thread messages, so they flow
through the existing DM turn machinery unchanged. This adds the agent_view
manifest feature (+assistant:write scope and the assistant_thread_started /
assistant_thread_context_changed / app_context_changed events) and a small
agent-pane module that layers on the native affordances: a working status
while a turn runs, a thread title from the first message, and a
currently-viewing note passed into the turn context.

Fully backward compatible: installs whose manifest predates the feature never
receive the events, and the first unavailable API response disables the pane
calls for the process. Streaming is left as a marked seam.

Co-Authored-By: QM <qm@ycombinator.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant