@bastani/atomic 0.9.4 → 0.9.5-alpha.10

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 (759) hide show
  1. package/CHANGELOG.md +136 -2
  2. package/README.md +2 -2
  3. package/dist/builtin/cursor/CHANGELOG.md +6 -0
  4. package/dist/builtin/cursor/package.json +3 -3
  5. package/dist/builtin/cursor/src/model-mapper.ts +6 -3
  6. package/dist/builtin/intercom/CHANGELOG.md +31 -0
  7. package/dist/builtin/intercom/README.md +29 -21
  8. package/dist/builtin/intercom/broker/broker.ts +9 -120
  9. package/dist/builtin/intercom/broker/client.ts +29 -54
  10. package/dist/builtin/intercom/broker/delivered-message-cache.ts +44 -0
  11. package/dist/builtin/intercom/broker/paths.ts +42 -5
  12. package/dist/builtin/intercom/broker/pending-send-registry.ts +142 -0
  13. package/dist/builtin/intercom/broker/send-handler.ts +106 -0
  14. package/dist/builtin/intercom/broker/send-signature.ts +37 -0
  15. package/dist/builtin/intercom/broker/spawn.ts +78 -10
  16. package/dist/builtin/intercom/config.ts +6 -3
  17. package/dist/builtin/intercom/contact-supervisor-tool.ts +6 -4
  18. package/dist/builtin/intercom/foreground-detach-handoff.ts +136 -0
  19. package/dist/builtin/intercom/index-heavy.ts +50 -54
  20. package/dist/builtin/intercom/index.ts +320 -272
  21. package/dist/builtin/intercom/intercom-tool.ts +9 -3
  22. package/dist/builtin/intercom/lazy-heavy-proxy.ts +114 -0
  23. package/dist/builtin/intercom/lazy-subagent-ack.ts +20 -0
  24. package/dist/builtin/intercom/lazy-tool-execution.ts +39 -0
  25. package/dist/builtin/intercom/lifecycle-lease.ts +51 -0
  26. package/dist/builtin/intercom/lifecycle.ts +37 -20
  27. package/dist/builtin/intercom/package.json +12 -6
  28. package/dist/builtin/intercom/reply-routing.ts +17 -0
  29. package/dist/builtin/intercom/result-renderers.ts +1 -1
  30. package/dist/builtin/intercom/subagent-relay.ts +58 -12
  31. package/dist/builtin/intercom/types.ts +3 -3
  32. package/dist/builtin/intercom/ui/compose.ts +2 -2
  33. package/dist/builtin/intercom/ui/inline-message.ts +2 -2
  34. package/dist/builtin/intercom/ui/session-list.ts +2 -2
  35. package/dist/builtin/mcp/CHANGELOG.md +23 -0
  36. package/dist/builtin/mcp/OAUTH.md +1 -0
  37. package/dist/builtin/mcp/README.md +10 -6
  38. package/dist/builtin/mcp/apps-cancellation.ts +32 -0
  39. package/dist/builtin/mcp/call-tool-result.ts +9 -0
  40. package/dist/builtin/mcp/caller-wait.ts +50 -0
  41. package/dist/builtin/mcp/command-registration.ts +82 -0
  42. package/dist/builtin/mcp/direct-tool-executor.ts +279 -0
  43. package/dist/builtin/mcp/direct-tools.ts +40 -255
  44. package/dist/builtin/mcp/host-html-template.ts +4 -2
  45. package/dist/builtin/mcp/index.ts +274 -239
  46. package/dist/builtin/mcp/init.ts +96 -126
  47. package/dist/builtin/mcp/mcp-auth-flow.ts +247 -237
  48. package/dist/builtin/mcp/mcp-callback-server.ts +89 -68
  49. package/dist/builtin/mcp/mcp-oauth-provider.ts +23 -1
  50. package/dist/builtin/mcp/metadata-hydration.ts +52 -0
  51. package/dist/builtin/mcp/package.json +3 -3
  52. package/dist/builtin/mcp/proxy-auth.ts +4 -4
  53. package/dist/builtin/mcp/proxy-call.ts +111 -40
  54. package/dist/builtin/mcp/proxy-connect.ts +35 -15
  55. package/dist/builtin/mcp/proxy-info-modes.ts +106 -23
  56. package/dist/builtin/mcp/proxy-modes.ts +3 -3
  57. package/dist/builtin/mcp/session-cleanup-barrier.ts +43 -0
  58. package/dist/builtin/mcp/startup-warmup.ts +98 -0
  59. package/dist/builtin/mcp/state-lease.ts +12 -0
  60. package/dist/builtin/mcp/tool-result-renderer.ts +3 -3
  61. package/dist/builtin/mcp/ui-server.ts +8 -8
  62. package/dist/builtin/mcp/ui-session.ts +9 -18
  63. package/dist/builtin/subagents/CHANGELOG.md +60 -0
  64. package/dist/builtin/subagents/README.md +30 -29
  65. package/dist/builtin/subagents/agents/code-simplifier.md +2 -2
  66. package/dist/builtin/subagents/agents/codebase-analyzer.md +2 -2
  67. package/dist/builtin/subagents/agents/codebase-locator.md +2 -2
  68. package/dist/builtin/subagents/agents/codebase-online-researcher.md +2 -2
  69. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +2 -2
  70. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +2 -2
  71. package/dist/builtin/subagents/agents/codebase-research-locator.md +2 -2
  72. package/dist/builtin/subagents/agents/debugger.md +2 -2
  73. package/dist/builtin/subagents/agents/worker.md +2 -2
  74. package/dist/builtin/subagents/package.json +5 -5
  75. package/dist/builtin/subagents/prompts/review-loop.md +1 -1
  76. package/dist/builtin/subagents/skills/subagent/SKILL.md +37 -36
  77. package/dist/builtin/subagents/src/extension/api-lifecycle.ts +64 -0
  78. package/dist/builtin/subagents/src/extension/fanout-child.ts +44 -51
  79. package/dist/builtin/subagents/src/extension/index.ts +289 -320
  80. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +7 -10
  81. package/dist/builtin/subagents/src/extension/schemas.ts +22 -5
  82. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +89 -0
  83. package/dist/builtin/subagents/src/extension/tool-description.ts +29 -0
  84. package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +13 -2
  85. package/dist/builtin/subagents/src/intercom/result-intercom.ts +4 -4
  86. package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +106 -0
  87. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +26 -20
  88. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +13 -2
  89. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +3 -0
  90. package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +1 -1
  91. package/dist/builtin/subagents/src/runs/background/completion-claims.ts +189 -0
  92. package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +44 -7
  93. package/dist/builtin/subagents/src/runs/background/completion-notification.ts +34 -0
  94. package/dist/builtin/subagents/src/runs/background/notify.ts +72 -22
  95. package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +232 -0
  96. package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +151 -0
  97. package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +72 -0
  98. package/dist/builtin/subagents/src/runs/background/result-retry-scheduler.ts +48 -0
  99. package/dist/builtin/subagents/src/runs/background/result-status.ts +81 -0
  100. package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +59 -0
  101. package/dist/builtin/subagents/src/runs/background/result-watcher.ts +177 -233
  102. package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +3 -2
  103. package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +73 -14
  104. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +29 -15
  105. package/dist/builtin/subagents/src/runs/background/top-level-async.ts +1 -2
  106. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +1 -0
  107. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +1 -0
  108. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +1 -0
  109. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +7 -9
  110. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +3 -13
  111. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +2 -15
  112. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +2 -2
  113. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +63 -46
  114. package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +48 -0
  115. package/dist/builtin/subagents/src/runs/foreground/execution-detach-route.ts +17 -0
  116. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +39 -26
  117. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +3 -1
  118. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +3 -51
  119. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +6 -11
  120. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +11 -2
  121. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +2 -0
  122. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +5 -112
  123. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +2 -0
  124. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +68 -118
  125. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +79 -7
  126. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +2 -2
  127. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +3 -0
  128. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +2 -2
  129. package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +55 -12
  130. package/dist/builtin/subagents/src/shared/artifacts.ts +22 -11
  131. package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +294 -0
  132. package/dist/builtin/subagents/src/shared/exclusive-file-publication.ts +44 -0
  133. package/dist/builtin/subagents/src/shared/jsonl-writer.ts +1 -0
  134. package/dist/builtin/subagents/src/shared/model-info.ts +2 -2
  135. package/dist/builtin/subagents/src/shared/settings.ts +20 -10
  136. package/dist/builtin/subagents/src/shared/types-async.ts +3 -1
  137. package/dist/builtin/subagents/src/shared/types-config.ts +2 -0
  138. package/dist/builtin/subagents/src/shared/types-runtime.ts +3 -2
  139. package/dist/builtin/subagents/src/slash/slash-commands.ts +9 -12
  140. package/dist/builtin/subagents/src/slash/slash-live-state.ts +63 -32
  141. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +15 -48
  142. package/dist/builtin/subagents/src/tui/render-layout.ts +9 -0
  143. package/dist/builtin/subagents/src/tui/render-result.ts +7 -0
  144. package/dist/builtin/subagents/src/tui/render-stable-output.ts +1 -0
  145. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +27 -25
  146. package/dist/builtin/subagents/src/tui/render-widget.ts +177 -132
  147. package/dist/builtin/subagents/src/tui/render.ts +1 -1
  148. package/dist/builtin/web-access/CHANGELOG.md +14 -0
  149. package/dist/builtin/web-access/README.md +4 -0
  150. package/dist/builtin/web-access/content-tools.ts +8 -3
  151. package/dist/builtin/web-access/index-heavy.ts +1 -1
  152. package/dist/builtin/web-access/index.ts +190 -46
  153. package/dist/builtin/web-access/lifecycle-lease.ts +38 -0
  154. package/dist/builtin/web-access/package.json +2 -2
  155. package/dist/builtin/web-access/result-renderers.ts +1 -1
  156. package/dist/builtin/web-access/summary-review.ts +1 -1
  157. package/dist/builtin/web-access/web-search-activity.ts +1 -1
  158. package/dist/builtin/web-access/web-search-return.ts +7 -0
  159. package/dist/builtin/web-access/web-search-summary.ts +1 -1
  160. package/dist/builtin/web-access/web-search-tool.ts +4 -2
  161. package/dist/builtin/workflows/CHANGELOG.md +98 -0
  162. package/dist/builtin/workflows/README.md +20 -16
  163. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +33 -9
  164. package/dist/builtin/workflows/builtin/goal-artifacts.ts +3 -1
  165. package/dist/builtin/workflows/builtin/goal-ledger.ts +3 -0
  166. package/dist/builtin/workflows/builtin/goal-prompts.ts +39 -5
  167. package/dist/builtin/workflows/builtin/goal-reducer.ts +21 -0
  168. package/dist/builtin/workflows/builtin/goal-reports.ts +23 -0
  169. package/dist/builtin/workflows/builtin/goal-review.ts +85 -6
  170. package/dist/builtin/workflows/builtin/goal-runner.ts +122 -49
  171. package/dist/builtin/workflows/builtin/goal-schemas.ts +22 -0
  172. package/dist/builtin/workflows/builtin/goal-types.ts +25 -1
  173. package/dist/builtin/workflows/builtin/goal.d.ts +5 -0
  174. package/dist/builtin/workflows/builtin/goal.ts +13 -2
  175. package/dist/builtin/workflows/builtin/index.d.ts +8 -0
  176. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +16 -5
  177. package/dist/builtin/workflows/builtin/ralph-core.ts +100 -15
  178. package/dist/builtin/workflows/builtin/ralph-models.ts +98 -66
  179. package/dist/builtin/workflows/builtin/ralph-review-gate.ts +37 -5
  180. package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +159 -0
  181. package/dist/builtin/workflows/builtin/ralph-runner.ts +75 -165
  182. package/dist/builtin/workflows/builtin/ralph.d.ts +3 -0
  183. package/dist/builtin/workflows/builtin/ralph.ts +4 -1
  184. package/dist/builtin/workflows/builtin/review-convergence.ts +111 -0
  185. package/dist/builtin/workflows/builtin/shared-prompts.ts +20 -1
  186. package/dist/builtin/workflows/package.json +2 -2
  187. package/dist/builtin/workflows/skills/create-spec/SKILL.md +2 -0
  188. package/dist/builtin/workflows/skills/impeccable/SKILL.md +16 -13
  189. package/dist/builtin/workflows/skills/impeccable/reference/adapt.md +1 -0
  190. package/dist/builtin/workflows/skills/impeccable/reference/adapt.native.md +58 -0
  191. package/dist/builtin/workflows/skills/impeccable/reference/android.md +40 -0
  192. package/dist/builtin/workflows/skills/impeccable/reference/animate.md +2 -0
  193. package/dist/builtin/workflows/skills/impeccable/reference/audit.md +2 -0
  194. package/dist/builtin/workflows/skills/impeccable/reference/audit.native.md +139 -0
  195. package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +69 -62
  196. package/dist/builtin/workflows/skills/impeccable/reference/critique.md +21 -7
  197. package/dist/builtin/workflows/skills/impeccable/reference/document.md +1 -1
  198. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +92 -0
  199. package/dist/builtin/workflows/skills/impeccable/reference/init.md +29 -7
  200. package/dist/builtin/workflows/skills/impeccable/reference/ios.md +45 -0
  201. package/dist/builtin/workflows/skills/impeccable/reference/layout.md +25 -1
  202. package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +23 -1
  203. package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +2 -1
  204. package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +75 -14
  205. package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +1 -1
  206. package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +31 -0
  207. package/dist/builtin/workflows/skills/impeccable/scripts/detector/design-system.mjs +64 -0
  208. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +118 -11
  209. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +16 -11
  210. package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +66 -0
  211. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +42 -10
  212. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
  213. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/page.mjs +4 -6
  214. package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +660 -0
  215. package/dist/builtin/workflows/skills/impeccable/scripts/hook-before-edit.mjs +516 -0
  216. package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +1764 -0
  217. package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +61 -0
  218. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-config.mjs +4 -2
  219. package/dist/builtin/workflows/skills/impeccable/scripts/lib/is-generated.mjs +2 -2
  220. package/dist/builtin/workflows/skills/impeccable/scripts/live/svelte-component.mjs +13 -16
  221. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +17 -11
  222. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +104 -37
  223. package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +9 -0
  224. package/dist/builtin/workflows/src/durable/backend.ts +12 -0
  225. package/dist/builtin/workflows/src/durable/child-primitive.ts +12 -8
  226. package/dist/builtin/workflows/src/durable/dbos-backend.ts +63 -2
  227. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +28 -0
  228. package/dist/builtin/workflows/src/durable/resume-catalog.ts +12 -0
  229. package/dist/builtin/workflows/src/durable/resume-runtime.ts +5 -2
  230. package/dist/builtin/workflows/src/durable/stage-primitive.ts +167 -28
  231. package/dist/builtin/workflows/src/durable/types.ts +30 -1
  232. package/dist/builtin/workflows/src/engine/primitives/task.ts +3 -1
  233. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +1 -2
  234. package/dist/builtin/workflows/src/engine/run-returned-status.ts +50 -16
  235. package/dist/builtin/workflows/src/engine/run.ts +32 -32
  236. package/dist/builtin/workflows/src/engine/runtime.ts +5 -0
  237. package/dist/builtin/workflows/src/extension/extension-factory.ts +3 -0
  238. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +9 -2
  239. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +137 -27
  240. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +22 -6
  241. package/dist/builtin/workflows/src/extension/public-types.ts +1 -1
  242. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +13 -1
  243. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +19 -4
  244. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +9 -0
  245. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +17 -17
  246. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +48 -23
  247. package/dist/builtin/workflows/src/extension/workflow-schema.ts +15 -2
  248. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +20 -8
  249. package/dist/builtin/workflows/src/extension/workflow-tool.ts +24 -8
  250. package/dist/builtin/workflows/src/runs/background/status.ts +4 -3
  251. package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +13 -3
  252. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +29 -8
  253. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +1 -1
  254. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +8 -0
  255. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +4 -3
  256. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +2 -0
  257. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +18 -19
  258. package/dist/builtin/workflows/src/runs/foreground/stage-runner-unresolved-overflow.ts +38 -0
  259. package/dist/builtin/workflows/src/runs/foreground/stage-tool-execution-buffer.ts +47 -0
  260. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +1 -1
  261. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +155 -20
  262. package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +6 -0
  263. package/dist/builtin/workflows/src/runs/shared/worktree.ts +2 -1
  264. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +2 -2
  265. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +2 -2
  266. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +18 -1
  267. package/dist/builtin/workflows/src/shared/persistence-restore.ts +23 -5
  268. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +4 -0
  269. package/dist/builtin/workflows/src/shared/resume-continuation.ts +2 -0
  270. package/dist/builtin/workflows/src/shared/returned-run-status.ts +116 -0
  271. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +2 -0
  272. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +21 -3
  273. package/dist/builtin/workflows/src/tui/graph-view-state.ts +3 -0
  274. package/dist/builtin/workflows/src/tui/graph-view-types.ts +3 -0
  275. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +1 -23
  276. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +54 -9
  277. package/dist/builtin/workflows/src/tui/stage-chat-view-pending-tools.ts +9 -0
  278. package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +27 -0
  279. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +5 -6
  280. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +5 -2
  281. package/dist/builtin/workflows/src/tui/status-list.ts +22 -15
  282. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +4 -4
  283. package/dist/bun/internal-intercom-broker.d.ts +6 -0
  284. package/dist/bun/internal-intercom-broker.d.ts.map +1 -0
  285. package/dist/bun/internal-intercom-broker.js +39 -0
  286. package/dist/bun/internal-intercom-broker.js.map +1 -0
  287. package/dist/bun/split-loader.d.ts +2 -0
  288. package/dist/bun/split-loader.d.ts.map +1 -0
  289. package/dist/bun/split-loader.js +50 -0
  290. package/dist/bun/split-loader.js.map +1 -0
  291. package/dist/cli/args.d.ts.map +1 -1
  292. package/dist/cli/args.js +2 -2
  293. package/dist/cli/args.js.map +1 -1
  294. package/dist/config.d.ts.map +1 -1
  295. package/dist/config.js +6 -4
  296. package/dist/config.js.map +1 -1
  297. package/dist/core/agent-session-auto-compaction.d.ts +26 -6
  298. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  299. package/dist/core/agent-session-auto-compaction.js +178 -19
  300. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  301. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  302. package/dist/core/agent-session-compaction.js +25 -4
  303. package/dist/core/agent-session-compaction.js.map +1 -1
  304. package/dist/core/agent-session-events.d.ts.map +1 -1
  305. package/dist/core/agent-session-events.js +12 -2
  306. package/dist/core/agent-session-events.js.map +1 -1
  307. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  308. package/dist/core/agent-session-extension-bindings.js +1 -1
  309. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  310. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  311. package/dist/core/agent-session-message-queue.js +1 -1
  312. package/dist/core/agent-session-message-queue.js.map +1 -1
  313. package/dist/core/agent-session-methods.d.ts +13 -4
  314. package/dist/core/agent-session-methods.d.ts.map +1 -1
  315. package/dist/core/agent-session-methods.js.map +1 -1
  316. package/dist/core/agent-session-models.d.ts +2 -2
  317. package/dist/core/agent-session-models.d.ts.map +1 -1
  318. package/dist/core/agent-session-models.js.map +1 -1
  319. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  320. package/dist/core/agent-session-prompt.js +2 -1
  321. package/dist/core/agent-session-prompt.js.map +1 -1
  322. package/dist/core/agent-session-retry.d.ts +2 -0
  323. package/dist/core/agent-session-retry.d.ts.map +1 -1
  324. package/dist/core/agent-session-retry.js +152 -4
  325. package/dist/core/agent-session-retry.js.map +1 -1
  326. package/dist/core/agent-session-services.d.ts +1 -0
  327. package/dist/core/agent-session-services.d.ts.map +1 -1
  328. package/dist/core/agent-session-services.js +4 -2
  329. package/dist/core/agent-session-services.js.map +1 -1
  330. package/dist/core/agent-session-types.d.ts +15 -1
  331. package/dist/core/agent-session-types.d.ts.map +1 -1
  332. package/dist/core/agent-session-types.js +1 -1
  333. package/dist/core/agent-session-types.js.map +1 -1
  334. package/dist/core/agent-session.d.ts +6 -0
  335. package/dist/core/agent-session.d.ts.map +1 -1
  336. package/dist/core/agent-session.js +6 -0
  337. package/dist/core/agent-session.js.map +1 -1
  338. package/dist/core/anthropic-thinking-guard.d.ts +5 -5
  339. package/dist/core/anthropic-thinking-guard.d.ts.map +1 -1
  340. package/dist/core/anthropic-thinking-guard.js +42 -32
  341. package/dist/core/anthropic-thinking-guard.js.map +1 -1
  342. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  343. package/dist/core/atomic-guide-command.js +15 -15
  344. package/dist/core/atomic-guide-command.js.map +1 -1
  345. package/dist/core/auth-storage.d.ts.map +1 -1
  346. package/dist/core/auth-storage.js +14 -9
  347. package/dist/core/auth-storage.js.map +1 -1
  348. package/dist/core/builtin-packages.d.ts.map +1 -1
  349. package/dist/core/builtin-packages.js +8 -4
  350. package/dist/core/builtin-packages.js.map +1 -1
  351. package/dist/core/compaction/compaction.d.ts +2 -0
  352. package/dist/core/compaction/compaction.d.ts.map +1 -1
  353. package/dist/core/compaction/compaction.js +79 -46
  354. package/dist/core/compaction/compaction.js.map +1 -1
  355. package/dist/core/compaction/context-assistant-turns.d.ts +42 -0
  356. package/dist/core/compaction/context-assistant-turns.d.ts.map +1 -0
  357. package/dist/core/compaction/context-assistant-turns.js +87 -0
  358. package/dist/core/compaction/context-assistant-turns.js.map +1 -0
  359. package/dist/core/compaction/context-compaction-critical.d.ts +15 -0
  360. package/dist/core/compaction/context-compaction-critical.d.ts.map +1 -0
  361. package/dist/core/compaction/context-compaction-critical.js +57 -0
  362. package/dist/core/compaction/context-compaction-critical.js.map +1 -0
  363. package/dist/core/compaction/context-compaction-eviction-alternates.d.ts +18 -0
  364. package/dist/core/compaction/context-compaction-eviction-alternates.d.ts.map +1 -0
  365. package/dist/core/compaction/context-compaction-eviction-alternates.js +186 -0
  366. package/dist/core/compaction/context-compaction-eviction-alternates.js.map +1 -0
  367. package/dist/core/compaction/context-compaction-eviction.d.ts +12 -0
  368. package/dist/core/compaction/context-compaction-eviction.d.ts.map +1 -0
  369. package/dist/core/compaction/context-compaction-eviction.js +222 -0
  370. package/dist/core/compaction/context-compaction-eviction.js.map +1 -0
  371. package/dist/core/compaction/context-compaction-prompt.d.ts.map +1 -1
  372. package/dist/core/compaction/context-compaction-prompt.js +1 -1
  373. package/dist/core/compaction/context-compaction-prompt.js.map +1 -1
  374. package/dist/core/compaction/context-compaction-runner.d.ts +7 -1
  375. package/dist/core/compaction/context-compaction-runner.d.ts.map +1 -1
  376. package/dist/core/compaction/context-compaction-runner.js +113 -21
  377. package/dist/core/compaction/context-compaction-runner.js.map +1 -1
  378. package/dist/core/compaction/context-compaction-types.d.ts +2 -0
  379. package/dist/core/compaction/context-compaction-types.d.ts.map +1 -1
  380. package/dist/core/compaction/context-compaction-types.js.map +1 -1
  381. package/dist/core/compaction/context-deletion-application.d.ts +5 -4
  382. package/dist/core/compaction/context-deletion-application.d.ts.map +1 -1
  383. package/dist/core/compaction/context-deletion-application.js +17 -15
  384. package/dist/core/compaction/context-deletion-application.js.map +1 -1
  385. package/dist/core/compaction/context-deletion-store.d.ts.map +1 -1
  386. package/dist/core/compaction/context-deletion-store.js +1 -1
  387. package/dist/core/compaction/context-deletion-store.js.map +1 -1
  388. package/dist/core/compaction/context-deletion-targets.d.ts +2 -1
  389. package/dist/core/compaction/context-deletion-targets.d.ts.map +1 -1
  390. package/dist/core/compaction/context-deletion-targets.js +36 -31
  391. package/dist/core/compaction/context-deletion-targets.js.map +1 -1
  392. package/dist/core/compaction/context-deletion-tool-helpers.d.ts.map +1 -1
  393. package/dist/core/compaction/context-deletion-tool-helpers.js +116 -43
  394. package/dist/core/compaction/context-deletion-tool-helpers.js.map +1 -1
  395. package/dist/core/compaction/context-transcript-analysis.d.ts +4 -2
  396. package/dist/core/compaction/context-transcript-analysis.d.ts.map +1 -1
  397. package/dist/core/compaction/context-transcript-analysis.js +36 -40
  398. package/dist/core/compaction/context-transcript-analysis.js.map +1 -1
  399. package/dist/core/copilot-anthropic-sse-repair.d.ts +23 -0
  400. package/dist/core/copilot-anthropic-sse-repair.d.ts.map +1 -0
  401. package/dist/core/copilot-anthropic-sse-repair.js +340 -0
  402. package/dist/core/copilot-anthropic-sse-repair.js.map +1 -0
  403. package/dist/core/copilot-gemini-reasoning.d.ts +16 -8
  404. package/dist/core/copilot-gemini-reasoning.d.ts.map +1 -1
  405. package/dist/core/copilot-gemini-reasoning.js +27 -22
  406. package/dist/core/copilot-gemini-reasoning.js.map +1 -1
  407. package/dist/core/copilot-hosts.d.ts +12 -0
  408. package/dist/core/copilot-hosts.d.ts.map +1 -0
  409. package/dist/core/copilot-hosts.js +33 -0
  410. package/dist/core/copilot-hosts.js.map +1 -0
  411. package/dist/core/copilot-model-catalog.d.ts.map +1 -1
  412. package/dist/core/copilot-model-catalog.js +3 -2
  413. package/dist/core/copilot-model-catalog.js.map +1 -1
  414. package/dist/core/copilot-model-synthesis.d.ts.map +1 -1
  415. package/dist/core/copilot-model-synthesis.js +3 -1
  416. package/dist/core/copilot-model-synthesis.js.map +1 -1
  417. package/dist/core/extensions/agent-events.d.ts +1 -1
  418. package/dist/core/extensions/agent-events.d.ts.map +1 -1
  419. package/dist/core/extensions/agent-events.js.map +1 -1
  420. package/dist/core/extensions/loader-core.d.ts.map +1 -1
  421. package/dist/core/extensions/loader-core.js +6 -0
  422. package/dist/core/extensions/loader-core.js.map +1 -1
  423. package/dist/core/extensions/loader-virtual-modules.d.ts +8 -1
  424. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  425. package/dist/core/extensions/loader-virtual-modules.js +10 -4
  426. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  427. package/dist/core/extensions/provider-types.d.ts +2 -7
  428. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  429. package/dist/core/extensions/provider-types.js.map +1 -1
  430. package/dist/core/footer-data-provider.d.ts +6 -0
  431. package/dist/core/footer-data-provider.d.ts.map +1 -1
  432. package/dist/core/footer-data-provider.js +72 -29
  433. package/dist/core/footer-data-provider.js.map +1 -1
  434. package/dist/core/http-dispatcher.d.ts.map +1 -1
  435. package/dist/core/http-dispatcher.js +5 -5
  436. package/dist/core/http-dispatcher.js.map +1 -1
  437. package/dist/core/messages.d.ts +9 -0
  438. package/dist/core/messages.d.ts.map +1 -1
  439. package/dist/core/messages.js +100 -18
  440. package/dist/core/messages.js.map +1 -1
  441. package/dist/core/model-registry-builtins.d.ts.map +1 -1
  442. package/dist/core/model-registry-builtins.js +5 -0
  443. package/dist/core/model-registry-builtins.js.map +1 -1
  444. package/dist/core/model-registry-custom-loader.d.ts.map +1 -1
  445. package/dist/core/model-registry-custom-loader.js +49 -8
  446. package/dist/core/model-registry-custom-loader.js.map +1 -1
  447. package/dist/core/model-registry-dynamic.d.ts.map +1 -1
  448. package/dist/core/model-registry-dynamic.js +11 -5
  449. package/dist/core/model-registry-dynamic.js.map +1 -1
  450. package/dist/core/model-registry-loader.d.ts.map +1 -1
  451. package/dist/core/model-registry-loader.js +8 -0
  452. package/dist/core/model-registry-loader.js.map +1 -1
  453. package/dist/core/model-registry-schemas.d.ts +93 -8
  454. package/dist/core/model-registry-schemas.d.ts.map +1 -1
  455. package/dist/core/model-registry-schemas.js +24 -12
  456. package/dist/core/model-registry-schemas.js.map +1 -1
  457. package/dist/core/model-registry-types.d.ts +7 -6
  458. package/dist/core/model-registry-types.d.ts.map +1 -1
  459. package/dist/core/model-registry-types.js.map +1 -1
  460. package/dist/core/model-registry.d.ts +5 -0
  461. package/dist/core/model-registry.d.ts.map +1 -1
  462. package/dist/core/model-registry.js +23 -0
  463. package/dist/core/model-registry.js.map +1 -1
  464. package/dist/core/model-resolver-cli.d.ts.map +1 -1
  465. package/dist/core/model-resolver-cli.js +33 -5
  466. package/dist/core/model-resolver-cli.js.map +1 -1
  467. package/dist/core/model-resolver-initial.d.ts +6 -1
  468. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  469. package/dist/core/model-resolver-initial.js +12 -7
  470. package/dist/core/model-resolver-initial.js.map +1 -1
  471. package/dist/core/model-resolver-scope.d.ts +9 -0
  472. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  473. package/dist/core/model-resolver-scope.js +12 -4
  474. package/dist/core/model-resolver-scope.js.map +1 -1
  475. package/dist/core/model-resolver.d.ts +4 -3
  476. package/dist/core/model-resolver.d.ts.map +1 -1
  477. package/dist/core/model-resolver.js +2 -2
  478. package/dist/core/model-resolver.js.map +1 -1
  479. package/dist/core/openai-responses-payload-sanitizer.d.ts +7 -0
  480. package/dist/core/openai-responses-payload-sanitizer.d.ts.map +1 -0
  481. package/dist/core/openai-responses-payload-sanitizer.js +74 -0
  482. package/dist/core/openai-responses-payload-sanitizer.js.map +1 -0
  483. package/dist/core/package-manager-auto-resources.d.ts +2 -2
  484. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  485. package/dist/core/package-manager-auto-resources.js +32 -52
  486. package/dist/core/package-manager-auto-resources.js.map +1 -1
  487. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  488. package/dist/core/package-manager-resolver.js +23 -14
  489. package/dist/core/package-manager-resolver.js.map +1 -1
  490. package/dist/core/package-manager-resource-collector.d.ts +3 -3
  491. package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
  492. package/dist/core/package-manager-resource-collector.js +76 -73
  493. package/dist/core/package-manager-resource-collector.js.map +1 -1
  494. package/dist/core/package-manager-resource-files.d.ts +9 -8
  495. package/dist/core/package-manager-resource-files.d.ts.map +1 -1
  496. package/dist/core/package-manager-resource-files.js +92 -81
  497. package/dist/core/package-manager-resource-files.js.map +1 -1
  498. package/dist/core/prompt-templates-async.d.ts +3 -0
  499. package/dist/core/prompt-templates-async.d.ts.map +1 -0
  500. package/dist/core/prompt-templates-async.js +118 -0
  501. package/dist/core/prompt-templates-async.js.map +1 -0
  502. package/dist/core/provider-context-usage.d.ts +11 -0
  503. package/dist/core/provider-context-usage.d.ts.map +1 -0
  504. package/dist/core/provider-context-usage.js +58 -0
  505. package/dist/core/provider-context-usage.js.map +1 -0
  506. package/dist/core/resource-loader-assets.d.ts +3 -3
  507. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  508. package/dist/core/resource-loader-assets.js +66 -83
  509. package/dist/core/resource-loader-assets.js.map +1 -1
  510. package/dist/core/resource-loader-context-files.d.ts +1 -0
  511. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  512. package/dist/core/resource-loader-context-files.js +13 -10
  513. package/dist/core/resource-loader-context-files.js.map +1 -1
  514. package/dist/core/resource-loader-core.d.ts +1 -1
  515. package/dist/core/resource-loader-core.d.ts.map +1 -1
  516. package/dist/core/resource-loader-core.js +5 -5
  517. package/dist/core/resource-loader-core.js.map +1 -1
  518. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  519. package/dist/core/resource-loader-extensions.js +4 -0
  520. package/dist/core/resource-loader-extensions.js.map +1 -1
  521. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  522. package/dist/core/resource-loader-reload.js +54 -7
  523. package/dist/core/resource-loader-reload.js.map +1 -1
  524. package/dist/core/resource-loader-types.d.ts +7 -1
  525. package/dist/core/resource-loader-types.d.ts.map +1 -1
  526. package/dist/core/resource-loader-types.js.map +1 -1
  527. package/dist/core/sdk-types.d.ts +2 -0
  528. package/dist/core/sdk-types.d.ts.map +1 -1
  529. package/dist/core/sdk-types.js.map +1 -1
  530. package/dist/core/sdk.d.ts.map +1 -1
  531. package/dist/core/sdk.js +9 -6
  532. package/dist/core/sdk.js.map +1 -1
  533. package/dist/core/session-entry-normalization.d.ts +7 -0
  534. package/dist/core/session-entry-normalization.d.ts.map +1 -0
  535. package/dist/core/session-entry-normalization.js +14 -0
  536. package/dist/core/session-entry-normalization.js.map +1 -0
  537. package/dist/core/session-manager-core.d.ts.map +1 -1
  538. package/dist/core/session-manager-core.js +1 -0
  539. package/dist/core/session-manager-core.js.map +1 -1
  540. package/dist/core/session-manager-history.d.ts +2 -2
  541. package/dist/core/session-manager-history.d.ts.map +1 -1
  542. package/dist/core/session-manager-history.js +127 -108
  543. package/dist/core/session-manager-history.js.map +1 -1
  544. package/dist/core/settings-manager-basic-accessors.d.ts +3 -2
  545. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  546. package/dist/core/settings-manager-basic-accessors.js +6 -0
  547. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  548. package/dist/core/settings-manager-core.d.ts.map +1 -1
  549. package/dist/core/settings-manager-core.js +3 -2
  550. package/dist/core/settings-manager-core.js.map +1 -1
  551. package/dist/core/settings-storage.d.ts.map +1 -1
  552. package/dist/core/settings-storage.js +2 -1
  553. package/dist/core/settings-storage.js.map +1 -1
  554. package/dist/core/settings-types.d.ts +2 -1
  555. package/dist/core/settings-types.d.ts.map +1 -1
  556. package/dist/core/settings-types.js.map +1 -1
  557. package/dist/core/skills-async.d.ts +3 -0
  558. package/dist/core/skills-async.d.ts.map +1 -0
  559. package/dist/core/skills-async.js +269 -0
  560. package/dist/core/skills-async.js.map +1 -0
  561. package/dist/core/slash-commands.d.ts +2 -0
  562. package/dist/core/slash-commands.d.ts.map +1 -1
  563. package/dist/core/slash-commands.js +141 -0
  564. package/dist/core/slash-commands.js.map +1 -1
  565. package/dist/core/tools/bash.d.ts.map +1 -1
  566. package/dist/core/tools/bash.js +11 -8
  567. package/dist/core/tools/bash.js.map +1 -1
  568. package/dist/core/trust-manager.d.ts +9 -0
  569. package/dist/core/trust-manager.d.ts.map +1 -1
  570. package/dist/core/trust-manager.js +44 -2
  571. package/dist/core/trust-manager.js.map +1 -1
  572. package/dist/index-extensions.d.ts +1 -1
  573. package/dist/index-extensions.d.ts.map +1 -1
  574. package/dist/index-extensions.js.map +1 -1
  575. package/dist/index.d.ts +2 -1
  576. package/dist/index.d.ts.map +1 -1
  577. package/dist/index.js +2 -1
  578. package/dist/index.js.map +1 -1
  579. package/dist/main-deferred-startup.d.ts +33 -0
  580. package/dist/main-deferred-startup.d.ts.map +1 -0
  581. package/dist/main-deferred-startup.js +44 -0
  582. package/dist/main-deferred-startup.js.map +1 -0
  583. package/dist/main-early-input.d.ts +41 -0
  584. package/dist/main-early-input.d.ts.map +1 -0
  585. package/dist/main-early-input.js +154 -0
  586. package/dist/main-early-input.js.map +1 -0
  587. package/dist/main-session.d.ts.map +1 -1
  588. package/dist/main-session.js +1 -0
  589. package/dist/main-session.js.map +1 -1
  590. package/dist/main.d.ts +0 -6
  591. package/dist/main.d.ts.map +1 -1
  592. package/dist/main.js +47 -39
  593. package/dist/main.js.map +1 -1
  594. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  595. package/dist/modes/interactive/components/chat-session-host-actions.js +0 -1
  596. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  597. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  598. package/dist/modes/interactive/components/chat-session-host-events.js +15 -0
  599. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  600. package/dist/modes/interactive/components/settings-selector-options.d.ts.map +1 -1
  601. package/dist/modes/interactive/components/settings-selector-options.js +3 -1
  602. package/dist/modes/interactive/components/settings-selector-options.js.map +1 -1
  603. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  604. package/dist/modes/interactive/components/thinking-selector.js +2 -1
  605. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  606. package/dist/modes/interactive/interactive-agent-events.d.ts.map +1 -1
  607. package/dist/modes/interactive/interactive-agent-events.js +37 -2
  608. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  609. package/dist/modes/interactive/interactive-auth-login.d.ts.map +1 -1
  610. package/dist/modes/interactive/interactive-auth-login.js +0 -1
  611. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  612. package/dist/modes/interactive/interactive-autocomplete.d.ts.map +1 -1
  613. package/dist/modes/interactive/interactive-autocomplete.js +21 -9
  614. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  615. package/dist/modes/interactive/interactive-child-ordering.d.ts +7 -0
  616. package/dist/modes/interactive/interactive-child-ordering.d.ts.map +1 -0
  617. package/dist/modes/interactive/interactive-child-ordering.js +26 -0
  618. package/dist/modes/interactive/interactive-child-ordering.js.map +1 -0
  619. package/dist/modes/interactive/interactive-deferred-startup.d.ts +8 -1
  620. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  621. package/dist/modes/interactive/interactive-deferred-startup.js +86 -26
  622. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  623. package/dist/modes/interactive/interactive-editor-actions.d.ts.map +1 -1
  624. package/dist/modes/interactive/interactive-editor-actions.js +13 -13
  625. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  626. package/dist/modes/interactive/interactive-extension-runtime.d.ts.map +1 -1
  627. package/dist/modes/interactive/interactive-extension-runtime.js +16 -0
  628. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  629. package/dist/modes/interactive/interactive-hotkeys-debug.d.ts.map +1 -1
  630. package/dist/modes/interactive/interactive-hotkeys-debug.js +4 -3
  631. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
  632. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  633. package/dist/modes/interactive/interactive-input-handling.js +360 -230
  634. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  635. package/dist/modes/interactive/interactive-mode-base.d.ts +19 -4
  636. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  637. package/dist/modes/interactive/interactive-mode-base.js +46 -4
  638. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  639. package/dist/modes/interactive/interactive-mode-deps.d.ts +3 -3
  640. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  641. package/dist/modes/interactive/interactive-mode-deps.js +3 -3
  642. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  643. package/dist/modes/interactive/interactive-mode-surface.d.ts +27 -17
  644. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  645. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  646. package/dist/modes/interactive/interactive-mode-types.d.ts +8 -1
  647. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  648. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  649. package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -1
  650. package/dist/modes/interactive/interactive-model-routing.js +14 -10
  651. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  652. package/dist/modes/interactive/interactive-onboarding.d.ts +0 -9
  653. package/dist/modes/interactive/interactive-onboarding.d.ts.map +1 -1
  654. package/dist/modes/interactive/interactive-onboarding.js +24 -201
  655. package/dist/modes/interactive/interactive-onboarding.js.map +1 -1
  656. package/dist/modes/interactive/interactive-process-lifecycle.d.ts.map +1 -1
  657. package/dist/modes/interactive/interactive-process-lifecycle.js +43 -9
  658. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  659. package/dist/modes/interactive/interactive-render-chat.d.ts.map +1 -1
  660. package/dist/modes/interactive/interactive-render-chat.js +93 -10
  661. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  662. package/dist/modes/interactive/interactive-resource-disclosure.d.ts.map +1 -1
  663. package/dist/modes/interactive/interactive-resource-disclosure.js +3 -2
  664. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
  665. package/dist/modes/interactive/interactive-resource-rendering.d.ts.map +1 -1
  666. package/dist/modes/interactive/interactive-resource-rendering.js +10 -8
  667. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  668. package/dist/modes/interactive/interactive-session-routing.d.ts.map +1 -1
  669. package/dist/modes/interactive/interactive-session-routing.js +9 -5
  670. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  671. package/dist/modes/interactive/interactive-session-runtime.d.ts.map +1 -1
  672. package/dist/modes/interactive/interactive-session-runtime.js +1 -1
  673. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  674. package/dist/modes/interactive/interactive-slash-commands.d.ts.map +1 -1
  675. package/dist/modes/interactive/interactive-slash-commands.js +1 -1
  676. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  677. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  678. package/dist/modes/interactive/interactive-startup.js +102 -98
  679. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  680. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
  681. package/dist/modes/interactive/theme/global-theme.js +26 -2
  682. package/dist/modes/interactive/theme/global-theme.js.map +1 -1
  683. package/dist/modes/interactive/theme/theme-class.d.ts +1 -1
  684. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  685. package/dist/modes/interactive/theme/theme-class.js +2 -0
  686. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  687. package/dist/modes/interactive/theme/theme-loading.d.ts +1 -0
  688. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  689. package/dist/modes/interactive/theme/theme-loading.js +3 -0
  690. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  691. package/dist/modes/interactive/theme/theme.d.ts +1 -1
  692. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  693. package/dist/modes/interactive/theme/theme.js +1 -1
  694. package/dist/modes/interactive/theme/theme.js.map +1 -1
  695. package/dist/utils/child-process.d.ts +8 -1
  696. package/dist/utils/child-process.d.ts.map +1 -1
  697. package/dist/utils/child-process.js +39 -6
  698. package/dist/utils/child-process.js.map +1 -1
  699. package/dist/utils/clipboard-image.d.ts.map +1 -1
  700. package/dist/utils/clipboard-image.js +3 -0
  701. package/dist/utils/clipboard-image.js.map +1 -1
  702. package/dist/utils/event-loop.d.ts +7 -0
  703. package/dist/utils/event-loop.d.ts.map +1 -0
  704. package/dist/utils/event-loop.js +14 -0
  705. package/dist/utils/event-loop.js.map +1 -0
  706. package/dist/utils/fs-watch.d.ts +24 -1
  707. package/dist/utils/fs-watch.d.ts.map +1 -1
  708. package/dist/utils/fs-watch.js +60 -5
  709. package/dist/utils/fs-watch.js.map +1 -1
  710. package/dist/utils/json.d.ts +4 -0
  711. package/dist/utils/json.d.ts.map +1 -1
  712. package/dist/utils/json.js +8 -0
  713. package/dist/utils/json.js.map +1 -1
  714. package/dist/utils/module-require.d.ts +11 -0
  715. package/dist/utils/module-require.d.ts.map +1 -1
  716. package/dist/utils/module-require.js +14 -1
  717. package/dist/utils/module-require.js.map +1 -1
  718. package/dist/utils/split-launcher.d.ts +38 -0
  719. package/dist/utils/split-launcher.d.ts.map +1 -0
  720. package/dist/utils/split-launcher.js +63 -0
  721. package/dist/utils/split-launcher.js.map +1 -0
  722. package/docs/changelog.mdx +19 -0
  723. package/docs/compaction.md +100 -64
  724. package/docs/custom-provider.md +18 -5
  725. package/docs/development.md +4 -0
  726. package/docs/extensions.md +11 -2
  727. package/docs/json.md +3 -1
  728. package/docs/keybindings.md +2 -2
  729. package/docs/models.md +69 -10
  730. package/docs/providers.md +3 -2
  731. package/docs/quickstart.md +15 -11
  732. package/docs/rpc.md +5 -3
  733. package/docs/sdk.md +1 -1
  734. package/docs/settings.md +33 -3
  735. package/docs/subagents.md +40 -5
  736. package/docs/terminal-setup.md +4 -0
  737. package/docs/tools.md +1 -1
  738. package/docs/usage.md +8 -6
  739. package/docs/windows.md +4 -0
  740. package/docs/workflows.md +59 -36
  741. package/examples/extensions/preset.ts +2 -2
  742. package/examples/extensions/subagent/README.md +2 -2
  743. package/examples/extensions/subagent/index.ts +1 -2
  744. package/examples/extensions/subagent/schemas.ts +4 -1
  745. package/examples/sdk/12-full-control.ts +1 -1
  746. package/npm-shrinkwrap.json +538 -51
  747. package/package.json +10 -9
  748. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-behavior.ts +0 -75
  749. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-component.ts +0 -202
  750. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-edit.ts +0 -97
  751. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-editor.ts +0 -160
  752. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-frame.ts +0 -72
  753. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-modes.ts +0 -161
  754. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-selectors.ts +0 -203
  755. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-selectors.ts +0 -234
  756. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-state.ts +0 -103
  757. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-types.ts +0 -29
  758. package/dist/builtin/subagents/src/runs/foreground/chain-clarify.ts +0 -9
  759. package/dist/builtin/subagents/src/runs/foreground/chain-execution-clarify.ts +0 -117
