diff --git a/hermes_cli/tools_config.py b/hermes_cli/tools_config.py index f91abb33f8a4..e7bc392debd6 100644 --- a/hermes_cli/tools_config.py +++ b/hermes_cli/tools_config.py @@ -153,6 +153,7 @@ def _xai_credentials_present() -> bool: _TOOLSET_PLATFORM_RESTRICTIONS: Dict[str, Set[str]] = { "discord": {"discord"}, "discord_admin": {"discord"}, + "google_chat": {"google_chat"}, } @@ -1800,6 +1801,8 @@ def _get_platform_tools( known_map = config.get("known_plugin_toolsets", {}) known_for_platform = set(known_map.get(platform, [])) for pts in plugin_ts_keys: + if not _toolset_allowed_for_platform(pts, platform): + continue if pts in toolset_names: # Explicitly listed in config — enabled enabled_toolsets.add(pts) diff --git a/tests/hermes_cli/test_tools_config.py b/tests/hermes_cli/test_tools_config.py index dbe95a0cb5d5..55ac822b2c26 100644 --- a/tests/hermes_cli/test_tools_config.py +++ b/tests/hermes_cli/test_tools_config.py @@ -1316,6 +1316,15 @@ def test_discord_toolsets_not_available_on_other_platforms(): assert _toolset_allowed_for_platform("discord_admin", "discord") +def test_google_chat_toolset_not_available_on_other_platforms(): + from hermes_cli.tools_config import _toolset_allowed_for_platform + + for plat in ["cli", "telegram", "discord", "slack", "whatsapp", "signal"]: + assert not _toolset_allowed_for_platform("google_chat", plat), ( + f"`google_chat` toolset leaked onto {plat}" + ) + assert _toolset_allowed_for_platform("google_chat", "google_chat") + def test_discord_toolsets_user_enabled_are_honored(): """When the user opts in via `hermes tools`, the toolset appears.""" config = {"platform_toolsets": {"discord": ["web", "terminal", "discord"]}} @@ -1337,6 +1346,13 @@ def test_save_platform_tools_strips_restricted_toolsets(): assert "terminal" in saved +def test_save_platform_tools_strips_google_chat_toolset_from_non_google_chat(): + config = {} + _save_platform_tools(config, "telegram", {"web", "google_chat"}) + saved = config["platform_toolsets"]["telegram"] + assert "google_chat" not in saved + assert "web" in saved + def test_get_platform_tools_feishu_includes_doc_and_drive(): enabled = _get_platform_tools({}, "feishu") assert "feishu_doc" in enabled