feat(host): a window follows a plan's or an agent's inbox as a stream of pushed changes
Merged
CH
5d ago+1715+1715+0123456789012345678901234567890123456789-4-4-0123456789
A window follows a plan's or an agent's inbox as a stream of pushed changes, on the act port. This is the same shape as codingAgents.transcript (#4175). It is stacked on #3232.
What changes
- Act port:
codingAgents.inboxFollow, aneventIteratorprocedure. The host follows the inbox when the first stream of it opens and lets it go when the last one closes. Each change is the inbox whole, or why there is none. - Web tabs: they serve the same procedure with no web-specific code.
- Gateway:
codingAgents.inboxFollow/codingAgents.inboxUnfollowfollow the inbox on the sameliveRowsread its reads share, and tell each change asinbox.changed. A follow behind a closed gate is told unanswered. One the account doesn't reach is told not found. - Not here: nothing in the renderer uses this yet. The next PR moves the window onto it.
Tests
agent-inbox-procedures.test.ts: streams are counted per inbox, changes for other inboxes aren't heard, the host lets the inbox go with the last stream, and the voice window is refused.compose-coding-agents.test.ts:- each change is told, and a delivery that changed nothing is not
- unfollowing stops the telling
- not found, unanswered, a closed gate, and sign-out