diff --git a/hermes_cli/slack_cli.py b/hermes_cli/slack_cli.py index ca00588ed1..1f1747f445 100644 --- a/hermes_cli/slack_cli.py +++ b/hermes_cli/slack_cli.py @@ -48,6 +48,11 @@ def _build_full_manifest(bot_name: str, bot_description: str) -> dict: "background_color": "#1a1a2e", }, "features": { + "app_home": { + "home_tab_enabled": False, + "messages_tab_enabled": True, + "messages_tab_read_only_enabled": False, + }, "bot_user": { "display_name": bot_name[:80], "always_online": True, @@ -69,6 +74,7 @@ def _build_full_manifest(bot_name: str, bot_description: str) -> dict: "files:read", "files:write", "groups:history", + "groups:read", "im:history", "im:read", "im:write", diff --git a/tests/hermes_cli/test_slack_cli.py b/tests/hermes_cli/test_slack_cli.py new file mode 100644 index 0000000000..8ccdb7119c --- /dev/null +++ b/tests/hermes_cli/test_slack_cli.py @@ -0,0 +1,30 @@ +"""Tests for Slack CLI helpers.""" + +from hermes_cli.slack_cli import _build_full_manifest + + +class TestSlackFullManifest: + """Generated full Slack app manifest used by `hermes slack manifest`.""" + + def test_app_home_messages_are_writable(self): + manifest = _build_full_manifest("Hermes", "Your Hermes agent on Slack") + + assert manifest["features"]["app_home"] == { + "home_tab_enabled": False, + "messages_tab_enabled": True, + "messages_tab_read_only_enabled": False, + } + + def test_private_channel_directory_scope_is_included(self): + manifest = _build_full_manifest("Hermes", "Your Hermes agent on Slack") + + bot_scopes = manifest["oauth_config"]["scopes"]["bot"] + assert "groups:read" in bot_scopes + + def test_assistant_features_remain_enabled(self): + manifest = _build_full_manifest("Hermes", "Your Hermes agent on Slack") + + assert "assistant_view" in manifest["features"] + assert "assistant:write" in manifest["oauth_config"]["scopes"]["bot"] + bot_events = manifest["settings"]["event_subscriptions"]["bot_events"] + assert "assistant_thread_started" in bot_events