githubnext/chopinPublic

Let's compose rich plans together

Show each Planner workflow run as a card in Chat, and pause without a prompt

Replace the running/paused count with a card per run, built from Atomic's
workflow lifecycle hooks: the run's name and status (running, waiting on
Decisions, paused, or ended), elapsed time, each stage it reached with
its status and duration, and a link to the Decisions it waits on. Chat
records a line when a run ends. Stop now passes --yes to the pause
command: without it, Atomic asked the host to confirm, which Chopin
routes to Decisions, so the pause waited on a question instead of
pausing. A design-audit specimen covers the running, waiting, paused,
and finished states.

Assistant-model: Claude Opus 5.5
Assistant-workflow: inline
Assistant-verification: bun test passed: 1753 pass, 2 PostgreSQL skips, 0 fail, including run-card folding, paused/waiting/finished status, and the run-ended transcript line
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: Stop Planner on a run waiting in Decisions left "1 workflow running" because the pause waited on its own confirmation
User-preference: Show the workflow's current stages in Chopin, and have pause or quit change what Chat shows immediately
Co-authored-by: Alex Lavaee <lavaman131@github.com>
ALAlex Lavaee authored
f157ceePatch
Parent65069b5
12 files changed+564-51
StackedSplit
apps/server/src/chat/invoke.test.ts+46 −12
apps/server/src/chat/service.ts+26 −4
apps/server/src/harness/atomic/full.test.ts+93 −0
apps/server/src/harness/atomic/full.ts+125 −7
apps/server/src/harness/session.ts+1 −1
apps/web/src/chat/chat.tsx+25 −23
apps/web/src/chat/run-card.tsx+139 −0
apps/web/src/design-audit/inventory.ts+6 −0
apps/web/src/design-audit/surfaces.tsx+64 −0
apps/web/src/room-workspace.tsx+1 −0
docs/hosted-agent.md+5 −2
packages/protocol/chat.d.ts+33 −2