@@ -359,6 +359,10 @@ export class DbosDurableBackend implements DurableWorkflowBackend {
359
359
  ...(entry.label !== undefined ? { label: entry.label } : {}),
360
360
  ...(entry.rootWorkflowId !== undefined ? { rootWorkflowId: entry.rootWorkflowId } : {}),
361
361
  ...(entry.resumable !== undefined ? { resumable: entry.resumable } : {}),
362
+ ...(entry.invocationCwd !== undefined ? { invocationCwd: entry.invocationCwd } : {}),
363
+ ...(entry.workflowCwd !== undefined ? { workflowCwd: entry.workflowCwd } : {}),
364
+ ...(entry.repositoryRoot !== undefined ? { repositoryRoot: entry.repositoryRoot } : {}),
365
+ ...(entry.gitWorktreeRoot !== undefined ? { gitWorktreeRoot: entry.gitWorktreeRoot } : {}),
362
366
  });
363
367
  }
364
368
  }
@@ -377,7 +381,7 @@ function isMetadataStep(stepName: string): boolean {
377
381
  interface DbosMetadataEnvelope {
378
382
  readonly __atomicDurableMetadata: true;
379
383
  readonly version: 1;
380
- readonly entry: DurableCheckpointEntry;
384
+ readonly entry: WorkflowSerializableValue;
381
385
  }
382
386
 
383
387
  function encodeMetadata(entry: DurableCheckpointEntry): WorkflowSerializableValue {
@@ -395,6 +399,10 @@ function encodeMetadata(entry: DurableCheckpointEntry): WorkflowSerializableValu
395
399
  ...(entry.label !== undefined ? { label: entry.label } : {}),
396
400
  ...(entry.rootWorkflowId !== undefined ? { rootWorkflowId: entry.rootWorkflowId } : {}),
397
401
  ...(entry.resumable !== undefined ? { resumable: entry.resumable } : {}),
402
+ ...(entry.invocationCwd !== undefined ? { invocationCwd: entry.invocationCwd } : {}),
403
+ ...(entry.workflowCwd !== undefined ? { workflowCwd: entry.workflowCwd } : {}),
404
+ ...(entry.repositoryRoot !== undefined ? { repositoryRoot: entry.repositoryRoot } : {}),
405
+ ...(entry.gitWorktreeRoot !== undefined ? { gitWorktreeRoot: entry.gitWorktreeRoot } : {}),
398
406
  ts: entry.ts,
399
407
  },
400
408
  };
