@bastani/atomic 0.9.19-alpha.9 → 0.9.20-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/dist/builtin/intercom/CHANGELOG.md +30 -0
  3. package/dist/builtin/intercom/index.bundle.mjs +15 -1
  4. package/dist/builtin/intercom/package.json +1 -1
  5. package/dist/builtin/mcp/CHANGELOG.md +8 -0
  6. package/dist/builtin/mcp/package.json +1 -1
  7. package/dist/builtin/subagents/CHANGELOG.md +30 -0
  8. package/dist/builtin/subagents/package.json +1 -1
  9. package/dist/builtin/web-access/CHANGELOG.md +14 -0
  10. package/dist/builtin/web-access/package.json +1 -1
  11. package/dist/builtin/workflows/CHANGELOG.md +67 -0
  12. package/dist/builtin/workflows/builtin/{chunk-nkrafh9s.js → chunk-ewkkkbak.js} +1 -1
  13. package/dist/builtin/workflows/builtin/{chunk-1jth021m.js → chunk-zqtm1d2c.js} +1 -1
  14. package/dist/builtin/workflows/builtin/goal.js +2 -2
  15. package/dist/builtin/workflows/builtin/index.js +3 -3
  16. package/dist/builtin/workflows/builtin/ralph.js +2 -2
  17. package/dist/builtin/workflows/package.json +1 -1
  18. package/dist/builtin/workflows/src/extension/index.bundle.mjs +546 -133
  19. package/dist/builtin/workflows/src/index.js +326 -72
  20. package/dist/core/extensions/api-types.d.ts +2 -0
  21. package/dist/core/extensions/api-types.d.ts.map +1 -1
  22. package/dist/core/extensions/api-types.js.map +1 -1
  23. package/dist/core/extensions/index.d.ts +1 -1
  24. package/dist/core/extensions/index.d.ts.map +1 -1
  25. package/dist/core/extensions/index.js.map +1 -1
  26. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  27. package/dist/core/extensions/loader-api.js.map +1 -1
  28. package/dist/core/extensions/loader-host-modules.d.ts.map +1 -1
  29. package/dist/core/extensions/loader-host-modules.js +3 -1
  30. package/dist/core/extensions/loader-host-modules.js.map +1 -1
  31. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  32. package/dist/core/extensions/loader-virtual-modules.js +2 -0
  33. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  34. package/dist/core/extensions/reactive-widget.d.ts +6 -0
  35. package/dist/core/extensions/reactive-widget.d.ts.map +1 -1
  36. package/dist/core/extensions/reactive-widget.js +7 -1
  37. package/dist/core/extensions/reactive-widget.js.map +1 -1
  38. package/dist/core/extensions/runner-shortcuts.d.ts.map +1 -1
  39. package/dist/core/extensions/runner-shortcuts.js +32 -3
  40. package/dist/core/extensions/runner-shortcuts.js.map +1 -1
  41. package/dist/core/extensions/runtime-types.d.ts +4 -0
  42. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  43. package/dist/core/extensions/runtime-types.js.map +1 -1
  44. package/dist/core/extensions/ui-types.d.ts +20 -0
  45. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  46. package/dist/core/extensions/ui-types.js.map +1 -1
  47. package/dist/core/keybinding-identity.d.ts +4 -0
  48. package/dist/core/keybinding-identity.d.ts.map +1 -0
  49. package/dist/core/keybinding-identity.js +10 -0
  50. package/dist/core/keybinding-identity.js.map +1 -0
  51. package/dist/core/keybindings.d.ts +10 -0
  52. package/dist/core/keybindings.d.ts.map +1 -1
  53. package/dist/core/keybindings.js +2 -0
  54. package/dist/core/keybindings.js.map +1 -1
  55. package/dist/core/tools/bash.d.ts.map +1 -1
  56. package/dist/core/tools/bash.js +7 -1
  57. package/dist/core/tools/bash.js.map +1 -1
  58. package/dist/index-extensions.d.ts +1 -1
  59. package/dist/index-extensions.d.ts.map +1 -1
  60. package/dist/index-extensions.js.map +1 -1
  61. package/dist/index.d.ts +1 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +1 -0
  64. package/dist/index.js.map +1 -1
  65. package/dist/modes/interactive/components/scroll-widget.d.ts +23 -0
  66. package/dist/modes/interactive/components/scroll-widget.d.ts.map +1 -0
  67. package/dist/modes/interactive/components/scroll-widget.js +61 -0
  68. package/dist/modes/interactive/components/scroll-widget.js.map +1 -0
  69. package/dist/modes/interactive/interactive-extension-runtime.js +10 -3
  70. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  71. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  72. package/dist/modes/interactive/interactive-mode-base.js +3 -2
  73. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  74. package/dist/modes/interactive-engine/engine-custom-ui.d.ts +4 -1
  75. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  76. package/dist/modes/interactive-engine/engine-custom-ui.js +15 -7
  77. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  78. package/dist/modes/interactive-engine/engine-dialog-host.d.ts.map +1 -1
  79. package/dist/modes/interactive-engine/engine-dialog-host.js +4 -1
  80. package/dist/modes/interactive-engine/engine-dialog-host.js.map +1 -1
  81. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  82. package/dist/modes/interactive-engine/extension-ui-bridge.js +1 -1
  83. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  84. package/dist/modes/interactive-engine/protocol.d.ts +12 -1
  85. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  86. package/dist/modes/interactive-engine/protocol.js +45 -2
  87. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  88. package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
  89. package/dist/modes/interactive-engine/remote-component.js +18 -8
  90. package/dist/modes/interactive-engine/remote-component.js.map +1 -1
  91. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
  92. package/dist/modes/rpc/rpc-extension-ui.js +2 -1
  93. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
  94. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  95. package/dist/modes/rpc/rpc-mode.js +1 -0
  96. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  97. package/dist/modes/rpc/rpc-types.d.ts +4 -0
  98. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  99. package/dist/modes/rpc/rpc-types.js.map +1 -1
  100. package/docs/background-tasks.md +2 -0
  101. package/docs/extensions/api-reference.md +2 -0
  102. package/docs/extensions/authoring.md +2 -0
  103. package/docs/keybindings.md +17 -0
  104. package/docs/tui.md +34 -0
  105. package/docs/workflows/api-reference.md +2 -0
  106. package/docs/workflows/operations.md +13 -1
  107. package/npm-shrinkwrap.json +32 -32
  108. package/package.json +3 -3
  109. /package/dist/builtin/workflows/builtin/{chunk-ngkqkzej.js → chunk-m0xfsef8.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,103 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.9.20-alpha.1] - 2026-09-14
