githubnext/chopinPublic

Let's compose rich plans together

Show ctx.tool steps with a wrench and report a pause Atomic refused

A workflow built from ctx.tool steps showed no steps in its run row,
because only stage lifecycle events were folded. Tool steps now appear
in order beside stages, marked with a new Nucleo-style wrench icon and
"tool step" for screen readers; cached counts as done and cancelled as
skipped.

Per-run pause and resume ignored Atomic's outcome, so a pause Atomic
could not apply, such as during a running ctx.tool call, was reported
as done. A noop or cancelled outcome is now a failure with Atomic's
message. Runs of the same workflow are told apart by a short run id in
their rows and control labels.

Assistant-model: Claude Opus 5.5
Assistant-workflow: inline
Assistant-verification: bun test passed: 1767 pass, 2 PostgreSQL skips, 0 fail, including tool steps, the wrench and screen-reader label, and duplicate-name labels
Assistant-verification: bun run types passed: all workspaces
Assistant-verification: bun run ci passed: dprint, oxlint, tokens, type scale, Impeccable (no new findings)
Assistant-verification: agent-browser E2E failed before this change: two concurrent ctx.tool-only runs showed no steps, and pausing one reported "paused" while it kept running
User-preference: Tool stages show a tool icon
Co-authored-by: Alex Lavaee <lavaman131@github.com>
ALAlex Lavaee authored
09eacadPatch
Parenta4c1885
11 files changed+157-28
StackedSplit
apps/server/src/harness/atomic/full.test.ts+31 โˆ’0
apps/server/src/harness/atomic/full.ts+42 โˆ’15
apps/server/src/harness/session.ts+7 โˆ’6
apps/server/src/plan/service.ts+1 โˆ’0
apps/web/src/chat/run-card.test.tsx+30 โˆ’0
apps/web/src/chat/run-card.tsx+25 โˆ’6
apps/web/src/design-audit/icons.tsx+2 โˆ’0
apps/web/src/design-audit/surfaces.tsx+8 โˆ’1
packages/icons/src/index.ts+1 โˆ’0
packages/icons/src/line.tsx+8 โˆ’0
packages/protocol/chat.d.ts+2 โˆ’0