@bastani/atomic 0.8.31-alpha.4 → 0.9.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1361) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/dist/builtin/cursor/CHANGELOG.md +4 -1
  3. package/dist/builtin/cursor/package.json +2 -2
  4. package/dist/builtin/cursor/src/proto/protobuf-codec-json.ts +44 -0
  5. package/dist/builtin/cursor/src/proto/protobuf-codec-request.ts +271 -0
  6. package/dist/builtin/cursor/src/proto/protobuf-codec-wire.ts +231 -0
  7. package/dist/builtin/cursor/src/proto/protobuf-codec.ts +5 -523
  8. package/dist/builtin/cursor/src/stream.ts +6 -70
  9. package/dist/builtin/cursor/src/transport-errors.ts +74 -0
  10. package/dist/builtin/cursor/src/transport-frame.ts +56 -0
  11. package/dist/builtin/cursor/src/transport-http2.ts +122 -0
  12. package/dist/builtin/cursor/src/transport-native-client.ts +161 -0
  13. package/dist/builtin/cursor/src/transport-run-stream.ts +188 -0
  14. package/dist/builtin/cursor/src/transport-timeouts.ts +87 -0
  15. package/dist/builtin/cursor/src/transport-types.ts +140 -0
  16. package/dist/builtin/cursor/src/transport.ts +24 -790
  17. package/dist/builtin/intercom/CHANGELOG.md +3 -0
  18. package/dist/builtin/intercom/broker/client.ts +0 -35
  19. package/dist/builtin/intercom/contact-supervisor-tool.ts +289 -0
  20. package/dist/builtin/intercom/index-heavy.ts +77 -1336
  21. package/dist/builtin/intercom/intercom-tool.ts +409 -0
  22. package/dist/builtin/intercom/intercom-utils.ts +401 -0
  23. package/dist/builtin/intercom/lifecycle.ts +133 -0
  24. package/dist/builtin/intercom/overlay.ts +96 -0
  25. package/dist/builtin/intercom/package.json +1 -1
  26. package/dist/builtin/intercom/subagent-relay.ts +137 -0
  27. package/dist/builtin/mcp/CHANGELOG.md +3 -0
  28. package/dist/builtin/mcp/config-write-utils.ts +104 -0
  29. package/dist/builtin/mcp/config.ts +4 -180
  30. package/dist/builtin/mcp/mcp-panel-renderer.ts +243 -0
  31. package/dist/builtin/mcp/mcp-panel-state.ts +227 -0
  32. package/dist/builtin/mcp/mcp-panel-types.ts +86 -0
  33. package/dist/builtin/mcp/mcp-panel.ts +145 -579
  34. package/dist/builtin/mcp/mcp-setup-panel.ts +4 -81
  35. package/dist/builtin/mcp/package.json +1 -1
  36. package/dist/builtin/mcp/proxy-auth.ts +61 -0
  37. package/dist/builtin/mcp/proxy-call.ts +373 -0
  38. package/dist/builtin/mcp/proxy-connect.ts +58 -0
  39. package/dist/builtin/mcp/proxy-info-modes.ts +326 -0
  40. package/dist/builtin/mcp/proxy-modes.ts +3 -805
  41. package/dist/builtin/mcp/proxy-types.ts +3 -0
  42. package/dist/builtin/mcp/ui-server-http.ts +81 -0
  43. package/dist/builtin/mcp/ui-server.ts +2 -127
  44. package/dist/builtin/subagents/CHANGELOG.md +3 -0
  45. package/dist/builtin/subagents/package.json +1 -1
  46. package/dist/builtin/subagents/src/agents/agent-discovery.ts +127 -0
  47. package/dist/builtin/subagents/src/agents/agent-loaders.ts +175 -0
  48. package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +310 -0
  49. package/dist/builtin/subagents/src/agents/agent-management.ts +3 -309
  50. package/dist/builtin/subagents/src/agents/agent-overrides.ts +397 -0
  51. package/dist/builtin/subagents/src/agents/agent-paths.ts +88 -0
  52. package/dist/builtin/subagents/src/agents/agent-types.ts +136 -0
  53. package/dist/builtin/subagents/src/agents/agents.ts +22 -895
  54. package/dist/builtin/subagents/src/agents/skills-paths.ts +333 -0
  55. package/dist/builtin/subagents/src/agents/skills.ts +3 -326
  56. package/dist/builtin/subagents/src/extension/index.ts +4 -118
  57. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +13 -0
  58. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +401 -0
  59. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +131 -0
  60. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +213 -0
  61. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +84 -0
  62. package/dist/builtin/subagents/src/runs/background/async-execution.ts +13 -795
  63. package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +215 -0
  64. package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +136 -0
  65. package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +105 -0
  66. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +112 -0
  67. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +159 -0
  68. package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +127 -0
  69. package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +427 -0
  70. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +273 -0
  71. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +269 -0
  72. package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +196 -0
  73. package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +70 -0
  74. package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +44 -2233
  75. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-behavior.ts +75 -0
  76. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-component.ts +202 -0
  77. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-edit.ts +97 -0
  78. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-editor.ts +160 -0
  79. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-frame.ts +72 -0
  80. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-modes.ts +161 -0
  81. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-selectors.ts +203 -0
  82. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-selectors.ts +234 -0
  83. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-state.ts +103 -0
  84. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-types.ts +29 -0
  85. package/dist/builtin/subagents/src/runs/foreground/chain-clarify.ts +4 -1328
  86. package/dist/builtin/subagents/src/runs/foreground/chain-execution-clarify.ts +117 -0
  87. package/dist/builtin/subagents/src/runs/foreground/chain-execution-details.ts +35 -0
  88. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +194 -0
  89. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +183 -0
  90. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +185 -0
  91. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +229 -0
  92. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +194 -0
  93. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +94 -1043
  94. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +135 -0
  95. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +107 -0
  96. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-types.ts +17 -0
  97. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +454 -0
  98. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +219 -0
  99. package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +77 -0
  100. package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +34 -0
  101. package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +56 -0
  102. package/dist/builtin/subagents/src/runs/foreground/execution.ts +6 -1082
  103. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +207 -0
  104. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +140 -0
  105. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +266 -0
  106. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +270 -0
  107. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +157 -0
  108. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +375 -0
  109. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +463 -0
  110. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +17 -0
  111. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +320 -0
  112. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +207 -0
  113. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +121 -0
  114. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +113 -0
  115. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +150 -2522
  116. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +0 -16
  117. package/dist/builtin/subagents/src/runs/shared/nested-events-control.ts +167 -0
  118. package/dist/builtin/subagents/src/runs/shared/nested-events-core.ts +219 -0
  119. package/dist/builtin/subagents/src/runs/shared/nested-events-projection.ts +121 -0
  120. package/dist/builtin/subagents/src/runs/shared/nested-events-registry.ts +289 -0
  121. package/dist/builtin/subagents/src/runs/shared/nested-events-sanitize.ts +201 -0
  122. package/dist/builtin/subagents/src/runs/shared/nested-events.ts +50 -935
  123. package/dist/builtin/subagents/src/runs/shared/worktree.ts +0 -78
  124. package/dist/builtin/subagents/src/shared/types-async.ts +265 -0
  125. package/dist/builtin/subagents/src/shared/types-config.ts +125 -0
  126. package/dist/builtin/subagents/src/shared/types-depth.ts +121 -0
  127. package/dist/builtin/subagents/src/shared/types-output.ts +63 -0
  128. package/dist/builtin/subagents/src/shared/types-results.ts +318 -0
  129. package/dist/builtin/subagents/src/shared/types-runtime.ts +136 -0
  130. package/dist/builtin/subagents/src/shared/types.ts +10 -975
  131. package/dist/builtin/subagents/src/slash/slash-commands.ts +0 -12
  132. package/dist/builtin/subagents/src/tui/render-chain-graph.ts +247 -0
  133. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +259 -0
  134. package/dist/builtin/subagents/src/tui/render-layout.ts +120 -0
  135. package/dist/builtin/subagents/src/tui/render-result-animation.ts +56 -0
  136. package/dist/builtin/subagents/src/tui/render-result-compact.ts +154 -0
  137. package/dist/builtin/subagents/src/tui/render-result.ts +390 -0
  138. package/dist/builtin/subagents/src/tui/render-stable-output.ts +83 -0
  139. package/dist/builtin/subagents/src/tui/render-status-progress.ts +133 -0
  140. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +166 -0
  141. package/dist/builtin/subagents/src/tui/render-widget.ts +273 -0
  142. package/dist/builtin/subagents/src/tui/render.ts +14 -1801
  143. package/dist/builtin/web-access/CHANGELOG.md +3 -0
  144. package/dist/builtin/web-access/content-tools.ts +348 -0
  145. package/dist/builtin/web-access/curator-page-assets/script-1.ts +400 -0
  146. package/dist/builtin/web-access/curator-page-assets/script-2.ts +400 -0
  147. package/dist/builtin/web-access/curator-page-assets/script-3.ts +400 -0
  148. package/dist/builtin/web-access/curator-page-assets/script-4.ts +400 -0
  149. package/dist/builtin/web-access/curator-page-assets/script-5.ts +398 -0
  150. package/dist/builtin/web-access/curator-page-assets/styles-1.ts +394 -0
  151. package/dist/builtin/web-access/curator-page-assets/styles-2.ts +394 -0
  152. package/dist/builtin/web-access/curator-page-assets/styles-3.ts +393 -0
  153. package/dist/builtin/web-access/curator-page.ts +17 -3180
  154. package/dist/builtin/web-access/curator-server-helpers.ts +115 -0
  155. package/dist/builtin/web-access/curator-server.ts +2 -113
  156. package/dist/builtin/web-access/exa-mcp.ts +218 -0
  157. package/dist/builtin/web-access/exa.ts +2 -207
  158. package/dist/builtin/web-access/extract-frames.ts +228 -0
  159. package/dist/builtin/web-access/extract.ts +13 -214
  160. package/dist/builtin/web-access/github-config.ts +156 -0
  161. package/dist/builtin/web-access/github-extract.ts +3 -154
  162. package/dist/builtin/web-access/index-heavy.ts +8 -1904
  163. package/dist/builtin/web-access/package.json +2 -1
  164. package/dist/builtin/web-access/web-search-activity.ts +102 -0
  165. package/dist/builtin/web-access/web-search-browser.ts +116 -0
  166. package/dist/builtin/web-access/web-search-command.ts +242 -0
  167. package/dist/builtin/web-access/web-search-config.ts +163 -0
  168. package/dist/builtin/web-access/web-search-curator.ts +214 -0
  169. package/dist/builtin/web-access/web-search-features.ts +165 -0
  170. package/dist/builtin/web-access/web-search-formatting.ts +117 -0
  171. package/dist/builtin/web-access/web-search-return.ts +136 -0
  172. package/dist/builtin/web-access/web-search-summary.ts +170 -0
  173. package/dist/builtin/web-access/web-search-tool.ts +290 -0
  174. package/dist/builtin/web-access/web-search-types.ts +50 -0
  175. package/dist/builtin/workflows/CHANGELOG.md +8 -1
  176. package/dist/builtin/workflows/builtin/deep-research-codebase-runner.ts +492 -0
  177. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +346 -0
  178. package/dist/builtin/workflows/builtin/deep-research-codebase.ts +6 -822
  179. package/dist/builtin/workflows/builtin/goal-artifacts.ts +43 -0
  180. package/dist/builtin/workflows/builtin/goal-ledger.ts +54 -0
  181. package/dist/builtin/workflows/builtin/goal-prompts.ts +360 -0
  182. package/dist/builtin/workflows/builtin/goal-reducer.ts +141 -0
  183. package/dist/builtin/workflows/builtin/goal-reports.ts +56 -0
  184. package/dist/builtin/workflows/builtin/goal-review.ts +84 -0
  185. package/dist/builtin/workflows/builtin/goal-runner.ts +343 -0
  186. package/dist/builtin/workflows/builtin/goal-schemas.ts +60 -0
  187. package/dist/builtin/workflows/builtin/goal-types.ts +132 -0
  188. package/dist/builtin/workflows/builtin/goal.ts +4 -1160
  189. package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +432 -0
  190. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +477 -0
  191. package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +312 -0
  192. package/dist/builtin/workflows/builtin/open-claude-design.ts +7 -1083
  193. package/dist/builtin/workflows/builtin/ralph-core.ts +408 -0
  194. package/dist/builtin/workflows/builtin/ralph-models.ts +123 -0
  195. package/dist/builtin/workflows/builtin/ralph-review-gate.ts +89 -0
  196. package/dist/builtin/workflows/builtin/ralph-runner.ts +499 -0
  197. package/dist/builtin/workflows/builtin/ralph.ts +7 -1015
  198. package/dist/builtin/workflows/package.json +1 -1
  199. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +2 -2
  200. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +2 -2
  201. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +2 -2
  202. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/page.mjs +8 -1
  203. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +13 -15
  204. package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +2 -2
  205. package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +9 -0
  206. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +186 -0
  207. package/dist/builtin/workflows/src/extension/config-file-loader.ts +152 -0
  208. package/dist/builtin/workflows/src/extension/config-loader.ts +2 -167
  209. package/dist/builtin/workflows/src/extension/discovery-loaders.ts +115 -0
  210. package/dist/builtin/workflows/src/extension/discovery.ts +3 -117
  211. package/dist/builtin/workflows/src/extension/dispatcher.ts +3 -0
  212. package/dist/builtin/workflows/src/extension/extension-factory.ts +120 -0
  213. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +109 -0
  214. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +270 -0
  215. package/dist/builtin/workflows/src/extension/index.ts +42 -4151
  216. package/dist/builtin/workflows/src/extension/public-types.ts +295 -0
  217. package/dist/builtin/workflows/src/extension/render-component.ts +14 -0
  218. package/dist/builtin/workflows/src/extension/runtime-direct.ts +96 -0
  219. package/dist/builtin/workflows/src/extension/runtime.ts +8 -92
  220. package/dist/builtin/workflows/src/extension/ui-surface.ts +286 -0
  221. package/dist/builtin/workflows/src/extension/wiring.ts +6 -475
  222. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +111 -0
  223. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +213 -0
  224. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +81 -0
  225. package/dist/builtin/workflows/src/extension/workflow-command-utils.ts +181 -0
  226. package/dist/builtin/workflows/src/extension/workflow-policy.ts +15 -0
  227. package/dist/builtin/workflows/src/extension/workflow-ports.ts +41 -0
  228. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +23 -0
  229. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +286 -0
  230. package/dist/builtin/workflows/src/extension/workflow-schema.ts +1 -1
  231. package/dist/builtin/workflows/src/extension/workflow-stage-results.ts +264 -0
  232. package/dist/builtin/workflows/src/extension/workflow-targets.ts +181 -0
  233. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +175 -0
  234. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +205 -0
  235. package/dist/builtin/workflows/src/extension/workflow-tool-helpers.ts +66 -0
  236. package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +164 -0
  237. package/dist/builtin/workflows/src/extension/workflow-tool-registration.ts +54 -0
  238. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +164 -0
  239. package/dist/builtin/workflows/src/extension/workflow-tool.ts +102 -0
  240. package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +431 -0
  241. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +232 -0
  242. package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +74 -0
  243. package/dist/builtin/workflows/src/runs/foreground/executor-child-workflow.ts +158 -0
  244. package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +167 -0
  245. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +450 -0
  246. package/dist/builtin/workflows/src/runs/foreground/executor-direct.ts +233 -0
  247. package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +195 -0
  248. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +368 -0
  249. package/dist/builtin/workflows/src/runs/foreground/executor-inputs.ts +83 -0
  250. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +441 -0
  251. package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +160 -0
  252. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +274 -0
  253. package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +122 -0
  254. package/dist/builtin/workflows/src/runs/foreground/executor-run.ts +359 -0
  255. package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +204 -0
  256. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +197 -0
  257. package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +120 -0
  258. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +126 -0
  259. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +351 -0
  260. package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +134 -0
  261. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +54 -0
  262. package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +132 -0
  263. package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +293 -0
  264. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +109 -0
  265. package/dist/builtin/workflows/src/runs/foreground/executor.ts +19 -5258
  266. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +219 -0
  267. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +500 -0
  268. package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +129 -0
  269. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +53 -0
  270. package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +146 -0
  271. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +55 -0
  272. package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +82 -0
  273. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +141 -0
  274. package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +13 -1342
  275. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +453 -0
  276. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +442 -0
  277. package/dist/builtin/workflows/src/runs/shared/model-fallback.ts +2 -836
  278. package/dist/builtin/workflows/src/runs/shared/worktree-diff.ts +165 -0
  279. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +220 -0
  280. package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +335 -0
  281. package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +92 -0
  282. package/dist/builtin/workflows/src/runs/shared/worktree.ts +18 -791
  283. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +365 -0
  284. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +425 -0
  285. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +236 -0
  286. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +354 -0
  287. package/dist/builtin/workflows/src/shared/authoring-contract.d.ts +5 -598
  288. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +428 -0
  289. package/dist/builtin/workflows/src/shared/persistence-restore.ts +11 -431
  290. package/dist/builtin/workflows/src/shared/store-factory.ts +16 -0
  291. package/dist/builtin/workflows/src/shared/store-internal.ts +219 -0
  292. package/dist/builtin/workflows/src/shared/store-prompt-methods.ts +219 -0
  293. package/dist/builtin/workflows/src/shared/store-public-types.ts +215 -0
  294. package/dist/builtin/workflows/src/shared/store-run-methods.ts +223 -0
  295. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +305 -0
  296. package/dist/builtin/workflows/src/shared/store.ts +11 -1138
  297. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +266 -0
  298. package/dist/builtin/workflows/src/shared/workflow-failures-contract.ts +75 -0
  299. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +477 -0
  300. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +248 -0
  301. package/dist/builtin/workflows/src/shared/workflow-failures.ts +13 -1001
  302. package/dist/builtin/workflows/src/tui/chat-surface.ts +0 -66
  303. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +45 -0
  304. package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +161 -0
  305. package/dist/builtin/workflows/src/tui/graph-view-input.ts +333 -0
  306. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +336 -0
  307. package/dist/builtin/workflows/src/tui/graph-view-render.ts +194 -0
  308. package/dist/builtin/workflows/src/tui/graph-view-state.ts +306 -0
  309. package/dist/builtin/workflows/src/tui/graph-view-types.ts +70 -0
  310. package/dist/builtin/workflows/src/tui/graph-view.ts +4 -1386
  311. package/dist/builtin/workflows/src/tui/inline-form-editor-text.ts +121 -0
  312. package/dist/builtin/workflows/src/tui/inline-form-editor.ts +11 -223
  313. package/dist/builtin/workflows/src/tui/inputs-picker-editing.ts +151 -0
  314. package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +305 -0
  315. package/dist/builtin/workflows/src/tui/inputs-picker-render.ts +300 -0
  316. package/dist/builtin/workflows/src/tui/inputs-picker-types.ts +190 -0
  317. package/dist/builtin/workflows/src/tui/inputs-picker.ts +19 -997
  318. package/dist/builtin/workflows/src/tui/prompt-card-input.ts +226 -0
  319. package/dist/builtin/workflows/src/tui/prompt-card-render.ts +373 -0
  320. package/dist/builtin/workflows/src/tui/prompt-card-select.ts +116 -0
  321. package/dist/builtin/workflows/src/tui/prompt-card-state.ts +61 -0
  322. package/dist/builtin/workflows/src/tui/prompt-card-text.ts +129 -0
  323. package/dist/builtin/workflows/src/tui/prompt-card.ts +8 -910
  324. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +315 -0
  325. package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +127 -0
  326. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +187 -0
  327. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +222 -0
  328. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +152 -0
  329. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +464 -0
  330. package/dist/builtin/workflows/src/tui/stage-chat-view-transcript.ts +242 -0
  331. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +151 -0
  332. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +141 -1777
  333. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +85 -0
  334. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +1 -129
  335. package/dist/config-self-update.d.ts +21 -0
  336. package/dist/config-self-update.d.ts.map +1 -0
  337. package/dist/config-self-update.js +265 -0
  338. package/dist/config-self-update.js.map +1 -0
  339. package/dist/config.d.ts +3 -12
  340. package/dist/config.d.ts.map +1 -1
  341. package/dist/config.js +15 -252
  342. package/dist/config.js.map +1 -1
  343. package/dist/core/agent-session-accessors.d.ts +3 -0
  344. package/dist/core/agent-session-accessors.d.ts.map +1 -0
  345. package/dist/core/agent-session-accessors.js +36 -0
  346. package/dist/core/agent-session-accessors.js.map +1 -0
  347. package/dist/core/agent-session-auto-compaction.d.ts +32 -0
  348. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -0
  349. package/dist/core/agent-session-auto-compaction.js +214 -0
  350. package/dist/core/agent-session-auto-compaction.js.map +1 -0
  351. package/dist/core/agent-session-bash.d.ts +30 -0
  352. package/dist/core/agent-session-bash.d.ts.map +1 -0
  353. package/dist/core/agent-session-bash.js +84 -0
  354. package/dist/core/agent-session-bash.js.map +1 -0
  355. package/dist/core/agent-session-compaction.d.ts +44 -0
  356. package/dist/core/agent-session-compaction.d.ts.map +1 -0
  357. package/dist/core/agent-session-compaction.js +282 -0
  358. package/dist/core/agent-session-compaction.js.map +1 -0
  359. package/dist/core/agent-session-events.d.ts +65 -0
  360. package/dist/core/agent-session-events.d.ts.map +1 -0
  361. package/dist/core/agent-session-events.js +373 -0
  362. package/dist/core/agent-session-events.js.map +1 -0
  363. package/dist/core/agent-session-export.d.ts +42 -0
  364. package/dist/core/agent-session-export.d.ts.map +1 -0
  365. package/dist/core/agent-session-export.js +199 -0
  366. package/dist/core/agent-session-export.js.map +1 -0
  367. package/dist/core/agent-session-extension-bindings.d.ts +37 -0
  368. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -0
  369. package/dist/core/agent-session-extension-bindings.js +231 -0
  370. package/dist/core/agent-session-extension-bindings.js.map +1 -0
  371. package/dist/core/agent-session-message-queue.d.ts +85 -0
  372. package/dist/core/agent-session-message-queue.d.ts.map +1 -0
  373. package/dist/core/agent-session-message-queue.js +264 -0
  374. package/dist/core/agent-session-message-queue.js.map +1 -0
  375. package/dist/core/agent-session-methods.d.ts +302 -0
  376. package/dist/core/agent-session-methods.d.ts.map +1 -0
  377. package/dist/core/agent-session-methods.js +2 -0
  378. package/dist/core/agent-session-methods.js.map +1 -0
  379. package/dist/core/agent-session-models.d.ts +111 -0
  380. package/dist/core/agent-session-models.d.ts.map +1 -0
  381. package/dist/core/agent-session-models.js +368 -0
  382. package/dist/core/agent-session-models.js.map +1 -0
  383. package/dist/core/agent-session-prompt.d.ts +61 -0
  384. package/dist/core/agent-session-prompt.d.ts.map +1 -0
  385. package/dist/core/agent-session-prompt.js +330 -0
  386. package/dist/core/agent-session-prompt.js.map +1 -0
  387. package/dist/core/agent-session-retry.d.ts +62 -0
  388. package/dist/core/agent-session-retry.d.ts.map +1 -0
  389. package/dist/core/agent-session-retry.js +202 -0
  390. package/dist/core/agent-session-retry.js.map +1 -0
  391. package/dist/core/agent-session-skill-block.d.ts +13 -0
  392. package/dist/core/agent-session-skill-block.d.ts.map +1 -0
  393. package/dist/core/agent-session-skill-block.js +37 -0
  394. package/dist/core/agent-session-skill-block.js.map +1 -0
  395. package/dist/core/agent-session-state.d.ts +48 -0
  396. package/dist/core/agent-session-state.d.ts.map +1 -0
  397. package/dist/core/agent-session-state.js +129 -0
  398. package/dist/core/agent-session-state.js.map +1 -0
  399. package/dist/core/agent-session-tool-hooks.d.ts +7 -0
  400. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -0
  401. package/dist/core/agent-session-tool-hooks.js +72 -0
  402. package/dist/core/agent-session-tool-hooks.js.map +1 -0
  403. package/dist/core/agent-session-tool-registry.d.ts +15 -0
  404. package/dist/core/agent-session-tool-registry.d.ts.map +1 -0
  405. package/dist/core/agent-session-tool-registry.js +151 -0
  406. package/dist/core/agent-session-tool-registry.js.map +1 -0
  407. package/dist/core/agent-session-tree.d.ts +46 -0
  408. package/dist/core/agent-session-tree.d.ts.map +1 -0
  409. package/dist/core/agent-session-tree.js +217 -0
  410. package/dist/core/agent-session-tree.js.map +1 -0
  411. package/dist/core/agent-session-types.d.ts +159 -0
  412. package/dist/core/agent-session-types.d.ts.map +1 -0
  413. package/dist/core/agent-session-types.js +41 -0
  414. package/dist/core/agent-session-types.js.map +1 -0
  415. package/dist/core/agent-session.d.ts +68 -688
  416. package/dist/core/agent-session.d.ts.map +1 -1
  417. package/dist/core/agent-session.js +26 -3152
  418. package/dist/core/agent-session.js.map +1 -1
  419. package/dist/core/auth-storage-backends.d.ts +49 -0
  420. package/dist/core/auth-storage-backends.d.ts.map +1 -0
  421. package/dist/core/auth-storage-backends.js +185 -0
  422. package/dist/core/auth-storage-backends.js.map +1 -0
  423. package/dist/core/auth-storage.d.ts +2 -49
  424. package/dist/core/auth-storage.d.ts.map +1 -1
  425. package/dist/core/auth-storage.js +3 -183
  426. package/dist/core/auth-storage.js.map +1 -1
  427. package/dist/core/compaction/context-compaction-metrics.d.ts +16 -0
  428. package/dist/core/compaction/context-compaction-metrics.d.ts.map +1 -0
  429. package/dist/core/compaction/context-compaction-metrics.js +58 -0
  430. package/dist/core/compaction/context-compaction-metrics.js.map +1 -0
  431. package/dist/core/compaction/context-compaction-prompt.d.ts +9 -0
  432. package/dist/core/compaction/context-compaction-prompt.d.ts.map +1 -0
  433. package/dist/core/compaction/context-compaction-prompt.js +161 -0
  434. package/dist/core/compaction/context-compaction-prompt.js.map +1 -0
  435. package/dist/core/compaction/context-compaction-runner.d.ts +5 -0
  436. package/dist/core/compaction/context-compaction-runner.d.ts.map +1 -0
  437. package/dist/core/compaction/context-compaction-runner.js +181 -0
  438. package/dist/core/compaction/context-compaction-runner.js.map +1 -0
  439. package/dist/core/compaction/context-compaction-strategy.d.ts +5 -0
  440. package/dist/core/compaction/context-compaction-strategy.d.ts.map +1 -0
  441. package/dist/core/compaction/context-compaction-strategy.js +27 -0
  442. package/dist/core/compaction/context-compaction-strategy.js.map +1 -0
  443. package/dist/core/compaction/context-compaction-types.d.ts +73 -0
  444. package/dist/core/compaction/context-compaction-types.d.ts.map +1 -0
  445. package/dist/core/compaction/context-compaction-types.js +6 -0
  446. package/dist/core/compaction/context-compaction-types.js.map +1 -0
  447. package/dist/core/compaction/context-compaction.d.ts +9 -200
  448. package/dist/core/compaction/context-compaction.d.ts.map +1 -1
  449. package/dist/core/compaction/context-compaction.js +7 -1943
  450. package/dist/core/compaction/context-compaction.js.map +1 -1
  451. package/dist/core/compaction/context-deletion-application.d.ts +13 -0
  452. package/dist/core/compaction/context-deletion-application.d.ts.map +1 -0
  453. package/dist/core/compaction/context-deletion-application.js +259 -0
  454. package/dist/core/compaction/context-deletion-application.js.map +1 -0
  455. package/dist/core/compaction/context-deletion-store.d.ts +78 -0
  456. package/dist/core/compaction/context-deletion-store.d.ts.map +1 -0
  457. package/dist/core/compaction/context-deletion-store.js +162 -0
  458. package/dist/core/compaction/context-deletion-store.js.map +1 -0
  459. package/dist/core/compaction/context-deletion-targets.d.ts +40 -0
  460. package/dist/core/compaction/context-deletion-targets.d.ts.map +1 -0
  461. package/dist/core/compaction/context-deletion-targets.js +267 -0
  462. package/dist/core/compaction/context-deletion-targets.js.map +1 -0
  463. package/dist/core/compaction/context-deletion-tool-definitions.d.ts +187 -0
  464. package/dist/core/compaction/context-deletion-tool-definitions.d.ts.map +1 -0
  465. package/dist/core/compaction/context-deletion-tool-definitions.js +98 -0
  466. package/dist/core/compaction/context-deletion-tool-definitions.js.map +1 -0
  467. package/dist/core/compaction/context-deletion-tool-helpers.d.ts +19 -0
  468. package/dist/core/compaction/context-deletion-tool-helpers.d.ts.map +1 -0
  469. package/dist/core/compaction/context-deletion-tool-helpers.js +137 -0
  470. package/dist/core/compaction/context-deletion-tool-helpers.js.map +1 -0
  471. package/dist/core/compaction/context-deletion-tools.d.ts +4 -0
  472. package/dist/core/compaction/context-deletion-tools.d.ts.map +1 -0
  473. package/dist/core/compaction/context-deletion-tools.js +395 -0
  474. package/dist/core/compaction/context-deletion-tools.js.map +1 -0
  475. package/dist/core/compaction/context-transcript-analysis.d.ts +9 -0
  476. package/dist/core/compaction/context-transcript-analysis.d.ts.map +1 -0
  477. package/dist/core/compaction/context-transcript-analysis.js +234 -0
  478. package/dist/core/compaction/context-transcript-analysis.js.map +1 -0
  479. package/dist/core/export-html/index.d.ts.map +1 -1
  480. package/dist/core/export-html/index.js +2 -1
  481. package/dist/core/export-html/index.js.map +1 -1
  482. package/dist/core/export-html/template-js/data-tree.js +287 -0
  483. package/dist/core/export-html/template-js/entries-navigation.js +424 -0
  484. package/dist/core/export-html/template-js/initialization.js +312 -0
  485. package/dist/core/export-html/template-js/message-tools.js +415 -0
  486. package/dist/core/export-html/template-js/tree-filter-render.js +421 -0
  487. package/dist/core/export-html/template-script.d.ts +3 -0
  488. package/dist/core/export-html/template-script.d.ts.map +1 -0
  489. package/dist/core/export-html/template-script.js +13 -0
  490. package/dist/core/export-html/template-script.js.map +1 -0
  491. package/dist/core/export-html/template.js +3 -1
  492. package/dist/core/extensions/agent-events.d.ts +159 -0
  493. package/dist/core/extensions/agent-events.d.ts.map +1 -0
  494. package/dist/core/extensions/agent-events.js +2 -0
  495. package/dist/core/extensions/agent-events.js.map +1 -0
  496. package/dist/core/extensions/api-types.d.ts +189 -0
  497. package/dist/core/extensions/api-types.d.ts.map +1 -0
  498. package/dist/core/extensions/api-types.js +2 -0
  499. package/dist/core/extensions/api-types.js.map +1 -0
  500. package/dist/core/extensions/command-types.d.ts +14 -0
  501. package/dist/core/extensions/command-types.d.ts.map +1 -0
  502. package/dist/core/extensions/command-types.js +2 -0
  503. package/dist/core/extensions/command-types.js.map +1 -0
  504. package/dist/core/extensions/context-types.d.ts +130 -0
  505. package/dist/core/extensions/context-types.d.ts.map +1 -0
  506. package/dist/core/extensions/context-types.js +2 -0
  507. package/dist/core/extensions/context-types.js.map +1 -0
  508. package/dist/core/extensions/event-results.d.ts +61 -0
  509. package/dist/core/extensions/event-results.d.ts.map +1 -0
  510. package/dist/core/extensions/event-results.js +2 -0
  511. package/dist/core/extensions/event-results.js.map +1 -0
  512. package/dist/core/extensions/event-types.d.ts +6 -0
  513. package/dist/core/extensions/event-types.d.ts.map +1 -0
  514. package/dist/core/extensions/event-types.js +2 -0
  515. package/dist/core/extensions/event-types.js.map +1 -0
  516. package/dist/core/extensions/loader-api.d.ts +10 -0
  517. package/dist/core/extensions/loader-api.d.ts.map +1 -0
  518. package/dist/core/extensions/loader-api.js +143 -0
  519. package/dist/core/extensions/loader-api.js.map +1 -0
  520. package/dist/core/extensions/loader-core.d.ts +12 -0
  521. package/dist/core/extensions/loader-core.d.ts.map +1 -0
  522. package/dist/core/extensions/loader-core.js +91 -0
  523. package/dist/core/extensions/loader-core.js.map +1 -0
  524. package/dist/core/extensions/loader-discovery.d.ts +7 -0
  525. package/dist/core/extensions/loader-discovery.d.ts.map +1 -0
  526. package/dist/core/extensions/loader-discovery.js +139 -0
  527. package/dist/core/extensions/loader-discovery.js.map +1 -0
  528. package/dist/core/extensions/loader-resources.d.ts +11 -0
  529. package/dist/core/extensions/loader-resources.d.ts.map +1 -0
  530. package/dist/core/extensions/loader-resources.js +10 -0
  531. package/dist/core/extensions/loader-resources.js.map +1 -0
  532. package/dist/core/extensions/loader-runtime.d.ts +7 -0
  533. package/dist/core/extensions/loader-runtime.d.ts.map +1 -0
  534. package/dist/core/extensions/loader-runtime.js +51 -0
  535. package/dist/core/extensions/loader-runtime.js.map +1 -0
  536. package/dist/core/extensions/loader-virtual-modules.d.ts +3 -0
  537. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -0
  538. package/dist/core/extensions/loader-virtual-modules.js +92 -0
  539. package/dist/core/extensions/loader-virtual-modules.js.map +1 -0
  540. package/dist/core/extensions/loader.d.ts +4 -28
  541. package/dist/core/extensions/loader.d.ts.map +1 -1
  542. package/dist/core/extensions/loader.js +3 -542
  543. package/dist/core/extensions/loader.js.map +1 -1
  544. package/dist/core/extensions/message-types.d.ts +34 -0
  545. package/dist/core/extensions/message-types.d.ts.map +1 -0
  546. package/dist/core/extensions/message-types.js +2 -0
  547. package/dist/core/extensions/message-types.js.map +1 -0
  548. package/dist/core/extensions/provider-types.d.ts +71 -0
  549. package/dist/core/extensions/provider-types.d.ts.map +1 -0
  550. package/dist/core/extensions/provider-types.js +2 -0
  551. package/dist/core/extensions/provider-types.js.map +1 -0
  552. package/dist/core/extensions/runner-context.d.ts +42 -0
  553. package/dist/core/extensions/runner-context.d.ts.map +1 -0
  554. package/dist/core/extensions/runner-context.js +112 -0
  555. package/dist/core/extensions/runner-context.js.map +1 -0
  556. package/dist/core/extensions/runner-events.d.ts +47 -0
  557. package/dist/core/extensions/runner-events.d.ts.map +1 -0
  558. package/dist/core/extensions/runner-events.js +280 -0
  559. package/dist/core/extensions/runner-events.js.map +1 -0
  560. package/dist/core/extensions/runner-handlers.d.ts +32 -0
  561. package/dist/core/extensions/runner-handlers.d.ts.map +1 -0
  562. package/dist/core/extensions/runner-handlers.js +2 -0
  563. package/dist/core/extensions/runner-handlers.js.map +1 -0
  564. package/dist/core/extensions/runner-project-trust.d.ts +6 -0
  565. package/dist/core/extensions/runner-project-trust.d.ts.map +1 -0
  566. package/dist/core/extensions/runner-project-trust.js +27 -0
  567. package/dist/core/extensions/runner-project-trust.js.map +1 -0
  568. package/dist/core/extensions/runner-registries.d.ts +8 -0
  569. package/dist/core/extensions/runner-registries.d.ts.map +1 -0
  570. package/dist/core/extensions/runner-registries.js +76 -0
  571. package/dist/core/extensions/runner-registries.js.map +1 -0
  572. package/dist/core/extensions/runner-shortcuts.d.ts +10 -0
  573. package/dist/core/extensions/runner-shortcuts.d.ts.map +1 -0
  574. package/dist/core/extensions/runner-shortcuts.js +71 -0
  575. package/dist/core/extensions/runner-shortcuts.js.map +1 -0
  576. package/dist/core/extensions/runner-ui.d.ts +3 -0
  577. package/dist/core/extensions/runner-ui.d.ts.map +1 -0
  578. package/dist/core/extensions/runner-ui.js +50 -0
  579. package/dist/core/extensions/runner-ui.js.map +1 -0
  580. package/dist/core/extensions/runner.d.ts +7 -74
  581. package/dist/core/extensions/runner.d.ts.map +1 -1
  582. package/dist/core/extensions/runner.js +67 -673
  583. package/dist/core/extensions/runner.js.map +1 -1
  584. package/dist/core/extensions/runtime-types.d.ts +179 -0
  585. package/dist/core/extensions/runtime-types.d.ts.map +1 -0
  586. package/dist/core/extensions/runtime-types.js +2 -0
  587. package/dist/core/extensions/runtime-types.js.map +1 -0
  588. package/dist/core/extensions/session-events.d.ts +89 -0
  589. package/dist/core/extensions/session-events.d.ts.map +1 -0
  590. package/dist/core/extensions/session-events.js +2 -0
  591. package/dist/core/extensions/session-events.js.map +1 -0
  592. package/dist/core/extensions/tool-events.d.ts +127 -0
  593. package/dist/core/extensions/tool-events.d.ts.map +1 -0
  594. package/dist/core/extensions/tool-events.js +26 -0
  595. package/dist/core/extensions/tool-events.js.map +1 -0
  596. package/dist/core/extensions/tool-types.d.ts +100 -0
  597. package/dist/core/extensions/tool-types.d.ts.map +1 -0
  598. package/dist/core/extensions/tool-types.js +11 -0
  599. package/dist/core/extensions/tool-types.js.map +1 -0
  600. package/dist/core/extensions/types.d.ts +20 -1288
  601. package/dist/core/extensions/types.d.ts.map +1 -1
  602. package/dist/core/extensions/types.js +4 -34
  603. package/dist/core/extensions/types.js.map +1 -1
  604. package/dist/core/extensions/ui-types.d.ts +200 -0
  605. package/dist/core/extensions/ui-types.d.ts.map +1 -0
  606. package/dist/core/extensions/ui-types.js +2 -0
  607. package/dist/core/extensions/ui-types.js.map +1 -0
  608. package/dist/core/model-registry-auth.d.ts +7 -0
  609. package/dist/core/model-registry-auth.d.ts.map +1 -0
  610. package/dist/core/model-registry-auth.js +64 -0
  611. package/dist/core/model-registry-auth.js.map +1 -0
  612. package/dist/core/model-registry-builtins.d.ts +9 -0
  613. package/dist/core/model-registry-builtins.d.ts.map +1 -0
  614. package/dist/core/model-registry-builtins.js +120 -0
  615. package/dist/core/model-registry-builtins.js.map +1 -0
  616. package/dist/core/model-registry-custom-loader.d.ts +3 -0
  617. package/dist/core/model-registry-custom-loader.d.ts.map +1 -0
  618. package/dist/core/model-registry-custom-loader.js +213 -0
  619. package/dist/core/model-registry-custom-loader.js.map +1 -0
  620. package/dist/core/model-registry-dynamic.d.ts +6 -0
  621. package/dist/core/model-registry-dynamic.d.ts.map +1 -0
  622. package/dist/core/model-registry-dynamic.js +155 -0
  623. package/dist/core/model-registry-dynamic.js.map +1 -0
  624. package/dist/core/model-registry-loader.d.ts +4 -0
  625. package/dist/core/model-registry-loader.d.ts.map +1 -0
  626. package/dist/core/model-registry-loader.js +20 -0
  627. package/dist/core/model-registry-loader.js.map +1 -0
  628. package/dist/core/model-registry-schemas.d.ts +1084 -0
  629. package/dist/core/model-registry-schemas.d.ts.map +1 -0
  630. package/dist/core/model-registry-schemas.js +161 -0
  631. package/dist/core/model-registry-schemas.js.map +1 -0
  632. package/dist/core/model-registry-types.d.ts +74 -0
  633. package/dist/core/model-registry-types.d.ts.map +1 -0
  634. package/dist/core/model-registry-types.js +2 -0
  635. package/dist/core/model-registry-types.js.map +1 -0
  636. package/dist/core/model-registry.d.ts +3 -76
  637. package/dist/core/model-registry.d.ts.map +1 -1
  638. package/dist/core/model-registry.js +24 -733
  639. package/dist/core/model-registry.js.map +1 -1
  640. package/dist/core/model-resolver-cli.d.ts +19 -0
  641. package/dist/core/model-resolver-cli.d.ts.map +1 -0
  642. package/dist/core/model-resolver-cli.js +118 -0
  643. package/dist/core/model-resolver-cli.js.map +1 -0
  644. package/dist/core/model-resolver-defaults.d.ts +5 -0
  645. package/dist/core/model-resolver-defaults.d.ts.map +1 -0
  646. package/dist/core/model-resolver-defaults.js +47 -0
  647. package/dist/core/model-resolver-defaults.js.map +1 -0
  648. package/dist/core/model-resolver-initial.d.ts +31 -0
  649. package/dist/core/model-resolver-initial.d.ts.map +1 -0
  650. package/dist/core/model-resolver-initial.js +116 -0
  651. package/dist/core/model-resolver-initial.js.map +1 -0
  652. package/dist/core/model-resolver-patterns.d.ts +26 -0
  653. package/dist/core/model-resolver-patterns.d.ts.map +1 -0
  654. package/dist/core/model-resolver-patterns.js +139 -0
  655. package/dist/core/model-resolver-patterns.js.map +1 -0
  656. package/dist/core/model-resolver-scope.d.ts +15 -0
  657. package/dist/core/model-resolver-scope.d.ts.map +1 -0
  658. package/dist/core/model-resolver-scope.js +66 -0
  659. package/dist/core/model-resolver-scope.js.map +1 -0
  660. package/dist/core/model-resolver-types.d.ts +29 -0
  661. package/dist/core/model-resolver-types.d.ts.map +1 -0
  662. package/dist/core/model-resolver-types.js +2 -0
  663. package/dist/core/model-resolver-types.js.map +1 -0
  664. package/dist/core/model-resolver.d.ts +6 -107
  665. package/dist/core/model-resolver.d.ts.map +1 -1
  666. package/dist/core/model-resolver.js +5 -549
  667. package/dist/core/model-resolver.js.map +1 -1
  668. package/dist/core/package-manager-auto-resources.d.ts +5 -0
  669. package/dist/core/package-manager-auto-resources.d.ts.map +1 -0
  670. package/dist/core/package-manager-auto-resources.js +109 -0
  671. package/dist/core/package-manager-auto-resources.js.map +1 -0
  672. package/dist/core/package-manager-command.d.ts +11 -0
  673. package/dist/core/package-manager-command.d.ts.map +1 -0
  674. package/dist/core/package-manager-command.js +102 -0
  675. package/dist/core/package-manager-command.js.map +1 -0
  676. package/dist/core/package-manager-constants.d.ts +4 -0
  677. package/dist/core/package-manager-constants.d.ts.map +1 -0
  678. package/dist/core/package-manager-constants.js +4 -0
  679. package/dist/core/package-manager-constants.js.map +1 -0
  680. package/dist/core/package-manager-env.d.ts +4 -0
  681. package/dist/core/package-manager-env.d.ts.map +1 -0
  682. package/dist/core/package-manager-env.js +40 -0
  683. package/dist/core/package-manager-env.js.map +1 -0
  684. package/dist/core/package-manager-git.d.ts +10 -0
  685. package/dist/core/package-manager-git.d.ts.map +1 -0
  686. package/dist/core/package-manager-git.js +271 -0
  687. package/dist/core/package-manager-git.js.map +1 -0
  688. package/dist/core/package-manager-manifest.d.ts +7 -0
  689. package/dist/core/package-manager-manifest.d.ts.map +1 -0
  690. package/dist/core/package-manager-manifest.js +45 -0
  691. package/dist/core/package-manager-manifest.js.map +1 -0
  692. package/dist/core/package-manager-npm.d.ts +25 -0
  693. package/dist/core/package-manager-npm.d.ts.map +1 -0
  694. package/dist/core/package-manager-npm.js +252 -0
  695. package/dist/core/package-manager-npm.js.map +1 -0
  696. package/dist/core/package-manager-operations.d.ts +11 -0
  697. package/dist/core/package-manager-operations.d.ts.map +1 -0
  698. package/dist/core/package-manager-operations.js +196 -0
  699. package/dist/core/package-manager-operations.js.map +1 -0
  700. package/dist/core/package-manager-paths.d.ts +14 -0
  701. package/dist/core/package-manager-paths.d.ts.map +1 -0
  702. package/dist/core/package-manager-paths.js +61 -0
  703. package/dist/core/package-manager-paths.js.map +1 -0
  704. package/dist/core/package-manager-progress.d.ts +4 -0
  705. package/dist/core/package-manager-progress.d.ts.map +1 -0
  706. package/dist/core/package-manager-progress.js +16 -0
  707. package/dist/core/package-manager-progress.js.map +1 -0
  708. package/dist/core/package-manager-resolver.d.ts +5 -0
  709. package/dist/core/package-manager-resolver.d.ts.map +1 -0
  710. package/dist/core/package-manager-resolver.js +149 -0
  711. package/dist/core/package-manager-resolver.js.map +1 -0
  712. package/dist/core/package-manager-resource-accumulator.d.ts +6 -0
  713. package/dist/core/package-manager-resource-accumulator.d.ts.map +1 -0
  714. package/dist/core/package-manager-resource-accumulator.js +67 -0
  715. package/dist/core/package-manager-resource-accumulator.js.map +1 -0
  716. package/dist/core/package-manager-resource-collector.d.ts +5 -0
  717. package/dist/core/package-manager-resource-collector.d.ts.map +1 -0
  718. package/dist/core/package-manager-resource-collector.js +148 -0
  719. package/dist/core/package-manager-resource-collector.js.map +1 -0
  720. package/dist/core/package-manager-resource-files.d.ts +14 -0
  721. package/dist/core/package-manager-resource-files.d.ts.map +1 -0
  722. package/dist/core/package-manager-resource-files.js +265 -0
  723. package/dist/core/package-manager-resource-files.js.map +1 -0
  724. package/dist/core/package-manager-resource-patterns.d.ts +12 -0
  725. package/dist/core/package-manager-resource-patterns.d.ts.map +1 -0
  726. package/dist/core/package-manager-resource-patterns.js +136 -0
  727. package/dist/core/package-manager-resource-patterns.js.map +1 -0
  728. package/dist/core/package-manager-settings.d.ts +10 -0
  729. package/dist/core/package-manager-settings.d.ts.map +1 -0
  730. package/dist/core/package-manager-settings.js +91 -0
  731. package/dist/core/package-manager-settings.js.map +1 -0
  732. package/dist/core/package-manager-source.d.ts +21 -0
  733. package/dist/core/package-manager-source.d.ts.map +1 -0
  734. package/dist/core/package-manager-source.js +146 -0
  735. package/dist/core/package-manager-source.js.map +1 -0
  736. package/dist/core/package-manager-types.d.ts +169 -0
  737. package/dist/core/package-manager-types.d.ts.map +1 -0
  738. package/dist/core/package-manager-types.js +9 -0
  739. package/dist/core/package-manager-types.js.map +1 -0
  740. package/dist/core/package-manager.d.ts +9 -174
  741. package/dist/core/package-manager.d.ts.map +1 -1
  742. package/dist/core/package-manager.js +56 -2100
  743. package/dist/core/package-manager.js.map +1 -1
  744. package/dist/core/resource-loader-assets.d.ts +6 -0
  745. package/dist/core/resource-loader-assets.d.ts.map +1 -0
  746. package/dist/core/resource-loader-assets.js +209 -0
  747. package/dist/core/resource-loader-assets.js.map +1 -0
  748. package/dist/core/resource-loader-context-files.d.ts +10 -0
  749. package/dist/core/resource-loader-context-files.d.ts.map +1 -0
  750. package/dist/core/resource-loader-context-files.js +74 -0
  751. package/dist/core/resource-loader-context-files.js.map +1 -0
  752. package/dist/core/resource-loader-core.d.ts +82 -0
  753. package/dist/core/resource-loader-core.d.ts.map +1 -0
  754. package/dist/core/resource-loader-core.js +168 -0
  755. package/dist/core/resource-loader-core.js.map +1 -0
  756. package/dist/core/resource-loader-discovery.d.ts +4 -0
  757. package/dist/core/resource-loader-discovery.d.ts.map +1 -0
  758. package/dist/core/resource-loader-discovery.js +28 -0
  759. package/dist/core/resource-loader-discovery.js.map +1 -0
  760. package/dist/core/resource-loader-extensions.d.ts +13 -0
  761. package/dist/core/resource-loader-extensions.d.ts.map +1 -0
  762. package/dist/core/resource-loader-extensions.js +110 -0
  763. package/dist/core/resource-loader-extensions.js.map +1 -0
  764. package/dist/core/resource-loader-helpers.d.ts +4 -0
  765. package/dist/core/resource-loader-helpers.d.ts.map +1 -0
  766. package/dist/core/resource-loader-helpers.js +23 -0
  767. package/dist/core/resource-loader-helpers.js.map +1 -0
  768. package/dist/core/resource-loader-internals.d.ts +96 -0
  769. package/dist/core/resource-loader-internals.d.ts.map +1 -0
  770. package/dist/core/resource-loader-internals.js +4 -0
  771. package/dist/core/resource-loader-internals.js.map +1 -0
  772. package/dist/core/resource-loader-package-resources.d.ts +31 -0
  773. package/dist/core/resource-loader-package-resources.d.ts.map +1 -0
  774. package/dist/core/resource-loader-package-resources.js +112 -0
  775. package/dist/core/resource-loader-package-resources.js.map +1 -0
  776. package/dist/core/resource-loader-paths.d.ts +4 -0
  777. package/dist/core/resource-loader-paths.d.ts.map +1 -0
  778. package/dist/core/resource-loader-paths.js +22 -0
  779. package/dist/core/resource-loader-paths.js.map +1 -0
  780. package/dist/core/resource-loader-reload.d.ts +6 -0
  781. package/dist/core/resource-loader-reload.d.ts.map +1 -0
  782. package/dist/core/resource-loader-reload.js +226 -0
  783. package/dist/core/resource-loader-reload.js.map +1 -0
  784. package/dist/core/resource-loader-source-info.d.ts +9 -0
  785. package/dist/core/resource-loader-source-info.d.ts.map +1 -0
  786. package/dist/core/resource-loader-source-info.js +101 -0
  787. package/dist/core/resource-loader-source-info.js.map +1 -0
  788. package/dist/core/resource-loader-types.d.ts +130 -0
  789. package/dist/core/resource-loader-types.d.ts.map +1 -0
  790. package/dist/core/resource-loader-types.js +2 -0
  791. package/dist/core/resource-loader-types.js.map +1 -0
  792. package/dist/core/resource-loader.d.ts +3 -242
  793. package/dist/core/resource-loader.d.ts.map +1 -1
  794. package/dist/core/resource-loader.js +2 -976
  795. package/dist/core/resource-loader.js.map +1 -1
  796. package/dist/core/sdk-exports.d.ts +7 -0
  797. package/dist/core/sdk-exports.d.ts.map +1 -0
  798. package/dist/core/sdk-exports.js +5 -0
  799. package/dist/core/sdk-exports.js.map +1 -0
  800. package/dist/core/sdk-types.d.ts +86 -0
  801. package/dist/core/sdk-types.d.ts.map +1 -0
  802. package/dist/core/sdk-types.js +2 -0
  803. package/dist/core/sdk-types.js.map +1 -0
  804. package/dist/core/sdk.d.ts +3 -91
  805. package/dist/core/sdk.d.ts.map +1 -1
  806. package/dist/core/sdk.js +2 -6
  807. package/dist/core/sdk.js.map +1 -1
  808. package/dist/core/session-manager-archive.d.ts +27 -0
  809. package/dist/core/session-manager-archive.d.ts.map +1 -0
  810. package/dist/core/session-manager-archive.js +114 -0
  811. package/dist/core/session-manager-archive.js.map +1 -0
  812. package/dist/core/session-manager-core.d.ts +104 -0
  813. package/dist/core/session-manager-core.d.ts.map +1 -0
  814. package/dist/core/session-manager-core.js +346 -0
  815. package/dist/core/session-manager-core.js.map +1 -0
  816. package/dist/core/session-manager-entries.d.ts +38 -0
  817. package/dist/core/session-manager-entries.d.ts.map +1 -0
  818. package/dist/core/session-manager-entries.js +124 -0
  819. package/dist/core/session-manager-entries.js.map +1 -0
  820. package/dist/core/session-manager-history.d.ts +38 -0
  821. package/dist/core/session-manager-history.d.ts.map +1 -0
  822. package/dist/core/session-manager-history.js +378 -0
  823. package/dist/core/session-manager-history.js.map +1 -0
  824. package/dist/core/session-manager-list.d.ts +5 -0
  825. package/dist/core/session-manager-list.d.ts.map +1 -0
  826. package/dist/core/session-manager-list.js +196 -0
  827. package/dist/core/session-manager-list.js.map +1 -0
  828. package/dist/core/session-manager-migrations.d.ts +11 -0
  829. package/dist/core/session-manager-migrations.d.ts.map +1 -0
  830. package/dist/core/session-manager-migrations.js +80 -0
  831. package/dist/core/session-manager-migrations.js.map +1 -0
  832. package/dist/core/session-manager-paths.d.ts +7 -0
  833. package/dist/core/session-manager-paths.d.ts.map +1 -0
  834. package/dist/core/session-manager-paths.js +22 -0
  835. package/dist/core/session-manager-paths.js.map +1 -0
  836. package/dist/core/session-manager-storage.d.ts +15 -0
  837. package/dist/core/session-manager-storage.d.ts.map +1 -0
  838. package/dist/core/session-manager-storage.js +127 -0
  839. package/dist/core/session-manager-storage.js.map +1 -0
  840. package/dist/core/session-manager-types.d.ts +172 -0
  841. package/dist/core/session-manager-types.d.ts.map +1 -0
  842. package/dist/core/session-manager-types.js +2 -0
  843. package/dist/core/session-manager-types.js.map +1 -0
  844. package/dist/core/session-manager-validation.d.ts +7 -0
  845. package/dist/core/session-manager-validation.d.ts.map +1 -0
  846. package/dist/core/session-manager-validation.js +34 -0
  847. package/dist/core/session-manager-validation.js.map +1 -0
  848. package/dist/core/session-manager.d.ts +8 -390
  849. package/dist/core/session-manager.d.ts.map +1 -1
  850. package/dist/core/session-manager.js +7 -1418
  851. package/dist/core/session-manager.js.map +1 -1
  852. package/dist/core/settings-manager-basic-accessors.d.ts +65 -0
  853. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -0
  854. package/dist/core/settings-manager-basic-accessors.js +253 -0
  855. package/dist/core/settings-manager-basic-accessors.js.map +1 -0
  856. package/dist/core/settings-manager-core.d.ts +57 -0
  857. package/dist/core/settings-manager-core.d.ts.map +1 -0
  858. package/dist/core/settings-manager-core.js +387 -0
  859. package/dist/core/settings-manager-core.js.map +1 -0
  860. package/dist/core/settings-manager-internals.d.ts +13 -0
  861. package/dist/core/settings-manager-internals.d.ts.map +1 -0
  862. package/dist/core/settings-manager-internals.js +4 -0
  863. package/dist/core/settings-manager-internals.js.map +1 -0
  864. package/dist/core/settings-manager-resource-accessors.d.ts +43 -0
  865. package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -0
  866. package/dist/core/settings-manager-resource-accessors.js +172 -0
  867. package/dist/core/settings-manager-resource-accessors.js.map +1 -0
  868. package/dist/core/settings-manager-ui-accessors.d.ts +44 -0
  869. package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -0
  870. package/dist/core/settings-manager-ui-accessors.js +208 -0
  871. package/dist/core/settings-manager-ui-accessors.js.map +1 -0
  872. package/dist/core/settings-manager.d.ts +6 -321
  873. package/dist/core/settings-manager.d.ts.map +1 -1
  874. package/dist/core/settings-manager.js +5 -1060
  875. package/dist/core/settings-manager.js.map +1 -1
  876. package/dist/core/settings-merge.d.ts +4 -0
  877. package/dist/core/settings-merge.d.ts.map +1 -0
  878. package/dist/core/settings-merge.js +26 -0
  879. package/dist/core/settings-merge.js.map +1 -0
  880. package/dist/core/settings-storage.d.ts +20 -0
  881. package/dist/core/settings-storage.d.ts.map +1 -0
  882. package/dist/core/settings-storage.js +100 -0
  883. package/dist/core/settings-storage.js.map +1 -0
  884. package/dist/core/settings-types.d.ts +123 -0
  885. package/dist/core/settings-types.d.ts.map +1 -0
  886. package/dist/core/settings-types.js +2 -0
  887. package/dist/core/settings-types.js.map +1 -0
  888. package/dist/core/system-prompt.d.ts.map +1 -1
  889. package/dist/core/system-prompt.js +7 -0
  890. package/dist/core/system-prompt.js.map +1 -1
  891. package/dist/core/tools/bash-policy-compile.d.ts +5 -0
  892. package/dist/core/tools/bash-policy-compile.d.ts.map +1 -0
  893. package/dist/core/tools/bash-policy-compile.js +241 -0
  894. package/dist/core/tools/bash-policy-compile.js.map +1 -0
  895. package/dist/core/tools/bash-policy-evaluate.d.ts +3 -0
  896. package/dist/core/tools/bash-policy-evaluate.d.ts.map +1 -0
  897. package/dist/core/tools/bash-policy-evaluate.js +92 -0
  898. package/dist/core/tools/bash-policy-evaluate.js.map +1 -0
  899. package/dist/core/tools/bash-policy-format.d.ts +5 -0
  900. package/dist/core/tools/bash-policy-format.d.ts.map +1 -0
  901. package/dist/core/tools/bash-policy-format.js +49 -0
  902. package/dist/core/tools/bash-policy-format.js.map +1 -0
  903. package/dist/core/tools/bash-policy-parser.d.ts +4 -0
  904. package/dist/core/tools/bash-policy-parser.d.ts.map +1 -0
  905. package/dist/core/tools/bash-policy-parser.js +155 -0
  906. package/dist/core/tools/bash-policy-parser.js.map +1 -0
  907. package/dist/core/tools/bash-policy-segment.d.ts +3 -0
  908. package/dist/core/tools/bash-policy-segment.d.ts.map +1 -0
  909. package/dist/core/tools/bash-policy-segment.js +275 -0
  910. package/dist/core/tools/bash-policy-segment.js.map +1 -0
  911. package/dist/core/tools/bash-policy-shell.d.ts +11 -0
  912. package/dist/core/tools/bash-policy-shell.d.ts.map +1 -0
  913. package/dist/core/tools/bash-policy-shell.js +267 -0
  914. package/dist/core/tools/bash-policy-shell.js.map +1 -0
  915. package/dist/core/tools/bash-policy-types.d.ts +146 -0
  916. package/dist/core/tools/bash-policy-types.d.ts.map +1 -0
  917. package/dist/core/tools/bash-policy-types.js +2 -0
  918. package/dist/core/tools/bash-policy-types.js.map +1 -0
  919. package/dist/core/tools/bash-policy.d.ts +5 -61
  920. package/dist/core/tools/bash-policy.d.ts.map +1 -1
  921. package/dist/core/tools/bash-policy.js +4 -1068
  922. package/dist/core/tools/bash-policy.js.map +1 -1
  923. package/dist/core/tools/todos-execute.d.ts +5 -0
  924. package/dist/core/tools/todos-execute.d.ts.map +1 -0
  925. package/dist/core/tools/todos-execute.js +200 -0
  926. package/dist/core/tools/todos-execute.js.map +1 -0
  927. package/dist/core/tools/todos-locks.d.ts +4 -0
  928. package/dist/core/tools/todos-locks.d.ts.map +1 -0
  929. package/dist/core/tools/todos-locks.js +80 -0
  930. package/dist/core/tools/todos-locks.js.map +1 -0
  931. package/dist/core/tools/todos-model.d.ts +21 -0
  932. package/dist/core/tools/todos-model.d.ts.map +1 -0
  933. package/dist/core/tools/todos-model.js +71 -0
  934. package/dist/core/tools/todos-model.js.map +1 -0
  935. package/dist/core/tools/todos-mutations.d.ts +6 -0
  936. package/dist/core/tools/todos-mutations.d.ts.map +1 -0
  937. package/dist/core/tools/todos-mutations.js +85 -0
  938. package/dist/core/tools/todos-mutations.js.map +1 -0
  939. package/dist/core/tools/todos-paths.d.ts +5 -0
  940. package/dist/core/tools/todos-paths.d.ts.map +1 -0
  941. package/dist/core/tools/todos-paths.js +25 -0
  942. package/dist/core/tools/todos-paths.js.map +1 -0
  943. package/dist/core/tools/todos-render.d.ts +10 -0
  944. package/dist/core/tools/todos-render.d.ts.map +1 -0
  945. package/dist/core/tools/todos-render.js +159 -0
  946. package/dist/core/tools/todos-render.js.map +1 -0
  947. package/dist/core/tools/todos-storage.d.ts +9 -0
  948. package/dist/core/tools/todos-storage.d.ts.map +1 -0
  949. package/dist/core/tools/todos-storage.js +183 -0
  950. package/dist/core/tools/todos-storage.js.map +1 -0
  951. package/dist/core/tools/todos-types.d.ts +46 -0
  952. package/dist/core/tools/todos-types.d.ts.map +1 -0
  953. package/dist/core/tools/todos-types.js +27 -0
  954. package/dist/core/tools/todos-types.js.map +1 -0
  955. package/dist/core/tools/todos.d.ts +12 -32
  956. package/dist/core/tools/todos.d.ts.map +1 -1
  957. package/dist/core/tools/todos.js +7 -893
  958. package/dist/core/tools/todos.js.map +1 -1
  959. package/dist/index-extensions.d.ts +3 -0
  960. package/dist/index-extensions.d.ts.map +1 -0
  961. package/dist/index-extensions.js +2 -0
  962. package/dist/index-extensions.js.map +1 -0
  963. package/dist/index.d.ts +1 -2
  964. package/dist/index.d.ts.map +1 -1
  965. package/dist/index.js +1 -1
  966. package/dist/index.js.map +1 -1
  967. package/dist/main-app-mode.d.ts +15 -0
  968. package/dist/main-app-mode.d.ts.map +1 -0
  969. package/dist/main-app-mode.js +51 -0
  970. package/dist/main-app-mode.js.map +1 -0
  971. package/dist/main-session-options.d.ts +12 -0
  972. package/dist/main-session-options.d.ts.map +1 -0
  973. package/dist/main-session-options.js +87 -0
  974. package/dist/main-session-options.js.map +1 -0
  975. package/dist/main-session.d.ts +9 -0
  976. package/dist/main-session.d.ts.map +1 -0
  977. package/dist/main-session.js +188 -0
  978. package/dist/main-session.js.map +1 -0
  979. package/dist/main-stdio.d.ts +12 -0
  980. package/dist/main-stdio.d.ts.map +1 -0
  981. package/dist/main-stdio.js +68 -0
  982. package/dist/main-stdio.js.map +1 -0
  983. package/dist/main.d.ts +2 -3
  984. package/dist/main.d.ts.map +1 -1
  985. package/dist/main.js +11 -388
  986. package/dist/main.js.map +1 -1
  987. package/dist/migrations-config-values.d.ts +9 -0
  988. package/dist/migrations-config-values.d.ts.map +1 -0
  989. package/dist/migrations-config-values.js +298 -0
  990. package/dist/migrations-config-values.js.map +1 -0
  991. package/dist/migrations.d.ts.map +1 -1
  992. package/dist/migrations.js +2 -296
  993. package/dist/migrations.js.map +1 -1
  994. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  995. package/dist/modes/interactive/components/chat-message-renderer.js +0 -7
  996. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  997. package/dist/modes/interactive/components/chat-session-host-actions.d.ts +9 -0
  998. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -0
  999. package/dist/modes/interactive/components/chat-session-host-actions.js +244 -0
  1000. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -0
  1001. package/dist/modes/interactive/components/chat-session-host-editor.d.ts +18 -0
  1002. package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -0
  1003. package/dist/modes/interactive/components/chat-session-host-editor.js +165 -0
  1004. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -0
  1005. package/dist/modes/interactive/components/chat-session-host-events.d.ts +5 -0
  1006. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -0
  1007. package/dist/modes/interactive/components/chat-session-host-events.js +200 -0
  1008. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -0
  1009. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts +13 -0
  1010. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -0
  1011. package/dist/modes/interactive/components/chat-session-host-rendering.js +185 -0
  1012. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -0
  1013. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +13 -0
  1014. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -0
  1015. package/dist/modes/interactive/components/chat-session-host-runtime.js +101 -0
  1016. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -0
  1017. package/dist/modes/interactive/components/chat-session-host-state.d.ts +53 -0
  1018. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -0
  1019. package/dist/modes/interactive/components/chat-session-host-state.js +42 -0
  1020. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -0
  1021. package/dist/modes/interactive/components/chat-session-host-types.d.ts +63 -0
  1022. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -0
  1023. package/dist/modes/interactive/components/chat-session-host-types.js +2 -0
  1024. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -0
  1025. package/dist/modes/interactive/components/chat-session-host-utils.d.ts +28 -0
  1026. package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -0
  1027. package/dist/modes/interactive/components/chat-session-host-utils.js +103 -0
  1028. package/dist/modes/interactive/components/chat-session-host-utils.js.map +1 -0
  1029. package/dist/modes/interactive/components/chat-session-host.d.ts +6 -129
  1030. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  1031. package/dist/modes/interactive/components/chat-session-host.js +50 -1022
  1032. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  1033. package/dist/modes/interactive/components/config-selector-list.d.ts +65 -0
  1034. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -0
  1035. package/dist/modes/interactive/components/config-selector-list.js +458 -0
  1036. package/dist/modes/interactive/components/config-selector-list.js.map +1 -0
  1037. package/dist/modes/interactive/components/config-selector.d.ts +3 -58
  1038. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1039. package/dist/modes/interactive/components/config-selector.js +2 -457
  1040. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1041. package/dist/modes/interactive/components/session-selector-delete.d.ts +10 -0
  1042. package/dist/modes/interactive/components/session-selector-delete.d.ts.map +1 -0
  1043. package/dist/modes/interactive/components/session-selector-delete.js +40 -0
  1044. package/dist/modes/interactive/components/session-selector-delete.js.map +1 -0
  1045. package/dist/modes/interactive/components/session-selector-header.d.ts +33 -0
  1046. package/dist/modes/interactive/components/session-selector-header.d.ts.map +1 -0
  1047. package/dist/modes/interactive/components/session-selector-header.js +117 -0
  1048. package/dist/modes/interactive/components/session-selector-header.js.map +1 -0
  1049. package/dist/modes/interactive/components/session-selector-list.d.ts +49 -0
  1050. package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -0
  1051. package/dist/modes/interactive/components/session-selector-list.js +307 -0
  1052. package/dist/modes/interactive/components/session-selector-list.js.map +1 -0
  1053. package/dist/modes/interactive/components/session-selector-tree.d.ts +25 -0
  1054. package/dist/modes/interactive/components/session-selector-tree.d.ts.map +1 -0
  1055. package/dist/modes/interactive/components/session-selector-tree.js +53 -0
  1056. package/dist/modes/interactive/components/session-selector-tree.js.map +1 -0
  1057. package/dist/modes/interactive/components/session-selector-types.d.ts +4 -0
  1058. package/dist/modes/interactive/components/session-selector-types.d.ts.map +1 -0
  1059. package/dist/modes/interactive/components/session-selector-types.js +2 -0
  1060. package/dist/modes/interactive/components/session-selector-types.js.map +1 -0
  1061. package/dist/modes/interactive/components/session-selector-utils.d.ts +4 -0
  1062. package/dist/modes/interactive/components/session-selector-utils.d.ts.map +1 -0
  1063. package/dist/modes/interactive/components/session-selector-utils.js +37 -0
  1064. package/dist/modes/interactive/components/session-selector-utils.js.map +1 -0
  1065. package/dist/modes/interactive/components/session-selector.d.ts +3 -49
  1066. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1067. package/dist/modes/interactive/components/session-selector.js +5 -542
  1068. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1069. package/dist/modes/interactive/components/settings-selector-handlers.d.ts +3 -0
  1070. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -0
  1071. package/dist/modes/interactive/components/settings-selector-handlers.js +84 -0
  1072. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -0
  1073. package/dist/modes/interactive/components/settings-selector-items.d.ts +4 -0
  1074. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -0
  1075. package/dist/modes/interactive/components/settings-selector-items.js +211 -0
  1076. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -0
  1077. package/dist/modes/interactive/components/settings-selector-options.d.ts +6 -0
  1078. package/dist/modes/interactive/components/settings-selector-options.d.ts.map +1 -0
  1079. package/dist/modes/interactive/components/settings-selector-options.js +14 -0
  1080. package/dist/modes/interactive/components/settings-selector-options.js.map +1 -0
  1081. package/dist/modes/interactive/components/settings-selector-submenus.d.ts +44 -0
  1082. package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -0
  1083. package/dist/modes/interactive/components/settings-selector-submenus.js +228 -0
  1084. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -0
  1085. package/dist/modes/interactive/components/settings-selector-types.d.ts +67 -0
  1086. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -0
  1087. package/dist/modes/interactive/components/settings-selector-types.js +2 -0
  1088. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -0
  1089. package/dist/modes/interactive/components/settings-selector.d.ts +2 -63
  1090. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  1091. package/dist/modes/interactive/components/settings-selector.js +5 -538
  1092. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  1093. package/dist/modes/interactive/components/tree-selector-component.d.ts +21 -0
  1094. package/dist/modes/interactive/components/tree-selector-component.d.ts.map +1 -0
  1095. package/dist/modes/interactive/components/tree-selector-component.js +80 -0
  1096. package/dist/modes/interactive/components/tree-selector-component.js.map +1 -0
  1097. package/dist/modes/interactive/components/tree-selector-content.d.ts +8 -0
  1098. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -0
  1099. package/dist/modes/interactive/components/tree-selector-content.js +263 -0
  1100. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -0
  1101. package/dist/modes/interactive/components/tree-selector-help.d.ts +16 -0
  1102. package/dist/modes/interactive/components/tree-selector-help.d.ts.map +1 -0
  1103. package/dist/modes/interactive/components/tree-selector-help.js +103 -0
  1104. package/dist/modes/interactive/components/tree-selector-help.js.map +1 -0
  1105. package/dist/modes/interactive/components/tree-selector-label-input.d.ts +16 -0
  1106. package/dist/modes/interactive/components/tree-selector-label-input.d.ts.map +1 -0
  1107. package/dist/modes/interactive/components/tree-selector-label-input.js +46 -0
  1108. package/dist/modes/interactive/components/tree-selector-label-input.js.map +1 -0
  1109. package/dist/modes/interactive/components/tree-selector-list.d.ts +33 -0
  1110. package/dist/modes/interactive/components/tree-selector-list.d.ts.map +1 -0
  1111. package/dist/modes/interactive/components/tree-selector-list.js +336 -0
  1112. package/dist/modes/interactive/components/tree-selector-list.js.map +1 -0
  1113. package/dist/modes/interactive/components/tree-selector-model.d.ts +7 -0
  1114. package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -0
  1115. package/dist/modes/interactive/components/tree-selector-model.js +358 -0
  1116. package/dist/modes/interactive/components/tree-selector-model.js.map +1 -0
  1117. package/dist/modes/interactive/components/tree-selector-types.d.ts +57 -0
  1118. package/dist/modes/interactive/components/tree-selector-types.d.ts.map +1 -0
  1119. package/dist/modes/interactive/components/tree-selector-types.js +6 -0
  1120. package/dist/modes/interactive/components/tree-selector-types.js.map +1 -0
  1121. package/dist/modes/interactive/components/tree-selector-viewport.d.ts +10 -0
  1122. package/dist/modes/interactive/components/tree-selector-viewport.d.ts.map +1 -0
  1123. package/dist/modes/interactive/components/tree-selector-viewport.js +32 -0
  1124. package/dist/modes/interactive/components/tree-selector-viewport.js.map +1 -0
  1125. package/dist/modes/interactive/components/tree-selector.d.ts +2 -88
  1126. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  1127. package/dist/modes/interactive/components/tree-selector.js +1 -1200
  1128. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  1129. package/dist/modes/interactive/interactive-agent-events.d.ts +2 -0
  1130. package/dist/modes/interactive/interactive-agent-events.d.ts.map +1 -0
  1131. package/dist/modes/interactive/interactive-agent-events.js +370 -0
  1132. package/dist/modes/interactive/interactive-agent-events.js.map +1 -0
  1133. package/dist/modes/interactive/interactive-auth-login.d.ts +2 -0
  1134. package/dist/modes/interactive/interactive-auth-login.d.ts.map +1 -0
  1135. package/dist/modes/interactive/interactive-auth-login.js +214 -0
  1136. package/dist/modes/interactive/interactive-auth-login.js.map +1 -0
  1137. package/dist/modes/interactive/interactive-auth-routing.d.ts +2 -0
  1138. package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -0
  1139. package/dist/modes/interactive/interactive-auth-routing.js +128 -0
  1140. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -0
  1141. package/dist/modes/interactive/interactive-autocomplete.d.ts +2 -0
  1142. package/dist/modes/interactive/interactive-autocomplete.d.ts.map +1 -0
  1143. package/dist/modes/interactive/interactive-autocomplete.js +140 -0
  1144. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -0
  1145. package/dist/modes/interactive/interactive-bash-compact.d.ts +2 -0
  1146. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -0
  1147. package/dist/modes/interactive/interactive-bash-compact.js +112 -0
  1148. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -0
  1149. package/dist/modes/interactive/interactive-editor-actions.d.ts +2 -0
  1150. package/dist/modes/interactive/interactive-editor-actions.d.ts.map +1 -0
  1151. package/dist/modes/interactive/interactive-editor-actions.js +131 -0
  1152. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -0
  1153. package/dist/modes/interactive/interactive-extension-context.d.ts +2 -0
  1154. package/dist/modes/interactive/interactive-extension-context.d.ts.map +1 -0
  1155. package/dist/modes/interactive/interactive-extension-context.js +159 -0
  1156. package/dist/modes/interactive/interactive-extension-context.js.map +1 -0
  1157. package/dist/modes/interactive/interactive-extension-custom-ui.d.ts +2 -0
  1158. package/dist/modes/interactive/interactive-extension-custom-ui.d.ts.map +1 -0
  1159. package/dist/modes/interactive/interactive-extension-custom-ui.js +208 -0
  1160. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -0
  1161. package/dist/modes/interactive/interactive-extension-dialogs.d.ts +2 -0
  1162. package/dist/modes/interactive/interactive-extension-dialogs.d.ts.map +1 -0
  1163. package/dist/modes/interactive/interactive-extension-dialogs.js +162 -0
  1164. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -0
  1165. package/dist/modes/interactive/interactive-extension-runtime.d.ts +2 -0
  1166. package/dist/modes/interactive/interactive-extension-runtime.d.ts.map +1 -0
  1167. package/dist/modes/interactive/interactive-extension-runtime.js +179 -0
  1168. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -0
  1169. package/dist/modes/interactive/interactive-extension-widgets.d.ts +2 -0
  1170. package/dist/modes/interactive/interactive-extension-widgets.d.ts.map +1 -0
  1171. package/dist/modes/interactive/interactive-extension-widgets.js +113 -0
  1172. package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -0
  1173. package/dist/modes/interactive/interactive-hotkeys-debug.d.ts +2 -0
  1174. package/dist/modes/interactive/interactive-hotkeys-debug.d.ts.map +1 -0
  1175. package/dist/modes/interactive/interactive-hotkeys-debug.js +186 -0
  1176. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -0
  1177. package/dist/modes/interactive/interactive-input-handling.d.ts +2 -0
  1178. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -0
  1179. package/dist/modes/interactive/interactive-input-handling.js +275 -0
  1180. package/dist/modes/interactive/interactive-input-handling.js.map +1 -0
  1181. package/dist/modes/interactive/interactive-mode-base.d.ts +103 -0
  1182. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -0
  1183. package/dist/modes/interactive/interactive-mode-base.js +130 -0
  1184. package/dist/modes/interactive/interactive-mode-base.js.map +1 -0
  1185. package/dist/modes/interactive/interactive-mode-deps.d.ts +81 -0
  1186. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -0
  1187. package/dist/modes/interactive/interactive-mode-deps.js +74 -0
  1188. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -0
  1189. package/dist/modes/interactive/interactive-mode-helpers.d.ts +21 -0
  1190. package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -0
  1191. package/dist/modes/interactive/interactive-mode-helpers.js +77 -0
  1192. package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -0
  1193. package/dist/modes/interactive/interactive-mode-surface.d.ts +313 -0
  1194. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -0
  1195. package/dist/modes/interactive/interactive-mode-surface.js +2 -0
  1196. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -0
  1197. package/dist/modes/interactive/interactive-mode-types.d.ts +29 -0
  1198. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -0
  1199. package/dist/modes/interactive/interactive-mode-types.js +2 -0
  1200. package/dist/modes/interactive/interactive-mode-types.js.map +1 -0
  1201. package/dist/modes/interactive/interactive-mode.d.ts +30 -404
  1202. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1203. package/dist/modes/interactive/interactive-mode.js +29 -5260
  1204. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1205. package/dist/modes/interactive/interactive-model-routing.d.ts +2 -0
  1206. package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -0
  1207. package/dist/modes/interactive/interactive-model-routing.js +269 -0
  1208. package/dist/modes/interactive/interactive-model-routing.js.map +1 -0
  1209. package/dist/modes/interactive/interactive-process-lifecycle.d.ts +2 -0
  1210. package/dist/modes/interactive/interactive-process-lifecycle.d.ts.map +1 -0
  1211. package/dist/modes/interactive/interactive-process-lifecycle.js +189 -0
  1212. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -0
  1213. package/dist/modes/interactive/interactive-queueing.d.ts +2 -0
  1214. package/dist/modes/interactive/interactive-queueing.d.ts.map +1 -0
  1215. package/dist/modes/interactive/interactive-queueing.js +163 -0
  1216. package/dist/modes/interactive/interactive-queueing.js.map +1 -0
  1217. package/dist/modes/interactive/interactive-render-chat.d.ts +2 -0
  1218. package/dist/modes/interactive/interactive-render-chat.d.ts.map +1 -0
  1219. package/dist/modes/interactive/interactive-render-chat.js +170 -0
  1220. package/dist/modes/interactive/interactive-render-chat.js.map +1 -0
  1221. package/dist/modes/interactive/interactive-resource-disclosure.d.ts +2 -0
  1222. package/dist/modes/interactive/interactive-resource-disclosure.d.ts.map +1 -0
  1223. package/dist/modes/interactive/interactive-resource-disclosure.js +101 -0
  1224. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -0
  1225. package/dist/modes/interactive/interactive-resource-paths.d.ts +2 -0
  1226. package/dist/modes/interactive/interactive-resource-paths.d.ts.map +1 -0
  1227. package/dist/modes/interactive/interactive-resource-paths.js +228 -0
  1228. package/dist/modes/interactive/interactive-resource-paths.js.map +1 -0
  1229. package/dist/modes/interactive/interactive-resource-rendering.d.ts +2 -0
  1230. package/dist/modes/interactive/interactive-resource-rendering.d.ts.map +1 -0
  1231. package/dist/modes/interactive/interactive-resource-rendering.js +181 -0
  1232. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -0
  1233. package/dist/modes/interactive/interactive-selectors.d.ts +2 -0
  1234. package/dist/modes/interactive/interactive-selectors.d.ts.map +1 -0
  1235. package/dist/modes/interactive/interactive-selectors.js +198 -0
  1236. package/dist/modes/interactive/interactive-selectors.js.map +1 -0
  1237. package/dist/modes/interactive/interactive-session-routing.d.ts +2 -0
  1238. package/dist/modes/interactive/interactive-session-routing.d.ts.map +1 -0
  1239. package/dist/modes/interactive/interactive-session-routing.js +232 -0
  1240. package/dist/modes/interactive/interactive-session-routing.js.map +1 -0
  1241. package/dist/modes/interactive/interactive-session-runtime.d.ts +2 -0
  1242. package/dist/modes/interactive/interactive-session-runtime.d.ts.map +1 -0
  1243. package/dist/modes/interactive/interactive-session-runtime.js +131 -0
  1244. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -0
  1245. package/dist/modes/interactive/interactive-slash-commands.d.ts +2 -0
  1246. package/dist/modes/interactive/interactive-slash-commands.d.ts.map +1 -0
  1247. package/dist/modes/interactive/interactive-slash-commands.js +338 -0
  1248. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -0
  1249. package/dist/modes/interactive/interactive-startup.d.ts +2 -0
  1250. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -0
  1251. package/dist/modes/interactive/interactive-startup.js +348 -0
  1252. package/dist/modes/interactive/interactive-startup.js.map +1 -0
  1253. package/dist/modes/interactive/theme/color-utils.d.ts +20 -0
  1254. package/dist/modes/interactive/theme/color-utils.d.ts.map +1 -0
  1255. package/dist/modes/interactive/theme/color-utils.js +204 -0
  1256. package/dist/modes/interactive/theme/color-utils.js.map +1 -0
  1257. package/dist/modes/interactive/theme/export-colors.d.ts +19 -0
  1258. package/dist/modes/interactive/theme/export-colors.d.ts.map +1 -0
  1259. package/dist/modes/interactive/theme/export-colors.js +69 -0
  1260. package/dist/modes/interactive/theme/export-colors.js.map +1 -0
  1261. package/dist/modes/interactive/theme/global-theme.d.ts +12 -0
  1262. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -0
  1263. package/dist/modes/interactive/theme/global-theme.js +150 -0
  1264. package/dist/modes/interactive/theme/global-theme.js.map +1 -0
  1265. package/dist/modes/interactive/theme/terminal-detection.d.ts +30 -0
  1266. package/dist/modes/interactive/theme/terminal-detection.d.ts.map +1 -0
  1267. package/dist/modes/interactive/theme/terminal-detection.js +89 -0
  1268. package/dist/modes/interactive/theme/terminal-detection.js.map +1 -0
  1269. package/dist/modes/interactive/theme/theme-class.d.ts +30 -0
  1270. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -0
  1271. package/dist/modes/interactive/theme/theme-class.js +83 -0
  1272. package/dist/modes/interactive/theme/theme-class.js.map +1 -0
  1273. package/dist/modes/interactive/theme/theme-loading.d.ts +17 -0
  1274. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -0
  1275. package/dist/modes/interactive/theme/theme-loading.js +155 -0
  1276. package/dist/modes/interactive/theme/theme-loading.js.map +1 -0
  1277. package/dist/modes/interactive/theme/theme-parse.d.ts +5 -0
  1278. package/dist/modes/interactive/theme/theme-parse.d.ts.map +1 -0
  1279. package/dist/modes/interactive/theme/theme-parse.js +52 -0
  1280. package/dist/modes/interactive/theme/theme-parse.js.map +1 -0
  1281. package/dist/modes/interactive/theme/theme-schema.d.ts +255 -0
  1282. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -0
  1283. package/dist/modes/interactive/theme/theme-schema.js +78 -0
  1284. package/dist/modes/interactive/theme/theme-schema.js.map +1 -0
  1285. package/dist/modes/interactive/theme/theme.d.ts +6 -108
  1286. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1287. package/dist/modes/interactive/theme/theme.js +6 -1065
  1288. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1289. package/dist/modes/interactive/theme/tui-theme.d.ts +15 -0
  1290. package/dist/modes/interactive/theme/tui-theme.d.ts.map +1 -0
  1291. package/dist/modes/interactive/theme/tui-theme.js +199 -0
  1292. package/dist/modes/interactive/theme/tui-theme.js.map +1 -0
  1293. package/dist/modes/rpc/rpc-client.d.ts +1 -61
  1294. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  1295. package/dist/modes/rpc/rpc-client.js +1 -72
  1296. package/dist/modes/rpc/rpc-client.js.map +1 -1
  1297. package/dist/modes/rpc/rpc-command-handler.d.ts +14 -0
  1298. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -0
  1299. package/dist/modes/rpc/rpc-command-handler.js +226 -0
  1300. package/dist/modes/rpc/rpc-command-handler.js.map +1 -0
  1301. package/dist/modes/rpc/rpc-extension-ui.d.ts +15 -0
  1302. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -0
  1303. package/dist/modes/rpc/rpc-extension-ui.js +196 -0
  1304. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -0
  1305. package/dist/modes/rpc/rpc-input.d.ts +12 -0
  1306. package/dist/modes/rpc/rpc-input.d.ts.map +1 -0
  1307. package/dist/modes/rpc/rpc-input.js +54 -0
  1308. package/dist/modes/rpc/rpc-input.js.map +1 -0
  1309. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1310. package/dist/modes/rpc/rpc-mode.js +43 -607
  1311. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1312. package/dist/modes/rpc/rpc-responses.d.ts +8 -0
  1313. package/dist/modes/rpc/rpc-responses.d.ts.map +1 -0
  1314. package/dist/modes/rpc/rpc-responses.js +27 -0
  1315. package/dist/modes/rpc/rpc-responses.js.map +1 -0
  1316. package/dist/modes/rpc/rpc-session-binding.d.ts +25 -0
  1317. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -0
  1318. package/dist/modes/rpc/rpc-session-binding.js +70 -0
  1319. package/dist/modes/rpc/rpc-session-binding.js.map +1 -0
  1320. package/dist/package-manager-cli-parser.d.ts +28 -0
  1321. package/dist/package-manager-cli-parser.d.ts.map +1 -0
  1322. package/dist/package-manager-cli-parser.js +269 -0
  1323. package/dist/package-manager-cli-parser.js.map +1 -0
  1324. package/dist/package-manager-cli.d.ts +0 -1
  1325. package/dist/package-manager-cli.d.ts.map +1 -1
  1326. package/dist/package-manager-cli.js +2 -267
  1327. package/dist/package-manager-cli.js.map +1 -1
  1328. package/dist/utils/git.d.ts.map +1 -1
  1329. package/dist/utils/git.js +10 -0
  1330. package/dist/utils/git.js.map +1 -1
  1331. package/dist/utils/version-check.d.ts +1 -0
  1332. package/dist/utils/version-check.d.ts.map +1 -1
  1333. package/dist/utils/version-check.js +17 -0
  1334. package/dist/utils/version-check.js.map +1 -1
  1335. package/docs/development.md +4 -0
  1336. package/docs/sessions.md +4 -0
  1337. package/docs/workflows.md +13 -7
  1338. package/examples/extensions/custom-provider-anthropic/index.ts +1 -106
  1339. package/examples/extensions/gondolin/index.ts +0 -23
  1340. package/examples/extensions/gondolin/package-lock.json +183 -183
  1341. package/examples/extensions/overlay-qa-animation-components.ts +255 -0
  1342. package/examples/extensions/overlay-qa-focus-components.ts +222 -0
  1343. package/examples/extensions/overlay-qa-position-components.ts +433 -0
  1344. package/examples/extensions/overlay-qa-shared.ts +37 -0
  1345. package/examples/extensions/overlay-qa-streaming-input-components.ts +205 -0
  1346. package/examples/extensions/overlay-qa-tests.ts +17 -1156
  1347. package/examples/extensions/overlay-qa-toggle-passive-components.ts +169 -0
  1348. package/examples/extensions/space-invaders.ts +0 -60
  1349. package/examples/extensions/subagent/display.ts +148 -0
  1350. package/examples/extensions/subagent/index.ts +11 -858
  1351. package/examples/extensions/subagent/render.ts +383 -0
  1352. package/examples/extensions/subagent/runner.ts +252 -0
  1353. package/examples/extensions/subagent/schemas.ts +59 -0
  1354. package/examples/extensions/subagent/types.ts +36 -0
  1355. package/examples/extensions/tic-tac-toe-instructions.ts +65 -0
  1356. package/examples/extensions/tic-tac-toe-rendering.ts +414 -0
  1357. package/examples/extensions/tic-tac-toe-state.ts +158 -0
  1358. package/examples/extensions/tic-tac-toe.ts +92 -754
  1359. package/examples/rpc-extension-ui-components.ts +189 -0
  1360. package/examples/rpc-extension-ui.ts +2 -179
  1361. package/package.json +4 -4
