@bastani/atomic 0.9.11-alpha.8 → 0.9.11

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 (1738) hide show
  1. package/CHANGELOG.md +209 -1
  2. package/README.md +1 -1
  3. package/dist/builtin/intercom/CHANGELOG.md +6 -0
  4. package/dist/builtin/intercom/package.json +3 -3
  5. package/dist/builtin/intercom/subagent-relay.ts +8 -5
  6. package/dist/builtin/mcp/CHANGELOG.md +16 -0
  7. package/dist/builtin/mcp/commands.ts +7 -3
  8. package/dist/builtin/mcp/package.json +6 -6
  9. package/dist/builtin/subagents/CHANGELOG.md +29 -0
  10. package/dist/builtin/subagents/agents/code-simplifier.md +2 -2
  11. package/dist/builtin/subagents/agents/codebase-analyzer.md +2 -2
  12. package/dist/builtin/subagents/agents/codebase-locator.md +2 -2
  13. package/dist/builtin/subagents/agents/codebase-online-researcher.md +2 -2
  14. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +2 -2
  15. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +2 -2
  16. package/dist/builtin/subagents/agents/codebase-research-locator.md +2 -2
  17. package/dist/builtin/subagents/agents/worker.md +2 -2
  18. package/dist/builtin/subagents/package.json +5 -5
  19. package/dist/builtin/subagents/src/agents/agent-discovery.ts +26 -15
  20. package/dist/builtin/subagents/src/agents/agent-loaders.ts +48 -34
  21. package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +80 -31
  22. package/dist/builtin/subagents/src/agents/agent-management.ts +194 -55
  23. package/dist/builtin/subagents/src/agents/agent-overrides.ts +85 -32
  24. package/dist/builtin/subagents/src/agents/agent-paths.ts +4 -1
  25. package/dist/builtin/subagents/src/agents/agent-selection.ts +1 -1
  26. package/dist/builtin/subagents/src/agents/agent-serializer.ts +1 -4
  27. package/dist/builtin/subagents/src/agents/agents.ts +9 -9
  28. package/dist/builtin/subagents/src/agents/chain-serializer.ts +9 -5
  29. package/dist/builtin/subagents/src/agents/identity.ts +12 -3
  30. package/dist/builtin/subagents/src/agents/skills-paths.ts +64 -24
  31. package/dist/builtin/subagents/src/agents/skills.ts +29 -26
  32. package/dist/builtin/subagents/src/extension/doctor.ts +31 -20
  33. package/dist/builtin/subagents/src/extension/fanout-child.ts +27 -12
  34. package/dist/builtin/subagents/src/extension/index.ts +119 -43
  35. package/dist/builtin/subagents/src/extension/notification-content.ts +14 -9
  36. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +0 -1
  37. package/dist/builtin/subagents/src/extension/schemas.ts +304 -177
  38. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +137 -73
  39. package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +49 -21
  40. package/dist/builtin/subagents/src/intercom/result-intercom.ts +76 -38
  41. package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +12 -6
  42. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +164 -57
  43. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +15 -18
  44. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +66 -27
  45. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +4 -14
  46. package/dist/builtin/subagents/src/runs/background/async-execution.ts +1 -1
  47. package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +86 -32
  48. package/dist/builtin/subagents/src/runs/background/async-resume.ts +93 -36
  49. package/dist/builtin/subagents/src/runs/background/async-status.ts +82 -27
  50. package/dist/builtin/subagents/src/runs/background/completion-claims.ts +12 -5
  51. package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +3 -1
  52. package/dist/builtin/subagents/src/runs/background/completion-notification.ts +3 -1
  53. package/dist/builtin/subagents/src/runs/background/notify.ts +56 -22
  54. package/dist/builtin/subagents/src/runs/background/parallel-groups.ts +28 -14
  55. package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +147 -79
  56. package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +20 -5
  57. package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +7 -2
  58. package/dist/builtin/subagents/src/runs/background/result-status.ts +11 -5
  59. package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +18 -5
  60. package/dist/builtin/subagents/src/runs/background/result-watcher.ts +104 -35
  61. package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +28 -7
  62. package/dist/builtin/subagents/src/runs/background/run-status.ts +120 -32
  63. package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +98 -39
  64. package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +185 -37
  65. package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +23 -9
  66. package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +6 -2
  67. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +34 -18
  68. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +175 -26
  69. package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +68 -23
  70. package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +200 -49
  71. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +81 -49
  72. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +33 -11
  73. package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +16 -6
  74. package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +2 -3
  75. package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +11 -8
  76. package/dist/builtin/subagents/src/runs/foreground/chain-execution-details.ts +5 -2
  77. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +113 -31
  78. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +64 -55
  79. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +103 -37
  80. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +97 -62
  81. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +22 -10
  82. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +9 -6
  83. package/dist/builtin/subagents/src/runs/foreground/detached-cleanup-barrier.ts +22 -22
  84. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +45 -40
  85. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +6 -5
  86. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +118 -43
  87. package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +17 -7
  88. package/dist/builtin/subagents/src/runs/foreground/execution-detach-route.ts +5 -3
  89. package/dist/builtin/subagents/src/runs/foreground/execution-intercom-detach.ts +39 -35
  90. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +81 -42
  91. package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +27 -21
  92. package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +2 -5
  93. package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +9 -4
  94. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +64 -27
  95. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +31 -18
  96. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +95 -62
  97. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +30 -9
  98. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +106 -96
  99. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +68 -37
  100. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +260 -84
  101. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +6 -1
  102. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +63 -40
  103. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +110 -59
  104. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +20 -3
  105. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +8 -6
  106. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +65 -47
  107. package/dist/builtin/subagents/src/runs/shared/chain-outputs.ts +37 -12
  108. package/dist/builtin/subagents/src/runs/shared/dynamic-fanout.ts +120 -34
  109. package/dist/builtin/subagents/src/runs/shared/final-drain.ts +12 -7
  110. package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +3 -2
  111. package/dist/builtin/subagents/src/runs/shared/long-running-guard.ts +8 -3
  112. package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +42 -19
  113. package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +8 -4
  114. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +103 -38
  115. package/dist/builtin/subagents/src/runs/shared/nested-events-control.ts +30 -20
  116. package/dist/builtin/subagents/src/runs/shared/nested-events-core.ts +45 -20
  117. package/dist/builtin/subagents/src/runs/shared/nested-events-projection.ts +57 -23
  118. package/dist/builtin/subagents/src/runs/shared/nested-events-registry.ts +77 -29
  119. package/dist/builtin/subagents/src/runs/shared/nested-events-sanitize.ts +99 -42
  120. package/dist/builtin/subagents/src/runs/shared/nested-events.ts +32 -26
  121. package/dist/builtin/subagents/src/runs/shared/nested-path.ts +22 -17
  122. package/dist/builtin/subagents/src/runs/shared/nested-render.ts +31 -10
  123. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +9 -8
  124. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +54 -30
  125. package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +17 -13
  126. package/dist/builtin/subagents/src/runs/shared/run-history.ts +13 -6
  127. package/dist/builtin/subagents/src/runs/shared/single-output.ts +11 -6
  128. package/dist/builtin/subagents/src/runs/shared/spawn-env.ts +21 -0
  129. package/dist/builtin/subagents/src/runs/shared/structured-output.ts +33 -19
  130. package/dist/builtin/subagents/src/runs/shared/subagent-control.ts +59 -48
  131. package/dist/builtin/subagents/src/runs/shared/subagent-prompt-runtime.ts +18 -11
  132. package/dist/builtin/subagents/src/runs/shared/workflow-graph.ts +41 -11
  133. package/dist/builtin/subagents/src/runs/shared/worktree-post-create.ts +46 -10
  134. package/dist/builtin/subagents/src/runs/shared/worktree-root.ts +21 -5
  135. package/dist/builtin/subagents/src/runs/shared/worktree.ts +89 -34
  136. package/dist/builtin/subagents/src/shared/artifacts.ts +137 -7
  137. package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +49 -13
  138. package/dist/builtin/subagents/src/shared/fast-mode.ts +13 -6
  139. package/dist/builtin/subagents/src/shared/fork-context.ts +7 -4
  140. package/dist/builtin/subagents/src/shared/formatters.ts +14 -9
  141. package/dist/builtin/subagents/src/shared/jsonl-writer.ts +2 -1
  142. package/dist/builtin/subagents/src/shared/model-info.ts +10 -3
  143. package/dist/builtin/subagents/src/shared/post-exit-stdio-guard.ts +7 -6
  144. package/dist/builtin/subagents/src/shared/session-tokens.ts +2 -1
  145. package/dist/builtin/subagents/src/shared/settings.ts +39 -43
  146. package/dist/builtin/subagents/src/shared/status-format.ts +10 -2
  147. package/dist/builtin/subagents/src/shared/types-async.ts +22 -19
  148. package/dist/builtin/subagents/src/shared/types-config.ts +1 -1
  149. package/dist/builtin/subagents/src/shared/types-depth.ts +23 -11
  150. package/dist/builtin/subagents/src/shared/types-results.ts +49 -6
  151. package/dist/builtin/subagents/src/shared/types-runtime.ts +16 -17
  152. package/dist/builtin/subagents/src/shared/types.ts +2 -2
  153. package/dist/builtin/subagents/src/shared/utils.ts +34 -20
  154. package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +44 -47
  155. package/dist/builtin/subagents/src/slash/saved-chain-mapping.ts +5 -7
  156. package/dist/builtin/subagents/src/slash/slash-bridge.ts +3 -3
  157. package/dist/builtin/subagents/src/slash/slash-commands.ts +78 -52
  158. package/dist/builtin/subagents/src/slash/slash-live-state.ts +59 -32
  159. package/dist/builtin/subagents/src/tui/render-chain-graph.ts +120 -32
  160. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +85 -22
  161. package/dist/builtin/subagents/src/tui/render-helpers.ts +16 -6
  162. package/dist/builtin/subagents/src/tui/render-layout.ts +8 -3
  163. package/dist/builtin/subagents/src/tui/render-result-compact.ts +125 -43
  164. package/dist/builtin/subagents/src/tui/render-result.ts +128 -85
  165. package/dist/builtin/subagents/src/tui/render-stable-output.ts +17 -13
  166. package/dist/builtin/subagents/src/tui/render-status-progress.ts +52 -20
  167. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +130 -28
  168. package/dist/builtin/subagents/src/tui/render-widget.ts +54 -27
  169. package/dist/builtin/subagents/src/tui/render.ts +10 -3
  170. package/dist/builtin/web-access/CHANGELOG.md +20 -0
  171. package/dist/builtin/web-access/content-tools.ts +1 -0
  172. package/dist/builtin/web-access/flat-string.ts +37 -0
  173. package/dist/builtin/web-access/github-api.ts +2 -1
  174. package/dist/builtin/web-access/github-extract.ts +3 -2
  175. package/dist/builtin/web-access/package.json +3 -3
  176. package/dist/builtin/workflows/CHANGELOG.md +87 -0
  177. package/dist/builtin/workflows/README.md +6 -0
  178. package/dist/builtin/workflows/builtin/goal-ledger.ts +6 -4
  179. package/dist/builtin/workflows/builtin/goal-runner.ts +2 -1
  180. package/dist/builtin/workflows/builtin/goal.ts +1 -1
  181. package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +104 -40
  182. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +57 -26
  183. package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +125 -12
  184. package/dist/builtin/workflows/builtin/ralph-core.ts +8 -9
  185. package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +2 -4
  186. package/dist/builtin/workflows/builtin/ralph-models.ts +4 -4
  187. package/dist/builtin/workflows/builtin/ralph-runner.ts +5 -8
  188. package/dist/builtin/workflows/builtin/ralph.ts +2 -1
  189. package/dist/builtin/workflows/package.json +3 -3
  190. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +4 -1
  191. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-dom.js +5 -1
  192. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-session.js +7 -1
  193. package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +5 -2
  194. package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +7 -1
  195. package/dist/builtin/workflows/src/authoring/typebox-defaults.d.ts +5 -5
  196. package/dist/builtin/workflows/src/authoring/typebox-defaults.ts +160 -197
  197. package/dist/builtin/workflows/src/authoring/workflow.ts +137 -133
  198. package/dist/builtin/workflows/src/authoring.d.ts +3 -3
  199. package/dist/builtin/workflows/src/durable/backend.ts +507 -439
  200. package/dist/builtin/workflows/src/durable/boundary-lifecycle.ts +142 -118
  201. package/dist/builtin/workflows/src/durable/boundary-topology.ts +410 -355
  202. package/dist/builtin/workflows/src/durable/child-invocation.ts +6 -6
  203. package/dist/builtin/workflows/src/durable/child-primitive.ts +109 -101
  204. package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +234 -194
  205. package/dist/builtin/workflows/src/durable/completed-catalog.ts +385 -372
  206. package/dist/builtin/workflows/src/durable/completed-inspection.ts +117 -116
  207. package/dist/builtin/workflows/src/durable/completed-subtree.ts +24 -20
  208. package/dist/builtin/workflows/src/durable/dbos-backend.ts +484 -418
  209. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres-root.ts +86 -87
  210. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres.ts +171 -149
  211. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +400 -324
  212. package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +117 -121
  213. package/dist/builtin/workflows/src/durable/dbos-local-postgres.ts +75 -68
  214. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +138 -119
  215. package/dist/builtin/workflows/src/durable/dbos-prompt-reservations.ts +316 -259
  216. package/dist/builtin/workflows/src/durable/dbos-sdk-handle.ts +138 -117
  217. package/dist/builtin/workflows/src/durable/dbos-status-transition.ts +48 -43
  218. package/dist/builtin/workflows/src/durable/dbos-tombstone.ts +14 -14
  219. package/dist/builtin/workflows/src/durable/durable-hash.ts +9 -11
  220. package/dist/builtin/workflows/src/durable/factory.ts +45 -46
  221. package/dist/builtin/workflows/src/durable/format-version.ts +1 -1
  222. package/dist/builtin/workflows/src/durable/index.ts +69 -70
  223. package/dist/builtin/workflows/src/durable/local-command.ts +47 -43
  224. package/dist/builtin/workflows/src/durable/prompt-reservation-state.ts +156 -149
  225. package/dist/builtin/workflows/src/durable/prompt-reservations.ts +16 -16
  226. package/dist/builtin/workflows/src/durable/resume-catalog.ts +11 -11
  227. package/dist/builtin/workflows/src/durable/resume-eligibility.ts +69 -25
  228. package/dist/builtin/workflows/src/durable/resume-runtime.ts +262 -228
  229. package/dist/builtin/workflows/src/durable/retention-policy.ts +31 -30
  230. package/dist/builtin/workflows/src/durable/run-timing.ts +42 -41
  231. package/dist/builtin/workflows/src/durable/scoped-backend.ts +249 -228
  232. package/dist/builtin/workflows/src/durable/stage-primitive.ts +456 -398
  233. package/dist/builtin/workflows/src/durable/stage-topology-validation.ts +199 -186
  234. package/dist/builtin/workflows/src/durable/stage-topology.ts +40 -40
  235. package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +37 -37
  236. package/dist/builtin/workflows/src/durable/tool-outcome.ts +95 -85
  237. package/dist/builtin/workflows/src/durable/tool-primitive.ts +614 -410
  238. package/dist/builtin/workflows/src/durable/types.ts +219 -216
  239. package/dist/builtin/workflows/src/durable/ui-primitive.ts +241 -208
  240. package/dist/builtin/workflows/src/durable/workflow-child-result.ts +40 -37
  241. package/dist/builtin/workflows/src/durable/workflow-status-transition.ts +16 -15
  242. package/dist/builtin/workflows/src/engine/graph-inference.ts +76 -76
  243. package/dist/builtin/workflows/src/engine/options.ts +35 -36
  244. package/dist/builtin/workflows/src/engine/primitives/chain.ts +27 -22
  245. package/dist/builtin/workflows/src/engine/primitives/exit.ts +1 -1
  246. package/dist/builtin/workflows/src/engine/primitives/parallel.ts +64 -52
  247. package/dist/builtin/workflows/src/engine/primitives/task.ts +110 -95
  248. package/dist/builtin/workflows/src/engine/primitives/ui.ts +46 -50
  249. package/dist/builtin/workflows/src/engine/primitives/workflow.ts +194 -160
  250. package/dist/builtin/workflows/src/engine/replay.ts +6 -6
  251. package/dist/builtin/workflows/src/engine/run-durable-admission.ts +30 -30
  252. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +64 -47
  253. package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +29 -23
  254. package/dist/builtin/workflows/src/engine/run-durable-topology.ts +246 -219
  255. package/dist/builtin/workflows/src/engine/run-returned-status.ts +60 -57
  256. package/dist/builtin/workflows/src/engine/run-terminal-event.ts +25 -23
  257. package/dist/builtin/workflows/src/engine/run-terminal-failure.ts +45 -42
  258. package/dist/builtin/workflows/src/engine/run-tool-admission-boundary.ts +99 -0
  259. package/dist/builtin/workflows/src/engine/run-tool-control-registry.ts +179 -0
  260. package/dist/builtin/workflows/src/engine/run-tool-execution-tracker.ts +144 -132
  261. package/dist/builtin/workflows/src/engine/run-tool-node-lifecycle.ts +134 -69
  262. package/dist/builtin/workflows/src/engine/run.ts +679 -473
  263. package/dist/builtin/workflows/src/engine/runtime.ts +160 -153
  264. package/dist/builtin/workflows/src/engine/workflow-activity.ts +7 -3
  265. package/dist/builtin/workflows/src/engine/workflow-tool-abort.ts +92 -0
  266. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +123 -120
  267. package/dist/builtin/workflows/src/extension/background-ui-adapter.ts +108 -112
  268. package/dist/builtin/workflows/src/extension/companions.ts +116 -116
  269. package/dist/builtin/workflows/src/extension/completed-stage-intercom-ask.ts +123 -111
  270. package/dist/builtin/workflows/src/extension/config-file-loader.ts +153 -148
  271. package/dist/builtin/workflows/src/extension/config-loader.ts +264 -283
  272. package/dist/builtin/workflows/src/extension/discovery-loaders.ts +81 -84
  273. package/dist/builtin/workflows/src/extension/discovery.ts +267 -272
  274. package/dist/builtin/workflows/src/extension/dispatcher.ts +214 -217
  275. package/dist/builtin/workflows/src/extension/extension-factory.ts +102 -108
  276. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +118 -116
  277. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +417 -396
  278. package/dist/builtin/workflows/src/extension/hil-answer-notifications.ts +273 -261
  279. package/dist/builtin/workflows/src/extension/index.bundle.mjs +34971 -32989
  280. package/dist/builtin/workflows/src/extension/index.ts +37 -37
  281. package/dist/builtin/workflows/src/extension/lifecycle-notification-delivery.ts +64 -64
  282. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +387 -378
  283. package/dist/builtin/workflows/src/extension/mcp.ts +35 -35
  284. package/dist/builtin/workflows/src/extension/postmortem-deps.ts +32 -35
  285. package/dist/builtin/workflows/src/extension/public-types.ts +160 -182
  286. package/dist/builtin/workflows/src/extension/render-call.ts +85 -88
  287. package/dist/builtin/workflows/src/extension/render-component.ts +9 -11
  288. package/dist/builtin/workflows/src/extension/render-result.ts +440 -386
  289. package/dist/builtin/workflows/src/extension/renderers.ts +35 -35
  290. package/dist/builtin/workflows/src/extension/runtime-active-block-claim.ts +37 -37
  291. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +142 -143
  292. package/dist/builtin/workflows/src/extension/runtime.ts +346 -264
  293. package/dist/builtin/workflows/src/extension/status-writer.ts +95 -95
  294. package/dist/builtin/workflows/src/extension/ui-surface.ts +224 -222
  295. package/dist/builtin/workflows/src/extension/wiring.ts +307 -283
  296. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +109 -108
  297. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +253 -227
  298. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +84 -84
  299. package/dist/builtin/workflows/src/extension/workflow-command-utils.ts +126 -132
  300. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +213 -208
  301. package/dist/builtin/workflows/src/extension/workflow-model-catalog.ts +19 -21
  302. package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +104 -104
  303. package/dist/builtin/workflows/src/extension/workflow-policy.ts +7 -9
  304. package/dist/builtin/workflows/src/extension/workflow-ports.ts +30 -34
  305. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +13 -13
  306. package/dist/builtin/workflows/src/extension/workflow-reload-coordinator.ts +46 -46
  307. package/dist/builtin/workflows/src/extension/workflow-reload-report.ts +28 -25
  308. package/dist/builtin/workflows/src/extension/workflow-resume-picker-rows.ts +61 -46
  309. package/dist/builtin/workflows/src/extension/workflow-resume-shadow.ts +29 -31
  310. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +531 -453
  311. package/dist/builtin/workflows/src/extension/workflow-schema.ts +149 -92
  312. package/dist/builtin/workflows/src/extension/workflow-stage-results.ts +182 -194
  313. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +147 -157
  314. package/dist/builtin/workflows/src/extension/workflow-targets.ts +155 -128
  315. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +204 -224
  316. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +485 -372
  317. package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +124 -150
  318. package/dist/builtin/workflows/src/extension/workflow-tool-registration.ts +43 -46
  319. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +333 -292
  320. package/dist/builtin/workflows/src/extension/workflow-tool.ts +113 -129
  321. package/dist/builtin/workflows/src/intercom/intercom-bridge.ts +17 -20
  322. package/dist/builtin/workflows/src/intercom/intercom-routing.ts +62 -62
  323. package/dist/builtin/workflows/src/intercom/result-intercom.ts +123 -123
  324. package/dist/builtin/workflows/src/runs/background/cancellation-registry.ts +72 -59
  325. package/dist/builtin/workflows/src/runs/background/durable-resume-transition.ts +45 -45
  326. package/dist/builtin/workflows/src/runs/background/job-tracker.ts +69 -34
  327. package/dist/builtin/workflows/src/runs/background/quit-tool-node.ts +71 -0
  328. package/dist/builtin/workflows/src/runs/background/quit.ts +360 -138
  329. package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +70 -69
  330. package/dist/builtin/workflows/src/runs/background/run-inspect.ts +90 -85
  331. package/dist/builtin/workflows/src/runs/background/runner.ts +122 -121
  332. package/dist/builtin/workflows/src/runs/background/startup-admission.ts +56 -60
  333. package/dist/builtin/workflows/src/runs/background/status.ts +325 -294
  334. package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +24 -17
  335. package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +311 -309
  336. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +228 -201
  337. package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +56 -51
  338. package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +168 -152
  339. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +258 -220
  340. package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +178 -173
  341. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +273 -269
  342. package/dist/builtin/workflows/src/runs/foreground/executor-inputs.ts +59 -56
  343. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +372 -361
  344. package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +123 -127
  345. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +355 -339
  346. package/dist/builtin/workflows/src/runs/foreground/executor-queued-user-message.ts +47 -47
  347. package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +125 -104
  348. package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +191 -189
  349. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +309 -250
  350. package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +141 -127
  351. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +218 -213
  352. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +410 -364
  353. package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +143 -127
  354. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +49 -49
  355. package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +1 -1
  356. package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +153 -153
  357. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +155 -117
  358. package/dist/builtin/workflows/src/runs/foreground/executor.ts +10 -10
  359. package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +168 -141
  360. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +356 -379
  361. package/dist/builtin/workflows/src/runs/foreground/stage-delivery-activity.ts +53 -53
  362. package/dist/builtin/workflows/src/runs/foreground/stage-queued-user-messages.ts +95 -0
  363. package/dist/builtin/workflows/src/runs/foreground/stage-runner-candidate.ts +8 -8
  364. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +276 -230
  365. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +636 -493
  366. package/dist/builtin/workflows/src/runs/foreground/stage-runner-message-admission.ts +182 -181
  367. package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +80 -80
  368. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +78 -78
  369. package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +235 -106
  370. package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +178 -173
  371. package/dist/builtin/workflows/src/runs/foreground/stage-runner-replacement.ts +31 -32
  372. package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +114 -105
  373. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +29 -29
  374. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +44 -52
  375. package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +63 -58
  376. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +157 -148
  377. package/dist/builtin/workflows/src/runs/foreground/stage-runner-unresolved-overflow.ts +27 -23
  378. package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +10 -10
  379. package/dist/builtin/workflows/src/runs/foreground/stage-tool-execution-buffer.ts +33 -31
  380. package/dist/builtin/workflows/src/runs/shared/concurrency.ts +53 -53
  381. package/dist/builtin/workflows/src/runs/shared/graph-inference.ts +1 -1
  382. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +257 -245
  383. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +378 -363
  384. package/dist/builtin/workflows/src/runs/shared/prompt-callsite.ts +55 -55
  385. package/dist/builtin/workflows/src/runs/shared/validate-inputs.ts +75 -84
  386. package/dist/builtin/workflows/src/runs/shared/worktree-cache-lifecycle.ts +1 -3
  387. package/dist/builtin/workflows/src/runs/shared/worktree-cwd.ts +96 -83
  388. package/dist/builtin/workflows/src/runs/shared/worktree-diff.ts +9 -2
  389. package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +21 -6
  390. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +60 -30
  391. package/dist/builtin/workflows/src/runs/shared/worktree-post-create.ts +12 -5
  392. package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +51 -30
  393. package/dist/builtin/workflows/src/runs/shared/worktree.ts +4 -4
  394. package/dist/builtin/workflows/src/sdk-surface.ts +38 -19
  395. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +11 -5
  396. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +299 -275
  397. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +23 -7
  398. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +292 -264
  399. package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +379 -221
  400. package/dist/builtin/workflows/src/shared/flat-string.ts +33 -0
  401. package/dist/builtin/workflows/src/shared/graph-store-snapshot.ts +144 -0
  402. package/dist/builtin/workflows/src/shared/intercom-group.ts +22 -22
  403. package/dist/builtin/workflows/src/shared/persistence-compaction-policy.ts +30 -30
  404. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +432 -406
  405. package/dist/builtin/workflows/src/shared/persistence-restore.ts +187 -181
  406. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +211 -213
  407. package/dist/builtin/workflows/src/shared/prompt-callsite-context.ts +3 -3
  408. package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +84 -91
  409. package/dist/builtin/workflows/src/shared/resume-continuation.ts +1 -1
  410. package/dist/builtin/workflows/src/shared/returned-run-status.ts +91 -77
  411. package/dist/builtin/workflows/src/shared/run-id.ts +36 -0
  412. package/dist/builtin/workflows/src/shared/run-visibility.ts +2 -2
  413. package/dist/builtin/workflows/src/shared/schema-introspection.ts +50 -60
  414. package/dist/builtin/workflows/src/shared/serializable.ts +72 -86
  415. package/dist/builtin/workflows/src/shared/session-transcript.ts +44 -39
  416. package/dist/builtin/workflows/src/shared/stage-prompt.ts +183 -202
  417. package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +270 -274
  418. package/dist/builtin/workflows/src/shared/store-factory.ts +8 -8
  419. package/dist/builtin/workflows/src/shared/store-internal.ts +197 -172
  420. package/dist/builtin/workflows/src/shared/store-observation.ts +10 -0
  421. package/dist/builtin/workflows/src/shared/store-prompt-methods.ts +196 -200
  422. package/dist/builtin/workflows/src/shared/store-public-types.ts +216 -204
  423. package/dist/builtin/workflows/src/shared/store-run-methods.ts +252 -231
  424. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +284 -285
  425. package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +43 -36
  426. package/dist/builtin/workflows/src/shared/store-types.ts +267 -263
  427. package/dist/builtin/workflows/src/shared/store.ts +7 -7
  428. package/dist/builtin/workflows/src/shared/timing.ts +36 -34
  429. package/dist/builtin/workflows/src/shared/types.ts +258 -213
  430. package/dist/builtin/workflows/src/shared/workflow-artifacts.ts +261 -0
  431. package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +10 -4
  432. package/dist/builtin/workflows/src/shared/workflow-authoring-types.ts +81 -59
  433. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +247 -227
  434. package/dist/builtin/workflows/src/shared/workflow-failures-contract.ts +45 -46
  435. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +330 -351
  436. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +192 -195
  437. package/dist/builtin/workflows/src/shared/workflow-failures.ts +10 -10
  438. package/dist/builtin/workflows/src/shared/workflow-run-ownership.ts +32 -36
  439. package/dist/builtin/workflows/src/tui/chat-surface-message.ts +157 -184
  440. package/dist/builtin/workflows/src/tui/chat-surface.ts +332 -355
  441. package/dist/builtin/workflows/src/tui/color-utils.ts +21 -30
  442. package/dist/builtin/workflows/src/tui/connectors.ts +57 -61
  443. package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +192 -200
  444. package/dist/builtin/workflows/src/tui/edge.ts +10 -9
  445. package/dist/builtin/workflows/src/tui/graph-canvas.ts +148 -134
  446. package/dist/builtin/workflows/src/tui/graph-theme.ts +139 -148
  447. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +9 -6
  448. package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +147 -183
  449. package/dist/builtin/workflows/src/tui/graph-view-input.ts +295 -323
  450. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +291 -327
  451. package/dist/builtin/workflows/src/tui/graph-view-render.ts +160 -193
  452. package/dist/builtin/workflows/src/tui/graph-view-state.ts +487 -326
  453. package/dist/builtin/workflows/src/tui/graph-view-types.ts +65 -59
  454. package/dist/builtin/workflows/src/tui/header.ts +140 -156
  455. package/dist/builtin/workflows/src/tui/host-input-form.ts +47 -45
  456. package/dist/builtin/workflows/src/tui/inline-form-card.ts +277 -266
  457. package/dist/builtin/workflows/src/tui/inline-form-editor-text.ts +61 -62
  458. package/dist/builtin/workflows/src/tui/inline-form-editor.ts +407 -412
  459. package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +203 -214
  460. package/dist/builtin/workflows/src/tui/inline-form-store.ts +24 -24
  461. package/dist/builtin/workflows/src/tui/inputs-overlay.ts +116 -129
  462. package/dist/builtin/workflows/src/tui/inputs-picker-editing.ts +111 -115
  463. package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +255 -269
  464. package/dist/builtin/workflows/src/tui/inputs-picker-render.ts +248 -236
  465. package/dist/builtin/workflows/src/tui/inputs-picker-types.ts +111 -140
  466. package/dist/builtin/workflows/src/tui/inputs-picker.ts +12 -12
  467. package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +49 -57
  468. package/dist/builtin/workflows/src/tui/layout.ts +130 -133
  469. package/dist/builtin/workflows/src/tui/mouse-input.ts +45 -47
  470. package/dist/builtin/workflows/src/tui/node-card.ts +247 -224
  471. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +383 -394
  472. package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +20 -19
  473. package/dist/builtin/workflows/src/tui/prompt-card-input.ts +183 -194
  474. package/dist/builtin/workflows/src/tui/prompt-card-render.ts +529 -318
  475. package/dist/builtin/workflows/src/tui/prompt-card-select.ts +76 -98
  476. package/dist/builtin/workflows/src/tui/prompt-card-state.ts +40 -40
  477. package/dist/builtin/workflows/src/tui/prompt-card-text.ts +76 -83
  478. package/dist/builtin/workflows/src/tui/prompt-card.ts +3 -3
  479. package/dist/builtin/workflows/src/tui/renderers.ts +6 -7
  480. package/dist/builtin/workflows/src/tui/run-detail.ts +307 -282
  481. package/dist/builtin/workflows/src/tui/run-identity-rows.ts +97 -0
  482. package/dist/builtin/workflows/src/tui/session-list.ts +19 -22
  483. package/dist/builtin/workflows/src/tui/session-overlays.ts +103 -87
  484. package/dist/builtin/workflows/src/tui/session-picker.ts +318 -282
  485. package/dist/builtin/workflows/src/tui/stage-chat-composer-drafts.ts +11 -11
  486. package/dist/builtin/workflows/src/tui/stage-chat-layout.ts +55 -62
  487. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +384 -263
  488. package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +91 -102
  489. package/dist/builtin/workflows/src/tui/stage-chat-view-delivery-activity.ts +51 -59
  490. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +189 -209
  491. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +178 -208
  492. package/dist/builtin/workflows/src/tui/stage-chat-view-live-events.ts +32 -44
  493. package/dist/builtin/workflows/src/tui/stage-chat-view-pending-tools.ts +2 -4
  494. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +82 -97
  495. package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +33 -31
  496. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +468 -400
  497. package/dist/builtin/workflows/src/tui/stage-chat-view-status.ts +24 -25
  498. package/dist/builtin/workflows/src/tui/stage-chat-view-transcript.ts +181 -197
  499. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +128 -135
  500. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +211 -211
  501. package/dist/builtin/workflows/src/tui/status-helpers.ts +65 -69
  502. package/dist/builtin/workflows/src/tui/status-list.ts +349 -305
  503. package/dist/builtin/workflows/src/tui/store-widget-installer.ts +214 -214
  504. package/dist/builtin/workflows/src/tui/submit-pane.ts +114 -130
  505. package/dist/builtin/workflows/src/tui/switcher.ts +116 -134
  506. package/dist/builtin/workflows/src/tui/text-helpers.ts +136 -145
  507. package/dist/builtin/workflows/src/tui/widget.ts +284 -295
  508. package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +12 -17
  509. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +81 -82
  510. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +472 -445
  511. package/dist/builtin/workflows/src/tui/workflow-list.ts +130 -145
  512. package/dist/builtin/workflows/src/tui/workflow-notice-card.ts +127 -144
  513. package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +231 -217
  514. package/dist/builtin/workflows/src/workflows/identity.ts +11 -11
  515. package/dist/builtin/workflows/src/workflows/registry.ts +66 -68
  516. package/dist/bun/cli.js.map +1 -1
  517. package/dist/bun/internal-intercom-broker.d.ts.map +1 -1
  518. package/dist/bun/internal-intercom-broker.js +1 -1
  519. package/dist/bun/internal-intercom-broker.js.map +1 -1
  520. package/dist/bun/register-bedrock.js +1 -1
  521. package/dist/bun/register-bedrock.js.map +1 -1
  522. package/dist/cli/args.d.ts.map +1 -1
  523. package/dist/cli/args.js +8 -1
  524. package/dist/cli/args.js.map +1 -1
  525. package/dist/cli/credential-print.d.ts +170 -0
  526. package/dist/cli/credential-print.d.ts.map +1 -0
  527. package/dist/cli/credential-print.js +513 -0
  528. package/dist/cli/credential-print.js.map +1 -0
  529. package/dist/cli/project-trust.d.ts +1 -1
  530. package/dist/cli/project-trust.d.ts.map +1 -1
  531. package/dist/cli/project-trust.js.map +1 -1
  532. package/dist/cli/startup-ui.d.ts.map +1 -1
  533. package/dist/cli/startup-ui.js +13 -6
  534. package/dist/cli/startup-ui.js.map +1 -1
  535. package/dist/config-self-update.d.ts.map +1 -1
  536. package/dist/config-self-update.js +5 -2
  537. package/dist/config-self-update.js.map +1 -1
  538. package/dist/config.d.ts.map +1 -1
  539. package/dist/config.js +1 -3
  540. package/dist/config.js.map +1 -1
  541. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  542. package/dist/core/agent-session-accessors.js +130 -25
  543. package/dist/core/agent-session-accessors.js.map +1 -1
  544. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  545. package/dist/core/agent-session-auto-compaction.js +9 -2
  546. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  547. package/dist/core/agent-session-bash.d.ts +1 -1
  548. package/dist/core/agent-session-bash.d.ts.map +1 -1
  549. package/dist/core/agent-session-bash.js +3 -1
  550. package/dist/core/agent-session-bash.js.map +1 -1
  551. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  552. package/dist/core/agent-session-compaction.js +48 -8
  553. package/dist/core/agent-session-compaction.js.map +1 -1
  554. package/dist/core/agent-session-custom-message-commit.d.ts +1 -1
  555. package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -1
  556. package/dist/core/agent-session-custom-message-commit.js +13 -9
  557. package/dist/core/agent-session-custom-message-commit.js.map +1 -1
  558. package/dist/core/agent-session-delivery-forwarding.d.ts +1 -1
  559. package/dist/core/agent-session-delivery-forwarding.d.ts.map +1 -1
  560. package/dist/core/agent-session-delivery-forwarding.js.map +1 -1
  561. package/dist/core/agent-session-events.d.ts.map +1 -1
  562. package/dist/core/agent-session-events.js +17 -9
  563. package/dist/core/agent-session-events.js.map +1 -1
  564. package/dist/core/agent-session-export.d.ts +1 -1
  565. package/dist/core/agent-session-export.d.ts.map +1 -1
  566. package/dist/core/agent-session-export.js.map +1 -1
  567. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  568. package/dist/core/agent-session-extension-bindings.js +12 -5
  569. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  570. package/dist/core/agent-session-message-queue.d.ts +6 -10
  571. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  572. package/dist/core/agent-session-message-queue.js +47 -24
  573. package/dist/core/agent-session-message-queue.js.map +1 -1
  574. package/dist/core/agent-session-methods.d.ts +8 -7
  575. package/dist/core/agent-session-methods.d.ts.map +1 -1
  576. package/dist/core/agent-session-methods.js.map +1 -1
  577. package/dist/core/agent-session-models.d.ts.map +1 -1
  578. package/dist/core/agent-session-models.js +1 -1
  579. package/dist/core/agent-session-models.js.map +1 -1
  580. package/dist/core/agent-session-persistent-custom-messages.d.ts +1 -1
  581. package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -1
  582. package/dist/core/agent-session-persistent-custom-messages.js +12 -7
  583. package/dist/core/agent-session-persistent-custom-messages.js.map +1 -1
  584. package/dist/core/agent-session-post-tool-compaction.d.ts +1 -1
  585. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  586. package/dist/core/agent-session-post-tool-compaction.js +11 -2
  587. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  588. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  589. package/dist/core/agent-session-prompt.js +5 -5
  590. package/dist/core/agent-session-prompt.js.map +1 -1
  591. package/dist/core/agent-session-queue-pause.d.ts.map +1 -1
  592. package/dist/core/agent-session-queue-pause.js +8 -7
  593. package/dist/core/agent-session-queue-pause.js.map +1 -1
  594. package/dist/core/agent-session-retry.d.ts.map +1 -1
  595. package/dist/core/agent-session-retry.js +30 -7
  596. package/dist/core/agent-session-retry.js.map +1 -1
  597. package/dist/core/agent-session-runtime-auth.d.ts.map +1 -1
  598. package/dist/core/agent-session-runtime-auth.js +3 -1
  599. package/dist/core/agent-session-runtime-auth.js.map +1 -1
  600. package/dist/core/agent-session-runtime.d.ts +14 -3
  601. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  602. package/dist/core/agent-session-runtime.js +22 -4
  603. package/dist/core/agent-session-runtime.js.map +1 -1
  604. package/dist/core/agent-session-services.d.ts.map +1 -1
  605. package/dist/core/agent-session-services.js +4 -2
  606. package/dist/core/agent-session-services.js.map +1 -1
  607. package/dist/core/agent-session-state.d.ts +1 -1
  608. package/dist/core/agent-session-state.d.ts.map +1 -1
  609. package/dist/core/agent-session-state.js.map +1 -1
  610. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  611. package/dist/core/agent-session-tool-hooks.js +2 -6
  612. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  613. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  614. package/dist/core/agent-session-tool-registry.js +4 -3
  615. package/dist/core/agent-session-tool-registry.js.map +1 -1
  616. package/dist/core/agent-session-transfer.d.ts.map +1 -1
  617. package/dist/core/agent-session-transfer.js +6 -10
  618. package/dist/core/agent-session-transfer.js.map +1 -1
  619. package/dist/core/agent-session-tree.d.ts +1 -1
  620. package/dist/core/agent-session-tree.d.ts.map +1 -1
  621. package/dist/core/agent-session-tree.js +9 -0
  622. package/dist/core/agent-session-tree.js.map +1 -1
  623. package/dist/core/agent-session-types.d.ts +5 -1
  624. package/dist/core/agent-session-types.d.ts.map +1 -1
  625. package/dist/core/agent-session-types.js +4 -1
  626. package/dist/core/agent-session-types.js.map +1 -1
  627. package/dist/core/agent-session.d.ts +15 -10
  628. package/dist/core/agent-session.d.ts.map +1 -1
  629. package/dist/core/agent-session.js +9 -9
  630. package/dist/core/agent-session.js.map +1 -1
  631. package/dist/core/anthropic-thinking-guard.d.ts.map +1 -1
  632. package/dist/core/anthropic-thinking-guard.js +4 -2
  633. package/dist/core/anthropic-thinking-guard.js.map +1 -1
  634. package/dist/core/async/format.d.ts +1 -1
  635. package/dist/core/async/format.d.ts.map +1 -1
  636. package/dist/core/async/format.js +3 -1
  637. package/dist/core/async/format.js.map +1 -1
  638. package/dist/core/async/job-manager.d.ts.map +1 -1
  639. package/dist/core/async/job-manager.js +20 -5
  640. package/dist/core/async/job-manager.js.map +1 -1
  641. package/dist/core/async/session-manager.d.ts.map +1 -1
  642. package/dist/core/async/session-manager.js.map +1 -1
  643. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  644. package/dist/core/atomic-guide-command.js +1 -2
  645. package/dist/core/atomic-guide-command.js.map +1 -1
  646. package/dist/core/auth-guidance.d.ts.map +1 -1
  647. package/dist/core/auth-guidance.js.map +1 -1
  648. package/dist/core/auth-storage-backends.d.ts.map +1 -1
  649. package/dist/core/auth-storage-backends.js +12 -1
  650. package/dist/core/auth-storage-backends.js.map +1 -1
  651. package/dist/core/auth-storage.d.ts +1 -1
  652. package/dist/core/auth-storage.d.ts.map +1 -1
  653. package/dist/core/auth-storage.js +4 -8
  654. package/dist/core/auth-storage.js.map +1 -1
  655. package/dist/core/bounded-model-refresh.d.ts +14 -0
  656. package/dist/core/bounded-model-refresh.d.ts.map +1 -0
  657. package/dist/core/bounded-model-refresh.js +38 -0
  658. package/dist/core/bounded-model-refresh.js.map +1 -0
  659. package/dist/core/builtin-packages.d.ts.map +1 -1
  660. package/dist/core/builtin-packages.js +1 -4
  661. package/dist/core/builtin-packages.js.map +1 -1
  662. package/dist/core/cache-stats.d.ts.map +1 -1
  663. package/dist/core/cache-stats.js +8 -6
  664. package/dist/core/cache-stats.js.map +1 -1
  665. package/dist/core/callback-activity.d.ts.map +1 -1
  666. package/dist/core/callback-activity.js.map +1 -1
  667. package/dist/core/codex-errors.d.ts.map +1 -1
  668. package/dist/core/codex-errors.js +1 -1
  669. package/dist/core/codex-errors.js.map +1 -1
  670. package/dist/core/codex-fast-mode.d.ts.map +1 -1
  671. package/dist/core/codex-fast-mode.js.map +1 -1
  672. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  673. package/dist/core/compaction/branch-summarization.js +1 -1
  674. package/dist/core/compaction/branch-summarization.js.map +1 -1
  675. package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
  676. package/dist/core/compaction/compaction-boundary.js +10 -6
  677. package/dist/core/compaction/compaction-boundary.js.map +1 -1
  678. package/dist/core/compaction/compaction-runner.d.ts +1 -1
  679. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  680. package/dist/core/compaction/compaction-runner.js +2 -4
  681. package/dist/core/compaction/compaction-runner.js.map +1 -1
  682. package/dist/core/compaction/compaction.d.ts.map +1 -1
  683. package/dist/core/compaction/compaction.js +5 -1
  684. package/dist/core/compaction/compaction.js.map +1 -1
  685. package/dist/core/compaction/deleted-ranges.d.ts.map +1 -1
  686. package/dist/core/compaction/deleted-ranges.js.map +1 -1
  687. package/dist/core/compaction/fallback-planner.d.ts.map +1 -1
  688. package/dist/core/compaction/fallback-planner.js.map +1 -1
  689. package/dist/core/compaction/index.d.ts +6 -6
  690. package/dist/core/compaction/index.d.ts.map +1 -1
  691. package/dist/core/compaction/index.js +6 -6
  692. package/dist/core/compaction/index.js.map +1 -1
  693. package/dist/core/compaction/planner-outcome.d.ts.map +1 -1
  694. package/dist/core/compaction/planner-outcome.js.map +1 -1
  695. package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
  696. package/dist/core/compaction/range-planner-diagnostics.js +4 -2
  697. package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
  698. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  699. package/dist/core/compaction/range-planner.js +4 -1
  700. package/dist/core/compaction/range-planner.js.map +1 -1
  701. package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
  702. package/dist/core/compaction/transcript-serialization.js.map +1 -1
  703. package/dist/core/context-tool-pairing.d.ts +4 -4
  704. package/dist/core/context-tool-pairing.js +7 -7
  705. package/dist/core/context-tool-pairing.js.map +1 -1
  706. package/dist/core/copilot-env-routing.d.ts.map +1 -1
  707. package/dist/core/copilot-env-routing.js.map +1 -1
  708. package/dist/core/exec.d.ts.map +1 -1
  709. package/dist/core/exec.js +5 -0
  710. package/dist/core/exec.js.map +1 -1
  711. package/dist/core/experimental.d.ts.map +1 -1
  712. package/dist/core/experimental.js +2 -1
  713. package/dist/core/experimental.js.map +1 -1
  714. package/dist/core/extensions/api-types.d.ts +2 -2
  715. package/dist/core/extensions/api-types.d.ts.map +1 -1
  716. package/dist/core/extensions/api-types.js.map +1 -1
  717. package/dist/core/extensions/context-types.d.ts +7 -1
  718. package/dist/core/extensions/context-types.d.ts.map +1 -1
  719. package/dist/core/extensions/context-types.js.map +1 -1
  720. package/dist/core/extensions/index.d.ts +7 -7
  721. package/dist/core/extensions/index.d.ts.map +1 -1
  722. package/dist/core/extensions/index.js +2 -2
  723. package/dist/core/extensions/index.js.map +1 -1
  724. package/dist/core/extensions/loader-api.d.ts +1 -1
  725. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  726. package/dist/core/extensions/loader-api.js +4 -2
  727. package/dist/core/extensions/loader-api.js.map +1 -1
  728. package/dist/core/extensions/loader-core.d.ts.map +1 -1
  729. package/dist/core/extensions/loader-core.js +2 -2
  730. package/dist/core/extensions/loader-core.js.map +1 -1
  731. package/dist/core/extensions/loader-discovery.d.ts.map +1 -1
  732. package/dist/core/extensions/loader-discovery.js.map +1 -1
  733. package/dist/core/extensions/loader-resources.d.ts.map +1 -1
  734. package/dist/core/extensions/loader-resources.js.map +1 -1
  735. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  736. package/dist/core/extensions/loader-runtime.js +23 -11
  737. package/dist/core/extensions/loader-runtime.js.map +1 -1
  738. package/dist/core/extensions/loader-virtual-modules.d.ts +17 -0
  739. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  740. package/dist/core/extensions/loader-virtual-modules.js +281 -20
  741. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  742. package/dist/core/extensions/loader.d.ts.map +1 -1
  743. package/dist/core/extensions/loader.js.map +1 -1
  744. package/dist/core/extensions/provider-types.d.ts +2 -2
  745. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  746. package/dist/core/extensions/provider-types.js.map +1 -1
  747. package/dist/core/extensions/reactive-widget.d.ts.map +1 -1
  748. package/dist/core/extensions/reactive-widget.js.map +1 -1
  749. package/dist/core/extensions/runner-context.d.ts +27 -1
  750. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  751. package/dist/core/extensions/runner-context.js +52 -0
  752. package/dist/core/extensions/runner-context.js.map +1 -1
  753. package/dist/core/extensions/runner-events.d.ts.map +1 -1
  754. package/dist/core/extensions/runner-events.js.map +1 -1
  755. package/dist/core/extensions/runner.d.ts +1 -0
  756. package/dist/core/extensions/runner.d.ts.map +1 -1
  757. package/dist/core/extensions/runner.js +18 -6
  758. package/dist/core/extensions/runner.js.map +1 -1
  759. package/dist/core/extensions/runtime-types.d.ts +3 -1
  760. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  761. package/dist/core/extensions/runtime-types.js.map +1 -1
  762. package/dist/core/extensions/session-events.d.ts.map +1 -1
  763. package/dist/core/extensions/session-events.js.map +1 -1
  764. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  765. package/dist/core/extensions/tool-types.js.map +1 -1
  766. package/dist/core/extensions/types.d.ts +15 -2
  767. package/dist/core/extensions/types.d.ts.map +1 -1
  768. package/dist/core/extensions/types.js +1 -1
  769. package/dist/core/extensions/types.js.map +1 -1
  770. package/dist/core/extensions/ui-types.d.ts +16 -2
  771. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  772. package/dist/core/extensions/ui-types.js.map +1 -1
  773. package/dist/core/fallback-models.d.ts.map +1 -1
  774. package/dist/core/fallback-models.js +11 -2
  775. package/dist/core/fallback-models.js.map +1 -1
  776. package/dist/core/flattened-tool-arguments.d.ts.map +1 -1
  777. package/dist/core/flattened-tool-arguments.js.map +1 -1
  778. package/dist/core/footer-data-provider.d.ts +10 -0
  779. package/dist/core/footer-data-provider.d.ts.map +1 -1
  780. package/dist/core/footer-data-provider.js +5 -3
  781. package/dist/core/footer-data-provider.js.map +1 -1
  782. package/dist/core/http-dispatcher.d.ts.map +1 -1
  783. package/dist/core/http-dispatcher.js +26 -1
  784. package/dist/core/http-dispatcher.js.map +1 -1
  785. package/dist/core/keybindings.d.ts +1 -1
  786. package/dist/core/keybindings.d.ts.map +1 -1
  787. package/dist/core/keybindings.js.map +1 -1
  788. package/dist/core/messages.d.ts +18 -6
  789. package/dist/core/messages.d.ts.map +1 -1
  790. package/dist/core/messages.js +46 -18
  791. package/dist/core/messages.js.map +1 -1
  792. package/dist/core/model-capabilities.d.ts.map +1 -1
  793. package/dist/core/model-capabilities.js +1 -2
  794. package/dist/core/model-capabilities.js.map +1 -1
  795. package/dist/core/model-refresh-timeout.d.ts +9 -0
  796. package/dist/core/model-refresh-timeout.d.ts.map +1 -0
  797. package/dist/core/model-refresh-timeout.js +9 -0
  798. package/dist/core/model-refresh-timeout.js.map +1 -0
  799. package/dist/core/model-resolver-cli.d.ts.map +1 -1
  800. package/dist/core/model-resolver-cli.js.map +1 -1
  801. package/dist/core/model-resolver-defaults.js.map +1 -1
  802. package/dist/core/model-resolver-initial.d.ts +1 -1
  803. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  804. package/dist/core/model-resolver-initial.js +1 -1
  805. package/dist/core/model-resolver-initial.js.map +1 -1
  806. package/dist/core/model-resolver-patterns.d.ts.map +1 -1
  807. package/dist/core/model-resolver-patterns.js.map +1 -1
  808. package/dist/core/model-resolver-scope.d.ts +1 -1
  809. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  810. package/dist/core/model-resolver-scope.js +12 -2
  811. package/dist/core/model-resolver-scope.js.map +1 -1
  812. package/dist/core/model-resolver-types.d.ts.map +1 -1
  813. package/dist/core/model-resolver-types.js.map +1 -1
  814. package/dist/core/model-resolver.d.ts +3 -3
  815. package/dist/core/model-resolver.d.ts.map +1 -1
  816. package/dist/core/model-resolver.js +1 -1
  817. package/dist/core/model-resolver.js.map +1 -1
  818. package/dist/core/model-runtime-auth.d.ts.map +1 -1
  819. package/dist/core/model-runtime-auth.js +5 -2
  820. package/dist/core/model-runtime-auth.js.map +1 -1
  821. package/dist/core/model-runtime-restoration.d.ts.map +1 -1
  822. package/dist/core/model-runtime-restoration.js +2 -2
  823. package/dist/core/model-runtime-restoration.js.map +1 -1
  824. package/dist/core/model-runtime-snapshot.d.ts +3 -0
  825. package/dist/core/model-runtime-snapshot.d.ts.map +1 -1
  826. package/dist/core/model-runtime-snapshot.js +59 -0
  827. package/dist/core/model-runtime-snapshot.js.map +1 -1
  828. package/dist/core/model-runtime-streaming.d.ts.map +1 -1
  829. package/dist/core/model-runtime-streaming.js.map +1 -1
  830. package/dist/core/model-runtime.d.ts +7 -1
  831. package/dist/core/model-runtime.d.ts.map +1 -1
  832. package/dist/core/model-runtime.js +79 -22
  833. package/dist/core/model-runtime.js.map +1 -1
  834. package/dist/core/oauth-login.d.ts.map +1 -1
  835. package/dist/core/oauth-login.js +7 -2
  836. package/dist/core/oauth-login.js.map +1 -1
  837. package/dist/core/oauth-provider-metadata.d.ts.map +1 -1
  838. package/dist/core/oauth-provider-metadata.js +20 -6
  839. package/dist/core/oauth-provider-metadata.js.map +1 -1
  840. package/dist/core/openai-responses-payload-sanitizer.js.map +1 -1
  841. package/dist/core/output-guard.d.ts +44 -0
  842. package/dist/core/output-guard.d.ts.map +1 -1
  843. package/dist/core/output-guard.js +63 -0
  844. package/dist/core/output-guard.js.map +1 -1
  845. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  846. package/dist/core/package-manager-auto-resources.js +6 -1
  847. package/dist/core/package-manager-auto-resources.js.map +1 -1
  848. package/dist/core/package-manager-git.d.ts.map +1 -1
  849. package/dist/core/package-manager-git.js +27 -11
  850. package/dist/core/package-manager-git.js.map +1 -1
  851. package/dist/core/package-manager-npm.d.ts.map +1 -1
  852. package/dist/core/package-manager-npm.js +4 -2
  853. package/dist/core/package-manager-npm.js.map +1 -1
  854. package/dist/core/package-manager-operations.d.ts.map +1 -1
  855. package/dist/core/package-manager-operations.js +2 -2
  856. package/dist/core/package-manager-operations.js.map +1 -1
  857. package/dist/core/package-manager-paths.d.ts.map +1 -1
  858. package/dist/core/package-manager-paths.js.map +1 -1
  859. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  860. package/dist/core/package-manager-resolver.js +19 -16
  861. package/dist/core/package-manager-resolver.js.map +1 -1
  862. package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
  863. package/dist/core/package-manager-resource-collector.js +6 -6
  864. package/dist/core/package-manager-resource-collector.js.map +1 -1
  865. package/dist/core/package-manager-resource-files.d.ts.map +1 -1
  866. package/dist/core/package-manager-resource-files.js +4 -3
  867. package/dist/core/package-manager-resource-files.js.map +1 -1
  868. package/dist/core/package-manager-resource-patterns.d.ts.map +1 -1
  869. package/dist/core/package-manager-resource-patterns.js.map +1 -1
  870. package/dist/core/package-manager-settings.d.ts.map +1 -1
  871. package/dist/core/package-manager-settings.js +3 -2
  872. package/dist/core/package-manager-settings.js.map +1 -1
  873. package/dist/core/package-manager-source.d.ts.map +1 -1
  874. package/dist/core/package-manager-source.js +1 -1
  875. package/dist/core/package-manager-source.js.map +1 -1
  876. package/dist/core/package-manager.d.ts +1 -1
  877. package/dist/core/package-manager.d.ts.map +1 -1
  878. package/dist/core/package-manager.js +2 -3
  879. package/dist/core/package-manager.js.map +1 -1
  880. package/dist/core/prompt-templates-async.d.ts.map +1 -1
  881. package/dist/core/prompt-templates-async.js +15 -7
  882. package/dist/core/prompt-templates-async.js.map +1 -1
  883. package/dist/core/prompt-templates.d.ts.map +1 -1
  884. package/dist/core/prompt-templates.js +1 -3
  885. package/dist/core/prompt-templates.js.map +1 -1
  886. package/dist/core/provider-composer-internal.d.ts +1 -1
  887. package/dist/core/provider-composer-internal.d.ts.map +1 -1
  888. package/dist/core/provider-composer-internal.js.map +1 -1
  889. package/dist/core/provider-composer.d.ts +1 -1
  890. package/dist/core/provider-composer.d.ts.map +1 -1
  891. package/dist/core/provider-composer.js.map +1 -1
  892. package/dist/core/provider-context-usage.d.ts.map +1 -1
  893. package/dist/core/provider-context-usage.js +2 -1
  894. package/dist/core/provider-context-usage.js.map +1 -1
  895. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  896. package/dist/core/resource-loader-assets.js +31 -7
  897. package/dist/core/resource-loader-assets.js.map +1 -1
  898. package/dist/core/resource-loader-context-files.d.ts +6 -0
  899. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  900. package/dist/core/resource-loader-context-files.js +83 -4
  901. package/dist/core/resource-loader-context-files.js.map +1 -1
  902. package/dist/core/resource-loader-core.d.ts +12 -3
  903. package/dist/core/resource-loader-core.d.ts.map +1 -1
  904. package/dist/core/resource-loader-core.js +36 -19
  905. package/dist/core/resource-loader-core.js.map +1 -1
  906. package/dist/core/resource-loader-discovery.d.ts.map +1 -1
  907. package/dist/core/resource-loader-discovery.js.map +1 -1
  908. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  909. package/dist/core/resource-loader-extensions.js +33 -21
  910. package/dist/core/resource-loader-extensions.js.map +1 -1
  911. package/dist/core/resource-loader-internals.d.ts +13 -6
  912. package/dist/core/resource-loader-internals.d.ts.map +1 -1
  913. package/dist/core/resource-loader-internals.js.map +1 -1
  914. package/dist/core/resource-loader-package-resources.d.ts.map +1 -1
  915. package/dist/core/resource-loader-package-resources.js +1 -1
  916. package/dist/core/resource-loader-package-resources.js.map +1 -1
  917. package/dist/core/resource-loader-paths.js.map +1 -1
  918. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  919. package/dist/core/resource-loader-reload.js +28 -13
  920. package/dist/core/resource-loader-reload.js.map +1 -1
  921. package/dist/core/resource-loader-source-info.d.ts +1 -1
  922. package/dist/core/resource-loader-source-info.d.ts.map +1 -1
  923. package/dist/core/resource-loader-source-info.js +1 -1
  924. package/dist/core/resource-loader-source-info.js.map +1 -1
  925. package/dist/core/resource-loader-types.d.ts +9 -3
  926. package/dist/core/resource-loader-types.d.ts.map +1 -1
  927. package/dist/core/resource-loader-types.js.map +1 -1
  928. package/dist/core/resource-loader.d.ts +1 -1
  929. package/dist/core/resource-loader.d.ts.map +1 -1
  930. package/dist/core/resource-loader.js +1 -1
  931. package/dist/core/resource-loader.js.map +1 -1
  932. package/dist/core/sdk-exports.d.ts +1 -1
  933. package/dist/core/sdk-exports.d.ts.map +1 -1
  934. package/dist/core/sdk-exports.js +2 -2
  935. package/dist/core/sdk-exports.js.map +1 -1
  936. package/dist/core/sdk-types.d.ts +3 -3
  937. package/dist/core/sdk-types.d.ts.map +1 -1
  938. package/dist/core/sdk-types.js.map +1 -1
  939. package/dist/core/sdk.d.ts +1 -1
  940. package/dist/core/sdk.d.ts.map +1 -1
  941. package/dist/core/sdk.js +17 -23
  942. package/dist/core/sdk.js.map +1 -1
  943. package/dist/core/session-manager-archive.d.ts.map +1 -1
  944. package/dist/core/session-manager-archive.js +5 -2
  945. package/dist/core/session-manager-archive.js.map +1 -1
  946. package/dist/core/session-manager-classification.js +3 -3
  947. package/dist/core/session-manager-classification.js.map +1 -1
  948. package/dist/core/session-manager-core.d.ts +1 -1
  949. package/dist/core/session-manager-core.d.ts.map +1 -1
  950. package/dist/core/session-manager-core.js +5 -5
  951. package/dist/core/session-manager-core.js.map +1 -1
  952. package/dist/core/session-manager-entries.d.ts +2 -2
  953. package/dist/core/session-manager-entries.d.ts.map +1 -1
  954. package/dist/core/session-manager-entries.js +2 -1
  955. package/dist/core/session-manager-entries.js.map +1 -1
  956. package/dist/core/session-manager-history.d.ts.map +1 -1
  957. package/dist/core/session-manager-history.js +14 -6
  958. package/dist/core/session-manager-history.js.map +1 -1
  959. package/dist/core/session-manager-list.d.ts.map +1 -1
  960. package/dist/core/session-manager-list.js +1 -1
  961. package/dist/core/session-manager-list.js.map +1 -1
  962. package/dist/core/session-manager-migrations.js.map +1 -1
  963. package/dist/core/session-manager-storage.d.ts.map +1 -1
  964. package/dist/core/session-manager-storage.js.map +1 -1
  965. package/dist/core/session-manager-types.d.ts +3 -0
  966. package/dist/core/session-manager-types.d.ts.map +1 -1
  967. package/dist/core/session-manager-types.js.map +1 -1
  968. package/dist/core/session-manager.d.ts +4 -4
  969. package/dist/core/session-manager.d.ts.map +1 -1
  970. package/dist/core/session-manager.js +2 -2
  971. package/dist/core/session-manager.js.map +1 -1
  972. package/dist/core/settings-manager-core.d.ts.map +1 -1
  973. package/dist/core/settings-manager-core.js.map +1 -1
  974. package/dist/core/settings-manager-ui-accessors.js +2 -1
  975. package/dist/core/settings-manager-ui-accessors.js.map +1 -1
  976. package/dist/core/settings-storage.d.ts.map +1 -1
  977. package/dist/core/settings-storage.js +3 -3
  978. package/dist/core/settings-storage.js.map +1 -1
  979. package/dist/core/settings-types.d.ts.map +1 -1
  980. package/dist/core/settings-types.js.map +1 -1
  981. package/dist/core/skills-async.d.ts.map +1 -1
  982. package/dist/core/skills-async.js +18 -8
  983. package/dist/core/skills-async.js.map +1 -1
  984. package/dist/core/slash-commands.d.ts.map +1 -1
  985. package/dist/core/slash-commands.js +76 -19
  986. package/dist/core/slash-commands.js.map +1 -1
  987. package/dist/core/system-prompt.d.ts.map +1 -1
  988. package/dist/core/system-prompt.js +5 -19
  989. package/dist/core/system-prompt.js.map +1 -1
  990. package/dist/core/thinking-blocks.d.ts.map +1 -1
  991. package/dist/core/thinking-blocks.js +2 -2
  992. package/dist/core/thinking-blocks.js.map +1 -1
  993. package/dist/core/tools/artifact-protocol.d.ts.map +1 -1
  994. package/dist/core/tools/artifact-protocol.js.map +1 -1
  995. package/dist/core/tools/artifacts.d.ts.map +1 -1
  996. package/dist/core/tools/artifacts.js.map +1 -1
  997. package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
  998. package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
  999. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts +1 -1
  1000. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts.map +1 -1
  1001. package/dist/core/tools/ask-user-question/state/build-questionnaire.js +1 -1
  1002. package/dist/core/tools/ask-user-question/state/build-questionnaire.js.map +1 -1
  1003. package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts.map +1 -1
  1004. package/dist/core/tools/ask-user-question/state/questionnaire-session.js +2 -4
  1005. package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
  1006. package/dist/core/tools/ask-user-question/state/state-reducer.d.ts.map +1 -1
  1007. package/dist/core/tools/ask-user-question/state/state-reducer.js.map +1 -1
  1008. package/dist/core/tools/ask-user-question/view/body-residual-spacer.d.ts.map +1 -1
  1009. package/dist/core/tools/ask-user-question/view/body-residual-spacer.js.map +1 -1
  1010. package/dist/core/tools/ask-user-question/view/components/multi-select-view.d.ts.map +1 -1
  1011. package/dist/core/tools/ask-user-question/view/components/multi-select-view.js.map +1 -1
  1012. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts +1 -1
  1013. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts.map +1 -1
  1014. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js.map +1 -1
  1015. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts +1 -1
  1016. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts.map +1 -1
  1017. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js +1 -3
  1018. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js.map +1 -1
  1019. package/dist/core/tools/ask-user-question/view/components/submit-picker.d.ts.map +1 -1
  1020. package/dist/core/tools/ask-user-question/view/components/submit-picker.js.map +1 -1
  1021. package/dist/core/tools/ask-user-question/view/components/tab-bar.d.ts.map +1 -1
  1022. package/dist/core/tools/ask-user-question/view/components/tab-bar.js.map +1 -1
  1023. package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts +1 -1
  1024. package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts.map +1 -1
  1025. package/dist/core/tools/ask-user-question/view/dialog-builder.js +1 -1
  1026. package/dist/core/tools/ask-user-question/view/dialog-builder.js.map +1 -1
  1027. package/dist/core/tools/ask-user-question/view/props-adapter.d.ts.map +1 -1
  1028. package/dist/core/tools/ask-user-question/view/props-adapter.js +2 -4
  1029. package/dist/core/tools/ask-user-question/view/props-adapter.js.map +1 -1
  1030. package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts +1 -1
  1031. package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts.map +1 -1
  1032. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js +2 -9
  1033. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js.map +1 -1
  1034. package/dist/core/tools/bash-async-execution.d.ts.map +1 -1
  1035. package/dist/core/tools/bash-async-execution.js +11 -4
  1036. package/dist/core/tools/bash-async-execution.js.map +1 -1
  1037. package/dist/core/tools/bash-async-jobs.d.ts.map +1 -1
  1038. package/dist/core/tools/bash-async-jobs.js +14 -2
  1039. package/dist/core/tools/bash-async-jobs.js.map +1 -1
  1040. package/dist/core/tools/bash-async-output.d.ts.map +1 -1
  1041. package/dist/core/tools/bash-async-output.js +6 -2
  1042. package/dist/core/tools/bash-async-output.js.map +1 -1
  1043. package/dist/core/tools/bash-interceptor.d.ts.map +1 -1
  1044. package/dist/core/tools/bash-interceptor.js +20 -4
  1045. package/dist/core/tools/bash-interceptor.js.map +1 -1
  1046. package/dist/core/tools/bash-leading-cd.d.ts.map +1 -1
  1047. package/dist/core/tools/bash-leading-cd.js +9 -3
  1048. package/dist/core/tools/bash-leading-cd.js.map +1 -1
  1049. package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
  1050. package/dist/core/tools/bash-pty-native.js.map +1 -1
  1051. package/dist/core/tools/bash-session-environment.d.ts.map +1 -1
  1052. package/dist/core/tools/bash-session-environment.js +24 -12
  1053. package/dist/core/tools/bash-session-environment.js.map +1 -1
  1054. package/dist/core/tools/bash.d.ts.map +1 -1
  1055. package/dist/core/tools/bash.js +123 -27
  1056. package/dist/core/tools/bash.js.map +1 -1
  1057. package/dist/core/tools/block-resolver.d.ts.map +1 -1
  1058. package/dist/core/tools/block-resolver.js.map +1 -1
  1059. package/dist/core/tools/conflict-registry.d.ts.map +1 -1
  1060. package/dist/core/tools/conflict-registry.js.map +1 -1
  1061. package/dist/core/tools/directory-tree.d.ts.map +1 -1
  1062. package/dist/core/tools/directory-tree.js +20 -4
  1063. package/dist/core/tools/directory-tree.js.map +1 -1
  1064. package/dist/core/tools/edit.d.ts.map +1 -1
  1065. package/dist/core/tools/edit.js +37 -13
  1066. package/dist/core/tools/edit.js.map +1 -1
  1067. package/dist/core/tools/fetch-url.d.ts.map +1 -1
  1068. package/dist/core/tools/fetch-url.js +127 -41
  1069. package/dist/core/tools/fetch-url.js.map +1 -1
  1070. package/dist/core/tools/find.d.ts.map +1 -1
  1071. package/dist/core/tools/find.js +176 -46
  1072. package/dist/core/tools/find.js.map +1 -1
  1073. package/dist/core/tools/grep.d.ts.map +1 -1
  1074. package/dist/core/tools/grep.js +43 -10
  1075. package/dist/core/tools/grep.js.map +1 -1
  1076. package/dist/core/tools/hashline-engine/apply.d.ts.map +1 -1
  1077. package/dist/core/tools/hashline-engine/apply.js +6 -6
  1078. package/dist/core/tools/hashline-engine/apply.js.map +1 -1
  1079. package/dist/core/tools/hashline-engine/block.js +1 -1
  1080. package/dist/core/tools/hashline-engine/block.js.map +1 -1
  1081. package/dist/core/tools/hashline-engine/format.d.ts.map +1 -1
  1082. package/dist/core/tools/hashline-engine/format.js +1 -1
  1083. package/dist/core/tools/hashline-engine/format.js.map +1 -1
  1084. package/dist/core/tools/hashline-engine/input.d.ts.map +1 -1
  1085. package/dist/core/tools/hashline-engine/input.js +7 -7
  1086. package/dist/core/tools/hashline-engine/input.js.map +1 -1
  1087. package/dist/core/tools/hashline-engine/parser.js +1 -1
  1088. package/dist/core/tools/hashline-engine/parser.js.map +1 -1
  1089. package/dist/core/tools/hashline-engine/patcher.js +5 -5
  1090. package/dist/core/tools/hashline-engine/patcher.js.map +1 -1
  1091. package/dist/core/tools/hashline-engine/prefixes.js +4 -4
  1092. package/dist/core/tools/hashline-engine/prefixes.js.map +1 -1
  1093. package/dist/core/tools/hashline-engine/recovery.d.ts.map +1 -1
  1094. package/dist/core/tools/hashline-engine/recovery.js +4 -2
  1095. package/dist/core/tools/hashline-engine/recovery.js.map +1 -1
  1096. package/dist/core/tools/hashline-engine/snapshots.js +5 -5
  1097. package/dist/core/tools/hashline-engine/snapshots.js.map +1 -1
  1098. package/dist/core/tools/hashline.d.ts.map +1 -1
  1099. package/dist/core/tools/hashline.js +24 -13
  1100. package/dist/core/tools/hashline.js.map +1 -1
  1101. package/dist/core/tools/index.d.ts +6 -6
  1102. package/dist/core/tools/index.d.ts.map +1 -1
  1103. package/dist/core/tools/index.js +6 -6
  1104. package/dist/core/tools/index.js.map +1 -1
  1105. package/dist/core/tools/ls.d.ts.map +1 -1
  1106. package/dist/core/tools/ls.js +2 -1
  1107. package/dist/core/tools/ls.js.map +1 -1
  1108. package/dist/core/tools/notebook.d.ts.map +1 -1
  1109. package/dist/core/tools/notebook.js +13 -3
  1110. package/dist/core/tools/notebook.js.map +1 -1
  1111. package/dist/core/tools/read-document-extract.d.ts.map +1 -1
  1112. package/dist/core/tools/read-document-extract.js +30 -10
  1113. package/dist/core/tools/read-document-extract.js.map +1 -1
  1114. package/dist/core/tools/read-selectors.d.ts.map +1 -1
  1115. package/dist/core/tools/read-selectors.js +59 -15
  1116. package/dist/core/tools/read-selectors.js.map +1 -1
  1117. package/dist/core/tools/read-url.d.ts.map +1 -1
  1118. package/dist/core/tools/read-url.js +41 -7
  1119. package/dist/core/tools/read-url.js.map +1 -1
  1120. package/dist/core/tools/read.d.ts.map +1 -1
  1121. package/dist/core/tools/read.js +306 -71
  1122. package/dist/core/tools/read.js.map +1 -1
  1123. package/dist/core/tools/resource-selectors.d.ts +4 -0
  1124. package/dist/core/tools/resource-selectors.d.ts.map +1 -1
  1125. package/dist/core/tools/resource-selectors.js +324 -84
  1126. package/dist/core/tools/resource-selectors.js.map +1 -1
  1127. package/dist/core/tools/search-details.d.ts.map +1 -1
  1128. package/dist/core/tools/search-details.js +13 -1
  1129. package/dist/core/tools/search-details.js.map +1 -1
  1130. package/dist/core/tools/search-line-ranges.d.ts.map +1 -1
  1131. package/dist/core/tools/search-line-ranges.js +5 -2
  1132. package/dist/core/tools/search-line-ranges.js.map +1 -1
  1133. package/dist/core/tools/search-native.d.ts.map +1 -1
  1134. package/dist/core/tools/search-native.js.map +1 -1
  1135. package/dist/core/tools/search.d.ts.map +1 -1
  1136. package/dist/core/tools/search.js +244 -90
  1137. package/dist/core/tools/search.js.map +1 -1
  1138. package/dist/core/tools/structured-output.d.ts +1 -1
  1139. package/dist/core/tools/structured-output.d.ts.map +1 -1
  1140. package/dist/core/tools/structured-output.js.map +1 -1
  1141. package/dist/core/tools/todos-execute.d.ts.map +1 -1
  1142. package/dist/core/tools/todos-execute.js +4 -4
  1143. package/dist/core/tools/todos-execute.js.map +1 -1
  1144. package/dist/core/tools/todos-locks.d.ts.map +1 -1
  1145. package/dist/core/tools/todos-locks.js.map +1 -1
  1146. package/dist/core/tools/todos-mutations.js +1 -1
  1147. package/dist/core/tools/todos-mutations.js.map +1 -1
  1148. package/dist/core/tools/todos-paths.js +2 -2
  1149. package/dist/core/tools/todos-paths.js.map +1 -1
  1150. package/dist/core/tools/todos-render.d.ts.map +1 -1
  1151. package/dist/core/tools/todos-render.js +2 -2
  1152. package/dist/core/tools/todos-render.js.map +1 -1
  1153. package/dist/core/tools/todos-storage.d.ts.map +1 -1
  1154. package/dist/core/tools/todos-storage.js +1 -2
  1155. package/dist/core/tools/todos-storage.js.map +1 -1
  1156. package/dist/core/tools/todos-types.d.ts.map +1 -1
  1157. package/dist/core/tools/todos-types.js +1 -11
  1158. package/dist/core/tools/todos-types.js.map +1 -1
  1159. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  1160. package/dist/core/tools/tool-definition-wrapper.js +2 -6
  1161. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  1162. package/dist/core/tools/url-ip-guards.d.ts.map +1 -1
  1163. package/dist/core/tools/url-ip-guards.js +27 -17
  1164. package/dist/core/tools/url-ip-guards.js.map +1 -1
  1165. package/dist/core/tools/write.d.ts.map +1 -1
  1166. package/dist/core/tools/write.js +88 -29
  1167. package/dist/core/tools/write.js.map +1 -1
  1168. package/dist/core/usage-totals.d.ts.map +1 -1
  1169. package/dist/core/usage-totals.js +5 -2
  1170. package/dist/core/usage-totals.js.map +1 -1
  1171. package/dist/core/workflow-stage-admission.d.ts.map +1 -1
  1172. package/dist/core/workflow-stage-admission.js +8 -2
  1173. package/dist/core/workflow-stage-admission.js.map +1 -1
  1174. package/dist/extensions/llama/provider.js +1 -1
  1175. package/dist/extensions/llama/provider.js.map +1 -1
  1176. package/dist/extensions/llama/ui.d.ts.map +1 -1
  1177. package/dist/extensions/llama/ui.js.map +1 -1
  1178. package/dist/index-extensions.d.ts +2 -2
  1179. package/dist/index-extensions.d.ts.map +1 -1
  1180. package/dist/index-extensions.js +1 -1
  1181. package/dist/index-extensions.js.map +1 -1
  1182. package/dist/index.d.ts +21 -21
  1183. package/dist/index.d.ts.map +1 -1
  1184. package/dist/index.js +23 -23
  1185. package/dist/index.js.map +1 -1
  1186. package/dist/main-app-mode.d.ts +1 -0
  1187. package/dist/main-app-mode.d.ts.map +1 -1
  1188. package/dist/main-app-mode.js +3 -0
  1189. package/dist/main-app-mode.js.map +1 -1
  1190. package/dist/main-deferred-startup.d.ts +1 -1
  1191. package/dist/main-deferred-startup.d.ts.map +1 -1
  1192. package/dist/main-deferred-startup.js +16 -15
  1193. package/dist/main-deferred-startup.js.map +1 -1
  1194. package/dist/main-early-input.js.map +1 -1
  1195. package/dist/main-first-time-setup.d.ts +1 -1
  1196. package/dist/main-first-time-setup.d.ts.map +1 -1
  1197. package/dist/main-first-time-setup.js.map +1 -1
  1198. package/dist/main-session-options.d.ts +1 -1
  1199. package/dist/main-session-options.d.ts.map +1 -1
  1200. package/dist/main-session-options.js.map +1 -1
  1201. package/dist/main-session.d.ts.map +1 -1
  1202. package/dist/main-session.js +4 -4
  1203. package/dist/main-session.js.map +1 -1
  1204. package/dist/main.d.ts +1 -1
  1205. package/dist/main.d.ts.map +1 -1
  1206. package/dist/main.js +149 -39
  1207. package/dist/main.js.map +1 -1
  1208. package/dist/migrations-config-values.d.ts.map +1 -1
  1209. package/dist/migrations-config-values.js +3 -1
  1210. package/dist/migrations-config-values.js.map +1 -1
  1211. package/dist/migrations.d.ts.map +1 -1
  1212. package/dist/migrations.js.map +1 -1
  1213. package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
  1214. package/dist/modes/interactive/chat-input-actions.js +3 -6
  1215. package/dist/modes/interactive/chat-input-actions.js.map +1 -1
  1216. package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
  1217. package/dist/modes/interactive/components/atomic-banner.js +7 -5
  1218. package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
  1219. package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -1
  1220. package/dist/modes/interactive/components/atomic-working-status.js +26 -13
  1221. package/dist/modes/interactive/components/atomic-working-status.js.map +1 -1
  1222. package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -1
  1223. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  1224. package/dist/modes/interactive/components/chat-message-renderer.js +6 -5
  1225. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  1226. package/dist/modes/interactive/components/chat-session-host-actions.d.ts +10 -4
  1227. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  1228. package/dist/modes/interactive/components/chat-session-host-actions.js +27 -22
  1229. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  1230. package/dist/modes/interactive/components/chat-session-host-editor.d.ts +7 -5
  1231. package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -1
  1232. package/dist/modes/interactive/components/chat-session-host-editor.js +11 -6
  1233. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
  1234. package/dist/modes/interactive/components/chat-session-host-events.d.ts +3 -0
  1235. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  1236. package/dist/modes/interactive/components/chat-session-host-events.js +12 -10
  1237. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  1238. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts +1 -1
  1239. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  1240. package/dist/modes/interactive/components/chat-session-host-rendering.js +22 -7
  1241. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  1242. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +9 -2
  1243. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
  1244. package/dist/modes/interactive/components/chat-session-host-runtime.js +15 -13
  1245. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
  1246. package/dist/modes/interactive/components/chat-session-host-state.d.ts +2 -2
  1247. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  1248. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  1249. package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.d.ts.map +1 -1
  1250. package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.js.map +1 -1
  1251. package/dist/modes/interactive/components/chat-session-host-types.d.ts +9 -2
  1252. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
  1253. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
  1254. package/dist/modes/interactive/components/chat-session-host-utils.d.ts +1 -1
  1255. package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -1
  1256. package/dist/modes/interactive/components/chat-session-host-utils.js +3 -8
  1257. package/dist/modes/interactive/components/chat-session-host-utils.js.map +1 -1
  1258. package/dist/modes/interactive/components/chat-session-host.d.ts +20 -6
  1259. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  1260. package/dist/modes/interactive/components/chat-session-host.js +35 -6
  1261. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  1262. package/dist/modes/interactive/components/chat-transcript.d.ts +1 -1
  1263. package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
  1264. package/dist/modes/interactive/components/chat-transcript.js +5 -12
  1265. package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
  1266. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  1267. package/dist/modes/interactive/components/compaction-boundary-message.js +18 -7
  1268. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  1269. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
  1270. package/dist/modes/interactive/components/config-selector-list.js +4 -2
  1271. package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
  1272. package/dist/modes/interactive/components/config-selector-project-scope.d.ts.map +1 -1
  1273. package/dist/modes/interactive/components/config-selector-project-scope.js +2 -4
  1274. package/dist/modes/interactive/components/config-selector-project-scope.js.map +1 -1
  1275. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1276. package/dist/modes/interactive/components/config-selector.js +15 -6
  1277. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1278. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  1279. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  1280. package/dist/modes/interactive/components/custom-editor.d.ts +11 -0
  1281. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  1282. package/dist/modes/interactive/components/custom-editor.js +21 -5
  1283. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  1284. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  1285. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  1286. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  1287. package/dist/modes/interactive/components/custom-message.js +1 -3
  1288. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  1289. package/dist/modes/interactive/components/diff.js +2 -2
  1290. package/dist/modes/interactive/components/diff.js.map +1 -1
  1291. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  1292. package/dist/modes/interactive/components/extension-editor.js +1 -1
  1293. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  1294. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  1295. package/dist/modes/interactive/components/first-time-setup.js +15 -4
  1296. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  1297. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  1298. package/dist/modes/interactive/components/footer.js +16 -15
  1299. package/dist/modes/interactive/components/footer.js.map +1 -1
  1300. package/dist/modes/interactive/components/host-input-form-mount.d.ts.map +1 -1
  1301. package/dist/modes/interactive/components/host-input-form-mount.js +4 -2
  1302. package/dist/modes/interactive/components/host-input-form-mount.js.map +1 -1
  1303. package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -1
  1304. package/dist/modes/interactive/components/host-input-form.js +55 -21
  1305. package/dist/modes/interactive/components/host-input-form.js.map +1 -1
  1306. package/dist/modes/interactive/components/host-session-picker.d.ts.map +1 -1
  1307. package/dist/modes/interactive/components/host-session-picker.js +8 -3
  1308. package/dist/modes/interactive/components/host-session-picker.js.map +1 -1
  1309. package/dist/modes/interactive/components/index.d.ts +8 -7
  1310. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  1311. package/dist/modes/interactive/components/index.js +4 -4
  1312. package/dist/modes/interactive/components/index.js.map +1 -1
  1313. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  1314. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  1315. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  1316. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  1317. package/dist/modes/interactive/components/model-selector.d.ts +0 -1
  1318. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1319. package/dist/modes/interactive/components/model-selector.js +29 -36
  1320. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1321. package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
  1322. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  1323. package/dist/modes/interactive/components/oauth-selector.js +12 -6
  1324. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  1325. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  1326. package/dist/modes/interactive/components/scoped-models-selector.js +5 -1
  1327. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  1328. package/dist/modes/interactive/components/session-selector-list.d.ts +1 -1
  1329. package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -1
  1330. package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
  1331. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1332. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1333. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
  1334. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
  1335. package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
  1336. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
  1337. package/dist/modes/interactive/components/startup-identity.d.ts.map +1 -1
  1338. package/dist/modes/interactive/components/startup-identity.js.map +1 -1
  1339. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  1340. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  1341. package/dist/modes/interactive/components/tree-selector-model.js +1 -9
  1342. package/dist/modes/interactive/components/tree-selector-model.js.map +1 -1
  1343. package/dist/modes/interactive/components/tree-selector-viewport.d.ts.map +1 -1
  1344. package/dist/modes/interactive/components/tree-selector-viewport.js.map +1 -1
  1345. package/dist/modes/interactive/components/working-status.d.ts.map +1 -1
  1346. package/dist/modes/interactive/components/working-status.js +1 -1
  1347. package/dist/modes/interactive/components/working-status.js.map +1 -1
  1348. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  1349. package/dist/modes/interactive/external-editor.js.map +1 -1
  1350. package/dist/modes/interactive/interactive-agent-events.js +20 -13
  1351. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  1352. package/dist/modes/interactive/interactive-auth-login.js +6 -6
  1353. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  1354. package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
  1355. package/dist/modes/interactive/interactive-auth-routing.js +3 -6
  1356. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  1357. package/dist/modes/interactive/interactive-autocomplete.js +4 -10
  1358. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  1359. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
  1360. package/dist/modes/interactive/interactive-bash-compact.js +18 -8
  1361. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  1362. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  1363. package/dist/modes/interactive/interactive-deferred-startup.js +6 -2
  1364. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  1365. package/dist/modes/interactive/interactive-editor-actions.js +6 -10
  1366. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  1367. package/dist/modes/interactive/interactive-extension-context.js +4 -4
  1368. package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
  1369. package/dist/modes/interactive/interactive-extension-custom-ui.js +15 -8
  1370. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
  1371. package/dist/modes/interactive/interactive-extension-dialogs.js +50 -24
  1372. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  1373. package/dist/modes/interactive/interactive-extension-runtime.js +9 -6
  1374. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  1375. package/dist/modes/interactive/interactive-extension-widgets.js +1 -1
  1376. package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
  1377. package/dist/modes/interactive/interactive-global-clear.d.ts +45 -1
  1378. package/dist/modes/interactive/interactive-global-clear.d.ts.map +1 -1
  1379. package/dist/modes/interactive/interactive-global-clear.js +60 -4
  1380. package/dist/modes/interactive/interactive-global-clear.js.map +1 -1
  1381. package/dist/modes/interactive/interactive-hotkeys-debug.js +2 -3
  1382. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
  1383. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  1384. package/dist/modes/interactive/interactive-input-handling.js +56 -21
  1385. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  1386. package/dist/modes/interactive/interactive-key-identity.d.ts +22 -0
  1387. package/dist/modes/interactive/interactive-key-identity.d.ts.map +1 -0
  1388. package/dist/modes/interactive/interactive-key-identity.js +29 -0
  1389. package/dist/modes/interactive/interactive-key-identity.js.map +1 -0
  1390. package/dist/modes/interactive/interactive-mode-base.d.ts +7 -6
  1391. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  1392. package/dist/modes/interactive/interactive-mode-base.js +12 -12
  1393. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  1394. package/dist/modes/interactive/interactive-mode-deps.d.ts +20 -20
  1395. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  1396. package/dist/modes/interactive/interactive-mode-deps.js +16 -16
  1397. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  1398. package/dist/modes/interactive/interactive-mode-helpers.d.ts +1 -1
  1399. package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
  1400. package/dist/modes/interactive/interactive-mode-helpers.js +3 -9
  1401. package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
  1402. package/dist/modes/interactive/interactive-mode-surface.d.ts +12 -8
  1403. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  1404. package/dist/modes/interactive/interactive-mode-surface.js +1 -0
  1405. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  1406. package/dist/modes/interactive/interactive-mode-types.d.ts +2 -2
  1407. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  1408. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  1409. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -1
  1410. package/dist/modes/interactive/interactive-model-catalog-startup.js +2 -1
  1411. package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -1
  1412. package/dist/modes/interactive/interactive-model-routing.js +10 -7
  1413. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  1414. package/dist/modes/interactive/interactive-onboarding.js +7 -7
  1415. package/dist/modes/interactive/interactive-onboarding.js.map +1 -1
  1416. package/dist/modes/interactive/interactive-pause.d.ts +3 -1
  1417. package/dist/modes/interactive/interactive-pause.d.ts.map +1 -1
  1418. package/dist/modes/interactive/interactive-pause.js +5 -1
  1419. package/dist/modes/interactive/interactive-pause.js.map +1 -1
  1420. package/dist/modes/interactive/interactive-process-lifecycle.js +38 -8
  1421. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  1422. package/dist/modes/interactive/interactive-prompt-restore.d.ts +58 -0
  1423. package/dist/modes/interactive/interactive-prompt-restore.d.ts.map +1 -0
  1424. package/dist/modes/interactive/interactive-prompt-restore.js +87 -0
  1425. package/dist/modes/interactive/interactive-prompt-restore.js.map +1 -0
  1426. package/dist/modes/interactive/interactive-prompt-turn.js +18 -3
  1427. package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -1
  1428. package/dist/modes/interactive/interactive-queueing.js +6 -10
  1429. package/dist/modes/interactive/interactive-queueing.js.map +1 -1
  1430. package/dist/modes/interactive/interactive-render-chat.js +47 -36
  1431. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  1432. package/dist/modes/interactive/interactive-resource-disclosure.js +1 -3
  1433. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
  1434. package/dist/modes/interactive/interactive-resource-paths.js +6 -19
  1435. package/dist/modes/interactive/interactive-resource-paths.js.map +1 -1
  1436. package/dist/modes/interactive/interactive-resource-rendering.js +15 -16
  1437. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  1438. package/dist/modes/interactive/interactive-selectors.js +3 -5
  1439. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  1440. package/dist/modes/interactive/interactive-session-routing.js +16 -4
  1441. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  1442. package/dist/modes/interactive/interactive-session-runtime.js +11 -0
  1443. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  1444. package/dist/modes/interactive/interactive-slash-commands.js +11 -6
  1445. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  1446. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  1447. package/dist/modes/interactive/interactive-startup.js +9 -11
  1448. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  1449. package/dist/modes/interactive/interactive-submission.d.ts +24 -0
  1450. package/dist/modes/interactive/interactive-submission.d.ts.map +1 -0
  1451. package/dist/modes/interactive/interactive-submission.js +10 -0
  1452. package/dist/modes/interactive/interactive-submission.js.map +1 -0
  1453. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts +1 -1
  1454. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts.map +1 -1
  1455. package/dist/modes/interactive/interactive-summarization-retry-events.js +4 -2
  1456. package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -1
  1457. package/dist/modes/interactive/login-provider-options.d.ts.map +1 -1
  1458. package/dist/modes/interactive/login-provider-options.js +1 -2
  1459. package/dist/modes/interactive/login-provider-options.js.map +1 -1
  1460. package/dist/modes/interactive/theme/global-theme.d.ts +1 -1
  1461. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
  1462. package/dist/modes/interactive/theme/global-theme.js.map +1 -1
  1463. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  1464. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  1465. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  1466. package/dist/modes/interactive/theme/theme-loading.js +1 -1
  1467. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  1468. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  1469. package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  1470. package/dist/modes/interactive/theme/theme.d.ts +2 -2
  1471. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1472. package/dist/modes/interactive/theme/theme.js +2 -2
  1473. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1474. package/dist/modes/interactive/whimsical-messages.d.ts.map +1 -1
  1475. package/dist/modes/interactive/whimsical-messages.js.map +1 -1
  1476. package/dist/modes/interactive-engine/activity-watchdog.d.ts +16 -6
  1477. package/dist/modes/interactive-engine/activity-watchdog.d.ts.map +1 -1
  1478. package/dist/modes/interactive-engine/activity-watchdog.js +12 -6
  1479. package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -1
  1480. package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -1
  1481. package/dist/modes/interactive-engine/create-isolated-runtime.js +5 -4
  1482. package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -1
  1483. package/dist/modes/interactive-engine/engine-child-liveness.d.ts.map +1 -1
  1484. package/dist/modes/interactive-engine/engine-child-liveness.js +6 -4
  1485. package/dist/modes/interactive-engine/engine-child-liveness.js.map +1 -1
  1486. package/dist/modes/interactive-engine/engine-custom-ui.d.ts +3 -2
  1487. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  1488. package/dist/modes/interactive-engine/engine-custom-ui.js +32 -11
  1489. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  1490. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts +16 -0
  1491. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts.map +1 -0
  1492. package/dist/modes/interactive-engine/engine-diagnostic-view.js +19 -0
  1493. package/dist/modes/interactive-engine/engine-diagnostic-view.js.map +1 -0
  1494. package/dist/modes/interactive-engine/engine-dialog-host.d.ts +33 -0
  1495. package/dist/modes/interactive-engine/engine-dialog-host.d.ts.map +1 -0
  1496. package/dist/modes/interactive-engine/engine-dialog-host.js +129 -0
  1497. package/dist/modes/interactive-engine/engine-dialog-host.js.map +1 -0
  1498. package/dist/modes/interactive-engine/engine-generation.d.ts +29 -0
  1499. package/dist/modes/interactive-engine/engine-generation.d.ts.map +1 -0
  1500. package/dist/modes/interactive-engine/engine-generation.js +11 -0
  1501. package/dist/modes/interactive-engine/engine-generation.js.map +1 -0
  1502. package/dist/modes/interactive-engine/engine-health.d.ts +107 -0
  1503. package/dist/modes/interactive-engine/engine-health.d.ts.map +1 -0
  1504. package/dist/modes/interactive-engine/engine-health.js +250 -0
  1505. package/dist/modes/interactive-engine/engine-health.js.map +1 -0
  1506. package/dist/modes/interactive-engine/engine-input-form.d.ts.map +1 -1
  1507. package/dist/modes/interactive-engine/engine-input-form.js +12 -3
  1508. package/dist/modes/interactive-engine/engine-input-form.js.map +1 -1
  1509. package/dist/modes/interactive-engine/engine-monitor.d.ts.map +1 -1
  1510. package/dist/modes/interactive-engine/engine-monitor.js +7 -2
  1511. package/dist/modes/interactive-engine/engine-monitor.js.map +1 -1
  1512. package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
  1513. package/dist/modes/interactive-engine/engine-render-service.js +11 -5
  1514. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  1515. package/dist/modes/interactive-engine/engine-session-picker.d.ts.map +1 -1
  1516. package/dist/modes/interactive-engine/engine-session-picker.js +4 -2
  1517. package/dist/modes/interactive-engine/engine-session-picker.js.map +1 -1
  1518. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +14 -3
  1519. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  1520. package/dist/modes/interactive-engine/extension-ui-bridge.js +32 -45
  1521. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  1522. package/dist/modes/interactive-engine/input-form-host.d.ts +1 -0
  1523. package/dist/modes/interactive-engine/input-form-host.d.ts.map +1 -1
  1524. package/dist/modes/interactive-engine/input-form-host.js +12 -2
  1525. package/dist/modes/interactive-engine/input-form-host.js.map +1 -1
  1526. package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -1
  1527. package/dist/modes/interactive-engine/isolated-auth.js +2 -2
  1528. package/dist/modes/interactive-engine/isolated-auth.js.map +1 -1
  1529. package/dist/modes/interactive-engine/isolated-runtime.d.ts +33 -6
  1530. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  1531. package/dist/modes/interactive-engine/isolated-runtime.js +129 -60
  1532. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  1533. package/dist/modes/interactive-engine/protocol.d.ts +20 -1
  1534. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  1535. package/dist/modes/interactive-engine/protocol.js +183 -55
  1536. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  1537. package/dist/modes/interactive-engine/remote-component.d.ts +38 -0
  1538. package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
  1539. package/dist/modes/interactive-engine/remote-component.js +111 -22
  1540. package/dist/modes/interactive-engine/remote-component.js.map +1 -1
  1541. package/dist/modes/interactive-engine/remote-input-ownership.d.ts +48 -0
  1542. package/dist/modes/interactive-engine/remote-input-ownership.d.ts.map +1 -0
  1543. package/dist/modes/interactive-engine/remote-input-ownership.js +42 -0
  1544. package/dist/modes/interactive-engine/remote-input-ownership.js.map +1 -0
  1545. package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
  1546. package/dist/modes/interactive-engine/remote-model-catalog.js +15 -5
  1547. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
  1548. package/dist/modes/interactive-engine/remote-queue-pause.d.ts.map +1 -1
  1549. package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -1
  1550. package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -1
  1551. package/dist/modes/interactive-engine/remote-renderer.js +38 -10
  1552. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
  1553. package/dist/modes/interactive-engine/session-picker-host.d.ts +1 -0
  1554. package/dist/modes/interactive-engine/session-picker-host.d.ts.map +1 -1
  1555. package/dist/modes/interactive-engine/session-picker-host.js +4 -0
  1556. package/dist/modes/interactive-engine/session-picker-host.js.map +1 -1
  1557. package/dist/modes/print-mode.d.ts.map +1 -1
  1558. package/dist/modes/print-mode.js.map +1 -1
  1559. package/dist/modes/rpc/jsonl.d.ts +7 -0
  1560. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  1561. package/dist/modes/rpc/jsonl.js +17 -1
  1562. package/dist/modes/rpc/jsonl.js.map +1 -1
  1563. package/dist/modes/rpc/queued-writer.d.ts +14 -0
  1564. package/dist/modes/rpc/queued-writer.d.ts.map +1 -1
  1565. package/dist/modes/rpc/queued-writer.js +33 -9
  1566. package/dist/modes/rpc/queued-writer.js.map +1 -1
  1567. package/dist/modes/rpc/rpc-bash-request-owners.js +1 -1
  1568. package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -1
  1569. package/dist/modes/rpc/rpc-client-api.d.ts +3 -3
  1570. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  1571. package/dist/modes/rpc/rpc-client-api.js +63 -22
  1572. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  1573. package/dist/modes/rpc/rpc-client-process.d.ts +10 -0
  1574. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  1575. package/dist/modes/rpc/rpc-client-process.js +72 -15
  1576. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  1577. package/dist/modes/rpc/rpc-client-waits.d.ts +17 -1
  1578. package/dist/modes/rpc/rpc-client-waits.d.ts.map +1 -1
  1579. package/dist/modes/rpc/rpc-client-waits.js +25 -0
  1580. package/dist/modes/rpc/rpc-client-waits.js.map +1 -1
  1581. package/dist/modes/rpc/rpc-client.d.ts +61 -6
  1582. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  1583. package/dist/modes/rpc/rpc-client.js +200 -145
  1584. package/dist/modes/rpc/rpc-client.js.map +1 -1
  1585. package/dist/modes/rpc/rpc-command-handler.d.ts +2 -2
  1586. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  1587. package/dist/modes/rpc/rpc-command-handler.js +58 -20
  1588. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  1589. package/dist/modes/rpc/rpc-command-timeouts.d.ts +30 -0
  1590. package/dist/modes/rpc/rpc-command-timeouts.d.ts.map +1 -0
  1591. package/dist/modes/rpc/rpc-command-timeouts.js +52 -0
  1592. package/dist/modes/rpc/rpc-command-timeouts.js.map +1 -0
  1593. package/dist/modes/rpc/rpc-event-buffer.d.ts.map +1 -1
  1594. package/dist/modes/rpc/rpc-event-buffer.js +3 -1
  1595. package/dist/modes/rpc/rpc-event-buffer.js.map +1 -1
  1596. package/dist/modes/rpc/rpc-extension-ui.d.ts +1 -1
  1597. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
  1598. package/dist/modes/rpc/rpc-extension-ui.js +44 -16
  1599. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
  1600. package/dist/modes/rpc/rpc-generation-buffer.d.ts +21 -0
  1601. package/dist/modes/rpc/rpc-generation-buffer.d.ts.map +1 -0
  1602. package/dist/modes/rpc/rpc-generation-buffer.js +35 -0
  1603. package/dist/modes/rpc/rpc-generation-buffer.js.map +1 -0
  1604. package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
  1605. package/dist/modes/rpc/rpc-input-scheduler.js +14 -7
  1606. package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
  1607. package/dist/modes/rpc/rpc-input.d.ts +7 -1
  1608. package/dist/modes/rpc/rpc-input.d.ts.map +1 -1
  1609. package/dist/modes/rpc/rpc-input.js +14 -4
  1610. package/dist/modes/rpc/rpc-input.js.map +1 -1
  1611. package/dist/modes/rpc/rpc-keybindings-reload.d.ts.map +1 -1
  1612. package/dist/modes/rpc/rpc-keybindings-reload.js.map +1 -1
  1613. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1614. package/dist/modes/rpc/rpc-mode.js +17 -18
  1615. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1616. package/dist/modes/rpc/rpc-oauth-client.d.ts +1 -2
  1617. package/dist/modes/rpc/rpc-oauth-client.d.ts.map +1 -1
  1618. package/dist/modes/rpc/rpc-oauth-client.js +11 -4
  1619. package/dist/modes/rpc/rpc-oauth-client.js.map +1 -1
  1620. package/dist/modes/rpc/rpc-oauth-interaction.d.ts.map +1 -1
  1621. package/dist/modes/rpc/rpc-oauth-interaction.js.map +1 -1
  1622. package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
  1623. package/dist/modes/rpc/rpc-output-buffer.js +3 -1
  1624. package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
  1625. package/dist/modes/rpc/rpc-pending-requests.d.ts +37 -0
  1626. package/dist/modes/rpc/rpc-pending-requests.d.ts.map +1 -0
  1627. package/dist/modes/rpc/rpc-pending-requests.js +57 -0
  1628. package/dist/modes/rpc/rpc-pending-requests.js.map +1 -0
  1629. package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -1
  1630. package/dist/modes/rpc/rpc-provider-auth.js +24 -5
  1631. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
  1632. package/dist/modes/rpc/rpc-responses.js.map +1 -1
  1633. package/dist/modes/rpc/rpc-session-binding.d.ts +1 -1
  1634. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
  1635. package/dist/modes/rpc/rpc-session-binding.js +7 -2
  1636. package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
  1637. package/dist/modes/rpc/rpc-terminal-drain.d.ts +52 -0
  1638. package/dist/modes/rpc/rpc-terminal-drain.d.ts.map +1 -0
  1639. package/dist/modes/rpc/rpc-terminal-drain.js +85 -0
  1640. package/dist/modes/rpc/rpc-terminal-drain.js.map +1 -0
  1641. package/dist/modes/rpc/rpc-transport-error.d.ts +49 -0
  1642. package/dist/modes/rpc/rpc-transport-error.d.ts.map +1 -0
  1643. package/dist/modes/rpc/rpc-transport-error.js +78 -0
  1644. package/dist/modes/rpc/rpc-transport-error.js.map +1 -0
  1645. package/dist/modes/rpc/rpc-types.d.ts +12 -9
  1646. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1647. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1648. package/dist/package-manager-cli-parser.js.map +1 -1
  1649. package/dist/package-manager-cli.d.ts.map +1 -1
  1650. package/dist/package-manager-cli.js +22 -11
  1651. package/dist/package-manager-cli.js.map +1 -1
  1652. package/dist/utils/child-process.d.ts.map +1 -1
  1653. package/dist/utils/child-process.js.map +1 -1
  1654. package/dist/utils/clipboard-image.js +1 -1
  1655. package/dist/utils/clipboard-image.js.map +1 -1
  1656. package/dist/utils/clipboard.d.ts.map +1 -1
  1657. package/dist/utils/clipboard.js.map +1 -1
  1658. package/dist/utils/fs-watch.d.ts.map +1 -1
  1659. package/dist/utils/fs-watch.js +1 -3
  1660. package/dist/utils/fs-watch.js.map +1 -1
  1661. package/dist/utils/git.js +1 -1
  1662. package/dist/utils/git.js.map +1 -1
  1663. package/dist/utils/interactive-engine-bootstrap.d.ts +67 -0
  1664. package/dist/utils/interactive-engine-bootstrap.d.ts.map +1 -0
  1665. package/dist/utils/interactive-engine-bootstrap.js +117 -0
  1666. package/dist/utils/interactive-engine-bootstrap.js.map +1 -0
  1667. package/dist/utils/interactive-engine-env.d.ts +41 -0
  1668. package/dist/utils/interactive-engine-env.d.ts.map +1 -0
  1669. package/dist/utils/interactive-engine-env.js +67 -0
  1670. package/dist/utils/interactive-engine-env.js.map +1 -0
  1671. package/dist/utils/markit.d.ts.map +1 -1
  1672. package/dist/utils/markit.js +15 -5
  1673. package/dist/utils/markit.js.map +1 -1
  1674. package/dist/utils/shell.js +2 -2
  1675. package/dist/utils/shell.js.map +1 -1
  1676. package/dist/utils/split-launcher.d.ts.map +1 -1
  1677. package/dist/utils/split-launcher.js +1 -2
  1678. package/dist/utils/split-launcher.js.map +1 -1
  1679. package/dist/utils/tools-manager.d.ts.map +1 -1
  1680. package/dist/utils/tools-manager.js +8 -34
  1681. package/dist/utils/tools-manager.js.map +1 -1
  1682. package/dist/utils/version-check.d.ts.map +1 -1
  1683. package/dist/utils/version-check.js +1 -1
  1684. package/dist/utils/version-check.js.map +1 -1
  1685. package/docs/changelog.mdx +11 -0
  1686. package/docs/custom-provider.md +29 -6
  1687. package/docs/development.md +14 -15
  1688. package/docs/extensions.md +62 -2
  1689. package/docs/index.md +10 -0
  1690. package/docs/keybindings.md +14 -2
  1691. package/docs/models.md +2 -0
  1692. package/docs/providers.md +21 -4
  1693. package/docs/quickstart.md +7 -1
  1694. package/docs/rpc.md +1 -1
  1695. package/docs/security.md +15 -0
  1696. package/docs/session-format.md +4 -0
  1697. package/docs/termux.md +3 -1
  1698. package/docs/usage.md +37 -2
  1699. package/docs/workflows.md +166 -53
  1700. package/examples/extensions/border-status-editor.ts +1 -6
  1701. package/examples/extensions/custom-compaction.ts +7 -2
  1702. package/examples/extensions/custom-footer.ts +1 -1
  1703. package/examples/extensions/custom-provider-anthropic/index.ts +14 -2
  1704. package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
  1705. package/examples/extensions/gondolin/index.ts +1 -1
  1706. package/examples/extensions/handoff.ts +2 -2
  1707. package/examples/extensions/hello.ts +1 -1
  1708. package/examples/extensions/minimal-mode.ts +6 -6
  1709. package/examples/extensions/overlay-qa-focus-components.ts +0 -1
  1710. package/examples/extensions/overlay-qa-streaming-input-components.ts +2 -2
  1711. package/examples/extensions/overlay-qa-tests.ts +16 -14
  1712. package/examples/extensions/overlay-qa-toggle-passive-components.ts +3 -5
  1713. package/examples/extensions/overlay-test.ts +3 -6
  1714. package/examples/extensions/plan-mode/index.ts +1 -1
  1715. package/examples/extensions/preset.ts +1 -1
  1716. package/examples/extensions/qna.ts +1 -1
  1717. package/examples/extensions/structured-output.ts +9 -9
  1718. package/examples/extensions/subagent/display.ts +115 -127
  1719. package/examples/extensions/subagent/index.ts +310 -349
  1720. package/examples/extensions/subagent/render.ts +244 -345
  1721. package/examples/extensions/subagent/runner.ts +223 -230
  1722. package/examples/extensions/subagent/schemas.ts +39 -46
  1723. package/examples/extensions/subagent/types.ts +22 -22
  1724. package/examples/extensions/summarize.ts +2 -2
  1725. package/examples/extensions/tic-tac-toe.ts +4 -4
  1726. package/examples/extensions/todo.ts +1 -1
  1727. package/examples/extensions/tool-override.ts +1 -1
  1728. package/examples/extensions/trigger-compact.ts +4 -1
  1729. package/examples/extensions/working-indicator.ts +2 -1
  1730. package/examples/rpc-extension-ui-components.ts +1 -2
  1731. package/examples/sdk/02-custom-model.ts +1 -1
  1732. package/examples/sdk/03-custom-prompt.ts +1 -6
  1733. package/examples/sdk/06-extensions.ts +1 -6
  1734. package/examples/sdk/07-context-files.ts +1 -6
  1735. package/examples/sdk/12-full-control.ts +1 -1
  1736. package/npm-shrinkwrap.json +336 -307
  1737. package/package.json +12 -12
  1738. package/dist/builtin/workflows/src/tui/toast.ts +0 -106