6
+
7
+ ### Fixed
8
+
9
+ - Workflow startup now reports its phase and age, and explicit cancellation releases waiting callers while retaining unfinished creation ownership. Cancelled queued reloads cannot start later; late SDK/binding results cannot attach or dispatch ([#3040](https://github.com/bastani-inc/atomic/issues/3040)).
10
+
11
+ ## [0.9.19] - 2026-09-13
12
+
13
+ Cumulative release of the `0.9.19-alpha.1` through `0.9.19-alpha.12` prereleases. Per-change details remain in the unchanged prerelease sections below.
14
+
15
+ ### Breaking Changes
16
+
17
+ - Overwriting an existing file with `write` requires this session to have observed the exact content being replaced. Missing or stale observations return typed `FILE_MUTATION_CONFLICT` errors with requester identity and recovery guidance. Creating files and overwriting files the session has read, written or edited remain supported ([#2329](https://github.com/bastani-inc/atomic/issues/2329)).
18
+ - `WriteOperations` requires `readFile`, returning `undefined` only for absence, and `writeFile` accepts optional `WriteFileOptions`. Custom/remote implementations supply reads for generated-file and observation checks; existing writers may ignore the options but lose exclusive-create semantics ([#2329](https://github.com/bastani-inc/atomic/issues/2329)).
19
+ - Workflow controls use `/workflow pause`, `/workflow quit` and `/workflow resume`; lifecycle pause events use `action: "pause"`. The workflow tool supports run, stage and durable-tool pause targets.
20
+ - Bundled subagent terminal control is now `kill`, not `interrupt`, including calls using `runId`. Killed children cannot resume; launch a fresh child for follow-up work.
21
+ - Bundled `code_search` requires `repoName` in `owner/repo` format and uses DeepWiki MCP without an Exa fallback. `fetch_content` requires a nonempty `urls` array instead of singular `url`; update existing calls. `web_search` is unchanged.
22
+ - Intercom removed model-facing `retryToken` fields and owns bounded reconnect retries. Explicit `replyTo` selectors reject invalid or stale threads rather than falling back; use `action: "pending"` to select an unresolved question.
23
+
24
+ ### Added
25
+
26
+ - Added owner-bound background shell and agent tasks with one execution per admitted attempt, observation-only yielding, retained output/transcripts, owner-scoped cancellation and independent cleanup. SDK contexts expose trusted task adapters, snapshot subscriptions and replay-safe completion delivery ([#2884](https://github.com/bastani-inc/atomic/pull/2884)).
27
+ - Added per-call Bash/PowerShell foreground-first or background observation, `{ action: "wait", id, budgetMs }` for existing tasks, and `kill({ id })` for owned background shell tasks. Observation does not extend execution timeout or owner lifetime; unsupported background requests fail before execution.
28
+ - Added shared `/tasks` inspection with a compact inline picker, fullscreen detail/transcript/input pages, paging, confirmed cancellation and stable selection. Main and attached stage chats show background counts below the composer and readable completion notifications.
29
+ - Added a searchable `/agents` catalog with source grouping and configuration details.
30
+ - Added supervised Windows ConPTY execution with Job Object containment before resume and confirmed cleanup, without an unsupervised fallback. The command SDK accepts direct-executable `shell: { program, args }` and `inheritEnv` controls.
31
+ - Added workflow activity observers and typed lifecycle, activity, stage-completion and heartbeat hooks with ordered snapshots, bounded queues and reload-safe leases. The built-in Herdr reporter combines agent/task activity, workflow execution and approval waits, supports `herdr.enabled` opt-out, and reports parent session identity ([#2891](https://github.com/bastani-inc/atomic/issues/2891)).
32
+ - Added `reason: "project_trust"` to UI prompt lifecycle events, including paired isolated-engine notifications, so integrations can observe trust decisions ([#2873](https://github.com/bastani-inc/atomic/issues/2873)).
33
+ - Editable workflow-stage chats discover source-qualified skills and expand submissions once through stage admission. Graph cards show effective model/thinking identity, including fast suffixes and live fallbacks ([#1859](https://github.com/bastani-inc/atomic/pull/1859) by [@sina85](https://github.com/sina85)).
34
+ - Added per-model compaction overrides for `reserveTokens` and `preserve_recent`, with non-negative safe-integer validation and fallback to ordinary settings/defaults across manual, automatic and post-tool compaction.
35
+ - Extension widgets can opt into height-capped fullscreen viewports with local wheel scrolling, overflow-only scrollbars and scroll-position feedback. The workflow list uses local scrolling with configurable Alt+K/J shortcuts, labeled Option on macOS, while retaining Alt+PageUp/PageDown aliases and editor-binding precedence.
36
+
37
+ ### Changed
38
+
39
+ - Built-in read, edit, write and shell tools prefer strict JSON-schema sampling where supported; other experimental hints remain opt-in.
40
+ - Task receipts and details display resolved model/reasoning, grouped counts, themed status, recent activity, bounded previews and narrow-terminal layouts. Only active background work contributes to the footer; retained results remain in `/tasks`.
41
+ - Native Windows owner-bound shell calls automatically yield after the owner's observation budget, normally ten seconds. PowerShell uses encoded transport; execution timeouts remain separate, and unsupported owned WSL bash stdin transport remains refused. Suspend opens a PowerShell subshell without freezing background tasks.
42
+ - Guidance routes user questions through structured question tools when available, favors normal shell observation budgets over repeated short polls, and keeps blocking work local while overlapping independent delegation. Requests to work "quickly" select inline execution without hidden workflows or skipped validation.
43
+ - Model-choice guidance consults eval documentation and Artificial Analysis; automation guidance uses PyAutoGUI for desktop, playwright-cli for browsers, and Herdr with supported fallbacks for terminals.
44
+ - Open Claude Design starts with Fable 5.1 at medium, followed by Copilot Fable 5.1 and Astra at medium, with Fable-first OpenRouter fallbacks. Debugger uses Astra/Fable at medium and Sol at high; Goal/Ralph reviewers use Astra/Sol at high, and orchestration/research/design fallbacks use Fable at medium and Sol at high.
45
+ - Intercom lists lead with exact session IDs and workflow paths. Sends and asks interrupt working recipients within the same task/generation, retaining ordered messages and completed side effects rather than restarting work.
46
+
47
+ ### Fixed
48
+
49
+ - Restored offline embedded PostgreSQL discovery in compiled archives and all eight target-selected archive/npm runtimes, retaining scriptless installs and existing v18 clusters. Windows ARM64 still requires Windows 11 x64 emulation.
50
+ - Embedded Postgres starts on Windows administrative accounts using restricted tokens while retaining exact-process shutdown. Early startup exit reports actual logs; Unicode environments, executable lookup, batch/explicit-command launchers and safe verbatim paths work without handle leaks or cross-process stream inheritance.
51
+ - Rejected edits no longer authorize themselves on retry by recording a new snapshot tag. Drift, deletion, unreadable targets and permission changes return typed conflicts with exact requester identity and recovery guidance. Writes exclusively claim new paths, preserve observations after cancellation that follows a completed write, and retain standalone `local://` observations ([#2329](https://github.com/bastani-inc/atomic/issues/2329)).
52
+ - Bounded noisy engine diagnostic history and routed stderr/MuPDF diagnostics through deferred, terminal-safe status output, preserving split Unicode and failure details without corrupting fullscreen or RPC JSON output ([#2964](https://github.com/bastani-inc/atomic/issues/2964)).
53
+ - Fixed npm-installed task supervisor class initialization and missing upstream AI imports. First-load and Windows-reloaded TypeScript extensions share live host classes/singletons, including the upstream-compatible import, without losing dependency edits.
54
+ - Workflow fallback releases failed-attempt Intercom ownership before replacement. Repeated nested workflow calls no longer collide during fallback ([#3020](https://github.com/bastani-inc/atomic/issues/3020)).
55
+ - Foreground subagent waits yield to parent steering and Intercom messages without cancelling children. Parallel coordination preserves active/queued siblings, same-child messages precede completion, and queued-child cancellation cleans up unused worktrees and branches.
56
+ - Task completion retries retain delivery identity without relaunching work, including restored outboxes, native shell settlement and `/tasks` cancellations. Foreground-only shells do not create duplicate background notifications or model turns.
57
+ - Fixed yielded shell waits replaying the first output page, honored owner wait policies, disclosed retained output gaps, and bounded output pages to 1 MiB under a shared disk cap ([#2972](https://github.com/bastani-inc/atomic/pull/2972), [#2905](https://github.com/bastani-inc/atomic/pull/2905)).
58
+ - Live transcripts stream updates without reopening, preserve historical paging and configured shortcuts, and reject stale task-detail results after selection changes. Long Windows transcripts reuse unchanged rendering to reduce CPU without dropping history.
59
+ - Isolated sessions use the engine's task owner and inspector, with `/tasks` autocomplete and live metrics. Task rows reattach after transcript replacement, old owners clear on session switches, and inspection failures remain retryable instead of rejecting unhandled.
60
+ - Stage pause cancels owned admitted/active tasks and waits for cleanup while preserving messages and sibling work; ordinary chat interruption leaves background tasks running. Explicit subagent kill and grouped cancellation outcomes remain consistent through parent-cancellation races.
61
+ - Corrected SDK task Results, cursors, opaque leases, wait policies and cleanup races. Subscription disposal/overflow and throwing callbacks are contained; exact strings/numbers, bounded activity replay and protected settlement IDs survive native conversion, and NaN waits no longer panic ([#2884](https://github.com/bastani-inc/atomic/pull/2884)).
62
+ - Fixed macOS cleanup failing immediately on temporary unreaped process-group zombies while retaining bounded, confirmed cleanup.
63
+ - Herdr registration survives reload and session replacement without stale runners or child shutdown clearing parent ownership. Failed identity reports retry, background tasks prevent false idle, output-cap continuations remain working, and settled workflow failures retain attention without a false active wait.
64
+ - Navigation through `/tasks`, `/agents` and workflow graphs no longer creates false Herdr approval blocks. Answered prompts and acknowledged workflow blocks clear correctly even with slow observers; genuine pending approvals remain blocked.
65
+ - Concurrent inline approvals retain the surviving prompt and input focus. Task navigation does not cancel queued questionnaires, isolated cancellation removes loading placeholders, and background counts coexist with questions and MCP context on narrow terminals.
66
+ - Filled theme backgrounds survive nested resets and truncation, including completion cards. Workflow lists retain row caps and viewed-run anchors through clipping, live changes and resize.
67
+ - Resume trust is prepared before disposing the outgoing session and retained on failed preflight. Startup and isolated trust waits reach eligible lifecycle observers without loading untrusted extensions or replaying dialogs ([#2873](https://github.com/bastani-inc/atomic/issues/2873)).
68
+ - Internal-URL expansion rejects unsafe shell syntax while safely quoting bare resolved URLs; PowerShell apostrophes remain literal. Commands without resolved URLs are unchanged.
69
+ - Intercom excludes non-agent routing/prompt/tool connections without hiding busy agents or invalidating connected aliases. Roster updates synchronize with broker acceptance; targeted replies keep exact correlation, and delivery retries preserve FIFO order without duplicate cards ([#2895](https://github.com/bastani-inc/atomic/pull/2895)).
70
+ - Capped retry backoff with `retry.maxAgentDelayMs`, defaulting to 60 seconds, while preserving provider limits. Retry countdowns use Atomic's themed indicator ([#8826](https://github.com/earendil-works/pi/issues/8826)).
71
+ - Fixed Anthropic object-union schemas and Grok acceptance of the bundled bash command/wait schema while local validation still rejects mixed inputs. Extension registration rejects missing or nonobject schema containers ([#2190](https://github.com/bastani-inc/atomic/pull/2190) by [@elefthei](https://github.com/elefthei), [#3031](https://github.com/bastani-inc/atomic/issues/3031), [#9300](https://github.com/earendil-works/pi/issues/9300)).
72
+ - Updated patched Hono/js-yaml dependencies and provider SDKs; Google's consecutive tool-call limit returns an error. Extension model registries expose authenticated custom-provider streams, and Radius login chooses an available discovered model.
73
+ - Settings writes preserve inherited `.pi` provenance, concurrent primary edits and explicit Atomic overrides instead of copying inherited values into `.atomic` ([#2299](https://github.com/bastani-inc/atomic/issues/2299)).
74
+ - Direct steering/follow-up calls run extension input handlers before admission, preserving transformed text/images and RPC attribution. Tree navigation refuses active compaction/summarization without disturbing the current branch.
75
+ - Stage skill autocomplete reuses shared attachment without repeated checkpoints, ended recoverable blocks resume rather than return snapshot-only success, and cancelled stage-chat pause avoids unhandled rejection.
76
+ - Released unused alternate-folder Git watchers and timers without disturbing other chat footers ([#2926](https://github.com/bastani-inc/atomic/pull/2926)).
77
+ - Restored the Gondolin example after legacy grep API removal, keeping search on the host and guest-only searches in the routed shell ([#2482](https://github.com/bastani-inc/atomic/pull/2482)).
78
+
79
+ ## [0.9.19-alpha.12] - 2026-09-13
80
+
81
+ ### Fixed
82
+
83
+ - Grok accepts the bundled bash tool schema for command execution and task waits, while local validation still rejects mixed inputs ([#3031](https://github.com/bastani-inc/atomic/issues/3031)).
84
+
85
+ ## [0.9.19-alpha.11] - 2026-09-13
86
+
87
+ ### Fixed
88
+
89
+ - Repeated nested `ctx.workflow()` invocations no longer collide on Intercom route ownership during model fallback.
90
+
91
+ ## [0.9.19-alpha.10] - 2026-09-13
92
+
93
+ ### Added
94
+
95
+ - Extension widgets can opt into a height-capped fullscreen viewport with widget-local wheel scrolling, an overflow-only scrollbar, and scroll-position feedback in both in-process and isolated-engine sessions. Existing widgets retain their default behavior.
96
+ - The main-chat workflow list supports local wheel scrolling with an overflow-only slim scrollbar and configurable Alt+K/J shortcuts, labeled Option on macOS. Alt+PageUp/PageDown remain aliases, configured editor bindings take precedence, and the list keeps its row cap and run anchors through clipping and resize.
97
+
98
+ ### Fixed
99
+
100
+ - Workflow model fallback cleans up the failed attempt's Intercom ownership before registering its replacement, preventing duplicate live-stage ownership warnings without weakening route protections ([#3020](https://github.com/bastani-inc/atomic/issues/3020)).
101
+
5
102
  ## [0.9.19-alpha.9] - 2026-09-12
6
103
 
7
104
  ### Breaking Changes
@@ -4,6 +4,36 @@ All notable changes to the `pi-intercom` extension will be documented in this fi
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.9.20-alpha.1] - 2026-09-14
8
+
9
+ ### Fixed
10
+
11
+ - Supervisor progress updates show their original send timestamp and are labelled historical snapshots, so delayed hypotheses cannot be mistaken for current activity after a correction or final result ([#3039](https://github.com/bastani-inc/atomic/issues/3039)).
12
+
13
+ ## [0.9.19] - 2026-09-13
14
+
15
+ Cumulative release of the `0.9.19-alpha.2` through `0.9.19-alpha.9` prereleases. Per-change details remain in the unchanged prerelease sections below.
16
+
17
+ ### Breaking Changes
18
+
19
+ - Removed the model-facing `retryToken` parameter and result field. Intercom owns bounded reconnect retries; each new tool call remains a distinct operation, including identical messages.
20
+ - Explicit `replyTo` selectors reject stale, unknown, empty or sender-mismatched threads instead of falling back. Use `pending` to select the exact unresolved question.
21
+
22
+ ### Changed
23
+
24
+ - Agent lists lead with copyable full session IDs and canonical workflow paths, followed by meaningful names, status, working directory and future queued counts. Live/terminal reply capability is separate from idle activity; closed workflow generations report post-mortem-only or unavailable routing.
25
+
26
+ ### Fixed
27
+
28
+ - `send` and `ask` interrupt a working subagent or live workflow stage's current model call or cancellable tool and process messages in the same execution. Arrival order, persistence retries, duplicate suppression and exact reply correlation survive cancellation without replaying completed side effects.
29
+ - Targeted replies complete the requested ask even when an unrelated message is active. Cancelled turns without a reply retain the pending ask's context.
30
+ - Recoverable disconnects retry up to three times within one invocation with the same delivery identity. Cancellation stops retries; unresolved outcomes warn against automatic resending, and client retry state is released on exit.
31
+ - Broker refusals reject outstanding registered-client requests with the actual reason instead of timing out or reporting a generic disconnect. Lazy initialization, relay and cleanup diagnostics use the owning interactive session's notifications rather than raw console output.
32
+ - Recipient discovery excludes workflow routing/control connections and model-less prompt/tool nodes. Malformed purposes are rejected, legacy omitted purposes remain supported, and roster updates wait for broker processing. Same-name non-agent nodes do not hide genuine duplicate agents or invalidate connected aliases ([#2895](https://github.com/bastani-inc/atomic/pull/2895)).
33
+ - Terminal noninteractive children reject asks promptly, including socket-write races. Retained connected workflow stages preserve reply correlation after leaving the active roster; closed stages without post-mortem routing return lifecycle guidance.
34
+ - Busy noninteractive refusals return correlated delivery errors without starting another parent turn. Owner-bound completion waits for same-child messages in order, retries failed delivery, and never repeats task execution.
35
+ - Parallel child-to-parent requests use correlated replies without ending siblings, preserving empty questions, omitted decision notes and ordered attachments. Sends and progress remain nonblocking; single-child claimed handoffs are unchanged.
36
+
7
37
  ## [0.9.19-alpha.9] - 2026-09-12
8
38
 
9
39
  ### Breaking Changes
@@ -5731,6 +5731,20 @@ function frameDeliveryFeedback(entry) {
5731
5731
 
5732
5732
  Sent: ${framePendingStageTimestamp(entry.message.timestamp)}
5733
5733
 
5734
+ ${entry.bodyText}`
5735
+ };
5736
+ }
5737
+ function frameHistoricalSupervisorUpdate(entry) {
5738
+ if (entry.channel !== "supervisor" || entry.message.expectsReply === true || entry.message.replyTo)
5739
+ return entry;
5740
+ return {
5741
+ ...entry,
5742
+ bodyText: `**Historical supervisor update — snapshot at send time**
5743
+
5744
+ Sent: ${framePendingStageTimestamp(entry.message.timestamp)}
5745
+
5746
+ This is not current task status; a later correction or final result supersedes this update.
5747
+
5734
5748
  ${entry.bodyText}`
5735
5749
  };
5736
5750
  }
@@ -6477,7 +6491,7 @@ function piIntercomExtension(pi, testOverrides = {}) {
6477
6491
  const bodyText = `${message.content.text}${attachmentText}`;
6478
6492
  const replyCommand = config.replyHint && message.expectsReply ? `intercom({ action: "reply", message: "..." })` : undefined;
6479
6493
  const rawEntry = { from, message, replyCommand, bodyText, ...channel ? { channel } : {} };
6480
- const framedEntry = isDeliveryFeedback(message) ? frameDeliveryFeedback(rawEntry) : rawEntry;
6494
+ const framedEntry = isDeliveryFeedback(message) ? frameDeliveryFeedback(rawEntry) : frameHistoricalSupervisorUpdate(rawEntry);
6481
6495
  const entry = receivedBeforeStageStart ? framePreStartPendingStageMessage(framedEntry) : framedEntry;
6482
6496
  if (receivedBeforeStageStart) {
6483
6497
  return sendIncomingMessage(entry, "prelude", messageGeneration, false);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/intercom",
3
- "version": "0.9.19-alpha.9",
3
+ "version": "0.9.20-alpha.1",
4
4
  "private": true,
5
5
  "description": "Atomic extension providing a private coordination channel between parent and child agent sessions. Fork of: https://github.com/nicobailon/pi-intercom",
6
6
  "contributors": [
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.9.19] - 2026-09-13
11
+
12
+ Cumulative release of the `0.9.19-alpha.2` prerelease. Per-change details remain in the unchanged prerelease section below.
13
+
14
+ ### Fixed
15
+
16
+ - MCP call headers identify the server before results arrive, including pending direct tools and gateway calls with explicit or unambiguous targets.
17
+
10
18
  ## [0.9.19-alpha.2] - 2026-09-08
11
19
 
12
20
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/mcp",
3
- "version": "0.9.19-alpha.9",
3
+ "version": "0.9.20-alpha.1",
4
4
  "private": true,
5
5
  "description": "Atomic extension that adapts MCP (Model Context Protocol) servers into the coding agent. Fork of: https://github.com/nicobailon/pi-mcp-adapter",
6
6
  "contributors": [
@@ -2,6 +2,36 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.9.19] - 2026-09-13
6
+
7
+ Cumulative release of the `0.9.19-alpha.2` through `0.9.19-alpha.6` prereleases. Per-change details remain in the unchanged prerelease sections below.
8
+
9
+ ### Breaking Changes
10
+
11
+ - Renamed terminal control action `interrupt` to `kill`, including calls using `runId`. Replace `subagent({ action: "interrupt", id })` with `subagent({ action: "kill", id })`. The old action is rejected; killed children cannot resume and follow-up work requires a fresh launch.
12
+
13
+ ### Added
14
+
15
+ - Added a searchable `/agents` catalog grouped by source with model, tool, description and prompt details.
16
+ - Added the builtin Herdr skill from upstream v0.9.0 with managed-pane safety checks and CLI guidance.
17
+
18
+ ### Changed
19
+
20
+ - Session-bound launches return owner-bound task observations immediately by default. Explicit foreground observation and `action: "wait"` observe the same execution; yielding does not cancel children or consume additional execution slots ([#2884](https://github.com/bastani-inc/atomic/pull/2884)).
21
+ - Reduced default top-level parallel concurrency from 4 to 3. Explicit overrides remain honored; the per-parent native turn cap remains 4.
22
+ - Launch receipts, compact themed status cards and task details show readable outcomes, activity, elapsed time, tool/token counts and resolved model/reasoning settings, retaining identity through fallback and completion. Live transcripts subscribe to session events.
23
+ - Locator and pattern-finding agents use GPT-5.6 Luna at xhigh with Grok fallbacks at medium. Other agents explicitly select xhigh for OpenRouter Grok fallbacks. Debugger uses Astra and Fable at medium and Sol at high, preserving its fallback order.
24
+ - Delegation guidance keeps immediately blocking work local unless specialist expertise, isolation or an explicit request warrants a child. Parents overlap independent work and wait on dependencies rather than poll. Requests to work "quickly" select inline execution without hidden workflows or skipped validation.
25
+
26
+ ### Fixed
27
+
28
+ - Intercom sends and asks interrupt working children and handle input in the same execution, including startup, preflight and settlement races, without relaunching or losing messages. Explicit abort and owner cancellation remain terminal.
29
+ - Parallel requests wait for correlated replies in the original requester without ending siblings or discarding queued work. Parent observation yielding does not change execution concurrency; exact group commits release foreground observations without replacing executions ([#2884](https://github.com/bastani-inc/atomic/pull/2884)).
30
+ - Published terminal state before child disposal so completed children reject asks they cannot answer. Bound transcripts retain exact Intercom targets, and same-child messages precede completion delivery.
31
+ - Fixed queued-child worktree and branch cleanup on cancellation or owner closure without removing live siblings' worktrees early.
32
+ - Preserved explicit kill during capacity waiting and parent-cancellation races, including grouped Intercom status. Status and kill accept returned owner-bound task IDs.
33
+ - Background cards display known model/reasoning settings at admission without guessing unresolved values. Browsing `/agents` is navigation and no longer reports a false approval or Herdr block.
34
+
5
35
  ## [0.9.19-alpha.6] - 2026-09-11
6
36
 
7
37
  ### Changed
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/subagents",
3
- "version": "0.9.19-alpha.9",
3
+ "version": "0.9.20-alpha.1",
4
4
  "private": true,
5
5
  "description": "Atomic extension for delegating tasks to subagents with parallel execution. Fork of: https://github.com/nicobailon/pi-subagents",
6
6
  "contributors": [
@@ -4,6 +4,20 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.9.19] - 2026-09-13
8
+
9
+ Cumulative release of the `0.9.19-alpha.6` through `0.9.19-alpha.9` prereleases. Per-change details remain in the unchanged prerelease sections below.
10
+
11
+ ### Breaking Changes
12
+
13
+ - `fetch_content` requires a nonempty `urls` array of nonempty strings. Replace `{ url: "..." }` with `{ urls: ["..."] }`. Invalid shapes and unrecognized fields are rejected before fetching; `get_search_content` selectors are unchanged.
14
+ - `code_search` requires `repoName` in `owner/repo` format alongside `query` and uses DeepWiki MCP for public-repository questions instead of Exa. Update query-only calls to include the repository. No API key is required and there is no Exa fallback; `maxTokens` remains a best-effort output bound and `web_search` is unchanged.
15
+
16
+ ### Fixed
17
+
18
+ - Failed `fetch_content` batches show each URL's error and recovery steps. Retained partial content is labeled incomplete rather than absent.
19
+ - Video frame options are ignored for non-video inputs, preventing video-only errors for webpages and mixed batches. Tool descriptions distinguish page fetching, video analysis and frame extraction.
20
+
7
21
  ## [0.9.19-alpha.9] - 2026-09-12
8
22
 
9
23
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/web-access",
3
- "version": "0.9.19-alpha.9",
3
+ "version": "0.9.20-alpha.1",
4
4
  "private": true,
5
5
  "description": "Atomic extension for web search, URL fetching, GitHub repo cloning, PDF/video extraction. Fork of: https://github.com/nicobailon/pi-web-access",
6
6
  "contributors": [
@@ -6,6 +6,73 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.9.20-alpha.1] - 2026-09-14
10
+
11
+ ### Fixed
12
+
13
+ - Cold-start workflow stages wait for acknowledged Intercom route authority before connecting, preventing spurious ownership and heavy-initialization failures without weakening route ownership checks.
14
+ - Completed stages retain their original start, end, and duration through workflow resume and repeated replay, without rerunning completed work or displaying missing legacy timing as a new zero-duration execution ([#3038](https://github.com/bastani-inc/atomic/issues/3038)).
15
+ - Explicit workflow resume now initializes durability in a fresh CLI session instead of silently failing before dispatch, and reports initialization failures ([#3038](https://github.com/bastani-inc/atomic/issues/3038)).
16
+
17
+ ## [0.9.19] - 2026-09-13
18
+
19
+ Cumulative release of the `0.9.19-alpha.1` through `0.9.19-alpha.11` prereleases. Per-change details remain in the unchanged prerelease sections below.
20
+
21
+ ### Breaking Changes
22
+
23
+ - Workflow control uses `pause` across slash commands, tool actions, runtime APIs and lifecycle events. Run-level pause preserves resumable work, nested checkpoint tails and executor-only waits; targeted stage pause retains queued messages, and targeted `ctx.tool` pause cancels only that call. Use `resume` to continue eligible work.
24
+
25
+ ### Added
26
+
27
+ - Connected workflow activity to host observers and the built-in Herdr reporter, with root snapshots that distinguish execution, human waits, pauses, recovery and acknowledged failures. Typed lifecycle, activity, completion and heartbeat hooks preserve canonical nested identities without synthesizing completions during restore ([#2891](https://github.com/bastani-inc/atomic/issues/2891)).
28
+ - Added source-qualified stage-local `/skill:` discovery and one-time expansion for idle, steering and follow-up submissions, retaining Enter/Ctrl+F intent and human-input ownership. Editable post-mortem chats can use skills without restarting execution; `StageSendUserMessageOptions.expandPromptTemplates` opts programmatic delivery into expansion.
29
+ - Added bound owner-task inspection to stage chats with compact background counts below the composer, shared `/tasks` navigation and readable shaded completion cards ([#2884](https://github.com/bastani-inc/atomic/pull/2884)).
30
+ - Graph node cards show effective model and thinking identity, preserving canonical fast suffixes, updating on fallback and restoring through durable resume ([#1859](https://github.com/bastani-inc/atomic/pull/1859) by [@sina85](https://github.com/sina85)).
31
+ - Main-chat workflow cards support viewport-local wheel scrolling and an overflow-only scrollbar. Configurable Alt+K/J shortcuts, labeled Option on macOS, retain Alt+PageUp/PageDown aliases and yield to editor bindings. Ten-row and short-terminal caps preserve multiline-draft access and run anchors through live changes and resize.
32
+
33
+ ### Changed
34
+
35
+ - Incoming Intercom sends and asks cancel a live stage's current model call or cancellable tool and process messages in the same generation. Ordered delivery survives preflight and persistence races without replaying completed tools or cancelling a child that is asking its parent.
36
+ - Reduced default stage and authored parallel concurrency from 4 to 3, preserving explicit overrides.
37
+ - Open Claude Design starts with Fable 5.1 at medium, then Copilot Fable 5.1 and Astra at medium, with Fable-first OpenRouter fallbacks. Goal and Ralph orchestration, Ralph research and design use Fable fallbacks at medium and Sol at high; Goal/Ralph reviewers use Astra/Sol at high. Ralph prompt refinement remains at high, and OpenRouter Grok fallbacks explicitly use xhigh.
38
+ - Guidance uses project CI timing to plan critical-path work, avoids redundant full-suite runs without skipping gates, and routes user questions through structured question tools when available. Requests to work "quickly" select inline execution; launches inherit configured limits without routine budget questions while preserving approval before raising exhausted budgets.
39
+ - Graph cards omit generated dependency labels and extra padding, leave absent models blank, and show queued-message counts on a separate row. Status detail uses local time rather than UTC ([#3008](https://github.com/bastani-inc/atomic/issues/3008)).
40
+
41
+ ### Fixed
42
+
43
+ - Model fallback releases failed-attempt Intercom ownership before replacement, shares concurrent attachment/steering setup, and stops on cleanup failure. Repeated nested `ctx.workflow()` calls use unambiguous boundary identities instead of colliding during fallback ([#3020](https://github.com/bastani-inc/atomic/issues/3020)).
44
+ - Unchanged stage routes are no longer republished on every store update, avoiding redundant broker traffic and `List sessions timeout`. Genuine changes publish immediately, and rejected or unacknowledged announcements remain retryable.
45
+ - Restored embedded Postgres discovery in Bun-compiled and nested npm installations. Early exit reports the retained server's log instead of a readiness timeout; competing listeners and process-query failures cannot masquerade as readiness.
46
+ - Reduced checkpoint-heavy durable resume latency, especially on Windows, without changing decoded values or original errors. Ended recoverable blocks resume through continuation rather than reporting snapshot-only success.
47
+ - Initialization cancellation no longer leaves uncontrollable empty runs. Whole-run pause retains live executors and nested owners until resume, while quit retires them; durable resume replaces abandoned executors without replacing surviving paused owners. Original tool failures, closed-admission errors and child cleanup survive cancellation races.
48
+ - Stage pause cancels owned active and admitted queued agents and commands and waits for admission and cleanup; resume permits fresh work without reviving cancelled executions or affecting siblings. Durable tool callbacks wait for admitted agent tasks to settle before checkpointing, preserving commit/cancellation fences ([#2884](https://github.com/bastani-inc/atomic/pull/2884)).
49
+ - Quit and pause dismiss owned active-tool and readiness questions, reject late answers, and ask readiness again on resume. Failed cancellation releases only its temporary hold instead of stranding a running stage ([#2897](https://github.com/bastani-inc/atomic/issues/2897)).
50
+ - Completed stages retain their late-message routing for post-mortem asks. Non-agent prompt/tool names do not invalidate genuine duplicate-agent routing ([#2895](https://github.com/bastani-inc/atomic/pull/2895)).
51
+ - Preserved complete stage artifacts across follow-up clarification, compaction and fallback. Failed retries discard provisional answers without losing earlier accepted reports; typed child workflows can receive structured output without graph projection freezing it ([#2936](https://github.com/bastani-inc/atomic/issues/2936)).
52
+ - Local stage listing and background counts include recursively nested stages without duplicate boundaries. Warm-first verifier and tournament groups declare possible-stage names without spurious builtin discovery warnings ([#3001](https://github.com/bastani-inc/atomic/issues/3001)).
53
+ - Skill autocomplete shares lazy attachment without checkpointing on every keystroke. Unsupported custom hosts report unavailable invocation rather than bypassing admission.
54
+ - Stage `/tasks` stays local, retains model/reasoning/cwd/branch/MCP context, and keeps counts visible beside questions on narrow terminals. Detail pages remain fullscreen, and navigation does not create false input notices or approval waits.
55
+ - Workflow graph interiors and autocomplete use the terminal background; themed chrome and focused tabs retain fill and styling through truncation. Graph/picker navigation no longer falsely marks Herdr blocked.
56
+ - Live continuation prevents brief false idle reports. Settled failures retain attention without reporting an active decision wait; genuine questions and exhausted budgets remain blocked. Already-aborted lifecycle kill events and checkpoint interrupt outcomes remain accurate ([#2891](https://github.com/bastani-inc/atomic/issues/2891), [#2912](https://github.com/bastani-inc/atomic/pull/2912)).
57
+ - Workflow summaries fit narrow terminals, keep the viewed run anchored across insertion/removal and collapse/resize, and use a concise `↑↓ scroll` hint without a redundant visible-row counter ([#3015](https://github.com/bastani-inc/atomic/issues/3015), [#3017](https://github.com/bastani-inc/atomic/pull/3017)).
58
+
59
+ ## [0.9.19-alpha.11] - 2026-09-13
60
+
61
+ ### Fixed
62
+
63
+ - Repeated nested `ctx.workflow()` invocations use unambiguous Intercom boundary identities, preventing duplicate-owner and heavy-initialization warnings during model fallback while preserving route ownership checks.
64
+
65
+ ## [0.9.19-alpha.10] - 2026-09-13
66
+
67
+ ### Added
68
+
69
+ - Main-chat workflow cards now scroll with the wheel over their actual allocated viewport, with a slim scrollbar only when content overflows. Configurable Alt+K/J shortcuts, labeled Option on macOS, retain Alt+PageUp/PageDown aliases and yield to configured editor bindings. The ten-row/short-terminal cap, multiline-draft reachability and run-ID anchors remain intact across insertion, deletion, collapse and resize, including isolated-engine sessions.
70
+
71
+ ### Fixed
72
+
73
+ - Model fallback releases the failed attempt's Intercom ownership before initializing its replacement, avoiding duplicate live-stage ownership warnings while retaining queued delivery handoff. Concurrent attachment and steering wait for cleanup and share successor creation. Cancellation during cleanup no longer starts a replacement session, and failed extension initialization cleans up its session. If that cleanup fails, the stage stops rather than retrying or creating another session, preserving both the initialization and cleanup errors for diagnosis ([#3020](https://github.com/bastani-inc/atomic/issues/3020)).
74
+ - Removed the confusing visible-row counter from the main-chat workflow widget hint; the final hint now reads `↑↓ scroll` followed by available scrolling shortcuts, matching the `/tasks` hint style.
75
+
9
76
  ## [0.9.19-alpha.9] - 2026-09-12
10
77
 
11
78
  ### Fixed
@@ -36,7 +36,7 @@ import {
36
36
  reviewerFailureText,
37
37
  summarizeReviewConvergence,
38
38
  reverify_consolidated_batch
39
- } from "./chunk-ngkqkzej.js";
39
+ } from "./chunk-m0xfsef8.js";
40
40
  import {
41
41
  VERIFICATION_SCALE
42
42
  } from "./chunk-n1910xc4.js";
@@ -38,7 +38,7 @@ import {
38
38
  reviewerFailureText,
39
39
  summarizeReviewConvergence,
40
40
  reverify_consolidated_batch
41
- } from "./chunk-ngkqkzej.js";
41
+ } from "./chunk-m0xfsef8.js";
42
42
  import {
43
43
  fold_usage
44
44
  } from "./chunk-tgt0s5e5.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  goal_default
3
- } from "./chunk-nkrafh9s.js";
4
- import"./chunk-ngkqkzej.js";
3
+ } from "./chunk-ewkkkbak.js";
4
+ import"./chunk-m0xfsef8.js";
5
5
  import"./chunk-2377r57g.js";
6
6
  import"./chunk-z0d03ktm.js";
7
7
  import"./chunk-n1910xc4.js";
@@ -14,11 +14,11 @@ import {
14
14
  import {
15
15
  generate_and_filter_default
16
16
  } from "./chunk-z29qbehr.js";
17
- import"./chunk-ngkqkzej.js";
17
+ import"./chunk-m0xfsef8.js";
18
18
  import"./chunk-z0d03ktm.js";
19
19
  import {
20
20
  goal_default
21
- } from "./chunk-nkrafh9s.js";
21
+ } from "./chunk-ewkkkbak.js";
22
22
  import {
23
23
  open_claude_design_default
24
24
  } from "./chunk-yeee2jrc.js";
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-6w6cvk6b.js";
28
28
  import {
29
29
  ralph_default
30
- } from "./chunk-1jth021m.js";
30
+ } from "./chunk-zqtm1d2c.js";
31
31
  import {
32
32
  tournament_default
33
33
  } from "./chunk-31j2gs7h.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ralph_default
3
- } from "./chunk-1jth021m.js";
4
- import"./chunk-ngkqkzej.js";
3
+ } from "./chunk-zqtm1d2c.js";
4
+ import"./chunk-m0xfsef8.js";
5
5
  import"./chunk-2377r57g.js";
6
6
  import"./chunk-z0d03ktm.js";
7
7
  import"./chunk-n1910xc4.js";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/workflows",
3
- "version": "0.9.19-alpha.9",
3
+ "version": "0.9.20-alpha.1",
4
4
  "private": true,
5
5
  "description": "Atomic extension for multi-stage workflow authoring and execution.",
6
6
  "contributors": [