From 121405772f8fc42ef5a0368f9c3011d3f808777a Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Mon, 29 Jun 2026 20:37:24 +0200 Subject: [PATCH] hub: accept controller agent_channel_* events (channel-health relay) v0.20.0 The controller v0.90.0 channel-health checker pushes agent_channel_* events to /api/v1/event; the allowedEventTypes allowlist rejected them (HTTP 400). Added the 8 types (operator-only). Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01EPZ4GJ8L5Jqf8UiPwbn1kt --- hub/CHANGELOG.md | 9 +++++++++ hub/internal/api/handler.go | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/hub/CHANGELOG.md b/hub/CHANGELOG.md index 226cdfc..e785251 100644 --- a/hub/CHANGELOG.md +++ b/hub/CHANGELOG.md @@ -1,5 +1,14 @@ # Felhom Hub — Changelog +## v0.20.0 — Accept controller `agent_channel_*` events (channel-health relay) (2026-06-29) + +Companion to felhom-controller v0.90.0's controller→agent channel health-check. The controller pushes +classified `agent_channel_*` events to `/api/v1/event`, but the handler's `allowedEventTypes` +allowlist rejected them (HTTP 400). Added the 8 types (`pin_mismatch`, `unauthorized`, `unreachable`, +`timeout`, `misconfigured`, `construction_error`, `unknown`, `recovered`) so the operator relay works. +These are **operator-only** (not customer notification toggles, same as the host_* events); the +existing dispatcher routes them generically (no template change). Version `0.19.0 → 0.20.0`. + ## v0.19.0 — Agent capability-degraded operator alert (HostCapabilityChecker) (2026-06-29) Companion to felhom-agent v0.44.0's privileged-capability self-probe: the agent now rides a diff --git a/hub/internal/api/handler.go b/hub/internal/api/handler.go index 0ba3342..99a8a70 100644 --- a/hub/internal/api/handler.go +++ b/hub/internal/api/handler.go @@ -1078,6 +1078,15 @@ var allowedEventTypes = map[string]bool{ "app_removed": true, "disaster_recovery_started": true, "disaster_recovery_completed": true, + // Controller→agent channel health (controller v0.90.0) — operator-only (not customer toggles) + "agent_channel_pin_mismatch": true, + "agent_channel_unauthorized": true, + "agent_channel_unreachable": true, + "agent_channel_timeout": true, + "agent_channel_misconfigured": true, + "agent_channel_construction_error": true, + "agent_channel_unknown": true, + "agent_channel_recovered": true, // Hub-generated events "node_stale": true, "node_down": true,