bot-hermes
05d8e953ca
feat: agent-to-agent integrations — activity stream, steer channel, plan gate
Three fork-side integrations that turn OpenChamber from a fire-and-forget
coder into a visible, steerable, plan-gated agent:
1. Activity stream (GET /api/openchamber/agent-activity SSE)
- agent-activity/runtime.js: subscribes to global hub, normalizes
message.updated parts into structured activity events (tool-call,
file-edit, text-part), rate-limited coalescing for tool calls
- Broadcasts openchamber:agent-activity and session-completed events
- SSE endpoint with heartbeat (25s), same shape as /api/openchamber/events
2. Steer channel (POST /api/openchamber/session/:id/steer)
- session-steer/runtime.js: interrupt mode (interrupt → inject
system-level directive → resume) and queue mode (deliver on next idle)
- Follows message-queue precedent for interrupt-safe dispatch
- Broadcasts openchamber:steer-delivered on queued delivery
3. Plan-first gate (plan-gate/runtime.js + approve/reject/status routes)
- State machine per session: pending → approved | rejected | timed_out
- Injects plan-gate reminder via openchamber-sessions create prompt
- Agent emits ## Plan, runtime detects and emits openchamber:plan-ready
- Approve sends 'Proceed' prompt, reject sends revision prompt
- Configurable timeout (default 5 min), auto-approve on timeout
4. P1 shared plumbing
- cardID accepted in session create payload, stored in session metadata
- All new events carry cardID when known
Files added:
- packages/web/server/lib/agent-activity/runtime.js + runtime.test.js
- packages/web/server/lib/session-steer/runtime.js + runtime.test.js
- packages/web/server/lib/plan-gate/runtime.js + runtime.test.js
Files modified:
- packages/web/server/lib/openchamber-sessions/routes.js (cardID, planGate)
- packages/web/server/lib/opencode/feature-routes-runtime.js (route wiring)
- packages/web/server/index.js (runtime creation, SSE_PATH_PREFIXES)
- packages/web/server/lib/ui-auth/ui-auth.js (auth allowlist)
- packages/web/server/lib/realtime-proxy.js (SSE allowlist)
28 new tests passing. All pre-existing tests unaffected.
2026-09-07 22:34:56 +00:00
..
2026-07-18 00:11:05 +03:00
2026-08-04 14:40:44 -07:00
2026-08-07 00:25:57 +03:00
2026-08-15 01:59:26 +03:00
2026-08-15 01:59:26 +03:00
2026-08-03 06:40:01 +00:00
2026-08-03 12:03:37 +00:00
2026-08-03 06:56:38 +00:00
2026-09-05 02:19:59 +03:00
2026-09-04 14:08:08 +03:00
2026-08-13 22:44:13 +03:00
2026-09-06 10:55:54 +00:00
2026-08-05 11:24:14 +03:00
2026-08-05 11:24:14 +03:00
2026-08-28 23:23:16 +03:00
2026-08-28 23:23:16 +03:00
2026-09-07 22:34:56 +00:00
2026-09-05 20:16:14 +03:00
2026-08-28 01:27:32 +03:00
2026-08-28 01:27:32 +03:00
2026-09-04 22:56:27 +03:00
2026-08-28 02:08:09 +03:00
2026-08-28 02:08:09 +03:00
2026-08-28 02:08:09 +03:00
2026-08-10 20:23:45 +03:00
2026-08-07 00:10:29 +03:00
2026-08-07 00:10:29 +03:00
2026-08-03 06:40:01 +00:00
2026-08-03 06:40:01 +00:00
2026-09-05 02:14:26 +03:00
2026-08-15 06:30:36 +00:00
2026-08-29 00:53:06 +03:00
2026-08-29 00:53:06 +03:00
2026-08-03 13:57:05 +00:00
2026-08-03 13:18:27 +00:00
2026-08-03 13:18:27 +00:00
2026-09-04 13:11:55 +08:00
2026-09-05 14:44:55 +03:00
2026-08-17 23:44:38 +03:00
2026-08-17 23:44:38 +03:00
2026-08-17 23:44:38 +03:00
2026-07-12 19:54:35 -07:00
2026-08-19 11:53:30 +03:00
2026-08-10 16:10:03 +03:00
2026-08-28 18:48:27 +03:00
2026-09-05 02:19:59 +03:00
2026-09-04 14:34:34 +08:00
2026-08-14 12:45:35 +03:00
2026-07-29 17:26:11 +03:00
2026-08-19 11:53:30 +03:00
2026-08-19 11:53:30 +03:00
2026-09-06 10:55:54 +00:00
2026-09-06 10:55:54 +00:00
2026-08-22 20:31:31 +03:00
2026-08-22 20:31:31 +03:00
2026-09-04 12:51:49 +03:00
2026-09-04 12:51:49 +03:00
2026-09-05 14:45:20 +03:00
2026-08-17 16:44:17 +03:00
2026-09-04 14:08:08 +03:00
2026-09-05 02:14:26 +03:00
2026-08-20 01:40:10 +03:00
2026-08-03 09:25:25 +00:00
2026-08-03 09:55:56 +00:00
2026-09-05 02:14:26 +03:00
2026-07-31 12:51:15 +03:00
2026-07-31 12:51:15 +03:00
2026-07-31 12:51:15 +03:00
2026-07-24 21:54:28 +03:00
2026-08-30 02:18:40 +03:00
2026-07-12 00:46:41 +03:00
2026-07-30 20:07:08 +03:00
2026-07-29 19:59:41 +03:00