fix(cli): handle plugin platforms in _get_platform_tools toolset lookup

The static PLATFORMS registry only contains built-in platforms (slack,
discord, etc.). Plugin platforms registered via
PluginContext.register_platform_adapter aren't in PLATFORMS, so the
existing PLATFORMS[platform]["default_toolset"] lookup raised KeyError
during agent loop init for any plugin-platform message.

Caught by an end-to-end test that spawns hermes gateway run + a stub
OpenAI-compat LLM and routes a real message through a plugin platform
(molecule-a2a). Fall back to "hermes-cli" (most permissive in-tree
toolset) for plugin platforms; operators can override per-platform via
config.platform_toolsets.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hongming Wang 2026-05-02 04:08:10 -07:00
parent ece9e34ec6
commit 18e4849e75

View File

@ -516,7 +516,15 @@ def _get_platform_tools(
toolset_names = platform_toolsets.get(platform)
if toolset_names is None or not isinstance(toolset_names, list):
default_ts = PLATFORMS[platform]["default_toolset"]
# Plugin platforms (registered via PluginContext.register_platform_adapter)
# aren't in the static PLATFORMS registry — fall back to the cli
# toolset, which is the most permissive in-tree default. Operators
# can override per-platform via config.platform_toolsets.
platform_info = PLATFORMS.get(platform)
if platform_info is None:
default_ts = "hermes-cli"
else:
default_ts = platform_info["default_toolset"]
toolset_names = [default_ts]
# YAML may parse bare numeric names (e.g. ``12306:``) as int.