@@ -404,7 +412,60 @@ function decodeMetadata(value: WorkflowSerializableValue): DurableCheckpointEntr
404
412
  if (typeof value !== "object" || value === null || Array.isArray(value)) return undefined;
405
413
  const raw = value as Partial<DbosMetadataEnvelope>;
406
414
  if (raw.__atomicDurableMetadata !== true || raw.version !== METADATA_VERSION) return undefined;
407
- return raw.entry;
415
+ const entry = raw.entry;
416
+ if (entry === undefined) return undefined;
417
+ return parseDurableCheckpointEntry(entry);
418
+ }
419
+
420
+ function parseDurableCheckpointEntry(value: WorkflowSerializableValue): DurableCheckpointEntry | undefined {
421
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return undefined;
422
+ const entry = value as Partial<DurableCheckpointEntry>;
423
+ if (entry.type !== "workflow.durable.checkpoint"
424
+ || typeof entry.workflowId !== "string"
425
+ || typeof entry.name !== "string"
426
+ || typeof entry.inputs !== "object"
427
+ || entry.inputs === null
428
+ || Array.isArray(entry.inputs)
429
+ || typeof entry.status !== "string"
430
+ || !isDurableWorkflowStatus(entry.status)
431
+ || typeof entry.completedCheckpoints !== "number"
432
+ || typeof entry.pendingPrompts !== "number"
433
+ || typeof entry.ts !== "number"
434
+ || (entry.label !== undefined && typeof entry.label !== "string")
435
+ || (entry.rootWorkflowId !== undefined && typeof entry.rootWorkflowId !== "string")
436
+ || (entry.resumable !== undefined && typeof entry.resumable !== "boolean")
437
+ || (entry.invocationCwd !== undefined && typeof entry.invocationCwd !== "string")
438
+ || (entry.workflowCwd !== undefined && typeof entry.workflowCwd !== "string")
439
+ || (entry.repositoryRoot !== undefined && typeof entry.repositoryRoot !== "string")
440
+ || (entry.gitWorktreeRoot !== undefined && typeof entry.gitWorktreeRoot !== "string")) {
441
+ return undefined;
442
+ }
443
+ return {
444
+ type: "workflow.durable.checkpoint",
445
+ workflowId: entry.workflowId,
446
+ name: entry.name,
447
+ inputs: entry.inputs,
448
+ status: entry.status,
449
+ completedCheckpoints: entry.completedCheckpoints,
450
+ pendingPrompts: entry.pendingPrompts,
451
+ ts: entry.ts,
452
+ ...(entry.label !== undefined ? { label: entry.label } : {}),
453
+ ...(entry.rootWorkflowId !== undefined ? { rootWorkflowId: entry.rootWorkflowId } : {}),
454
+ ...(entry.resumable !== undefined ? { resumable: entry.resumable } : {}),
455
+ ...(entry.invocationCwd !== undefined ? { invocationCwd: entry.invocationCwd } : {}),
456
+ ...(entry.workflowCwd !== undefined ? { workflowCwd: entry.workflowCwd } : {}),
457
+ ...(entry.repositoryRoot !== undefined ? { repositoryRoot: entry.repositoryRoot } : {}),
458
+ ...(entry.gitWorktreeRoot !== undefined ? { gitWorktreeRoot: entry.gitWorktreeRoot } : {}),
459
+ };
460
+ }
461
+
462
+ function isDurableWorkflowStatus(value: string): value is DurableWorkflowStatus {
463
+ return value === "running"
464
+ || value === "paused"
465
+ || value === "completed"
466
+ || value === "failed"
467
+ || value === "cancelled"
468
+ || value === "blocked";
408
469
  }
