Skip to content
This repository was archived by the owner on Nov 11, 2026. It is now read-only.

Workers open inline in the Conversation - #614

Merged
haowjy merged 2 commits into
mainfrom
jimyao/worker-inline
Nov 5, 2026
Merged

haowjy merged 2 commits into
mainfrom
jimyao/worker-inline

Conversation

@haowjy

@haowjy haowjy commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

Changelog

  • Added: a "Started worker" row in the Conversation opens that worker's whole thread in place, indented. It is collapsed by default, and the Agents tab is unchanged.

Why

The Conversation is main's whole thread (#597). To see what a worker did, though, the researcher had to leave it for the Agents tab. Jimmy: "workers CAN expand inline, leave the agents tab".

Design decisions

  1. One level, collapsed. A worker's thread opens under its "Started worker" row, built only while it's open. Inside it, the worker's own workers link to the Agents tab but don't expand. Ruled out: interleaving every worker's events into main's thread, which buries main's words.
  2. The Agents tab stays. Clicking a worker's name still opens it there.

Walkthrough

A worker inline

  1. Setup: this branch, pnpm dev, and run 732a2eea imported (pnpm --filter @voluma/api import:run --from r2:dev/runs/732a2eea-7382-4cc2-9820-a40778331148).
  2. In the sample's Conversation, open the ">" on "Started worker segmentation".
  3. Expect: on main, the row shows the call's raw input. On this branch, segmentation's thread appears in place, indented.

A worker expanded inline

What changed

  • TranscriptView gets an optional worker renderer for the "Started worker" row, and AgentLinks gets an optional ids map from worker name to thread ids.
  • AgentThread passes the renderer only when ids is present, through a new WorkerRows. It builds the rows the way the Agents tab does, and nested links carry no ids, which keeps it to one level.
  • outputs-review.tsx fills ids from agentEntries, for the Conversation only.

Risk and where to look

  • Breaks or changes: display only. No contracts, runner or stored data. To undo, revert the commit.
  • Where to look: WorkerRows in agent-thread.tsx, and the guard that stops nesting.

Knowledge layers, docs and deletions

  • Docs: one line each in packages/run-view/.context/CONTEXT.md and apps/web/src/features/input/.context/CONTEXT.md.
  • Deleted: None. The raw call input still shows wherever there is no worker renderer.

Contract changes

None.

Verification

  • Ran: pnpm check (passes).
  • Saw, on run 732a2eea: three "Started worker" rows, all collapsed; segmentation opened in place; clicking its name opened it in Agents; no page errors.
  • Not seen: the one-level rule on real data, since this run's workers start no workers of their own.

Left out

  • The worker's name link covers the middle of its row, so a click there opens Agents instead of expanding the row: packages/run-view/.context/TODO.md

A "Started worker" row in main's Conversation now opens into that
worker's whole thread, indented, instead of the start_worker call body.
Collapsed by default; the rows are built only while open. The worker's
name still opens it in the Agents tab, which is unchanged. A worker's own
workers don't expand inline (one level).

The page's AgentLinks carry each worker's thread ids (ids); AgentThread
renders WorkerRows for a name when they are present. Display only.
@haowjy
haowjy merged commit 6cdf018 into main Nov 5, 2026
2 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant