Repository navigation
feat(host,desktop): push a followed transcript's pages to the panels that draw it - #3909
Closed
charleslpan wants to merge 4 commits into
Closed
charleslpan wants to merge 4 commits into
charleslpan wants to merge 4 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
luke-agent
Bot
force-pushed
the
luke/neon-realtime-planning-workers
branch
from
October 20, 2026 02:24
aa9711a to
0c876fd
Compare
luke-agent
Bot
force-pushed
the
luke/transcript-push-host
branch
from
October 20, 2026 02:24
18d5a95 to
52031b8
Compare
luke-agent
Bot
force-pushed
the
luke/neon-realtime-planning-workers
branch
from
October 20, 2026 03:01
0c876fd to
2e69e17
Compare
luke-agent
Bot
force-pushed
the
luke/transcript-push-host
branch
from
October 20, 2026 03:01
8c80a4e to
6558135
Compare
…that draw it A panel can follow an agent's, a worker's, or a task's planning worker's transcript (`codingAgents.transcriptFollow`/`Unfollow`). The host follows it on the transcript's existing Neon Realtime subscription and tells each page as a `transcript.changed` event: the first page from the start, the next one right away after a page that had messages, then again only when the statements move or the clock reaches the edge the service names. Main sends each page on `app:transcript` to the panels that follow that transcript, and to no other window. The windows still use the held read; moving them over is the next change. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
… no transcript Main's in-process bridge and the web host's platform rows name every channel and platform kind, so the follow acts this branch adds are answered there as doing nothing: a tab reads each page once rather than following it. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
… rows a window does The transcript follow acts' rows now live in `@luke/host/act-router` and are generic over the panel, as the inbox follow rows are. The desktop spreads them over its `WebContents`, and web-host spreads them over its tab, delivering each page through the in-process bridge's `onTranscript`. A web tab therefore hears its followed transcripts pushed, just as a window does. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
luke-agent
Bot
force-pushed
the
luke/transcript-push-host
branch
from
October 20, 2026 03:03
6558135 to
05cd71f
Compare
Contributor
|
Superseded by #4175, rebuilt on main. |
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
First of three small PRs that remove Luke's last transcript and voice loops, stacked on #3311. The goal is realtime with no fallbacks. This one adds the host side: a transcript is pushed to the panels that follow it. The window still uses the held read; PR 2 moves it over.
What changed
coding-agent-view.ts):codingAgentTranscriptKeySchemanames the transcript, either an agent's (kind: "agent",agentId, optionalcallIdfor one of its workers) or a task's planning worker's (kind: "taskWorker",taskId,callId).codingAgentTranscriptChangedSchemais{ transcript, page }, wherepageis the existingCodingAgentMessagesAnswerView. Both are recorded inhosted-wire-schemas.test.ts, with goldens generated underLUKE_UPDATE_FIXTURES=1. The goldens are two new files and change nothing else.codingAgents.transcriptFollow/transcriptUnfollow(owned by the coding-agents composer),tasks.workerTranscriptFollow/workerTranscriptUnfollow(owned by the tasks composer), and atranscript.changedevent.transcript-follow.ts):followTranscriptreads on the transcript's existing Realtime subscription (transcriptFollows) and tells every page as it reads it. The first page is read from0:0. After a page with messages, the next is read right away. Otherwise the follow waits until the statements move, the subscription stops or opens again, or the service'swakeInclock edge passes.RESEAL, as before. A page read the service didn't answer is told and read again afterRESEAL. Not found is told once and ends the follow.FiberMapof follows. Following again starts over, and sign-out clears them.transcriptFollow/transcriptUnfollowpick the method bykind;onTranscriptChangedreads the event.packages/host/src/act-router/transcript-follow-acts.ts): these follow the inbox follow rows from feat(host): a window follows a plan's or an agent's inbox as a stream of pushed changes #3264/feat(panel,host): the windows' inbox reads become pushed follows, and the held inbox reads are retired #3306, and are generic over the panel. The desktop spreads them over itsWebContents. Web-host spreads them over its tab and delivers through the in-process bridge'sonTranscript, so a web tab follows transcripts the same way a window does.codingAgents.transcriptFollow/Unfollowacts. A panel can hold several follows of one transcript, and they are counted.app:transcriptbridge channel.Tests
compose-coding-agents.test.ts:wakeInedge, and when the statements move. Unfollowing stops it.compose-tasks.test.ts: a planning worker's transcript is followed the same way.in-process-bridge.test.ts: a page follows a transcript through the shell's follow rows and hears each page the host tells.transcript-follow-acts.test.ts: pages are routed per panel, follows are counted, a page that goes away releases its follows, and only a panel can follow.Checks run locally
pnpm check:affectedgets OOM-killed in the sandbox, so I ran its pieces one at a time:repository-checks.sh,biome check .,oxlint,knipdiscarded-effect(with a larger heap)tscfor features, gateway, host, panel, and desktopWhat to check by hand
Nothing visible changes in this PR: no window sends the new acts yet. PR 2 is the visible one.
Made with Luke