@bastani/atomic 0.9.9 → 0.9.10-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (864) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +2 -0
  3. package/dist/builtin/cursor/CHANGELOG.md +6 -0
  4. package/dist/builtin/cursor/package.json +3 -3
  5. package/dist/builtin/intercom/CHANGELOG.md +15 -0
  6. package/dist/builtin/intercom/README.md +12 -4
  7. package/dist/builtin/intercom/broker/broker.ts +96 -14
  8. package/dist/builtin/intercom/broker/client-message-validation.ts +39 -0
  9. package/dist/builtin/intercom/broker/client.ts +101 -92
  10. package/dist/builtin/intercom/broker/group-isolation.ts +28 -0
  11. package/dist/builtin/intercom/broker/send-handler.ts +62 -10
  12. package/dist/builtin/intercom/broker/send-signature.ts +3 -0
  13. package/dist/builtin/intercom/broker/supervisor-channel.ts +126 -0
  14. package/dist/builtin/intercom/closed-workflow-stage-message.ts +66 -0
  15. package/dist/builtin/intercom/config.ts +10 -0
  16. package/dist/builtin/intercom/contact-supervisor-tool.ts +14 -10
  17. package/dist/builtin/intercom/foreground-detach-handoff.ts +12 -2
  18. package/dist/builtin/intercom/group.ts +46 -0
  19. package/dist/builtin/intercom/inbound-message-admission.ts +79 -0
  20. package/dist/builtin/intercom/incoming-message-delivery.ts +49 -0
  21. package/dist/builtin/intercom/index-heavy.ts +148 -94
  22. package/dist/builtin/intercom/index.ts +66 -4
  23. package/dist/builtin/intercom/intercom-test-seams.ts +6 -0
  24. package/dist/builtin/intercom/intercom-tool.ts +71 -20
  25. package/dist/builtin/intercom/intercom-utils.ts +15 -2
  26. package/dist/builtin/intercom/late-stage-message-router.ts +148 -0
  27. package/dist/builtin/intercom/lifecycle.ts +10 -4
  28. package/dist/builtin/intercom/package.json +2 -2
  29. package/dist/builtin/intercom/reconnect-backoff.ts +6 -0
  30. package/dist/builtin/intercom/reply-tracker.ts +8 -0
  31. package/dist/builtin/intercom/skills/intercom/SKILL.md +2 -0
  32. package/dist/builtin/intercom/stable-delivery-retry.ts +32 -0
  33. package/dist/builtin/intercom/subagent-relay.ts +67 -14
  34. package/dist/builtin/intercom/supervisor-authorization-registry.ts +22 -0
  35. package/dist/builtin/intercom/terminal-ordering-barrier.ts +144 -25
  36. package/dist/builtin/intercom/types.ts +18 -5
  37. package/dist/builtin/intercom/workflow-reply-tracker.ts +19 -0
  38. package/dist/builtin/intercom/workflow-stage-admission.ts +43 -0
  39. package/dist/builtin/intercom/workflow-stage-delivery-failure.ts +77 -0
  40. package/dist/builtin/mcp/CHANGELOG.md +11 -0
  41. package/dist/builtin/mcp/README.md +6 -2
  42. package/dist/builtin/mcp/config.ts +8 -8
  43. package/dist/builtin/mcp/direct-tool-executor.ts +7 -6
  44. package/dist/builtin/mcp/package.json +3 -3
  45. package/dist/builtin/mcp/proxy-call.ts +5 -4
  46. package/dist/builtin/mcp/sampling-handler.ts +7 -2
  47. package/dist/builtin/mcp/tool-call-timeout.ts +101 -0
  48. package/dist/builtin/mcp/tool-result-renderer.ts +3 -2
  49. package/dist/builtin/mcp/types.ts +5 -0
  50. package/dist/builtin/mcp/ui-server.ts +3 -2
  51. package/dist/builtin/subagents/CHANGELOG.md +21 -0
  52. package/dist/builtin/subagents/README.md +6 -3
  53. package/dist/builtin/subagents/agents/code-simplifier.md +1 -1
  54. package/dist/builtin/subagents/agents/codebase-analyzer.md +1 -1
  55. package/dist/builtin/subagents/agents/codebase-locator.md +1 -1
  56. package/dist/builtin/subagents/agents/codebase-online-researcher.md +1 -1
  57. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +1 -1
  58. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +1 -1
  59. package/dist/builtin/subagents/agents/codebase-research-locator.md +1 -1
  60. package/dist/builtin/subagents/agents/debugger.md +1 -1
  61. package/dist/builtin/subagents/agents/worker.md +1 -1
  62. package/dist/builtin/subagents/package.json +4 -4
  63. package/dist/builtin/subagents/skills/subagent/SKILL.md +1 -1
  64. package/dist/builtin/subagents/src/extension/index.ts +37 -61
  65. package/dist/builtin/subagents/src/extension/notification-content.ts +80 -0
  66. package/dist/builtin/subagents/src/extension/schemas.ts +9 -0
  67. package/dist/builtin/subagents/src/extension/tool-description.ts +1 -0
  68. package/dist/builtin/subagents/src/intercom/supervisor-authorization.ts +23 -0
  69. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +4 -0
  70. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +2 -0
  71. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +4 -0
  72. package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +75 -13
  73. package/dist/builtin/subagents/src/runs/background/async-status.ts +19 -0
  74. package/dist/builtin/subagents/src/runs/background/completion-notification.ts +4 -3
  75. package/dist/builtin/subagents/src/runs/background/notify.ts +76 -15
  76. package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +1 -1
  77. package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +13 -0
  78. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +1 -0
  79. package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +1 -0
  80. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +2 -1
  81. package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +4 -0
  82. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +13 -0
  83. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +19 -2
  84. package/dist/builtin/subagents/src/runs/foreground/detached-cleanup-barrier.ts +26 -0
  85. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +19 -30
  86. package/dist/builtin/subagents/src/runs/foreground/execution-intercom-detach.ts +47 -0
  87. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +60 -2
  88. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +21 -0
  89. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +21 -2
  90. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +6 -1
  91. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +2 -0
  92. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +2 -0
  93. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +1 -1
  94. package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +50 -0
  95. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +16 -0
  96. package/dist/builtin/subagents/src/runs/shared/worktree-post-create.ts +75 -0
  97. package/dist/builtin/subagents/src/runs/shared/worktree-root.ts +51 -0
  98. package/dist/builtin/subagents/src/runs/shared/worktree.ts +69 -77
  99. package/dist/builtin/subagents/src/shared/types-config.ts +6 -0
  100. package/dist/builtin/subagents/src/slash/slash-commands.ts +3 -2
  101. package/dist/builtin/subagents/src/tui/render-result-compact.ts +5 -3
  102. package/dist/builtin/subagents/src/tui/render-result.ts +5 -3
  103. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +7 -4
  104. package/dist/builtin/web-access/CHANGELOG.md +11 -0
  105. package/dist/builtin/web-access/extract-frames.ts +14 -13
  106. package/dist/builtin/web-access/extract.ts +2 -2
  107. package/dist/builtin/web-access/gemini-api.ts +0 -3
  108. package/dist/builtin/web-access/gemini-web-config.ts +1 -3
  109. package/dist/builtin/web-access/gemini-web.ts +1 -0
  110. package/dist/builtin/web-access/package.json +2 -2
  111. package/dist/builtin/web-access/perplexity.ts +0 -3
  112. package/dist/builtin/web-access/result-renderers.ts +7 -5
  113. package/dist/builtin/web-access/subprocess.ts +100 -0
  114. package/dist/builtin/web-access/summary-review.ts +14 -3
  115. package/dist/builtin/web-access/video-extract.ts +12 -17
  116. package/dist/builtin/web-access/web-search-browser.ts +18 -10
  117. package/dist/builtin/web-access/web-search-summary.ts +9 -2
  118. package/dist/builtin/web-access/youtube-extract.ts +22 -25
  119. package/dist/builtin/workflows/CHANGELOG.md +77 -0
  120. package/dist/builtin/workflows/README.md +76 -38
  121. package/dist/builtin/workflows/ambient.d.ts +30 -0
  122. package/dist/builtin/workflows/builtin/adversarial-verification-prompts.ts +15 -0
  123. package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +93 -0
  124. package/dist/builtin/workflows/builtin/adversarial-verification.d.ts +11 -0
  125. package/dist/builtin/workflows/builtin/adversarial-verification.ts +24 -0
  126. package/dist/builtin/workflows/builtin/classify-and-act-prompts.ts +11 -0
  127. package/dist/builtin/workflows/builtin/classify-and-act-runner.ts +110 -0
  128. package/dist/builtin/workflows/builtin/classify-and-act.d.ts +24 -0
  129. package/dist/builtin/workflows/builtin/classify-and-act.ts +35 -0
  130. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +8 -2
  131. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-prompts.ts +11 -0
  132. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-runner.ts +96 -0
  133. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.d.ts +23 -0
  134. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +32 -0
  135. package/dist/builtin/workflows/builtin/generate-and-filter-prompts.ts +15 -0
  136. package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +75 -0
  137. package/dist/builtin/workflows/builtin/generate-and-filter.d.ts +11 -0
  138. package/dist/builtin/workflows/builtin/generate-and-filter.ts +26 -0
  139. package/dist/builtin/workflows/builtin/goal-models.ts +72 -0
  140. package/dist/builtin/workflows/builtin/goal-runner.ts +2 -64
  141. package/dist/builtin/workflows/builtin/index.d.ts +44 -0
  142. package/dist/builtin/workflows/builtin/index.ts +6 -0
  143. package/dist/builtin/workflows/builtin/loop-until-done-prompts.ts +79 -0
  144. package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +189 -0
  145. package/dist/builtin/workflows/builtin/loop-until-done.d.ts +34 -0
  146. package/dist/builtin/workflows/builtin/loop-until-done.ts +31 -0
  147. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +6 -1
  148. package/dist/builtin/workflows/builtin/pattern-artifact-root.ts +28 -0
  149. package/dist/builtin/workflows/builtin/ralph-models.ts +26 -5
  150. package/dist/builtin/workflows/builtin/ralph-runner.ts +1 -0
  151. package/dist/builtin/workflows/builtin/tournament-prompts.ts +79 -0
  152. package/dist/builtin/workflows/builtin/tournament-runner.ts +188 -0
  153. package/dist/builtin/workflows/builtin/tournament.d.ts +33 -0
  154. package/dist/builtin/workflows/builtin/tournament.ts +34 -0
  155. package/dist/builtin/workflows/package.json +2 -2
  156. package/dist/builtin/workflows/src/authoring.d.ts +2 -6
  157. package/dist/builtin/workflows/src/durable/backend.ts +163 -120
  158. package/dist/builtin/workflows/src/durable/completed-catalog.ts +37 -64
  159. package/dist/builtin/workflows/src/durable/completed-inspection.ts +4 -72
  160. package/dist/builtin/workflows/src/durable/dbos-backend.ts +242 -195
  161. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres.ts +207 -0
  162. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +42 -42
  163. package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +155 -0
  164. package/dist/builtin/workflows/src/durable/dbos-local-postgres.ts +126 -0
  165. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +105 -58
  166. package/dist/builtin/workflows/src/durable/dbos-prompt-reservations.ts +320 -0
  167. package/dist/builtin/workflows/src/durable/dbos-sdk-handle.ts +161 -0
  168. package/dist/builtin/workflows/src/durable/dbos-status-transition.ts +62 -0
  169. package/dist/builtin/workflows/src/durable/dbos-tombstone.ts +2 -2
  170. package/dist/builtin/workflows/src/durable/durable-hash.ts +20 -0
  171. package/dist/builtin/workflows/src/durable/factory.ts +23 -83
  172. package/dist/builtin/workflows/src/durable/format-version.ts +4 -10
  173. package/dist/builtin/workflows/src/durable/index.ts +16 -20
  174. package/dist/builtin/workflows/src/durable/local-command.ts +63 -0
  175. package/dist/builtin/workflows/src/durable/prompt-reservation-state.ts +177 -0
  176. package/dist/builtin/workflows/src/durable/prompt-reservations.ts +36 -0
  177. package/dist/builtin/workflows/src/durable/resume-catalog.ts +2 -200
  178. package/dist/builtin/workflows/src/durable/resume-eligibility.ts +42 -2
  179. package/dist/builtin/workflows/src/durable/resume-runtime.ts +121 -118
  180. package/dist/builtin/workflows/src/durable/retention-policy.ts +42 -0
  181. package/dist/builtin/workflows/src/durable/run-timing.ts +98 -0
  182. package/dist/builtin/workflows/src/durable/scoped-backend.ts +62 -14
  183. package/dist/builtin/workflows/src/durable/stage-primitive.ts +15 -2
  184. package/dist/builtin/workflows/src/durable/tool-primitive.ts +11 -7
  185. package/dist/builtin/workflows/src/durable/types.ts +25 -18
  186. package/dist/builtin/workflows/src/durable/ui-primitive.ts +117 -29
  187. package/dist/builtin/workflows/src/durable/workflow-status-transition.ts +30 -0
  188. package/dist/builtin/workflows/src/engine/primitives/parallel.ts +20 -5
  189. package/dist/builtin/workflows/src/engine/primitives/task.ts +3 -2
  190. package/dist/builtin/workflows/src/engine/primitives/ui.ts +6 -3
  191. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +14 -22
  192. package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +14 -14
  193. package/dist/builtin/workflows/src/engine/run.ts +35 -37
  194. package/dist/builtin/workflows/src/engine/runtime.ts +3 -0
  195. package/dist/builtin/workflows/src/engine/workflow-activity.ts +9 -0
  196. package/dist/builtin/workflows/src/extension/completed-stage-intercom-ask.ts +155 -0
  197. package/dist/builtin/workflows/src/extension/config-file-loader.ts +13 -0
  198. package/dist/builtin/workflows/src/extension/config-loader.ts +20 -0
  199. package/dist/builtin/workflows/src/extension/dispatcher.ts +56 -17
  200. package/dist/builtin/workflows/src/extension/extension-factory.ts +13 -10
  201. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +37 -59
  202. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +16 -18
  203. package/dist/builtin/workflows/src/extension/lifecycle-notification-delivery.ts +83 -0
  204. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +80 -41
  205. package/dist/builtin/workflows/src/extension/postmortem-deps.ts +73 -0
  206. package/dist/builtin/workflows/src/extension/public-types.ts +11 -51
  207. package/dist/builtin/workflows/src/extension/render-call.ts +3 -9
  208. package/dist/builtin/workflows/src/extension/render-result.ts +22 -7
  209. package/dist/builtin/workflows/src/extension/runtime-active-block-claim.ts +78 -0
  210. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +50 -29
  211. package/dist/builtin/workflows/src/extension/runtime.ts +70 -219
  212. package/dist/builtin/workflows/src/extension/ui-surface.ts +107 -3
  213. package/dist/builtin/workflows/src/extension/wiring.ts +76 -7
  214. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +10 -5
  215. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +27 -5
  216. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +49 -19
  217. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +8 -8
  218. package/dist/builtin/workflows/src/extension/workflow-resume-picker-rows.ts +81 -0
  219. package/dist/builtin/workflows/src/extension/workflow-resume-shadow.ts +55 -0
  220. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +193 -145
  221. package/dist/builtin/workflows/src/extension/workflow-schema.ts +9 -133
  222. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +189 -0
  223. package/dist/builtin/workflows/src/extension/workflow-targets.ts +1 -1
  224. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +78 -3
  225. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +185 -89
  226. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +92 -11
  227. package/dist/builtin/workflows/src/extension/workflow-tool.ts +18 -24
  228. package/dist/builtin/workflows/src/runs/background/durable-resume-transition.ts +63 -0
  229. package/dist/builtin/workflows/src/runs/background/quit.ts +139 -29
  230. package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +97 -0
  231. package/dist/builtin/workflows/src/runs/background/run-inspect.ts +111 -0
  232. package/dist/builtin/workflows/src/runs/background/runner.ts +46 -17
  233. package/dist/builtin/workflows/src/runs/background/startup-admission.ts +77 -0
  234. package/dist/builtin/workflows/src/runs/background/status.ts +133 -224
  235. package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +44 -0
  236. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +57 -256
  237. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +7 -4
  238. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +12 -1
  239. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +39 -0
  240. package/dist/builtin/workflows/src/runs/foreground/executor-queued-user-message.ts +75 -0
  241. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +44 -12
  242. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +63 -12
  243. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +30 -4
  244. package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +3 -0
  245. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +4 -1
  246. package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +0 -67
  247. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +6 -0
  248. package/dist/builtin/workflows/src/runs/foreground/executor.ts +0 -1
  249. package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +169 -0
  250. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +38 -1
  251. package/dist/builtin/workflows/src/runs/foreground/stage-runner-candidate.ts +21 -0
  252. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +21 -3
  253. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +85 -84
  254. package/dist/builtin/workflows/src/runs/foreground/stage-runner-message-admission.ts +195 -0
  255. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +12 -5
  256. package/dist/builtin/workflows/src/runs/foreground/stage-runner-replacement.ts +42 -0
  257. package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +100 -8
  258. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +51 -0
  259. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +19 -0
  260. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +28 -2
  261. package/dist/builtin/workflows/src/runs/shared/prompt-callsite.ts +4 -6
  262. package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +89 -0
  263. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +29 -133
  264. package/dist/builtin/workflows/src/runs/shared/worktree-post-create.ts +130 -0
  265. package/dist/builtin/workflows/src/runs/shared/worktree-root.ts +84 -0
  266. package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +77 -63
  267. package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +4 -0
  268. package/dist/builtin/workflows/src/sdk-surface.ts +1 -1
  269. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +29 -22
  270. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +26 -24
  271. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +5 -0
  272. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +5 -0
  273. package/dist/builtin/workflows/src/shared/intercom-group.ts +51 -0
  274. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +6 -0
  275. package/dist/builtin/workflows/src/shared/persistence-restore.ts +4 -0
  276. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +3 -0
  277. package/dist/builtin/workflows/src/shared/prompt-callsite-context.ts +13 -0
  278. package/dist/builtin/workflows/src/shared/returned-run-status.ts +2 -1
  279. package/dist/builtin/workflows/src/shared/session-transcript.ts +74 -0
  280. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +1 -0
  281. package/dist/builtin/workflows/src/shared/store-types.ts +8 -0
  282. package/dist/builtin/workflows/src/shared/timing.ts +4 -1
  283. package/dist/builtin/workflows/src/shared/types.ts +2 -6
  284. package/dist/builtin/workflows/src/tui/chat-surface-message.ts +2 -42
  285. package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +2 -2
  286. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +7 -3
  287. package/dist/builtin/workflows/src/tui/graph-view-input.ts +29 -67
  288. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +15 -10
  289. package/dist/builtin/workflows/src/tui/graph-view-state.ts +0 -2
  290. package/dist/builtin/workflows/src/tui/graph-view-types.ts +3 -9
  291. package/dist/builtin/workflows/src/tui/host-input-form.ts +62 -0
  292. package/dist/builtin/workflows/src/tui/mouse-input.ts +63 -0
  293. package/dist/builtin/workflows/src/tui/node-card.ts +1 -0
  294. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +67 -42
  295. package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +49 -0
  296. package/dist/builtin/workflows/src/tui/session-overlays.ts +3 -104
  297. package/dist/builtin/workflows/src/tui/session-picker.ts +3 -12
  298. package/dist/builtin/workflows/src/tui/stage-chat-composer-drafts.ts +19 -0
  299. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +30 -10
  300. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +19 -9
  301. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +25 -38
  302. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +1 -1
  303. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +7 -6
  304. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +7 -1
  305. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +3 -1
  306. package/dist/builtin/workflows/src/tui/store-widget-installer.ts +19 -20
  307. package/dist/builtin/workflows/src/tui/switcher.ts +4 -4
  308. package/dist/builtin/workflows/src/tui/widget.ts +46 -33
  309. package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +26 -0
  310. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +14 -2
  311. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +26 -27
  312. package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +208 -69
  313. package/dist/bun/cli.js +3 -0
  314. package/dist/bun/cli.js.map +1 -1
  315. package/dist/cli/session-picker.d.ts.map +1 -1
  316. package/dist/cli/session-picker.js +3 -0
  317. package/dist/cli/session-picker.js.map +1 -1
  318. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  319. package/dist/core/agent-session-auto-compaction.js +19 -2
  320. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  321. package/dist/core/agent-session-compaction.js +2 -2
  322. package/dist/core/agent-session-compaction.js.map +1 -1
  323. package/dist/core/agent-session-events.d.ts.map +1 -1
  324. package/dist/core/agent-session-events.js +5 -3
  325. package/dist/core/agent-session-events.js.map +1 -1
  326. package/dist/core/agent-session-export.js +1 -1
  327. package/dist/core/agent-session-export.js.map +1 -1
  328. package/dist/core/agent-session-extension-bindings.d.ts +2 -4
  329. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  330. package/dist/core/agent-session-extension-bindings.js +9 -2
  331. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  332. package/dist/core/agent-session-message-queue.d.ts +6 -0
  333. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  334. package/dist/core/agent-session-message-queue.js +107 -36
  335. package/dist/core/agent-session-message-queue.js.map +1 -1
  336. package/dist/core/agent-session-methods.d.ts +18 -7
  337. package/dist/core/agent-session-methods.d.ts.map +1 -1
  338. package/dist/core/agent-session-methods.js.map +1 -1
  339. package/dist/core/agent-session-models.d.ts +3 -1
  340. package/dist/core/agent-session-models.d.ts.map +1 -1
  341. package/dist/core/agent-session-models.js +1 -1
  342. package/dist/core/agent-session-models.js.map +1 -1
  343. package/dist/core/agent-session-post-tool-compaction.d.ts +16 -0
  344. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -0
  345. package/dist/core/agent-session-post-tool-compaction.js +113 -0
  346. package/dist/core/agent-session-post-tool-compaction.js.map +1 -0
  347. package/dist/core/agent-session-prompt.d.ts +12 -1
  348. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  349. package/dist/core/agent-session-prompt.js +22 -5
  350. package/dist/core/agent-session-prompt.js.map +1 -1
  351. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  352. package/dist/core/agent-session-runtime.js +3 -0
  353. package/dist/core/agent-session-runtime.js.map +1 -1
  354. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  355. package/dist/core/agent-session-tool-hooks.js +21 -0
  356. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  357. package/dist/core/agent-session-tree.d.ts.map +1 -1
  358. package/dist/core/agent-session-tree.js +2 -1
  359. package/dist/core/agent-session-tree.js.map +1 -1
  360. package/dist/core/agent-session-types.d.ts +7 -0
  361. package/dist/core/agent-session-types.d.ts.map +1 -1
  362. package/dist/core/agent-session-types.js.map +1 -1
  363. package/dist/core/agent-session.d.ts +6 -0
  364. package/dist/core/agent-session.d.ts.map +1 -1
  365. package/dist/core/agent-session.js +18 -1
  366. package/dist/core/agent-session.js.map +1 -1
  367. package/dist/core/async/job-manager.d.ts +1 -0
  368. package/dist/core/async/job-manager.d.ts.map +1 -1
  369. package/dist/core/async/job-manager.js +29 -5
  370. package/dist/core/async/job-manager.js.map +1 -1
  371. package/dist/core/async/session-manager.d.ts +2 -4
  372. package/dist/core/async/session-manager.d.ts.map +1 -1
  373. package/dist/core/async/session-manager.js +5 -32
  374. package/dist/core/async/session-manager.js.map +1 -1
  375. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  376. package/dist/core/atomic-guide-command.js +2 -0
  377. package/dist/core/atomic-guide-command.js.map +1 -1
  378. package/dist/core/auth-storage.d.ts +20 -10
  379. package/dist/core/auth-storage.d.ts.map +1 -1
  380. package/dist/core/auth-storage.js +151 -92
  381. package/dist/core/auth-storage.js.map +1 -1
  382. package/dist/core/callback-activity.d.ts +27 -0
  383. package/dist/core/callback-activity.d.ts.map +1 -0
  384. package/dist/core/callback-activity.js +44 -0
  385. package/dist/core/callback-activity.js.map +1 -0
  386. package/dist/core/compaction/branch-summarization.d.ts +4 -1
  387. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  388. package/dist/core/compaction/branch-summarization.js +4 -3
  389. package/dist/core/compaction/branch-summarization.js.map +1 -1
  390. package/dist/core/compaction/compaction-boundary.d.ts +1 -1
  391. package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
  392. package/dist/core/compaction/compaction-boundary.js +10 -23
  393. package/dist/core/compaction/compaction-boundary.js.map +1 -1
  394. package/dist/core/compaction/compaction-runner.d.ts +4 -1
  395. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  396. package/dist/core/compaction/compaction-runner.js +1 -1
  397. package/dist/core/compaction/compaction-runner.js.map +1 -1
  398. package/dist/core/compaction/compaction-types.d.ts +3 -2
  399. package/dist/core/compaction/compaction-types.d.ts.map +1 -1
  400. package/dist/core/compaction/compaction-types.js.map +1 -1
  401. package/dist/core/compaction/compaction.d.ts +6 -6
  402. package/dist/core/compaction/compaction.d.ts.map +1 -1
  403. package/dist/core/compaction/compaction.js +12 -9
  404. package/dist/core/compaction/compaction.js.map +1 -1
  405. package/dist/core/compaction/index.d.ts +1 -0
  406. package/dist/core/compaction/index.d.ts.map +1 -1
  407. package/dist/core/compaction/index.js +1 -0
  408. package/dist/core/compaction/index.js.map +1 -1
  409. package/dist/core/compaction/range-planner-diagnostics.d.ts +101 -0
  410. package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -0
  411. package/dist/core/compaction/range-planner-diagnostics.js +116 -0
  412. package/dist/core/compaction/range-planner-diagnostics.js.map +1 -0
  413. package/dist/core/compaction/range-planner.d.ts +13 -3
  414. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  415. package/dist/core/compaction/range-planner.js +117 -68
  416. package/dist/core/compaction/range-planner.js.map +1 -1
  417. package/dist/core/compaction/truncated-range-recovery.d.ts +47 -0
  418. package/dist/core/compaction/truncated-range-recovery.d.ts.map +1 -0
  419. package/dist/core/compaction/truncated-range-recovery.js +112 -0
  420. package/dist/core/compaction/truncated-range-recovery.js.map +1 -0
  421. package/dist/core/extensions/api-types.d.ts +2 -2
  422. package/dist/core/extensions/api-types.d.ts.map +1 -1
  423. package/dist/core/extensions/api-types.js.map +1 -1
  424. package/dist/core/extensions/context-types.d.ts +23 -1
  425. package/dist/core/extensions/context-types.d.ts.map +1 -1
  426. package/dist/core/extensions/context-types.js.map +1 -1
  427. package/dist/core/extensions/index.d.ts +1 -1
  428. package/dist/core/extensions/index.d.ts.map +1 -1
  429. package/dist/core/extensions/index.js.map +1 -1
  430. package/dist/core/extensions/loader-api.js +2 -2
  431. package/dist/core/extensions/loader-api.js.map +1 -1
  432. package/dist/core/extensions/loader-core.d.ts.map +1 -1
  433. package/dist/core/extensions/loader-core.js +8 -1
  434. package/dist/core/extensions/loader-core.js.map +1 -1
  435. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  436. package/dist/core/extensions/loader-virtual-modules.js +9 -6
  437. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  438. package/dist/core/extensions/message-types.d.ts +17 -0
  439. package/dist/core/extensions/message-types.d.ts.map +1 -1
  440. package/dist/core/extensions/message-types.js.map +1 -1
  441. package/dist/core/extensions/provider-types.d.ts +3 -0
  442. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  443. package/dist/core/extensions/provider-types.js.map +1 -1
  444. package/dist/core/extensions/runner-events.d.ts.map +1 -1
  445. package/dist/core/extensions/runner-events.js +11 -10
  446. package/dist/core/extensions/runner-events.js.map +1 -1
  447. package/dist/core/extensions/runtime-types.d.ts +2 -2
  448. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  449. package/dist/core/extensions/runtime-types.js.map +1 -1
  450. package/dist/core/extensions/ui-types.d.ts +78 -0
  451. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  452. package/dist/core/extensions/ui-types.js.map +1 -1
  453. package/dist/core/model-registry-auth.d.ts +2 -1
  454. package/dist/core/model-registry-auth.d.ts.map +1 -1
  455. package/dist/core/model-registry-auth.js +25 -6
  456. package/dist/core/model-registry-auth.js.map +1 -1
  457. package/dist/core/model-registry-builtins.d.ts +3 -2
  458. package/dist/core/model-registry-builtins.d.ts.map +1 -1
  459. package/dist/core/model-registry-builtins.js +12 -6
  460. package/dist/core/model-registry-builtins.js.map +1 -1
  461. package/dist/core/model-registry-dynamic.d.ts +1 -0
  462. package/dist/core/model-registry-dynamic.d.ts.map +1 -1
  463. package/dist/core/model-registry-dynamic.js +53 -13
  464. package/dist/core/model-registry-dynamic.js.map +1 -1
  465. package/dist/core/model-registry-loader.d.ts +2 -1
  466. package/dist/core/model-registry-loader.d.ts.map +1 -1
  467. package/dist/core/model-registry-loader.js +2 -2
  468. package/dist/core/model-registry-loader.js.map +1 -1
  469. package/dist/core/model-registry-types.d.ts +10 -3
  470. package/dist/core/model-registry-types.d.ts.map +1 -1
  471. package/dist/core/model-registry-types.js.map +1 -1
  472. package/dist/core/model-registry.d.ts +15 -1
  473. package/dist/core/model-registry.d.ts.map +1 -1
  474. package/dist/core/model-registry.js +214 -30
  475. package/dist/core/model-registry.js.map +1 -1
  476. package/dist/core/models-store.d.ts +25 -0
  477. package/dist/core/models-store.d.ts.map +1 -0
  478. package/dist/core/models-store.js +73 -0
  479. package/dist/core/models-store.js.map +1 -0
  480. package/dist/core/oauth-compat.d.ts +17 -0
  481. package/dist/core/oauth-compat.d.ts.map +1 -0
  482. package/dist/core/oauth-compat.js +2 -0
  483. package/dist/core/oauth-compat.js.map +1 -0
  484. package/dist/core/oauth-provider-bridge.d.ts +40 -0
  485. package/dist/core/oauth-provider-bridge.d.ts.map +1 -0
  486. package/dist/core/oauth-provider-bridge.js +169 -0
  487. package/dist/core/oauth-provider-bridge.js.map +1 -0
  488. package/dist/core/output-guard.d.ts +2 -0
  489. package/dist/core/output-guard.d.ts.map +1 -1
  490. package/dist/core/output-guard.js +14 -0
  491. package/dist/core/output-guard.js.map +1 -1
  492. package/dist/core/remote-catalog-provider.d.ts +5 -0
  493. package/dist/core/remote-catalog-provider.d.ts.map +1 -0
  494. package/dist/core/remote-catalog-provider.js +138 -0
  495. package/dist/core/remote-catalog-provider.js.map +1 -0
  496. package/dist/core/sdk.d.ts.map +1 -1
  497. package/dist/core/sdk.js +8 -3
  498. package/dist/core/sdk.js.map +1 -1
  499. package/dist/core/session-manager-core.d.ts +1 -1
  500. package/dist/core/session-manager-core.d.ts.map +1 -1
  501. package/dist/core/session-manager-core.js +1 -1
  502. package/dist/core/session-manager-core.js.map +1 -1
  503. package/dist/core/session-manager-entries.d.ts +1 -1
  504. package/dist/core/session-manager-entries.d.ts.map +1 -1
  505. package/dist/core/session-manager-entries.js.map +1 -1
  506. package/dist/core/session-manager-history.d.ts +2 -2
  507. package/dist/core/session-manager-history.js +2 -2
  508. package/dist/core/session-manager-history.js.map +1 -1
  509. package/dist/core/session-manager-list.d.ts.map +1 -1
  510. package/dist/core/session-manager-list.js +65 -23
  511. package/dist/core/session-manager-list.js.map +1 -1
  512. package/dist/core/session-manager-types.d.ts +3 -2
  513. package/dist/core/session-manager-types.d.ts.map +1 -1
  514. package/dist/core/session-manager-types.js.map +1 -1
  515. package/dist/core/slash-commands.d.ts.map +1 -1
  516. package/dist/core/slash-commands.js +9 -5
  517. package/dist/core/slash-commands.js.map +1 -1
  518. package/dist/core/tools/bash.d.ts.map +1 -1
  519. package/dist/core/tools/bash.js +2 -3
  520. package/dist/core/tools/bash.js.map +1 -1
  521. package/dist/core/tools/find.js +2 -2
  522. package/dist/core/tools/find.js.map +1 -1
  523. package/dist/core/tools/grep.js +2 -2
  524. package/dist/core/tools/grep.js.map +1 -1
  525. package/dist/core/tools/ls.js +2 -2
  526. package/dist/core/tools/ls.js.map +1 -1
  527. package/dist/core/tools/read.d.ts.map +1 -1
  528. package/dist/core/tools/read.js +4 -3
  529. package/dist/core/tools/read.js.map +1 -1
  530. package/dist/core/tools/todos-render.d.ts.map +1 -1
  531. package/dist/core/tools/todos-render.js +3 -2
  532. package/dist/core/tools/todos-render.js.map +1 -1
  533. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  534. package/dist/core/tools/tool-definition-wrapper.js +3 -2
  535. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  536. package/dist/core/tools/write.js +2 -2
  537. package/dist/core/tools/write.js.map +1 -1
  538. package/dist/core/workflow-stage-admission.d.ts +29 -0
  539. package/dist/core/workflow-stage-admission.d.ts.map +1 -0
  540. package/dist/core/workflow-stage-admission.js +81 -0
  541. package/dist/core/workflow-stage-admission.js.map +1 -0
  542. package/dist/index-extensions.d.ts +1 -1
  543. package/dist/index-extensions.d.ts.map +1 -1
  544. package/dist/index-extensions.js.map +1 -1
  545. package/dist/index.d.ts +4 -1
  546. package/dist/index.d.ts.map +1 -1
  547. package/dist/index.js +4 -1
  548. package/dist/index.js.map +1 -1
  549. package/dist/main-types.d.ts +13 -0
  550. package/dist/main-types.d.ts.map +1 -0
  551. package/dist/main-types.js +2 -0
  552. package/dist/main-types.js.map +1 -0
  553. package/dist/main.d.ts +2 -5
  554. package/dist/main.d.ts.map +1 -1
  555. package/dist/main.js +25 -17
  556. package/dist/main.js.map +1 -1
  557. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  558. package/dist/modes/interactive/components/assistant-message.js +17 -12
  559. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  560. package/dist/modes/interactive/components/atomic-banner.d.ts +7 -0
  561. package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
  562. package/dist/modes/interactive/components/atomic-banner.js +20 -0
  563. package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
  564. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  565. package/dist/modes/interactive/components/bash-execution.js +5 -3
  566. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  567. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  568. package/dist/modes/interactive/components/branch-summary-message.js +3 -4
  569. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  570. package/dist/modes/interactive/components/chat-message-renderer.d.ts +4 -0
  571. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  572. package/dist/modes/interactive/components/chat-message-renderer.js +4 -0
  573. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  574. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  575. package/dist/modes/interactive/components/chat-session-host-events.js +79 -8
  576. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  577. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  578. package/dist/modes/interactive/components/chat-session-host-rendering.js +4 -2
  579. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  580. package/dist/modes/interactive/components/chat-session-host.d.ts +1 -0
  581. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  582. package/dist/modes/interactive/components/chat-session-host.js +4 -1
  583. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  584. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  585. package/dist/modes/interactive/components/compaction-boundary-message.js +3 -4
  586. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  587. package/dist/modes/interactive/components/host-input-form-mount.d.ts +14 -0
  588. package/dist/modes/interactive/components/host-input-form-mount.d.ts.map +1 -0
  589. package/dist/modes/interactive/components/host-input-form-mount.js +79 -0
  590. package/dist/modes/interactive/components/host-input-form-mount.js.map +1 -0
  591. package/dist/modes/interactive/components/host-input-form.d.ts +52 -0
  592. package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -0
  593. package/dist/modes/interactive/components/host-input-form.js +278 -0
  594. package/dist/modes/interactive/components/host-input-form.js.map +1 -0
  595. package/dist/modes/interactive/components/host-session-picker.d.ts +46 -0
  596. package/dist/modes/interactive/components/host-session-picker.d.ts.map +1 -0
  597. package/dist/modes/interactive/components/host-session-picker.js +183 -0
  598. package/dist/modes/interactive/components/host-session-picker.js.map +1 -0
  599. package/dist/modes/interactive/components/index.d.ts +1 -1
  600. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  601. package/dist/modes/interactive/components/index.js +1 -1
  602. package/dist/modes/interactive/components/index.js.map +1 -1
  603. package/dist/modes/interactive/components/keybinding-hints.d.ts +2 -0
  604. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  605. package/dist/modes/interactive/components/keybinding-hints.js +12 -0
  606. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  607. package/dist/modes/interactive/components/login-dialog.d.ts +3 -1
  608. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  609. package/dist/modes/interactive/components/login-dialog.js +8 -2
  610. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  611. package/dist/modes/interactive/components/model-selector.d.ts +7 -1
  612. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  613. package/dist/modes/interactive/components/model-selector.js +57 -10
  614. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  615. package/dist/modes/interactive/components/session-selector.d.ts +15 -0
  616. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  617. package/dist/modes/interactive/components/session-selector.js +35 -3
  618. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  619. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  620. package/dist/modes/interactive/components/skill-invocation-message.js +3 -2
  621. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  622. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  623. package/dist/modes/interactive/components/tool-execution.js +9 -0
  624. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  625. package/dist/modes/interactive/interactive-agent-events.js +24 -10
  626. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  627. package/dist/modes/interactive/interactive-auth-login.js +7 -1
  628. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  629. package/dist/modes/interactive/interactive-auth-routing.js +3 -3
  630. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  631. package/dist/modes/interactive/interactive-autocomplete.js +49 -0
  632. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  633. package/dist/modes/interactive/interactive-bash-compact.js +2 -0
  634. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  635. package/dist/modes/interactive/interactive-extension-context.js +14 -0
  636. package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
  637. package/dist/modes/interactive/interactive-extension-runtime.js +1 -1
  638. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  639. package/dist/modes/interactive/interactive-global-clear.d.ts +13 -0
  640. package/dist/modes/interactive/interactive-global-clear.d.ts.map +1 -0
  641. package/dist/modes/interactive/interactive-global-clear.js +11 -0
  642. package/dist/modes/interactive/interactive-global-clear.js.map +1 -0
  643. package/dist/modes/interactive/interactive-input-handling.js +17 -10
  644. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  645. package/dist/modes/interactive/interactive-mode-base.d.ts +6 -1
  646. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  647. package/dist/modes/interactive/interactive-mode-base.js +25 -2
  648. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  649. package/dist/modes/interactive/interactive-mode-deps.d.ts +4 -3
  650. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  651. package/dist/modes/interactive/interactive-mode-deps.js +2 -2
  652. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  653. package/dist/modes/interactive/interactive-mode-helpers.d.ts +4 -1
  654. package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
  655. package/dist/modes/interactive/interactive-mode-helpers.js +14 -1
  656. package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
  657. package/dist/modes/interactive/interactive-mode-surface.d.ts +3 -2
  658. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  659. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  660. package/dist/modes/interactive/interactive-mode-types.d.ts +3 -0
  661. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  662. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  663. package/dist/modes/interactive/interactive-model-routing.js +7 -4
  664. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  665. package/dist/modes/interactive/interactive-queueing.js +2 -2
  666. package/dist/modes/interactive/interactive-queueing.js.map +1 -1
  667. package/dist/modes/interactive/interactive-render-chat.js +25 -4
  668. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  669. package/dist/modes/interactive/interactive-session-routing.js +3 -0
  670. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  671. package/dist/modes/interactive/interactive-slash-commands.js +5 -2
  672. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  673. package/dist/modes/interactive/interactive-startup.d.ts +1 -1
  674. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  675. package/dist/modes/interactive/interactive-startup.js +22 -9
  676. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  677. package/dist/modes/interactive/interactive-terminal-title.d.ts +6 -0
  678. package/dist/modes/interactive/interactive-terminal-title.d.ts.map +1 -0
  679. package/dist/modes/interactive/interactive-terminal-title.js +7 -0
  680. package/dist/modes/interactive/interactive-terminal-title.js.map +1 -0
  681. package/dist/modes/interactive-engine/activity-watchdog.d.ts +45 -0
  682. package/dist/modes/interactive-engine/activity-watchdog.d.ts.map +1 -0
  683. package/dist/modes/interactive-engine/activity-watchdog.js +74 -0
  684. package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -0
  685. package/dist/modes/interactive-engine/create-isolated-runtime.d.ts +14 -0
  686. package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -0
  687. package/dist/modes/interactive-engine/create-isolated-runtime.js +56 -0
  688. package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -0
  689. package/dist/modes/interactive-engine/engine-args.d.ts +10 -0
  690. package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -0
  691. package/dist/modes/interactive-engine/engine-args.js +55 -0
  692. package/dist/modes/interactive-engine/engine-args.js.map +1 -0
  693. package/dist/modes/interactive-engine/engine-child-liveness.d.ts +7 -0
  694. package/dist/modes/interactive-engine/engine-child-liveness.d.ts.map +1 -0
  695. package/dist/modes/interactive-engine/engine-child-liveness.js +50 -0
  696. package/dist/modes/interactive-engine/engine-child-liveness.js.map +1 -0
  697. package/dist/modes/interactive-engine/engine-custom-ui.d.ts +47 -0
  698. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -0
  699. package/dist/modes/interactive-engine/engine-custom-ui.js +276 -0
  700. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -0
  701. package/dist/modes/interactive-engine/engine-input-form.d.ts +13 -0
  702. package/dist/modes/interactive-engine/engine-input-form.d.ts.map +1 -0
  703. package/dist/modes/interactive-engine/engine-input-form.js +49 -0
  704. package/dist/modes/interactive-engine/engine-input-form.js.map +1 -0
  705. package/dist/modes/interactive-engine/engine-monitor.d.ts +18 -0
  706. package/dist/modes/interactive-engine/engine-monitor.d.ts.map +1 -0
  707. package/dist/modes/interactive-engine/engine-monitor.js +63 -0
  708. package/dist/modes/interactive-engine/engine-monitor.js.map +1 -0
  709. package/dist/modes/interactive-engine/engine-render-service.d.ts +17 -0
  710. package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -0
  711. package/dist/modes/interactive-engine/engine-render-service.js +150 -0
  712. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -0
  713. package/dist/modes/interactive-engine/engine-session-picker.d.ts +22 -0
  714. package/dist/modes/interactive-engine/engine-session-picker.d.ts.map +1 -0
  715. package/dist/modes/interactive-engine/engine-session-picker.js +106 -0
  716. package/dist/modes/interactive-engine/engine-session-picker.js.map +1 -0
  717. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +23 -0
  718. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -0
  719. package/dist/modes/interactive-engine/extension-ui-bridge.js +126 -0
  720. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -0
  721. package/dist/modes/interactive-engine/input-form-host.d.ts +15 -0
  722. package/dist/modes/interactive-engine/input-form-host.d.ts.map +1 -0
  723. package/dist/modes/interactive-engine/input-form-host.js +44 -0
  724. package/dist/modes/interactive-engine/input-form-host.js.map +1 -0
  725. package/dist/modes/interactive-engine/isolated-runtime.d.ts +75 -0
  726. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -0
  727. package/dist/modes/interactive-engine/isolated-runtime.js +448 -0
  728. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -0
  729. package/dist/modes/interactive-engine/protocol.d.ts +184 -0
  730. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -0
  731. package/dist/modes/interactive-engine/protocol.js +254 -0
  732. package/dist/modes/interactive-engine/protocol.js.map +1 -0
  733. package/dist/modes/interactive-engine/remote-command-catalog.d.ts +33 -0
  734. package/dist/modes/interactive-engine/remote-command-catalog.d.ts.map +1 -0
  735. package/dist/modes/interactive-engine/remote-command-catalog.js +51 -0
  736. package/dist/modes/interactive-engine/remote-command-catalog.js.map +1 -0
  737. package/dist/modes/interactive-engine/remote-component.d.ts +16 -0
  738. package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -0
  739. package/dist/modes/interactive-engine/remote-component.js +209 -0
  740. package/dist/modes/interactive-engine/remote-component.js.map +1 -0
  741. package/dist/modes/interactive-engine/remote-frame-clamp.d.ts +25 -0
  742. package/dist/modes/interactive-engine/remote-frame-clamp.d.ts.map +1 -0
  743. package/dist/modes/interactive-engine/remote-frame-clamp.js +43 -0
  744. package/dist/modes/interactive-engine/remote-frame-clamp.js.map +1 -0
  745. package/dist/modes/interactive-engine/remote-renderer.d.ts +59 -0
  746. package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -0
  747. package/dist/modes/interactive-engine/remote-renderer.js +123 -0
  748. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -0
  749. package/dist/modes/interactive-engine/session-picker-host.d.ts +25 -0
  750. package/dist/modes/interactive-engine/session-picker-host.d.ts.map +1 -0
  751. package/dist/modes/interactive-engine/session-picker-host.js +75 -0
  752. package/dist/modes/interactive-engine/session-picker-host.js.map +1 -0
  753. package/dist/modes/interactive-engine/terminal-mode-controller.d.ts +43 -0
  754. package/dist/modes/interactive-engine/terminal-mode-controller.d.ts.map +1 -0
  755. package/dist/modes/interactive-engine/terminal-mode-controller.js +109 -0
  756. package/dist/modes/interactive-engine/terminal-mode-controller.js.map +1 -0
  757. package/dist/modes/rpc/bounded-writer.d.ts +27 -0
  758. package/dist/modes/rpc/bounded-writer.d.ts.map +1 -0
  759. package/dist/modes/rpc/bounded-writer.js +103 -0
  760. package/dist/modes/rpc/bounded-writer.js.map +1 -0
  761. package/dist/modes/rpc/jsonl.d.ts +15 -12
  762. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  763. package/dist/modes/rpc/jsonl.js +102 -28
  764. package/dist/modes/rpc/jsonl.js.map +1 -1
  765. package/dist/modes/rpc/rpc-client-api.d.ts +83 -0
  766. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -0
  767. package/dist/modes/rpc/rpc-client-api.js +64 -0
  768. package/dist/modes/rpc/rpc-client-api.js.map +1 -0
  769. package/dist/modes/rpc/rpc-client-process.d.ts +19 -0
  770. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -0
  771. package/dist/modes/rpc/rpc-client-process.js +79 -0
  772. package/dist/modes/rpc/rpc-client-process.js.map +1 -0
  773. package/dist/modes/rpc/rpc-client-waits.d.ts +8 -0
  774. package/dist/modes/rpc/rpc-client-waits.d.ts.map +1 -0
  775. package/dist/modes/rpc/rpc-client-waits.js +33 -0
  776. package/dist/modes/rpc/rpc-client-waits.js.map +1 -0
  777. package/dist/modes/rpc/rpc-client.d.ts +48 -124
  778. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  779. package/dist/modes/rpc/rpc-client.js +295 -249
  780. package/dist/modes/rpc/rpc-client.js.map +1 -1
  781. package/dist/modes/rpc/rpc-command-handler.d.ts +5 -1
  782. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  783. package/dist/modes/rpc/rpc-command-handler.js +79 -3
  784. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  785. package/dist/modes/rpc/rpc-event-buffer.d.ts +11 -0
  786. package/dist/modes/rpc/rpc-event-buffer.d.ts.map +1 -0
  787. package/dist/modes/rpc/rpc-event-buffer.js +30 -0
  788. package/dist/modes/rpc/rpc-event-buffer.js.map +1 -0
  789. package/dist/modes/rpc/rpc-extension-ui.d.ts +7 -1
  790. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
  791. package/dist/modes/rpc/rpc-extension-ui.js +54 -32
  792. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
  793. package/dist/modes/rpc/rpc-input-scheduler.d.ts +16 -0
  794. package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -0
  795. package/dist/modes/rpc/rpc-input-scheduler.js +69 -0
  796. package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -0
  797. package/dist/modes/rpc/rpc-input.d.ts +2 -1
  798. package/dist/modes/rpc/rpc-input.d.ts.map +1 -1
  799. package/dist/modes/rpc/rpc-input.js +4 -9
  800. package/dist/modes/rpc/rpc-input.js.map +1 -1
  801. package/dist/modes/rpc/rpc-keybindings-reload.d.ts +27 -0
  802. package/dist/modes/rpc/rpc-keybindings-reload.d.ts.map +1 -0
  803. package/dist/modes/rpc/rpc-keybindings-reload.js +69 -0
  804. package/dist/modes/rpc/rpc-keybindings-reload.js.map +1 -0
  805. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  806. package/dist/modes/rpc/rpc-mode.js +63 -8
  807. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  808. package/dist/modes/rpc/rpc-output-buffer.d.ts +10 -0
  809. package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -0
  810. package/dist/modes/rpc/rpc-output-buffer.js +70 -0
  811. package/dist/modes/rpc/rpc-output-buffer.js.map +1 -0
  812. package/dist/modes/rpc/rpc-session-binding.d.ts +16 -1
  813. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
  814. package/dist/modes/rpc/rpc-session-binding.js +16 -3
  815. package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
  816. package/dist/modes/rpc/rpc-types.d.ts +109 -0
  817. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  818. package/dist/modes/rpc/rpc-types.js.map +1 -1
  819. package/dist/package-manager-cli-parser.d.ts +2 -0
  820. package/dist/package-manager-cli-parser.d.ts.map +1 -1
  821. package/dist/package-manager-cli-parser.js +24 -5
  822. package/dist/package-manager-cli-parser.js.map +1 -1
  823. package/dist/package-manager-cli.d.ts +7 -0
  824. package/dist/package-manager-cli.d.ts.map +1 -1
  825. package/dist/package-manager-cli.js +65 -1
  826. package/dist/package-manager-cli.js.map +1 -1
  827. package/dist/utils/shell.d.ts +1 -0
  828. package/dist/utils/shell.d.ts.map +1 -1
  829. package/dist/utils/shell.js +46 -0
  830. package/dist/utils/shell.js.map +1 -1
  831. package/docs/changelog.mdx +11 -0
  832. package/docs/compaction.md +53 -17
  833. package/docs/custom-provider.md +24 -5
  834. package/docs/development.md +9 -7
  835. package/docs/docs.json +1 -0
  836. package/docs/extensions.md +30 -16
  837. package/docs/intercom.md +489 -0
  838. package/docs/json.md +1 -1
  839. package/docs/keybindings.md +1 -1
  840. package/docs/packages.md +1 -0
  841. package/docs/quickstart.md +11 -5
  842. package/docs/rpc.md +9 -7
  843. package/docs/sdk.md +6 -0
  844. package/docs/session-format.md +7 -6
  845. package/docs/sessions.md +4 -2
  846. package/docs/settings.md +2 -2
  847. package/docs/subagents.md +7 -2
  848. package/docs/tui.md +61 -2
  849. package/docs/usage.md +6 -5
  850. package/docs/workflows.md +2572 -1379
  851. package/examples/extensions/handoff.ts +1 -1
  852. package/examples/extensions/qna.ts +1 -1
  853. package/examples/extensions/summarize.ts +1 -1
  854. package/npm-shrinkwrap.json +225 -76
  855. package/package.json +7 -6
  856. package/dist/builtin/workflows/src/durable/file-backend.ts +0 -439
  857. package/dist/builtin/workflows/src/durable/file-lock.ts +0 -153
  858. package/dist/builtin/workflows/src/durable/file-state.ts +0 -104
  859. package/dist/builtin/workflows/src/extension/runtime-direct.ts +0 -96
  860. package/dist/builtin/workflows/src/extension/workflow-tool-helpers.ts +0 -66
  861. package/dist/builtin/workflows/src/runs/foreground/executor-direct-output.ts +0 -91
  862. package/dist/builtin/workflows/src/runs/foreground/executor-direct.ts +0 -282
  863. package/dist/builtin/workflows/src/shared/resumable-workflow-notices.ts +0 -43
  864. package/dist/builtin/workflows/src/tui/session-confirm.ts +0 -299