package/docs/workflows.md CHANGED
@@ -113,11 +113,35 @@ List and run it like any other workflow:
113
113
  /workflow <name> key=value ...
114
114
  ```
115
115
 
116
- Named workflow runs execute in the background. By default, after launch expect a run id and monitor it with `/workflow status <run-id>`, F2, or `/workflow connect <run-id>`. A definition with `autoAttach: true` instead opens the graph overlay as soon as an interactive top-level named launch through `/workflow <name>` or the registered `workflow` tool is accepted. This option does not affect headless launches or nested `ctx.workflow(...)` calls, and existing input-form launch behavior is unchanged.
116
+ Named workflow runs execute in the background. By default, after launch expect a full run id and monitor it with `/workflow status <run-id>`, F2, or `/workflow connect <run-id>`. A definition with `autoAttach: true` instead opens the graph overlay as soon as an interactive top-level named launch through `/workflow <name>` or the registered `workflow` tool is accepted. This option does not affect headless launches or nested `ctx.workflow(...)` calls, and existing input-form launch behavior is unchanged.
117
117
 
118
118
  For a request with several implementation items, do not turn list order into one serial workflow by default. Triage dependencies first, then launch independent items as a bounded wave of separate top-level runs; see [Task queues and software factories](#task-queues-and-software-factories).
119
119
 
120
- While a workflow is running, the visible below-editor `BACKGROUND` panel advances its elapsed label every second from the moment the run starts; it does not require opening or switching to the orchestrator. Updates repaint the existing mounted panel in place, paused timers stay frozen, and terminal cards retain their short recent-run expiry.
120
+ While a workflow is running, the visible below-editor `BACKGROUND` panel advances its elapsed label every second from the moment the run starts; it does not require opening or switching to the orchestrator. Updates repaint the existing mounted panel in place, paused timers stay frozen, the panel renders every qualifying top-level run, and terminal or quit cards retain their brief recent-run expiry. Quit cards remain resumable and discoverable with `/workflow status` after they leave the panel.
121
+
122
+ ### Workflow run identifiers and the BACKGROUND panel
123
+
124
+ Workflow run identifiers are shown in full everywhere they are presented to users: the `BACKGROUND` panel, workflow status and detail views, run pickers, control messages, and awaiting-input attribution banners. Input matches that: every command and workflow-tool action that accepts `runId` requires the **full 36-character UUID**, exactly as displayed. Typed prefixes are not accepted, and neither is a 32-character dashless form. A target that is not a well-formed UUID is rejected with `Run id must be a full 36-character UUID; got "339e05a4" (8 chars).`, which is deliberately distinct from `Run not found:` so a truncated paste is diagnosable as truncated rather than looking like a stale run. Because ids are unique and matched exactly, a run target can no longer be ambiguous.
125
+
126
+ Stage targeting is exact but not UUID-bound, because stage identifiers are not all bare UUIDs. A `stageId` resolves by exact stage id — a bare UUID at the root, the full `runId:stageId` composite for a stage inside a nested workflow, or `tool:<argsHash>` for a `ctx.tool` node — or by exact stage or tool name. Partial names no longer match, so `build` will not select `build-check`. Two stages that share an exact name are still reported as ambiguous, listing the full matching identifiers.
127
+
128
+ At 80 columns and wider, each `BACKGROUND` card uses two rows so the id is not squeezed beside the workflow name: the first row contains the status glyph and full UUID, and the second contains the workflow name followed by its mode, progress, and elapsed/status metadata. The panel renders every qualifying top-level run, so each card is two rows high (plus the existing spacing between cards). Below 80 columns, the panel keeps its collapsed count-only form and does not render an id.
129
+
130
+ For chat surfaces such as workflow status, run detail, dispatch confirmation, and the run picker, a full id wraps onto continuation rows when the card is narrower than the id. The renderer never ellipsizes the id and keeps the card border closed at its minimum layout width, while terminals below that floor — including sub-30-column terminals — can hard-clip the box. An awaiting-input attribution banner is titled `AWAITING INPUT` and contains the same two identity rows — `?` plus the full run id, then the workflow name and optional metadata — while the existing prompt question and options remain below it in the normal prompt UI.
131
+
132
+ The `/workflow connect` run picker shows five runs at a time; use the arrow keys or mouse wheel to scroll through additional retained runs.
133
+
134
+ The rendered card shape at the 80-column breakpoint is:
135
+
136
+ ```text
137
+ │ ● 339e05a4-2289-408e-9076-d1a348f582ae │
138
+ │ stage-output-transcript · chain · 2/3 · 12m │
139
+ │ │
140
+ │ ● d4e5f6a1-77b2-4c31-9e0a-2f1c8b4d6e5f │
141
+ │ build-check · chain · 0/2 · 12m │
142
+ ```
143
+
144
+ Below the breakpoint the same run set is represented by the collapsed count line, for example ` ▾ 4 background · 2 ● · 1 quit`.
121
145
 
122
146
  ### Or hand-write the TypeScript
123
147
 
@@ -726,7 +750,9 @@ Inputs:
726
750
  | `discover_references` | boolean | no | `true` | Discover current design references and feed them to generation. |
727
751
  | `max_refinements` | number | no | `3` | Maximum generate/user-feedback loop iterations. |
728
752
 
729
- The workflow establishes or loads project design context, extracts user-provided references, can browse curated galleries, writes a live `preview.html`, and keeps separate generator and feedback session lineages. It exports an HTML spec and implementation handoff after approval. Browser-backed preview and feedback use the `playwright-cli` skill when available.
753
+ The workflow establishes or loads project design context, extracts user-provided references, can browse curated galleries, writes a live `preview.html`, and keeps separate generator and feedback session lineages. It exports an HTML spec and implementation handoff after approval. Browser-backed preview and feedback use the `playwright-cli` skill when available. Research context moves between stages as artifact files rather than inline prompt payloads: the composed project design context is written to `<artifact_dir>/design-context.md` and the curated references brief to `<artifact_dir>/references.md`; `reference-discovery` reads the design context, and the generate and exporter stages read both files via `reads` with explicit read instructions. Only small bounded payloads — verbatim user annotations and the word-capped prior design summary — travel inline, so one oversized research result cannot become one oversized prompt message.
754
+
755
+ **Where the feedback gate appears.** The browser review inside a `user-feedback-*` stage is a long-poll, not an `awaiting_input` graph node, so the stage itself reports `running` while it waits. Each round therefore pauses first at a deterministic run-level prompt: the needs-attention badge fires, and the prompt names the preview path and `file://` URL. Answer `Start live review` to begin the browser session — the stage prints the live `http://` review URL in its first lines of output, visible via `/workflow connect <run-id>` — or `Skip remaining review rounds and export as-is` to accept the current design and move to export. In headless runs the gate is skipped and the review degrades as before. A feedback stage that fails outright fails the run; only a completed review with no requested changes counts as approval.
730
756
 
