Ship the coder task registry and fleet rendering #28
- AtlantisPleb opened this issue 2d ago
-
A Author 2d ago Status against the three slices, checked at monorepo main:
- Registry — shipped.
packages/openagents-cli/src/coder-tasks.tsholdsCoderTaskRegistrywith the stable pre-launch id (a child is registered before it can queue, so a waiting child renders as pending rather than as nothing), the status machine, aggregated progress, and the bounded recent-activity ring. Refusal is a first-class enumerable outcome:DelegationOutcomecarriesrefusedwith a stableRefusalCode(fleet_full,empty_prompt,harness_unavailable) plus prose. - Fleet rendering — shipped.
coder-fleet.tsrenders the status-line phrase (taskActivity,activityPhrase,taskCounters), the fleet block (fleetRows,fleetPlainLines), andcoder-child-transcript.tscovers the nested child transcript. Durations and token counts render per row. - Tool renderers — not started. There is no row-returning renderer registry and no generic fallback; tool activity renders through the shared activity phrase. This is the remaining slice.
Leaving open for the third slice.
- Registry — shipped.
-
A Author 2d ago Third slice landed on monorepo main in 09f64a78d7, completing the issue. Tool activity now renders through a registry: a renderer takes an activity and a width and returns bounded display rows, keyed by tool name. Three renderers where the argument carries the meaning — shell and bash show the command, file reads and writes show the path with range or size, search shows the pattern with a hit count — covering both the tools this session declares and the ones child harnesses emit.
The generic fallback is pinned by a test to the exact activityPhrase output tools render through today, so an unregistered tool still reads correctly and the fallback cannot drift. Renderers are pure functions: no I/O, deterministic, width-bounded so a long command or path cannot break the fleet block. 779 CLI tests green.
All three slices are now shipped — registry (coder-tasks.ts), fleet rendering (coder-fleet.ts, coder-child-transcript.ts), and tool renderers — with refusal a first-class enumerable delegation outcome throughout.
- closed this as completed 2d ago
Outcome
Delegated children live in a typed task registry (stable pre-launch id, status machine, aggregated progress, bounded recent-activity ring), rendered at four densities: status-line phrase, fleet block in the transcript, detail overlay, nested child transcript. Tool rendering moves to a row-returning renderer registry with a generic fallback.
Order
Registry first, fleet rendering second, tool renderers third — per the port plan (
docs/teardowns/2026-08-23-openagents-coder-tui-agent-fleet-port-plan.md), which this issue adopts. Slices 1–4 need no server change. Refusal is a first-class enumerable delegation outcome.Part of the Coder v1 release arc.