@@ -0,0 +1,11 @@
1
+ import type { WorkflowDefinition, WorkflowInputValues, WorkflowOutputValues } from "../src/authoring.js";
2
+ export type GenerateAndFilterInputs = WorkflowInputValues & { readonly prompt: string; readonly num_candidates: number; readonly shortlist_size: number; readonly use_judge: boolean; readonly max_concurrency: number };
3
+ export type GenerateAndFilterRunInputs = WorkflowInputValues & { readonly prompt: string; readonly num_candidates?: number; readonly shortlist_size?: number; readonly use_judge?: boolean; readonly max_concurrency?: number };
4
+ export type GenerateAndFilterOutputs = WorkflowOutputValues & {
5
+ readonly result: string; readonly shortlist: string[]; readonly candidate_artifact_paths: string[];
6
+ readonly filter_path: string; readonly judge_path: string | null; readonly final_path: string;
7
+ readonly artifact_dir: string; readonly manifest_path: string;
8
+ };
9
+ export type GenerateAndFilterDefinition = WorkflowDefinition<GenerateAndFilterInputs, GenerateAndFilterOutputs, GenerateAndFilterRunInputs>;
10
+ declare const workflow: GenerateAndFilterDefinition;
11
+ export default workflow;
@@ -0,0 +1,26 @@
1
+ import { Type } from "typebox";
2
+ import { workflow } from "../src/authoring/workflow.js";
3
+ import { runGenerateAndFilter } from "./generate-and-filter-runner.js";
4
+
5
+ export default workflow({
6
+ name: "generate-and-filter",
7
+ description: "Generate more independent candidates than needed, deduplicate and filter them by rubric, optionally judge them, and return a parent-consumable shortlist.",
8
+ inputs: {
9
+ prompt: Type.String({ description: "Prompt for candidate generation and selection." }),
10
+ num_candidates: Type.Integer({ minimum: 2, maximum: 20, default: 8, description: "Number of independent candidates to generate." }),
11
+ shortlist_size: Type.Integer({ minimum: 1, maximum: 10, default: 3, description: "Maximum number of candidates in the final shortlist." }),
12
+ use_judge: Type.Boolean({ default: true, description: "Whether an independent judge reviews the filtered shortlist." }),
13
+ max_concurrency: Type.Integer({ minimum: 1, maximum: 12, default: 4, description: "Maximum simultaneous generator stages." }),
14
+ },
15
+ outputs: {
16
+ result: Type.String({ description: "Final human-readable shortlist report." }),
17
+ shortlist: Type.Array(Type.String(), { description: "Ranked paths to selected candidate artifacts." }),
18
+ candidate_artifact_paths: Type.Array(Type.String(), { description: "Paths to every generated candidate artifact." }),
19
+ filter_path: Type.String({ description: "Path to the dedupe and filter decision." }),
20
+ judge_path: Type.Union([Type.String(), Type.Null()], { description: "Path to the optional judge decision, or null when disabled." }),
21
+ final_path: Type.String({ description: "Path to the final shortlist report." }),
22
+ artifact_dir: Type.String({ description: "Directory containing run artifacts." }),
23
+ manifest_path: Type.String({ description: "Path to the candidate artifact manifest." }),
24
+ },
25
+ run: runGenerateAndFilter,
26
+ });
@@ -0,0 +1,72 @@
1
+ import { reviewDecisionSchema } from "./goal-schemas.js";
2
+
3
+ // Model chains are curated from Atomic's agentic-coding benchmark; see
4
+ // ralph-models.ts for frontier data and drop rationale.
5
+ export const workerModelConfig = {
6
+ model: "openai-codex/gpt-5.6-sol:medium",
7
+ fallbackModels: [
8
+ "github-copilot/gpt-5.6-sol:medium",
9
+ "openai/gpt-5.6-sol:medium",
10
+ "openai-codex/gpt-5.5:medium",
11
+ "github-copilot/gpt-5.5:medium",
12
+ "openai/gpt-5.5:medium",
13
+ "anthropic/claude-fable-5:low",
14
+ "github-copilot/claude-opus-4.8 (1m):medium",
15
+ "anthropic/claude-opus-4-8:medium",
16
+ "cursor/gpt-5.6-sol:medium",
17
+ "cursor/gpt-5.5:medium",
18
+ "cursor/claude-fable-5:low",
19
+ "cursor/claude-opus-4-8-thinking:medium",
20
+ "xai/grok-4.5:high",
21
+ "cursor/grok-4.5:high",
22
+ "zai/glm-5.2:high",
23
+ "zai-coding-cn/glm-5.2:high",
24
+ "cursor/glm-5.2",
25
+ "openrouter/openai/gpt-5.6-sol:medium",
26
+ "openrouter/openai/gpt-5.5:medium",
27
+ "openrouter/anthropic/claude-fable-5:low",
28
+ "openrouter/anthropic/claude-opus-4-8:medium",
29
+ "openrouter/x-ai/grok-4.5",
30
+ "openrouter/z-ai/glm-5.2:xhigh"
31
+ ],
32
+ excludedTools: ["ask_user_question"],
33
+ };
34
+
35
+ // Keep this model list identical to Ralph reviewer-a while preserving an
36
+ // independent Goal configuration and Goal's richer decision schema.
37
+ // Reviewer-a leads its fallbacks with Kimi K3 so reviewer A and B decorrelate.
38
+ export const reviewerModelConfig = {
39
+ model: "anthropic/claude-fable-5:high",
40
+ fallbackModels: [
41
+ "kimi-coding/k3:max",
42
+ "moonshotai/kimi-k3:max",
43
+ "moonshotai-cn/kimi-k3:max",
44
+ "openai-codex/gpt-5.6-sol:xhigh",
45
+ "github-copilot/gpt-5.6-sol:xhigh",
46
+ "openai/gpt-5.6-sol:xhigh",
47
+ "openai-codex/gpt-5.5:xhigh",
48
+ "github-copilot/gpt-5.5:xhigh",
49
+ "openai/gpt-5.5:xhigh",
50
+ "github-copilot/claude-opus-4.8 (1m):high",
51
+ "anthropic/claude-opus-4-8:high",
52
+ "cursor/claude-fable-5:high",
53
+ "cursor/gpt-5.6-sol:xhigh",
54
+ "cursor/gpt-5.5:high",
55
+ "cursor/claude-opus-4-8-thinking:high",
56
+ "xai/grok-4.5:high",
57
+ "cursor/grok-4.5:high",
58
+ "zai/glm-5.2:xhigh",
59
+ "zai-coding-cn/glm-5.2:xhigh",
60
+ "cursor/glm-5.2",
61
+ "openrouter/anthropic/claude-fable-5:high",
62
+ "openrouter/moonshotai/kimi-k3:max",
63
+ "openrouter/openai/gpt-5.6-sol:xhigh",
64
+ "openrouter/sakana/fugu-ultra:high",
65
+ "openrouter/openai/gpt-5.5:xhigh",
66
+ "openrouter/anthropic/claude-opus-4-8:high",
67
+ "openrouter/x-ai/grok-4.5",
68
+ "openrouter/z-ai/glm-5.2:xhigh"
69
+ ],
70
+ excludedTools: ["ask_user_question"],
71
+ schema: reviewDecisionSchema,
72
+ };
@@ -1,6 +1,6 @@
1
1
  import { join } from "node:path";
