fix(status): add missing platforms to hermes status output - #23655
mehmetkr-31 wants to merge 1 commit into
Conversation
cccb95d to
ba827f5
Compare
teknium1
left a comment
There was a problem hiding this comment.
Thanks for identifying that hermes status omits these platforms; current main still has that gap in hermes_cli/status.py:438-454.
Problems
- The added Matrix entry checks
MATRIX_HOMESERVER_URL(hermes_cli/status.py:442in this PR), but current runtime configuration requiresMATRIX_HOMESERVERplusMATRIX_ACCESS_TOKENorMATRIX_PASSWORD(gateway/config.py:1653-1667). - Mattermost and Home Assistant use
MATTERMOST_TOKENandHASS_TOKEN, not the variables added at PR lines 443-444 (gateway/config.py:1635-1642,gateway/config.py:1688-1697). - API Server/Webhook flags require truthy parsing; a non-empty
"false"is not enabled (gateway/config.py:1739,gateway/config.py:1766-1779).
Suggested changes
- Reuse or extract semantics equivalent to
hermes_cli/gateway.py:5142-5219rather than adding five independent single-env-var checks. - Add status-output coverage in
tests/hermes_cli/test_status.pyfor configured and disabled cases.
Automated hermes-sweeper review.
| @@ -439,6 +439,11 @@ def _resolve_env(env_ref) -> str: | |||
| "BlueBubbles": ("BLUEBUBBLES_SERVER_URL", "BLUEBUBBLES_HOME_CHANNEL"), | |||
| "QQBot": ("QQ_APP_ID", "QQ_HOME_CHANNEL"), | |||
| "Yuanbao": ("YUANBAO_APP_ID", "YUANBAO_HOME_CHANNEL"), | |||
| "Matrix": ("MATRIX_HOMESERVER_URL", "MATRIX_HOME_CHANNEL"), | |||
There was a problem hiding this comment.
MATRIX_HOMESERVER_URL is not the runtime key, and a homeserver alone is incomplete. Gateway configuration requires MATRIX_HOMESERVER plus MATRIX_ACCESS_TOKEN or MATRIX_PASSWORD (gateway/config.py:1653-1667); please use the same composite status predicate.
| @@ -439,6 +439,11 @@ def _resolve_env(env_ref) -> str: | |||
| "BlueBubbles": ("BLUEBUBBLES_SERVER_URL", "BLUEBUBBLES_HOME_CHANNEL"), | |||
| "QQBot": ("QQ_APP_ID", "QQ_HOME_CHANNEL"), | |||
| "Yuanbao": ("YUANBAO_APP_ID", "YUANBAO_HOME_CHANNEL"), | |||
| "Matrix": ("MATRIX_HOMESERVER_URL", "MATRIX_HOME_CHANNEL"), | |||
| "Mattermost": ("MATTERMOST_BOT_TOKEN", "MATTERMOST_HOME_CHANNEL"), | |||
There was a problem hiding this comment.
The configured Mattermost credential is MATTERMOST_TOKEN, not MATTERMOST_BOT_TOKEN (gateway/config.py:1635-1642, hermes_cli/gateway.py:4902). This row would remain unconfigured for valid current setups.
| @@ -439,6 +439,11 @@ def _resolve_env(env_ref) -> str: | |||
| "BlueBubbles": ("BLUEBUBBLES_SERVER_URL", "BLUEBUBBLES_HOME_CHANNEL"), | |||
| "QQBot": ("QQ_APP_ID", "QQ_HOME_CHANNEL"), | |||
| "Yuanbao": ("YUANBAO_APP_ID", "YUANBAO_HOME_CHANNEL"), | |||
| "Matrix": ("MATRIX_HOMESERVER_URL", "MATRIX_HOME_CHANNEL"), | |||
| "Mattermost": ("MATTERMOST_BOT_TOKEN", "MATTERMOST_HOME_CHANNEL"), | |||
| "HomeAssistant": ("HOMEASSISTANT_WEBHOOK_URL", "HOMEASSISTANT_HOME_CHANNEL"), | |||
There was a problem hiding this comment.
Home Assistant is enabled from HASS_TOKEN (with optional HASS_URL), not HOMEASSISTANT_WEBHOOK_URL (gateway/config.py:1688-1697). Please align this check with the runtime configuration contract.
| "Matrix": ("MATRIX_HOMESERVER_URL", "MATRIX_HOME_CHANNEL"), | ||
| "Mattermost": ("MATTERMOST_BOT_TOKEN", "MATTERMOST_HOME_CHANNEL"), | ||
| "HomeAssistant": ("HOMEASSISTANT_WEBHOOK_URL", "HOMEASSISTANT_HOME_CHANNEL"), | ||
| "API Server": ("API_SERVER_ENABLED", None), |
There was a problem hiding this comment.
The surrounding code treats any non-empty string as configured, so API_SERVER_ENABLED=false would display as configured. Runtime parsing uses is_truthy_value (gateway/config.py:1739); use that semantic or a shared predicate.
| "Mattermost": ("MATTERMOST_BOT_TOKEN", "MATTERMOST_HOME_CHANNEL"), | ||
| "HomeAssistant": ("HOMEASSISTANT_WEBHOOK_URL", "HOMEASSISTANT_HOME_CHANNEL"), | ||
| "API Server": ("API_SERVER_ENABLED", None), | ||
| "Webhook": ("WEBHOOK_SECRET", "WEBHOOK_HOME_CHANNEL"), |
There was a problem hiding this comment.
WEBHOOK_SECRET is optional and does not enable the platform. Runtime enables Webhook only when WEBHOOK_ENABLED is truthy (gateway/config.py:1766-1779), so this can report a disabled webhook service as configured.
ba827f5 to
408bbc6
Compare
|
Reworked per the sweeper review — the five entries now mirror the gateway env ingestion semantics in
Truthy parsing uses the shared |
`hermes status` listed neither Matrix, Mattermost, nor Home Assistant, so a
user debugging a silent platform got no signal at all for three the gateway
supports.
Env var names are taken from the gateway's own ingestion rather than
guessed — MATRIX_ACCESS_TOKEN and MATTERMOST_TOKEN are the entries in
gateway/config.py's PLATFORM_TOKEN_ENV_NAMES, HASS_TOKEN is what the Home
Assistant block reads, and Matrix additionally accepts MATRIX_PASSWORD in
place of the access token, matching the real `matrix_token or
getenv("MATRIX_PASSWORD")` gate.
Rows were also decided by mere presence of the env var. The gateway parses
flag-style vars through is_truthy_value(), so `WHATSAPP_ENABLED=false` is
disabled while a presence check reported it configured — the command stated
the opposite of the truth. That row now parses the value, reusing
utils.is_truthy_value rather than re-deriving the rule.
Rebuilt on current main rather than rebased — the branch was ~4200 commits
behind, and the earlier version used invented names (MATRIX_HOMESERVER_URL
and friends) that could never match. The scripts/release.py addition to the
frozen LEGACY_AUTHOR_MAP is dropped; contributors/emails/mehmet.kar@std.yildiz.edu.tr
already exists on main.
A test pins the two token names against PLATFORM_TOKEN_ENV_NAMES, so a
future move of the canonical map fails here instead of silently making the
rows wrong again.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
408bbc6 to
3ff3ec3
Compare
|
Rebuilt on current You were right about every env var name, and the fix is to stop inventing them. The names now come from the gateway's own ingestion:
A test pins those two against On truthy parsing — this turned out to be a live bug on main, not just something my new rows needed. The loop decides every row with I did not touch API Server / Webhook. Their real gate isn't a flag at all — Tests — Verified against main's Regression check: Attribution hunk dropped — |
|
Closing this myself to clear stale work, not because anything here was reviewed and found wanting. Measuring this repo's merge behaviour: across four separate weekly samples, 157 externally-authored PRs were merged and not one took longer than 24 hours — median ~20 minutes. A PR that has been open for a month is not queued behind anything; the decision window closed long ago, and leaving it open just adds noise to a list maintainers scan. The branch and its commits are untouched, so if any of this is still wanted, say so and I will rebase it onto current main and reopen rather than have you dig it out of a stale diff. |
Adds Matrix, Mattermost, HomeAssistant, API Server, and Webhook to the platform status list so
┌─────────────────────────────────────────────────────────┐
│ ⚕ Hermes Agent Status │
└─────────────────────────────────────────────────────────┘
◆ Environment
Project: /Users/mehmetkar/cryptoDev/HermesAgent
Python: 3.11.4
.env file: ✓ exists
◆ API Keys
OpenRouter ✗ (not set)
Anthropic ✗ (not set)
OpenAI ✗ (not set)
Firecrawl ✗ (not set)
Browserbase ✗ (not set)
FAL ✗ (not set)
Tinker ✗ (not set)
WandB ✗ (not set)
ElevenLabs ✗ (not set)
GitHub ✗ (not set)
◆ Auth Providers
Nous Portal ✗ not logged in (run: hermes model)
OpenAI Codex ✗ not logged in (run: hermes model)
◆ Terminal Backend
Backend: local
Sudo: ✗ disabled
◆ Messaging Platforms
Telegram ✓ configured
Discord ✗ not configured
WhatsApp ✗ not configured
◆ Gateway Service
Status: ✗ not loaded
Manager: launchd
◆ Scheduled Jobs
Jobs: 0
◆ Sessions
Active: 1 session(s)
────────────────────────────────────────────────────────────
Run 'hermes doctor' for detailed diagnostics
Run 'hermes setup' to configure shows their configuration state alongside the other 15 platforms. Previously, these 5 platforms were invisible in status output even when fully configured.