diff --git a/gateway/run.py b/gateway/run.py index bea75af01..1beb70d3b 100644 --- a/gateway/run.py +++ b/gateway/run.py @@ -2449,7 +2449,8 @@ class GatewayRunner: ) # One-time prompt if no home channel is set for this platform - if not history and source.platform and source.platform != Platform.LOCAL: + # Skip for webhooks - they deliver directly to configured targets (github_comment, etc.) + if not history and source.platform and source.platform != Platform.LOCAL and source.platform != Platform.WEBHOOK: platform_name = source.platform.value env_key = f"{platform_name.upper()}_HOME_CHANNEL" if not os.getenv(env_key): @@ -5356,7 +5357,10 @@ class GatewayRunner: or os.getenv("HERMES_TOOL_PROGRESS_MODE") or "all" ) - tool_progress_enabled = progress_mode != "off" + # Disable tool progress for webhooks - they don't support message editing, + # so each progress line would be sent as a separate message. + from gateway.config import Platform + tool_progress_enabled = progress_mode != "off" and source.platform != Platform.WEBHOOK # Queue for progress messages (thread-safe) progress_queue = queue.Queue() if tool_progress_enabled else None diff --git a/hermes_cli/skills_config.py b/hermes_cli/skills_config.py index 07ccd0af9..7b44014ea 100644 --- a/hermes_cli/skills_config.py +++ b/hermes_cli/skills_config.py @@ -30,6 +30,7 @@ PLATFORMS = { "dingtalk": "💬 DingTalk", "feishu": "🪽 Feishu", "wecom": "💬 WeCom", + "webhook": "🔗 Webhook", } # ─── Config Helpers ─────────────────────────────────────────────────────────── diff --git a/hermes_cli/tools_config.py b/hermes_cli/tools_config.py index 4410dc81e..73282fe09 100644 --- a/hermes_cli/tools_config.py +++ b/hermes_cli/tools_config.py @@ -150,6 +150,7 @@ PLATFORMS = { "wecom": {"label": "💬 WeCom", "default_toolset": "hermes-wecom"}, "api_server": {"label": "🌐 API Server", "default_toolset": "hermes-api-server"}, "mattermost": {"label": "💬 Mattermost", "default_toolset": "hermes-mattermost"}, + "webhook": {"label": "🔗 Webhook", "default_toolset": "hermes-webhook"}, } diff --git a/toolsets.py b/toolsets.py index ad762555b..25946ea7b 100644 --- a/toolsets.py +++ b/toolsets.py @@ -369,10 +369,16 @@ TOOLSETS = { "includes": [] }, + "hermes-webhook": { + "description": "Webhook toolset - receive and process external webhook events", + "tools": _HERMES_CORE_TOOLS, + "includes": [] + }, + "hermes-gateway": { "description": "Gateway toolset - union of all messaging platform tools", "tools": [], - "includes": ["hermes-telegram", "hermes-discord", "hermes-whatsapp", "hermes-slack", "hermes-signal", "hermes-homeassistant", "hermes-email", "hermes-sms", "hermes-mattermost", "hermes-matrix", "hermes-dingtalk", "hermes-feishu", "hermes-wecom"] + "includes": ["hermes-telegram", "hermes-discord", "hermes-whatsapp", "hermes-slack", "hermes-signal", "hermes-homeassistant", "hermes-email", "hermes-sms", "hermes-mattermost", "hermes-matrix", "hermes-dingtalk", "hermes-feishu", "hermes-wecom", "hermes-webhook"] } }