2
2
  import type { WorkflowParallelOptions, WorkflowTaskOptions, WorkflowTaskResult, WorkflowTaskStep } from "../src/shared/types.js";
3
- import { reviewDecisionSchema } from "./goal-schemas.js";
3
+ import { reviewerModelConfig, workerModelConfig } from "./goal-models.js";
4
4
  import {
5
5
  DEFAULT_BLOCKER_THRESHOLD,
6
6
  DEFAULT_MAX_TURNS,
@@ -114,69 +114,6 @@ export async function runGoalWorkflow(ctx: GoalRunnerContext, options: GoalWorkf
114
114
  const comparisonBaseBranch = normalizeBranchInput(inputs.base_branch, "origin/main");
115
115
  const { ledger, ledgerPath, artifactDir } = await createGoalLedger(objective, acceptanceCriteria);
116
116
 
117
- // Chains curated from Atomic's agentic-coding benchmark; see ralph-models.ts for frontier data and drop rationale.
118
- const workerModelConfig = {
119
- model: "openai-codex/gpt-5.6-sol:medium",
120
- fallbackModels: [
121
- "github-copilot/gpt-5.6-sol:medium",
122
- "openai/gpt-5.6-sol:medium",
123
- "openai-codex/gpt-5.5:medium",
124
- "github-copilot/gpt-5.5:medium",
125
- "openai/gpt-5.5:medium",
126
- "anthropic/claude-fable-5:low",
127
- "github-copilot/claude-opus-4.8 (1m):medium",
128
- "anthropic/claude-opus-4-8:medium",
129
- "cursor/gpt-5.6-sol:medium",
130
- "cursor/gpt-5.5:medium",
131
- "cursor/claude-fable-5:low",
132
- "cursor/claude-opus-4-8-thinking:medium",
133
- "cursor/grok-4.5",
134
- "zai/glm-5.2:high",
135
- "zai-coding-cn/glm-5.2:high",
136
- "cursor/glm-5.2",
137
- "openrouter/openai/gpt-5.6-sol:medium",
138
- "openrouter/openai/gpt-5.5:medium",
139
- "openrouter/anthropic/claude-fable-5:low",
140
- "openrouter/anthropic/claude-opus-4-8:medium",
141
- "openrouter/x-ai/grok-4.5",
142
- "openrouter/z-ai/glm-5.2:xhigh"
143
- ],
144
- excludedTools: ["ask_user_question"],
145
- };
146
-
147
- // Keep this model list identical to Ralph reviewer-a while preserving an
148
- // independent Goal configuration and Goal's richer decision schema.
149
- const reviewerModelConfig = {
150
- model: "anthropic/claude-fable-5:high",
151
- fallbackModels: [
152
- "openai-codex/gpt-5.6-sol:xhigh",
153
- "github-copilot/gpt-5.6-sol:xhigh",
154
- "openai/gpt-5.6-sol:xhigh",
155
- "openai-codex/gpt-5.5:xhigh",
156
- "github-copilot/gpt-5.5:xhigh",
157
- "openai/gpt-5.5:xhigh",
158
- "github-copilot/claude-opus-4.8 (1m):high",
159
- "anthropic/claude-opus-4-8:high",
160
- "cursor/claude-fable-5:high",
161
- "cursor/gpt-5.6-sol:xhigh",
162
- "cursor/gpt-5.5:high",
163
- "cursor/claude-opus-4-8-thinking:high",
164
- "cursor/grok-4.5",
165
- "zai/glm-5.2:xhigh",
166
- "zai-coding-cn/glm-5.2:xhigh",
167
- "cursor/glm-5.2",
168
- "openrouter/anthropic/claude-fable-5:high",
169
- "openrouter/openai/gpt-5.6-sol:xhigh",
170
- "openrouter/sakana/fugu-ultra:high",
171
- "openrouter/openai/gpt-5.5:xhigh",
172
- "openrouter/anthropic/claude-opus-4-8:high",
173
- "openrouter/x-ai/grok-4.5",
174
- "openrouter/z-ai/glm-5.2:xhigh"
175
- ],
176
- excludedTools: ["ask_user_question"],
177
- schema: reviewDecisionSchema,
178
- };
179
-
180
117
  let latestReviews: ReviewRecord[] = [];
181
118
  let latestReviewArtifactPaths: string[] = [];
182
119
  let latestReviewReportPath: string | undefined;
@@ -304,6 +241,7 @@ export async function runGoalWorkflow(ctx: GoalRunnerContext, options: GoalWorkf
304
241
  reviewResults = await ctx.parallel(reviewerSteps, {
305
242
  task: objective,
306
243
  failFast: true,
244
+ group: `goal-reviewers-turn-${turn}`,
307
245
  });
308
246
  } catch (err) {
309
247
  reviewerBatchFailed = true;
@@ -142,6 +142,50 @@ export type OpenClaudeDesignWorkflowDefinition = WorkflowDefinition<
142
142
  OpenClaudeDesignWorkflowRunInputs
143
143
  >;
144
144
 
145
+ export {
146
+ default as adversarialVerification,
147
+ type AdversarialVerificationDefinition,
148
+ type AdversarialVerificationInputs,
149
+ type AdversarialVerificationOutputs,
150
+ type AdversarialVerificationRunInputs,
151
+ } from "./adversarial-verification.js";
152
+ export {
153
+ default as classifyAndAct,
154
+ type ClassifyAndActWorkflowDefinition,
155
+ type ClassifyAndActWorkflowInputs,
156
+ type ClassifyAndActWorkflowOutputs,
157
+ type ClassifyAndActWorkflowRunInputs,
158
+ } from "./classify-and-act.js";
159
+ export {
160
+ default as fanOutAndSynthesize,
161
+ type FanOutAndSynthesizeWorkflowDefinition,
162
+ type FanOutAndSynthesizeWorkflowInputs,
163
+ type FanOutAndSynthesizeWorkflowOutputs,
164
+ type FanOutAndSynthesizeWorkflowRunInputs,
165
+ } from "./fan-out-and-synthesize.js";
166
+ export {
167
+ default as generateAndFilter,
168
+ type GenerateAndFilterDefinition,
169
+ type GenerateAndFilterInputs,
170
+ type GenerateAndFilterOutputs,
171
+ type GenerateAndFilterRunInputs,
172
+ } from "./generate-and-filter.js";
173
+ export {
174
+ default as loopUntilDone,
175
+ type LoopUntilDoneWorkflowDefinition,
176
+ type LoopUntilDoneWorkflowInputs,
177
+ type LoopUntilDoneWorkflowOutputs,
178
+ type LoopUntilDoneWorkflowRunInputs,
179
+ type LoopUntilDoneWorkflowStatus,
180
+ } from "./loop-until-done.js";
181
+ export {
182
+ default as tournament,
183
+ type TournamentWorkflowDefinition,
184
+ type TournamentWorkflowInputs,
185
+ type TournamentWorkflowOutputs,
186
+ type TournamentWorkflowRunInputs,
187
+ } from "./tournament.js";
188
+
145
189
  export declare const deepResearchCodebase: DeepResearchCodebaseWorkflowDefinition;
146
190
  export declare const goal: GoalWorkflowDefinition;
147
191
  export declare const ralph: RalphWorkflowDefinition;
@@ -5,7 +5,13 @@
5
5
  * package metadata pointing at this directory.
6
6
  */
7
7
 
8
+ export { default as adversarialVerification } from "./adversarial-verification.js";
9
+ export { default as classifyAndAct } from "./classify-and-act.js";
8
10
  export { default as deepResearchCodebase } from "./deep-research-codebase.js";
11
+ export { default as fanOutAndSynthesize } from "./fan-out-and-synthesize.js";
12
+ export { default as generateAndFilter } from "./generate-and-filter.js";
9
13
  export { default as goal } from "./goal.js";
10
14
  export { default as ralph } from "./ralph.js";
11
15
  export { default as openClaudeDesign } from "./open-claude-design.js";
16
+ export { default as loopUntilDone } from "./loop-until-done.js";
17
+ export { default as tournament } from "./tournament.js";
@@ -0,0 +1,79 @@
1
+ type PromptSection = readonly [tag: string, content: string];
2
+
3
+ function taggedPrompt(sections: readonly PromptSection[]): string {
4
+ return sections
5
+ .map(([tag, content]) => `<${tag}>\n${content.trim()}\n</${tag}>`)
6
+ .join("\n\n");
7
+ }
8
+
9
+ export function renderIterationPrompt(options: {
10
+ readonly task: string;
11
+ readonly iteration: number;
12
+ readonly maxIterations: number;
13
+ readonly ledgerPath: string;
14
+ }): string {
15
+ return taggedPrompt([
16
+ ["role", "You are the active worker in a bounded evidence-driven completion loop."],
17
+ ["objective", options.task],
18
+ ["iteration", `${options.iteration} of ${options.maxIterations}`],
19
+ ["progress_ledger", `Read ${options.ledgerPath} first. It is the durable source of truth for attempted work, findings, failures, validation evidence, and remaining work.`],
20
+ ["requirements", [
21
+ "Select the highest-value unfinished item supported by the ledger and current state.",
22
+ "Perform concrete work; do not merely restate the objective or ledger.",
23
+ "Avoid repeating failed approaches unless new evidence justifies the retry.",
24
+ "Run the strongest practical validation for the work completed in this iteration.",
25
+ "Report exactly what changed, evidence gathered, failures encountered, and what remains.",
26
+ ].join("\n")],
27
+ ["success_criteria", "This iteration makes measurable progress or supplies decisive evidence that the explicit objective is complete."],
28
+ ["output_format", "Markdown with Work performed, Changes, Validation evidence, New findings, Failures, and Remaining work."],
29
+ ]);
30
+ }
31
+
32
+ export function renderEvaluationPrompt(options: {
33
+ readonly task: string;
34
+ readonly iteration: number;
35
+ readonly ledgerPath: string;
36
+ readonly iterationPath: string;
37
+ }): string {
38
+ return taggedPrompt([
39
+ ["role", "You are an independent completion evaluator. Judge evidence, not the worker's confidence."],
40
+ ["objective", options.task],
41
+ ["artifacts", [
42
+ `Durable progress ledger: ${options.ledgerPath}`,
43
+ `Current iteration artifact: ${options.iterationPath}`,
44
+ "Read both files before deciding.",
45
+ ].join("\n")],
46
+ ["stop_condition", [
47
+ "Set done=true only when the objective is fully satisfied and current validation evidence proves it.",
48
+ "Set done=false when any required behavior, validation, cleanup, or evidence remains missing or uncertain.",
49
+ "Do not invent requirements beyond the objective.",
50
+ ].join("\n")],
51
+ ["evidence_rules", [
52
+ "List concrete validation evidence supporting the decision.",
53
+ "Record new findings and failures distinctly.",
54
+ "When incomplete, state actionable remaining work for the next iteration.",
55
+ "Return the required structured decision.",
56
+ ].join("\n")],
57
+ ["success_criteria", `The iteration ${options.iteration} decision is reproducible from cited artifact evidence.`],
58
+ ]);
59
+ }
60
+
61
+ export function renderCompletionPrompt(options: {
62
+ readonly task: string;
63
+ readonly ledgerPath: string;
64
+ readonly iterationPath: string;
65
+ }): string {
66
+ return taggedPrompt([
67
+ ["role", "You are the final completion reporter."],
68
+ ["objective", options.task],
69
+ ["artifacts", `Read the complete ledger at ${options.ledgerPath} and final iteration artifact at ${options.iterationPath}.`],
70
+ ["requirements", [
71
+ "Summarize the delivered outcome without adding unsupported claims.",
72
+ "Cite the validation evidence that satisfied the stop condition.",
73
+ "List artifact paths needed to audit the work.",
74
+ "Report residual risks even when no work remains.",
75
+ ].join("\n")],
76
+ ["success_criteria", "The final report is concise, evidence-backed, and independently auditable from the ledger."],
77
+ ["output_format", "Markdown with Outcome, Evidence, Artifacts, Residual risks, and Remaining work (None)."],
78
+ ]);
79
+ }
@@ -0,0 +1,189 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { Type } from "typebox";
4
+ import type {
5
+ WorkflowRunContext,
6
+ WorkflowSerializableObject,
7
+ WorkflowSerializableValue,
8
+ WorkflowTaskResult,
9
+ } from "../src/shared/types.js";
10
+ import {
11
+ renderCompletionPrompt,
12
+ renderEvaluationPrompt,
13
+ renderIterationPrompt,
14
+ } from "./loop-until-done-prompts.js";
15
+ import { stableArtifactRoot } from "./pattern-artifact-root.js";
16
+
17
+ const evaluationSchema = Type.Object({
18
+ done: Type.Boolean(),
19
+ summary: Type.String(),
20
+ new_findings: Type.Array(Type.String()),
21
+ failures: Type.Array(Type.String()),
22
+ validation_evidence: Type.Array(Type.String()),
23
+ remaining_work: Type.String(),
24
+ }, { additionalProperties: false });
25
+
26
+ type LoopInputs = {
27
+ readonly prompt: string;
28
+ readonly max_iterations: number;
29
+ } & Record<string, WorkflowSerializableValue>;
30
+
31
+ type Evaluation = {
32
+ readonly done: boolean;
33
+ readonly summary: string;
34
+ readonly newFindings: readonly string[];
35
+ readonly failures: readonly string[];
36
+ readonly validationEvidence: readonly string[];
37
+ readonly remainingWork: string;
38
+ };
39
+ type LedgerEntry = {
40
+ readonly iteration: number;
41
+ readonly artifact_path: string;
42
+ readonly evaluation_artifact_path: string;
43
+ readonly summary: string;
44
+ readonly findings: readonly string[];
45
+ readonly failures: readonly string[];
46
+ readonly validation_evidence: readonly string[];
47
+ readonly done: boolean;
48
+ readonly remaining_work: string;
49
+ };
50
+ function serializableObject(
51
+ value: WorkflowSerializableValue | undefined,
52
+ ): WorkflowSerializableObject | undefined {
53
+ if (value === null || Array.isArray(value) || typeof value !== "object") return undefined;
54
+ return value as WorkflowSerializableObject;
55
+ }
56
+
57
+ function stringArray(value: WorkflowSerializableValue | undefined): readonly string[] | undefined {
58
+ return Array.isArray(value) && value.every((item) => typeof item === "string")
59
+ ? value
60
+ : undefined;
61
+ }
62
+
63
+ function evaluationFrom(result: WorkflowTaskResult): Evaluation {
64
+ const value = serializableObject(result.structured);
65
+ if (value === undefined) {
66
+ throw new Error(`loop-until-done: evaluator ${result.stageName} did not return a structured decision`);
67
+ }
68
+ const done = value.done;
69
+ const summary = value.summary;
70
+ const newFindings = stringArray(value.new_findings);
71
+ const failures = stringArray(value.failures);
72
+ const validationEvidence = stringArray(value.validation_evidence);
73
+ const remainingWork = value.remaining_work;
74
+ if (typeof done !== "boolean" || typeof summary !== "string" ||
75
+ newFindings === undefined || failures === undefined || validationEvidence === undefined ||
76
+ typeof remainingWork !== "string") {
77
+ throw new Error(`loop-until-done: evaluator ${result.stageName} returned an invalid decision`);
78
+ }
79
+ return { done, summary, newFindings, failures, validationEvidence, remainingWork };
80
+ }
81
+
82
+ async function writeLedger(path: string, task: string, maxIterations: number, status: string,
83
+ entries: readonly LedgerEntry[]): Promise<void> {
84
+ await writeFile(path, `${JSON.stringify({
85
+ task,
86
+ max_iterations: maxIterations,
87
+ status,
88
+ iterations_completed: entries.length,
89
+ entries,
90
+ }, null, 2)}\n`);
91
+ }
92
+
93
+ export async function runLoopUntilDone(ctx: WorkflowRunContext<LoopInputs>) {
94
+ const artifactDir = await stableArtifactRoot(ctx, "loop-until-done");
95
+ const iterationsDir = join(artifactDir, "iterations");
96
+ const evaluationsDir = join(artifactDir, "evaluations");
97
+ await mkdir(iterationsDir, { recursive: true });
98
+ await mkdir(evaluationsDir, { recursive: true });
99
+ const ledgerPath = join(artifactDir, "progress-ledger.json");
100
+ const entries: LedgerEntry[] = [];
101
+ const iterationArtifactPaths: string[] = [];
102
+ const evaluationArtifactPaths: string[] = [];
103
+ await writeLedger(ledgerPath, ctx.inputs.prompt, ctx.inputs.max_iterations, "active", entries);
104
+
105
+ for (let iteration = 1; iteration <= ctx.inputs.max_iterations; iteration += 1) {
106
+ const iterationPath = join(iterationsDir, `iteration-${iteration}.md`);
107
+ const evaluationPath = join(evaluationsDir, `evaluation-${iteration}.json`);
108
+ iterationArtifactPaths.push(iterationPath);
109
+ evaluationArtifactPaths.push(evaluationPath);
110
+ await ctx.task(`iteration-${iteration}`, {
111
+ prompt: renderIterationPrompt({
112
+ task: ctx.inputs.prompt,
113
+ iteration,
114
+ maxIterations: ctx.inputs.max_iterations,
115
+ ledgerPath,
116
+ }),
117
+ context: "fresh",
118
+ reads: [ledgerPath, ...(iteration > 1 ? [iterationArtifactPaths[iteration - 2]!] : [])],
119
+ output: iterationPath,
120
+ outputMode: "file-only",
121
+ });
122
+ const evaluator = await ctx.task(`evaluate-${iteration}`, {
123
+ prompt: renderEvaluationPrompt({
124
+ task: ctx.inputs.prompt,
125
+ iteration,
126
+ ledgerPath,
127
+ iterationPath,
128
+ }),
129
+ context: "fresh",
130
+ reads: [ledgerPath, iterationPath],
131
+ schema: evaluationSchema,
132
+ output: evaluationPath,
133
+ outputMode: "file-only",
134
+ });
135
+ const decision = evaluationFrom(evaluator);
136
+ entries.push({
137
+ iteration,
138
+ artifact_path: iterationPath,
139
+ evaluation_artifact_path: evaluationPath,
140
+ summary: decision.summary,
141
+ findings: decision.newFindings,
142
+ failures: decision.failures,
143
+ validation_evidence: decision.validationEvidence,
144
+ done: decision.done,
145
+ remaining_work: decision.remainingWork,
146
+ });
147
+ await writeLedger(
148
+ ledgerPath,
149
+ ctx.inputs.prompt,
150
+ ctx.inputs.max_iterations,
151
+ decision.done ? "complete" : "active",
152
+ entries,
153
+ );
154
+ if (decision.done) {
155
+ const resultPath = join(artifactDir, "result.md");
156
+ const final = await ctx.task("completion-summary", {
157
+ prompt: renderCompletionPrompt({ task: ctx.inputs.prompt, ledgerPath, iterationPath }),
158
+ context: "fresh",
159
+ reads: [ledgerPath, iterationPath],
160
+ output: resultPath,
161
+ });
162
+ return {
163
+ result: final.text,
164
+ status: "complete" as const,
165
+ iterations_completed: iteration,
166
+ ledger_path: ledgerPath,
167
+ iteration_artifact_paths: iterationArtifactPaths,
168
+ evaluation_artifact_paths: evaluationArtifactPaths,
169
+ result_path: resultPath,
170
+ remaining_work: "",
171
+ artifact_dir: artifactDir,
172
+ };
173
+ }
174
+ }
175
+
176
+ const last = entries.at(-1)!;
177
+ await writeLedger(ledgerPath, ctx.inputs.prompt, ctx.inputs.max_iterations, "failed", entries);
178
+ return {
179
+ result: `Iteration limit exhausted after ${ctx.inputs.max_iterations} iterations. Inspect ${ledgerPath}.`,
180
+ status: "failed" as const,
181
+ iterations_completed: ctx.inputs.max_iterations,
182
+ ledger_path: ledgerPath,
183
+ iteration_artifact_paths: iterationArtifactPaths,
184
+ evaluation_artifact_paths: evaluationArtifactPaths,
185
+ result_path: ledgerPath,
186
+ remaining_work: last.remaining_work,
187
+ artifact_dir: artifactDir,
188
+ };
189
+ }
@@ -0,0 +1,34 @@
1
+ import type { WorkflowDefinition, WorkflowInputValues, WorkflowOutputValues } from "../src/authoring.js";
2
+
3
+ export type LoopUntilDoneWorkflowStatus = "complete" | "failed";
4
+
5
+ export type LoopUntilDoneWorkflowInputs = WorkflowInputValues & {
6
+ readonly prompt: string;
7
+ readonly max_iterations: number;
8
+ };
9
+
10
+ export type LoopUntilDoneWorkflowRunInputs = WorkflowInputValues & {
11
+ readonly prompt: string;
12
+ readonly max_iterations?: number;
13
+ };
14
+
15
+ export type LoopUntilDoneWorkflowOutputs = WorkflowOutputValues & {
16
+ readonly result: string;
17
+ readonly status: LoopUntilDoneWorkflowStatus;
18
+ readonly iterations_completed: number;
19
+ readonly ledger_path: string;
20
+ readonly iteration_artifact_paths: string[];
21
+ readonly evaluation_artifact_paths: string[];
22
+ readonly result_path: string;
23
+ readonly remaining_work: string;
24
+ readonly artifact_dir: string;
25
+ };
26
+
27
+ export type LoopUntilDoneWorkflowDefinition = WorkflowDefinition<
28
+ LoopUntilDoneWorkflowInputs,
29
+ LoopUntilDoneWorkflowOutputs,
30
+ LoopUntilDoneWorkflowRunInputs
31
+ >;
32
+
33
+ declare const workflow: LoopUntilDoneWorkflowDefinition;
34
+ export default workflow;
@@ -0,0 +1,31 @@
1
+ import { Type } from "typebox";
2
+ import { workflow } from "../src/authoring/workflow.js";
3
+ import { runLoopUntilDone } from "./loop-until-done-runner.js";
4
+
5
+ export default workflow({
6
+ name: "loop-until-done",
7
+ description: "Repeat evidence-producing work and independent completion evaluation against a durable ledger until done or an inspectable iteration-limit failure.",
8
+ inputs: {
9
+ prompt: Type.String({ description: "Objective whose explicit completion condition controls the bounded loop." }),
10
+ max_iterations: Type.Integer({
11
+ minimum: 1,
12
+ maximum: 20,
13
+ default: 5,
14
+ description: "Maximum work/evaluation iterations before returning an inspectable failed status (1-20).",
15
+ }),
16
+ },
17
+ outputs: {
18
+ result: Type.String({ description: "Evidence-backed completion report or deterministic exhaustion report." }),
19
+ status: Type.Union([Type.Literal("complete"), Type.Literal("failed")], {
20
+ description: "Complete when evidence satisfies the stop condition; failed when max_iterations is exhausted.",
21
+ }),
22
+ iterations_completed: Type.Integer({ description: "Number of completed work/evaluation iterations." }),
23
+ ledger_path: Type.String({ description: "Path to the durable JSON progress ledger." }),
24
+ iteration_artifact_paths: Type.Array(Type.String(), { description: "Ordered paths to per-iteration work artifacts." }),
25
+ evaluation_artifact_paths: Type.Array(Type.String(), { description: "Ordered paths to structured evaluation artifacts." }),
26
+ result_path: Type.String({ description: "Path to the final report, or the ledger on exhausted failure." }),
27
+ remaining_work: Type.String({ description: "Actionable remaining work; empty only after proven completion." }),
28
+ artifact_dir: Type.String({ description: "Run-specific directory containing loop artifacts." }),
29
+ },
30
+ run: async (ctx) => await runLoopUntilDone(ctx),
31
+ });
@@ -84,16 +84,21 @@ export async function runOpenClaudeDesignWorkflow(ctx: OpenClaudeDesignContext):
84
84
  "anthropic/claude-opus-4-8:high",
85
85
  "cursor/claude-fable-5:high",
86
86
  "cursor/claude-opus-4-8-thinking:high",
87
+ "kimi-coding/k3:max",
88
+ "moonshotai/kimi-k3:max",
89
+ "moonshotai-cn/kimi-k3:max",
87
90
  "openai-codex/gpt-5.6-sol:xhigh",
88
91
  "github-copilot/gpt-5.6-sol:xhigh",
89
92
  "openai/gpt-5.6-sol:xhigh",
90
93
  "cursor/gpt-5.6-sol:xhigh",
91
- "cursor/grok-4.5",
94
+ "xai/grok-4.5:high",
95
+ "cursor/grok-4.5:high",
92
96
  "zai/glm-5.2:xhigh",
93
97
  "zai-coding-cn/glm-5.2:xhigh",
94
98
  "cursor/glm-5.2",
95
99
  "openrouter/anthropic/claude-fable-5:high",
96
100
  "openrouter/anthropic/claude-opus-4-8:high",
101
+ "openrouter/moonshotai/kimi-k3:max",
97
102
  "openrouter/openai/gpt-5.6-sol:xhigh",
98
103
  "openrouter/sakana/fugu-ultra:high",
99
104
  "openrouter/x-ai/grok-4.5",
@@ -0,0 +1,28 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { mkdir } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import type { WorkflowRunContext } from "../src/shared/types.js";
5
+
6
+ /**
7
+ * Durable per-run artifact root under `<cwd>/.atomic/workflows/runs`.
8
+ *
9
+ * The random directory name is generated exactly once through `ctx.tool`, so
10
+ * a durable resume replays the original path instead of computing a fresh
11
+ * per-process root. Replayed stages therefore keep reading artifacts written
12
+ * before the interruption. The `mkdir` stays outside the durable checkpoint
13
+ * and is idempotent, so both fresh runs and resumes converge on an existing
14
+ * directory.
15
+ */
16
+ export async function stableArtifactRoot(
17
+ ctx: Pick<WorkflowRunContext, "cwd" | "tool">,
18
+ workflowName: string,
19
+ ): Promise<string> {
20
+ const cwd = ctx.cwd ?? process.cwd();
21
+ const artifactDir = await ctx.tool(
22
+ "artifact-root",
23
+ { workflow: workflowName },
24
+ async () => join(cwd, ".atomic", "workflows", "runs", `${workflowName}-${randomUUID()}`),
25
+ );
26
+ await mkdir(artifactDir, { recursive: true });
27
+ return artifactDir;
28
+ }