731
757
  Declared outputs are `output_type`, `design_system`, `artifact`, `handoff`, `approved_for_export`, `refinements_completed`, `import_context`, `run_id`, `artifact_dir`, `preview_path`, `preview_file_url`, `spec_path`, `spec_file_url`, and `playwright_cli_status`. It has no implicit `result` output.
732
758
 
@@ -747,7 +773,7 @@ Fan out repository research by subsystem, save each branch as an artifact, and s
747
773
  Run open-claude-design to refresh the settings page hierarchy.
748
774
  ```
749
775
 
750
- If required inputs are missing or ambiguous, Atomic asks for them or opens the inline picker. Named runs execute in the background and return a run id.
776
+ If required inputs are missing or ambiguous, Atomic asks for them or opens the inline picker. Named runs execute in the background and return a full run id.
751
777
 
752
778
  ## Writing a Workflow
753
779
 
@@ -1074,6 +1100,15 @@ The `content` argument mirrors the Atomic SDK and accepts either a string or tex
1074
1100
 
1075
1101
  When the stage is already streaming, the message is queued as a follow-up by default; pass `{ deliverAs: "steer" }` to steer the active turn instead, or `{ deliverAs: "followUp" }` to be explicit. `deliverAs` only affects streaming delivery and is a no-op for idle sessions. Follow-on turns preserve the stage's `mcp.allow` / `mcp.deny` scope for the injected user turn, just like the original `prompt()`. The older `stage.steer(text)` and `stage.followUp(text)` methods are still available for queueing while a turn is active, but they do not start a new idle turn. If that stage is paused before delivery, Atomic preserves every queued item—type, optional data, duplicate entries, raw content, and order within its steering or follow-up queue—without starting a queued model turn or workflow continuation; late context-bearing traffic joins the hold, and the existing stage `resume` action releases the queue once.
1076
1102
 
1103
+ The two streaming modes have distinct, deterministic timing:
1104
+
1105
+ - **`steer`** is delivered at the next steering boundary: after the current assistant response has finished executing its whole tool batch, and before the next model request. It is not injected between two tool calls emitted by the same assistant response.
1106
+ - **`followUp`** is delivered only when the agent would otherwise stop — no further tool-driven turns and no steering messages left.
1107
+
1108
+ Each queue is FIFO in admission order. There is no global FIFO *across* the two queues: steering keeps its semantic priority even when a follow-up was submitted earlier. A controlled pause or interrupt hold delays eligibility but preserves both the queue class and the order within it. An abort, kill, or fatal provider failure ends the turn without consuming what is still queued.
1109
+
1110
+ A message you type into an attached stage chat and submit with Enter defaults to `steer`, matching normal (non-workflow) session steering, so a mid-run correction lands at the next steering boundary rather than at the end of the turn. Ctrl+F queues a follow-up instead. This is a property of the interactive surface, not of the API: an authored `stage.sendUserMessage()` call that names no `deliverAs` still defaults to follow-up while the stage is streaming.
1111
+
1077
1112
  Custom `AgentSessionAdapter` implementations must make asynchronous idle-turn ownership observable through their public `subscribe()` stream: emit `{ type: "agent_start" }` when the submitted message has entered the turn, before waiting for that turn to finish, and emit `{ type: "agent_end", messages }` when that turn terminates. This applies both to native `sendUserMessage()` implementations and to the required `prompt()` fallback when `sendUserMessage` is omitted. Atomic retains the resulting logical ownership after releasing serialized message admission, so a concurrent second message is routed as steering/follow-up rather than another prompt even when the adapter publishes `isStreaming` asynchronously after `agent_start`. Correlated turn generations prevent a late end or older delivery settlement from clearing a newer owner. A subscription may replay earlier lifecycle state synchronously during registration; an untagged synchronous replay is treated as a snapshot and does not consume a later current-turn end. If an adapter can emit a delayed end for a replayed turn while a newer turn is active, it must attach the same stable string or numeric `turnId` to that replayed `agent_start` and its matching `agent_end`; Atomic then correlates the old end without disturbing current ownership. After `subscribe()` returns, adapters must emit `agent_start` only for newly started turns, never as a delayed replay of an earlier turn. Adapters that enter streaming synchronously are also detected through `isStreaming`; the bundled Atomic session additionally retains its internal handshake for compatibility. Implementations must not delay the current turn's `agent_start` until turn completion.
1078
1113
 
1079
1114
  Native queue pause is an optional `StageSessionRuntime` optimization for custom adapters:
@@ -1088,6 +1123,17 @@ interface StageSessionRuntime {
1088
1123
 
1089
1124
  Existing adapters may omit all three members and continue using the runner's prior fallback pause behavior: the active call is aborted, the workflow objective remains suspended, and public deliveries admitted through the stage handle wait until explicit resume. Adapters that implement the native capability must provide both methods. `pauseQueuedMessages()` synchronously gates raw queued steer/follow-up work before `abort()` settles; `resumeQueuedMessages()` releases that hold without starting a provider turn and returns `true` only when raw held work was released. Atomic's bundled `AgentSession` implements this stronger native hold, which preserves already-queued and late native traffic verbatim.
1090
1125
 
1126
+ Reporting an already-held queue is a second optional `StageSessionRuntime` capability:
1127
+
1128
+ ```ts
1129
+ interface StageSessionRuntime {
1130
+ getSteeringMessages?(): readonly string[];
1131
+ getFollowUpMessages?(): readonly string[];
1132
+ }
1133
+ ```
1134
+
1135
+ A session announces its queue by `queue_update`, so a queue that exists before Atomic's listeners reach that session is announced to nobody — which happens when a retiring session hands its pending messages to the session replacing it, and when a retained session is reopened for post-mortem chat holding what it was queued. Atomic reads these two methods once, as it attaches a session, and replays the missed snapshot to that stage's listeners; every later change still arrives as an ordinary event. An adapter that omits them loses nothing it had before: only a queue predating the attach is invisible, and a session that starts empty never had one.
1136
+
1091
1137
  Externally produced traffic has a separate lifecycle rule. Intercom messages and async bash/subagent completion notices received while a workflow stage generation is still open are admitted through the stage AgentSession's native steering/follow-up queue. For a busy stage, admission into the generation boundary happens synchronously before the exact foreground subagent owner's probe/commit detach handshake; model-visible queue insertion waits inside that admitted delivery until the handshake is claimed or falls back after an unclaimed/vanished owner. A commit accepted within a parallel foreground group releases aggregate supervision for every active sibling while retaining their process and eventual-result ownership. Reserving admission before the asynchronous handshake prevents terminal close from overtaking an in-flight Intercom delivery, while waiting inside the reservation prevents a blocking child request from queueing behind either a single foreground tool call or a parallel aggregate still waiting on another child. The stage drains already-admitted work before publishing its terminal snapshot, including schema-backed turns that have already called `structured_output`.
1092
1138
 
1093
1139
  Closing the generation is atomic with admission: a notification admitted first belongs to that stage, while ordinary detached notifications arriving after close cannot reopen or mutate the completed stage and are surfaced once through the main-chat notification path instead. A blocking sibling `intercom.ask` is the deliberate exception: when the completed stage retains a valid conversation, Atomic schedules a post-mortem turn in that conversation so it can inspect the exact ask and reply without changing terminal workflow state. Failed running-stage admission and failed post-mortem admission return correlated actionable errors to the asker instead of consuming the full reply timeout.
@@ -1311,7 +1357,7 @@ Missing required outputs, schema type mismatches, and non-JSON-serializable retu
1311
1357
 
1312
1358
  Pass only workflow definitions to `ctx.workflow(...)`. Import reusable workflows with TypeScript `import` statements first; registry names are only for top-level named runs, not `ctx.workflow(...)` arguments. If a module is missing or does not export a workflow definition, workflow discovery fails when loading that module. Nested child workflows count against `maxDepth` (default `4` total workflow levels).
1313
1359
 
1314
- Atomic hides an import boundary only when the referenced child run is non-empty and reciprocally identifies that parent run and boundary stage. The same rule applies recursively at deeper nesting levels. If no valid child graph can stand in for the boundary—including a failed or skipped boundary, a missing or empty child graph, stale or mismatched ownership metadata, or a recursive link that cannot produce a valid expansion—the graph keeps the boundary summary node instead of flattening an unrelated or invalid child. Running and completed boundaries with valid child graphs are flattened; completed summaries still retain the child workflow name, child run id prefix, and exposed output count for replay/debugging when fallback is required.
1360
+ Atomic hides an import boundary only when the referenced child run is non-empty and reciprocally identifies that parent run and boundary stage. The same rule applies recursively at deeper nesting levels. If no valid child graph can stand in for the boundary—including a failed or skipped boundary, a missing or empty child graph, stale or mismatched ownership metadata, or a recursive link that cannot produce a valid expansion—the graph keeps the boundary summary node instead of flattening an unrelated or invalid child. Running and completed boundaries with valid child graphs are flattened; completed summaries still retain the child workflow name, full child run id, and exposed output count for replay/debugging when fallback is required.
1315
1361
 
1316
1362
  Use `stageName` when the parent needs a more specific label, but keep it concise so the child summary remains readable in the graph.
1317
1363
 
@@ -2063,23 +2109,38 @@ type WorkflowToolOutcome<TValue extends WorkflowSerializableValue> =
2063
2109
  cached: boolean;
2064
2110
  };
2065
2111
 
2112
+ interface WorkflowToolContext {
2113
+ signal: AbortSignal;
2114
+ }
2115
+
2066
2116
  ctx.tool<TValue extends WorkflowSerializableValue>(
2067
2117
  name: string,
2068
2118
  args: Readonly<Record<string, WorkflowSerializableValue>>,
2069
- fn: () => Promise<TValue>,
2119
+ fn: (toolCtx: WorkflowToolContext) => Promise<TValue>,
2070
2120
  options?: WorkflowToolThrowOptions,
2071
2121
  ): Promise<TValue>;
2072
2122
 
2073
2123
  ctx.tool<TValue extends WorkflowSerializableValue>(
2074
2124
  name: string,
2075
2125
  args: Readonly<Record<string, WorkflowSerializableValue>>,
2076
- fn: () => Promise<TValue>,
2126
+ fn: (toolCtx: WorkflowToolContext) => Promise<TValue>,
2077
2127
  options: WorkflowToolOptions & { failureMode: "return" },
2078
2128
  ): Promise<WorkflowToolOutcome<TValue>>;
2079
2129
  ```
