@bastani/atomic 0.9.16-alpha.2 → 0.9.16-alpha.4

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 (648) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/builtin/intercom/broker/spawn.ts +22 -2
  3. package/dist/builtin/intercom/index.bundle.mjs +61756 -0
  4. package/dist/builtin/intercom/package.json +3 -3
  5. package/dist/builtin/mcp/index.bundle.mjs +64963 -0
  6. package/dist/builtin/mcp/package.json +2 -2
  7. package/dist/builtin/subagents/package.json +2 -2
  8. package/dist/builtin/subagents/src/extension/index.bundle.mjs +85733 -0
  9. package/dist/builtin/web-access/index.bundle.mjs +67475 -0
  10. package/dist/builtin/web-access/package.json +2 -2
  11. package/dist/builtin/workflows/package.json +3 -3
  12. package/dist/builtin/workflows/src/extension/index.bundle.mjs +76480 -96363
  13. package/dist/builtin/workflows/src/index.bundle.mjs +73306 -0
  14. package/dist/config-package-identity.d.ts +22 -0
  15. package/dist/config-package-identity.d.ts.map +1 -0
  16. package/dist/config-package-identity.js +73 -0
  17. package/dist/config-package-identity.js.map +1 -0
  18. package/dist/config.d.ts.map +1 -1
  19. package/dist/config.js +5 -10
  20. package/dist/config.js.map +1 -1
  21. package/dist/core/builtin-install-layout.d.ts +22 -0
  22. package/dist/core/builtin-install-layout.d.ts.map +1 -0
  23. package/dist/core/builtin-install-layout.js +23 -0
  24. package/dist/core/builtin-install-layout.js.map +1 -0
  25. package/dist/core/builtin-packages.d.ts.map +1 -1
  26. package/dist/core/builtin-packages.js +8 -32
  27. package/dist/core/builtin-packages.js.map +1 -1
  28. package/npm-shrinkwrap.json +32 -32
  29. package/package.json +3 -3
  30. package/dist/builtin/intercom/closed-workflow-stage-message.ts +0 -66
  31. package/dist/builtin/intercom/config.ts +0 -121
  32. package/dist/builtin/intercom/contact-supervisor-tool.ts +0 -328
  33. package/dist/builtin/intercom/foreground-detach-handoff.ts +0 -164
  34. package/dist/builtin/intercom/group.ts +0 -85
  35. package/dist/builtin/intercom/inbound-idle-queue.ts +0 -82
  36. package/dist/builtin/intercom/inbound-message-admission.ts +0 -79
  37. package/dist/builtin/intercom/incoming-message-delivery.ts +0 -49
  38. package/dist/builtin/intercom/index-heavy.ts +0 -539
  39. package/dist/builtin/intercom/index.ts +0 -503
  40. package/dist/builtin/intercom/intercom-test-seams.ts +0 -6
  41. package/dist/builtin/intercom/intercom-tool.ts +0 -602
  42. package/dist/builtin/intercom/intercom-utils.ts +0 -427
  43. package/dist/builtin/intercom/late-stage-message-router.ts +0 -148
  44. package/dist/builtin/intercom/lazy-heavy-proxy.ts +0 -108
  45. package/dist/builtin/intercom/lazy-subagent-ack.ts +0 -25
  46. package/dist/builtin/intercom/lazy-tool-execution.ts +0 -39
  47. package/dist/builtin/intercom/lifecycle-lease.ts +0 -51
  48. package/dist/builtin/intercom/lifecycle.ts +0 -144
  49. package/dist/builtin/intercom/overlay.ts +0 -96
  50. package/dist/builtin/intercom/parent-ask-handoff.ts +0 -72
  51. package/dist/builtin/intercom/reconnect-backoff.ts +0 -6
  52. package/dist/builtin/intercom/reply-routing.ts +0 -17
  53. package/dist/builtin/intercom/reply-tracker.ts +0 -110
  54. package/dist/builtin/intercom/reply-waiter.ts +0 -115
  55. package/dist/builtin/intercom/result-renderers.ts +0 -77
  56. package/dist/builtin/intercom/runtime-group.ts +0 -13
  57. package/dist/builtin/intercom/session-target.ts +0 -54
  58. package/dist/builtin/intercom/source-ownership.ts +0 -31
  59. package/dist/builtin/intercom/stable-delivery-retry.ts +0 -32
  60. package/dist/builtin/intercom/subagent-relay.ts +0 -290
  61. package/dist/builtin/intercom/supervisor-authorization-registry.ts +0 -22
  62. package/dist/builtin/intercom/terminal-ordering-barrier.ts +0 -247
  63. package/dist/builtin/intercom/types.ts +0 -66
  64. package/dist/builtin/intercom/ui/compose.ts +0 -159
  65. package/dist/builtin/intercom/ui/inline-message.ts +0 -78
  66. package/dist/builtin/intercom/ui/session-list.ts +0 -195
  67. package/dist/builtin/intercom/workflow-reply-tracker.ts +0 -19
  68. package/dist/builtin/intercom/workflow-stage-admission.ts +0 -43
  69. package/dist/builtin/intercom/workflow-stage-delivery-failure.ts +0 -77
  70. package/dist/builtin/mcp/agent-dir.ts +0 -30
  71. package/dist/builtin/mcp/apps-cancellation.ts +0 -32
  72. package/dist/builtin/mcp/call-tool-result.ts +0 -9
  73. package/dist/builtin/mcp/caller-wait.ts +0 -50
  74. package/dist/builtin/mcp/cli.js +0 -191
  75. package/dist/builtin/mcp/command-registration.ts +0 -82
  76. package/dist/builtin/mcp/commands.ts +0 -424
  77. package/dist/builtin/mcp/config-write-utils.ts +0 -104
  78. package/dist/builtin/mcp/config.ts +0 -498
  79. package/dist/builtin/mcp/consent-manager.ts +0 -64
  80. package/dist/builtin/mcp/direct-tool-executor.ts +0 -280
  81. package/dist/builtin/mcp/direct-tools.ts +0 -216
  82. package/dist/builtin/mcp/errors.ts +0 -219
  83. package/dist/builtin/mcp/glimpse-ui.ts +0 -81
  84. package/dist/builtin/mcp/host-html-template.ts +0 -426
  85. package/dist/builtin/mcp/index.ts +0 -443
  86. package/dist/builtin/mcp/init.ts +0 -319
  87. package/dist/builtin/mcp/lifecycle.ts +0 -93
  88. package/dist/builtin/mcp/logger.ts +0 -169
  89. package/dist/builtin/mcp/mcp-auth-flow.ts +0 -372
  90. package/dist/builtin/mcp/mcp-auth.ts +0 -297
  91. package/dist/builtin/mcp/mcp-callback-server.ts +0 -306
  92. package/dist/builtin/mcp/mcp-oauth-provider.ts +0 -324
  93. package/dist/builtin/mcp/mcp-panel-renderer.ts +0 -243
  94. package/dist/builtin/mcp/mcp-panel-state.ts +0 -227
  95. package/dist/builtin/mcp/mcp-panel-types.ts +0 -86
  96. package/dist/builtin/mcp/mcp-panel.ts +0 -393
  97. package/dist/builtin/mcp/mcp-setup-panel.ts +0 -502
  98. package/dist/builtin/mcp/metadata-cache.ts +0 -201
  99. package/dist/builtin/mcp/metadata-hydration.ts +0 -52
  100. package/dist/builtin/mcp/npx-resolver.ts +0 -425
  101. package/dist/builtin/mcp/oauth-handler.ts +0 -60
  102. package/dist/builtin/mcp/onboarding-state.ts +0 -68
  103. package/dist/builtin/mcp/proxy-auth.ts +0 -61
  104. package/dist/builtin/mcp/proxy-call.ts +0 -447
  105. package/dist/builtin/mcp/proxy-connect.ts +0 -78
  106. package/dist/builtin/mcp/proxy-info-modes.ts +0 -409
  107. package/dist/builtin/mcp/proxy-modes.ts +0 -3
  108. package/dist/builtin/mcp/proxy-types.ts +0 -3
  109. package/dist/builtin/mcp/resource-tools.ts +0 -17
  110. package/dist/builtin/mcp/sampling-handler.ts +0 -273
  111. package/dist/builtin/mcp/server-manager.ts +0 -372
  112. package/dist/builtin/mcp/session-cleanup-barrier.ts +0 -43
  113. package/dist/builtin/mcp/startup-warmup.ts +0 -110
  114. package/dist/builtin/mcp/state-lease.ts +0 -12
  115. package/dist/builtin/mcp/state.ts +0 -41
  116. package/dist/builtin/mcp/tool-call-timeout.ts +0 -101
  117. package/dist/builtin/mcp/tool-metadata.ts +0 -152
  118. package/dist/builtin/mcp/tool-registrar.ts +0 -46
  119. package/dist/builtin/mcp/tool-result-renderer.ts +0 -66
  120. package/dist/builtin/mcp/types.ts +0 -445
  121. package/dist/builtin/mcp/ui-resource-handler.ts +0 -145
  122. package/dist/builtin/mcp/ui-server-http.ts +0 -81
  123. package/dist/builtin/mcp/ui-server.ts +0 -499
  124. package/dist/builtin/mcp/ui-session.ts +0 -378
  125. package/dist/builtin/mcp/ui-stream-types.ts +0 -89
  126. package/dist/builtin/mcp/utils.ts +0 -165
  127. package/dist/builtin/subagents/src/agents/agent-discovery.ts +0 -116
  128. package/dist/builtin/subagents/src/agents/agent-loaders.ts +0 -216
  129. package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +0 -221
  130. package/dist/builtin/subagents/src/agents/agent-management.ts +0 -315
  131. package/dist/builtin/subagents/src/agents/agent-overrides.ts +0 -450
  132. package/dist/builtin/subagents/src/agents/agent-paths.ts +0 -69
  133. package/dist/builtin/subagents/src/agents/agent-scope.ts +0 -6
  134. package/dist/builtin/subagents/src/agents/agent-selection.ts +0 -23
  135. package/dist/builtin/subagents/src/agents/agent-serializer.ts +0 -113
  136. package/dist/builtin/subagents/src/agents/agent-types.ts +0 -97
  137. package/dist/builtin/subagents/src/agents/agents.ts +0 -25
  138. package/dist/builtin/subagents/src/agents/frontmatter.ts +0 -74
  139. package/dist/builtin/subagents/src/agents/identity.ts +0 -37
  140. package/dist/builtin/subagents/src/agents/skills-paths.ts +0 -380
  141. package/dist/builtin/subagents/src/agents/skills.ts +0 -398
  142. package/dist/builtin/subagents/src/extension/api-lifecycle.ts +0 -64
  143. package/dist/builtin/subagents/src/extension/config.ts +0 -16
  144. package/dist/builtin/subagents/src/extension/control-notices.ts +0 -91
  145. package/dist/builtin/subagents/src/extension/index.ts +0 -420
  146. package/dist/builtin/subagents/src/extension/notification-content.ts +0 -85
  147. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +0 -11
  148. package/dist/builtin/subagents/src/extension/schemas.ts +0 -208
  149. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +0 -133
  150. package/dist/builtin/subagents/src/extension/tool-description.ts +0 -17
  151. package/dist/builtin/subagents/src/extension/tool-rendering.ts +0 -53
  152. package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +0 -376
  153. package/dist/builtin/subagents/src/intercom/result-intercom.ts +0 -246
  154. package/dist/builtin/subagents/src/intercom/supervisor-authorization.ts +0 -30
  155. package/dist/builtin/subagents/src/runs/foreground/completion-notification.ts +0 -42
  156. package/dist/builtin/subagents/src/runs/foreground/detached-cleanup-barrier.ts +0 -26
  157. package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +0 -58
  158. package/dist/builtin/subagents/src/runs/foreground/execution-detach-route.ts +0 -19
  159. package/dist/builtin/subagents/src/runs/foreground/execution-intercom-detach.ts +0 -51
  160. package/dist/builtin/subagents/src/runs/foreground/execution-parent-ask-handoff.ts +0 -78
  161. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +0 -1
  162. package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +0 -26
  163. package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +0 -61
  164. package/dist/builtin/subagents/src/runs/foreground/execution.ts +0 -6
  165. package/dist/builtin/subagents/src/runs/foreground/inprocess-run-sync.ts +0 -512
  166. package/dist/builtin/subagents/src/runs/foreground/notify.ts +0 -355
  167. package/dist/builtin/subagents/src/runs/foreground/parent-ask-output.ts +0 -48
  168. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-burst-display.ts +0 -46
  169. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-burst.ts +0 -403
  170. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +0 -223
  171. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-cwd.ts +0 -6
  172. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +0 -139
  173. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-live-update.ts +0 -11
  174. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +0 -268
  175. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +0 -327
  176. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parent-ask-projection.ts +0 -11
  177. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +0 -12
  178. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +0 -350
  179. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +0 -246
  180. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +0 -131
  181. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +0 -102
  182. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +0 -217
  183. package/dist/builtin/subagents/src/runs/inprocess/child-policy.ts +0 -27
  184. package/dist/builtin/subagents/src/runs/inprocess/control-registry.ts +0 -55
  185. package/dist/builtin/subagents/src/runs/inprocess/control-status.ts +0 -72
  186. package/dist/builtin/subagents/src/runs/inprocess/index.ts +0 -27
  187. package/dist/builtin/subagents/src/runs/inprocess/prompt-behavior.ts +0 -168
  188. package/dist/builtin/subagents/src/runs/inprocess/runner.ts +0 -1280
  189. package/dist/builtin/subagents/src/runs/inprocess/runtime-support/temp-cleanup.ts +0 -69
  190. package/dist/builtin/subagents/src/runs/inprocess.ts +0 -1
  191. package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +0 -67
  192. package/dist/builtin/subagents/src/runs/shared/long-running-guard.ts +0 -182
  193. package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +0 -391
  194. package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +0 -56
  195. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +0 -88
  196. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +0 -70
  197. package/dist/builtin/subagents/src/runs/shared/progress-trend.ts +0 -69
  198. package/dist/builtin/subagents/src/runs/shared/run-history.ts +0 -64
  199. package/dist/builtin/subagents/src/runs/shared/single-output.ts +0 -169
  200. package/dist/builtin/subagents/src/runs/shared/subagent-control.ts +0 -234
  201. package/dist/builtin/subagents/src/runs/shared/worktree-post-create.ts +0 -111
  202. package/dist/builtin/subagents/src/runs/shared/worktree-root.ts +0 -67
  203. package/dist/builtin/subagents/src/runs/shared/worktree.ts +0 -552
  204. package/dist/builtin/subagents/src/shared/artifacts.ts +0 -240
  205. package/dist/builtin/subagents/src/shared/atomic-json.ts +0 -16
  206. package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +0 -330
  207. package/dist/builtin/subagents/src/shared/exclusive-file-publication.ts +0 -44
  208. package/dist/builtin/subagents/src/shared/fast-mode.ts +0 -87
  209. package/dist/builtin/subagents/src/shared/file-coalescer.ts +0 -40
  210. package/dist/builtin/subagents/src/shared/fork-context.ts +0 -79
  211. package/dist/builtin/subagents/src/shared/formatters.ts +0 -89
  212. package/dist/builtin/subagents/src/shared/jsonl-writer.ts +0 -83
  213. package/dist/builtin/subagents/src/shared/model-info.ts +0 -101
  214. package/dist/builtin/subagents/src/shared/model-resolution.ts +0 -78
  215. package/dist/builtin/subagents/src/shared/session-identity.ts +0 -10
  216. package/dist/builtin/subagents/src/shared/session-tokens.ts +0 -45
  217. package/dist/builtin/subagents/src/shared/settings.ts +0 -118
  218. package/dist/builtin/subagents/src/shared/status-format.ts +0 -50
  219. package/dist/builtin/subagents/src/shared/types-config.ts +0 -206
  220. package/dist/builtin/subagents/src/shared/types-depth.ts +0 -46
  221. package/dist/builtin/subagents/src/shared/types-foreground-state.ts +0 -48
  222. package/dist/builtin/subagents/src/shared/types-output.ts +0 -63
  223. package/dist/builtin/subagents/src/shared/types-results.ts +0 -259
  224. package/dist/builtin/subagents/src/shared/types-runtime.ts +0 -115
  225. package/dist/builtin/subagents/src/shared/types.ts +0 -13
  226. package/dist/builtin/subagents/src/shared/utils.ts +0 -342
  227. package/dist/builtin/subagents/src/slash/bridge-settlement.ts +0 -87
  228. package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +0 -455
  229. package/dist/builtin/subagents/src/slash/slash-bridge.ts +0 -194
  230. package/dist/builtin/subagents/src/slash/slash-commands.ts +0 -5
  231. package/dist/builtin/subagents/src/slash/slash-live-state.ts +0 -259
  232. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +0 -7
  233. package/dist/builtin/subagents/src/tui/render-helpers.ts +0 -90
  234. package/dist/builtin/subagents/src/tui/render-layout.ts +0 -157
  235. package/dist/builtin/subagents/src/tui/render-progress.ts +0 -89
  236. package/dist/builtin/subagents/src/tui/render-result-animation.ts +0 -47
  237. package/dist/builtin/subagents/src/tui/render-result-compact.ts +0 -248
  238. package/dist/builtin/subagents/src/tui/render-result.ts +0 -438
  239. package/dist/builtin/subagents/src/tui/render-stable-output.ts +0 -50
  240. package/dist/builtin/subagents/src/tui/render-status-progress.ts +0 -168
  241. package/dist/builtin/subagents/src/tui/render.ts +0 -23
  242. package/dist/builtin/web-access/activity.ts +0 -101
  243. package/dist/builtin/web-access/chrome-cookies.ts +0 -323
  244. package/dist/builtin/web-access/code-search.ts +0 -107
  245. package/dist/builtin/web-access/config-paths.ts +0 -11
  246. package/dist/builtin/web-access/content-tools.ts +0 -354
  247. package/dist/builtin/web-access/curator-page-assets/script-1.ts +0 -400
  248. package/dist/builtin/web-access/curator-page-assets/script-2.ts +0 -400
  249. package/dist/builtin/web-access/curator-page-assets/script-3.ts +0 -400
  250. package/dist/builtin/web-access/curator-page-assets/script-4.ts +0 -400
  251. package/dist/builtin/web-access/curator-page-assets/script-5.ts +0 -398
  252. package/dist/builtin/web-access/curator-page-assets/styles-1.ts +0 -394
  253. package/dist/builtin/web-access/curator-page-assets/styles-2.ts +0 -394
  254. package/dist/builtin/web-access/curator-page-assets/styles-3.ts +0 -393
  255. package/dist/builtin/web-access/curator-page.ts +0 -196
  256. package/dist/builtin/web-access/curator-server-helpers.ts +0 -115
  257. package/dist/builtin/web-access/curator-server.ts +0 -494
  258. package/dist/builtin/web-access/exa-mcp.ts +0 -218
  259. package/dist/builtin/web-access/exa.ts +0 -317
  260. package/dist/builtin/web-access/extract-frames.ts +0 -229
  261. package/dist/builtin/web-access/extract.ts +0 -500
  262. package/dist/builtin/web-access/flat-string.ts +0 -37
  263. package/dist/builtin/web-access/gemini-api.ts +0 -111
  264. package/dist/builtin/web-access/gemini-search.ts +0 -363
  265. package/dist/builtin/web-access/gemini-url-context.ts +0 -126
  266. package/dist/builtin/web-access/gemini-web-config.ts +0 -53
  267. package/dist/builtin/web-access/gemini-web.ts +0 -397
  268. package/dist/builtin/web-access/github-api.ts +0 -198
  269. package/dist/builtin/web-access/github-config.ts +0 -156
  270. package/dist/builtin/web-access/github-extract.ts +0 -487
  271. package/dist/builtin/web-access/index-heavy.ts +0 -164
  272. package/dist/builtin/web-access/index.ts +0 -401
  273. package/dist/builtin/web-access/lifecycle-lease.ts +0 -38
  274. package/dist/builtin/web-access/pdf-extract.ts +0 -192
  275. package/dist/builtin/web-access/perplexity.ts +0 -194
  276. package/dist/builtin/web-access/result-renderers.ts +0 -366
  277. package/dist/builtin/web-access/rsc-extract.ts +0 -338
  278. package/dist/builtin/web-access/storage.ts +0 -72
  279. package/dist/builtin/web-access/subprocess.ts +0 -102
  280. package/dist/builtin/web-access/summary-review.ts +0 -287
  281. package/dist/builtin/web-access/utils.ts +0 -44
  282. package/dist/builtin/web-access/video-extract.ts +0 -375
  283. package/dist/builtin/web-access/web-search-activity.ts +0 -102
  284. package/dist/builtin/web-access/web-search-browser.ts +0 -124
  285. package/dist/builtin/web-access/web-search-command.ts +0 -242
  286. package/dist/builtin/web-access/web-search-config.ts +0 -157
  287. package/dist/builtin/web-access/web-search-curator.ts +0 -214
  288. package/dist/builtin/web-access/web-search-features.ts +0 -181
  289. package/dist/builtin/web-access/web-search-formatting.ts +0 -117
  290. package/dist/builtin/web-access/web-search-return.ts +0 -143
  291. package/dist/builtin/web-access/web-search-summary.ts +0 -177
  292. package/dist/builtin/web-access/web-search-tool.ts +0 -286
  293. package/dist/builtin/web-access/web-search-types.ts +0 -50
  294. package/dist/builtin/web-access/web-search-workflow.ts +0 -10
  295. package/dist/builtin/web-access/youtube-extract.ts +0 -309
  296. package/dist/builtin/workflows/src/authoring/keep-context.ts +0 -46
  297. package/dist/builtin/workflows/src/authoring/typebox-defaults.d.ts +0 -41
  298. package/dist/builtin/workflows/src/authoring/typebox-defaults.ts +0 -180
  299. package/dist/builtin/workflows/src/authoring/workflow.ts +0 -206
  300. package/dist/builtin/workflows/src/durable/backend.ts +0 -598
  301. package/dist/builtin/workflows/src/durable/boundary-lifecycle.ts +0 -172
  302. package/dist/builtin/workflows/src/durable/boundary-topology.ts +0 -475
  303. package/dist/builtin/workflows/src/durable/child-invocation.ts +0 -14
  304. package/dist/builtin/workflows/src/durable/child-primitive.ts +0 -124
  305. package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +0 -385
  306. package/dist/builtin/workflows/src/durable/completed-catalog.ts +0 -685
  307. package/dist/builtin/workflows/src/durable/completed-inspection.ts +0 -157
  308. package/dist/builtin/workflows/src/durable/completed-subtree.ts +0 -50
  309. package/dist/builtin/workflows/src/durable/dbos-backend.ts +0 -580
  310. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres-root.ts +0 -681
  311. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres.ts +0 -717
  312. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +0 -516
  313. package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +0 -208
  314. package/dist/builtin/workflows/src/durable/dbos-local-postgres.ts +0 -166
  315. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +0 -196
  316. package/dist/builtin/workflows/src/durable/dbos-process-owner.ts +0 -87
  317. package/dist/builtin/workflows/src/durable/dbos-prompt-reservations.ts +0 -377
  318. package/dist/builtin/workflows/src/durable/dbos-registration-diagnostics.ts +0 -113
  319. package/dist/builtin/workflows/src/durable/dbos-sdk-handle.ts +0 -182
  320. package/dist/builtin/workflows/src/durable/dbos-status-transition.ts +0 -67
  321. package/dist/builtin/workflows/src/durable/dbos-tombstone.ts +0 -27
  322. package/dist/builtin/workflows/src/durable/durable-hash.ts +0 -18
  323. package/dist/builtin/workflows/src/durable/factory.ts +0 -93
  324. package/dist/builtin/workflows/src/durable/format-version.ts +0 -6
  325. package/dist/builtin/workflows/src/durable/index.ts +0 -82
  326. package/dist/builtin/workflows/src/durable/local-command.ts +0 -135
  327. package/dist/builtin/workflows/src/durable/prompt-reservation-state.ts +0 -184
  328. package/dist/builtin/workflows/src/durable/prompt-reservations.ts +0 -36
  329. package/dist/builtin/workflows/src/durable/resume-catalog.ts +0 -20
  330. package/dist/builtin/workflows/src/durable/resume-eligibility.ts +0 -106
  331. package/dist/builtin/workflows/src/durable/resume-runtime.ts +0 -344
  332. package/dist/builtin/workflows/src/durable/retention-policy.ts +0 -43
  333. package/dist/builtin/workflows/src/durable/run-timing.ts +0 -151
  334. package/dist/builtin/workflows/src/durable/scoped-backend.ts +0 -308
  335. package/dist/builtin/workflows/src/durable/stage-primitive.ts +0 -553
  336. package/dist/builtin/workflows/src/durable/stage-topology-validation.ts +0 -247
  337. package/dist/builtin/workflows/src/durable/stage-topology.ts +0 -53
  338. package/dist/builtin/workflows/src/durable/targeted-inspection.ts +0 -110
  339. package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +0 -54
  340. package/dist/builtin/workflows/src/durable/tool-outcome.ts +0 -130
  341. package/dist/builtin/workflows/src/durable/tool-primitive.ts +0 -861
  342. package/dist/builtin/workflows/src/durable/types.ts +0 -343
  343. package/dist/builtin/workflows/src/durable/ui-primitive.ts +0 -263
  344. package/dist/builtin/workflows/src/durable/workflow-child-result.ts +0 -63
  345. package/dist/builtin/workflows/src/durable/workflow-heartbeat-anchor.ts +0 -153
  346. package/dist/builtin/workflows/src/durable/workflow-status-transition.ts +0 -31
  347. package/dist/builtin/workflows/src/engine/graph-inference.ts +0 -100
  348. package/dist/builtin/workflows/src/engine/options.ts +0 -44
  349. package/dist/builtin/workflows/src/engine/primitives/chain.ts +0 -34
  350. package/dist/builtin/workflows/src/engine/primitives/exit.ts +0 -2
  351. package/dist/builtin/workflows/src/engine/primitives/parallel.ts +0 -74
  352. package/dist/builtin/workflows/src/engine/primitives/task.ts +0 -127
  353. package/dist/builtin/workflows/src/engine/primitives/ui.ts +0 -54
  354. package/dist/builtin/workflows/src/engine/primitives/workflow.ts +0 -219
  355. package/dist/builtin/workflows/src/engine/replay.ts +0 -8
  356. package/dist/builtin/workflows/src/engine/run-budget.ts +0 -308
  357. package/dist/builtin/workflows/src/engine/run-durable-admission.ts +0 -50
  358. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +0 -97
  359. package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +0 -65
  360. package/dist/builtin/workflows/src/engine/run-durable-topology.ts +0 -295
  361. package/dist/builtin/workflows/src/engine/run-returned-status.ts +0 -86
  362. package/dist/builtin/workflows/src/engine/run-terminal-event.ts +0 -39
  363. package/dist/builtin/workflows/src/engine/run-terminal-failure.ts +0 -53
  364. package/dist/builtin/workflows/src/engine/run-tool-admission-boundary.ts +0 -99
  365. package/dist/builtin/workflows/src/engine/run-tool-control-registry.ts +0 -187
  366. package/dist/builtin/workflows/src/engine/run-tool-execution-tracker.ts +0 -164
  367. package/dist/builtin/workflows/src/engine/run-tool-node-lifecycle.ts +0 -158
  368. package/dist/builtin/workflows/src/engine/run.ts +0 -841
  369. package/dist/builtin/workflows/src/engine/runtime.ts +0 -220
  370. package/dist/builtin/workflows/src/engine/workflow-activity.ts +0 -13
  371. package/dist/builtin/workflows/src/engine/workflow-tool-abort.ts +0 -92
  372. package/dist/builtin/workflows/src/extension/adopt-session-run-state.ts +0 -20
  373. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +0 -168
  374. package/dist/builtin/workflows/src/extension/background-ui-adapter.ts +0 -154
  375. package/dist/builtin/workflows/src/extension/companions.ts +0 -210
  376. package/dist/builtin/workflows/src/extension/completed-stage-intercom-ask.ts +0 -167
  377. package/dist/builtin/workflows/src/extension/config-file-loader.ts +0 -185
  378. package/dist/builtin/workflows/src/extension/config-loader.ts +0 -439
  379. package/dist/builtin/workflows/src/extension/discovery-loaders.ts +0 -112
  380. package/dist/builtin/workflows/src/extension/discovery.ts +0 -424
  381. package/dist/builtin/workflows/src/extension/dispatcher.ts +0 -273
  382. package/dist/builtin/workflows/src/extension/extension-factory.ts +0 -133
  383. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +0 -174
  384. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +0 -596
  385. package/dist/builtin/workflows/src/extension/hil-answer-notifications.ts +0 -367
  386. package/dist/builtin/workflows/src/extension/index.ts +0 -42
  387. package/dist/builtin/workflows/src/extension/lifecycle-notification-delivery.ts +0 -83
  388. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +0 -849
  389. package/dist/builtin/workflows/src/extension/mcp.ts +0 -121
  390. package/dist/builtin/workflows/src/extension/postmortem-deps.ts +0 -70
  391. package/dist/builtin/workflows/src/extension/public-types.ts +0 -234
  392. package/dist/builtin/workflows/src/extension/render-call.ts +0 -115
  393. package/dist/builtin/workflows/src/extension/render-component.ts +0 -12
  394. package/dist/builtin/workflows/src/extension/render-result.ts +0 -558
  395. package/dist/builtin/workflows/src/extension/renderers.ts +0 -89
  396. package/dist/builtin/workflows/src/extension/runtime-active-block-claim.ts +0 -78
  397. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +0 -174
  398. package/dist/builtin/workflows/src/extension/runtime.ts +0 -439
  399. package/dist/builtin/workflows/src/extension/status-writer.ts +0 -182
  400. package/dist/builtin/workflows/src/extension/ui-surface.ts +0 -387
  401. package/dist/builtin/workflows/src/extension/wiring.ts +0 -490
  402. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +0 -129
  403. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +0 -296
  404. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +0 -114
  405. package/dist/builtin/workflows/src/extension/workflow-command-utils.ts +0 -175
  406. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +0 -270
  407. package/dist/builtin/workflows/src/extension/workflow-heartbeat-delivery.ts +0 -241
  408. package/dist/builtin/workflows/src/extension/workflow-heartbeat-notice.ts +0 -115
  409. package/dist/builtin/workflows/src/extension/workflow-heartbeat-scheduler.ts +0 -962
  410. package/dist/builtin/workflows/src/extension/workflow-model-catalog.ts +0 -24
  411. package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +0 -162
  412. package/dist/builtin/workflows/src/extension/workflow-policy.ts +0 -13
  413. package/dist/builtin/workflows/src/extension/workflow-ports.ts +0 -45
  414. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +0 -73
  415. package/dist/builtin/workflows/src/extension/workflow-reload-coordinator.ts +0 -66
  416. package/dist/builtin/workflows/src/extension/workflow-reload-report.ts +0 -42
  417. package/dist/builtin/workflows/src/extension/workflow-request-abort.ts +0 -15
  418. package/dist/builtin/workflows/src/extension/workflow-resume-picker-rows.ts +0 -96
  419. package/dist/builtin/workflows/src/extension/workflow-resume-shadow.ts +0 -53
  420. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +0 -562
  421. package/dist/builtin/workflows/src/extension/workflow-schema.ts +0 -192
  422. package/dist/builtin/workflows/src/extension/workflow-stage-results.ts +0 -252
  423. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +0 -276
  424. package/dist/builtin/workflows/src/extension/workflow-targets.ts +0 -210
  425. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +0 -265
  426. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +0 -547
  427. package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +0 -153
  428. package/dist/builtin/workflows/src/extension/workflow-tool-registration.ts +0 -145
  429. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +0 -488
  430. package/dist/builtin/workflows/src/extension/workflow-tool.ts +0 -188
  431. package/dist/builtin/workflows/src/index.ts +0 -8
  432. package/dist/builtin/workflows/src/intercom/intercom-bridge.ts +0 -90
  433. package/dist/builtin/workflows/src/intercom/intercom-routing.ts +0 -131
  434. package/dist/builtin/workflows/src/intercom/result-intercom.ts +0 -271
  435. package/dist/builtin/workflows/src/runs/background/cancellation-registry.ts +0 -135
  436. package/dist/builtin/workflows/src/runs/background/durable-resume-transition.ts +0 -63
  437. package/dist/builtin/workflows/src/runs/background/job-tracker.ts +0 -125
  438. package/dist/builtin/workflows/src/runs/background/quit-tool-node.ts +0 -71
  439. package/dist/builtin/workflows/src/runs/background/quit.ts +0 -417
  440. package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +0 -99
  441. package/dist/builtin/workflows/src/runs/background/run-inspect.ts +0 -126
  442. package/dist/builtin/workflows/src/runs/background/runner.ts +0 -185
  443. package/dist/builtin/workflows/src/runs/background/startup-admission.ts +0 -73
  444. package/dist/builtin/workflows/src/runs/background/status.ts +0 -511
  445. package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +0 -43
  446. package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +0 -441
  447. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +0 -263
  448. package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +0 -79
  449. package/dist/builtin/workflows/src/runs/foreground/executor-child-workflow.ts +0 -1
  450. package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +0 -207
  451. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +0 -321
  452. package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +0 -224
  453. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +0 -403
  454. package/dist/builtin/workflows/src/runs/foreground/executor-inputs.ts +0 -86
  455. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +0 -491
  456. package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +0 -156
  457. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +0 -379
  458. package/dist/builtin/workflows/src/runs/foreground/executor-queued-user-message.ts +0 -75
  459. package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +0 -144
  460. package/dist/builtin/workflows/src/runs/foreground/executor-run.ts +0 -1
  461. package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +0 -206
  462. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +0 -434
  463. package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +0 -153
  464. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +0 -225
  465. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +0 -473
  466. package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +0 -156
  467. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +0 -72
  468. package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +0 -2
  469. package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +0 -226
  470. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +0 -186
  471. package/dist/builtin/workflows/src/runs/foreground/executor.ts +0 -25
  472. package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +0 -245
  473. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +0 -466
  474. package/dist/builtin/workflows/src/runs/foreground/stage-delivery-activity.ts +0 -86
  475. package/dist/builtin/workflows/src/runs/foreground/stage-queued-user-messages.ts +0 -95
  476. package/dist/builtin/workflows/src/runs/foreground/stage-runner-candidate.ts +0 -21
  477. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +0 -330
  478. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +0 -1472
  479. package/dist/builtin/workflows/src/runs/foreground/stage-runner-message-admission.ts +0 -196
  480. package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +0 -177
  481. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +0 -97
  482. package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +0 -278
  483. package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +0 -206
  484. package/dist/builtin/workflows/src/runs/foreground/stage-runner-replacement.ts +0 -41
  485. package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +0 -134
  486. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +0 -38
  487. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +0 -66
  488. package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +0 -120
  489. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +0 -211
  490. package/dist/builtin/workflows/src/runs/foreground/stage-runner-unresolved-overflow.ts +0 -42
  491. package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +0 -22
  492. package/dist/builtin/workflows/src/runs/foreground/stage-session-heartbeat.ts +0 -88
  493. package/dist/builtin/workflows/src/runs/foreground/stage-tool-execution-buffer.ts +0 -49
  494. package/dist/builtin/workflows/src/runs/shared/concurrency.ts +0 -76
  495. package/dist/builtin/workflows/src/runs/shared/graph-inference.ts +0 -2
  496. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +0 -325
  497. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +0 -19
  498. package/dist/builtin/workflows/src/runs/shared/model-fallback.ts +0 -2
  499. package/dist/builtin/workflows/src/runs/shared/prompt-callsite.ts +0 -96
  500. package/dist/builtin/workflows/src/runs/shared/retry.ts +0 -44
  501. package/dist/builtin/workflows/src/runs/shared/validate-inputs.ts +0 -111
  502. package/dist/builtin/workflows/src/runs/shared/worktree-cache-lifecycle.ts +0 -23
  503. package/dist/builtin/workflows/src/runs/shared/worktree-cwd.ts +0 -116
  504. package/dist/builtin/workflows/src/runs/shared/worktree-diff.ts +0 -172
  505. package/dist/builtin/workflows/src/runs/shared/worktree-generation.ts +0 -57
  506. package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +0 -107
  507. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +0 -407
  508. package/dist/builtin/workflows/src/runs/shared/worktree-post-create.ts +0 -137
  509. package/dist/builtin/workflows/src/runs/shared/worktree-root.ts +0 -84
  510. package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +0 -372
  511. package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +0 -102
  512. package/dist/builtin/workflows/src/runs/shared/worktree.ts +0 -21
  513. package/dist/builtin/workflows/src/sdk-surface.ts +0 -70
  514. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +0 -403
  515. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +0 -489
  516. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +0 -327
  517. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +0 -437
  518. package/dist/builtin/workflows/src/shared/budget-meter.ts +0 -34
  519. package/dist/builtin/workflows/src/shared/budget.d.ts +0 -67
  520. package/dist/builtin/workflows/src/shared/budget.ts +0 -127
  521. package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +0 -434
  522. package/dist/builtin/workflows/src/shared/flat-string.ts +0 -33
  523. package/dist/builtin/workflows/src/shared/graph-store-snapshot.ts +0 -188
  524. package/dist/builtin/workflows/src/shared/intercom-group.ts +0 -58
  525. package/dist/builtin/workflows/src/shared/persistence-compaction-policy.ts +0 -72
  526. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +0 -613
  527. package/dist/builtin/workflows/src/shared/persistence-restore.ts +0 -306
  528. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +0 -303
  529. package/dist/builtin/workflows/src/shared/prompt-answer.ts +0 -130
  530. package/dist/builtin/workflows/src/shared/prompt-callsite-context.ts +0 -13
  531. package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +0 -161
  532. package/dist/builtin/workflows/src/shared/resume-continuation.ts +0 -2
  533. package/dist/builtin/workflows/src/shared/returned-run-status.ts +0 -164
  534. package/dist/builtin/workflows/src/shared/run-id.ts +0 -36
  535. package/dist/builtin/workflows/src/shared/run-indicator-status.ts +0 -75
  536. package/dist/builtin/workflows/src/shared/run-visibility.ts +0 -9
  537. package/dist/builtin/workflows/src/shared/schema-introspection.ts +0 -111
  538. package/dist/builtin/workflows/src/shared/serializable.ts +0 -118
  539. package/dist/builtin/workflows/src/shared/session-scoped-singleton.ts +0 -98
  540. package/dist/builtin/workflows/src/shared/session-transcript.ts +0 -79
  541. package/dist/builtin/workflows/src/shared/stage-prompt.ts +0 -338
  542. package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +0 -340
  543. package/dist/builtin/workflows/src/shared/store-factory.ts +0 -26
  544. package/dist/builtin/workflows/src/shared/store-internal.ts +0 -252
  545. package/dist/builtin/workflows/src/shared/store-observation.ts +0 -10
  546. package/dist/builtin/workflows/src/shared/store-prompt-methods.ts +0 -215
  547. package/dist/builtin/workflows/src/shared/store-public-types.ts +0 -282
  548. package/dist/builtin/workflows/src/shared/store-run-methods.ts +0 -305
  549. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +0 -331
  550. package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +0 -60
  551. package/dist/builtin/workflows/src/shared/store-types.ts +0 -439
  552. package/dist/builtin/workflows/src/shared/store.ts +0 -15
  553. package/dist/builtin/workflows/src/shared/timing.ts +0 -71
  554. package/dist/builtin/workflows/src/shared/tool-payload-bounds.ts +0 -576
  555. package/dist/builtin/workflows/src/shared/types.ts +0 -523
  556. package/dist/builtin/workflows/src/shared/workflow-artifact-env.ts +0 -21
  557. package/dist/builtin/workflows/src/shared/workflow-artifacts.ts +0 -259
  558. package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +0 -60
  559. package/dist/builtin/workflows/src/shared/workflow-authoring-types.ts +0 -111
  560. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +0 -292
  561. package/dist/builtin/workflows/src/shared/workflow-failures-contract.ts +0 -74
  562. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +0 -458
  563. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +0 -303
  564. package/dist/builtin/workflows/src/shared/workflow-failures.ts +0 -13
  565. package/dist/builtin/workflows/src/shared/workflow-heartbeat-contract.d.ts +0 -21
  566. package/dist/builtin/workflows/src/shared/workflow-heartbeat-contract.ts +0 -25
  567. package/dist/builtin/workflows/src/shared/workflow-run-ownership.ts +0 -49
  568. package/dist/builtin/workflows/src/tui/chat-surface-message.ts +0 -319
  569. package/dist/builtin/workflows/src/tui/chat-surface.ts +0 -477
  570. package/dist/builtin/workflows/src/tui/color-utils.ts +0 -55
  571. package/dist/builtin/workflows/src/tui/connectors.ts +0 -84
  572. package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +0 -334
  573. package/dist/builtin/workflows/src/tui/edge.ts +0 -25
  574. package/dist/builtin/workflows/src/tui/graph-canvas.ts +0 -185
  575. package/dist/builtin/workflows/src/tui/graph-theme.ts +0 -292
  576. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +0 -49
  577. package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +0 -157
  578. package/dist/builtin/workflows/src/tui/graph-view-input.ts +0 -427
  579. package/dist/builtin/workflows/src/tui/graph-view-layout.ts +0 -297
  580. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +0 -294
  581. package/dist/builtin/workflows/src/tui/graph-view-render.ts +0 -361
  582. package/dist/builtin/workflows/src/tui/graph-view-state.ts +0 -547
  583. package/dist/builtin/workflows/src/tui/graph-view-types.ts +0 -79
  584. package/dist/builtin/workflows/src/tui/graph-view.ts +0 -25
  585. package/dist/builtin/workflows/src/tui/header.ts +0 -210
  586. package/dist/builtin/workflows/src/tui/host-input-form.ts +0 -64
  587. package/dist/builtin/workflows/src/tui/inline-form-card.ts +0 -438
  588. package/dist/builtin/workflows/src/tui/inline-form-editor-text.ts +0 -120
  589. package/dist/builtin/workflows/src/tui/inline-form-editor.ts +0 -496
  590. package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +0 -317
  591. package/dist/builtin/workflows/src/tui/inline-form-store.ts +0 -90
  592. package/dist/builtin/workflows/src/tui/inputs-overlay.ts +0 -185
  593. package/dist/builtin/workflows/src/tui/inputs-picker-editing.ts +0 -147
  594. package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +0 -357
  595. package/dist/builtin/workflows/src/tui/inputs-picker-render.ts +0 -312
  596. package/dist/builtin/workflows/src/tui/inputs-picker-types.ts +0 -161
  597. package/dist/builtin/workflows/src/tui/inputs-picker.ts +0 -20
  598. package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +0 -167
  599. package/dist/builtin/workflows/src/tui/layout.ts +0 -150
  600. package/dist/builtin/workflows/src/tui/mouse-input.ts +0 -61
  601. package/dist/builtin/workflows/src/tui/node-card.ts +0 -357
  602. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +0 -449
  603. package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +0 -39
  604. package/dist/builtin/workflows/src/tui/prompt-card-input.ts +0 -215
  605. package/dist/builtin/workflows/src/tui/prompt-card-render.ts +0 -584
  606. package/dist/builtin/workflows/src/tui/prompt-card-select.ts +0 -94
  607. package/dist/builtin/workflows/src/tui/prompt-card-state.ts +0 -61
  608. package/dist/builtin/workflows/src/tui/prompt-card-text.ts +0 -122
  609. package/dist/builtin/workflows/src/tui/prompt-card.ts +0 -12
  610. package/dist/builtin/workflows/src/tui/renderers.ts +0 -14
  611. package/dist/builtin/workflows/src/tui/run-detail.ts +0 -438
  612. package/dist/builtin/workflows/src/tui/run-identity-rows.ts +0 -97
  613. package/dist/builtin/workflows/src/tui/session-list.ts +0 -38
  614. package/dist/builtin/workflows/src/tui/session-overlays.ts +0 -161
  615. package/dist/builtin/workflows/src/tui/session-picker.ts +0 -482
  616. package/dist/builtin/workflows/src/tui/stage-chat-composer-drafts.ts +0 -19
  617. package/dist/builtin/workflows/src/tui/stage-chat-layout.ts +0 -81
  618. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +0 -462
  619. package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +0 -115
  620. package/dist/builtin/workflows/src/tui/stage-chat-view-delivery-activity.ts +0 -113
  621. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +0 -219
  622. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +0 -216
  623. package/dist/builtin/workflows/src/tui/stage-chat-view-live-events.ts +0 -65
  624. package/dist/builtin/workflows/src/tui/stage-chat-view-pending-tools.ts +0 -7
  625. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +0 -149
  626. package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +0 -49
  627. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +0 -575
  628. package/dist/builtin/workflows/src/tui/stage-chat-view-status.ts +0 -35
  629. package/dist/builtin/workflows/src/tui/stage-chat-view-transcript.ts +0 -226
  630. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +0 -156
  631. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +0 -309
  632. package/dist/builtin/workflows/src/tui/status-helpers.ts +0 -85
  633. package/dist/builtin/workflows/src/tui/status-list.ts +0 -447
  634. package/dist/builtin/workflows/src/tui/store-widget-installer.ts +0 -338
  635. package/dist/builtin/workflows/src/tui/submit-pane.ts +0 -148
  636. package/dist/builtin/workflows/src/tui/switcher.ts +0 -172
  637. package/dist/builtin/workflows/src/tui/text-helpers.ts +0 -208
  638. package/dist/builtin/workflows/src/tui/tool-detail.ts +0 -367
  639. package/dist/builtin/workflows/src/tui/widget.ts +0 -427
  640. package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +0 -21
  641. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +0 -77
  642. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +0 -477
  643. package/dist/builtin/workflows/src/tui/workflow-list.ts +0 -189
  644. package/dist/builtin/workflows/src/tui/workflow-notice-card.ts +0 -167
  645. package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +0 -334
  646. package/dist/builtin/workflows/src/tui/workflow-status.ts +0 -12
  647. package/dist/builtin/workflows/src/workflows/identity.ts +0 -39
  648. package/dist/builtin/workflows/src/workflows/registry.ts +0 -115
