@bastani/atomic 0.9.5-alpha.8 → 0.9.5

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 (530) hide show
  1. package/CHANGELOG.md +122 -0
  2. package/README.md +2 -2
  3. package/dist/builtin/cursor/CHANGELOG.md +12 -0
  4. package/dist/builtin/cursor/package.json +3 -3
  5. package/dist/builtin/cursor/src/model-mapper.ts +6 -3
  6. package/dist/builtin/intercom/CHANGELOG.md +37 -0
  7. package/dist/builtin/intercom/README.md +4 -2
  8. package/dist/builtin/intercom/broker/broker.ts +6 -114
  9. package/dist/builtin/intercom/broker/client.ts +29 -54
  10. package/dist/builtin/intercom/broker/delivered-message-cache.ts +44 -0
  11. package/dist/builtin/intercom/broker/pending-send-registry.ts +142 -0
  12. package/dist/builtin/intercom/broker/send-handler.ts +106 -0
  13. package/dist/builtin/intercom/broker/send-signature.ts +37 -0
  14. package/dist/builtin/intercom/foreground-detach-handoff.ts +136 -0
  15. package/dist/builtin/intercom/index-heavy.ts +49 -53
  16. package/dist/builtin/intercom/index.ts +278 -262
  17. package/dist/builtin/intercom/lazy-heavy-proxy.ts +114 -0
  18. package/dist/builtin/intercom/lazy-subagent-ack.ts +20 -0
  19. package/dist/builtin/intercom/lazy-tool-execution.ts +39 -0
  20. package/dist/builtin/intercom/lifecycle-lease.ts +51 -0
  21. package/dist/builtin/intercom/lifecycle.ts +37 -20
  22. package/dist/builtin/intercom/package.json +3 -6
  23. package/dist/builtin/intercom/reply-routing.ts +17 -0
  24. package/dist/builtin/intercom/subagent-relay.ts +58 -12
  25. package/dist/builtin/intercom/types.ts +3 -3
  26. package/dist/builtin/mcp/CHANGELOG.md +38 -0
  27. package/dist/builtin/mcp/OAUTH.md +1 -0
  28. package/dist/builtin/mcp/README.md +10 -6
  29. package/dist/builtin/mcp/apps-cancellation.ts +32 -0
  30. package/dist/builtin/mcp/call-tool-result.ts +9 -0
  31. package/dist/builtin/mcp/caller-wait.ts +50 -0
  32. package/dist/builtin/mcp/command-registration.ts +82 -0
  33. package/dist/builtin/mcp/direct-tool-executor.ts +279 -0
  34. package/dist/builtin/mcp/direct-tools.ts +40 -255
  35. package/dist/builtin/mcp/host-html-template.ts +4 -2
  36. package/dist/builtin/mcp/index.ts +274 -239
  37. package/dist/builtin/mcp/init.ts +96 -126
  38. package/dist/builtin/mcp/mcp-auth-flow.ts +247 -237
  39. package/dist/builtin/mcp/mcp-callback-server.ts +89 -68
  40. package/dist/builtin/mcp/mcp-oauth-provider.ts +23 -1
  41. package/dist/builtin/mcp/metadata-hydration.ts +52 -0
  42. package/dist/builtin/mcp/package.json +3 -3
  43. package/dist/builtin/mcp/proxy-auth.ts +4 -4
  44. package/dist/builtin/mcp/proxy-call.ts +111 -40
  45. package/dist/builtin/mcp/proxy-connect.ts +35 -15
  46. package/dist/builtin/mcp/proxy-info-modes.ts +106 -23
  47. package/dist/builtin/mcp/proxy-modes.ts +3 -3
  48. package/dist/builtin/mcp/session-cleanup-barrier.ts +43 -0
  49. package/dist/builtin/mcp/startup-warmup.ts +98 -0
  50. package/dist/builtin/mcp/state-lease.ts +12 -0
  51. package/dist/builtin/mcp/tool-result-renderer.ts +3 -3
  52. package/dist/builtin/mcp/ui-server.ts +8 -8
  53. package/dist/builtin/mcp/ui-session.ts +9 -18
  54. package/dist/builtin/subagents/CHANGELOG.md +78 -0
  55. package/dist/builtin/subagents/README.md +30 -29
  56. package/dist/builtin/subagents/agents/code-simplifier.md +2 -2
  57. package/dist/builtin/subagents/agents/codebase-analyzer.md +2 -2
  58. package/dist/builtin/subagents/agents/codebase-locator.md +2 -2
  59. package/dist/builtin/subagents/agents/codebase-online-researcher.md +2 -2
  60. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +2 -2
  61. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +2 -2
  62. package/dist/builtin/subagents/agents/codebase-research-locator.md +2 -2
  63. package/dist/builtin/subagents/agents/debugger.md +2 -2
  64. package/dist/builtin/subagents/agents/worker.md +2 -2
  65. package/dist/builtin/subagents/package.json +5 -5
  66. package/dist/builtin/subagents/prompts/review-loop.md +1 -1
  67. package/dist/builtin/subagents/skills/subagent/SKILL.md +37 -36
  68. package/dist/builtin/subagents/src/extension/api-lifecycle.ts +64 -0
  69. package/dist/builtin/subagents/src/extension/fanout-child.ts +44 -51
  70. package/dist/builtin/subagents/src/extension/index.ts +289 -320
  71. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +7 -10
  72. package/dist/builtin/subagents/src/extension/schemas.ts +22 -5
  73. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +89 -0
  74. package/dist/builtin/subagents/src/extension/tool-description.ts +29 -0
  75. package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +13 -2
  76. package/dist/builtin/subagents/src/intercom/result-intercom.ts +4 -4
  77. package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +106 -0
  78. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +26 -20
  79. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +13 -2
  80. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +3 -0
  81. package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +1 -1
  82. package/dist/builtin/subagents/src/runs/background/completion-claims.ts +189 -0
  83. package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +44 -7
  84. package/dist/builtin/subagents/src/runs/background/completion-notification.ts +34 -0
  85. package/dist/builtin/subagents/src/runs/background/notify.ts +72 -22
  86. package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +232 -0
  87. package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +151 -0
  88. package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +72 -0
  89. package/dist/builtin/subagents/src/runs/background/result-retry-scheduler.ts +48 -0
  90. package/dist/builtin/subagents/src/runs/background/result-status.ts +81 -0
  91. package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +59 -0
  92. package/dist/builtin/subagents/src/runs/background/result-watcher.ts +177 -233
  93. package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +3 -2
  94. package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +73 -14
  95. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +29 -15
  96. package/dist/builtin/subagents/src/runs/background/top-level-async.ts +1 -2
  97. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +1 -0
  98. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +1 -0
  99. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +1 -0
  100. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +7 -9
  101. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +3 -13
  102. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +2 -15
  103. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +2 -2
  104. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +63 -46
  105. package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +48 -0
  106. package/dist/builtin/subagents/src/runs/foreground/execution-detach-route.ts +17 -0
  107. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +39 -26
  108. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +3 -1
  109. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +3 -51
  110. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +6 -11
  111. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +11 -2
  112. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +2 -0
  113. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +5 -112
  114. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +2 -0
  115. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +68 -118
  116. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +79 -7
  117. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +2 -2
  118. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +3 -0
  119. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +2 -2
  120. package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +55 -12
  121. package/dist/builtin/subagents/src/shared/artifacts.ts +22 -11
  122. package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +294 -0
  123. package/dist/builtin/subagents/src/shared/exclusive-file-publication.ts +44 -0
  124. package/dist/builtin/subagents/src/shared/jsonl-writer.ts +1 -0
  125. package/dist/builtin/subagents/src/shared/model-info.ts +2 -2
  126. package/dist/builtin/subagents/src/shared/settings.ts +20 -10
  127. package/dist/builtin/subagents/src/shared/types-async.ts +3 -1
  128. package/dist/builtin/subagents/src/shared/types-config.ts +2 -0
  129. package/dist/builtin/subagents/src/shared/types-runtime.ts +3 -2
  130. package/dist/builtin/subagents/src/slash/slash-commands.ts +9 -12
  131. package/dist/builtin/subagents/src/slash/slash-live-state.ts +63 -32
  132. package/dist/builtin/subagents/src/tui/render-result.ts +7 -0
  133. package/dist/builtin/subagents/src/tui/render-stable-output.ts +1 -0
  134. package/dist/builtin/subagents/src/tui/render-widget.ts +157 -89
  135. package/dist/builtin/web-access/CHANGELOG.md +28 -0
  136. package/dist/builtin/web-access/README.md +4 -0
  137. package/dist/builtin/web-access/content-tools.ts +8 -3
  138. package/dist/builtin/web-access/index-heavy.ts +1 -1
  139. package/dist/builtin/web-access/index.ts +190 -46
  140. package/dist/builtin/web-access/lifecycle-lease.ts +38 -0
  141. package/dist/builtin/web-access/package.json +2 -2
  142. package/dist/builtin/web-access/result-renderers.ts +1 -1
  143. package/dist/builtin/web-access/summary-review.ts +1 -1
  144. package/dist/builtin/web-access/web-search-activity.ts +1 -1
  145. package/dist/builtin/web-access/web-search-return.ts +7 -0
  146. package/dist/builtin/web-access/web-search-summary.ts +1 -1
  147. package/dist/builtin/web-access/web-search-tool.ts +4 -2
  148. package/dist/builtin/workflows/CHANGELOG.md +86 -0
  149. package/dist/builtin/workflows/README.md +5 -5
  150. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +27 -4
  151. package/dist/builtin/workflows/builtin/goal-runner.ts +86 -27
  152. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +10 -0
  153. package/dist/builtin/workflows/builtin/ralph-core.ts +9 -9
  154. package/dist/builtin/workflows/builtin/ralph-models.ts +71 -36
  155. package/dist/builtin/workflows/builtin/ralph-runner.ts +20 -31
  156. package/dist/builtin/workflows/package.json +2 -2
  157. package/dist/builtin/workflows/skills/impeccable/SKILL.md +16 -13
  158. package/dist/builtin/workflows/skills/impeccable/reference/adapt.md +1 -0
  159. package/dist/builtin/workflows/skills/impeccable/reference/adapt.native.md +58 -0
  160. package/dist/builtin/workflows/skills/impeccable/reference/android.md +40 -0
  161. package/dist/builtin/workflows/skills/impeccable/reference/animate.md +2 -0
  162. package/dist/builtin/workflows/skills/impeccable/reference/audit.md +2 -0
  163. package/dist/builtin/workflows/skills/impeccable/reference/audit.native.md +139 -0
  164. package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +69 -62
  165. package/dist/builtin/workflows/skills/impeccable/reference/critique.md +21 -7
  166. package/dist/builtin/workflows/skills/impeccable/reference/document.md +1 -1
  167. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +92 -0
  168. package/dist/builtin/workflows/skills/impeccable/reference/init.md +29 -7
  169. package/dist/builtin/workflows/skills/impeccable/reference/ios.md +45 -0
  170. package/dist/builtin/workflows/skills/impeccable/reference/layout.md +25 -1
  171. package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +23 -1
  172. package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +2 -1
  173. package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +75 -14
  174. package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +1 -1
  175. package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +31 -0
  176. package/dist/builtin/workflows/skills/impeccable/scripts/detector/design-system.mjs +64 -0
  177. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +118 -11
  178. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +16 -11
  179. package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +66 -0
  180. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +42 -10
  181. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
  182. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/page.mjs +4 -6
  183. package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +660 -0
  184. package/dist/builtin/workflows/skills/impeccable/scripts/hook-before-edit.mjs +516 -0
  185. package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +1764 -0
  186. package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +61 -0
  187. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-config.mjs +4 -2
  188. package/dist/builtin/workflows/skills/impeccable/scripts/lib/is-generated.mjs +2 -2
  189. package/dist/builtin/workflows/skills/impeccable/scripts/live/svelte-component.mjs +13 -16
  190. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +17 -11
  191. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +104 -37
  192. package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +9 -0
  193. package/dist/builtin/workflows/src/durable/backend.ts +12 -0
  194. package/dist/builtin/workflows/src/durable/dbos-backend.ts +17 -1
  195. package/dist/builtin/workflows/src/durable/resume-catalog.ts +12 -0
  196. package/dist/builtin/workflows/src/durable/resume-runtime.ts +5 -2
  197. package/dist/builtin/workflows/src/durable/stage-primitive.ts +2 -1
  198. package/dist/builtin/workflows/src/durable/types.ts +16 -0
  199. package/dist/builtin/workflows/src/engine/primitives/task.ts +3 -1
  200. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +1 -2
  201. package/dist/builtin/workflows/src/engine/run-returned-status.ts +50 -16
  202. package/dist/builtin/workflows/src/engine/run.ts +20 -19
  203. package/dist/builtin/workflows/src/engine/runtime.ts +5 -0
  204. package/dist/builtin/workflows/src/extension/extension-factory.ts +3 -0
  205. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +9 -2
  206. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +137 -27
  207. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +22 -6
  208. package/dist/builtin/workflows/src/extension/public-types.ts +1 -1
  209. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +13 -1
  210. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +19 -4
  211. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +9 -0
  212. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +17 -22
  213. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +48 -23
  214. package/dist/builtin/workflows/src/extension/workflow-schema.ts +15 -2
  215. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +20 -8
  216. package/dist/builtin/workflows/src/extension/workflow-tool.ts +24 -8
  217. package/dist/builtin/workflows/src/runs/background/status.ts +4 -3
  218. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +29 -8
  219. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +1 -1
  220. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +3 -2
  221. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +1 -1
  222. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +155 -20
  223. package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +6 -0
  224. package/dist/builtin/workflows/src/runs/shared/worktree.ts +2 -1
  225. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +2 -2
  226. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +2 -2
  227. package/dist/builtin/workflows/src/shared/resume-continuation.ts +2 -0
  228. package/dist/builtin/workflows/src/shared/returned-run-status.ts +116 -0
  229. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +2 -0
  230. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +21 -3
  231. package/dist/builtin/workflows/src/tui/graph-view-state.ts +3 -0
  232. package/dist/builtin/workflows/src/tui/graph-view-types.ts +3 -0
  233. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +1 -23
  234. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +54 -9
  235. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +5 -2
  236. package/dist/builtin/workflows/src/tui/status-list.ts +22 -15
  237. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +4 -4
  238. package/dist/cli/args.d.ts.map +1 -1
  239. package/dist/cli/args.js +2 -2
  240. package/dist/cli/args.js.map +1 -1
  241. package/dist/core/agent-session-auto-compaction.d.ts +23 -3
  242. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  243. package/dist/core/agent-session-auto-compaction.js +129 -17
  244. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  245. package/dist/core/agent-session-events.d.ts.map +1 -1
  246. package/dist/core/agent-session-events.js +9 -1
  247. package/dist/core/agent-session-events.js.map +1 -1
  248. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  249. package/dist/core/agent-session-message-queue.js +1 -1
  250. package/dist/core/agent-session-message-queue.js.map +1 -1
  251. package/dist/core/agent-session-methods.d.ts +6 -3
  252. package/dist/core/agent-session-methods.d.ts.map +1 -1
  253. package/dist/core/agent-session-methods.js.map +1 -1
  254. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  255. package/dist/core/agent-session-prompt.js +2 -2
  256. package/dist/core/agent-session-prompt.js.map +1 -1
  257. package/dist/core/agent-session-retry.d.ts.map +1 -1
  258. package/dist/core/agent-session-retry.js +1 -1
  259. package/dist/core/agent-session-retry.js.map +1 -1
  260. package/dist/core/agent-session-services.d.ts.map +1 -1
  261. package/dist/core/agent-session-services.js +3 -2
  262. package/dist/core/agent-session-services.js.map +1 -1
  263. package/dist/core/agent-session-types.d.ts.map +1 -1
  264. package/dist/core/agent-session-types.js +1 -1
  265. package/dist/core/agent-session-types.js.map +1 -1
  266. package/dist/core/agent-session.d.ts +4 -2
  267. package/dist/core/agent-session.d.ts.map +1 -1
  268. package/dist/core/agent-session.js +4 -2
  269. package/dist/core/agent-session.js.map +1 -1
  270. package/dist/core/anthropic-thinking-guard.d.ts +5 -5
  271. package/dist/core/anthropic-thinking-guard.d.ts.map +1 -1
  272. package/dist/core/anthropic-thinking-guard.js +42 -32
  273. package/dist/core/anthropic-thinking-guard.js.map +1 -1
  274. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  275. package/dist/core/atomic-guide-command.js +15 -15
  276. package/dist/core/atomic-guide-command.js.map +1 -1
  277. package/dist/core/auth-storage.d.ts.map +1 -1
  278. package/dist/core/auth-storage.js +14 -9
  279. package/dist/core/auth-storage.js.map +1 -1
  280. package/dist/core/compaction/compaction.d.ts +2 -0
  281. package/dist/core/compaction/compaction.d.ts.map +1 -1
  282. package/dist/core/compaction/compaction.js +79 -46
  283. package/dist/core/compaction/compaction.js.map +1 -1
  284. package/dist/core/compaction/context-assistant-turns.d.ts +42 -0
  285. package/dist/core/compaction/context-assistant-turns.d.ts.map +1 -0
  286. package/dist/core/compaction/context-assistant-turns.js +87 -0
  287. package/dist/core/compaction/context-assistant-turns.js.map +1 -0
  288. package/dist/core/compaction/context-compaction-critical.d.ts +1 -1
  289. package/dist/core/compaction/context-compaction-critical.d.ts.map +1 -1
  290. package/dist/core/compaction/context-compaction-critical.js +2 -2
  291. package/dist/core/compaction/context-compaction-critical.js.map +1 -1
  292. package/dist/core/compaction/context-compaction-eviction-alternates.d.ts +18 -0
  293. package/dist/core/compaction/context-compaction-eviction-alternates.d.ts.map +1 -0
  294. package/dist/core/compaction/context-compaction-eviction-alternates.js +186 -0
  295. package/dist/core/compaction/context-compaction-eviction-alternates.js.map +1 -0
  296. package/dist/core/compaction/context-compaction-eviction.d.ts +10 -2
  297. package/dist/core/compaction/context-compaction-eviction.d.ts.map +1 -1
  298. package/dist/core/compaction/context-compaction-eviction.js +196 -146
  299. package/dist/core/compaction/context-compaction-eviction.js.map +1 -1
  300. package/dist/core/compaction/context-compaction-prompt.d.ts.map +1 -1
  301. package/dist/core/compaction/context-compaction-prompt.js +1 -1
  302. package/dist/core/compaction/context-compaction-prompt.js.map +1 -1
  303. package/dist/core/compaction/context-compaction-types.d.ts +2 -0
  304. package/dist/core/compaction/context-compaction-types.d.ts.map +1 -1
  305. package/dist/core/compaction/context-compaction-types.js.map +1 -1
  306. package/dist/core/compaction/context-deletion-application.d.ts +5 -4
  307. package/dist/core/compaction/context-deletion-application.d.ts.map +1 -1
  308. package/dist/core/compaction/context-deletion-application.js +17 -15
  309. package/dist/core/compaction/context-deletion-application.js.map +1 -1
  310. package/dist/core/compaction/context-deletion-store.d.ts.map +1 -1
  311. package/dist/core/compaction/context-deletion-store.js +1 -1
  312. package/dist/core/compaction/context-deletion-store.js.map +1 -1
  313. package/dist/core/compaction/context-deletion-targets.d.ts +2 -1
  314. package/dist/core/compaction/context-deletion-targets.d.ts.map +1 -1
  315. package/dist/core/compaction/context-deletion-targets.js +36 -31
  316. package/dist/core/compaction/context-deletion-targets.js.map +1 -1
  317. package/dist/core/compaction/context-deletion-tool-helpers.d.ts.map +1 -1
  318. package/dist/core/compaction/context-deletion-tool-helpers.js +116 -43
  319. package/dist/core/compaction/context-deletion-tool-helpers.js.map +1 -1
  320. package/dist/core/compaction/context-transcript-analysis.d.ts +1 -2
  321. package/dist/core/compaction/context-transcript-analysis.d.ts.map +1 -1
  322. package/dist/core/compaction/context-transcript-analysis.js +33 -37
  323. package/dist/core/compaction/context-transcript-analysis.js.map +1 -1
  324. package/dist/core/copilot-model-synthesis.d.ts.map +1 -1
  325. package/dist/core/copilot-model-synthesis.js +3 -1
  326. package/dist/core/copilot-model-synthesis.js.map +1 -1
  327. package/dist/core/extensions/loader-virtual-modules.d.ts +8 -1
  328. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  329. package/dist/core/extensions/loader-virtual-modules.js +2 -1
  330. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  331. package/dist/core/extensions/provider-types.d.ts +2 -7
  332. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  333. package/dist/core/extensions/provider-types.js.map +1 -1
  334. package/dist/core/footer-data-provider.d.ts +6 -0
  335. package/dist/core/footer-data-provider.d.ts.map +1 -1
  336. package/dist/core/footer-data-provider.js +72 -29
  337. package/dist/core/footer-data-provider.js.map +1 -1
  338. package/dist/core/messages.d.ts +9 -0
  339. package/dist/core/messages.d.ts.map +1 -1
  340. package/dist/core/messages.js +100 -18
  341. package/dist/core/messages.js.map +1 -1
  342. package/dist/core/model-registry-builtins.d.ts.map +1 -1
  343. package/dist/core/model-registry-builtins.js +5 -0
  344. package/dist/core/model-registry-builtins.js.map +1 -1
  345. package/dist/core/model-registry-custom-loader.d.ts.map +1 -1
  346. package/dist/core/model-registry-custom-loader.js +49 -8
  347. package/dist/core/model-registry-custom-loader.js.map +1 -1
  348. package/dist/core/model-registry-dynamic.d.ts.map +1 -1
  349. package/dist/core/model-registry-dynamic.js +11 -5
  350. package/dist/core/model-registry-dynamic.js.map +1 -1
  351. package/dist/core/model-registry-loader.d.ts.map +1 -1
  352. package/dist/core/model-registry-loader.js +8 -0
  353. package/dist/core/model-registry-loader.js.map +1 -1
  354. package/dist/core/model-registry-schemas.d.ts +93 -8
  355. package/dist/core/model-registry-schemas.d.ts.map +1 -1
  356. package/dist/core/model-registry-schemas.js +24 -12
  357. package/dist/core/model-registry-schemas.js.map +1 -1
  358. package/dist/core/model-registry-types.d.ts +7 -6
  359. package/dist/core/model-registry-types.d.ts.map +1 -1
  360. package/dist/core/model-registry-types.js.map +1 -1
  361. package/dist/core/model-registry.d.ts +5 -0
  362. package/dist/core/model-registry.d.ts.map +1 -1
  363. package/dist/core/model-registry.js +23 -0
  364. package/dist/core/model-registry.js.map +1 -1
  365. package/dist/core/model-resolver-cli.d.ts.map +1 -1
  366. package/dist/core/model-resolver-cli.js +33 -5
  367. package/dist/core/model-resolver-cli.js.map +1 -1
  368. package/dist/core/model-resolver-initial.d.ts +6 -1
  369. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  370. package/dist/core/model-resolver-initial.js +12 -7
  371. package/dist/core/model-resolver-initial.js.map +1 -1
  372. package/dist/core/model-resolver.d.ts +1 -1
  373. package/dist/core/model-resolver.d.ts.map +1 -1
  374. package/dist/core/model-resolver.js +1 -1
  375. package/dist/core/model-resolver.js.map +1 -1
  376. package/dist/core/openai-responses-payload-sanitizer.d.ts +1 -0
  377. package/dist/core/openai-responses-payload-sanitizer.d.ts.map +1 -1
  378. package/dist/core/openai-responses-payload-sanitizer.js +24 -9
  379. package/dist/core/openai-responses-payload-sanitizer.js.map +1 -1
  380. package/dist/core/resource-loader-context-files.d.ts +1 -0
  381. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  382. package/dist/core/resource-loader-context-files.js +13 -10
  383. package/dist/core/resource-loader-context-files.js.map +1 -1
  384. package/dist/core/sdk.d.ts.map +1 -1
  385. package/dist/core/sdk.js +2 -2
  386. package/dist/core/sdk.js.map +1 -1
  387. package/dist/core/session-entry-normalization.d.ts +7 -0
  388. package/dist/core/session-entry-normalization.d.ts.map +1 -0
  389. package/dist/core/session-entry-normalization.js +14 -0
  390. package/dist/core/session-entry-normalization.js.map +1 -0
  391. package/dist/core/session-manager-core.d.ts.map +1 -1
  392. package/dist/core/session-manager-core.js +1 -0
  393. package/dist/core/session-manager-core.js.map +1 -1
  394. package/dist/core/session-manager-history.d.ts +2 -2
  395. package/dist/core/session-manager-history.d.ts.map +1 -1
  396. package/dist/core/session-manager-history.js +127 -108
  397. package/dist/core/session-manager-history.js.map +1 -1
  398. package/dist/core/settings-manager-basic-accessors.d.ts +2 -2
  399. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  400. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  401. package/dist/core/settings-types.d.ts +1 -1
  402. package/dist/core/settings-types.d.ts.map +1 -1
  403. package/dist/core/settings-types.js.map +1 -1
  404. package/dist/core/slash-commands.d.ts +2 -0
  405. package/dist/core/slash-commands.d.ts.map +1 -1
  406. package/dist/core/slash-commands.js +141 -0
  407. package/dist/core/slash-commands.js.map +1 -1
  408. package/dist/core/tools/bash.d.ts.map +1 -1
  409. package/dist/core/tools/bash.js +11 -8
  410. package/dist/core/tools/bash.js.map +1 -1
  411. package/dist/index.d.ts +1 -0
  412. package/dist/index.d.ts.map +1 -1
  413. package/dist/index.js +1 -0
  414. package/dist/index.js.map +1 -1
  415. package/dist/main-deferred-startup.d.ts.map +1 -1
  416. package/dist/main-deferred-startup.js +2 -2
  417. package/dist/main-deferred-startup.js.map +1 -1
  418. package/dist/main-early-input.d.ts.map +1 -1
  419. package/dist/main-early-input.js +7 -0
  420. package/dist/main-early-input.js.map +1 -1
  421. package/dist/main-session.d.ts.map +1 -1
  422. package/dist/main-session.js +1 -0
  423. package/dist/main-session.js.map +1 -1
  424. package/dist/main.d.ts.map +1 -1
  425. package/dist/main.js +1 -1
  426. package/dist/main.js.map +1 -1
  427. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  428. package/dist/modes/interactive/components/chat-session-host-actions.js +0 -1
  429. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  430. package/dist/modes/interactive/components/settings-selector-options.d.ts.map +1 -1
  431. package/dist/modes/interactive/components/settings-selector-options.js +3 -1
  432. package/dist/modes/interactive/components/settings-selector-options.js.map +1 -1
  433. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  434. package/dist/modes/interactive/components/thinking-selector.js +2 -1
  435. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  436. package/dist/modes/interactive/interactive-agent-events.d.ts.map +1 -1
  437. package/dist/modes/interactive/interactive-agent-events.js +3 -1
  438. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  439. package/dist/modes/interactive/interactive-autocomplete.d.ts.map +1 -1
  440. package/dist/modes/interactive/interactive-autocomplete.js +21 -9
  441. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  442. package/dist/modes/interactive/interactive-child-ordering.d.ts +7 -0
  443. package/dist/modes/interactive/interactive-child-ordering.d.ts.map +1 -0
  444. package/dist/modes/interactive/interactive-child-ordering.js +26 -0
  445. package/dist/modes/interactive/interactive-child-ordering.js.map +1 -0
  446. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  447. package/dist/modes/interactive/interactive-deferred-startup.js +43 -30
  448. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  449. package/dist/modes/interactive/interactive-hotkeys-debug.d.ts.map +1 -1
  450. package/dist/modes/interactive/interactive-hotkeys-debug.js +1 -0
  451. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
  452. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  453. package/dist/modes/interactive/interactive-input-handling.js +41 -6
  454. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  455. package/dist/modes/interactive/interactive-mode-base.d.ts +3 -0
  456. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  457. package/dist/modes/interactive/interactive-mode-base.js +3 -0
  458. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  459. package/dist/modes/interactive/interactive-mode-deps.d.ts +2 -2
  460. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  461. package/dist/modes/interactive/interactive-mode-deps.js +2 -2
  462. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  463. package/dist/modes/interactive/interactive-mode-surface.d.ts +2 -2
  464. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  465. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  466. package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -1
  467. package/dist/modes/interactive/interactive-model-routing.js +11 -4
  468. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  469. package/dist/modes/interactive/interactive-process-lifecycle.d.ts.map +1 -1
  470. package/dist/modes/interactive/interactive-process-lifecycle.js +0 -3
  471. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  472. package/dist/modes/interactive/interactive-render-chat.d.ts.map +1 -1
  473. package/dist/modes/interactive/interactive-render-chat.js +15 -1
  474. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  475. package/dist/modes/interactive/interactive-session-routing.d.ts.map +1 -1
  476. package/dist/modes/interactive/interactive-session-routing.js +5 -1
  477. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  478. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  479. package/dist/modes/interactive/interactive-startup.js +20 -21
  480. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  481. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
  482. package/dist/modes/interactive/theme/global-theme.js +26 -2
  483. package/dist/modes/interactive/theme/global-theme.js.map +1 -1
  484. package/dist/modes/interactive/theme/theme-class.d.ts +1 -1
  485. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  486. package/dist/modes/interactive/theme/theme-class.js +2 -0
  487. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  488. package/dist/utils/clipboard-image.d.ts.map +1 -1
  489. package/dist/utils/clipboard-image.js +3 -0
  490. package/dist/utils/clipboard-image.js.map +1 -1
  491. package/dist/utils/fs-watch.d.ts +24 -1
  492. package/dist/utils/fs-watch.d.ts.map +1 -1
  493. package/dist/utils/fs-watch.js +60 -5
  494. package/dist/utils/fs-watch.js.map +1 -1
  495. package/docs/changelog.mdx +19 -0
  496. package/docs/compaction.md +60 -49
  497. package/docs/custom-provider.md +18 -5
  498. package/docs/development.md +4 -0
  499. package/docs/extensions.md +11 -2
  500. package/docs/json.md +1 -1
  501. package/docs/models.md +69 -10
  502. package/docs/providers.md +1 -1
  503. package/docs/quickstart.md +12 -8
  504. package/docs/rpc.md +2 -2
  505. package/docs/sdk.md +1 -1
  506. package/docs/settings.md +4 -4
  507. package/docs/subagents.md +40 -5
  508. package/docs/tools.md +1 -1
  509. package/docs/usage.md +4 -2
  510. package/docs/windows.md +4 -0
  511. package/docs/workflows.md +33 -48
  512. package/examples/extensions/preset.ts +2 -2
  513. package/examples/extensions/subagent/README.md +2 -2
  514. package/examples/extensions/subagent/index.ts +1 -2
  515. package/examples/extensions/subagent/schemas.ts +4 -1
  516. package/examples/sdk/12-full-control.ts +1 -1
  517. package/npm-shrinkwrap.json +48 -51
  518. package/package.json +7 -7
  519. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-behavior.ts +0 -75
  520. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-component.ts +0 -202
  521. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-edit.ts +0 -97
  522. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-editor.ts +0 -160
  523. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-frame.ts +0 -72
  524. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-modes.ts +0 -161
  525. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-selectors.ts +0 -203
  526. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-selectors.ts +0 -234
  527. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-state.ts +0 -103
  528. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-types.ts +0 -29
  529. package/dist/builtin/subagents/src/runs/foreground/chain-clarify.ts +0 -9
  530. package/dist/builtin/subagents/src/runs/foreground/chain-execution-clarify.ts +0 -117