2080
2130
 
2081
2131
  Runs arbitrary TypeScript code as a tracked, non-attachable durable workflow graph node and caches its serializable result by call order plus the content hash of `name` and `args`. The node is created before `fn` runs and may appear before, between, after, or without model stages. A completed call replays without rerunning `fn`, so use this primitive for workflow-owned durable side effects; keep pure computation as ordinary TypeScript.
2082
2132
 
2133
+ **Cancellation.** Every callback receives a `WorkflowToolContext` whose `signal` aborts when the run is cancelled, when the run is gracefully quit, or when this single node is aborted with `workflow({ action: "quit"|"interrupt", runId, stageId: "<tool node id or name>" })`. Forward it to `fetch`, a child process, or any client that accepts an `AbortSignal` so a stuck call can be stopped:
2134
+
2135
+ ```ts
2136
+ await ctx.tool("fetch-dataset", { source }, async ({ signal }) => {
2137
+ const response = await fetch(source, { signal });
2138
+ return await response.text();
2139
+ });
2140
+ ```
2141
+
2142
+ Zero-argument callbacks stay valid — `async () => { ... }` still compiles and runs — but a callback that ignores its signal cannot be stopped: quit abandons it after a bounded wait and reports its owning run and node id, and it keeps running until it finishes on its own. A cancelled call writes no replayable checkpoint, so resume re-executes exactly that call at the same ordinal and node id; under `failureMode: "return"` it also writes one inspection-only `tool-failure:` record, which is never a replay cache hit.
2143
+
2083
2144
  **Options:**
