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 fix(image-gen): stop reporting the Codex tool_choice 400 as an account limit 2026-07-25 16:41:57 -07:00
memory fix(memory): cover the remaining setup-time .env reads with utf-8-sig 2026-07-24 17:10:39 -07:00
model_providers feat(kimi): discover K3 on coding endpoint 2026-07-16 13:33:02 -07:00
platforms/photon test(photon): cover hidden Windows sidecar spawns 2026-07-16 01:03:43 -07:00
transcription
tts
video_gen fix(video-gen): omit duration for range-based FAL families when unspecified 2026-07-16 04:24:10 -07:00
web
__init__.py
test_achievements_plugin.py
test_chronos_cron.py
test_chronos_verify.py fix(cron/chronos): cache PyJWKClient across fires to stop JWKS fetch storm (#64641) 2026-07-15 09:27:35 +10:00
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): assert ladder-based dependency install instead of bespoke pip argv 2026-07-07 04:09:35 -07:00
test_google_meet_realtime.py
test_hindsight_health_grace_timeout.py
test_hindsight_root_guard.py
test_kanban_attachments.py feat(kanban): attachment toolset + CLI to match the dashboard surface 2026-07-16 07:33:14 -07:00
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 feat(kanban): per-task model dropdown — set/override worker model+provider from the board (#69876) 2026-07-22 22:23:24 -07:00
test_kanban_worker_runs.py
test_langfuse_plugin.py
test_nemo_relay_plugin.py fix(nemo-relay): align dynamic plugin configuration 2026-07-13 17:01:08 -06:00
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