409
470
 
410
471
  function dbosStatusToDurable(status: string): DurableWorkflowStatus {
@@ -51,6 +51,14 @@ export interface DbosCheckpointEnvelope extends WorkflowSerializableObject {
51
51
  readonly sessionId?: string;
52
52
  readonly sessionFile?: string;
53
53
  readonly completedAt: number;
54
+ readonly startedAt?: number;
55
+ readonly endedAt?: number;
56
+ readonly durationMs?: number;
57
+ readonly result?: string;
58
+ readonly model?: string;
59
+ readonly fastMode?: boolean;
60
+ readonly attemptedModels?: WorkflowSerializableValue;
61
+ readonly modelAttempts?: WorkflowSerializableValue;
54
62
  }
55
63
 
56
64
  /**
@@ -82,6 +90,14 @@ export function encodeCheckpoint(cp: DurableCheckpoint): DbosCheckpointEnvelope
82
90
  replayKey: s.replayKey,
83
91
  ...(s.sessionId !== undefined ? { sessionId: s.sessionId } : {}),
84
92
  ...(s.sessionFile !== undefined ? { sessionFile: s.sessionFile } : {}),
93
+ ...(s.startedAt !== undefined ? { startedAt: s.startedAt } : {}),
94
+ ...(s.endedAt !== undefined ? { endedAt: s.endedAt } : {}),
95
+ ...(s.durationMs !== undefined ? { durationMs: s.durationMs } : {}),
96
+ ...(s.result !== undefined ? { result: s.result } : {}),
97
+ ...(s.model !== undefined ? { model: s.model } : {}),
98
+ ...(s.fastMode !== undefined ? { fastMode: s.fastMode } : {}),
99
+ ...(s.attemptedModels !== undefined ? { attemptedModels: [...s.attemptedModels] } : {}),
100
+ ...(s.modelAttempts !== undefined ? { modelAttempts: s.modelAttempts as WorkflowSerializableValue } : {}),
85
101
  };
86
102
  }
87
103
 
@@ -144,9 +160,21 @@ function decodeEnvelope(workflowId: string, env: DbosCheckpointEnvelope): Durabl
144
160
  ...(env.hasOutput !== false && env.output !== undefined ? { output: env.output } : {}),
145
161
  ...(env.sessionId !== undefined ? { sessionId: env.sessionId } : {}),
146
162
  ...(env.sessionFile !== undefined ? { sessionFile: env.sessionFile } : {}),
163
+ ...(typeof env.startedAt === "number" ? { startedAt: env.startedAt } : {}),
164
+ ...(typeof env.endedAt === "number" ? { endedAt: env.endedAt } : {}),
165
+ ...(typeof env.durationMs === "number" ? { durationMs: env.durationMs } : {}),
166
+ ...(typeof env.result === "string" ? { result: env.result } : {}),
167
+ ...(typeof env.model === "string" ? { model: env.model } : {}),
168
+ ...(typeof env.fastMode === "boolean" ? { fastMode: env.fastMode } : {}),
169
+ ...(isStringArray(env.attemptedModels) ? { attemptedModels: env.attemptedModels } : {}),
170
+ ...(Array.isArray(env.modelAttempts) ? { modelAttempts: env.modelAttempts as DurableStageCheckpoint["modelAttempts"] } : {}),
147
171
  } as DurableStageCheckpoint;
148
172
  }
149
173
 
174
+
175
+ function isStringArray(value: WorkflowSerializableValue | undefined): value is readonly string[] {
176
+ return Array.isArray(value) && value.every((item) => typeof item === "string");
177
+ }
150
178
  function decodeLegacy(
151
179
  workflowId: string,
152
180
  stepName: string,
@@ -107,6 +107,10 @@ function parseDurableEntry(raw: Record<string, unknown>): DurableCheckpointEntry
107
107
  ...(typeof raw["label"] === "string" ? { label: raw["label"] } : {}),
108
108
  ...(typeof raw["rootWorkflowId"] === "string" ? { rootWorkflowId: raw["rootWorkflowId"] } : {}),
109
109
  ...(typeof raw["resumable"] === "boolean" ? { resumable: raw["resumable"] } : {}),
110
+ ...(typeof raw["invocationCwd"] === "string" ? { invocationCwd: raw["invocationCwd"] } : {}),
111
+ ...(typeof raw["workflowCwd"] === "string" ? { workflowCwd: raw["workflowCwd"] } : {}),
112
+ ...(typeof raw["repositoryRoot"] === "string" ? { repositoryRoot: raw["repositoryRoot"] } : {}),
113
+ ...(typeof raw["gitWorktreeRoot"] === "string" ? { gitWorktreeRoot: raw["gitWorktreeRoot"] } : {}),
110
114
  ts,
111
115
  };
112
116
  }
@@ -142,6 +146,10 @@ function entryToResumable(entry: DurableCheckpointEntry, sessionFile: string): R
142
146
  ...(entry.label !== undefined ? { label: entry.label } : {}),
143
147
  ...(entry.rootWorkflowId !== undefined ? { rootWorkflowId: entry.rootWorkflowId } : {}),
144
148
  ...(entry.resumable !== undefined ? { resumable: entry.resumable } : {}),
149
+ ...(entry.invocationCwd !== undefined ? { invocationCwd: entry.invocationCwd } : {}),
150
+ ...(entry.workflowCwd !== undefined ? { workflowCwd: entry.workflowCwd } : {}),
151
+ ...(entry.repositoryRoot !== undefined ? { repositoryRoot: entry.repositoryRoot } : {}),
152
+ ...(entry.gitWorktreeRoot !== undefined ? { gitWorktreeRoot: entry.gitWorktreeRoot } : {}),
145
153
  createdAt: entry.ts,
146
154
  updatedAt: entry.ts,
147
155
  };
@@ -197,6 +205,10 @@ export function persistDurableCacheEntry(
197
205
  ...(entry.label !== undefined ? { label: entry.label } : {}),
198
206
  ...(entry.rootWorkflowId !== undefined ? { rootWorkflowId: entry.rootWorkflowId } : {}),
199
207
  ...(entry.resumable !== undefined ? { resumable: entry.resumable } : {}),
208
+ ...(entry.invocationCwd !== undefined ? { invocationCwd: entry.invocationCwd } : {}),
209
+ ...(entry.workflowCwd !== undefined ? { workflowCwd: entry.workflowCwd } : {}),
210
+ ...(entry.repositoryRoot !== undefined ? { repositoryRoot: entry.repositoryRoot } : {}),
211
+ ...(entry.gitWorktreeRoot !== undefined ? { gitWorktreeRoot: entry.gitWorktreeRoot } : {}),
200
212
  ts: entry.ts,
201
213
  });
202
214
  }
@@ -167,11 +167,14 @@ export function resumeDurableWorkflow(
167
167
  // ORIGINAL workflow id as the run id so durable checkpoints replay.
168
168
  backend.setWorkflowStatus(resolved.workflowId, "running");
169
169
 
170
- const accepted: DetachedAccepted = runDetached(def, inputs, {
170
+ const resumeRunOpts: RunOpts = {
171
171
  ...deps.baseRunOpts,
172
+ ...(handle.invocationCwd !== undefined ? { cwd: handle.invocationCwd } : {}),
172
173
  runId: resolved.workflowId,
173
174
  durableBackend: backend,
174
- });
175
+ };
176
+
177
+ const accepted: DetachedAccepted = runDetached(def, inputs, resumeRunOpts);
175
178
 
176
179
  return {
177
180
  ok: true,
@@ -1,13 +1,15 @@
1
1
  /** Durable `ctx.stage` / `ctx.task` replay and checkpoint helpers. */
2
2
 
3
- import type { StageContext, StageOptions, WorkflowTaskOptions, WorkflowTaskResult } from "../shared/types.js";
3
+ import type { StageContext, StageOptions, WorkflowChildResult, WorkflowOutputValues, WorkflowTaskOptions, WorkflowTaskResult } from "../shared/types.js";
4
4
  import type { StageSnapshot } from "../shared/store-types.js";
5
5
  import type { WorkflowSerializableValue } from "../shared/types.js";
6
6
  import type { DurableWorkflowBackend } from "./backend.js";
7
7
  import type { ParallelFailFastScope } from "../runs/foreground/executor-types.js";
8
8
  import { durableHash } from "./backend.js";
9
9
  import { recordCheckpointDurably } from "./tool-primitive.js";
10
+ import { RESUME_CONTINUATION_PROMPT } from "../shared/resume-continuation.js";
10
11
  import type { DurableStageCheckpoint } from "./types.js";
12
+ export type DurableCompletedStageCheckpoint = DurableStageCheckpoint & { readonly output: WorkflowSerializableValue };
11
13
 
12
14
  export interface DurableStageDeps {
13
15
  readonly workflowId: string;
@@ -20,16 +22,28 @@ export interface DurableStageDeps {
20
22
  export async function recordStageCheckpoint(deps: DurableStageDeps, stage: StageSnapshot): Promise<boolean> {
21
23
  if (stage.status !== "completed") return false;
22
24
  const replayKey = deps.replayKeyForCompletedStage?.(stage) ?? stage.replayKey ?? deps.nextReplayKey(stage.name);
23
- if (deps.backend.getStageOutput(deps.workflowId, replayKey) !== undefined) return false;
24
- const checkpoint: DurableStageCheckpoint = {
25
- kind: "stage",
26
- workflowId: deps.workflowId,
27
- checkpointId: stableCheckpointId("stage", replayKey),
28
- name: stage.name,
29
- replayKey,
30
- output: stageOutput(stage),
31
- completedAt: stage.endedAt ?? Date.now(),
32
- };
25
+ const metadata = checkpointMetadata(stage);
26
+ const hasExistingOutput = deps.backend.getStageOutput(deps.workflowId, replayKey) !== undefined;
27
+ const checkpoint: DurableStageCheckpoint = hasExistingOutput
28
+ ? {
29
+ kind: "stage",
30
+ workflowId: deps.workflowId,
31
+ checkpointId: stageMetadataCheckpointId(replayKey, stage),
32
+ name: stage.name,
33
+ replayKey,
34
+ completedAt: stage.endedAt ?? Date.now(),
35
+ ...metadata,
36
+ }
37
+ : {
38
+ kind: "stage",
39
+ workflowId: deps.workflowId,
40
+ checkpointId: stableCheckpointId("stage", replayKey),
41
+ name: stage.name,
42
+ replayKey,
43
+ output: stageOutput(stage),
44
+ completedAt: stage.endedAt ?? Date.now(),
45
+ ...metadata,
46
+ };
33
47
  await recordCheckpointDurably(deps.backend, checkpoint);
34
48
  return true;
35
49
  }
@@ -53,7 +67,7 @@ export async function recordStageSessionCheckpoint(deps: DurableStageDeps, stage
53
67
  return true;
54
68
  }
55
69
 
56
- const MID_SESSION_RESUME_PROMPT = "Continue";
70
+ const MID_SESSION_RESUME_PROMPT = RESUME_CONTINUATION_PROMPT;
57
71
 
58
72
  function withMidSessionResumePrompt<T extends StageContext>(stage: T, enabled: boolean): T {
59
73
  if (!enabled) return stage;
@@ -79,14 +93,14 @@ export function createDurableStagePrimitive(input: {
79
93
  readonly backend: DurableWorkflowBackend;
80
94
  readonly nextReplayKey: (stageName: string) => string;
81
95
  readonly stage: (name: string, options: StageOptions | undefined, replayKey: string) => StageContext;
82
- readonly recordCachedStage?: (name: string, replayKey: string, output: WorkflowSerializableValue) => void;
96
+ readonly recordCachedStage?: (name: string, replayKey: string, checkpoint: DurableCompletedStageCheckpoint) => void;
83
97
  }): (name: string, options?: StageOptions) => StageContext {
84
98
  return (name: string, options?: StageOptions): StageContext => {
85
99
  const replayKey = input.nextReplayKey(name);
86
- const cached = input.backend.getStageOutput(input.workflowId, replayKey);
100
+ const cached = stageCheckpointWithOutput(input.backend, input.workflowId, replayKey);
87
101
  if (cached !== undefined) {
88
102
  input.recordCachedStage?.(name, replayKey, cached);
89
- return createCachedStageContext(name, cached);
103
+ return createCachedStageContext(name, cached.output, cached.result);
90
104
  }
91
105
  const session = input.backend.getStageSession(input.workflowId, replayKey);
92
106
  const isMidSessionResume = session?.sessionFile !== undefined;
@@ -112,14 +126,14 @@ export function createDurableTaskPrimitive(input: {
112
126
  readonly backend: DurableWorkflowBackend;
113
127
  readonly nextReplayKey: (stageName: string) => string;
114
128
  readonly task: (name: string, options: WorkflowTaskOptions, stageFailFastScope?: ParallelFailFastScope) => Promise<WorkflowTaskResult>;
115
- readonly recordCachedTask?: (name: string, replayKey: string, output: WorkflowTaskResult) => void;
129
+ readonly recordCachedTask?: (name: string, replayKey: string, checkpoint: DurableCompletedStageCheckpoint, stageFailFastScope?: ParallelFailFastScope) => void;
116
130
  }): (name: string, options: WorkflowTaskOptions) => Promise<WorkflowTaskResult> {
117
131
  return async (name: string, options: WorkflowTaskOptions, stageFailFastScope?: ParallelFailFastScope): Promise<WorkflowTaskResult> => {
118
132
  const replayKey = input.nextReplayKey(`task:${name}`);
119
- const cached = input.backend.getStageOutput(input.workflowId, replayKey);
120
- if (cached !== undefined && isWorkflowTaskResult(cached)) {
121
- input.recordCachedTask?.(name, replayKey, cached);
122
- return cached;
133
+ const cached = stageCheckpointWithOutput(input.backend, input.workflowId, replayKey, isWorkflowTaskResult);
134
+ if (cached !== undefined && isWorkflowTaskResult(cached.output)) {
135
+ input.recordCachedTask?.(name, replayKey, cached, stageFailFastScope);
136
+ return cached.output;
123
137
  }
124
138
  const session = input.backend.getStageSession(input.workflowId, replayKey);
125
139
  const taskOptions: WorkflowTaskOptions = {
@@ -136,6 +150,7 @@ export function createDurableTaskPrimitive(input: {
136
150
  replayKey,
137
151
  output: result,
138
152
  completedAt: Date.now(),
153
+ ...taskCheckpointMetadata(result),
139
154
  });
140
155
  return result;
141
156
  };
@@ -174,8 +189,8 @@ function wrapSchemaStageForDurability(input: {
174
189
  return wrapped;
175
190
  }
176
191
 
177
- function createCachedStageContext(name: string, output: WorkflowSerializableValue): StageContext {
178
- const text = typeof output === "string" ? output : JSON.stringify(output);
192
+ function createCachedStageContext(name: string, output: WorkflowSerializableValue, result?: string): StageContext {
193
+ const text = result ?? (typeof output === "string" ? output : JSON.stringify(output));
179
194
  const unsupported = async (): Promise<never> => { throw new Error(`Stage "${name}" was replayed from a durable checkpoint; live session operations are unavailable.`); };
180
195
  const cached = {
181
196
  name,
@@ -213,6 +228,82 @@ function stageOutput(stage: StageSnapshot): WorkflowSerializableValue {
213
228
  return { status: stage.status, stageId: stage.id };
214
229
  }
215
230
 
231
+ function checkpointMetadata(stage: StageSnapshot): Partial<DurableStageCheckpoint> {
232
+ return {
233
+ ...(stage.startedAt !== undefined ? { startedAt: stage.startedAt } : {}),
234
+ ...(stage.endedAt !== undefined ? { endedAt: stage.endedAt } : {}),
235
+ ...(stage.durationMs !== undefined ? { durationMs: stage.durationMs } : {}),
236
+ ...(stage.result !== undefined ? { result: stage.result } : {}),
237
+ ...(stage.sessionId !== undefined ? { sessionId: stage.sessionId } : {}),
238
+ ...(stage.sessionFile !== undefined ? { sessionFile: stage.sessionFile } : {}),
239
+ ...(stage.model !== undefined ? { model: stage.model } : {}),
240
+ ...(stage.fastMode !== undefined ? { fastMode: stage.fastMode } : {}),
241
+ ...(stage.attemptedModels !== undefined ? { attemptedModels: [...stage.attemptedModels] } : {}),
242
+ ...(stage.modelAttempts !== undefined ? { modelAttempts: [...stage.modelAttempts] } : {}),
243
+ };
244
+ }
245
+
246
+ function taskCheckpointMetadata(result: WorkflowTaskResult): Partial<DurableStageCheckpoint> {
247
+ return {
248
+ result: result.text,
249
+ ...(result.sessionId !== undefined ? { sessionId: result.sessionId } : {}),
250
+ ...(result.sessionFile !== undefined ? { sessionFile: result.sessionFile } : {}),
251
+ ...(result.model !== undefined ? { model: result.model } : {}),
252
+ ...(result.fastMode !== undefined ? { fastMode: result.fastMode } : {}),
253
+ ...(result.attemptedModels !== undefined ? { attemptedModels: [...result.attemptedModels] } : {}),
254
+ ...(result.modelAttempts !== undefined ? { modelAttempts: [...result.modelAttempts] } : {}),
255
+ };
256
+ }
257
+
258
+ export function stageCheckpointWithOutput(
259
+ backend: DurableWorkflowBackend,
260
+ workflowId: string,
261
+ replayKey: string,
262
+ matchesOutput?: (value: WorkflowSerializableValue) => boolean,
263
+ ): DurableCompletedStageCheckpoint | undefined {
264
+ const checkpoints = backend.listCheckpoints(workflowId)
265
+ .filter((checkpoint): checkpoint is DurableStageCheckpoint =>
266
+ checkpoint.kind === "stage" && checkpoint.replayKey === replayKey,
267
+ );
268
+ const outputCheckpoints = checkpoints.filter((checkpoint): checkpoint is DurableCompletedStageCheckpoint =>
269
+ checkpoint.output !== undefined,
270
+ );
271
+ const replayValueCheckpoint = matchesOutput === undefined
272
+ ? outputCheckpoints[0]
273
+ : outputCheckpoints.find((checkpoint) => matchesOutput(checkpoint.output));
274
+ if (replayValueCheckpoint === undefined) return undefined;
275
+ return mergeCheckpointHydrationMetadata(replayValueCheckpoint, checkpoints);
276
+ }
277
+
278
+ function mergeCheckpointHydrationMetadata(
279
+ replayValueCheckpoint: DurableCompletedStageCheckpoint,
280
+ checkpoints: readonly DurableStageCheckpoint[],
281
+ ): DurableCompletedStageCheckpoint {
282
+ if (checkpoints.length === 0) return replayValueCheckpoint;
283
+ return {
284
+ ...replayValueCheckpoint,
285
+ ...(replayValueCheckpoint.startedAt === undefined ? metadataValue(checkpoints, "startedAt") : {}),
286
+ ...(replayValueCheckpoint.endedAt === undefined ? metadataValue(checkpoints, "endedAt") : {}),
287
+ ...(replayValueCheckpoint.durationMs === undefined ? metadataValue(checkpoints, "durationMs") : {}),
288
+ ...(replayValueCheckpoint.result === undefined ? metadataValue(checkpoints, "result") : {}),
289
+ ...(replayValueCheckpoint.sessionId === undefined ? metadataValue(checkpoints, "sessionId") : {}),
290
+ ...(replayValueCheckpoint.sessionFile === undefined ? metadataValue(checkpoints, "sessionFile") : {}),
291
+ ...(replayValueCheckpoint.model === undefined ? metadataValue(checkpoints, "model") : {}),
292
+ ...(replayValueCheckpoint.fastMode === undefined ? metadataValue(checkpoints, "fastMode") : {}),
293
+ ...(replayValueCheckpoint.attemptedModels === undefined ? metadataValue(checkpoints, "attemptedModels") : {}),
294
+ ...(replayValueCheckpoint.modelAttempts === undefined ? metadataValue(checkpoints, "modelAttempts") : {}),
295
+ };
296
+ }
297
+
298
+ function metadataValue<K extends keyof DurableStageCheckpoint>(
299
+ checkpoints: readonly DurableStageCheckpoint[],
300
+ key: K,
301
+ ): Pick<DurableStageCheckpoint, K> | Record<string, never> {
302
+ const value = checkpoints.find((checkpoint) => checkpoint[key] !== undefined)?.[key];
303
+ return value === undefined ? {} : { [key]: value } as Pick<DurableStageCheckpoint, K>;
304
+ }
305
+
306
+
216
307
  export function createStageReplayKeyGenerator(_workflowId: string): (stageName: string, stageId?: string) => string {
217
308
  const counts = new Map<string, number>();
218
309
  return (stageName: string, _stageId?: string): string => {
@@ -236,6 +327,15 @@ function stageSessionCheckpointId(replayKey: string, stage: StageSnapshot): stri
236
327
  export function cachedStageId(runId: string, replayKey: string): string {
237
328
  return `durable-${durableHash({ runId, replayKey })}`;
238
329
  }
330
+ function stageMetadataCheckpointId(replayKey: string, stage: StageSnapshot): string {
331
+ return `${stableCheckpointId("stage-meta", replayKey)}:${durableHash({
332
+ stageId: stage.id,
333
+ endedAt: stage.endedAt ?? 0,
334
+ durationMs: stage.durationMs ?? 0,
335
+ result: stage.result ?? "",
336
+ })}`;
337
+ }
338
+
239
339
 
240
340
  export function recordCachedStageIntoStore(
241
341
  store: import("../shared/store.js").Store,
@@ -245,13 +345,24 @@ export function recordCachedStageIntoStore(
245
345
  output: WorkflowSerializableValue,
246
346
  completedStageReplayKeys: Map<string, string>,
247
347
  parentIds?: readonly string[],
348
+ checkpoint?: DurableCompletedStageCheckpoint,
248
349
  ): void {
249
350
  const now = Date.now();
250
351
  const stageId = cachedStageId(runId, replayKey);
251
- const result = typeof output === "string" ? output : JSON.stringify(output);
352
+ const result = checkpoint?.result ?? (typeof output === "string" ? output : JSON.stringify(output));
353
+ const endedAt = checkpoint?.endedAt ?? checkpoint?.completedAt ?? now;
354
+ const workflowChild = isWorkflowChildResult(output) ? workflowChildSnapshotFromResult(output) : undefined;
252
355
  const snapshot: StageSnapshot = {
253
- id: stageId, name, status: "completed", parentIds: parentIds !== undefined ? Object.freeze([...parentIds]) : [], startedAt: now, endedAt: now, durationMs: 0, result,
356
+ id: stageId, name, status: "completed", parentIds: parentIds !== undefined ? Object.freeze([...parentIds]) : [],
357
+ startedAt: checkpoint?.startedAt ?? endedAt, endedAt, durationMs: checkpoint?.durationMs ?? 0, result,
254
358
  replayKey, replayed: true, skippedReason: "durable checkpoint replay", toolEvents: [], attachable: false,
359
+ ...(workflowChild !== undefined ? { workflowChild } : {}),
360
+ ...(checkpoint?.sessionId !== undefined ? { sessionId: checkpoint.sessionId } : {}),
361
+ ...(checkpoint?.sessionFile !== undefined ? { sessionFile: checkpoint.sessionFile } : {}),
362
+ ...(checkpoint?.model !== undefined ? { model: checkpoint.model } : {}),
363
+ ...(checkpoint?.fastMode !== undefined ? { fastMode: checkpoint.fastMode } : {}),
364
+ ...(checkpoint?.attemptedModels !== undefined ? { attemptedModels: checkpoint.attemptedModels } : {}),
365
+ ...(checkpoint?.modelAttempts !== undefined ? { modelAttempts: checkpoint.modelAttempts } : {}),
255
366
  };
256
367
  store.recordStageStart(runId, snapshot);
257
368
  store.recordStageEnd(runId, snapshot);
@@ -269,16 +380,44 @@ export function recordCachedStageWithTracker(
269
380
  runId: string,
270
381
  name: string,
271
382
  replayKey: string,
272
- output: WorkflowSerializableValue,
383
+ checkpoint: DurableCompletedStageCheckpoint,
273
384
  completedStageReplayKeys: Map<string, string>,
385
+ stageFailFastScope?: ParallelFailFastScope,
274
386
  ): void {
275
387
  const stageId = cachedStageId(runId, replayKey);
276
- const parentIds = tracker.onSpawn(stageId, name);
277
- recordCachedStageIntoStore(store, runId, name, replayKey, output, completedStageReplayKeys, parentIds);
388
+ let parentIds = tracker.onSpawn(stageId, name);
389
+ const scopeParentIds = stageFailFastScope?.parentIds ?? [];
390
+ if (stageFailFastScope !== undefined) {
391
+ tracker.replaceParents(stageId, scopeParentIds);
392
+ parentIds = [...scopeParentIds];
393
+ }
394
+ recordCachedStageIntoStore(store, runId, name, replayKey, checkpoint.output, completedStageReplayKeys, parentIds, checkpoint);
278
395
  tracker.onSettle(stageId);
279
396
  }
280
-
281
397
  function isWorkflowTaskResult(value: WorkflowSerializableValue): value is WorkflowTaskResult {
282
398
  if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
283
399
  return typeof (value as Record<string, WorkflowSerializableValue>)["text"] === "string";
284
400
  }
401
+
402
+ function isWorkflowChildResult(value: WorkflowSerializableValue): value is WorkflowChildResult<WorkflowOutputValues> {
403
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
404
+ const objectValue = value as Record<string, WorkflowSerializableValue | undefined>;
405
+ return typeof objectValue["workflow"] === "string"
406
+ && typeof objectValue["runId"] === "string"
407
+ && typeof objectValue["status"] === "string"
408
+ && typeof objectValue["outputs"] === "object"
409
+ && objectValue["outputs"] !== null
410
+ && !Array.isArray(objectValue["outputs"]);
411
+ }
412
+
413
+ function workflowChildSnapshotFromResult(result: WorkflowChildResult<WorkflowOutputValues>): StageSnapshot["workflowChild"] {
414
+ return {
415
+ alias: result.workflow,
416
+ workflow: result.workflow,
417
+ runId: result.runId,
418
+ status: result.status,
419
+ ...(result.exited !== undefined ? { exited: result.exited } : {}),
420
+ outputs: result.outputs,
421
+ ...(typeof result.exitReason === "string" ? { exitReason: result.exitReason } : {}),
422
+ };
423
+ }
@@ -9,7 +9,7 @@
9
9
  * cross-ref: issue #1498
10
10
  */
11
11
 
12
- import type { WorkflowSerializableValue } from "../shared/types.js";
12
+ import type { WorkflowModelAttempt, WorkflowSerializableValue } from "../shared/types.js";
13
13
 
14
14
  // ---------------------------------------------------------------------------
15
15
  // Top-level workflow identity
@@ -32,6 +32,14 @@ export interface DurableWorkflowHandle {
32
32
  readonly updatedAt: number;
33
33
  /** Current durable status. */
34
34
  readonly status: DurableWorkflowStatus;
35
+ /** Original invocation cwd used to resolve repo-relative workflow defaults on resume. */
36
+ readonly invocationCwd?: string;
37
+ /** Resolved workflow cwd when an input-bound reusable worktree was set up. */
38
+ readonly workflowCwd?: string;
39
+ /** Invoking repository root used for reusable worktree validation. */
40
+ readonly repositoryRoot?: string;
41
+ /** Resolved reusable git worktree root, when setup happened at workflow start. */
42
+ readonly gitWorktreeRoot?: string;
35
43
  /** Session file path that caches this workflow's durable metadata. */
36
44
  readonly sessionFile?: string;
37
45
  /** Number of completed durable checkpoints. */
@@ -113,6 +121,19 @@ export interface DurableStageCheckpoint {
113
121
  readonly sessionId?: string;
114
122
  readonly sessionFile?: string;
115
123
  readonly completedAt: number;
124
+ /** Original stage start timestamp, when available. */
125
+ readonly startedAt?: number;
126
+ /** Original stage end timestamp, when available. */
127
+ readonly endedAt?: number;
128
+ /** Original stage duration, when available. */
129
+ readonly durationMs?: number;
130
+ /** Display/result text recorded for the completed stage. */
131
+ readonly result?: string;
132
+ /** Completed stage/task model metadata used to hydrate replayed snapshots. */
133
+ readonly model?: string;
134
+ readonly fastMode?: boolean;
135
+ readonly attemptedModels?: readonly string[];
136
+ readonly modelAttempts?: readonly WorkflowModelAttempt[];
116
137
  }
117
138
 
118
139
  export type UiPromptKind = "input" | "confirm" | "select" | "editor" | "custom";
@@ -145,6 +166,10 @@ export interface DurableCheckpointEntry {
145
166
  readonly label?: string;
146
167
  readonly rootWorkflowId?: string;
147
168
  readonly resumable?: boolean;
169
+ readonly invocationCwd?: string;
170
+ readonly workflowCwd?: string;
171
+ readonly repositoryRoot?: string;
172
+ readonly gitWorktreeRoot?: string;
148
173
  readonly ts: number;
149
174
  }
150
175
 
@@ -163,6 +188,10 @@ export interface ResumableWorkflowEntry {
163
188
  readonly label?: string;
164
189
  readonly rootWorkflowId?: string;
165
190
  readonly resumable?: boolean;
191
+ readonly invocationCwd?: string;
192
+ readonly workflowCwd?: string;
193
+ readonly repositoryRoot?: string;
194
+ readonly gitWorktreeRoot?: string;
166
195
  readonly createdAt: number;
167
196
  readonly updatedAt: number;
168
197
  }
@@ -1,6 +1,7 @@
1
1
  import type { WorkflowChainOptions, WorkflowParallelOptions, WorkflowTaskOptions, WorkflowTaskResult, WorkflowTaskStep } from "../../shared/types.js";
2
2
  import type { ParallelFailFastScope } from "../../runs/foreground/executor-types.js";
3
3
  import type { EngineRuntime } from "../runtime.js";
4
+ import { RESUME_CONTINUATION_PROMPT } from "../../shared/resume-continuation.js";
4
5
  import {
5
6
  applyTaskContext,
6
7
  structuredTaskOutputText,
@@ -41,6 +42,7 @@ function createTaskPrimitive(runtime: EngineRuntime): WorkflowTaskPrimitive {
41
42
  const resolvedTaskOptions = stageOptionsWithGitWorktree(
42
43
  stageOptionsWithInputDefaults(taskOptions, runtime.inputRuntimeDefaults),
43
44
  runtime.workflowInvocationCwd,
45
+ runtime.gitWorktreeSetupCache,
44
46
  ) ?? taskOptions;
45
47
  const stageOptions = taskStageOptions(resolvedTaskOptions);
46
48
  const stageHandle = runtime.spawnStage(name, {
@@ -50,7 +52,7 @@ function createTaskPrimitive(runtime: EngineRuntime): WorkflowTaskPrimitive {
50
52
  });
51
53
  const stage = stageHandle.context;
52
54
  const promptText = resolvedTaskOptions.resumeFromSessionFile !== undefined
53
- ? "Continue"
55
+ ? RESUME_CONTINUATION_PROMPT
54
56
  : applyTaskContext(`${taskReadInstruction(resolvedTaskOptions)}${taskPrompt(resolvedTaskOptions)}`, taskPrevious(resolvedTaskOptions));
55
57
  const rawOutput = await stage.prompt(promptText, taskPromptOptions(resolvedTaskOptions));
56
58
  const structured = typeof rawOutput === "string" ? undefined : rawOutput;
@@ -38,8 +38,7 @@ export async function finalizeDurableTerminalStatus(input: DurableTerminalFinali
38
38
 
39
39
  const durableStatus = toDurableStatus(status);
40
40
  if (durableStatus !== undefined) {
41
- const resumable = status === "blocked" ? false : input.runSnapshot.resumable;
42
- input.durableBackend.setWorkflowStatus(input.runId, durableStatus, undefined, resumable);
41
+ input.durableBackend.setWorkflowStatus(input.runId, durableStatus, undefined, input.runSnapshot.resumable);
43
42
  }
44
43
  try {
45
44
  await input.durableBackend.flush?.();