Skip to content

feat(slack): add --no-assistant flag to manifest generation - #51487

Merged
teknium1 merged 1 commit into
mainfrom
feat/slack-no-assistant
Jun 23, 2026
Merged

feat(slack): add --no-assistant flag to manifest generation#51487
teknium1 merged 1 commit into
mainfrom
feat/slack-no-assistant

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

Adds --no-assistant to hermes slack manifest, emitting a flat-DM manifest that omits Slack's AI Assistant container (assistant_view, assistant:write, assistant_thread_* events). DMs then render as a normal chat where bare slash commands (/help, /new) dispatch inline instead of only on @mention inside the Assistant thread pane.

Salvage of #51416 by @victor-kyriazakos, cherry-picked onto current main with authorship preserved.

Why a flag, not a default flip

The Slack adapter actively uses assistant mode: assistant_threads.setStatus powers the "is thinking…" indicator, and assistant_thread_started seeds session/memory scoping before the first DM message. Defaulting assistant off would silently regress that for every user to fix a slash-in-DM problem that only bites slash-heavy DM users. Assistant-on stays the default; --no-assistant is the opt-out. The assistant-on manifest is byte-identical to before (existing test retained).

Changes

  • hermes_cli/slack_cli.py: _build_full_manifest(..., include_assistant=True); assistant pieces gated behind the flag
  • hermes_cli/subcommands/slack.py: --no-assistant argparse wiring
  • tests/hermes_cli/test_slack_cli.py: argparse default/set, omission, core-surface-preserved (7 tests)

Validation

Default --no-assistant
assistant_view present dropped
assistant:write scope present (14 scopes) dropped (13 scopes)
assistant_thread_* events present dropped
Messages tab / Socket Mode / slashes / channel+DM scopes kept kept

7/7 tests pass. E2E-verified argparse → manifest → JSON for both modes against a temp HERMES_HOME.

Closes #51416.

Infographic

slack-no-assistant

By default `hermes slack manifest` opts the app into Slack's AI Assistant
container (assistant_view feature + assistant:write scope +
assistant_thread_* events). Slack then renders DMs as the right-hand
Assistant split-pane, where every exchange is a thread and bare slash
commands (/help, /new, ...) are not delivered as normal command events —
they only work when the bot is @mentioned. There was no way to opt out
short of hand-editing the generated JSON.

Add --no-assistant to emit a flat-DM manifest that omits those three
pieces, so DMs render as a normal chat and slash commands dispatch
inline. The regular messaging surface (Messages tab, slash commands,
Socket Mode, channel + DM scopes/events) is preserved in both modes.

Default behaviour is unchanged (assistant mode still on).

Tests: cover both manifest modes and the argparse wiring.
@github-actions

Copy link
Copy Markdown
Contributor

🔎 Lint report: feat/slack-no-assistant vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 11115 on HEAD, 11115 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 5859 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@teknium1
teknium1 merged commit da80ac0 into main Jun 23, 2026
27 checks passed
@teknium1
teknium1 deleted the feat/slack-no-assistant branch June 23, 2026 18:30
@alt-glitch alt-glitch added type/feature New feature or request comp/cli CLI entry point, hermes_cli/, setup wizard platform/slack Slack app adapter P3 Low — cosmetic, nice to have labels Jun 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have platform/slack Slack app adapter type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants