githubnext/chopinPublic

Let's compose rich plans together

Pause and resume Planner workflows through the workflow tool, and pulse live runs

Stop Planner reported that it paused the workflows, but they kept
running: the /workflow slash command reports its outcome only through
ui.notify, which a headless session drops, so a refused or no-op pause
looked like success. Run pause and resume through the session's own
workflow tool with a real tool context instead, so the outcome returns
as a result and a failure reaches the chat transcript.

The run card's spinner never animated because chat-tool-loader has no
animation in the web app. Live runs and running stages now show a
pulsing dot that stays still under reduced motion.

Assistant-model: Claude Opus 5.5
Assistant-workflow: inline
Assistant-verification: bun test passed: 1754 pass, 2 PostgreSQL skips, 0 fail, including run control through the workflow tool and its failure path
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 posted "paused its workflows" while the run card stayed running and no pause was recorded
User-preference: Live workflow runs in Chopin show a pulsing dot rather than a spinner
Co-authored-by: Alex Lavaee <lavaman131@github.com>
ALAlex Lavaee authored
213f112Patch
Parent44a5975
7 files changed+157-18
StackedSplit
apps/server/src/harness/atomic/adapter.ts+2 โˆ’4
apps/server/src/harness/atomic/full.test.ts+48 โˆ’1
apps/server/src/harness/atomic/full.ts+48 โˆ’2
apps/server/src/harness/session.ts+13 โˆ’8
apps/web/src/chat/run-card.css+37 โˆ’0
apps/web/src/chat/run-card.tsx+8 โˆ’3
apps/web/src/main.tsx+1 โˆ’0