@@ -7,1345 +7,16 @@
7
7
  * prompt abstraction.
8
8
  */
9
9
 
10
- import { mkdir, writeFile } from "node:fs/promises";
11
- import { dirname, isAbsolute, resolve } from "node:path";
12
- import {
13
- createStructuredOutputCapture,
14
- createStructuredOutputTool,
15
- shouldApplyCodexFastModeForScope,
16
- SessionManager,
17
- type AgentSession,
18
- type CreateAgentSessionOptions,
19
- type PromptOptions,
20
- type StructuredOutputCapture,
21
- } from "@bastani/atomic";
22
- import type {
23
- CompleteStageOpts,
24
- StageContext,
25
- StageExecutionMeta,
26
- StageOptions,
27
- StageOutputOptions,
28
- StagePromptOptions,
29
- WorkflowMaxOutput,
30
- WorkflowModelAttempt,
31
- WorkflowExecutionMode,
32
- WorkflowModelCatalogPort,
33
- } from "../../shared/types.js";
34
- import type { Static, TSchema } from "typebox";
35
- import {
36
- buildModelCandidatesFromCatalog,
37
- errorMessage,
38
- isRetryableModelFailure,
39
- workflowModelId,
40
- type WorkflowResolvedModelCandidate,
41
- } from "../shared/model-fallback.js";
42
-
43
- export interface StageSessionRuntime {
44
- prompt(text: string, options?: PromptOptions): Promise<string | void>;
45
- steer(text: string): Promise<void>;
46
- followUp(text: string): Promise<void>;
47
- subscribe(listener: (event: Parameters<AgentSession["subscribe"]>[0] extends (event: infer T) => void ? T : never) => void): () => void;
48
- readonly sessionFile: string | undefined;
49
- readonly sessionId: string;
50
- setModel(model: Parameters<AgentSession["setModel"]>[0]): Promise<void>;
51
- setThinkingLevel(level: Parameters<AgentSession["setThinkingLevel"]>[0]): void;
52
- cycleModel(): ReturnType<AgentSession["cycleModel"]>;
53
- cycleThinkingLevel(): ReturnType<AgentSession["cycleThinkingLevel"]>;
54
- readonly agent: AgentSession["agent"];
55
- readonly model: AgentSession["model"];
56
- readonly thinkingLevel: AgentSession["thinkingLevel"];
57
- readonly messages: AgentSession["messages"];
58
- readonly isStreaming: AgentSession["isStreaming"];
59
- /** Number of SDK-level queued steering/follow-up messages, when supported. */
60
- readonly pendingMessageCount?: number;
61
- /** Settings manager supplied by the Atomic SDK when the adapter did not pre-create one. */
62
- readonly settingsManager?: WorkflowFastModeSettingsManager;
63
- navigateTree: AgentSession["navigateTree"];
64
- compact: AgentSession["compact"];
65
- abortCompaction(): void;
66
- abort(): Promise<void>;
67
- dispose(): void | Promise<void>;
68
- getLastAssistantText?: () => string | undefined;
69
- }
70
-
71
- export type StageSessionCreateOptions = CreateAgentSessionOptions & Pick<StageOptions, "mcp" | "fallbackModels" | "fallbackThinkingLevels">;
72
-
73
- type WorkflowFastModeSettings = {
74
- readonly chat: boolean;
75
- readonly workflow: boolean;
76
- };
77
-
78
- type WorkflowFastModeSettingsManager = {
79
- getCodexFastModeSettings(): WorkflowFastModeSettings;
80
- };
81
-
82
- export interface StageSessionCreateResult {
83
- readonly session: StageSessionRuntime;
84
- readonly settingsManager?: WorkflowFastModeSettingsManager;
85
- }
86
-
87
- export interface AgentSessionAdapter {
88
- create(options: StageSessionCreateOptions, meta?: StageExecutionMeta): Promise<StageSessionRuntime | StageSessionCreateResult>;
89
- }
90
-
91
- export interface StageModelFallbackMeta {
92
- readonly model?: string;
93
- readonly fastMode?: boolean;
94
- readonly attemptedModels?: readonly string[];
95
- readonly modelAttempts?: readonly WorkflowModelAttempt[];
96
- readonly warnings?: readonly string[];
97
- }
98
-
99
- export interface PromptAdapter {
100
- prompt(text: string, meta?: StageExecutionMeta): Promise<string>;
101
- }
102
-
103
- export interface CompleteAdapter {
104
- complete(text: string, opts?: CompleteStageOpts, meta?: StageExecutionMeta): Promise<string>;
105
- }
106
-
107
- export interface StageAdapters {
108
- agentSession?: AgentSessionAdapter;
109
- prompt?: PromptAdapter;
110
- complete?: CompleteAdapter;
111
- }
112
-
113
- export interface StageRunnerOpts {
114
- stageId: string;
115
- stageName: string;
116
- adapters: StageAdapters;
117
- /** Options passed to ctx.stage(name, options?). Forwarded to createAgentSession except mcp. */
118
- stageOptions?: StageOptions;
119
- /** Run ID of the containing workflow execution — forwarded to session adapter metadata. */
120
- runId: string;
121
- /** AbortSignal from the executor's own AbortController — forwarded to session adapter metadata. */
122
- signal?: AbortSignal;
123
- /** Optional model catalog used for fallback validation/resolution. */
124
- models?: WorkflowModelCatalogPort;
125
- /** Runtime execution mode forwarded to stage session adapters. */
126
- executionMode?: WorkflowExecutionMode;
127
- /** Internal: notifies the executor when an in-flight fallback changes model/fast metadata. */
128
- onModelFallbackMetaChange?: (meta: StageModelFallbackMeta) => void;
129
- }
130
-
131
- export interface InternalStageContext extends StageContext {
132
- /** Internal cleanup hook; intentionally omitted from the public StageContext type. */
133
- __dispose(): Promise<void>;
134
- /** Internal result snapshot hook for the workflow store/TUI. */
135
- __getLastAssistantText(): string | undefined;
136
- getLastAssistantText(): string | undefined;
137
- /**
138
- * Internal: eagerly create the underlying SDK AgentSession without
139
- * sending a prompt. Used by the live stage-control registry when a
140
- * user attaches to a stage and types their first message before the
141
- * workflow body's natural first `prompt()` lands.
142
- */
143
- __ensureSession(): Promise<void>;
144
- /** Internal: reopen an archived stage transcript before post-terminal follow-up. */
145
- __ensureSessionFromFile(sessionFile: string): Promise<void>;
146
- /**
147
- * Internal: snapshot of currently-known SDK session metadata. Returns
148
- * `undefined` keys when the session has not yet been created.
149
- */
150
- __sessionMeta(): { sessionId: string | undefined; sessionFile: string | undefined };
151
- /** Internal: live coding-agent session when the adapter returned one. */
152
- __agentSession(): AgentSession | undefined;
153
- /** Internal: SDK queued steering/follow-up message count, when available. */
154
- __pendingMessageCount(): number;
155
- /** Internal: selected/effective model and fallback attempt metadata. */
156
- __modelFallbackMeta(): StageModelFallbackMeta;
157
- /**
158
- * Internal: register a controlled-pause request. The executor's
159
- * tracked stage call uses this to distinguish a user-initiated pause
160
- * from an unrelated abort and to wait for `__resume()` before
161
- * resolving the awaiter.
162
- */
163
- __requestPause(): Promise<void>;
164
- /**
165
- * Internal: complete a pending controlled pause. If `message` is
166
- * provided it is sent to the SDK session before the awaiter resolves.
167
- */
168
- __resume(message?: string): Promise<void>;
169
- /** Internal: true while a controlled pause is in flight. */
170
- __isPaused(): boolean;
171
- }
172
-
173
- function stripWorkflowOnlyOptions(options: StageOptions | undefined): CreateAgentSessionOptions {
174
- if (!options) return {};
175
- const {
176
- schema: _schema,
177
- mcp: _mcp,
178
- fallbackModels: _fallbackModels,
179
- fallbackThinkingLevels: _fallbackThinkingLevels,
180
- context,
181
- forkFromSessionFile,
182
- sessionDir,
183
- gitWorktreeDir: _gitWorktreeDir,
184
- baseBranch: _baseBranch,
185
- ...sessionOptions
186
- } = options;
187
- if (sessionOptions.sessionManager === undefined) {
188
- const cwd = sessionOptions.cwd ?? process.cwd();
189
- if (context === "fork" && forkFromSessionFile !== undefined) {
190
- sessionOptions.sessionManager = SessionManager.forkFrom(forkFromSessionFile, cwd, sessionDir);
191
- } else if (sessionDir !== undefined) {
192
- sessionOptions.sessionManager = SessionManager.create(cwd, sessionDir);
193
- }
194
- }
195
- return sessionOptions as CreateAgentSessionOptions;
196
- }
197
-
198
- type AgentSessionConsumer = "prompt" | "complete";
199
-
200
- function missingAdapter(consumer: AgentSessionConsumer): never {
201
- if (consumer === "complete") {
202
- throw new Error(
203
- "atomic-workflows: ctx.complete requires either RunOpts.adapters.complete or RunOpts.adapters.agentSession",
204
- );
205
- }
206
- throw new Error(
207
- "atomic-workflows: prompt adapter not configured — provide an AgentSessionAdapter via RunOpts.adapters.agentSession",
208
- );
209
- }
210
-
211
- function unavailableSync(property: string): never {
212
- throw new Error(
213
- `atomic-workflows: stage AgentSession property "${property}" is unavailable until the SDK session has been created`,
214
- );
215
- }
216
-
217
- type TextLikeContent = {
218
- readonly type?: string;
219
- readonly text?: string;
220
- };
221
-
222
- type MessageWithTextContent = {
223
- readonly content?: string | readonly TextLikeContent[];
224
- };
225
-
226
- function extractMessageText(message: AgentSession["messages"][number]): string {
227
- const { content } = message as MessageWithTextContent;
228
- if (typeof content === "string") return content;
229
- if (Array.isArray(content)) {
230
- return content
231
- .map((block) => (block.type === "text" && typeof block.text === "string" ? block.text : ""))
232
- .filter(Boolean)
233
- .join("");
234
- }
235
- return "";
236
- }
237
-
238
- function lastAssistantTextFromMessages(messages: AgentSession["messages"]): string | undefined {
239
- for (let index = messages.length - 1; index >= 0; index -= 1) {
240
- const message = messages[index];
241
- // Only assistant prose is a valid non-terminating turn output. A tool
242
- // result is the turn output ONLY when its tool terminated the turn, which
243
- // is handled separately by `terminatingToolResultText`.
244
- if (!message || message.role !== "assistant") continue;
245
- const text = extractMessageText(message).trim();
246
- if (text) return text;
247
- }
248
- return undefined;
249
- }
250
-
251
- function messageStopReason(message: AgentSession["messages"][number]): string | undefined {
252
- const record = message as { readonly stopReason?: unknown };
253
- return typeof record.stopReason === "string" ? record.stopReason : undefined;
254
- }
255
-
256
- function normalizedStopReason(stopReason: string | undefined): string | undefined {
257
- return stopReason?.toLowerCase().replace(/[_-]+/g, "");
258
- }
259
-
260
- function isTerminalAssistantFailureStopReason(stopReason: string | undefined): boolean {
261
- const normalized = normalizedStopReason(stopReason);
262
- return normalized === "error" || normalized === "aborted";
263
- }
264
-
265
- function isCleanAssistantStopReason(stopReason: string | undefined): boolean {
266
- const normalized = normalizedStopReason(stopReason);
267
- return normalized === "stop" || normalized === "tooluse" || normalized === "length";
268
- }
269
-
270
- function assistantErrorMessage(message: AgentSession["messages"][number]): string | undefined {
271
- const record = message as { readonly errorMessage?: unknown };
272
- return typeof record.errorMessage === "string" && record.errorMessage.trim().length > 0
273
- ? record.errorMessage
274
- : undefined;
275
- }
276
-
277
- function latestTerminalAssistantFailureSince(
278
- messages: AgentSession["messages"],
279
- startIndex: number,
280
- ): AgentSession["messages"][number] | undefined {
281
- for (let index = messages.length - 1; index >= startIndex; index -= 1) {
282
- const message = messages[index];
283
- if (!message || message.role !== "assistant") continue;
284
- const stopReason = messageStopReason(message);
285
- if (isTerminalAssistantFailureStopReason(stopReason)) return message;
286
- if (isCleanAssistantStopReason(stopReason)) return undefined;
287
- if (assistantErrorMessage(message) === undefined && extractMessageText(message).trim().length > 0) {
288
- return undefined;
289
- }
290
- }
291
- return undefined;
292
- }
293
-
294
- class WorkflowPromptModelFailure extends Error {
295
- override readonly cause: unknown;
296
-
297
- constructor(cause: unknown) {
298
- super(errorMessage(cause));
299
- this.name = "WorkflowPromptModelFailure";
300
- this.cause = cause;
301
- }
302
- }
303
-
304
- /**
305
- * When an agent turn ends on a tool that returned `terminate: true`, control
306
- * returns with the tool result as the final conversational message and no
307
- * trailing assistant response (see the structured-output contract in the
308
- * Atomic extension docs). That tool result is the deterministic output of the
309
- * turn, so it must win over any prose the model emitted *before* the tool call
310
- * in the same assistant message (which `getLastAssistantText()` would otherwise
311
- * surface). This keeps terminating structured-output tools such as the `goal`
312
- * and `ralph` review gates' `review_decision` tool deterministic regardless of
313
- * surrounding narration.
314
- *
315
- * Returns the trailing tool-result text ONLY when the most recent
316
- * conversational message is a tool result whose tool call actually returned
317
- * `terminate: true` (tracked at runtime from the session's tool_execution_end
318
- * events — see `terminatingToolCallIds`). Returns `undefined` for a turn that
319
- * ended on an assistant response, OR on a tool result from a non-terminating
320
- * tool (e.g. a turn aborted/errored right after a tool call) — both fall back
321
- * to the last assistant message.
322
- */
323
- function terminatingToolResultText(
324
- messages: AgentSession["messages"],
325
- terminatingToolCallIds: ReadonlySet<string>,
326
- ): string | undefined {
327
- for (let index = messages.length - 1; index >= 0; index -= 1) {
328
- const message = messages[index];
329
- if (!message) continue;
330
- if (message.role === "toolResult") {
331
- // The trailing message is a tool result. It is the deterministic turn
332
- // output only if THIS tool call returned `terminate: true`; otherwise the
333
- // turn ended on this tool for another reason (abort/error) and the last
334
- // assistant message is the real output.
335
- const toolCallId = (message as { toolCallId?: unknown }).toolCallId;
336
- if (typeof toolCallId !== "string" || !terminatingToolCallIds.has(toolCallId)) {
337
- return undefined;
338
- }
339
- const text = extractMessageText(message).trim();
340
- return text.length > 0 ? text : undefined;
341
- }
342
- if (message.role === "assistant") return undefined;
343
- // Skip non-conversational roles (system/user) while locating the tail.
344
- }
345
- return undefined;
346
- }
347
-
348
- /**
349
- * A stage session backed by a real Atomic `AgentSession` exposes its
350
- * `extensionRunner`. When workflow wiring binds extensions to a stage session it
351
- * replays the `session_start` lifecycle (see wiring.ts `bindExtensions`), so
352
- * extensions such as MCP begin per-session initialization. Tearing that session
353
- * down with `dispose()` alone invalidates the extension runtime WITHOUT emitting
354
- * `session_shutdown`, so those extensions never receive a graceful teardown
355
- * signal: MCP, for example, logs a spurious stale-context "initialization
356
- * failed" error when its deferred init races with disposal, and leaves any child
357
- * MCP servers running.
358
- *
359
- * The test stub session (createTestAgentSession) has no `extensionRunner`, so the
360
- * capability is optional and feature-detected at runtime.
361
- */
362
- type StageSessionExtensionRunner = {
363
- hasHandlers(eventType: string): boolean;
364
- emit(event: { readonly type: "session_shutdown"; readonly reason: "quit" }): Promise<unknown>;
365
- };
366
-
367
- function stageSessionExtensionRunner(
368
- current: StageSessionRuntime,
369
- ): StageSessionExtensionRunner | undefined {
370
- const runner = (current as StageSessionRuntime & { extensionRunner?: StageSessionExtensionRunner })
371
- .extensionRunner;
372
- if (runner && typeof runner.hasHandlers === "function" && typeof runner.emit === "function") {
373
- return runner;
374
- }
375
- return undefined;
376
- }
377
-
378
- /**
379
- * Dispose a stage session, mirroring the host `AgentSessionRuntime` teardown:
380
- * emit `session_shutdown` before `dispose()` whenever the session exposes a
381
- * compatible extension runner, so extensions tear down per-session resources
382
- * (and bump their lifecycle generation) instead of being silently invalidated.
383
- * A throwing shutdown handler must never strand the session, so disposal always
384
- * runs.
385
- */
386
- async function disposeStageSession(current: StageSessionRuntime | undefined): Promise<void> {
387
- if (!current) return;
388
- const runner = stageSessionExtensionRunner(current);
389
- if (runner?.hasHandlers("session_shutdown")) {
390
- try {
391
- await runner.emit({ type: "session_shutdown", reason: "quit" });
392
- } catch (error) {
393
- console.error("atomic-workflows: stage session_shutdown handler failed", error);
394
- }
395
- }
396
- await current.dispose();
397
- }
398
-
399
- function asAgentSession(activeSession: StageSessionRuntime | undefined): AgentSession | undefined {
400
- if (!activeSession) return undefined;
401
- const candidate = activeSession as StageSessionRuntime & Partial<Pick<AgentSession, "state" | "sessionManager" | "modelRegistry" | "getContextUsage">>;
402
- if (
403
- candidate.state !== undefined &&
404
- candidate.sessionManager !== undefined &&
405
- candidate.modelRegistry !== undefined &&
406
- typeof candidate.getContextUsage === "function"
407
- ) {
408
- return candidate as AgentSession;
409
- }
410
- return undefined;
411
- }
412
-
413
- function lastAssistantTextFromSession(
414
- activeSession: StageSessionRuntime | undefined,
415
- fallback: string | undefined,
416
- terminatingToolCallIds: ReadonlySet<string>,
417
- ): string | undefined {
418
- if (!activeSession) return fallback;
419
- // A tool that returned `terminate: true` ends the turn with its tool result
420
- // as the final message; that result is the deterministic stage output and
421
- // wins over prose emitted before the terminating tool call. Detection is by
422
- // the tool call's actual runtime terminate flag — NOT merely "the last
423
- // message is a tool result".
424
- const terminatingText = terminatingToolResultText(activeSession.messages, terminatingToolCallIds);
425
- if (terminatingText !== undefined) return terminatingText;
426
- // Otherwise the turn output is the last assistant message — never a tool
427
- // result from a non-terminating tool.
428
- const direct = activeSession.getLastAssistantText?.();
429
- if (direct !== undefined && direct.trim()) return direct;
430
- return lastAssistantTextFromMessages(activeSession.messages) ?? direct ?? fallback;
431
- }
432
-
433
- const DEFAULT_MAX_OUTPUT_BYTES = 200 * 1024;
434
- const DEFAULT_MAX_OUTPUT_LINES = 5000;
435
-
436
- function normalizeMaxOutput(maxOutput: WorkflowMaxOutput | undefined): Required<WorkflowMaxOutput> {
437
- return {
438
- bytes: maxOutput?.bytes ?? DEFAULT_MAX_OUTPUT_BYTES,
439
- lines: maxOutput?.lines ?? DEFAULT_MAX_OUTPUT_LINES,
440
- };
441
- }
442
-
443
- function truncateByLines(text: string, maxLines: number): { text: string; truncated: boolean } {
444
- if (!Number.isFinite(maxLines) || maxLines <= 0) return { text: "", truncated: text.length > 0 };
445
- const lines = text.split(/\r?\n/);
446
- if (lines.length <= maxLines) return { text, truncated: false };
447
- return { text: lines.slice(0, maxLines).join("\n"), truncated: true };
448
- }
449
-
450
- function truncateByBytes(text: string, maxBytes: number): { text: string; truncated: boolean } {
451
- if (!Number.isFinite(maxBytes) || maxBytes <= 0) return { text: "", truncated: text.length > 0 };
452
- if (Buffer.byteLength(text, "utf8") <= maxBytes) return { text, truncated: false };
453
-
454
- let low = 0;
455
- let high = text.length;
456
- while (low < high) {
457
- const mid = Math.ceil((low + high) / 2);
458
- if (Buffer.byteLength(text.slice(0, mid), "utf8") <= maxBytes) low = mid;
459
- else high = mid - 1;
460
- }
461
- return { text: text.slice(0, low), truncated: true };
462
- }
463
-
464
- function truncateOutput(text: string, maxOutput: WorkflowMaxOutput | undefined): string {
465
- const limits = normalizeMaxOutput(maxOutput);
466
- const byLines = truncateByLines(text, limits.lines);
467
- const byBytes = truncateByBytes(byLines.text, limits.bytes);
468
- if (!byLines.truncated && !byBytes.truncated) return text;
469
- return `${byBytes.text}\n\n[workflow output truncated; limits: ${limits.bytes} bytes, ${limits.lines} lines]`;
470
- }
471
-
472
- function countLines(text: string): number {
473
- if (!text) return 0;
474
- const newlineMatches = text.match(/\r\n|\r|\n/g);
475
- return (newlineMatches?.length ?? 0) + (/[\r\n]$/.test(text) ? 0 : 1);
476
- }
477
-
478
- function formatByteSize(bytes: number): string {
479
- if (bytes < 1024) return `${bytes} B`;
480
- const units = ["KB", "MB", "GB", "TB"];
481
- let value = bytes / 1024;
482
- let unitIndex = 0;
483
- while (value >= 1024 && unitIndex < units.length - 1) {
484
- value /= 1024;
485
- unitIndex += 1;
486
- }
487
- return `${value.toFixed(1)} ${units[unitIndex]}`;
488
- }
489
-
490
- function savedOutputReference(outputPath: string, fullOutput: string): string {
491
- const absolutePath = resolve(outputPath);
492
- const bytes = Buffer.byteLength(fullOutput, "utf8");
493
- const lines = countLines(fullOutput);
494
- return `Output saved to: ${absolutePath} (${formatByteSize(bytes)}, ${lines} ${lines === 1 ? "line" : "lines"}). Read this file if needed.`;
495
- }
496
-
497
- function resolveOutputPath(
498
- output: string | false | undefined,
499
- runtimeCwd: string,
500
- requestedCwd: string | undefined,
501
- ): string | undefined {
502
- if (typeof output !== "string" || output.length === 0) return undefined;
503
- if (isAbsolute(output)) return output;
504
- const baseCwd = requestedCwd === undefined
505
- ? runtimeCwd
506
- : isAbsolute(requestedCwd)
507
- ? requestedCwd
508
- : resolve(runtimeCwd, requestedCwd);
509
- return resolve(baseCwd, output);
510
- }
511
-
512
- function splitPromptOptions(options: StagePromptOptions | undefined): {
513
- sdkOptions: PromptOptions | undefined;
514
- outputOptions: StageOutputOptions;
515
- } {
516
- if (!options) return { sdkOptions: undefined, outputOptions: {} };
517
- const sdkOptions: PromptOptions = {};
518
- if (options.expandPromptTemplates !== undefined) sdkOptions.expandPromptTemplates = options.expandPromptTemplates;
519
- if (options.images !== undefined) sdkOptions.images = options.images;
520
- if (options.streamingBehavior !== undefined) sdkOptions.streamingBehavior = options.streamingBehavior;
521
- if (options.source !== undefined) sdkOptions.source = options.source;
522
- if (options.preflightResult !== undefined) sdkOptions.preflightResult = options.preflightResult;
523
-
524
- const outputOptions: StageOutputOptions = {
525
- ...(options.output !== undefined ? { output: options.output } : {}),
526
- ...(options.outputMode !== undefined ? { outputMode: options.outputMode } : {}),
527
- ...(options.context !== undefined ? { context: options.context } : {}),
528
- ...(options.cwd !== undefined ? { cwd: options.cwd } : {}),
529
- ...(options.maxOutput !== undefined ? { maxOutput: options.maxOutput } : {}),
530
- ...(options.artifacts !== undefined ? { artifacts: options.artifacts } : {}),
531
- ...(options.sessionDir !== undefined ? { sessionDir: options.sessionDir } : {}),
532
- };
533
-
534
- return {
535
- sdkOptions: Object.keys(sdkOptions).length === 0 ? undefined : sdkOptions,
536
- outputOptions,
537
- };
538
- }
539
-
540
- const STRUCTURED_OUTPUT_TOOL_NAME = "structured_output";
541
- const STRUCTURED_OUTPUT_MAX_CORRECTIVE_PROMPTS = 3;
542
- const STRUCTURED_OUTPUT_MISSING_ERROR = "atomic-workflows: stage configured with schema must finish by calling structured_output.";
543
-
544
- type ToolResultContentBlock = {
545
- readonly type?: unknown;
546
- readonly text?: unknown;
547
- };
548
-
549
- function toolResultText(content: unknown): string | undefined {
550
- if (!Array.isArray(content)) return undefined;
551
- const text = content
552
- .map((block: ToolResultContentBlock) => block.type === "text" && typeof block.text === "string" ? block.text : "")
553
- .join("\n")
554
- .trim();
555
- return text.length > 0 ? text : undefined;
556
- }
557
-
558
- function structuredOutputToolErrorFromEvent(event: unknown): string | undefined {
559
- if (event === null || typeof event !== "object") return undefined;
560
- const record = event as Record<string, unknown>;
561
- if (record["type"] !== "tool_execution_end") return undefined;
562
- if (record["toolName"] !== STRUCTURED_OUTPUT_TOOL_NAME) return undefined;
563
- const result = record["result"];
564
- const resultRecord = result !== null && typeof result === "object" ? result as Record<string, unknown> : undefined;
565
- const isError = record["isError"] === true || resultRecord?.["isError"] === true;
566
- if (!isError) return undefined;
567
- return toolResultText(resultRecord?.["content"]) ?? "structured_output tool call failed schema validation.";
568
- }
569
-
570
- function formatStructuredOutputCorrectionPrompt(error: string, attempt: number): string {
571
- return [
572
- "The previous response failed this stage's structured-output contract.",
573
- "",
574
- `Corrective attempt ${attempt}/${STRUCTURED_OUTPUT_MAX_CORRECTIVE_PROMPTS}.`,
575
- "",
576
- "Error:",
577
- error,
578
- "",
579
- "You must finish by calling the `structured_output` tool exactly once with arguments matching the registered schema.",
580
- "Do not answer with plain JSON text, Markdown, or prose. If you attempted `structured_output` and validation failed, correct the tool arguments and call `structured_output` again.",
581
- ].join("\n");
582
- }
583
-
584
- function stringifyStructuredOutputValue(value: unknown): string {
585
- try {
586
- return JSON.stringify(value, null, 2);
587
- } catch (error) {
588
- throw new Error(`atomic-workflows: structured_output returned a non-serializable value: ${error instanceof Error ? error.message : String(error)}`);
589
- }
590
- }
591
-
592
- function stageOptionsWithStructuredOutput(
593
- options: StageOptions | undefined,
594
- capture: StructuredOutputCapture<unknown> | undefined,
595
- ): StageOptions | undefined {
596
- if (!options?.schema || !capture) return options;
597
- const tools = options.tools === undefined
598
- ? options.noTools === "all" ? [STRUCTURED_OUTPUT_TOOL_NAME] : undefined
599
- : Array.from(new Set([...options.tools, STRUCTURED_OUTPUT_TOOL_NAME]));
600
- const excludedTools = options.excludedTools?.filter((toolName) => toolName !== STRUCTURED_OUTPUT_TOOL_NAME);
601
- return {
602
- ...options,
603
- ...(tools !== undefined ? { tools } : {}),
604
- ...(excludedTools !== undefined ? { excludedTools } : {}),
605
- customTools: [
606
- ...(options.customTools ?? []),
607
- createStructuredOutputTool({
608
- schema: options.schema as TSchema,
609
- capture: capture as StructuredOutputCapture<Static<TSchema>>,
610
- }),
611
- ],
612
- };
613
- }
614
-
615
- function validatePromptOutputOptions(outputOptions: StageOutputOptions): void {
616
- if (outputOptions.outputMode === "file-only" && (typeof outputOptions.output !== "string" || outputOptions.output.length === 0)) {
617
- throw new Error(
618
- "atomic-workflows: prompt sets outputMode: \"file-only\" but does not configure an output file. Set output to a path or use outputMode: \"inline\".",
619
- );
620
- }
621
- }
622
-
623
- async function finalizePromptOutput(
624
- fullOutput: string,
625
- outputOptions: StageOutputOptions,
626
- runtimeCwd: string,
627
- ): Promise<string> {
628
- const outputPath = resolveOutputPath(outputOptions.output, runtimeCwd, outputOptions.cwd);
629
- validatePromptOutputOptions(outputOptions);
630
-
631
- const displayOutput = truncateOutput(fullOutput, outputOptions.maxOutput);
632
- if (outputPath === undefined) return displayOutput;
633
-
634
- try {
635
- await mkdir(dirname(outputPath), { recursive: true });
636
- await writeFile(outputPath, fullOutput, "utf8");
637
- } catch (err) {
638
- return `${displayOutput}\n\nOutput file error: ${outputPath}\n${err instanceof Error ? err.message : String(err)}`;
639
- }
640
-
641
- const reference = savedOutputReference(outputPath, fullOutput);
642
- return outputOptions.outputMode === "file-only"
643
- ? reference
644
- : `${displayOutput}\n\n${reference}`;
645
- }
646
-
647
- export function createStageContext(opts: StageRunnerOpts): InternalStageContext {
648
- const { stageId, stageName, adapters, runId, signal, stageOptions, executionMode } = opts;
649
- const structuredOutputCapture = stageOptions?.schema ? createStructuredOutputCapture<unknown>() : undefined;
650
- const effectiveStageOptions = stageOptionsWithStructuredOutput(stageOptions, structuredOutputCapture);
651
- const meta: StageExecutionMeta = { runId, stageId, stageName, signal, stageOptions: effectiveStageOptions, executionMode };
652
- let session: StageSessionRuntime | undefined;
653
- let sessionPromise: Promise<StageSessionRuntime> | undefined;
654
- let reattachSessionFile: string | undefined;
655
- let lastAssistantText: string | undefined;
656
- // Tool-call ids whose tool returned `terminate: true` at runtime, observed
657
- // from the session's `tool_execution_end` events. The SDK ends the turn on a
658
- // terminating tool, so its tool result is the deterministic stage output; a
659
- // trailing tool result from any other tool is NOT. See
660
- // `lastAssistantTextFromSession`. The tool result *message* does not carry the
661
- // terminate flag, so it must be tracked from the live event stream.
662
- const terminatingToolCallIds = new Set<string>();
663
- let latestStructuredOutputToolError: string | undefined;
664
- let unsubscribeTerminateWatcher: (() => void) | undefined;
665
- const recordTerminatingToolCall = (event: unknown): void => {
666
- if (event === null || typeof event !== "object") return;
667
- const record = event as Record<string, unknown>;
668
- if (record["type"] !== "tool_execution_end") return;
669
- const result = record["result"];
670
- if (result === null || typeof result !== "object") return;
671
- if ((result as Record<string, unknown>)["terminate"] !== true) return;
672
- const callId = record["toolCallId"];
673
- if (typeof callId === "string" && callId.length > 0) {
674
- terminatingToolCallIds.add(callId);
675
- }
676
- };
677
- let adapterMessages: AgentSession["messages"] = [];
678
- let disposed = false;
679
- let pendingThinkingLevel: Parameters<StageContext["setThinkingLevel"]>[0] | undefined;
680
- const pendingListeners = new Set<(event: Parameters<StageContext["subscribe"]>[0] extends (event: infer T) => void ? T : never) => void>();
681
- const listenerUnsubscribes = new Map<(event: Parameters<StageContext["subscribe"]>[0] extends (event: infer T) => void ? T : never) => void, () => void>();
682
-
683
- /**
684
- * Pause/resume coordination. `pauseRequest` is non-null while a
685
- * controlled pause is pending. The executor's `runTrackedStageCall`
686
- * inspects this in its catch handler to distinguish a user pause
687
- * (await `pauseDeferred.promise`, then re-issue the call) from a
688
- * genuine SDK abort that should fail the stage.
689
- *
690
- * `pendingResumeMessage` is the next user message to feed back into
691
- * the SDK session when `__resume(message)` is called.
692
- */
693
- let pauseRequest: {
694
- deferred: PromiseWithResolvers<{ message?: string }>;
695
- } | null = null;
696
-
697
- // Wire the executor's abort signal to the live SDK session and pause
698
- // deferred so a kill (or other forced abort) doesn't leave a paused stage
699
- // hanging on a resume signal that will never arrive. Re-use the abort
700
- // reason instead of manufacturing a stage-specific error; shutdown/kill is
701
- // expected cancellation and should not surface as a noisy per-stage failure.
702
- if (signal) {
703
- const abortReason = (): Error | DOMException | string => {
704
- const reason = signal.reason;
705
- if (reason instanceof Error || reason instanceof DOMException || typeof reason === "string") {
706
- return reason;
707
- }
708
- return new DOMException("workflow killed", "AbortError");
709
- };
710
- const onAbort = (): void => {
711
- void session?.abort().catch(() => {});
712
- if (!pauseRequest) return;
713
- const req = pauseRequest;
714
- pauseRequest = null;
715
- req.deferred.reject(abortReason());
716
- };
717
- if (signal.aborted) onAbort();
718
- else signal.addEventListener("abort", onAbort, { once: true });
719
- }
720
-
721
- const hasExplicitModelFallbackConfig =
722
- effectiveStageOptions?.model !== undefined || (effectiveStageOptions?.fallbackModels?.length ?? 0) > 0;
723
- let candidatesPromise: Promise<WorkflowResolvedModelCandidate[]> | undefined;
724
- let activeCandidateIndex: number | undefined;
725
- let selectedModel: string | undefined;
726
- // A single ModelRegistry (carrying its AuthStorage) reused across every model
727
- // fallback candidate in this stage. Captured from the first created session
728
- // and threaded into subsequent candidate sessions so fallback does not rebuild
729
- // auth/model state per candidate — which can misreport configured providers as
730
- // "No API key found" under auth.json lock contention (issue #1431).
731
- let sharedModelRegistry: CreateAgentSessionOptions["modelRegistry"];
732
- // When true, the next promptWithFallback() call first retries the model the
733
- // session last settled on (a post-completion follow-up, a subsequent turn, or
734
- // a reattached session) before replaying the chain from the primary. Set on
735
- // every successful attempt and by ensureSession()'s reattach branch; cleared
736
- // when the current session is disposed.
737
- let resumeCurrentSession = false;
738
- const modelAttempts: WorkflowModelAttempt[] = [];
739
- const modelWarnings: string[] = [];
740
- const pendingFallbackWarnings: string[] = [];
741
- const modelCatalog = opts.models === undefined
742
- ? undefined
743
- : {
744
- ...opts.models,
745
- recordWarning: (warning: string): void => {
746
- modelWarnings.push(warning);
747
- opts.models?.recordWarning?.(warning);
748
- },
749
- } satisfies WorkflowModelCatalogPort;
750
-
751
- function modelCandidates(): Promise<WorkflowResolvedModelCandidate[]> {
752
- if (!candidatesPromise) {
753
- candidatesPromise = buildModelCandidatesFromCatalog({
754
- primaryModel: effectiveStageOptions?.model,
755
- fallbackModels: effectiveStageOptions?.fallbackModels,
756
- fallbackThinkingLevels: effectiveStageOptions?.fallbackThinkingLevels,
757
- catalog: modelCatalog,
758
- });
759
- }
760
- return candidatesPromise;
761
- }
762
-
763
- function stageOptionsForCandidate(
764
- candidate: WorkflowResolvedModelCandidate | undefined,
765
- resumeOptions?: { restoreSavedModel?: boolean },
766
- ): StageOptions | undefined {
767
- const optionsForCandidate: StageOptions = candidate === undefined
768
- ? { ...(effectiveStageOptions ?? {}) }
769
- : {
770
- ...(effectiveStageOptions ?? {}),
771
- model: candidate.value,
772
- ...(candidate.reasoningLevel !== undefined ? { thinkingLevel: candidate.reasoningLevel } : {}),
773
- // A per-candidate context window (parsed from a parenthesized token in
774
- // the model string) overrides any stage-level contextWindow so only
775
- // that specific model — e.g. a github-copilot opus fallback — requests
776
- // its larger window; other candidates keep the stage default.
777
- ...(candidate.contextWindow !== undefined ? { contextWindow: candidate.contextWindow } : {}),
778
- fallbackModels: undefined,
779
- fallbackThinkingLevels: undefined,
780
- };
781
- // When resuming a reattached session (a post-completion follow-up), drop any
782
- // model override so the SDK restores the model the session last used — the
783
- // one that actually worked — instead of forcing the primary/candidate model.
784
- if (resumeOptions?.restoreSavedModel) {
785
- delete optionsForCandidate.model;
786
- }
787
- if (reattachSessionFile !== undefined && optionsForCandidate.sessionManager === undefined) {
788
- const cwd = optionsForCandidate.cwd ?? process.cwd();
789
- optionsForCandidate.sessionManager = SessionManager.open(
790
- reattachSessionFile,
791
- optionsForCandidate.sessionDir,
792
- cwd,
793
- );
794
- optionsForCandidate.context = undefined;
795
- optionsForCandidate.forkFromSessionFile = undefined;
796
- }
797
- // Reuse the registry captured from the first session for later fallback
798
- // candidates. A caller-supplied modelRegistry is preserved (issue #1431).
799
- if (sharedModelRegistry !== undefined && optionsForCandidate.modelRegistry === undefined) {
800
- optionsForCandidate.modelRegistry = sharedModelRegistry;
801
- }
802
- return Object.keys(optionsForCandidate).length === 0 ? undefined : optionsForCandidate;
803
- }
804
-
805
- let sessionSettingsManager: WorkflowFastModeSettingsManager | undefined;
806
-
807
- function isWorkflowFastModeEnabled(): boolean | undefined {
808
- const model = session?.model;
809
- const settingsManager = sessionSettingsManager ?? effectiveStageOptions?.settingsManager;
810
- if (model === undefined || settingsManager === undefined) return undefined;
811
- return shouldApplyCodexFastModeForScope(model, settingsManager.getCodexFastModeSettings(), "workflow");
812
- }
813
-
814
- function currentModelFallbackMeta(): StageModelFallbackMeta {
815
- const attemptedModels = modelAttempts.map((attempt) => attempt.model);
816
- const model = selectedModel ?? workflowModelId(session?.model);
817
- const fastMode = isWorkflowFastModeEnabled();
818
- return {
819
- ...(model !== undefined ? { model } : {}),
820
- ...(fastMode !== undefined ? { fastMode } : {}),
821
- ...(attemptedModels.length > 0 ? { attemptedModels } : {}),
822
- ...(modelAttempts.length > 0 ? { modelAttempts: [...modelAttempts] } : {}),
823
- ...(modelWarnings.length > 0 ? { warnings: [...modelWarnings] } : {}),
824
- };
825
- }
826
-
827
- function notifyModelFallbackMetaChange(): void {
828
- opts.onModelFallbackMetaChange?.(currentModelFallbackMeta());
829
- }
830
-
831
- function normalizeSessionCreateResult(created: StageSessionRuntime | StageSessionCreateResult): StageSessionCreateResult {
832
- if ("session" in created) return created;
833
- return { session: created };
834
- }
835
-
836
- function effectiveCandidateReasoning(candidate: WorkflowResolvedModelCandidate): StageOptions["thinkingLevel"] | undefined {
837
- return candidate.reasoningLevel ?? effectiveStageOptions?.thinkingLevel;
838
- }
839
-
840
- function modelAttemptReasoning(candidate: WorkflowResolvedModelCandidate): Pick<WorkflowModelAttempt, "reasoningLevel"> {
841
- const reasoningLevel = effectiveCandidateReasoning(candidate);
842
- return reasoningLevel !== undefined ? { reasoningLevel } : {};
843
- }
844
-
845
- function applyCandidateThinking(candidate: WorkflowResolvedModelCandidate | undefined): void {
846
- pendingThinkingLevel = candidate === undefined
847
- ? effectiveStageOptions?.thinkingLevel
848
- : effectiveCandidateReasoning(candidate);
849
- }
850
-
851
- function candidateLabel(candidate: WorkflowResolvedModelCandidate): string {
852
- return candidate.reasoningLevel !== undefined ? `${candidate.id}:${candidate.reasoningLevel}` : candidate.id;
853
- }
854
-
855
- function attachSession(created: StageSessionRuntime | StageSessionCreateResult): StageSessionRuntime {
856
- const result = normalizeSessionCreateResult(created);
857
- session = result.session;
858
- // Capture the SDK ModelRegistry from the first real session so subsequent
859
- // fallback candidates reuse the same already-loaded auth/model state instead
860
- // of re-creating it per candidate (issue #1431). The test stub session has
861
- // no modelRegistry, so capture is simply skipped there.
862
- if (sharedModelRegistry === undefined) {
863
- const withRegistry = result.session as Partial<Pick<AgentSession, "modelRegistry">>;
864
- if (withRegistry.modelRegistry !== undefined) {
865
- sharedModelRegistry = withRegistry.modelRegistry;
866
- }
867
- }
868
- sessionSettingsManager = result.settingsManager ?? result.session.settingsManager;
869
- if (pendingThinkingLevel !== undefined) {
870
- result.session.setThinkingLevel(pendingThinkingLevel);
871
- }
872
- for (const listener of pendingListeners) {
873
- listenerUnsubscribes.set(listener, result.session.subscribe(listener));
874
- }
875
- // Track terminating tool calls for this session so the stage result text is
876
- // derived deterministically from a tool that actually ended the turn. Also
877
- // remember schema-validation errors from structured_output so corrective
878
- // retry prompts can echo the concrete failure instead of a generic miss.
879
- unsubscribeTerminateWatcher?.();
880
- unsubscribeTerminateWatcher = result.session.subscribe((event) => {
881
- recordTerminatingToolCall(event);
882
- latestStructuredOutputToolError = structuredOutputToolErrorFromEvent(event) ?? latestStructuredOutputToolError;
883
- });
884
- return result.session;
885
- }
886
-
887
- async function createSession(
888
- candidate: WorkflowResolvedModelCandidate | undefined,
889
- consumer: AgentSessionConsumer,
890
- resumeOptions?: { restoreSavedModel?: boolean },
891
- ): Promise<StageSessionRuntime> {
892
- applyCandidateThinking(candidate);
893
- const created = adapters.agentSession
894
- ? await adapters.agentSession.create(stripWorkflowOnlyOptions(stageOptionsForCandidate(candidate, resumeOptions)) as StageSessionCreateOptions, {
895
- ...meta,
896
- stageOptions: stageOptionsForCandidate(candidate, resumeOptions),
897
- })
898
- : missingAdapter(consumer);
899
- return attachSession(created);
900
- }
901
-
902
- async function ensureSession(consumer: AgentSessionConsumer = "prompt"): Promise<StageSessionRuntime> {
903
- if (disposed) throw new Error(`atomic-workflows: stage "${stageName}" session has been disposed`);
904
- // Reuse an already-attached session. After model fallback settles, `session`
905
- // is set but `sessionPromise` is left undefined; without this guard a
906
- // follow-up's ensureSession() (via ctx.followUp / ctx.steer / __ensureSession)
907
- // would create a brand-new session from the primary candidate and discard the
908
- // working fallback session (issue #1431 follow-up).
909
- if (session !== undefined) return session;
910
- if (!sessionPromise) {
911
- sessionPromise = (async () => {
912
- if (!hasExplicitModelFallbackConfig) return createSession(undefined, consumer);
913
- const candidates = await modelCandidates();
914
- const first = candidates[0];
915
- if (first === undefined) return createSession(undefined, consumer);
916
-
917
- // Reattaching a previously-run session (e.g. a post-completion
918
- // follow-up after the session was disposed): resume on the model the
919
- // session last settled on — the one that actually worked — instead of
920
- // replaying the fallback chain from an unavailable primary.
921
- // promptWithFallback retries that model first; if it fails again it
922
- // restarts the full chain from the primary.
923
- if (reattachSessionFile !== undefined) {
924
- const resumed = await createSession(undefined, consumer, { restoreSavedModel: true });
925
- const restoredId = workflowModelId(resumed.model);
926
- const restoredIndex = restoredId === undefined
927
- ? -1
928
- : candidates.findIndex((entry) => entry.id === restoredId);
929
- activeCandidateIndex = restoredIndex >= 0 ? restoredIndex : undefined;
930
- selectedModel = restoredId ?? first.id;
931
- resumeCurrentSession = true;
932
- return resumed;
933
- }
934
-
935
- activeCandidateIndex = 0;
936
- selectedModel = first.id;
937
- return createSession(first, consumer);
938
- })();
939
- }
940
- return sessionPromise;
941
- }
942
-
943
- async function ensureSessionFromFile(sessionFile: string, consumer: AgentSessionConsumer = "prompt"): Promise<StageSessionRuntime> {
944
- if (sessionPromise || session) return ensureSession(consumer);
945
- reattachSessionFile = sessionFile;
946
- return ensureSession(consumer);
947
- }
948
-
949
- async function disposeCurrentSession(): Promise<void> {
950
- const current = session;
951
- session = undefined;
952
- sessionPromise = undefined;
953
- sessionSettingsManager = undefined;
954
- resumeCurrentSession = false;
955
- for (const unsubscribe of listenerUnsubscribes.values()) unsubscribe();
956
- listenerUnsubscribes.clear();
957
- unsubscribeTerminateWatcher?.();
958
- unsubscribeTerminateWatcher = undefined;
959
- terminatingToolCallIds.clear();
960
- await disposeStageSession(current);
961
- }
962
-
963
- async function promptWithPauseResume(
964
- activeSession: StageSessionRuntime,
965
- initialText: string,
966
- sdkOptions: PromptOptions | undefined,
967
- ): Promise<{ readonly terminalScanStartIndex: number }> {
968
- // Pause/resume loop: when a controlled pause aborts the SDK call,
969
- // swallow the resulting abort, suspend on `pauseRequest.deferred`,
970
- // and either re-issue with the user's resume message or return the
971
- // accumulated assistant text when resume carries no message.
972
- let nextText: string | undefined = initialText;
973
- while (nextText !== undefined) {
974
- const pendingPauseBeforePrompt = pauseRequest;
975
- if (pendingPauseBeforePrompt) {
976
- const { message } = await pendingPauseBeforePrompt.deferred.promise;
977
- nextText = message;
978
- if (nextText === undefined) return { terminalScanStartIndex: activeSession.messages.length };
979
- continue;
980
- }
981
- const promptStartIndex = activeSession.messages.length;
982
- try {
983
- await activeSession.prompt(nextText, sdkOptions);
984
- const pendingPauseAfterPrompt = pauseRequest;
985
- if (pendingPauseAfterPrompt) {
986
- const { message } = await pendingPauseAfterPrompt.deferred.promise;
987
- nextText = message;
988
- if (nextText === undefined) return { terminalScanStartIndex: activeSession.messages.length };
989
- continue;
990
- }
991
- return { terminalScanStartIndex: promptStartIndex };
992
- } catch (err) {
993
- const pendingPauseAfterThrow = pauseRequest;
994
- if (pendingPauseAfterThrow) {
995
- const { message } = await pendingPauseAfterThrow.deferred.promise;
996
- nextText = message;
997
- if (nextText === undefined) return { terminalScanStartIndex: activeSession.messages.length };
998
- continue;
999
- }
1000
- throw err;
1001
- }
1002
- }
1003
- return { terminalScanStartIndex: activeSession.messages.length };
1004
- }
1005
-
1006
- async function promptWithFallback(
1007
- text: string,
1008
- sdkOptions: PromptOptions | undefined,
1009
- consumer: AgentSessionConsumer = "prompt",
1010
- ): Promise<void> {
1011
- if (!hasExplicitModelFallbackConfig) {
1012
- await promptWithPauseResume(await ensureSession(consumer), text, sdkOptions);
1013
- return;
1014
- }
1015
-
1016
- const candidates = await modelCandidates();
1017
- if (candidates.length === 0) {
1018
- await promptWithPauseResume(await ensureSession(consumer), text, sdkOptions);
1019
- return;
1020
- }
1021
-
1022
- const capturedStructuredOutputForAttempt = (): boolean =>
1023
- structuredOutputCapture?.called === true && signal?.aborted !== true;
1024
- const recordSuccessfulAttempt = (candidate: WorkflowResolvedModelCandidate): void => {
1025
- modelAttempts.push({ model: candidate.id, success: true, ...modelAttemptReasoning(candidate) });
1026
- pendingFallbackWarnings.length = 0;
1027
- // The session settled on a working model; a later follow-up/turn should
1028
- // resume on it rather than replaying the chain from the primary.
1029
- resumeCurrentSession = true;
1030
- };
1031
-
1032
- // Resume preamble: when the stage already settled on a working model (a
1033
- // post-completion follow-up, a subsequent turn, or a reattached session),
1034
- // retry that model first instead of replaying the chain from an unavailable
1035
- // primary. If that model now fails retryably, restart the full chain from
1036
- // the primary.
1037
- if (resumeCurrentSession && session !== undefined) {
1038
- resumeCurrentSession = false;
1039
- const resumedSession = session;
1040
- const resumedLabel = selectedModel ?? workflowModelId(resumedSession.model) ?? candidates[0]!.id;
1041
- notifyModelFallbackMetaChange();
1042
- try {
1043
- const { terminalScanStartIndex } = await promptWithPauseResume(resumedSession, text, sdkOptions);
1044
- const terminalFailure = latestTerminalAssistantFailureSince(resumedSession.messages, terminalScanStartIndex);
1045
- if (terminalFailure === undefined || capturedStructuredOutputForAttempt()) {
1046
- modelAttempts.push({ model: resumedLabel, success: true });
1047
- pendingFallbackWarnings.length = 0;
1048
- resumeCurrentSession = true;
1049
- return;
1050
- }
1051
- throw new WorkflowPromptModelFailure(terminalFailure);
1052
- } catch (err) {
1053
- if (capturedStructuredOutputForAttempt() && isRetryableModelFailure(err)) {
1054
- modelAttempts.push({ model: resumedLabel, success: true });
1055
- pendingFallbackWarnings.length = 0;
1056
- resumeCurrentSession = true;
1057
- return;
1058
- }
1059
- const message = errorMessage(err);
1060
- modelAttempts.push({ model: resumedLabel, success: false, error: message });
1061
- if (signal?.aborted || !isRetryableModelFailure(err)) {
1062
- modelWarnings.push(...pendingFallbackWarnings);
1063
- pendingFallbackWarnings.length = 0;
1064
- notifyModelFallbackMetaChange();
1065
- throw err;
1066
- }
1067
- // The resumed model failed retryably: restart the whole fallback chain
1068
- // from the primary. disposeCurrentSession clears resumeCurrentSession.
1069
- pendingFallbackWarnings.push(`[fallback] resume on ${resumedLabel} failed: ${message}. Restarting fallback from ${candidateLabel(candidates[0]!)}.`);
1070
- await disposeCurrentSession();
1071
- activeCandidateIndex = undefined;
1072
- }
1073
- }
1074
-
1075
- let index = activeCandidateIndex ?? 0;
1076
-
1077
- while (index < candidates.length) {
1078
- const candidate = candidates[index]!;
1079
- const activeSession = session && activeCandidateIndex === index
1080
- ? session
1081
- : await createSession(candidate, consumer);
1082
- activeCandidateIndex = index;
1083
- selectedModel = candidate.id;
1084
- notifyModelFallbackMetaChange();
1085
- try {
1086
- const { terminalScanStartIndex } = await promptWithPauseResume(activeSession, text, sdkOptions);
1087
- const terminalFailure = latestTerminalAssistantFailureSince(activeSession.messages, terminalScanStartIndex);
1088
- if (terminalFailure !== undefined) {
1089
- if (capturedStructuredOutputForAttempt()) {
1090
- recordSuccessfulAttempt(candidate);
1091
- return;
1092
- }
1093
- throw new WorkflowPromptModelFailure(terminalFailure);
1094
- }
1095
- recordSuccessfulAttempt(candidate);
1096
- return;
1097
- } catch (err) {
1098
- const message = errorMessage(err);
1099
- if (capturedStructuredOutputForAttempt() && isRetryableModelFailure(err)) {
1100
- recordSuccessfulAttempt(candidate);
1101
- return;
1102
- }
1103
- modelAttempts.push({ model: candidate.id, success: false, ...modelAttemptReasoning(candidate), error: message });
1104
- if (signal?.aborted || !isRetryableModelFailure(err) || index === candidates.length - 1) {
1105
- modelWarnings.push(...pendingFallbackWarnings);
1106
- pendingFallbackWarnings.length = 0;
1107
- notifyModelFallbackMetaChange();
1108
- throw err;
1109
- }
1110
- const nextCandidate = candidates[index + 1]!;
1111
- pendingFallbackWarnings.push(`[fallback] ${candidateLabel(candidate)} failed: ${message}. Retrying with ${candidateLabel(nextCandidate)}.`);
1112
- await disposeCurrentSession();
1113
- index += 1;
1114
- }
1115
- }
1116
- }
1117
-
1118
- function requireSession(property: string): StageSessionRuntime {
1119
- if (!session) unavailableSync(property);
1120
- return session;
1121
- }
1122
-
1123
- return {
1124
- name: stageName,
1125
-
1126
- async prompt(text, options) {
1127
- const { sdkOptions, outputOptions } = splitPromptOptions(options);
1128
- const runtimeCwd = typeof effectiveStageOptions?.cwd === "string" ? effectiveStageOptions.cwd : process.cwd();
1129
- validatePromptOutputOptions(outputOptions);
1130
- if (structuredOutputCapture?.called) {
1131
- throw new Error("atomic-workflows: stage schema supports one prompt() call per stage context because structured_output may be called exactly once. Create a new ctx.stage(...) for each additional schema-backed prompt.");
1132
- }
1133
- if (adapters.prompt) {
1134
- if (structuredOutputCapture) {
1135
- throw new Error("atomic-workflows: stage schema requires an AgentSessionAdapter so the structured_output tool can be registered.");
1136
- }
1137
- const rawText = await adapters.prompt.prompt(text, meta);
1138
- lastAssistantText = await finalizePromptOutput(rawText, outputOptions, runtimeCwd);
1139
- adapterMessages = assistantMessage(lastAssistantText);
1140
- return lastAssistantText;
1141
- }
1142
- if (structuredOutputCapture) {
1143
- let nextPrompt = text;
1144
- let correctiveAttempts = 0;
1145
- let structuredOutputError = STRUCTURED_OUTPUT_MISSING_ERROR;
1146
- while (!structuredOutputCapture.called) {
1147
- latestStructuredOutputToolError = undefined;
1148
- await promptWithFallback(nextPrompt, sdkOptions);
1149
- if (structuredOutputCapture.called) break;
1150
- structuredOutputError = latestStructuredOutputToolError ?? STRUCTURED_OUTPUT_MISSING_ERROR;
1151
- if (correctiveAttempts >= STRUCTURED_OUTPUT_MAX_CORRECTIVE_PROMPTS) {
1152
- throw new Error(structuredOutputError);
1153
- }
1154
- correctiveAttempts += 1;
1155
- nextPrompt = formatStructuredOutputCorrectionPrompt(structuredOutputError, correctiveAttempts);
1156
- }
1157
- const rawStructuredText = stringifyStructuredOutputValue(structuredOutputCapture.value);
1158
- lastAssistantText = await finalizePromptOutput(rawStructuredText, outputOptions, runtimeCwd);
1159
- return structuredOutputCapture.value as never;
1160
- }
1161
- await promptWithFallback(text, sdkOptions);
1162
- const rawText = lastAssistantTextFromSession(session, lastAssistantText, terminatingToolCallIds) ?? "";
1163
- lastAssistantText = await finalizePromptOutput(rawText, outputOptions, runtimeCwd);
1164
- return lastAssistantText;
1165
- },
1166
-
1167
- async complete(text, completeOpts) {
1168
- if (adapters.complete) {
1169
- lastAssistantText = await adapters.complete.complete(text, completeOpts, meta);
1170
- adapterMessages = assistantMessage(lastAssistantText);
1171
- return lastAssistantText;
1172
- }
1173
- if (
1174
- completeOpts?.model !== undefined ||
1175
- completeOpts?.maxTokens !== undefined ||
1176
- completeOpts?.fallbackModels !== undefined
1177
- ) {
1178
- throw new Error(
1179
- "atomic-workflows: complete options require a CompleteAdapter via RunOpts.adapters.complete",
1180
- );
1181
- }
1182
- // Intentional fallback: when a CompleteAdapter is not configured,
1183
- // `ctx.complete()` can still use the stage AgentSession for simple text
1184
- // completions. Completion-specific options require the dedicated adapter.
1185
- await promptWithFallback(text, undefined, "complete");
1186
- lastAssistantText = lastAssistantTextFromSession(session, lastAssistantText, terminatingToolCallIds) ?? "";
1187
- return lastAssistantText;
1188
- },
1189
-
1190
- async steer(text) {
1191
- await (await ensureSession()).steer(text);
1192
- },
1193
-
1194
- async followUp(text) {
1195
- await (await ensureSession()).followUp(text);
1196
- },
1197
-
1198
- subscribe(listener) {
1199
- pendingListeners.add(listener);
1200
- if (session) listenerUnsubscribes.set(listener, session.subscribe(listener));
1201
- return () => {
1202
- pendingListeners.delete(listener);
1203
- const unsubscribe = listenerUnsubscribes.get(listener);
1204
- listenerUnsubscribes.delete(listener);
1205
- unsubscribe?.();
1206
- };
1207
- },
1208
-
1209
- get sessionFile() {
1210
- return session?.sessionFile;
1211
- },
1212
-
1213
- get sessionId() {
1214
- return requireSession("sessionId").sessionId;
1215
- },
1216
-
1217
- async setModel(model) {
1218
- await (await ensureSession()).setModel(model);
1219
- },
1220
-
1221
- setThinkingLevel(level) {
1222
- pendingThinkingLevel = level;
1223
- session?.setThinkingLevel(level);
1224
- },
1225
-
1226
- async cycleModel() {
1227
- return (await ensureSession()).cycleModel();
1228
- },
1229
-
1230
- cycleThinkingLevel() {
1231
- return requireSession("cycleThinkingLevel").cycleThinkingLevel();
1232
- },
1233
-
1234
- get agent() {
1235
- return requireSession("agent").agent;
1236
- },
1237
-
1238
- get model() {
1239
- return session?.model;
1240
- },
1241
-
1242
- get thinkingLevel() {
1243
- return requireSession("thinkingLevel").thinkingLevel;
1244
- },
1245
-
1246
- get messages() {
1247
- return session?.messages ?? adapterMessages;
1248
- },
1249
-
1250
- get isStreaming() {
1251
- return session?.isStreaming ?? false;
1252
- },
1253
-
1254
- async navigateTree(targetId, options) {
1255
- return (await ensureSession()).navigateTree(targetId, options);
1256
- },
1257
-
1258
- async compact() {
1259
- return (await ensureSession()).compact();
1260
- },
1261
-
1262
- abortCompaction() {
1263
- session?.abortCompaction();
1264
- },
1265
-
1266
- async abort() {
1267
- await session?.abort();
1268
- },
1269
-
1270
- async __dispose() {
1271
- disposed = true;
1272
- for (const unsubscribe of listenerUnsubscribes.values()) unsubscribe();
1273
- listenerUnsubscribes.clear();
1274
- pendingListeners.clear();
1275
- unsubscribeTerminateWatcher?.();
1276
- unsubscribeTerminateWatcher = undefined;
1277
- terminatingToolCallIds.clear();
1278
- await disposeStageSession(session);
1279
- },
1280
-
1281
- __getLastAssistantText() {
1282
- return lastAssistantTextFromSession(session, lastAssistantText, terminatingToolCallIds);
1283
- },
1284
-
1285
- getLastAssistantText() {
1286
- return lastAssistantTextFromSession(session, lastAssistantText, terminatingToolCallIds);
1287
- },
1288
-
1289
- async __ensureSession() {
1290
- await ensureSession();
1291
- },
1292
-
1293
- async __ensureSessionFromFile(sessionFile) {
1294
- await ensureSessionFromFile(sessionFile);
1295
- },
1296
-
1297
- __sessionMeta() {
1298
- return {
1299
- sessionId: session?.sessionId,
1300
- sessionFile: session?.sessionFile,
1301
- };
1302
- },
1303
-
1304
- __agentSession() {
1305
- return asAgentSession(session);
1306
- },
1307
-
1308
- __pendingMessageCount() {
1309
- return typeof session?.pendingMessageCount === "number" ? session.pendingMessageCount : 0;
1310
- },
1311
-
1312
- __modelFallbackMeta() {
1313
- return currentModelFallbackMeta();
1314
- },
1315
-
1316
- async __requestPause() {
1317
- if (pauseRequest) return;
1318
- const deferred = Promise.withResolvers<{ message?: string }>();
1319
- // A shutdown may reject this deferred when no prompt awaiter is actively
1320
- // observing it (for example a paused pending live stream). Keep the
1321
- // original promise for real waiters, but mark expected cancellation as
1322
- // observed so app-exit cleanup stays quiet.
1323
- void deferred.promise.catch(() => {});
1324
- pauseRequest = { deferred };
1325
- // Best-effort: stop the current Pi op so the awaiter races abort.
1326
- // The executor's `runTrackedStageCall` re-issues the call once
1327
- // `__resume()` settles `pauseRequest.deferred`.
1328
- await session?.abort();
1329
- },
1330
-
1331
- async __resume(message?: string) {
1332
- const req = pauseRequest;
1333
- if (!req) return;
1334
- pauseRequest = null;
1335
- req.deferred.resolve({ message });
1336
- },
1337
-
1338
- __isPaused() {
1339
- return pauseRequest !== null;
1340
- },
1341
- };
1342
- }
1343
-
1344
- function assistantMessage(text: string): AgentSession["messages"] {
1345
- return [
1346
- {
1347
- role: "assistant",
1348
- content: [{ type: "text", text }],
1349
- },
1350
- ] as AgentSession["messages"];
1351
- }
10
+ export { createStageContext } from "./stage-runner-context.js";
11
+ export type {
12
+ AgentSessionAdapter,
13
+ CompleteAdapter,
14
+ InternalStageContext,
15
+ PromptAdapter,
16
+ StageAdapters,
17
+ StageModelFallbackMeta,
18
+ StageRunnerOpts,
19
+ StageSessionCreateOptions,
20
+ StageSessionCreateResult,
21
+ StageSessionRuntime,
22
+ } from "./stage-runner-types.js";