@@ -0,0 +1,98 @@
1
+ import type { McpExtensionState } from "./state.ts";
2
+ import { getMissingConfiguredDirectToolServers } from "./direct-tools.ts";
3
+ import { loadMetadataCache } from "./metadata-cache.ts";
4
+ import { buildToolMetadata } from "./tool-metadata.ts";
5
+ import { parallelLimit } from "./utils.ts";
6
+ import { logger } from "./logger.ts";
7
+ import { updateMetadataCache, updateStatusBar } from "./init.ts";
8
+
9
+ export interface McpStartupWarmupOptions {
10
+ shouldContinue?: () => boolean;
11
+ onDirectToolsChanged?: () => void | Promise<void>;
12
+ onSettled?: () => void;
13
+ }
14
+
15
+ export interface McpStartupWarmupHandle {
16
+ readonly promise: Promise<void>;
17
+ cancel(): void;
18
+ }
19
+
20
+ function deferToMacrotask(): Promise<void> {
21
+ return new Promise((resolve) => setImmediate(resolve));
22
+ }
23
+
24
+ export function scheduleMcpStartupWarmup(
25
+ state: McpExtensionState,
26
+ options: McpStartupWarmupOptions = {},
27
+ ): McpStartupWarmupHandle {
28
+ let cancelled = false;
29
+ const shouldContinue = (): boolean => !cancelled && (options.shouldContinue?.() ?? true);
30
+
31
+ const promise = (async () => {
32
+ await deferToMacrotask();
33
+ if (!shouldContinue()) return;
34
+
35
+ const envDirect = process.env.MCP_DIRECT_TOOLS;
36
+ if (envDirect === "__none__") return;
37
+
38
+ const envDirectTools = envDirect?.split(",").map((item) => item.trim()).filter(Boolean);
39
+ const missingCacheServers = getMissingConfiguredDirectToolServers(state.config, loadMetadataCache(), envDirectTools)
40
+ .filter((name) => state.manager.getConnection(name)?.status !== "connected");
41
+ if (missingCacheServers.length === 0) return;
42
+
43
+ const prefix = state.config.settings?.toolPrefix ?? "server";
44
+ const results = await parallelLimit(missingCacheServers, 10, async (name) => {
45
+ if (!shouldContinue()) return { name, ok: false };
46
+ const definition = state.config.mcpServers[name];
47
+ if (!definition) return { name, ok: false };
48
+ try {
49
+ const connection = await state.manager.connect(name, definition);
50
+ if (!shouldContinue()) {
51
+ if (state.manager.getConnection(name) === connection) {
52
+ await state.manager.close(name);
53
+ }
54
+ return { name, ok: false };
55
+ }
56
+ if (connection.status === "needs-auth") return { name, ok: false };
57
+ const { metadata } = buildToolMetadata(connection.tools, connection.resources, definition, name, prefix);
58
+ state.toolMetadata.set(name, metadata);
59
+ updateMetadataCache(state, name);
60
+ return { name, ok: true };
61
+ } catch (error) {
62
+ const message = error instanceof Error ? error.message : String(error);
63
+ logger.debug(`MCP: background direct-tools warmup failed for ${name}: ${message}`);
64
+ return { name, ok: false };
65
+ }
66
+ });
67
+
68
+ if (!shouldContinue()) return;
69
+ const warmed = results.filter((result) => result.ok).map((result) => result.name);
70
+ if (warmed.length === 0) return;
71
+ updateStatusBar(state);
72
+ if (!shouldContinue()) return;
73
+ await options.onDirectToolsChanged?.();
74
+ if (!shouldContinue()) return;
75
+ if (state.ui) {
76
+ state.ui.notify(`MCP: direct tools for ${warmed.join(", ")} are now available`, "info");
77
+ }
78
+ })()
79
+ .catch((error) => {
80
+ const message = error instanceof Error ? error.message : String(error);
81
+ logger.debug(`MCP: background startup warmup failed: ${message}`);
82
+ })
83
+ .finally(() => {
84
+ try {
85
+ options.onSettled?.();
86
+ } catch (error) {
87
+ const message = error instanceof Error ? error.message : String(error);
88
+ logger.debug(`MCP: background startup warmup settled callback failed: ${message}`);
89
+ }
90
+ });
91
+
92
+ return {
93
+ promise,
94
+ cancel() {
95
+ cancelled = true;
96
+ },
97
+ };
98
+ }
@@ -0,0 +1,12 @@
1
+ export type AssertMcpStateLease = () => void;
2
+
3
+ export class McpStateChangedError extends Error {
4
+ constructor() {
5
+ super("MCP session changed during execution");
6
+ this.name = "McpStateChangedError";
7
+ }
8
+ }
9
+
10
+ export function assertMcpStateLease(assertActive?: AssertMcpStateLease): void {
11
+ assertActive?.();
12
+ }
@@ -1,7 +1,7 @@
1
- import type { AgentToolResult, ToolRenderResultOptions } from "@bastani/atomic";
1
+ import { keyText, type AgentToolResult, type ToolRenderResultOptions } from "@bastani/atomic";
2
2
  import { Text } from "@earendil-works/pi-tui";
