Files
WesandClaude Opus 4.6 c0af36ec7e feat: replace polling with WS subscriptions + wire workflow approvals (WF-08)
Replace REST polling with WebSocket subscriptions across the desktop app
for real-time reactivity. Wire the workflow approval infrastructure so
runs suspend at approval gates instead of failing.

Desktop subscriptions:
- Forum posts/threads: subscribeLive for kinds 45001/45003 (was 15s/10s poll)
- Workflows: subscribeLive for kind 46010 (was 1s/10s poll)
- Pulse timeline: subscribeLive for contact note events (was 30s poll)
- Channels list: reduced backstop to 5min (live updates already wired)
- Agents/personas/teams: removed polling, CRUD mutations invalidate cache
- Home feed: kept at 30s poll (relay scoping prevents global subscriptions)

Shared useReactiveSubscription hook extracts common subscribe/reconnect/
cleanup lifecycle across forum, workflow, and pulse hooks.

WF-08 workflow approvals:
- executor.rs: create_approval() called with token, expiry, approver spec
- lib.rs: finalize_run sets WaitingApproval instead of Failed stub
- Trace entry pushed for suspended steps (UI can render approval card)
- Approver spec validated at creation (rejects unresolvable role specs)
- e2e test: full round-trip trigger → waiting_approval → grant → completed

Docs: added "Subscriptions, Not Polling" principle to AGENTS.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-30 09:19:16 -07:00
..