hermes-agent/tests/plugins
teknium1 6179da5496 fix(dashboard): one gateway liveness ladder for status + channels
The sidebar strip and the Channels page could contradict each other on
the same page load — "Gateway running" next to "The gateway is not
running." /api/status and /api/messaging/platforms each open-coded their
own liveness ladder: status probed GATEWAY_HEALTH_URL and scoped its
PID/state reads to the requested profile, messaging did neither and used
the uncached raw PID probe.

Three deployments hit the split: a cross-container gateway (no local PID,
only the health probe can see it), a profile-scoped dashboard (messaging
borrowed a DIFFERENT profile's runtime state, reporting a false
"connected" that hides a real outage — #71211), and a launch-service
managed gateway with no PID file.

Adds resolve_gateway_liveness() in gateway/status.py as the single ladder
(cached PID -> HTTP health probe -> runtime-status PID with
expected_home) and routes both endpoints, /api/messaging/platforms/{id}/test,
and the kanban dispatcher-presence probe through it. Probe callables are
injectable so the existing monkeypatch seams keep working, and
GatewayLiveness.probe_error distinguishes "down" from "couldn't tell" so
the kanban warning keeps failing OPEN instead of crying wolf.

Closes #71211.
2026-07-26 08:08:38 -07:00
..
browser
…
dashboard_auth
…
image_gen
…
memory
…
model_providers feat(kimi): discover K3 on coding endpoint 2026-07-16 13:33:02 -07:00
platforms/photon
…
transcription
…
tts
…
video_gen
…
web
…
__init__.py
…
test_achievements_plugin.py
…
test_chronos_cron.py
…
test_chronos_verify.py
…
test_discord_runtime_failure.py
…
test_disk_cleanup_plugin.py
…
test_google_meet_audio.py
…
test_google_meet_node.py
…
test_google_meet_plugin.py
…
test_google_meet_realtime.py
…
test_hindsight_health_grace_timeout.py
…
test_hindsight_root_guard.py
…
test_kanban_attachments.py
…
test_kanban_dashboard_plugin.py fix(dashboard): one gateway liveness ladder for status + channels 2026-07-26 08:08:38 -07:00
test_kanban_model_override.py
…
test_kanban_worker_runs.py
…
test_langfuse_plugin.py
…
test_nemo_relay_plugin.py
…
test_plugin_dashboard_auth_contract.py
…
test_raft_check_fn_silent.py
…
test_retaindb_plugin.py
…
test_security_guidance_plugin.py
…
test_teams_pipeline_plugin.py
…