3
3
 
4
- type McpToolResultDetails = Record<string, unknown> & { error?: unknown };
4
+ export type McpToolResultDetails = Record<string, unknown> & { error?: unknown };
5
5
  type McpToolContentBlock = AgentToolResult<McpToolResultDetails>["content"][number];
6
6
 
7
7
  interface RenderTheme {
@@ -58,7 +58,7 @@ export function renderMcpToolResult(
58
58
  .map((line) => line === "…" ? theme.fg("muted", line) : theme.fg("toolOutput", line))
59
59
  .join("\n");
60
60
  const hint = display.truncated && !options.expanded
61
- ? `\n${theme.fg("muted", "(CTRL+O Expand)")}`
61
+ ? `\n${theme.fg("muted", `(${keyText("app.tools.expand")} Expand)`)}`
62
62
  : "";
63
63
 
64
64
  return new Text(`${output}${hint}`, 0, 0);
@@ -7,12 +7,12 @@ import type {
7
7
  CallToolRequest,
8
8
  CallToolResult,
9
9
  } from "@modelcontextprotocol/sdk/types.js";
10
- import type { ConsentManager } from "./consent-manager.ts";
11
- import { ServerError, wrapError } from "./errors.ts";
12
- import { buildHostHtmlTemplate, buildCspMetaContent, applyCspMeta } from "./host-html-template.ts";
13
- import { logger } from "./logger.ts";
14
- import { parseBody, sendJson, validateTokenBody, validateTokenQuery } from "./ui-server-http.ts";
15
- import type { McpServerManager } from "./server-manager.ts";
10
+ import type { ConsentManager } from "./consent-manager.js";
11
+ import { ServerError, wrapError } from "./errors.js";
12
+ import { buildHostHtmlTemplate, buildCspMetaContent, applyCspMeta } from "./host-html-template.js";
13
+ import { logger } from "./logger.js";
14
+ import { parseBody, sendJson, validateTokenBody, validateTokenQuery } from "./ui-server-http.js";
15
+ import type { McpServerManager } from "./server-manager.js";
16
16
  import {
17
17
  extractUiPromptText,
18
18
  getVisualizationStreamEnvelope,
@@ -26,7 +26,7 @@ import {
26
26
  type UiResourceContent,
27
27
  type UiSessionMessages,
28
28
  type UiStreamSummary,
29
- } from "./types.ts";
29
+ } from "./types.js";
30
30
 
31
31
  const ABANDONED_GRACE_MS = 60_000;
32
32
  const WATCHDOG_INTERVAL_MS = 5_000;
@@ -58,7 +58,7 @@ export interface UiServerHandle {
58
58
  sendToolInput: (args: Record<string, unknown>) => void;
59
59
  sendToolResult: (result: CallToolResult) => void;
60
60
  sendResultPatch: (result: CallToolResult) => void;
61
- sendToolCancelled: (reason: string) => void;
61
+ sendToolCancelled: (reason: string) => void | Promise<void>;
62
62
  sendHostContext: (context: UiHostContext) => void;
63
63
  /** Get accumulated messages from this session */
64
64
  getSessionMessages: () => UiSessionMessages;
@@ -1,6 +1,6 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
3
- import type { McpExtensionState } from "./state.ts";
3
+ import type { McpExtensionState } from "./state.js";
4
4
  import {
5
5
  extractUiPromptText,
6
6
  UI_STREAM_HOST_CONTEXT_KEY,
@@ -10,11 +10,11 @@ import {
10
10
  type UiMessageParams,
11
11
  type UiModelContextParams,
12
12
  type UiStreamMode,
13
- } from "./types.ts";
14
- import { logger } from "./logger.ts";
15
- import { startUiServer, type UiServerHandle } from "./ui-server.ts";
16
- import { isGlimpseAvailable, openGlimpseWindow } from "./glimpse-ui.ts";
17
- import { escapeHtmlAttribute } from "./host-html-template.ts";
13
+ } from "./types.js";
14
+ import { logger } from "./logger.js";
15
+ import { startUiServer, type UiServerHandle } from "./ui-server.js";
16
+ import { isGlimpseAvailable, openGlimpseWindow } from "./glimpse-ui.js";
17
+ import { escapeHtmlAttribute } from "./host-html-template.js";
18
18
 
19
19
  let activeGlimpseWindow: { close(): void } | null = null;
20
20
 
@@ -38,7 +38,7 @@ export interface UiSessionRuntime {
38
38
  isActive: () => boolean;
39
39
  sendToolResult: (result: CallToolResult) => void;
40
40
  sendResultPatch: (result: CallToolResult) => void;
41
- sendToolCancelled: (reason: string) => void;
41
+ sendToolCancelled: (reason: string) => void | Promise<void>;
42
42
  close: (reason?: string) => void;
43
43
  }
44
44
 
@@ -153,16 +153,7 @@ export async function maybeStartUiSession(
153
153
  sendToolCancelled: (reason: string) => {
154
154
  if (!active || state.uiServer !== existingHandle) return;
155
155
  nextStreamSequence += 1;
156
- existingHandle.sendToolResult(
157
- withStreamEnvelope(
158
- {
159
- isError: true,
160
- content: [{ type: "text", text: reason }],
161
- },
162
- streamId,
163
- nextStreamSequence,
164
- ),
165
- );
156
+ return existingHandle.sendToolCancelled(reason);
166
157
  },
167
158
  close: () => {
168
159
  active = false;
@@ -367,7 +358,7 @@ export async function maybeStartUiSession(
367
358
  },
368
359
  sendToolCancelled: (reason: string) => {
369
360
  if (!active || state.uiServer !== handle) return;
370
- handle.sendToolCancelled(reason);
361
+ return handle.sendToolCancelled(reason);
371
362
  },
372
363
  close: (reason?: string) => {
373
364
  active = false;
@@ -2,6 +2,84 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.9.5] - 2026-07-11
6
+
7
+ ### Added
8
+
9
+ - Added model-capability-aware `max` reasoning suffix support to subagent model/fallback parsing and child CLI forwarding ([#1703](https://github.com/bastani-inc/atomic/issues/1703)).
10
+ - Added root single-agent `progress` calls so `progress: true` maintains a run-scoped `progress.md` under isolated artifact storage for foreground, background, and revived runs without overwriting a child-working-directory file; inherited defaults are suppressed for read-only tasks, and artifacts-disabled foreground storage is removed after the child exits.
11
+
12
+ ### Changed
13
+
14
+ - Aligned the subagents extension peer dependencies with upstream Pi `^0.80.5` runtime packages as part of the consolidated dependency refresh.
15
+ - Aligned the subagents extension peer dependencies with upstream Pi `^0.80.6` runtime packages while preserving Atomic child-session and orchestration behavior ([#1703](https://github.com/bastani-inc/atomic/issues/1703)).
16
+ - Made subagent routing selective and complementary with workflows: bounded single/chain/parallel delegation remains parent-controlled, async is chosen only when useful, conceptual debugging may stay inline, and the debugger is reserved for actual failures needing reproduction and root-cause work.
17
+ - Increased the top-level parallel subagent task limit from 8 to 50, including repeated tasks expanded through `count`; `parallel.maxTasks` can still configure a lower limit while concurrency remains independently configurable.
18
+ - Improved subagent extension startup by deferring old-run cleanup scans, result watcher startup, and existing-result priming to macrotasks while preserving immediate `subagent` tool and slash-command registration.
19
+ - Changed the Claude Fable 5 reasoning level from `xhigh` to `high` in the builtin `debugger` agent, covering the `anthropic/claude-fable-5` primary and its OpenRouter mirror in the fallback chain.
20
+ - Changed the Claude Opus 4.8 reasoning level from `xhigh` to `high` in the builtin `debugger` agent's fallback chain (`github-copilot/claude-opus-4.8 (1m)`, `anthropic/claude-opus-4-8`, and the OpenRouter mirror); Opus 4.8 entries at other levels in other agents are unchanged.
21
+ - Refreshed the builtin debugger agent's July 2026 frontier model roster: it now leads with Claude Fable 5 `:xhigh`, keeps GPT-5.5 `:xhigh`, Opus 4.8 long-context `:xhigh`, and GLM-5.2 fallbacks, and retains only the valid OpenRouter Fugu Ultra mirror rather than unsupported direct Sakana model IDs.
22
+
23
+ ### Fixed
24
+
25
+ - Fixed Bun source-checkout subagent launches to reuse the current TypeScript Atomic CLI entrypoint instead of falling back to an unrelated `atomic` executable on `PATH`, while preserving JavaScript, compiled-runtime, and cross-platform spawn behavior.
26
+ - Fixed direct async subagent completions disappearing after an in-process workflow stage loaded or shut down the extension. Runtime cleanup, watchers, event subscriptions, completion notification handlers and dedupe state, slash live snapshots, visible-control deduplication, fanout-child nested-control listeners/timers, and async widget animation state are now owned per `ExtensionAPI`, so concurrent parent/stage sessions cannot tear down, suppress, clear, or replace one another's parent-owned state even when they share a forwarded host UI and session identity. Native result watching also coalesces directory activity into a short rescan, so macOS/Bun atomic writes are consumed even when `fs.watch` reports only a hidden temporary rename rather than the final JSON filename. Same-API reloads remain deduplicated, partial registration failures clean up acquired resources, stale shutdown callbacks cannot stop a newer registration, and duplicate watcher activity still consumes a parent result file with exactly one `subagent-notify`.
27
+ - Fixed async event persistence so cumulative `message_update.message` and `assistantMessageEvent.partial` snapshots are not archived per delta. Compact incremental deltas plus raw child stdout/stderr share one buffered byte budget and truncation marker, while finalized messages and later lifecycle/control/terminal records remain available; asynchronous stream-open failures are non-fatal, concurrent closes await the same drain, and writer reacquisition uses a bounded identity/fingerprint cache to hydrate append-only suffixes while detecting same-inode rewrites, truncation/regrowth, replacement, and externally appended markers without rescanning unchanged journals.
28
+ - Added root single-agent `reads` contract support with local validation, shared foreground/background instruction behavior, and relative-path resolution against the effective child working directory.
29
+ - Fixed stale-run repair to stage the exact public result beside its destination, commit terminal status, and atomically consume the hidden stage when publishing; interrupted renames resume without leaving a replayable stage beside a delivered result. The result watcher defers modern `asyncDir` results until status is terminal, canonicalizes equivalent aliases by `runId`, quarantines aliases whose user-visible payload or target conflicts with that canonical identity, revalidates session ownership after delivery waits, and commits only after idempotent Intercom confirmation plus synchronous local compatibility acceptance. Nonterminal status checks use capped exponential rechecks without losing eventual late-terminal recovery; delivery retries preserve successful phases across watcher replacements and, after a finite no-progress budget, retain the result under a collision-resistant name in `.undelivered` instead of retrying forever, overwriting prior evidence, or deleting the payload.
30
+ - Clarified async launch acknowledgements and TUI rendering as `launched` with `completion pending`, while keeping the completed launch tool call distinct from the detached child's running state.
31
+ - Fixed foreground blocking Intercom asks and supervisor decisions to detach only the exact delivered child, tolerate broker/tool-start ordering, remain resumable, recover the child's eventual result without treating the detached placeholder as success or starting model fallback, and expose the retained detached-to-terminal result through public status lookup with consistent prefix disambiguation ([#1727](https://github.com/bastani-inc/atomic/issues/1727)).
32
+ - Automatically register enabled foreground and background child sessions with Intercom before agent work begins, while management-only list/status/interrupt actions remain broker-free and issue #1727 targeted detach/resume behavior is preserved.
33
+ - Fixed background async result watching on Windows to use Atomic's safe watcher path strategy and fall back to polling when native `fs.watch` would receive an unsafe or non-canonical watcher path.
34
+ - Fixed async/background subagent status visibility while the fullscreen workflow graph is active by publishing the live async summary through the shared status surface in addition to the below-editor widget.
35
+ - Fixed foreground and background subagent startup diagnostics so missing or invalid child `cwd` values are reported as working-directory problems before spawn, while runtime spawn failures include the attempted command and cwd instead of ambiguous `ENOENT` output.
36
+ - Updated async/background subagent status widgets so running job, parallel child-agent, chain-step, and nested child rows reuse the same foreground pulsing-dot glyph treatment instead of braille spinner glyphs, while preserving counts, metadata, live-detail hints, and output paths.
37
+
38
+ ### Removed
39
+
40
+ - Removed the unreachable subagent launch preview/editor TUI and its internal execution plumbing; supported launches now dispatch directly without waiting for terminal input.
41
+
42
+ ## [0.9.5-alpha.10] - 2026-07-11
43
+
44
+ ### Added
45
+
46
+ - Added model-capability-aware `max` reasoning suffix support to subagent model/fallback parsing and child CLI forwarding ([#1703](https://github.com/bastani-inc/atomic/issues/1703)).
47
+ - Added root single-agent `progress` calls so `progress: true` maintains a run-scoped `progress.md` under isolated artifact storage for foreground, background, and revived runs without overwriting a child-working-directory file; inherited defaults are suppressed for read-only tasks, and artifacts-disabled foreground storage is removed after the child exits.
48
+
49
+ ### Changed
50
+
51
+ - Aligned the subagents extension peer dependencies with upstream Pi `^0.80.5` runtime packages as part of the consolidated dependency refresh.
52
+ - Aligned the subagents extension peer dependencies with upstream Pi `^0.80.6` runtime packages while preserving Atomic child-session and orchestration behavior ([#1703](https://github.com/bastani-inc/atomic/issues/1703)).
53
+ - Made subagent routing selective and complementary with workflows: bounded single/chain/parallel delegation remains parent-controlled, async is chosen only when useful, conceptual debugging may stay inline, and the debugger is reserved for actual failures needing reproduction and root-cause work.
54
+ - Increased the top-level parallel subagent task limit from 8 to 50, including repeated tasks expanded through `count`; `parallel.maxTasks` can still configure a lower limit while concurrency remains independently configurable.
55
+
56
+ ### Removed
57
+
58
+ - Removed the unreachable subagent launch preview/editor TUI and its internal execution plumbing; supported launches now dispatch directly without waiting for terminal input.
59
+
60
+ ### Fixed
61
+
62
+ - Fixed Bun source-checkout subagent launches to reuse the current TypeScript Atomic CLI entrypoint instead of falling back to an unrelated `atomic` executable on `PATH`, while preserving JavaScript, compiled-runtime, and cross-platform spawn behavior.
63
+ - Fixed direct async subagent completions disappearing after an in-process workflow stage loaded or shut down the extension. Runtime cleanup, watchers, event subscriptions, completion notification handlers and dedupe state, slash live snapshots, visible-control deduplication, fanout-child nested-control listeners/timers, and async widget animation state are now owned per `ExtensionAPI`, so concurrent parent/stage sessions cannot tear down, suppress, clear, or replace one another's parent-owned state even when they share a forwarded host UI and session identity. Native result watching also coalesces directory activity into a short rescan, so macOS/Bun atomic writes are consumed even when `fs.watch` reports only a hidden temporary rename rather than the final JSON filename. Same-API reloads remain deduplicated, partial registration failures clean up acquired resources, stale shutdown callbacks cannot stop a newer registration, and duplicate watcher activity still consumes a parent result file with exactly one `subagent-notify`.
64
+ - Fixed async event persistence so cumulative `message_update.message` and `assistantMessageEvent.partial` snapshots are not archived per delta. Compact incremental deltas plus raw child stdout/stderr share one buffered byte budget and truncation marker, while finalized messages and later lifecycle/control/terminal records remain available; asynchronous stream-open failures are non-fatal, concurrent closes await the same drain, and writer reacquisition uses a bounded identity/fingerprint cache to hydrate append-only suffixes while detecting same-inode rewrites, truncation/regrowth, replacement, and externally appended markers without rescanning unchanged journals.
65
+ - Added root single-agent `reads` contract support with local validation, shared foreground/background instruction behavior, and relative-path resolution against the effective child working directory.
66
+ - Fixed stale-run repair to stage the exact public result beside its destination, commit terminal status, and atomically consume the hidden stage when publishing; interrupted renames resume without leaving a replayable stage beside a delivered result. The result watcher defers modern `asyncDir` results until status is terminal, canonicalizes equivalent aliases by `runId`, quarantines aliases whose user-visible payload or target conflicts with that canonical identity, revalidates session ownership after delivery waits, and commits only after idempotent Intercom confirmation plus synchronous local compatibility acceptance. Nonterminal status checks use capped exponential rechecks without losing eventual late-terminal recovery; delivery retries preserve successful phases across watcher replacements and, after a finite no-progress budget, retain the result under a collision-resistant name in `.undelivered` instead of retrying forever, overwriting prior evidence, or deleting the payload.
67
+ - Clarified async launch acknowledgements and TUI rendering as `launched` with `completion pending`, while keeping the completed launch tool call distinct from the detached child's running state.
68
+ - Fixed foreground blocking Intercom asks and supervisor decisions to detach only the exact delivered child, tolerate broker/tool-start ordering, remain resumable, recover the child's eventual result without treating the detached placeholder as success or starting model fallback, and expose the retained detached-to-terminal result through public status lookup with consistent prefix disambiguation ([#1727](https://github.com/bastani-inc/atomic/issues/1727)).
69
+ - Automatically register enabled foreground and background child sessions with Intercom before agent work begins, while management-only list/status/interrupt actions remain broker-free and issue #1727 targeted detach/resume behavior is preserved.
70
+
71
+ ## [0.9.5-alpha.9] - 2026-07-09
72
+
73
+ ### Changed
74
+
75
+ - Improved subagent extension startup by deferring old-run cleanup scans, result watcher startup, and existing-result priming to macrotasks while preserving immediate `subagent` tool and slash-command registration.
76
+
77
+ ### Fixed
78
+
79
+ - Fixed background async result watching on Windows to use Atomic's safe watcher path strategy and fall back to polling when native `fs.watch` would receive an unsafe or non-canonical watcher path.
80
+ - Fixed async/background subagent status visibility while the fullscreen workflow graph is active by publishing the live async summary through the shared status surface in addition to the below-editor widget.
81
+ - Fixed foreground and background subagent startup diagnostics so missing or invalid child `cwd` values are reported as working-directory problems before spawn, while runtime spawn failures include the attempted command and cwd instead of ambiguous `ENOENT` output.
82
+
5
83
  ## [0.9.5-alpha.8] - 2026-07-08
6
84
 
7
85
  ### Fixed
@@ -6,6 +6,8 @@
6
6
 
7
7
  `@bastani/subagents` lets Atomic delegate work to focused child agents. It is Atomic's bundled adaptation of upstream `pi-subagents`; use it for code review, scouting, implementation, parallel audits, saved workflows, background jobs, and anything else that benefits from a second or third set of model eyes.
8
8
 
9
+ Use subagents selectively for bounded specialist delegation while the parent remains in control: one focused agent, a sequential chain, or parallel independent tasks. Keep interactive, exploratory, conceptual, and conversation-led work inline. Multiple steps, files, tests, validation, or parallelism alone do not require a workflow. For a clearly delegated, well-defined autonomous job that is likely long-running/background-oriented or materially needs durable stages, checkpoints, resumability, HIL, gates, retries, or bounded loops, use an appropriate workflow instead. Choose async subagents only when background execution is genuinely useful; foreground is appropriate when the parent needs the result before proceeding.
10
+
9
11
  https://github.com/user-attachments/assets/702554ec-faaf-4635-80aa-fb5d6e292fd1
10
12
 
11
13
  ## Installation
@@ -151,9 +153,9 @@ Use `~/.atomic/agent/settings.json` for a user override or `.atomic/settings.jso
151
153
 
152
154
  Foreground runs stream progress in the conversation while they run.
153
155
 
154
- Background runs keep working after control returns to you. Inspect active runs with `subagent({ action: "status" })`, or a specific run with `subagent({ action: "status", id: "..." })`.
156
+ Background runs keep working after control returns to you. The launch acknowledgement says `launched` and `completion pending`: the `subagent` launch tool call itself is finished, while the detached child is not. Inspect active runs with `subagent({ action: "status" })`, or a specific run with `subagent({ action: "status", id: "..." })`.
155
157
 
156
- They also show a compact async widget and send completion notifications. Parallel background runs show per-agent progress instead of fake chain steps. Chains with parallel groups keep their grouped shape in progress and results, so failed or paused agents stay visible next to completed ones.
158
+ They also show a compact async widget with the same launch/pending distinction and send completion notifications. Parallel background runs show per-agent progress instead of fake chain steps. Chains with parallel groups keep their grouped shape in progress and results, so failed or paused agents stay visible next to completed ones.
157
159
 
158
160
  You can also ask naturally:
159
161
 
@@ -227,7 +229,10 @@ The child can use one dedicated coordination tool:
227
229
 
228
230
  - `contact_supervisor`: the child contacts the parent/supervisor session that delegated the task. Use `reason: "need_decision"` for blocking decisions or clarification, and `reason: "progress_update"` for short non-blocking updates when a discovery changes the plan. Do not ask for clarification when the only conflict is review-only/no-edit versus progress-writing or artifact-writing instructions; no-edit wins.
229
231
 
230
- Child-side routine completion handoffs are still not expected. With the intercom bridge active, parent-side `pi-subagents` sends grouped completion results through `pi-intercom`: one grouped message per foreground parent `subagent` run and one per completed async result file. Acknowledged foreground delivery returns a compact receipt with artifact/session paths; if unacknowledged, the normal full output is preserved. Grouped messages include child intercom targets and full child summaries.
232
+ Child-side routine completion handoffs are still not expected. With the intercom bridge active, parent-side `pi-subagents` sends grouped completion results through `pi-intercom`: one grouped message per foreground parent `subagent` run and one per completed async result file. Intercom-confirmed foreground delivery returns a compact receipt with artifact/session paths; without that confirmation, the normal full output is preserved. Grouped messages include child intercom targets and full child summaries. The separate in-process completion event keeps its legacy synchronous semantics: emission is accepted unless a listener explicitly rejects it during the call, and no listener is not treated as an error.
233
+ When the companion is enabled and available, both foreground and background child sessions register with Intercom during session startup, before agent work can send or receive coordination messages. The interactive parent connects lazily, and a foreground launch waits for its broker/inbound-handler readiness before starting the child. Management-only `list`, `get`, `create`, `update`, `delete`, `status`, `interrupt`, and `doctor` actions do not launch a child and therefore do not force Intercom loading or broker startup; `resume` can relaunch or contact a child and retains readiness gating. If the optional companion cannot import, start its broker, or connect, subagent launch continues with diagnostics and a later call can retry.
234
+
235
+ For foreground runs, Intercom uses a targeted probe/reservation before delivery: only the exact live child can claim its message. Atomic then commits detach for that child and waits for its acknowledgement before placing claimed asks, sends, decisions, interviews, and progress updates in the parent's model-visible steering queue, so cancellation between phases cannot surface an orphaned request. Blocking calls remain alive for an exact threaded reply and then resume; fire-and-forget calls create no waiter. The retained child later replaces its detached status and artifacts with the real result. Cancellation/replacement invalidates stale handshakes, duplicate delivery cannot recommit, and background or unmatched messages retain queued-until-idle behavior.
231
236
 
232
237
  If a child appears stalled, needs-attention notices can show up in the parent session with useful next actions, such as checking `subagent({ action: "status" })`, interrupting the run, or nudging the child.
233
238
 
@@ -298,7 +303,7 @@ Append `[key=value,...]` to an agent name to override defaults for that step:
298
303
  |-----|---------|-------------|
299
304
  | `output` | `output=context.md` | Write results to a file. For `/chain` and `/parallel`, relative paths live under the chain directory; for `/run`, relative paths resolve against cwd. |
300
305
  | `outputMode` | `outputMode=file-only` | Return only a concise file reference for saved output instead of the full saved content. Requires `output`; default is `inline`. |
301
- | `reads` | `reads=a.md+b.md` | Read files before executing. `+` separates multiple paths. |
306
+ | `reads` | `reads=a.md+b.md` | Read files before executing. `+` separates multiple paths. `/run` forwards these through the same resolver as tool-based foreground and background launches, so relative paths use the effective child working directory. |
302
307
  | `model` | `model=anthropic/claude-sonnet-4` | Override model for this step. |
303
308
  | `skills` | `skills=planning+review` | Override injected skills. `+` separates multiple skills. |
304
309
  | `progress` | `progress` | Enable progress tracking. |
@@ -330,28 +335,15 @@ You can combine them in either order:
330
335
  /run reviewer "review this diff" --bg --fork
331
336
  ```
332
337
 
333
- Background runs are detached. If the parent agent has other independent work, it should keep working. If it has nothing useful to do until the background result arrives, it should end the turn instead of running sleep or status-polling loops. Pi will deliver the completion when the run finishes.
338
+ Background runs are detached. A successful acknowledgement explicitly means the run was launched and child completion is pending; it is a terminal result for the launch tool, not a claim that the child has finished. If the parent agent has other independent work, it should keep working. If it has nothing useful to do until the background result arrives, it should end the turn instead of running sleep or status-polling loops. Pi will deliver the completion when the run finishes.
334
339
 
335
340
  The `oracle` and `worker` builtins are designed for an explicit decision loop. A typical pattern is to ask `oracle` for diagnosis and a recommended execution prompt, then only run `worker` after the main agent approves that direction.
336
341
 
337
- ## Clarify and launch UI
338
-
339
- Chains open a clarify UI by default so you can preview and edit the workflow before it runs. Single and parallel tool calls can opt into the same flow with `clarify: true`; slash commands launch directly.
342
+ ## Non-interactive execution
340
343
 
341
- Common clarify keys:
344
+ Every supported subagent launch starts immediately without opening a preview/editor prompt or waiting for terminal input. This applies to single, parallel, chain, foreground, background, fanout, prompt-template, and human-entered `/run`, `/chain`, `/parallel`, and `/run-chain` execution. Gather any needed context and ask the user questions in the parent conversation before launching.
342
345
 
343
- - `Enter` runs in the foreground, or in the background if background is toggled on
344
- - `Escape` Cancel/Back
345
- - `↑↓` moves between steps or tasks
346
- - `e` edits the task/template
347
- - `m` selects a model
348
- - `t` selects thinking level
349
- - `s` selects skills
350
- - `b` toggles background execution
351
- - `w` edits output/write behavior where supported
352
- - `r` edits reads where supported
353
- - `p` toggles progress tracking where supported
354
- Picker screens use `↑↓`, `Enter`, `Escape`, and type-to-filter. The full-screen editor supports word wrapping, paste, `Escape` Save, and `CTRL+C` Discard.
346
+ The human slash commands remain on their separate parsing and event-bridge path, including background and fork flags.
355
347
 
356
348
  ## Agents and chains
357
349
 
@@ -654,7 +646,7 @@ If you are writing an agent that orchestrates subagents, the bundled skill helps
654
646
 
655
647
  ## Programmatic tool usage
656
648
 
657
- These are the parameters the LLM passes when it calls the `subagent` tool. Most users ask naturally or use slash commands instead.
649
+ These are the parameters the LLM passes when it calls the `subagent` tool. Most users ask naturally or use slash commands instead. All execution calls are non-interactive.
658
650
 
659
651
  ### Execution examples
660
652
 
@@ -665,8 +657,12 @@ These are the parameters the LLM passes when it calls the `subagent` tool. Most
665
657
  { agent: "scout", task: "investigate", output: false }
666
658
  { agent: "scout", task: "write a large report", output: "reports/scout.md", outputMode: "file-only" }
667
659
 
660
+ { agent: "scout", task: "review the design", cwd: "packages/api", reads: ["docs/design.md", "../shared.md"] }
668
661
  // Forked context
669
662
  { agent: "worker", task: "continue this thread", context: "fork" }
663
+ // Maintain a run-scoped progress.md under isolated artifact storage
664
+ { agent: "worker", task: "implement the approved fix", progress: true }
665
+
670
666
 
671
667
  // Parallel
672
668
  { tasks: [{ agent: "scout", task: "a" }, { agent: "reviewer", task: "b" }] }
@@ -796,6 +792,8 @@ Agent definitions are not loaded into context by default. Management actions let
796
792
  | `config` | object/string | - | Agent or chain config for create/update. |
797
793
  | `output` | `string \| false` | agent default | Override single-agent output file. |
798
794
  | `outputMode` | `"inline" \| "file-only"` | `inline` | Return saved output inline or as a concise saved-file reference. `file-only` requires an `output` path. |
795
+ | `reads` | `string[] \| false` | - | Single-agent files to read before execution, or `false` to disable. Relative paths resolve against the effective child `cwd`; absolute paths pass through. |
796
+ | `progress` | boolean | agent default | Enable or disable single-agent run-scoped `progress.md` tracking under isolated artifact storage. Omission inherits the agent default except for read-only tasks. This does not write `progress.md` into the child `cwd` and is independent of `includeProgress`; with `artifacts: false`, foreground storage is removed after the child exits. |
799
797
  | `skill` | `string \| string[] \| false` | agent default | Override skills or disable all. |
800
798
  | `model` | string | agent default | Override model. |
801
799
  | `tasks` | array | - | Top-level parallel tasks. Supports `agent`, `task`, `cwd`, `count`, `output`, `outputMode`, `reads`, `progress`, `skill`, and `model`. |
@@ -804,13 +802,12 @@ Agent definitions are not loaded into context by default. Management actions let
804
802
  | `chain` | array | - | Sequential, static parallel, and dynamic fanout chain steps. Steps and chain parallel tasks support `phase`, `label`, `as`, and `outputSchema` in addition to the usual execution fields. Dynamic fanout uses `expand`, one child `parallel` template, and `collect`. |
805
803
  | `context` | `fresh \| fork` | agent default or `fresh` | `fork` creates real branched sessions from the parent leaf. Packaged `planner`, `worker`, and `oracle` default to `fork`. |
806
804
  | `chainDir` | string | temp chain dir | Persistent directory for chain artifacts. |
807
- | `clarify` | boolean | true for chains | Show TUI preview/edit flow. |
808
805
  | `agentScope` | `user \| project \| both` | `both` | Agent discovery scope. Project wins on collisions. |
809
- | `async` | boolean | false | Background execution. For chains, `clarify: true` explicitly keeps the run foreground for the clarify UI. |
806
+ | `async` | boolean | false | Background execution. Programmatic calls start without prompting in either foreground or background mode. |
810
807
  | `cwd` | string | runtime cwd | Override working directory. |
811
808
  | `maxOutput` | object | 200KB, 5000 lines | Final output truncation limits. |
812
809
  | `artifacts` | boolean | true | Write debug artifacts. |
813
- | `includeProgress` | boolean | false | Include full progress in result. |
810
+ | `includeProgress` | boolean | false | Include detailed runtime progress telemetry in the final result. This does not create or maintain `progress.md`; use `progress` for that. |
814
811
  | `share` | boolean | false | Upload session export to GitHub Gist. |
815
812
  | `sessionDir` | string | derived | Override session log directory. |
816
813
 
@@ -881,7 +878,7 @@ Makes top-level calls use background execution when the request does not explici
881
878
  { "forceTopLevelAsync": true }
882
879
  ```
883
880
 
884
- Forces depth-0 single, parallel, and chain runs into background mode and bypasses clarify UI by forcing `clarify: false`. Nested calls keep their own inherited settings.
881
+ Forces depth-0 single, parallel, and chain runs into background mode. Calls remain non-interactive in both foreground and background mode; nested calls keep their own inherited settings.
885
882
 
886
883
  ### `parallel`
887
884
 
@@ -894,7 +891,7 @@ Forces depth-0 single, parallel, and chain runs into background mode and bypasse
894
891
  }
895
892
  ```
896
893
 
897
- `maxTasks` defaults to `8`; `concurrency` defaults to `4`. Per-call `concurrency` takes precedence.
894
+ `maxTasks` defaults to `50`; `concurrency` defaults to `4`. `maxTasks` can set a lower per-call task limit but cannot exceed the hard maximum of `50`. Per-call `concurrency` takes precedence.
898
895
 
899
896
  ### `defaultSessionDir`
900
897
 
@@ -986,7 +983,9 @@ Async runs write:
986
983
  subagent-log-<id>.md
987
984
  ```
988
985
 
989
- `status.json` powers the widget and `subagent({ action: "status" })` output. `events.jsonl` contains wrapper events plus child Pi JSON events annotated with run and step metadata. `output-<n>.log` is a live human-readable tail. Fallback information is persisted so background runs are debuggable after completion.
986
+ `status.json` powers the widget and `subagent({ action: "status" })` output. `events.jsonl` contains wrapper events plus bounded child telemetry annotated with run and step metadata: streaming deltas keep compact incremental metadata rather than cumulative partial-message snapshots, and raw child stdout/stderr consume the same byte budget. One truncation marker records exhaustion, while the full finalized `message_end` and later control/lifecycle/terminal events remain available. Writer reacquisition uses a bounded identity/fingerprint cache so unchanged or append-only journals avoid full rescans while same-inode rewrites, truncate/regrow cycles, replacements, and externally appended markers reset state correctly. `output-<n>.log` is a live human-readable tail. Fallback information is persisted so background runs are debuggable after completion.
987
+
988
+ The result watcher waits for modern run status to become terminal using capped exponential rechecks, so a late repaired status still delivers without a fixed-rate polling loop. Intercom confirmation and local synchronous acceptance are tracked as separate phases; a successful phase is not replayed when another phase retries or the watcher is replaced. Equivalent result aliases coalesce by canonical run identity, but aliases with different user-visible output or parent targets are retained under collision-resistant names in the non-scanned `<results>/.undelivered/` directory. The same directory retains a still-owned result after a finite no-progress retry budget, and Atomic logs the retained path instead of retrying forever, overwriting earlier evidence, or deleting the payload.
990
989
 
991
990
  ## Completion and output
992
991
 
@@ -1004,6 +1003,8 @@ For existing subagent integrations and saved definitions:
1004
1003
 
1005
1004
  Foreground runs show compact live progress for single, chain, and parallel modes: current tool, recent output, token counts, duration, activity freshness, current-tool duration, and chain graph metadata when available.
1006
1005
 
1006
+ File-based tracking and returned telemetry are separate. On a single-agent call, `progress: true` creates a run-scoped `progress.md` under isolated subagent artifact storage and asks the child to maintain it in foreground or background mode without writing `progress.md` into the child working directory. `progress: false` disables an agent's `defaultProgress`. `includeProgress: true` only adds detailed runtime progress data to the final foreground tool result; it does not enable the file.
1007
+
1007
1008
  Press `CTRL+O` to expand the full streaming view with complete output per step.
1008
1009
 
1009
1010
  Sequential chains show a flow line like `done scout → running planner`. Chains with parallel steps show per-step cards instead. Chain status uses `label` and `phase` metadata when present, while falling back to agent names for older chains.
@@ -1094,7 +1095,7 @@ The main runtime files are:
1094
1095
 
1095
1096
  ### Suffix-first reasoning levels
1096
1097
 
1097
- Reasoning levels are configured suffix-first using the `model_name:thinking_effort` syntax on `model` and each `fallbackModels` entry: `model: claude-sonnet-4:high` and `fallbackModels: claude-sonnet-4:medium, gpt-5:low, claude-haiku-4:off`. Canonical efforts are `off`, `minimal`, `low`, `medium`, `high`, and `xhigh`. The older `thinking` field is deprecated; it remains supported as a legacy default only when a model candidate has no suffix, and a suffix always wins.
1098
+ Reasoning levels are configured suffix-first using the `model_name:thinking_effort` syntax on `model` and each `fallbackModels` entry: `model: claude-sonnet-4:high` and `fallbackModels: claude-sonnet-4:medium, gpt-5:low, claude-haiku-4:off`. Canonical efforts are `off`, `minimal`, `low`, `medium`, `high`, `xhigh`, and `max`. `xhigh` and `max` are forwarded only when the selected model supports them. The older `thinking` field is deprecated; it remains supported as a legacy default only when a model candidate has no suffix, and a suffix always wins.
1098
1099
 
1099
1100
  Migrate legacy `thinking` frontmatter by folding the effort into `model` and `fallbackModels`:
1100
1101
 
@@ -8,8 +8,8 @@ description: |
8
8
  - Production-quality refinement of a working draft ("ugly but working CSV parser").
9
9
  - Code that has gotten messy after several iterations.
10
10
  tools: read, edit, write, search, find, ls, bash, todo
11
- model: openai-codex/gpt-5.5:medium
12
- fallbackModels: github-copilot/gpt-5.5:medium, openai/gpt-5.5:medium, anthropic/claude-fable-5:low, github-copilot/claude-opus-4.8 (1m):medium, anthropic/claude-opus-4-8:medium, zai/glm-5.2:high, zai-coding-cn/glm-5.2:high, openrouter/openai/gpt-5.5:medium, openrouter/anthropic/claude-fable-5:low, openrouter/anthropic/claude-opus-4-8:medium, openrouter/z-ai/glm-5.2:xhigh
11
+ model: openai-codex/gpt-5.6-sol:medium
12
+ fallbackModels: github-copilot/gpt-5.6-sol:medium, openai/gpt-5.6-sol:medium, openai-codex/gpt-5.5:medium, github-copilot/gpt-5.5:medium, openai/gpt-5.5:medium, anthropic/claude-fable-5:low, github-copilot/claude-opus-4.8 (1m):medium, anthropic/claude-opus-4-8:medium, cursor/gpt-5.6-sol:medium, cursor/gpt-5.5:medium, cursor/claude-fable-5:low, cursor/claude-opus-4-8-thinking:medium, cursor/grok-4.5, zai/glm-5.2:high, zai-coding-cn/glm-5.2:high, cursor/glm-5.2, openrouter/openai/gpt-5.6-sol:medium, openrouter/openai/gpt-5.5:medium, openrouter/anthropic/claude-fable-5:low, openrouter/anthropic/claude-opus-4-8:medium, openrouter/x-ai/grok-4.5, openrouter/z-ai/glm-5.2:xhigh
13
13
  skills: tdd, playwright-cli, tmux
14
14
  ---
15
15
 
@@ -2,8 +2,8 @@
2
2
  name: codebase-analyzer
3
3
  description: Analyzes codebase implementation details. Call the codebase-analyzer agent when you need to find detailed information about specific components.
4
4
  tools: read, search, find, ls, todo
5
- model: openai-codex/gpt-5.5:medium
6
- fallbackModels: github-copilot/gpt-5.5:medium, openai/gpt-5.5:medium, anthropic/claude-fable-5:low, github-copilot/claude-opus-4.8 (1m):medium, anthropic/claude-opus-4-8:medium, zai/glm-5.2:high, zai-coding-cn/glm-5.2:high, openrouter/openai/gpt-5.5:medium, openrouter/anthropic/claude-fable-5:low, openrouter/anthropic/claude-opus-4-8:medium, openrouter/z-ai/glm-5.2:xhigh
5
+ model: openai-codex/gpt-5.6-sol:medium
6
+ fallbackModels: github-copilot/gpt-5.6-sol:medium, openai/gpt-5.6-sol:medium, openai-codex/gpt-5.5:medium, github-copilot/gpt-5.5:medium, openai/gpt-5.5:medium, anthropic/claude-fable-5:low, github-copilot/claude-opus-4.8 (1m):medium, anthropic/claude-opus-4-8:medium, cursor/gpt-5.6-sol:medium, cursor/gpt-5.5:medium, cursor/claude-fable-5:low, cursor/claude-opus-4-8-thinking:medium, cursor/grok-4.5, zai/glm-5.2:high, zai-coding-cn/glm-5.2:high, cursor/glm-5.2, openrouter/openai/gpt-5.6-sol:medium, openrouter/openai/gpt-5.5:medium, openrouter/anthropic/claude-fable-5:low, openrouter/anthropic/claude-opus-4-8:medium, openrouter/x-ai/grok-4.5, openrouter/z-ai/glm-5.2:xhigh
7
7
  skills: tdd, playwright-cli, tmux
8
8
  ---
9
9
 
@@ -2,8 +2,8 @@
2
2
  name: codebase-locator
3
3
  description: Locates files, directories, and components relevant to a feature or task. Basically a "super search/find/ls tool."
4
4
  tools: read, search, find, ls
5
- model: openai-codex/gpt-5.5:low
6
- fallbackModels: github-copilot/gpt-5.5:low, openai/gpt-5.5:low, github-copilot/claude-opus-4.8 (1m):low, anthropic/claude-opus-4-8:low, zai/glm-5.2:high, zai-coding-cn/glm-5.2:high, openrouter/openai/gpt-5.5:low, openrouter/anthropic/claude-opus-4-8:low, openrouter/z-ai/glm-5.2:xhigh
5
+ model: openai-codex/gpt-5.6-terra:high
6
+ fallbackModels: github-copilot/gpt-5.6-terra:high, openai/gpt-5.6-terra:high, openai-codex/gpt-5.5:low, github-copilot/gpt-5.5:low, openai/gpt-5.5:low, github-copilot/claude-opus-4.8 (1m):low, anthropic/claude-opus-4-8:low, cursor/gpt-5.6-terra:high, cursor/gpt-5.5:low, cursor/claude-opus-4-8-thinking:low, cursor/grok-4.5, zai/glm-5.2:high, zai-coding-cn/glm-5.2:high, cursor/glm-5.2, openrouter/openai/gpt-5.6-terra:high, openrouter/openai/gpt-5.5:low, openrouter/anthropic/claude-opus-4-8:low, openrouter/x-ai/grok-4.5, openrouter/z-ai/glm-5.2:xhigh
7
7
  ---
8
8
 
9
9
  You are a specialist at finding WHERE code lives in a codebase. Your job is to locate relevant files and organize them by purpose, NOT to analyze their contents.
@@ -2,8 +2,8 @@
2
2
  name: codebase-online-researcher
3
3
  description: Online research for up-to-date documentation and library-source knowledge. Use when you need authoritative external information — official docs, ecosystem context, version-specific behavior, GitHub permalinks into open-source libraries, or video tutorials.
4
4
  tools: read, search, find, ls, bash, web_search, fetch_content, get_search_content, todo
5
- model: openai-codex/gpt-5.5:medium
6
- fallbackModels: github-copilot/gpt-5.5:medium, openai/gpt-5.5:medium, anthropic/claude-fable-5:low, github-copilot/claude-opus-4.8 (1m):medium, anthropic/claude-opus-4-8:medium, zai/glm-5.2:high, zai-coding-cn/glm-5.2:high, openrouter/openai/gpt-5.5:medium, openrouter/anthropic/claude-fable-5:low, openrouter/anthropic/claude-opus-4-8:medium, openrouter/z-ai/glm-5.2:xhigh
5
+ model: openai-codex/gpt-5.6-sol:medium
6
+ fallbackModels: github-copilot/gpt-5.6-sol:medium, openai/gpt-5.6-sol:medium, openai-codex/gpt-5.5:medium, github-copilot/gpt-5.5:medium, openai/gpt-5.5:medium, anthropic/claude-fable-5:low, github-copilot/claude-opus-4.8 (1m):medium, anthropic/claude-opus-4-8:medium, cursor/gpt-5.6-sol:medium, cursor/gpt-5.5:medium, cursor/claude-fable-5:low, cursor/claude-opus-4-8-thinking:medium, cursor/grok-4.5, zai/glm-5.2:high, zai-coding-cn/glm-5.2:high, cursor/glm-5.2, openrouter/openai/gpt-5.6-sol:medium, openrouter/openai/gpt-5.5:medium, openrouter/anthropic/claude-fable-5:low, openrouter/anthropic/claude-opus-4-8:medium, openrouter/x-ai/grok-4.5, openrouter/z-ai/glm-5.2:xhigh
7
7
  skills: playwright-cli
8
8
  ---
9
9
 
@@ -2,8 +2,8 @@
2
2
  name: codebase-pattern-finder
3
3
  description: Find similar implementations, usage examples, or existing patterns in the codebase that can be modeled after.
4
4
  tools: read, search, find, ls
5
- model: openai-codex/gpt-5.5:low
6
- fallbackModels: github-copilot/gpt-5.5:low, openai/gpt-5.5:low, github-copilot/claude-opus-4.8 (1m):low, anthropic/claude-opus-4-8:low, zai/glm-5.2:high, zai-coding-cn/glm-5.2:high, openrouter/openai/gpt-5.5:low, openrouter/anthropic/claude-opus-4-8:low, openrouter/z-ai/glm-5.2:xhigh
5
+ model: openai-codex/gpt-5.6-terra:high
6
+ fallbackModels: github-copilot/gpt-5.6-terra:high, openai/gpt-5.6-terra:high, openai-codex/gpt-5.5:low, github-copilot/gpt-5.5:low, openai/gpt-5.5:low, github-copilot/claude-opus-4.8 (1m):low, anthropic/claude-opus-4-8:low, cursor/gpt-5.6-terra:high, cursor/gpt-5.5:low, cursor/claude-opus-4-8-thinking:low, cursor/grok-4.5, zai/glm-5.2:high, zai-coding-cn/glm-5.2:high, cursor/glm-5.2, openrouter/openai/gpt-5.6-terra:high, openrouter/openai/gpt-5.5:low, openrouter/anthropic/claude-opus-4-8:low, openrouter/x-ai/grok-4.5, openrouter/z-ai/glm-5.2:xhigh
7
7
  ---
8
8
 
9
9
  You are a specialist at finding code patterns and examples in the codebase. Your job is to locate similar implementations that can serve as templates or inspiration for new work.
@@ -2,8 +2,8 @@
2
2
  name: codebase-research-analyzer
3
3
  description: Analyzes local research documents to extract high-value insights, decisions, and technical details while filtering out noise. Use this when you want to deep dive on a research topic or understand the rationale behind decisions.
4
4
  tools: read, search, find, ls, todo
5
- model: openai-codex/gpt-5.5:medium
6
- fallbackModels: github-copilot/gpt-5.5:medium, openai/gpt-5.5:medium, anthropic/claude-fable-5:low, github-copilot/claude-opus-4.8 (1m):medium, anthropic/claude-opus-4-8:medium, zai/glm-5.2:high, zai-coding-cn/glm-5.2:high, openrouter/openai/gpt-5.5:medium, openrouter/anthropic/claude-fable-5:low, openrouter/anthropic/claude-opus-4-8:medium, openrouter/z-ai/glm-5.2:xhigh
5
+ model: openai-codex/gpt-5.6-sol:medium
6
+ fallbackModels: github-copilot/gpt-5.6-sol:medium, openai/gpt-5.6-sol:medium, openai-codex/gpt-5.5:medium, github-copilot/gpt-5.5:medium, openai/gpt-5.5:medium, anthropic/claude-fable-5:low, github-copilot/claude-opus-4.8 (1m):medium, anthropic/claude-opus-4-8:medium, cursor/gpt-5.6-sol:medium, cursor/gpt-5.5:medium, cursor/claude-fable-5:low, cursor/claude-opus-4-8-thinking:medium, cursor/grok-4.5, zai/glm-5.2:high, zai-coding-cn/glm-5.2:high, cursor/glm-5.2, openrouter/openai/gpt-5.6-sol:medium, openrouter/openai/gpt-5.5:medium, openrouter/anthropic/claude-fable-5:low, openrouter/anthropic/claude-opus-4-8:medium, openrouter/x-ai/grok-4.5, openrouter/z-ai/glm-5.2:xhigh
7
7
  ---
8
8
 
9
9
  You are a specialist at extracting HIGH-VALUE insights from research documents. Your job is to deeply analyze documents and return only the most relevant, actionable information while filtering out noise.
@@ -2,8 +2,8 @@
2
2
  name: codebase-research-locator
3
3
  description: Discovers local research documents that are relevant to the current research task.
4
4
  tools: read, search, find, ls
5
- model: openai-codex/gpt-5.5:low
6
- fallbackModels: github-copilot/gpt-5.5:low, openai/gpt-5.5:low, github-copilot/claude-opus-4.8 (1m):low, anthropic/claude-opus-4-8:low, zai/glm-5.2:high, zai-coding-cn/glm-5.2:high, openrouter/openai/gpt-5.5:low, openrouter/anthropic/claude-opus-4-8:low, openrouter/z-ai/glm-5.2:xhigh
5
+ model: openai-codex/gpt-5.6-terra:high
6
+ fallbackModels: github-copilot/gpt-5.6-terra:high, openai/gpt-5.6-terra:high, openai-codex/gpt-5.5:low, github-copilot/gpt-5.5:low, openai/gpt-5.5:low, github-copilot/claude-opus-4.8 (1m):low, anthropic/claude-opus-4-8:low, cursor/gpt-5.6-terra:high, cursor/gpt-5.5:low, cursor/claude-opus-4-8-thinking:low, cursor/grok-4.5, zai/glm-5.2:high, zai-coding-cn/glm-5.2:high, cursor/glm-5.2, openrouter/openai/gpt-5.6-terra:high, openrouter/openai/gpt-5.5:low, openrouter/anthropic/claude-opus-4-8:low, openrouter/x-ai/grok-4.5, openrouter/z-ai/glm-5.2:xhigh
7
7
  ---
8
8
 
9
9
  You are a specialist at finding documents in the `research/` directory. Your job is to locate relevant research documents and categorize them, NOT to analyze their contents in depth.
@@ -2,8 +2,8 @@
2
2
  name: debugger
3
3
  description: Debug errors, test failures, and unexpected behavior. Use PROACTIVELY when encountering issues, analyzing stack traces, or investigating system problems.
4
4
  tools: read, search, find, ls, bash, web_search, fetch_content, get_search_content, intercom, contact_supervisor, todo
5
- model: anthropic/claude-fable-5:high
6
- fallbackModels: openai-codex/gpt-5.5:xhigh, github-copilot/gpt-5.5:xhigh, openai/gpt-5.5:xhigh, github-copilot/claude-opus-4.8 (1m):high, anthropic/claude-opus-4-8:high, zai/glm-5.2:xhigh, zai-coding-cn/glm-5.2:xhigh, openrouter/anthropic/claude-fable-5:high, openrouter/sakana/fugu-ultra:high, openrouter/openai/gpt-5.5:xhigh, openrouter/anthropic/claude-opus-4-8:high, openrouter/z-ai/glm-5.2:xhigh
5
+ model: openai-codex/gpt-5.6-sol:xhigh
6
+ fallbackModels: github-copilot/gpt-5.6-sol:xhigh, openai/gpt-5.6-sol:xhigh, anthropic/claude-fable-5:high, openai-codex/gpt-5.5:xhigh, github-copilot/gpt-5.5:xhigh, openai/gpt-5.5:xhigh, github-copilot/claude-opus-4.8 (1m):high, anthropic/claude-opus-4-8:high, cursor/gpt-5.6-sol:xhigh, cursor/gpt-5.5:high, cursor/claude-opus-4-8-thinking:high, cursor/grok-4.5, zai/glm-5.2:xhigh, zai-coding-cn/glm-5.2:xhigh, cursor/glm-5.2, openrouter/openai/gpt-5.6-sol:xhigh, openrouter/anthropic/claude-fable-5:high, openrouter/sakana/fugu-ultra:high, openrouter/openai/gpt-5.5:xhigh, openrouter/anthropic/claude-opus-4-8:high, openrouter/x-ai/grok-4.5, openrouter/z-ai/glm-5.2:xhigh
7
7
  skills: tdd, playwright-cli, tmux
8
8
  ---
9
9