@@ -1,24 +0,0 @@
1
- import type { CreateAgentSessionOptions } from "@bastani/atomic";
2
- import type { WorkflowModelCatalogPort, WorkflowModelInfo } from "../shared/types.js";
3
- import type { PiModelContext } from "./public-types.js";
4
-
5
- export function workflowModelCatalogFromContext(ctx?: PiModelContext): WorkflowModelCatalogPort | undefined {
6
- if (ctx?.modelRegistry === undefined && ctx?.model === undefined) return undefined;
7
- return {
8
- listModels: async (): Promise<readonly WorkflowModelInfo[]> => {
9
- const available = ctx.modelRegistry?.getAvailable() ?? (ctx.model === undefined ? [] : [ctx.model]);
10
- return available.map((model) => ({
11
- provider: String(model.provider),
12
- id: model.id,
13
- fullId: `${String(model.provider)}/${model.id}`,
14
- model: model as NonNullable<CreateAgentSessionOptions["model"]>,
15
- }));
16
- },
17
- ...(ctx.model !== undefined
18
- ? {
19
- currentModel: ctx.model as NonNullable<CreateAgentSessionOptions["model"]>,
20
- preferredProvider: String(ctx.model.provider),
21
- }
22
- : {}),
23
- };
24
- }
@@ -1,162 +0,0 @@
1
- /**
2
- * Shared workflow module loading helpers.
3
- *
4
- * Discovery loads user-authored workflow files through this jiti instance so
5
- * TypeScript/ESM/CJS semantics and the @bastani/workflows virtual SDK alias
6
- * stay consistent.
7
- */
8
-
9
- import { createJiti } from "jiti/static";
10
- import * as typeboxModule from "typebox";
11
- import adversarialVerification from "../../builtin/adversarial-verification.js";
12
- import classifyAndAct from "../../builtin/classify-and-act.js";
13
- import fanOutAndSynthesize from "../../builtin/fan-out-and-synthesize.js";
14
- import generateAndFilter from "../../builtin/generate-and-filter.js";
15
- import goal from "../../builtin/goal.js";
16
- import loopUntilDone from "../../builtin/loop-until-done.js";
17
- import openClaudeDesign from "../../builtin/open-claude-design.js";
18
- import ralph from "../../builtin/ralph.js";
19
- import tournament from "../../builtin/tournament.js";
20
- import { isBrandedWorkflowDefinition } from "../authoring/workflow.js";
21
- import * as workflowsSdkSurface from "../sdk-surface.js";
22
- import { validateWorkflowBudget } from "../shared/budget.js";
23
-
24
- const WORKFLOWS_MODULE_SPECIFIER = "@bastani/workflows";
25
- const WORKFLOWS_BUILTIN_MODULE_SPECIFIER = `${WORKFLOWS_MODULE_SPECIFIER}/builtin`;
26
- const TYPEBOX_MODULE_SPECIFIER = "typebox";
27
- // Keep this in sync with index.ts through sdk-surface.ts.
28
- const WORKFLOWS_SDK_MODULE: Record<string, unknown> = {
29
- ...workflowsSdkSurface,
30
- };
31
- const WORKFLOWS_BUILTIN_MODULE: Record<string, unknown> = {
32
- adversarialVerification,
33
- classifyAndAct,
34
- fanOutAndSynthesize,
35
- generateAndFilter,
36
- goal,
37
- loopUntilDone,
38
- openClaudeDesign,
39
- ralph,
40
- tournament,
41
- };
42
- const TYPEBOX_MODULE: Record<string, unknown> = {
43
- ...typeboxModule,
44
- };
45
- const WORKFLOWS_VIRTUAL_MODULES: Record<string, unknown> = {
46
- [WORKFLOWS_MODULE_SPECIFIER]: WORKFLOWS_SDK_MODULE,
47
- [WORKFLOWS_BUILTIN_MODULE_SPECIFIER]: WORKFLOWS_BUILTIN_MODULE,
48
- [TYPEBOX_MODULE_SPECIFIER]: TYPEBOX_MODULE,
49
- [`${WORKFLOWS_BUILTIN_MODULE_SPECIFIER}/adversarial-verification`]: { default: adversarialVerification },
50
- [`${WORKFLOWS_BUILTIN_MODULE_SPECIFIER}/classify-and-act`]: { default: classifyAndAct },
51
- [`${WORKFLOWS_BUILTIN_MODULE_SPECIFIER}/fan-out-and-synthesize`]: { default: fanOutAndSynthesize },
52
- [`${WORKFLOWS_BUILTIN_MODULE_SPECIFIER}/generate-and-filter`]: { default: generateAndFilter },
53
- [`${WORKFLOWS_BUILTIN_MODULE_SPECIFIER}/goal`]: { default: goal },
54
- [`${WORKFLOWS_BUILTIN_MODULE_SPECIFIER}/loop-until-done`]: { default: loopUntilDone },
55
- [`${WORKFLOWS_BUILTIN_MODULE_SPECIFIER}/open-claude-design`]: { default: openClaudeDesign },
56
- [`${WORKFLOWS_BUILTIN_MODULE_SPECIFIER}/ralph`]: { default: ralph },
57
- [`${WORKFLOWS_BUILTIN_MODULE_SPECIFIER}/tournament`]: { default: tournament },
58
- };
59
-
60
- const workflowModuleLoader = createJiti(import.meta.url, {
61
- moduleCache: false,
62
- // Keep workflow-file import semantics deterministic: jiti owns .ts/.js/.mjs/.cjs
63
- // resolution instead of handing some imports back to native import().
64
- tryNative: false,
65
- // Resolve the @bastani/workflows SDK (and its builtin submodules) to in-memory
66
- // surfaces in every runtime. This mirrors the compiled bun binary path and
67
- // keeps discovery fast: aliasing the SDK to its on-disk package re-evaluated
68
- // the entire SDK module graph once per workflow file (moduleCache stays false),
69
- // which scaled discovery to multiple seconds on projects with many workflow
70
- // files. Workflow files themselves are still evaluated fresh from disk, so
71
- // `/workflow reload` continues to observe edits.
72
- virtualModules: WORKFLOWS_VIRTUAL_MODULES,
73
- });
74
-
75
- function materializeModuleObject(mod: object): Record<string, unknown> {
76
- const materialized: Record<string, unknown> = {};
77
-
78
- // jiti's callable API can return an interop namespace proxy. Its own property
79
- // descriptors contain the authored export values, but property access may apply
80
- // default-export conveniences (and even expose a throwing inherited `then`
81
- // getter for `export default null`). Copy own descriptors into a plain object
82
- // so candidate collection sees the exact authored exports.
83
- for (const key of Object.getOwnPropertyNames(mod)) {
84
- const descriptor = Object.getOwnPropertyDescriptor(mod, key);
85
- if (descriptor === undefined) continue;
86
-
87
- const value = "value" in descriptor ? descriptor.value : descriptor.get?.call(mod);
88
- Object.defineProperty(materialized, key, {
89
- value,
90
- enumerable: descriptor.enumerable,
91
- configurable: true,
92
- writable: true,
93
- });
94
- }
95
-
96
- return materialized;
97
- }
98
-
99
- function normalizeWorkflowModule(mod: unknown): Record<string, unknown> {
100
- if (mod !== null && typeof mod === "object") {
101
- return materializeModuleObject(mod);
102
- }
103
- // CJS/default interop can return the exported value directly; wrap it so the
104
- // candidate collector can handle it the same way as an ESM default export.
105
- return { default: mod };
106
- }
107
-
108
- export interface WorkflowModuleCandidate {
109
- readonly value: unknown;
110
- readonly exportKey: string;
111
- }
112
-
113
- export function validateWorkflowDefinitionShape(value: unknown): string | null {
114
- if (value === null || typeof value !== "object") {
115
- return "export is not an object";
116
- }
117
- const d = value as Record<string, unknown>;
118
-
119
- if (d.__piWorkflow !== true) {
120
- return "missing or incorrect __piWorkflow sentinel (expected true); export a workflow from workflow({...})";
121
- }
122
- if (!isBrandedWorkflowDefinition(value)) {
123
- return "workflow definition is not produced by workflow({...}); hand-rolled __piWorkflow objects are not supported";
124
- }
125
- if (typeof d.name !== "string" || (d.name as string).trim().length === 0) {
126
- return "name must be a non-empty string";
127
- }
128
- if (typeof d.normalizedName !== "string" || (d.normalizedName as string).trim().length === 0) {
129
- return "normalizedName must be a non-empty string";
130
- }
131
- if (typeof d.run !== "function") {
132
- return "run must be a function";
133
- }
134
- if (d.budget !== undefined) {
135
- const reason = validateWorkflowBudget(d.budget, "budget");
136
- if (reason !== null) return reason;
137
- }
138
- return null;
139
- }
140
-
141
- export function loadWorkflowModule(filePath: string): Record<string, unknown> {
142
- return normalizeWorkflowModule(workflowModuleLoader(filePath));
143
- }
144
-
145
- export function collectWorkflowModuleCandidates(mod: Record<string, unknown>): WorkflowModuleCandidate[] {
146
- const candidates: WorkflowModuleCandidate[] = [];
147
-
148
- // Default export first (RFC §5.12: check mod.default before named exports)
149
- if ("default" in mod && mod.default !== undefined) {
150
- candidates.push({ value: mod.default, exportKey: "default" });
151
- }
152
-
153
- // Then all named exports (a file may export multiple workflow definitions)
154
- for (const [key, val] of Object.entries(mod)) {
155
- if (key === "default") continue;
156
- if (val !== undefined) {
157
- candidates.push({ value: val, exportKey: key });
158
- }
159
- }
160
-
161
- return candidates;
162
- }
@@ -1,13 +0,0 @@
1
- import {
2
- INTERACTIVE_WORKFLOW_POLICY,
3
- NON_INTERACTIVE_WORKFLOW_POLICY,
4
- type WorkflowExecutionPolicy,
5
- } from "../shared/types.js";
6
-
7
- export const WORKFLOW_NON_INTERACTIVE_MESSAGE =
8
- "Workflows are policy-gated in non-interactive (-p) mode; deterministic workflows can run headlessly while runtime human input remains unavailable.";
9
-
10
- export function workflowPolicyFromContext(ctx?: { readonly hasUI?: boolean }): WorkflowExecutionPolicy {
11
- if (ctx?.hasUI === false) return NON_INTERACTIVE_WORKFLOW_POLICY;
12
- return INTERACTIVE_WORKFLOW_POLICY;
13
- }
@@ -1,45 +0,0 @@
1
- import type { WorkflowMcpPort, WorkflowPersistencePort } from "../shared/types.js";
2
- import { clearMcpScope, type PiEventBus, type PiMcpExtensionAPI, setMcpScope } from "./mcp.js";
3
- import type { ExtensionAPI } from "./public-types.js";
4
-
5
- export function makePersistencePort(pi: ExtensionAPI, persistRuns: boolean): WorkflowPersistencePort | undefined {
6
- if (!persistRuns) return undefined;
7
- if (typeof pi.appendEntry !== "function") return undefined;
8
- const port: WorkflowPersistencePort = {
9
- appendEntry: (type, payload) => pi.appendEntry!(type, payload),
10
- };
11
- if (typeof pi.setLabel === "function") {
12
- port.setLabel = (entryId, label) => pi.setLabel!(entryId, label);
13
- }
14
- if (typeof pi.appendCustomMessageEntry === "function") {
15
- port.appendCustomMessageEntry = (content, meta) => pi.appendCustomMessageEntry!(content, meta);
16
- }
17
- return port;
18
- }
19
-
20
- export function makeMcpPort(pi: ExtensionAPI): WorkflowMcpPort | undefined {
21
- if (typeof pi.events?.emit !== "function") return undefined;
22
- const piForMcp: PiMcpExtensionAPI = {
23
- events: { emit: pi.events.emit as PiEventBus["emit"] },
24
- };
25
- return {
26
- setScope(stageId: string, allow: string[] | null, deny: string[] | null) {
27
- try {
28
- setMcpScope(piForMcp, {
29
- stageId,
30
- allow: allow ?? undefined,
31
- deny: deny ?? undefined,
32
- });
33
- } catch {
34
- // A workflow can outlive its extension instance; scope events are advisory.
35
- }
36
- },
37
- clearScope(stageId: string) {
38
- try {
39
- clearMcpScope(piForMcp, stageId);
40
- } catch {
41
- // A workflow can outlive its extension instance; scope events are advisory.
42
- }
43
- },
44
- };
45
- }
@@ -1,73 +0,0 @@
1
- export const WORKFLOW_TOOL_DESCRIPTION =
2
- "Run named builtin, project, user, or package workflows; custom definitions may import reusable project/package workflows or builtin definitions from @bastani/workflows/builtin and nest them with ctx.workflow(...), including deeper composition within the configured maxDepth; " +
3
- "when workflow execution fits but another shape would better achieve the task, author a custom TypeScript workflow({...}) inline with normal coding tools, reload it, and run it; after successfully creating and reloading a newly authored custom workflow, report the folder containing its generated code as 'Custom workflow created. You can inspect its code at: <workflow-folder-path>'; do this only for newly created custom workflows, never builtin or pre-existing workflows; " +
4
- "discover with list/get/inputs/models, list session runs with status (no runId; statusFilter narrows the list), inspect status/stages/stage details, " +
5
- "send prompt answers or steering only while the root workflow is nonterminal, pause/resume/interrupt/quit runs, and reload workflow resources. " +
6
- "For action 'run' and 'resume', budget accepts per-field duration, token, cost, and warning overrides; fields resolve over the workflow declaration and config, and 0 disables a field. " +
7
- "For primitive prompt answers, use booleans or the documented confirm labels, exact case-insensitive select labels or 1-based indexes, and text strings for input/editor; an invalid answer remains pending and returns guidance instead of choosing a default. " +
8
- "For large stage handoffs, write context to files/artifacts, pass paths via reads, and prompt downstream agents to 'Read the file at <path>...' instead of injecting large previous text. " +
9
- "Wrap critical parts of run inputs and steering messages in <keepContext>...</keepContext> so compaction preserves them verbatim in the stages that inherit them; tag role constraints, prohibitions, must-hold criteria, and identifiers, not background or bulk reference material. " +
10
- "For transcripts, prefer status/stages/stage to get sessionFile/transcriptPath, " +
11
- "quote the exact path without rewriting separators (Windows backslashes are valid), " +
12
- "then search it with rg/grep and read small ranges; transcript is path-only by default when sessionFile/transcriptPath exists, explicit tail/limit returns bounded previews, and missing transcript paths fall back to a small preview. " +
13
- "Use action 'models' to inspect models in the configured catalog; the result is a configured-auth snapshot showing what's present in the registry with configured authentication, not proof of credentials, entitlements, OAuth freshness, or live provider access. " +
14
- "When authoring a workflow that should dynamically select a model, first call workflow({ action: 'models' }) to inspect the configured catalog, then select from the returned provider/id entries considering the isCurrent marker and available thinking levels.";
15
-
16
- export const DEFAULT_PROMPT_GUIDANCE: string[] = [
17
- `**Workflows**: Treat workflows as the default execution path for any non-trivial task and for any request that has inherent structure plus an objective you can make verifiable. Use the \`workflow\` tool for existing named workflows; when the task needs a graph that is not installed, author a custom TypeScript \`workflow({...})\` inline with normal coding tools, reload workflow resources, and run it.
18
- - Workflow fit check: prefer a workflow for implementation, build, debug/diagnosis, bug-fix, migration, new-feature, scoped multi-file, or docs/code changes with validation; and whenever there are multiple steps, dependencies, handoffs, uncertainty, review/validation needs, long-running work, measurable done criteria, or an outcome that needs evidence.
19
- - Treat loop or stop-condition wording as a strong workflow signal, especially "do X until Y", "repeat until", "iterate until", "review/fix until passing", "run checks and fix until green", "keep going until done", or any prompt that names an approval gate or evidence requirement.
20
- - Do not force-fit an installed workflow. When another graph better matches the task, write a task-specific TypeScript workflow inline. Rich custom workflows may use deterministic branching, dynamic fan-out, child workflows, artifacts, structured outputs, human-in-the-loop prompts, gates, retries, and explicit stop conditions.
21
- - Before launching any workflow for a non-trivial task, perform a short workflow-architecture pass. Derive implementation lifecycle needs, whole-codebase research needs, independent slices, competing strategies, exact API/type/build contracts, schema or generated-artifact contracts, state transitions/lifecycle behavior, deterministic stop conditions, and required evidence. Enumerate implementation slices in this same pass, not a second planning ritual; give each slice its own objective, acceptance criteria, and gates, and require each to leave a buildable, testable repository state before the next slice. Use a compact internal coverage matrix: \`requirement/risk | required evidence | workflow/stage that produces it | gap\`. Add the topology row \`acyclic topology | node/edge sketch for branches and loops | architecture pass | unresolved back-edge\`. Unresolved material rows or back-edges must change the graph before launch.
22
- - In that architecture pass, sketch each branch, loop, and nested workflow boundary. Identify which stages repeat, require distinct tracked work for every iteration, name the current frontier before each repeat, reject self-edges and ancestor edges, compose nested workflows through \`ctx.workflow(...)\` boundaries rather than recursive \`run\` invocation, and preserve stable per-iteration identity and call order for resume/replay.
23
- - Compare candidate workflows by guarantees, not broad objectives: run one named workflow only when it covers the lifecycle and produces evidence for every material requirement/risk. A generic implementation workflow may cover the lifecycle without covering exact API/type/build contracts, schemas/generated artifacts, state transitions, or domain-specific gates. Do not treat "has reviewers" as proof that a task-specific risk is covered.
24
- - Use these routing signals without adding decorative stages: broad repository uncertainty → Fan-out-and-synthesize with repository-focused branches; independent slices → Fan-out-and-synthesize; plausible-but-wrong contract risk → Adversarial verification or a task-specific verification stage; competing architectures or implementations → Generate-and-filter or Tournament; an explicit repeat-until condition → Loop until done; implementation lifecycle → a task-specific worker/reviewer loop; exact API/build/schema requirements → dedicated deterministic gates.
25
- - For a request containing several implementation items, enumerate every item before launch and classify it as independent, dependent, or clustered. Inspect stated issue/PR/branch dependencies, whether prerequisites are already merged into each selected base, and likely shared files, API contracts, migrations, generated artifacts, decisions, approvals, and release effects.
26
- - Do not infer a cross-item sequence from list order or from "create a PR after" when "after" naturally refers to that item's own implementation/review/check/PR lifecycle. Prove the dependency before serializing independent workflow items; if a material dependency remains unclear after research, ask one grouped clarification.
27
- - Run independent implementation items as separate concurrent top-level named workflow runs with bounded concurrency. Give each item its own explicitly supported worktree path, branch, run ID, root lifecycle, and failure boundary, then report an item → run ID → worktree → branch → result/PR map. Compose or sequence only real dependencies; run independent clusters in parallel and preserve ordering inside each cluster.
28
- - For a mixed queue with dependent A → B and unrelated C, compose only the A → B dependency cluster. Launch C as its own concurrent top-level named workflow with its own root failure boundary. One real cross-item dependency does not put the whole queue in one parent.
29
- - A first item's review, repair, or check failure must not block unrelated items. Keep other top-level runs active, report the failed item separately, and fill an open dispatcher slot when policy permits. Several worktrees inside one sequential root provide checkout isolation, not concurrent top-level execution or independent root failure boundaries.
30
- - A first named workflow launch commits the selected execution shape for the turn. For one task, end after the single launch. For an independent queue, issue the complete bounded wave of planned per-item top-level launches before ending the turn; do not casually chain unplanned unrelated launches. Each top-level run keeps an independent root lifecycle and failure boundary. When one task needs multiple capabilities or one dependency cluster needs ordered handoffs, design one custom parent before launch for that task or cluster, import reusable project/package definitions or builtins from \`@bastani/workflows/builtin\`, and compose them with \`ctx.workflow(childDefinition, { inputs, stageName })\`. Keep unrelated queue items out of that parent. Imported children may nest more workflows up to \`maxDepth\`; their stages, HIL prompts, control, durability, and declared outputs remain part of the expanded parent graph and root failure boundary. Pass definitions, not registry-name strings or paths.
31
- - Workflow definitions are normal TypeScript modules. Composition examples: nest \`fanOutAndSynthesize\` for repository mapping; wrap \`openClaudeDesign\` with project-specific approval/export stages; or build a reusable user-defined research child and import it into several parent workflows. Map typed inputs and consume only declared outputs.
32
- - When plausible-but-wrong behavior is a material risk in an arbitrary task-specific workflow, prefer a bounded evidence-backed adversarial loop. Give a fresh-context grumpy/skeptical-but-fair reviewer the literal objective and require actionable, evidence-backed falsification probes without invented requirements. Have it emit a structured verifier plan containing each exact probe, inputs, command/assertion, expected success condition, and requirement/risk covered.
33
- - Support both verifier shapes: for explicit known contracts, author direct task-specific \`ctx.tool(...)\` gates before launch; for risks requiring adversarial discovery, let the model select high-value probes through structured output, then execute the selected compile, test, schema generation/validation, runtime, or artifact-inspection checks authoritatively through durable \`ctx.tool(...)\` calls. Actual tool results—not model self-report—must feed skeptical evaluation, consolidated evidence-backed repair findings, and reruns after the implementation child repairs them.
34
- - Define bounded pass, repair, failure, and iteration-limit conditions before launch. Use \`ctx.tool\` for workflow-owned external checks and side effects whose results should be durably checkpointed. Each \`ctx.tool\` call is tracked as a durable, non-chat graph node and may run before, between, after, or without model stages; a tool-only workflow is valid tracked execution; keep pure transformations as ordinary TypeScript, and do not wrap every model-stage action in a tool call.
35
- - Choose the cheapest graph that covers every material coverage row without collapsing independently verifiable implementation slices merely to minimize stage count. Avoid decorative composition and duplicated research or review loops. Prefer composing a proven builtin or shared child over copying its prompt/graph.
36
- - Before the first launch, state the selected graph, why one broad builtin is sufficient or insufficient, the evidence each major stage produces, and the stop/repair conditions. A simple direct match may use one sentence; a composed graph must briefly name its children and task-specific gates. For a custom adversarial loop, also name the skeptical reviewer, deterministic \`ctx.tool\` verifier gates, how model-selected plans become tool executions, and how failures reach bounded repair.
37
- - Before launching an authored workflow, assign every model stage a role, failure cost, primary model, thinking level, and fallback policy. Use the role/risk defaults in the model-selection guide: reserve \`max\` for high-cost-of-error roles such as security, identity, adversarial challenge, and final approval; use \`high\` for demanding codebase mapping, lifecycle analysis, compatibility, planning, synthesis, triage, and repair; use \`medium\` for user-impact review and final reporting; keep deterministic checks as tool nodes with no model call. An explicit user request for a thinking level always wins over these defaults, subject to catalog support. For a mixed workflow, mapping may be \`high\`, approval \`max\`, reporting \`medium\`, and tests tool-only; never assign \`max\` to every model stage without a stage-specific reason.
38
- - Print a compact \`Stage | Model | Thinking | Role\` assignment before launch with a short cost/quality rationale for each model stage. Apply the same role/risk policy to every fallback attempt rather than inheriting \`max\` mechanically; choose each primary and fallback level from the configured catalog, and if no selected catalog model supports the role's level, leave the stage unpinned rather than inventing an unsupported level.
39
- - Example custom shapes: classify a request and dispatch category-specific stages; fan out per package and synthesize artifact-backed results; decompose one implementation objective into stacked, independently verified slices with a bounded child lifecycle per slice; implement, run fresh-context verifiers, reduce findings, and loop through repairs until approved; generate several plans and filter or tournament-rank them; or rerun checks and fixes until green with a progress ledger and max-iteration escape hatch.
40
- - Budget reconnaissance: once workflow fit is clear, keep pre-workflow exploration to a few quick reads that sharpen the objective and validation criteria. Put deep research, upstream/design comparison, and behavior probing inside the workflow. Pass large context through files/artifacts and \`reads\` rather than injecting it into prompts.
41
- - Course-correct instead of drifting: after roughly ten exploratory tool calls with no artifact, edit, or commit, or repeated "let me verify one more thing" loops, stop, write findings to a context file, and hand the task to the best-fit named or custom workflow. Sunk inline research transfers through files; it is not a reason to stay inline.
42
- - Only skip workflows for tiny, deterministic, low-risk answers or direct edits where stage tracking clearly costs more than it adds, typically a single-file/no-test/no-review change or a simple answer.`,
43
- `**Workflow discovery and lifecycle**:
44
- - For unfamiliar named workflows, discover with \`action: "list"\`, inspect with \`action: "get"\` or \`action: "inputs"\`, and run with \`action: "run"\`, \`workflow\`, and validated \`inputs\`; do not invent workflow names or input keys.
45
- - Wrap critical parts of the \`inputs\` you pass — objective, prompt, acceptance criteria — in \`<keepContext>\` / \`</keepContext>\`. Tagged text survives compaction verbatim regardless of the compression ratio, and stages inherit it because workflows inject your inputs into their prompts. A long stage is compacted repeatedly, and compaction ranks lines individually: a verbose restated objective outlives the one line that bounds it, so a stage can end up executing a coherent but unbounded version of what you asked for. Decide this per launch rather than tagging everything — tag role constraints, prohibitions, must-hold criteria, and identifiers such as a target branch, worktree path, or issue number; leave background, quoted issue text, and reference material untagged and pass bulk through files and \`reads\`. Protected lines count against the keep target rather than raising it, so an over-tagged input makes the evidence stages need compress harder.
46
- - Tag steering the same way. A \`send\` amendment is authoritative and stages must carry it forward, but it arrives late in an already-long session and is exactly one short message competing with the whole transcript; \`<keepContext>\` around the requirement keeps it from being compacted away before the stage acts on it.
47
- - In interactive chat, named workflow launches run in the background. Run \`/workflow connect <run>\` to see agents working and chat with and steer each stage. Inspection and control calls (\`status\`, \`stages\`, \`stage\`, \`transcript\`, \`send\`, \`pause\`, \`resume\`, \`interrupt\`, \`quit\`) remain available while work runs.
48
- - \`workflow send\` is nonterminal-only: once the authoritative root run has completed, failed, skipped, been cancelled or killed, or ended terminal-blocked, start a new workflow if tracked work remains. Proceed inline only when the remaining task is small, deterministic, and low risk. Use explicit \`/workflow attach <run> <stage>\` for user-driven post-mortem chat; it does not resume or modify workflow execution.
49
- - Natural-language instructions to create or use a worktree do not enable runner isolation. A named workflow must declare and implement any worktree and feature-branch inputs it supports; inspect its inputs and pass a distinct path and branch for each concurrent item. Reusable \`baseBranch\` binding creates a missing target as a detached checkout from that base or reuses an existing same-repository worktree as-is; neither case checks out a separate feature-branch input.
50
- - Once you have started the selected single run or every run in the selected bounded wave, end the current turn and wait for user input or lifecycle notices. Do not use sleep/status polling loops: key start, finish, and failure events arrive automatically. Use targeted \`status\`/\`stages\`/\`stage\` checks only when the user asks or the next step needs them, and use \`send\`/\`pause\`/\`resume\`/\`interrupt\`/\`quit\` only to answer, steer, or honor control requests.
51
- - For transcripts, avoid whole-file reads. Get \`sessionFile\`/\`transcriptPath\` from \`stages\` or \`stage\`, preserve the exact path and platform separators, search with \`rg\`/\`grep\`, and read small relevant ranges; use explicit \`tail\` or \`limit\` only for a bounded preview.`,
52
- `**Workflow authoring and handoffs**:
53
- - When a user asks to create or edit a workflow, clarify only unresolved requirements that materially affect its purpose, inputs, stages, handoffs, validation, success criteria, or starter pattern. Read the workflow docs/examples, implement the TypeScript definition with normal coding tools, reload it, and run representative test inputs before presenting it. Use the create-spec skill when it adds value; it is not mandatory when context is already sufficient.
54
- - After creating and reloading a newly authored custom workflow, close the loop by stating the folder containing the workflow file just written, for example \`.atomic/workflows/\`, in this shape: \`Custom workflow created. You can inspect its code at: <workflow-folder-path>\`. Do this only for newly created custom workflows, never builtin or pre-existing workflows.
55
- - Keep a small, readable workflow in one entry file. Do not split short one-use prompts, create one file per stage, add wrapper-only modules, hide the graph across files, or use line counts alone as a module boundary.
56
- - When a meaningful source boundary improves clarity, reuse, ownership, or testability, keep the graph and control flow in the top-level workflow entry file and extract cohesive concerns such as long or reused prompt builders, shared TypeBox schemas and workflow-specific types, model-policy constants shared by several stages, deterministic helpers with their own testable behavior, or reusable child workflow definitions into a subdirectory below the top-level discovery directory — either one owned by a single workflow or a shared support directory. Project and user discovery scans only top-level \`.ts\`/\`.js\`/\`.mjs\`/\`.cjs\` files in the workflow directory, so those support modules are not scanned as extra top-level workflow candidates; use \`.js\` import extensions from TypeScript source.
57
- - When creating or editing a workflow that pins an explicit stage \`model\` or \`fallbackModels\`, consult \`packages/coding-agent/docs/models/model-selection.md\` for role-based recommendations, treating benchmark thinking levels as measurement configurations rather than universal workflow defaults, then call \`workflow({ action: "models" })\` to see the models actually present in the user's configured catalog. Use only the catalog's returned \`fullId\` values as model strings, and append a thinking suffix only when that exact level appears in the entry's \`availableThinkingLevels\`; apply the stage role and failure-cost policy independently to the primary and every fallback; treat an absent or empty \`availableThinkingLevels\` as no suffix support rather than inferring one. If a guide-recommended model for the role is unavailable, try another guide-recommended model that is present in the catalog. If the selected model does not support the role's level, choose another catalog model that does or leave the stage unpinned rather than inventing or silently promoting a level. An explicit user request for a level overrides the role default, but never fabricate an unsupported catalog level. If no recommendation intersects with the catalog, leave the stage unpinned rather than inventing a substitute, and mention the limitation, asking the user only if the workflow requires an explicit model choice. If the catalog is empty, continue with unpinned stages, state that no configured models were returned, and do not fabricate model IDs. Do not inspect or infer credentials, environment variables, auth files, token validity, entitlements, or the reason a model is absent; \`isCurrent\` marks the active selection, not a quality recommendation.
58
- - Consult docs/workflows.md and its starter patterns (Classify-and-act, Fan-out-and-synthesize, Adversarial verification, Generate-and-filter, Tournament, Loop until done, and Stacked implementation slices) when designing a stage graph.
59
- - Treat workflow composition as a first-class authoring option. Before duplicating stages, inspect reusable workflow modules and builtin exports; import their definitions and invoke them with \`ctx.workflow(...)\`, mapping typed inputs and consuming only declared outputs. Nested workflows can themselves import children, so combine small reusable graphs into a richer parent while respecting \`maxDepth\`.
60
- - For implementation objectives, prefer the smallest independently verifiable slice: target roughly 100–500 changed lines between verification points by default, with one reviewable concern that builds and tests on its own. This is a default, not a law: a genuinely atomic change (for example, a mechanical rename across many files or a generated-artifact refresh) stays one slice, and a small objective is not split merely to reach a count.
61
- - Decompose those slices during the pre-launch architecture pass, not in a second planning ritual. Run every slice through a child workflow with its own implement/review/repair lifecycle: invoke imported \`goal\`, \`ralph\`, or a task-specific child via \`ctx.workflow(...)\`, rather than making one parent stage own all slices.
62
- - Stack implementation slices in order: give each slice an explicit branch input and, before invoking its child, create or check out that named branch in its worktree with a durable \`ctx.tool(...)\` step; \`base_branch\` and \`git_worktree_dir\` alone do not create/check out a feature branch. Slice N+1 must be created from slice N's verified branch, pass that branch as \`base_branch\`, and use a distinct worktree. Verify each slice before proceeding; if a slice fails its gates, stop at the first unverified slice; earlier verified slices remain verified and are reported as such; do not roll them back or continue past the failure.
63
- - Atomic \`workflow({ run })\` definitions are imperative, dynamic TypeScript. Discovery validates module loading, imports, and definition shape, including schemas and the \`run\` function, but it does not compile \`run\` into a complete graph or prove acyclicity. Runtime inputs, branches, loops, files, network data, model or human output, helpers, and nested workflows determine the materialized graph during execution.
64
- - Cyclic workflow graphs are unsupported. Workflow authors and coding agents MUST NOT create self-edges or dependency edges from the current frontier to an existing ancestor. Every materialized execution topology must remain a DAG. Redesign or stop before launch if a cycle cannot be removed.
65
- - Bounded loops must create distinct tracked work for every iteration; never reopen an ancestor below its downstream work. Stacked implementation slices are unrolled, not looped: each slice gets a fresh child boundary and distinct tracked nodes, and no slice may add an edge back to the current frontier, itself, or an ancestor. If a retained session receives follow-up without new dependency work, keep it as non-topological activity metadata rather than adding a back-edge. Before launch, sketch nodes and dependencies for every branch and loop and reject any proposed parent edge to the node itself or an ancestor.
66
- - Treat dynamic graph validation during execution, replay, and DBOS hydration as the authoritative cycle boundary. If runtime topology code changes, require incremental edge checks and DBOS hydration validation; prompt guidance and TypeScript types cannot replace those runtime checks.
67
- - Every workflow invocation automatically receives one stable, non-default Intercom group. Intercom-capable stages inherit it, nested workflows keep the top-level invocation group, and subagents inherit their launching stage's group. Do not mint or thread group names through ordinary workflow definitions. Use an explicit \`group\` only for an intentional override: a named group or \`group: true\` creates a subgroup, while \`group: "default"\` opts into the shared default group. Stages without Intercom access receive no group, and \`contact_supervisor\` still crosses group boundaries for authorized escalation.
68
- - Prefer \`ctx.tool(name, args, fn)\` for workflow-owned TypeScript operations with side effects, such as filesystem writes, network mutations, and external API actions. It creates a tracked, non-attachable durable graph node before invoking \`fn\`; it may be used before, between, after, or without model stages. A completed \`ctx.tool\` call is durably checkpointed with its serializable result, so resume replays that result without rerunning \`fn\`. For checks that may fail during a bounded repair loop, opt into \`failureMode: "return"\`, branch on the typed outcome, and pass only the needed error fields to the repair stage or artifact yourself; Atomic does not inject failure evidence into later prompts. Retries do not bound a hung callback, so every \`ctx.tool\` callback that starts a child process or performs network I/O MUST set an explicit positive finite \`timeoutMs\` and forward the supplied \`signal\` to cancellable work. A timeout applies per attempt, aborts that attempt's signal, and gives retries a fresh deadline and signal. Cancellation and storage faults still throw. Keep pure computation and side-effect-free transformations as ordinary TypeScript. Do not wrap agent-stage internals or every function call indiscriminately; this rule applies to side effects orchestrated directly by the workflow definition.
69
- - Pass large stage context through files/artifacts and \`reads\` with an explicit \`Read the file at <path>...\` prompt rather than large \`previous\` payloads or injected session history.
70
- - Wrap critical stage-prompt content in \`<keepContext>\` / \`</keepContext>\`. Tagged content survives compression verbatim regardless of the compression ratio, and every line of the span including the tag lines is protected. A long-running stage will be compacted, and compaction ranks lines individually: an objective is verbose and restated while the constraint that narrows it is usually one line, so the constraint is the cheaper deletion and what survives reads as broader permission than intended. Tag role constraints that bound a stage to part of the work, acceptance criteria and immutable contracts, explicit prohibitions, and identifiers a stage must not lose such as a target branch, worktree path, or run ID. Do not tag bulk context: protected lines count against the keep target rather than raising it, so a large protected span makes the surrounding transcript compress harder — tag the constraint, not the material it applies to.
71
- - Separate implementation/review acceptance from explicitly authorized final actions such as PR/MR/review creation, release tagging, deployment, or publication. Stop implementation loops once acceptance is proven and carry a remaining final action separately.
72
- - A model stage sees its local prompt, artifacts, tools, and reads, not the graph name or surrounding implementation. State the concrete action, evidence, and success criteria directly.`,
73
- ];
@@ -1,66 +0,0 @@
1
- import type { WorkflowReloadReport } from "./workflow-reload-report.js";
2
-
3
- type ReloadBatch = {
4
- readonly discoveryGeneration: number;
5
- requestCount: number;
6
- readonly promise: Promise<WorkflowReloadReport>;
7
- readonly resolve: (report: WorkflowReloadReport) => void;
8
- readonly reject: (error: Error) => void;
9
- };
10
-
11
- export interface WorkflowReloadCoordinator {
12
- request(discoveryGeneration: number): Promise<WorkflowReloadReport>;
13
- }
14
-
15
- function createBatch(discoveryGeneration: number): ReloadBatch {
16
- let resolve: (report: WorkflowReloadReport) => void = () => undefined;
17
- let reject: (error: Error) => void = () => undefined;
18
- const promise = new Promise<WorkflowReloadReport>((resolvePromise, rejectPromise) => {
19
- resolve = resolvePromise;
20
- reject = (error) => rejectPromise(error);
21
- });
22
- return { discoveryGeneration, requestCount: 0, promise, resolve, reject };
23
- }
24
-
25
- /**
26
- * Runs one reload at a time. Requests coalesce only with the latest queued pass
27
- * from the same session generation; generation boundaries remain ordered.
28
- */
29
- export function createWorkflowReloadCoordinator(
30
- reload: (discoveryGeneration: number, coalescedRequests: number) => Promise<WorkflowReloadReport>,
31
- ): WorkflowReloadCoordinator {
32
- const pending: ReloadBatch[] = [];
33
- let draining = false;
34
-
35
- const drain = async (): Promise<void> => {
36
- if (draining) return;
37
- draining = true;
38
- try {
39
- while (pending.length > 0) {
40
- const batch = pending.shift()!;
41
- try {
42
- const report = await reload(batch.discoveryGeneration, batch.requestCount);
43
- batch.resolve(report);
44
- } catch (error) {
45
- batch.reject(error instanceof Error ? error : new Error(String(error)));
46
- }
47
- }
48
- } finally {
49
- draining = false;
50
- if (pending.length > 0) void drain();
51
- }
52
- };
53
-
54
- return {
55
- request(discoveryGeneration): Promise<WorkflowReloadReport> {
56
- let batch = pending.at(-1);
57
- if (batch?.discoveryGeneration !== discoveryGeneration) {
58
- batch = createBatch(discoveryGeneration);
59
- pending.push(batch);
60
- }
61
- batch.requestCount += 1;
62
- queueMicrotask(() => void drain());
63
- return batch.promise;
64
- },
65
- };
66
- }
@@ -1,42 +0,0 @@
1
- import type { ConfigDiagnostic } from "./config-loader.js";
2
- import type { DiscoveryDiagnostic } from "./discovery.js";
3
-
4
- export type WorkflowReloadDiagnostic =
5
- | (ConfigDiagnostic & { readonly phase: "config" })
6
- | (DiscoveryDiagnostic & { readonly phase: "discovery" });
7
-
8
- type WorkflowReloadReportState = {
9
- readonly generation: number;
10
- readonly workflowCount: number;
11
- readonly coalescedRequests: number;
12
- readonly diagnostics: WorkflowReloadDiagnostic[];
13
- };
14
-
15
- export type WorkflowReloadReport = WorkflowReloadReportState &
16
- (
17
- | { readonly outcome: "applied" }
18
- | { readonly outcome: "failed"; readonly error: string }
19
- | { readonly outcome: "superseded" }
20
- );
21
-
22
- export function normalizeWorkflowReloadReport(report: WorkflowReloadReport | undefined): WorkflowReloadReport {
23
- return (
24
- report ?? {
25
- outcome: "applied",
26
- generation: 0,
27
- workflowCount: 0,
28
- coalescedRequests: 1,
29
- diagnostics: [],
30
- }
31
- );
32
- }
33
-
34
- export function workflowReloadDiagnostics(
35
- configDiagnostics: readonly ConfigDiagnostic[],
36
- discoveryDiagnostics: readonly DiscoveryDiagnostic[],
37
- ): WorkflowReloadDiagnostic[] {
38
- return [
39
- ...configDiagnostics.map((diagnostic) => ({ ...diagnostic, phase: "config" as const })),
40
- ...discoveryDiagnostics.map((diagnostic) => ({ ...diagnostic, phase: "discovery" as const })),
41
- ];
42
- }
@@ -1,15 +0,0 @@
1
- export function raceWorkflowRequestAbort<T>(operation: Promise<T>, signal: AbortSignal | undefined): Promise<T> {
2
- if (signal === undefined) return operation;
3
- if (signal.aborted) {
4
- void operation.catch(() => {});
5
- return Promise.reject(signal.reason ?? new DOMException("Workflow request aborted", "AbortError"));
6
- }
7
- const abort = Promise.withResolvers<never>();
8
- const onAbort = (): void => {
9
- abort.reject(signal.reason ?? new DOMException("Workflow request aborted", "AbortError"));
10
- };
11
- signal.addEventListener("abort", onAbort, { once: true });
12
- return Promise.race([operation, abort.promise]).finally(() => {
13
- signal.removeEventListener("abort", onAbort);
14
- });
15
- }
@@ -1,96 +0,0 @@
1
- /**
2
- * Row sources for the `/workflow resume` picker.
3
- *
4
- * Only inactive workflows belong in the resume selector. Live runs contribute
5
- * paused (quit) or recoverably-failed rows; actively-running live runs are
6
- * hidden because resuming an executing workflow would double-dispatch it.
7
- * The same collection backs the picker's live refresh (store changes plus a
8
- * bounded cross-session poll), so state transitions appear while it is open.
9
- */
10
-
11
- import { getDurableBackend } from "../durable/factory.js";
12
- import { isWorkflowRunResumable } from "../durable/resume-eligibility.js";
13
- import type { ResumableWorkflowEntry } from "../durable/types.js";
14
- import { topLevelWorkflowRuns } from "../shared/run-visibility.js";
15
- import type { Store } from "../shared/store.js";
16
- import { subscribeStoreInvalidation } from "../shared/store-observation.js";
17
- import type { RunSnapshot } from "../shared/store-types.js";
18
- import { workflowRunResumeCandidate } from "../shared/workflow-artifacts.js";
19
- import type { WorkflowResumeRefresh } from "../tui/workflow-resume-selector.js";
20
- import type { ExtensionRuntime } from "./runtime.js";
21
- import { prepareWorkflowResumeCatalog } from "./workflow-durable-resume-command.js";
22
- import { classifyDurableResumeShadow } from "./workflow-resume-shadow.js";
23
-
24
- export interface ResumePickerLiveSource {
25
- readonly liveRuns: readonly RunSnapshot[];
26
- /** Live ids whose resumable durable duplicates must be suppressed. */
27
- readonly suppressedLiveIds: ReadonlySet<string>;
28
- }
29
-
30
- /** A live run is resumable when the shared predicate accepts it and the durable
31
- * backend has not explicitly deleted it. A live paused/quit run resumes through
32
- * its live stage controls, so it must NOT require a durable checkpoint here;
33
- * a restored snapshot that depends on durable state is filtered by its shadow
34
- * classification instead.
35
- */
36
- function isResumableLiveRun(run: RunSnapshot): boolean {
37
- if (!getDurableBackend().isWorkflowLoadable(run.id)) return false;
38
- return isWorkflowRunResumable(workflowRunResumeCandidate(run));
39
- }
40
-
41
- export function collectResumePickerLiveRuns(runStore: Store): ResumePickerLiveSource {
42
- // `eligible` rows are re-listed from the durable catalog, and `ineligible`
43
- // rows have no durable checkpoint or pending prompt progress, so the resume
44
- // path would refuse them. Only `not_shadow` runs can actually be resumed here.
45
- const runs = topLevelWorkflowRuns(runStore.runs());
46
- const shadowClassification = new Map(runs.map((run) => [run.id, classifyDurableResumeShadow(run, runStore)]));
47
- const isOfferable = (run: RunSnapshot): boolean => shadowClassification.get(run.id) === "not_shadow";
48
- const resumableById = new Map(runs.map((run) => [run.id, isResumableLiveRun(run)]));
49
- const liveRuns = runs.filter((run) => isOfferable(run) && resumableById.get(run.id) === true);
50
- const isCurrentlyRunning = (run: RunSnapshot): boolean =>
51
- run.endedAt === undefined && run.status === "running" && run.exitReason !== "quit";
52
- const activeLiveIds = new Set(
53
- runs
54
- .filter(
55
- (run) =>
56
- shadowClassification.get(run.id) !== "eligible" &&
57
- isCurrentlyRunning(run) &&
58
- resumableById.get(run.id) !== true,
59
- )
60
- .map((run) => run.id),
61
- );
62
- // A non-running snapshot rejected by the shared predicate must not reappear as
63
- // a resumable durable row. Completed inspection rows remain visible separately.
64
- const rejectedLiveIds = new Set(
65
- runs.filter((run) => !isCurrentlyRunning(run) && resumableById.get(run.id) !== true).map((run) => run.id),
66
- );
67
- const suppressedLiveIds = new Set([...activeLiveIds, ...rejectedLiveIds]);
68
- return { liveRuns, suppressedLiveIds };
69
- }
70
-
71
- export interface ResumePickerLiveUpdateOptions {
72
- readonly watch: (onChange: () => void) => () => void;
73
- readonly refresh: WorkflowResumeRefresh;
74
- }
75
-
76
- export function resumePickerLiveUpdateOptions(
77
- runStore: Store,
78
- runtime: ExtensionRuntime,
79
- ): ResumePickerLiveUpdateOptions {
80
- return {
81
- watch: (onChange) => subscribeStoreInvalidation(runStore, onChange),
82
- refresh: async () => {
83
- const current = collectResumePickerLiveRuns(runStore);
84
- const catalog = await prepareWorkflowResumeCatalog(runtime, current.suppressedLiveIds);
85
- return {
86
- liveRuns: current.liveRuns,
87
- catalog: { durable: catalog.resumable, completed: catalog.completed },
88
- };
89
- },
90
- };
91
- }
92
-
93
- export interface ResumePickerCatalogRows {
94
- readonly durable: readonly ResumableWorkflowEntry[];
95
- readonly completed: readonly ResumableWorkflowEntry[];
96
- }
@@ -1,53 +0,0 @@
1
- import type { DurableWorkflowBackend } from "../durable/backend.js";
2
- import { getDurableBackend } from "../durable/factory.js";
3
- import { isDurableWorkflowResumable } from "../durable/resume-eligibility.js";
4
- import { getLoadableDurableWorkflow } from "../durable/workflow-status-transition.js";
5
- import { type JobTracker, jobTracker } from "../runs/background/job-tracker.js";
6
- import { type StageControlRegistry, stageControlRegistry } from "../runs/foreground/stage-control-registry.js";
7
- import { expandWorkflowGraph } from "../shared/expanded-workflow-graph.js";
8
- import { readGraphStoreSnapshot } from "../shared/store-observation.js";
9
- import type { Store } from "../shared/store-public-types.js";
10
- import type { RunSnapshot } from "../shared/store-types.js";
11
-
12
- interface DurableResumeShadowDeps {
13
- readonly backend?: DurableWorkflowBackend;
14
- readonly jobs?: JobTracker;
15
- readonly stageControls?: StageControlRegistry;
16
- }
17
-
18
- export type DurableResumeShadowClassification = "eligible" | "ineligible" | "not_shadow";
19
-
20
- /** Classify restored metadata without manufacturing progress the durable backend rejects. */
21
- export function classifyDurableResumeShadow(
22
- run: RunSnapshot,
23
- store: Store,
24
- deps: DurableResumeShadowDeps = {},
25
- ): DurableResumeShadowClassification {
26
- const backend = deps.backend ?? getDurableBackend();
27
- const handle = getLoadableDurableWorkflow(backend, run.id);
28
- if (handle?.status !== "paused" && handle?.status !== "running") return "not_shadow";
29
- const jobs = deps.jobs ?? jobTracker;
30
- if (jobs.has(run.id)) return "not_shadow";
31
- const controls = deps.stageControls ?? stageControlRegistry;
32
- const graph = expandWorkflowGraph(readGraphStoreSnapshot(store), run.id);
33
- const controlRunIds = new Set<string>([run.id]);
34
- for (const stage of graph.stages) controlRunIds.add(stage.workflowGraphTarget.runId);
35
- if ([...controlRunIds].some((runId) => controls.run(runId).stages().length > 0)) return "not_shadow";
36
- if (!isDurableWorkflowResumable(handle)) return "ineligible";
37
- if (run.status !== "paused" || run.exitReason !== "quit" || run.resumable !== true) {
38
- store.recordRunPaused(run.id, undefined, { exitReason: "quit", resumable: true });
39
- }
40
- return "eligible";
41
- }
42
-
43
- /**
44
- * Reconcile a session-restored snapshot with an authoritative resumable
45
- * durable handle. Live jobs/controls win; zero-progress orphans remain intact.
46
- */
47
- export function reconcileDurableResumeShadow(
48
- run: RunSnapshot,
49
- store: Store,
50
- deps: DurableResumeShadowDeps = {},
51
- ): boolean {
52
- return classifyDurableResumeShadow(run, store, deps) === "eligible";
53
- }