2084
2145
  - `failureMode` — `"throw"` keeps the default throw-on-failure behavior; `"return"` returns a typed success or failure outcome after retries.
2085
2146
  - `retriesAllowed` — retries failures when `true`; default `false`.
@@ -2087,6 +2148,8 @@ Runs arbitrary TypeScript code as a tracked, non-attachable durable workflow gra
2087
2148
  - `intervalMs` — initial retry interval; default `1000`.
2088
2149
  - `backoffRate` — retry interval multiplier; default `2`.
2089
2150
 
2151
+ Retries share one signal per logical call, so an abort stops the current attempt and its backoff sleep instead of starting another attempt.
2152
+
2090
2153
  See [`ctx.tool` — durable cached tool execution](#ctxtool--durable-cached-tool-execution) for durable failure replay, process-output safety, explicit repair handoffs, and cancellation behavior.
2091
2154
 
2092
2155
  ### `ctx.exit(options?)`
@@ -2256,7 +2319,13 @@ readonly outputMode?: "inline" | "file-only";
2256
2319
 
2257
2320
  Writes stage/task output to a path or disables output persistence with `false`. `outputMode` defaults to `inline`; `file-only` keeps the parent result compact by returning an artifact reference instead of full text and requires an output path.
2258
2321
 
2259
- The runner writes the stage's **final message** to `output` after the stage ends, so that path belongs to the runner. Never point `output` at a file the same stage's prompt asks the agent to author: the agent's file is overwritten by its closing message, and downstream stages read the leftover summary instead of the work. Pick one owner per artifact — either the stage returns the content as its final message and the runner saves it, or the prompt tells the agent to write a path the stage does not declare as `output`.
2322
+ The runner writes the stage's **final assistant message** to `output` after the stage ends, so that path belongs to the runner. A stage that declares `output:` also automatically gets a full, rendered, line-oriented transcript of its session, and one appended instruction telling the model that its final message becomes the artifact the workflow definition does not need to describe any of this.
2323
+
2324
+ An admitted external turn (for example, an async subagent completion) can arrive while the stage is still running and remains visible both to the model and in the companion transcript. The runner does not try to work out which turn was "really" the deliverable: that is an inference about intent, and an earlier revision that scored candidates by byte size got it wrong in both directions. If a late turn displaces the intended content, the transcript still holds it.
2325
+
2326
+ The companion transcript is written once under the durable Atomic config root at `~/.atomic/workflows/runs/<runId>/transcripts/` (or the equivalent configured agent root; `ATOMIC_WORKFLOW_ARTIFACT_DIR` overrides that root). It is never placed inside the repository tree or OS temporary storage: a home-scoped durable location survives both worktree deletion and OS temp purges, and staying outside the repo keeps full tool output — which may contain secrets — from being committed accidentally. Run-scoped artifact directories are pruned only when their durable/live run record is terminal (or the directory is an unowned orphan) and older than the exported `WORKFLOW_ARTIFACT_RETENTION_MS` policy. Running, paused, quit, blocked, and awaiting-input runs are exempt indefinitely because their artifacts are live resume dependencies. A **failed** run is terminal and does age out: it stays retryable, but the retention window is the grace period it gets, otherwise repeated recoverable failures would accumulate artifacts forever. When a terminal durable owner is aged out, the durable entry is deleted first; if authoritative deletion is unavailable or refuses, the artifact directory is preserved. Goal ledgers, Ralph implementation notes, and QA video paths share that same durable root and retention policy. The receipt names both absolute paths. Search the transcript with `rg`, then read only the narrow line ranges you need; do not read the whole transcript into a downstream prompt. The transcript is a secondary searchable record; the output artifact remains the curated handoff.
2327
+
2328
+ The receipt reports facts only. An empty artifact produces `WARNING: the stage artifact is empty; search the companion transcript for this stage's work.` A non-empty artifact is never classified, however short and even if it only names its own output path: deciding whether such text is a pointer or a deliverable requires knowing what the author meant, and the regex bank that previously attempted it produced false alarms on genuine short output. The transcript named in every receipt is the recovery path for anything that looks wrong to a reader.
2260
2329
 
2261
2330
  ### `reads`
2262
2331
 
@@ -2266,7 +2335,7 @@ readonly reads?: readonly string[] | false;
2266
2335
 
2267
2336
  Names files for the stage to read before running, or disables inherited reads with `false`. Paths are supplied as readonly strings.
2268
2337
 
2269
- `reads` passes **paths, not content**. It prepends a `[Read from: <paths>]` directive to the prompt and the stage reads those files itself with its own read tool, so a stage sees whatever is on disk when it runs — not a snapshot taken when the path was passed. Any stage that rewrites an artifact between producer and consumer changes what the consumer reads. This keeps large artifacts out of the prompt; state the expectation in the prompt too, for example `Read the file at ${artifactPath} before continuing.`
2338
+ `reads` passes **paths, not content**. It prepends a `[Read from: <paths>]` directive to the prompt and the stage reads those files itself with its own read tool, so a stage sees whatever is on disk when it runs — not a snapshot taken when the path was passed. Any stage that rewrites an artifact between producer and consumer changes what the consumer reads. The runtime fails the stage loudly before the model turn when a referenced path is missing, rather than allowing an empty read to look like valid context. This keeps large artifacts out of the prompt; state the expectation in the prompt too, for example `Read the file at ${artifactPath} before continuing.`
2270
2339
 
2271
2340
  ### `maxOutput`
2272
2341
 
@@ -2472,6 +2541,8 @@ stage.sendUserMessage(
2472
2541
 
2473
2542
  Sends a normal follow-on user turn to the retained stage session. This method starts a turn immediately when the session is idle and not controlled-paused; while streaming, it queues a follow-up by default or sends steering when `deliverAs: "steer"`. During controlled pause it joins the raw hold and does not start a turn.
2474
2543
 
2544
+ `deliverAs: "steer"` is consumed after the current assistant response finishes its whole tool batch and before the next model request; `deliverAs: "followUp"` is consumed only when the agent would otherwise stop. Each queue is FIFO in admission order, and steering keeps priority over an earlier-submitted follow-up.
2545
+
2475
2546
  Native sessions accept strings or text/image content blocks. Non-native fallback adapters accept only strings and reject block arrays; `deliverAs` affects streaming delivery only, and follow-on turns retain the stage MCP scope.
2476
2547
 
2477
2548
  Externally produced Intercom and async bash/subagent notices admitted before the generation closes drain through the same session. When a busy stage owns a foreground subagent, exact-owner detach gets first refusal before Intercom enters this boundary; unclaimed traffic then uses normal stage admission. Traffic arriving after the atomic close boundary cannot reopen the completed stage and is surfaced once through the main-chat path instead.
@@ -2747,7 +2818,7 @@ From interactive chat, named workflow launches run in the background so the pare
2747
2818
 
2748
2819
  `workflow({ action: "models" })` returns the registry's configured-auth catalog snapshot in registry order. Each entry includes `provider`, `id`, `fullId`, an `isCurrent` marker, and `availableThinkingLevels` derived from the real model's `reasoning` and `thinkingLevelMap` metadata. This is not proof of credentials, entitlements, OAuth freshness, or live provider access, and it exposes no authentication details.
2749
2820
 
2750
- Named launches wait only for **startup admission**, not for workflow completion. Atomic returns `status: "running"` after durable registration, reusable-worktree setup, and other pre-body setup succeed, while the workflow body and stages continue in the background. If setup fails before the workflow body is admitted — for example, `git_worktree_dir` points inside the invoking checkout — the original `workflow` tool call instead returns a structured `status: "failed"` result with the allocated run id and concrete setup error. No background-start claim or orphan run is retained, so the caller can correct the inputs and retry immediately. Failures after admission remain ordinary background lifecycle outcomes reported through status and lifecycle notices.
2821
+ Named launches wait only for **startup admission**, not for workflow completion. Atomic returns `status: "running"` after durable registration, reusable-worktree setup, and other pre-body setup succeed, while the workflow body and stages continue in the background. If setup fails before the workflow body is admitted — for example, `git_worktree_dir` points inside the invoking checkout — the original `workflow` tool call instead returns a structured `status: "failed"` result with the allocated full run id and concrete setup error. No background-start claim or orphan run is retained, so the caller can correct the inputs and retry immediately. Failures after admission remain ordinary background lifecycle outcomes reported through status and lifecycle notices.
2751
2822
 
2752
2823
  A model may launch in the foreground only when the user explicitly requests it or foreground execution is technically required, and it must tell the user before launching.
2753
2824
 
@@ -2794,7 +2865,7 @@ If you copy a HIL workflow example into a headless session, it can pass dispatch
2794
2865
  /workflow interrupt <run-id|--all>
2795
2866
  /workflow quit <run-id|--all>
2796
2867
  /workflow resume <run-id> [stage-id-or-name] [message]
2797
- /workflows [workflow-id-or-prefix]
2868
+ /workflows [full-workflow-uuid]
2798
2869
  /workflow reload
2799
2870
  ```
2800
2871
 
@@ -2815,6 +2886,7 @@ Surface behavior:
2815
2886
  - **Graph vs. stage chat** - Use `connect` for the workflow graph. Use `attach` when you want a chat pane for a specific stage.
2816
2887
  - **Hierarchy chord** - `ctrl+x` is the workflow hierarchy chord: in an attached stage chat it means **return to graph**, and in the graph it means **return to main chat**. The workflow surface handles `ctrl+x` before configurable editor or tool actions, including while a composer draft, primitive prompt, custom question, stage switcher, or legacy prompt card owns input.
2817
2888
  - **Draft preservation** - Leaving a stage preserves unsent composer and prompt drafts and keeps pending custom questions unresolved so they reappear when you attach again.
2889
+ - **Queued-message survival** - Steering and follow-up entries queued from a stage chat live on the stage session, not on the pane. Detaching to the graph and reattaching rehydrates the pending `Steering:` / `Follow-up:` rows, and while you are detached the stage's graph node shows a `✉ N queued` badge so a pending message stays visible without attaching. The attached chat shows the pending text; the detached node shows only their count. Both read one projection that the stage handle keeps current from the session's complete `queue_update` snapshots, so rows and badge shrink together as the agent consumes entries. That projection is fed by the events rather than by a concrete Atomic `AgentSession`, so a stage backed by a custom `AgentSessionAdapter` keeps this behavior as long as it publishes ordinary `queue_update` events; each snapshot replaces the previous steering and follow-up lists rather than adding to them. A queue can also outlive the session holding it — a stage session that fails over to a fallback model hands its pending messages to the session replacing it, and a completed stage reopened as a post-mortem chat is restored holding whatever it was queued. Those messages were announced before the projection could reach the new session, so Atomic reads it once as it attaches and the rows and badge show them too.
2818
2890
  - **Reserved keys** - `ctrl+d` and `q` do not navigate workflow surfaces; `ctrl+d` keeps its ordinary editor or prompt behavior where applicable, and `q` remains printable in text-owning prompts. Existing `esc`, `ctrl+c`, and graph `h` close/hide controls are unchanged.
2819
2891
  - **Wheel and trackpad** - While the workflow graph is active, vertical wheel/trackpad gestures pan it up and down, and horizontal gestures pan wide graphs left and right when the terminal exposes horizontal wheel events; these gestures remain scoped to the graph instead of leaking into the main chat or terminal scrollback. Attached stage chats capture mouse/trackpad wheel events by default so scrolling stays inside the active stage transcript or prompt instead of falling through to terminal/main-chat scrollback.
2820
2892
  - **Tool and node detail** - Attached stage chats match main chat's tool-detail expansion behavior while keeping expansion state local to the workflow UI context. Press Ctrl+O (the configurable `app.tools.expand` binding) to expand every visible workflow node and tool card, including single, parallel, and chain subagent progress, current tool activity, and artifact paths; press it again to collapse them. The toggle works for active, completed, and archived stage views, including at the supported 40-column terminal minimum. A mounted prompt, custom question, or other input-owning overlay keeps the key instead of changing expansion.
@@ -2826,7 +2898,7 @@ Surface behavior:
2826
2898
  - **Rediscovery** - Use `/workflow reload` after adding, editing, installing, or removing workflow resources or package manifest workflow entries and you want Atomic to rediscover them in-process ([Reloading workflow resources](#reloading-workflow-resources)).
2827
2899
  - **Status listing** - `/workflow status` lists all retained active and terminal top-level runs by default; implementation-owned nested child runs are flattened into their parent workflow rather than listed separately. `/workflow status --all` is retained as a compatibility alias.
2828
2900
 
2829
- `/workflows` is the retained-run history alias for `/workflow resume`: with no id it opens the same mixed resumable/completed picker, and with an id it resumes unfinished work or opens completed inspection. It is intentionally different from `/workflow list`, which lists installed workflow definitions. See [`/workflow resume` — cross-session resume selector](#workflow-resume--cross-session-resume-selector) for the full picker semantics.
2901
+ `/workflows` is the retained-run history alias for `/workflow resume`: with no id it opens the same mixed picker, but the resumable section lists only runs that the resume path can actually accept and the completed section is read-only inspection. A run with no durable checkpoint, missing/pruned artifacts, or explicit deletion is omitted from the resume picker; an explicit `/workflow resume <id>` still returns an explanatory error. It is intentionally different from `/workflow list`, which lists installed workflow definitions. See [`/workflow resume` — cross-session resume selector](#workflow-resume--cross-session-resume-selector) for the full picker semantics.
2830
2902
 
2831
2903
  At the supported 40-column terminal minimum, attached stage chats use the compact `ctrl+x graph · ctrl+t …` footer. The TUI may truncate provider/model context to make room, but it keeps that context separate from the hierarchy hint so the controls stay readable.
2832
2904
 
@@ -2843,45 +2915,49 @@ workflow({ action: "status" }) // list every se
2843
2915
  workflow({ action: "status", statusFilter: "running" }) // filter the run listing by status
2844
2916
  workflow({ action: "status", statusFilter: "awaiting_input" }) // runs with a pending human prompt
2845
2917
  workflow({ action: "status", format: "json" }) // structured listing for programmatic use
2846
- workflow({ action: "status", runId: "<id-or-prefix>" }) // full detail for one run
2918
+ workflow({ action: "status", runId: "<full-run-uuid>" }) // full detail for one run
2847
2919
 
2848
- workflow({ action: "stages", runId: "<id-or-prefix>", statusFilter: "all" })
2849
- workflow({ action: "stage", runId: "<id-or-prefix>", stageId: "review" })
2920
+ workflow({ action: "stages", runId: "<full-run-uuid>", statusFilter: "all" })
2921
+ workflow({ action: "stage", runId: "<full-run-uuid>", stageId: "review" })
2850
2922
  // Prefer sessionFile/transcriptPath from stages/stage; quote the exact path, preserve Windows separators, then search/read small ranges.
2851
- workflow({ action: "transcript", runId: "<id-or-prefix>", stageId: "review" })
2923
+ workflow({ action: "transcript", runId: "<full-run-uuid>", stageId: "review" })
2852
2924
  // Omit tail/limit for the default 5-entry preview; pass them for quick recent-context checks.
2853
- workflow({ action: "transcript", runId: "<id-or-prefix>", stageId: "review", tail: 40 })
2854
- workflow({ action: "transcript", runId: "<id-or-prefix>", stageId: "review", limit: 20, includeToolOutput: true })
2925
+ workflow({ action: "transcript", runId: "<full-run-uuid>", stageId: "review", tail: 40 })
2926
+ workflow({ action: "transcript", runId: "<full-run-uuid>", stageId: "review", limit: 20, includeToolOutput: true })
2855
2927
 
2856
2928
  // send is admitted only while the authoritative root workflow is nonterminal.
2857
- workflow({ action: "send", runId: "<id-or-prefix>", stageId: "review", text: "please focus on tests" })
2858
- workflow({ action: "send", runId: "<id-or-prefix>", stageId: "approval", promptId: "prompt-1", response: true, delivery: "answer" })
2859
- workflow({ action: "send", runId: "<id-or-prefix>", stageId: "review", message: "continue with tests", delivery: "resume" })
2929
+ workflow({ action: "send", runId: "<full-run-uuid>", stageId: "review", text: "please focus on tests" })
2930
+ workflow({ action: "send", runId: "<full-run-uuid>", stageId: "approval", promptId: "prompt-1", response: true, delivery: "answer" })
2931
+ workflow({ action: "send", runId: "<full-run-uuid>", stageId: "review", message: "continue with tests", delivery: "resume" })
2860
2932
 
2861
- workflow({ action: "pause", runId: "<id-or-prefix>" })
2862
- workflow({ action: "pause", runId: "<id-or-prefix>", stageId: "review" })
2933
+ workflow({ action: "pause", runId: "<full-run-uuid>" })
2934
+ workflow({ action: "pause", runId: "<full-run-uuid>", stageId: "review" })
2863
2935
 
2864
- workflow({ action: "interrupt", runId: "<id-or-prefix>" })
2936
+ workflow({ action: "interrupt", runId: "<full-run-uuid>" })
2865
2937
  workflow({ action: "interrupt", all: true })
2866
2938
 
2867
- workflow({ action: "resume", runId: "<id-or-prefix>" })
2868
- workflow({ action: "resume", runId: "<id-or-prefix>", stageId: "review", message: "continue" })
2939
+ workflow({ action: "resume", runId: "<full-run-uuid>" })
2940
+ workflow({ action: "resume", runId: "<full-run-uuid>", stageId: "review", message: "continue" })
2869
2941
 
2870
- workflow({ action: "quit", runId: "<id-or-prefix>" })
2942
+ workflow({ action: "quit", runId: "<full-run-uuid>" })
2871
2943
  workflow({ action: "quit", all: true })
2872
2944
 
2945
+ // Abort one in-flight ctx.tool node without pausing the run.
2946
+ workflow({ action: "quit", runId: "<full-run-uuid>", stageId: "tool:<argsHash>" })
2947
+ workflow({ action: "interrupt", runId: "<full-run-uuid>", stageId: "publish-artifact" })
2948
+
2873
2949
  workflow({ action: "reload", reason: "added team workflow" })
2874
2950
  ```
2875
2951
 
2876
2952
  Control behavior:
2877
2953
 
2878
- - `runId` accepts full run ids or unique prefixes for every lifecycle and inspection action, including `status`. The abbreviated IDs printed by status surfaces are valid inputs. Exact IDs take precedence; a prefix shared by multiple runs returns an ambiguity diagnostic with longer matching prefixes instead of selecting the first run. Status lists and run pickers show top-level user-launched workflows; nested child runs are implementation details of the expanded parent graph.
2879
- - `status` without `runId` lists every top-level run in the session with a concise per-run summary: run id plus abbreviated prefix, workflow name, run status, started/ended timing with pause-adjusted elapsed time, currently active stages, and awaiting-input details (count plus the stage, prompt id, kind, and message for each pending human prompt). In-flight runs are listed first. The summaries carry the exact identifiers that `pause`/`resume`/`interrupt`/`quit`/`send` accept, so an orchestrating agent can list runs and act on them directly.
2954
+ - `runId` requires the full 36-character run UUID for every lifecycle and inspection action, including `status`. User-facing status surfaces print that exact value, so pass it back verbatim; typed prefixes are rejected with a distinct `Run id must be a full 36-character UUID` diagnostic rather than resolved. Because ids are matched exactly and are unique, no run target is ambiguous. Status lists and run pickers show top-level user-launched workflows; nested child runs are implementation details of the expanded parent graph.
2955
+ - `status` without `runId` lists every top-level run in the session with a concise per-run summary: the full run id, workflow name, run status, started/ended timing with pause-adjusted elapsed time, currently active stages, and awaiting-input details (count plus the stage, prompt id, kind, and message for each pending human prompt). In-flight runs are listed first. The summaries carry the exact identifiers that `pause`/`resume`/`interrupt`/`quit`/`send` accept, so an orchestrating agent can list runs and act on them directly.
2880
2956
  - `statusFilter` narrows the `status` run listing: run statuses (`pending`, `running`, `paused`, `blocked`, `completed`, `failed`, `skipped`, `cancelled`, `killed`) match runs directly, `awaiting_input` selects runs with at least one stage awaiting input or pending human prompt, and `all` (the default) includes everything.
2881
2957
  - `format: "json"` on data-bearing inspection actions (`status`, `stages`, `stage`, `transcript`) returns the full structured result; the default text output for `status` is the concise per-run summary list.
2882
2958
  - `status` / `status <runId>` show terminal `ctx.exit(...)` statuses (`completed`, `skipped`, `cancelled`, or `blocked`) and the optional exit reason when one was supplied.
2883
2959
  - `stages` lists stage summaries, including flattened stages from nested `ctx.workflow(...)` imports and `sessionFile`/`transcriptPath` when a stage has a persisted session. Use `statusFilter: "all"` to include completed, failed, skipped, and pending stages.
2884
- - `stage` returns details for one stage by stage id, unique prefix, or stage name, including nested child stages shown in the expanded graph and the persisted `sessionFile` when available. Abbreviated stage IDs printed in graph/control messages use this same unique-prefix resolver; collisions return an ambiguity diagnostic rather than selecting a stage.
2960
+ - `stage` returns details for one stage by exact stage id or exact stage name, including nested child stages shown in the expanded graph and the persisted `sessionFile` when available. User-facing graph and control messages print full stage IDs; pass one back verbatim, or use the stage's exact name. Prefixes and partial names no longer resolve. Two stages sharing an exact name return an ambiguity diagnostic rather than selecting one.
2885
2961
  - `transcript` is reference-first with a small preview by default: it returns metadata, transcript paths, and up to 5 recent entries. For targeted lookup, quote the exact `sessionFile`/`transcriptPath` value without changing platform separators (preserve Windows backslashes), search it with `rg` or `grep`, then read only small surrounding ranges. Text results include JSON-escaped `sessionFileJson`/`transcriptPathJson` lines for copy-safe path literals. Pass explicit `tail` or `limit` to override the 5-entry preview; `tail` overrides `limit`; `includeToolOutput` includes captured snapshot tool output in snapshot transcript results.
2886
2962
  - `send` operates only while the authoritative root workflow is nonterminal; delivery modes are `auto`, `answer`, `prompt`, `steer`, `followUp`, and `resume`.
2887
2963
  - A terminal root (`completed`, `failed`, `skipped`, `cancelled`, `killed`, or terminal `blocked`) rejects every programmatic send with `status: "failed"`, `code: "WORKFLOW_TERMINAL"`, `delivery: "rejected"`, the requested root run id and terminal status, and guidance to start a new workflow. Proceed inline instead only when the remaining work is small, deterministic, and low risk.
@@ -2889,15 +2965,21 @@ Control behavior:
2889
2965
  - Atomic checks the same shared terminal authority again at the final synchronous SDK message-admission boundary. If a live root terminates while retained-session creation is pending, the send fails with `WORKFLOW_TERMINAL`, disposes its unclaimed provisional session/handle, and admits no prompt, model request, tool/file work, transcript append, or workflow-state mutation. A user-driven attach or Intercom claim remains independent and keeps the retained handle.
2890
2966
  - Prompt answers on a nonterminal root can include `promptId` and can carry answer content in `response`, `text`, or `message`; structured UI prompts usually prefer `response`.
2891
2967
  - For a live idle, non-paused stage, `prompt`, `followUp`, and eligible `auto` delivery all start a fresh prompt immediately; an actively streaming `followUp` remains queued and `steer` remains steering, so neither starts a concurrent prompt. During controlled pause, every context-bearing delivery remains held instead. The result's `delivery` and message describe the action actually taken (`prompt`, `followUp`, `steer`, `answer`, or `resume`), not merely the requested mode. Explicit `resume` against a stage that is not paused is a truthful no-op, and explicit message deliveries cannot bypass a paused stage; resume it first.
2968
+ - Delivery timing is mode-specific and deterministic. `steer` (and `auto` against a streaming stage) enters the steering queue and is consumed after the current assistant response finishes its whole tool batch, before the next model request — never between two tool calls of the same response. `followUp` enters the follow-up queue and is consumed only when the agent would otherwise stop. Sequential sends keep submission order *within* the queue they select; there is no global FIFO across the two queues, so a steer submitted after a follow-up is still consumed first. Ordering is promised relative to admission into the selected queue, not relative to when a caller started a request whose session setup or admission finishes later.
2892
2969
  - While the root remains nonterminal, follow-up messaging to an eligible completed child stage can reuse its retained `sessionFile`. After the root terminates, use explicit `/workflow attach <run-id> <stage>` post-mortem chat instead; `workflow send` never admits a retained-session turn after terminal publication.
2893
2970
  - Arbitrary `ctx.ui.custom<T>` widget prompts require the interactive workflow graph and return a clear unsupported message when targeted through `send`.
2894
2971
  - On a nonterminal root, `delivery: "auto"` first answers a pending prompt, then resumes paused work, then steers a streaming stage, and finally starts a fresh prompt when the live stage is idle.
2895
- - `pause`, `interrupt`, and `quit` can target one top-level run or `all: true`; `stageId` cannot be combined with `all: true`. Stage-scoped `pause` and `interrupt` controls can target a visible nested child stage from the expanded graph; `quit` remains run-level. Atomic routes stage controls to the owning nested run internally.
2972
+ - `pause`, `interrupt`, and `quit` can target one top-level run or `all: true`; `stageId` cannot be combined with `all: true`. Stage-scoped `pause` and `interrupt` controls can target a visible nested child stage from the expanded graph. Atomic routes stage controls to the owning nested run internally.
2973
+ - `interrupt` and `quit` can also name one in-flight `ctx.tool` node with `stageId`, by expanded node id, local `tool:<argsHash>` id, or tool name. Both mean the same thing for a tool: abort that single call now. Tool nodes stay non-attachable — this is an abort control, not a chat target. Identifiers resolve exactly first and then uniquely; a name shared by two tool nodes (or by a stage and a tool) returns the same ambiguity diagnostic stages get, listing each match as `<name> (tool)`.
2974
+ - Aborting one tool node leaves every sibling stage and sibling tool node running and does not pause the run. The node becomes `cancelled`, writes no replayable checkpoint, and re-runs on a later resume. Whether the run itself survives is ordinary author control flow: an awaited `ctx.tool` that is aborted rejects, exactly as it would for any other failure, unless the workflow catches it. A node that has already settled reports that it is not running rather than silently succeeding.
2975
+ - Whole-run `quit` stays authoritative even if workflow code catches the tool rejection. A catch may run cleanup, but its returned outputs do not convert the quit into a completed run: the executor suspends and quit's paused/resumable record stands. To abort one call and intentionally keep the workflow going, target that node instead of quitting the run.
2976
+ - A targeted tool abort reports the node outcome and the run separately: `status: "cancelled"` for the node it cancelled, `stageId` for that node, `abandoned` when the callback ignored its signal, and `workflowStatus` for the run status *observed* when the action returned. It never reports `paused`, and it never predicts what the run does next.
2977
+ - `pause` never accepts a tool node: `ctx.tool` has no turn boundary to stop at, so Atomic rejects it with `Tool nodes cannot be paused; ... Use interrupt or quit to abort it.` instead of a silent no-op.
2896
2978
  - `interrupt` is resumable: it pauses live work when pausable stages exist and keeps the run in live history/status.
2897
2979
  - `pause` is useful for pausing a live run or a single live stage without treating it as a destructive abort.
2898
- - `resume` can target a stage with `stageId`; the target may be a stage id, unique prefix, or stage name. `message` is forwarded to paused work. For a live interrupted streaming prompt, Atomic preserves the existing prompt loop without duplicating the user message and injects `Continue where you left off. If you believe you are finished with your original task (or a redefined task if the user told you), stop.` when required before normal readiness-gate completion. For a paused stage that was idle waiting for a new stage-chat turn, a non-empty message resumes the stage and starts exactly one fresh prompt containing that message; an empty resume releases the pause without creating a prompt.
2899
- - An explicit workflow-tool `resume` target that is absent from the current session store triggers targeted DBOS discovery before Atomic returns `Run not found`. Eligible exact IDs and unique prefixes resume under the original workflow ID; durable prefix collisions return every matching ID. Resource-loading and durable-backend failures remain visible. Ordinary workflow-tool `status` listing stays session-local and does not eagerly hydrate durable history.
2900
- - `quit` gracefully pauses in-flight work, marks the run resumable, and leaves it available to `/workflow resume`.
2980
+ - `resume` can target a stage with `stageId`; the target may be an exact stage id or an exact stage name. `message` is forwarded to paused work. For a live interrupted streaming prompt, Atomic preserves the existing prompt loop without duplicating the user message and injects `Continue where you left off. If you believe you are finished with your original task (or a redefined task if the user told you), stop.` when required before normal readiness-gate completion. For a paused stage that was idle waiting for a new stage-chat turn, a non-empty message resumes the stage and starts exactly one fresh prompt containing that message; an empty resume releases the pause without creating a prompt.
2981
+ - An explicit workflow-tool `resume` target that is absent from the current session store triggers targeted DBOS discovery before Atomic returns `Run not found`. The target must be a full run UUID; an eligible exact ID resumes under the original workflow ID, and a malformed target is rejected before any durable lookup happens. Resource-loading and durable-backend failures remain visible. Ordinary workflow-tool `status` listing stays session-local and does not eagerly hydrate durable history.
2982
+ - Run-level `quit` gracefully pauses in-flight work, marks the run resumable, and leaves it available to `/workflow resume`. A run whose only in-flight work is a `ctx.tool` node is quit like any other: it pauses as resumable instead of reporting that there are no controllable stages.
2901
2983
  - `reload` refreshes discovered workflow resources in-process; the optional `reason` is echoed in the result.
2902
2984
 
2903
2985
  Use slash commands for graph connect and stage attach because those are interactive TUI surfaces. When a run needs user input or attention, tell the user instead of polling silently.
@@ -2906,6 +2988,20 @@ Use slash commands for graph connect and stage attach because those are interact
2906
2988
 
2907
2989
  Graceful quit is idempotent for an already-paused resumable run. If a run is waiting on `ctx.ui`, quit preserves its current DBOS prompt reservation. Answers cannot advance paused workflow code until explicit resume; checkpointing the answer releases exactly that reservation generation. Concurrent and nested prompts use composed scopes and independent DBOS reservation tokens.
2908
2990
 
2991
+ **Quit closes `ctx.tool` admission before it becomes a durability boundary.** A run-level quit pauses controllable stages and waits for their acknowledgements, then closes the root-shared tool-admission boundary shared by the root run and every nested run. Closing is what makes the following scan final: a call admitted while the stage pauses were still being acknowledged is included, and no call can start afterwards — not even while the durable write is in flight. Quit then aborts that complete set, waits a bounded interval for the callbacks to settle, and only then records the durable paused transition and marks the run resumable.
2992
+
2993
+ Aborting a call is the point of no return: that callback's executor is already committed to suspending. So if the durable paused transition then fails or is refused, Atomic still records the pause locally — the run is never left reported as running with nothing running it — but does not advertise it as resumable, and the reported error names both the durable failure and what it left behind. The run stays controllable, so running `/workflow quit` again re-attempts the durable transition and upgrades the run to resumable once it lands.
2994
+
2995
+ A `ctx.tool` call attempted after admission closed never runs: it receives the graceful-quit signal, so it suspends the workflow instead of failing it, and creates no graph node, checkpoint, or side effect.
2996
+
2997
+ A callback that ignores its abort signal is abandoned rather than pinning quit forever — mirroring the failure path — and the quit result reports each abandoned call in `abandonedTools` alongside the cancelled nodes in `cancelledTools`. Both carry the owning `{runId, nodeId}` identity, because two nested child runs legitimately share one local `tool:<argsHash>` id; slash/tool output prints them as `<runId>/<nodeId>`.
2998
+
2999
+ A run whose only in-flight work is a `ctx.tool` node counts as controllable work: it pauses as resumable instead of returning `no_active_stages`. Because a cancelled tool node has no replayable checkpoint, resume re-executes exactly that callback at the same ordinal and node id; completed sibling tools replay from cache.
3000
+
3001
+ Catching the cancellation does not opt out. If workflow code wraps the aborted `await ctx.tool(...)` in `try`/`catch` and returns normally, Atomic still suspends the run rather than publishing a completed result, so the paused/resumable state quit recorded is what survives.
3002
+
3003
+ When a callback was abandoned, its executor stays alive but stops owning the run: Atomic detaches that background job, so `/workflow resume` launches a fresh executor under the same workflow id instead of adopting a job nothing is driving. The abandoned callback may still finish afterwards — its aborted signal blocks any replayable write, and its stale bookkeeping can neither mutate the replacement run's tool node nor unregister the replacement's job or cancellation entry.
3004
+
2909
3005
  When a paused stage interrupted an active model turn, Atomic preserves that turn's existing pause loop: a non-empty resume message is delivered exactly once through the resumed loop, and (if the stage has not finalized) Atomic injects `Continue where you left off. If you believe you are finished with your original task (or a redefined task if the user told you), stop.` before normal completion/readiness handling. A no-message interrupted-turn resume injects the same continuation directly. A different state applies when the stage was idle and waiting for a new stage-chat turn: resuming with a non-empty message starts exactly one fresh prompt containing the text, while an empty resume only releases the pause and does not fabricate a user turn or continuation.
2910
3006
 
2911
3007
  The same continuation applies to user messages queued into a live streaming stage. Steering a turn (Enter in an attached stage chat), queueing a follow-up (Ctrl+F), or using `workflow({ action: "send" })` with `steer`/`followUp` delivery arms the identical continuation prompt, which Atomic injects once when the interrupted turn ends — even if several messages were queued during that turn — so a steered stage returns to its original (or user-redefined) objective instead of stopping after answering the queued message.
@@ -2924,7 +3020,7 @@ Any eligible terminal agent stage with a valid retained session opens as an inte
2924
3020
 
2925
3021
  When a nested stage is reopened after a restart or from another checkout through the explicit TUI path, its session cwd comes from the durable root workflow (resolved workflow cwd first, then original invocation cwd) while stage-control ownership remains with the actual child run. Follow-up turns are appended in place to the stage's retained session (no separate fork), so the agent may still invoke its ordinary tools and cause side effects; only the workflow DAG, run/stage status, results, timings, checkpoints, and topology are immutable. Post-mortem chat does not resume or modify workflow execution state.
2926
3022
 
2927
- Pressing Escape during a live post-mortem turn pauses that retained conversation's queued messages without changing the terminal workflow snapshot. The next ordinary submission explicitly releases the conversation queue before it starts the new turn; clearing or restoring every visible queued item does not implicitly resume it.
3023
+ Pressing Escape during a live post-mortem turn aborts that retained conversation's active work and restores queued steering/follow-up text to the editor without changing the terminal workflow snapshot. The conversation remains paused; the next ordinary submission explicitly releases the conversation queue before it starts the new turn. Clearing or restoring every visible queued item does not implicitly resume it.
2928
3024
 
2929
3025
  Every host session replacement or shutdown invalidates post-mortem handles, including a session whose lazy reopen is still pending: if creation finishes after the boundary, Atomic disposes the newly created session and rejects the already-submitted prompt before it can execute. A stage stays a **read-only transcript** when it has no valid retained agent session — prompt/HIL and boundary/summary nodes, skipped nodes without a completed conversation, non-terminal handle-less stages (another process may still own the session), and missing/malformed/deleted session files.
2930
3026
 
@@ -2964,7 +3060,7 @@ Configure lifecycle behavior with `workflowNotifications.enabled` (default `true
2964
3060
 
2965
3061
  Human input is runtime-only: call `ctx.ui.input`, `ctx.ui.confirm`, `ctx.ui.select`, `ctx.ui.editor`, or `ctx.ui.custom<T>` when the workflow needs a decision. No builder-level declaration is required or supported.
2966
3062
 
2967
- Human-in-the-loop prompts from `ctx.ui.input`, `ctx.ui.confirm`, `ctx.ui.select`, `ctx.ui.editor`, and `ctx.ui.custom<T>` appear as awaiting-input nodes in the workflow UI/graph viewer, not as ordinary chat modals. Workflow definitions do not declare HIL; runtime `ctx.ui.*` calls create prompt nodes. If the prompt lives inside an imported child workflow, it still appears in the same expanded parent graph so the user can focus and answer it without switching to a separate child status entry.
3063
+ Human-in-the-loop prompts from `ctx.ui.input`, `ctx.ui.confirm`, `ctx.ui.select`, `ctx.ui.editor`, and `ctx.ui.custom<T>` appear as awaiting-input nodes in the workflow UI/graph viewer, not as ordinary chat modals. Workflow definitions do not declare HIL; runtime `ctx.ui.*` calls create prompt nodes. If the prompt lives inside an imported child workflow, it still appears in the same expanded parent graph so the user can focus and answer it without switching to a separate child status entry. When the attached stage has a pending prompt, its attribution banner is headed `AWAITING INPUT` and shows the full run id in a two-row identity block; the question and its options continue through the existing prompt UI below the banner.
2968
3064
 
2969
3065
  Use `/workflow connect <run-id>` (or F2), then press Enter on the focused node or click a graph node to focus and open or attach it for local answers. Custom widget prompts mount inside the attached stage chat and must be completed interactively with the widget's `done(value)` callback.
2970
3066
 
@@ -3009,7 +3105,7 @@ When two sessions race to resume the same paused workflow, a durable first-write
3009
3105
  ### How it works
3010
3106
 
3011
3107
  - **Only `ctx.*` blocks are checkpointed**: code outside `ctx.*` is not durable.
3012
- - **Durable side effects and graph nodes**: every `ctx.tool` invocation creates a tracked, non-chat graph node before its callback runs. Atomic flushes successful outputs and opt-in recoverable failure outcomes before exposing them, so resume does not repeat an already-settled callback. Tool nodes can appear before, between, after, or without model stages.
3108
+ - **Durable side effects and graph nodes**: every `ctx.tool` invocation creates a tracked, non-chat graph node before its callback runs. Atomic flushes successful outputs and opt-in recoverable failure outcomes before exposing them, so resume does not repeat an already-settled callback. Tool nodes can appear before, between, after, or without model stages. An unfinished, aborted, or abandoned tool node has no replayable result and runs again on resume, while completed siblings stay cache hits.
3013
3109
  - **Durable child identity before dispatch**: before a nested `ctx.workflow(...)` can run child code or a child side effect, Atomic persists and awaits a versioned boundary-start record containing its stable boundary and child run ids, root/parent ownership, source order and parents, composed replay scope, alias, workflow, lifecycle state, and a deterministic fingerprint of the definition plus exact validated inputs. Distinct-input parallel calls keep stable independent scopes even when restart reverses dispatch order; identical calls share that fingerprint and use their own ordinal. Replay validates and reuses that identity before allocating any UUID.
3014
3110
  - **Symmetric nested scopes**: child effects stay stored under the durable root, while every child sees only its own local checkpoint view. Each nesting layer strips exactly one scope and never suffix-matches sibling or root data, so the rule composes at any depth.
3015
3111
  - **Stable durable graph**: tool, stage, task, chain, parallel, and child-workflow checkpoints preserve stable source identity/order, parent DAG edges, actual status, owning-run/boundary metadata, timing, output summary, model, retained chat-session references, and exact `{ runId, stageId }` targets. Fresh-process resume and completed inspection reconstruct tool-only, nested-child, mixed, and parallel topology directly from DBOS.
@@ -3026,7 +3122,7 @@ Durable `/workflow resume` preserves completed stage metadata, active-stage elap
3026
3122
 
3027
3123
  Each new Atomic process that reopens unfinished work starts from the latest saved baseline, so repeated process-boundary resumes keep stable boundary/child ids, status, graph, and lifecycle duration cumulative without double-counting pauses. A stage paused at ten seconds resumes at ten seconds, and the main-chat dashboard reports prior-session elapsed plus current-session elapsed. Completed inspection uses that same accumulated run timing rather than DBOS record wall-clock age.
3028
3124
 
3029
- Repeated, sibling, sequential, parallel, and multi-level child calls keep independent composed scopes and stable boundary order. The expanded graph routes attach, send, pause, interrupt, and resume through each stage's ordinary owning `{ runId, stageId}`. Exact expanded ids resolve first; local ids, prefixes, and names resolve only when unique, so collisions never select the first match silently.
3125
+ Repeated, sibling, sequential, parallel, and multi-level child calls keep independent composed scopes and stable boundary order. The expanded graph routes attach, send, pause, interrupt, and resume through each stage's ordinary owning `{ runId, stageId}`. Resolution is exact: an expanded id, a local stage id, or a name must match whole, and colliding names return an ambiguity diagnostic rather than selecting the first match silently.
3030
3126
 
3031
3127
  ### `ctx.tool` — durable cached tool execution
3032
3128
 
@@ -3040,6 +3136,10 @@ Recoverable output is explicit data flow. Atomic does not add a failed tool outc
3040
3136
 
3041
3137
  Cancellation, closed tool admission, and durable-storage faults still throw. They never become ordinary `{ ok: false }` callback outcomes. Omitting `failureMode: "return"` also keeps the existing behavior: an exhausted callback error rejects `ctx.tool` and fails the workflow unless author code catches it. Atomic persists that failed node and the root's selected tool link for later inspection, but excludes the failure record from the replay cache, so a resume or rerun calls the function again. Command failures that expose `exitCode`, `stdout`, or `stderr` remain failures even when a wrapper also uses cancellation-like text or codes; only a real run cancellation that wins the terminal race produces a killed/cancelled root.
3042
3138
 
3139
+ **Per-node cancellation.** Each logical `ctx.tool` call runs under its own `AbortController`, combined with the run's signal and handed to the callback as `{ signal }`. A run abort cascades to every live node; `workflow({ action: "quit"|"interrupt", runId, stageId })` naming one tool node aborts exactly that node and leaves its siblings alone. All retries of one call share that single signal.
3140
+
3141
+ A cancelled call is recorded as `cancelled`, not `failed`, and is never a run failure by itself: it writes no replayable `tool:` checkpoint and no `return_failure` outcome even under `failureMode: "return"`, so a cancellation can never replay as data. Return mode does keep exactly one inspection-only `tool-failure:` record carrying the cancellation message, written for every cancellation timing — while the callback awaits, when the callback throws, and when the callback fulfills after the abort but before persistence. That id is excluded from replay lookup, so `getToolCheckpoint()` still misses and the call runs again. A callback that ignores its signal and returns late is caught before persistence, so its value cannot become a checkpoint either. Resume recomputes the same ordinal and `argsHash` from authored order, so the re-run occupies the same `tool:<argsHash>` graph node instead of creating a new one.
3142
+
3043
3143
  Tool admission stays open while the workflow body runs and while already-admitted tools drain, including immediate promise-settlement continuations. Before any completed, failed, blocked, exited, or cancelled executor outcome is published, admission closes atomically. A detached call through a retained `ctx.tool` function after that point returns a rejected native promise without starting its callback, retries, graph node, or durable checkpoint; ignoring that promise does not emit an unhandled rejection.
3044
3144
 
3045
3145
  ```ts
@@ -3048,11 +3148,13 @@ export default workflow({
3048
3148
  inputs: { source: Type.String() },
3049
3149
  run: async (ctx) => {
3050
3150
  // This side effect is cached durably. On resume, it will NOT re-execute.
3151
+ // Forwarding `signal` lets a quit or targeted abort stop a hung fetch instead of
3152
+ // pinning the run until the request gives up on its own.
3051
3153
  const data = await ctx.tool(
3052
3154
  "fetch-dataset",
3053
3155
  { source: ctx.inputs.source },
3054
- async () => {
3055
- const res = await fetch(ctx.inputs.source);
3156
+ async ({ signal }) => {
3157
+ const res = await fetch(ctx.inputs.source, { signal });
3056
3158
  return await res.text();
3057
3159
  },
3058
3160
  { retriesAllowed: true, maxAttempts: 3 },
@@ -3087,16 +3189,20 @@ Changing `iteration` makes each loop pass a distinct durable call. Reusing the s
3087
3189
 
3088
3190
  ### `/workflow resume` — cross-session resume selector
3089
3191
 
3090
- The `/workflow resume` command mirrors `/resume` ergonomics and `/workflows` is its alias. With no id, it builds one newest-first picker from eligible live runs and current DBOS resumable/completed records. DBOS is the authoritative catalog; selected records are hydrated and revalidated before resume or inspection. Running workflows never appear: fresh-heartbeat rows are excluded in every session to prevent double dispatch, and stale ones surface as `crashed`.
3192
+ The `/workflow resume` command mirrors `/resume` ergonomics and `/workflows` is its alias. With no id, it builds one newest-first picker from live runs that satisfy the shared resumability predicate and current DBOS resumable/completed records. DBOS is the authoritative catalog; selected records are hydrated and revalidated before resume or inspection. Running workflows never appear: fresh-heartbeat rows are excluded in every session to prevent double dispatch, and stale ones surface as `crashed`. A row whose durable checkpoint or referenced artifact is missing is not resumable and is omitted rather than offered and rejected later. Naming such an id explicitly still produces the existing clear no-checkpoint/not-resumable error.
3193
+
3194
+ The resume picker lists only runs the resume path would actually accept. One shared predicate (`isWorkflowRunResumable` in `packages/workflows/src/durable/resume-eligibility.ts`) backs both the picker and the `resume` command, so a row can never be offered and then refused. A run stops being resumable when it reaches a terminal state without a durable checkpoint or pending prompt progress, when its durable entry is explicitly deleted with Ctrl+D, or when its referenced artifacts are gone. The broader `connect`/`attach` pickers and `/workflow status` keep listing terminal runs for inspection; only `resume` is filtered.
3091
3195
 
3092
3196
  Rows carry semantic colors — completed green, paused yellow, failed/blocked/crashed red — and show checkpoint progress without the redundant pending-prompt count. The open picker live-updates on local run changes plus a bounded cross-session poll, so state transitions appear (and freshly running workflows disappear) without reopening it.
3093
3197
 
3094
- Ctrl+D deletes a highlighted inactive durable or completed row after confirmation. Deletion rechecks same-process activity and the authoritative DBOS status, refuses a `running` workflow, and leaves host and stage chat transcripts untouched. The history surface matches `/resume` retention semantics: eligible runs remain searchable regardless of age or count, with no automatic history garbage collection. The picker mounts before asynchronous catalog hydration completes and merges DBOS rows when ready.
3198
+ Ctrl+D deletes a highlighted inactive durable or completed row after confirmation. Deletion rechecks same-process activity and the authoritative DBOS status, refuses a `running` workflow, and leaves host and stage chat transcripts untouched. The history surface matches `/resume` retention semantics: eligible runs remain searchable regardless of age or count. Aged-out history is driven by the state-aware `WORKFLOW_ARTIFACT_RETENTION_MS` policy: only terminal or unowned directories older than the policy are pruned, and pruning deletes the durable entry first, removing the artifact directory only when that deletion succeeds — a refused or unavailable deletion preserves both. Running, paused, quit, blocked, and awaiting-input runs retain their artifacts and durable records so they remain resumable. The picker mounts before asynchronous catalog hydration completes and merges DBOS rows when ready.
3095
3199
 
3096
3200
  Only current-format DBOS records are selectable. Atomic hides unsupported or malformed records without reinterpreting them.
3097
3201
 
3098
3202
  Selecting a paused, resumable failed, blocked, or crash-recovery target follows the existing resume path unchanged: Atomic re-dispatches the workflow with its cached inputs and the **original workflow id**. Every nested invocation validates and reuses its durable boundary and child identity before dispatch. Previously completed `ctx.tool`, `ctx.ui`, stage/task/chain/parallel items, and child boundaries replay from checkpoints instead of executing again; only incomplete work continues.
3099
3203
 
3204
+ A run quit while a `ctx.tool` call was in flight resumes the same way: the unfinished call left no replayable checkpoint, so resume re-executes exactly that callback at the same ordinal and `tool:<argsHash>` node id, while every completed tool — including a sibling that finished before the quit — replays from cache. A cancelled node never replays a cancellation as a value.
3205
+
3100
3206
  Selecting a completed target—or a checkpointed failed target marked non-resumable—follows a separate read-only open path. Atomic reconstructs root and reciprocal nested child-run snapshots from authoritative checkpoints, remaps persisted source-stage, boundary, and tool references into a stable expanded hierarchy, and never calls the resume dispatcher or runs workflow code, tools, tasks, or prompts. These graphs remain inspectable even when no retained chat transcript survives, including tool-only graphs.
3101
3207
 
3102
3208
  A terminal child stage with a valid retained session may be reopened for detached post-mortem conversation through `/workflow attach` or completed graph inspection. Follow-up is routed to that real child `{runId, stageId}` and may append chat, but it cannot pause, resume, retry, mutate root or child execution state, write a terminal checkpoint, or emit a duplicate lifecycle notice. Programmatic `workflow send` rejects the terminal root before nested-owner routing or session probing. Tool nodes never offer chat attachment.
@@ -3107,16 +3213,16 @@ Fresh completed inspection does not currently persist the workflow's declared ro
3107
3213
 
3108
3214
  ```text
3109
3215
  /workflow resume # Mixed picker: resumable + completed
3110
- /workflow resume <workflow-id-or-prefix> # Resume unfinished work or open completed detail/chat
3216
+ /workflow resume <full-workflow-uuid> # Resume unfinished work or open completed detail/chat
3111
3217
  /workflows # Alias for the same mixed picker
3112
- /workflows <workflow-id-or-prefix> # Alias for targeted resume/open
3218
+ /workflows <full-workflow-uuid> # Alias for targeted resume/open
3113
3219
  ```
3114
3220
 
3115
- Explicit full IDs take precedence, while prefixes resolve across top-level live, resumable durable, and completed targets as one namespace. An exact loadable paused top-level live target resumes directly from in-session state without enumerating the durable completed-history catalog; this keeps explicit live resume responsive even when retained durable history is large and preserves live-over-durable precedence for duplicate IDs. If a stale or concurrent catalog view presents the same failed root as both resumable and read-only history, the resumable durable target wins for exact and prefix routing. Nested child runs remain excluded from this top-level target namespace even when addressed by an exact ID.
3221
+ Targets resolve across top-level live, resumable durable, and completed entries as one namespace, matched by full UUID only. An exact loadable paused top-level live target resumes directly from in-session state without enumerating the durable completed-history catalog; this keeps explicit live resume responsive even when retained durable history is large and preserves live-over-durable precedence for duplicate IDs. If a stale or concurrent catalog view presents the same failed root as both resumable and read-only history, the resumable durable target wins. Nested child runs remain excluded from this top-level target namespace even when addressed by an exact ID.
3116
3222
 
3117
- The non-interactive `workflow({ action: "resume", runId: "<id-or-prefix>" })` surface uses the same durable resumable-target lookup behavior for explicit targets. If the target is absent locally, Atomic loads workflow resources, queries the authoritative DBOS resumable catalog, and only then reports a missing run. This targeted hydration does not change `workflow({ action: "status" })`: an empty session-local status before explicit resume does not imply that DBOS deleted the workflow.
3223
+ The non-interactive `workflow({ action: "resume", runId: "<full-run-uuid>" })` surface uses the same durable resumable-target lookup behavior for explicit targets. If the target is absent locally, Atomic loads workflow resources, queries the authoritative DBOS resumable catalog, and only then reports a missing run. This targeted hydration does not change `workflow({ action: "status" })`: an empty session-local status before explicit resume does not imply that DBOS deleted the workflow.
3118
3224
 
3119
- Prefixes and other targets continue through the combined catalog so ambiguity and read-only inspection behavior remain unchanged. Ambiguous prefixes use the existing-style diagnostic. A current completed or non-resumable failed backend row with valid graph checkpoints remains inspectable even if every retained stage conversation is unavailable. Missing, empty, directory, context-empty, or partially malformed transcript paths are stripped from chat attachment while the graph stays read-only and visible.
3225
+ A target that is not a full UUID is rejected before the combined catalog is consulted, so a truncated id never reaches durable lookup. Read-only inspection behavior is otherwise unchanged. A current completed or non-resumable failed backend row with valid graph checkpoints remains inspectable even if every retained stage conversation is unavailable. Missing, empty, directory, context-empty, or partially malformed transcript paths are stripped from chat attachment while the graph stays read-only and visible.
3120
3226
 
3121
3227
  Validation uses the final retained transcript for a repeated stage replay key, so an obsolete superseded checkpoint path does not hide an otherwise valid read-only graph. Reopening inspection refreshes a changed authoritative retained-chat handle. Session-cache-only rows are hidden because the backend is authoritative. Checkpointed non-resumable failed roots appear only in read-only history; cancelled, killed, blocked non-resumable, failed roots without saved progress, and other terminal non-success states are never added. Normal `/resume`, `atomic -r`, and `--continue` behavior for internal workflow stage sessions is unchanged.
3122
3228
 
@@ -3128,13 +3234,18 @@ Validation uses the final retained transcript for a repeated stage replay key, s
3128
3234
  | **Stage failure (recoverable)** | Workflow marked `failed` or `blocked` and remains resumable by default. `/workflow resume <id>` continues from the last completed checkpoint unless durable metadata explicitly sets `resumable: false`. |
3129
3235
  | **Stage failure (non-recoverable)** | Workflow marked `failed` or `blocked` with `resumable: false`, so it cannot resume execution. A failed root with saved checkpoint progress may still appear in read-only history for inspection; a blocked root does not. |
3130
3236
  | **Process crash** | Workflow remains `running` in durable state. On next session start, it appears in resume discovery when it has a durable checkpoint or pending prompt. Resume re-executes from the last completed checkpoint. |
3131
- | **`ctx.tool` retry/default failure** | When `retriesAllowed: true`, the tool function is retried with exponential backoff. Cancellation is checked before each attempt and during retry backoff. Without `failureMode: "return"`, an exhausted callback error propagates and the workflow fails. |
3237
+ | **`ctx.tool` retry/default failure** | When `retriesAllowed: true`, the tool function is retried with exponential backoff. Cancellation is checked before each attempt, during retry backoff, and through the callback's own `signal`. Without `failureMode: "return"`, an exhausted callback error propagates and the workflow fails. |
3132
3238
  | **Recoverable `ctx.tool` failure** | With `failureMode: "return"`, exhausted callback failures are durably returned after retries. The tool node remains failed, downstream handoff is explicit, and replay returns the same outcome with `cached: true`. Cancellation and storage faults still throw. |
3239
+ | **`ctx.tool` node quit/interrupt** | `quit`/`interrupt` with a tool node id or name aborts that call's signal, marks the node `cancelled`, and leaves sibling stages and tools running. The action returns `status: "cancelled"` with the separately observed `workflowStatus`; it never reports the run as paused. No replayable `tool:` checkpoint and no `return_failure` outcome are written — return mode writes only inspection metadata — so resume re-runs exactly that call at the same ordinal and node id. |
3240
+ | **Run quit with in-flight tools** | Quit closes tool admission after stage pauses acknowledge, rescans every root/nested node, aborts that set, and waits a bounded interval before recording the durable paused/resumable transition, so the run is not declared quiesced while a callback still runs and no late call can slip in. A tool-only run pauses as resumable instead of reporting no controllable stages. A call attempted after the close is refused with the graceful-quit signal. Catching the cancellation in workflow code cannot turn the quit into a completed run. |
3241
+ | **Abandoned `ctx.tool` callback** | A callback that ignores its abort signal is abandoned after the bounded wait: quit proceeds, the node is published as `cancelled`, each abandoned call is reported as an owning `{runId, nodeId}` identity, and the stale background job is detached so resume relaunches a fresh executor under the same workflow id. A late return from that callback is discarded before persistence, cannot become a checkpoint, and cannot mutate or unregister the replacement run. |
3133
3242
  | **`ctx.ui` pending prompt** | If a UI prompt was not answered before interruption, resume leaves off on that prompt — the user must answer it to continue. |
3134
3243
 
3135
3244
  ### Configuring DBOS/Postgres
3136
3245
 
3137
- DBOS/Postgres durability requires no setup on supported local platforms. To use an existing Postgres database, set `DBOS_SYSTEM_DATABASE_URL` before starting Atomic; otherwise Atomic provisions embedded Postgres (with drop-privilege support when running as root on Linux), with Docker as a platform fallback. The DBOS SDK ships with `@bastani/atomic`. If no durable backend can be provisioned, workflows run on a process-local in-memory backend with a loud non-durable warning never on the legacy per-workflow file store under `~/.atomic/workflow-durable` — and cross-process resume is unavailable until Postgres provisioning is fixed.
3246
+ **Alpine/musl archives.** Musl release archives deliberately omit `@embedded-postgres/*` binary packages because the available packages are glibc-linked and cannot run on musl. Durable workflows on Alpine must use external Postgres by setting `DBOS_SYSTEM_DATABASE_URL` or use Docker. If neither is available, Atomic falls back to a process-local in-memory backend with a loud non-durable warning; state does not survive process exit and cross-process resume is unavailable.
3247
+
3248
+ DBOS/Postgres durability requires no setup on supported local platforms. To use an existing Postgres database, set `DBOS_SYSTEM_DATABASE_URL` before starting Atomic; otherwise Atomic provisions embedded Postgres where a compatible platform package exists (with drop-privilege support when running as root on Linux), with Docker as a platform fallback. The DBOS SDK ships with `@bastani/atomic`. If no durable backend can be provisioned, workflows run on a process-local in-memory backend with a loud non-durable warning — never on the legacy per-workflow file store under `~/.atomic/workflow-durable` — and cross-process resume is unavailable until Postgres provisioning is fixed.
3138
3249
 
3139
3250
  ```bash
3140
3251
  export DBOS_SYSTEM_DATABASE_URL="postgresql://user:password@localhost:5432/atomic_dbos_sys"
@@ -3635,6 +3746,8 @@ interface Store {
3635
3746
 
3636
3747
  This is the stable core exposed by the standalone authoring declaration. Atomic's runtime store also has graph, prompt, session, pause/resume, snapshot, and subscription methods used by embedded integrations; those richer runtime controls are not part of the lean workflow-package `Store` contract shown here.
3637
3748
 
3749
+ The embedded runtime's `graphSnapshot()` returns one deeply frozen, payload-free projection for each store version; repeated reads at the same version return the same object. Runtime code must change graph-visible state through a version-bumping store method before another task can observe it. `subscribeInvalidation()` reports those changes synchronously without creating a full snapshot. Legacy `subscribe(snapshot)` consumers still receive a full cloned snapshot; this includes status-file output when `statusFile: true`, while the default `statusFile: false` path avoids that payload traversal.
3750
+
3638
3751
  ### `createCancellationRegistry()` / `cancellationRegistry`
3639
3752
 
3640
3753
  ```typescript
@@ -3759,7 +3872,7 @@ Watch for these failure modes in long or multi-stage workflows:
3759
3872
  | Confusion | Similar instructions or duplicate facts conflict | Consolidate each shared contract into one canonical copy and name artifacts clearly |
3760
3873
  | Clash | User, system, or stage instructions disagree | Resolve conflicts before launching downstream stages |
3761
3874
 
3762
- Use compaction, file references, and bounded loops before context fills with transcript noise. In attached workflow stage chat, manual compaction shows `Compacting context...`, threshold compaction shows `Auto-compacting...`, and overflow recovery shows `Context overflow detected. Auto-compacting...` in the same animated status row used for normal model work. A successful compaction leaves the normal expandable `✻ Context compacted` boundary in the transcript; the boundary is reconstructed from the durable session and has a typed live fallback if the refreshed session snapshot is temporarily unavailable.
3875
+ Use compaction, file references, and bounded loops before context fills with transcript noise. In attached workflow stage chat, manual compaction shows `Compacting context...`, threshold compaction shows `Auto-compacting...`, and overflow recovery shows `Context overflow detected. Auto-compacting...` in the same animated status row used for normal model work. That label is a fact about the stage session rather than about the pane, so detaching to the graph and reattaching while compaction is still running restores the same reason-specific label instead of falling back to the generic `Working...` row; it clears as soon as the compaction ends. A successful compaction leaves the normal expandable `✻ Context compacted` boundary in the transcript; the boundary is reconstructed from the durable session and has a typed live fallback if the refreshed session snapshot is temporarily unavailable.
3763
3876
 
3764
3877
  ### Compression and Artifact Handoffs
3765
3878
 
@@ -3778,16 +3891,16 @@ Pass file references, not content. This is the strongly encouraged default for e
3778
3891
 
3779
3892
  Three rules make that work in practice:
3780
3893
 
3781
- 1. **One owner per artifact.** The runner writes the stage's final message to `output` after the stage ends. Do not also ask that stage's prompt to author the same path, or the agent's file is overwritten by its closing message. Either the stage returns the content and the runner saves it, or the prompt writes a path the stage does not declare as `output`.
3894
+ 1. **One owner per artifact.** The runner writes the stage's final assistant message to `output` after the stage ends, automatically writes the companion transcript outside the repository tree, and appends one instruction telling the model that its final message becomes the artifact. Your prompt does not need to restate any of that — describe the deliverable, not the plumbing. If a late admitted turn displaces the intended content, search the transcript with `rg` rather than assuming the curated artifact holds every later turn. A prompt may write other files freely; only the declared `output` path is runner-owned and overwritten at stage end.
3782
3895
  2. **Do not read an artifact back just to return it.** `outputMode: "file-only"` exists so the parent receives a compact reference. Calling `readFile` on that artifact and returning its text as a workflow output cancels the saving and drops the whole report into the caller's context window. Return the reference and a `*_path` output instead.
3783
- 3. **Return paths from the workflow.** Declared outputs are consumed by the calling session, so a workflow's `result` should be a reference plus explicit `*_path` outputs. Callers that need the body read the path; callers that only need the outcome pay nothing for it.
3896
+ 3. **Return paths from the workflow.** Declared outputs are consumed by the calling session, so a workflow's `result` should be a reference plus explicit `*_path` outputs. Callers that need the body read the path; callers that only need the outcome pay nothing for it. When a detail is missing from the curated artifact, search its companion transcript with `rg` and inspect a narrow range.
3784
3897
 
3785
3898
  Substantial handoffs should travel through files or durable artifacts instead of hidden transcript assumptions. This keeps stage prompts small, makes review/audit possible, and lets later stages reread the authoritative material without depending on what a previous model summarized. Remember that `reads` passes paths rather than content: a stage reads the file when it runs, so the artifact must hold the real report at that moment.
3786
3899
 
3787
3900
  ```ts
3788
3901
  const researchPath = ".atomic/workflows/runs/context-demo/research.md";
3789
3902
  await ctx.task("researcher", {
3790
- task: "Map the subsystem and return the report as your final message; the workflow saves it.",
3903
+ task: "Map the subsystem and return the complete report as your final message.",
3791
3904
  output: researchPath,
3792
3905
  outputMode: "file-only",
3793
3906
  });