@bastani/atomic 0.9.11-alpha.7 → 0.9.11-alpha.9

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 (1798) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/README.md +3 -5
  3. package/dist/builtin/intercom/package.json +3 -3
  4. package/dist/builtin/mcp/CHANGELOG.md +6 -0
  5. package/dist/builtin/mcp/commands.ts +7 -3
  6. package/dist/builtin/mcp/package.json +6 -6
  7. package/dist/builtin/mcp/sampling-handler.ts +1 -5
  8. package/dist/builtin/subagents/CHANGELOG.md +9 -0
  9. package/dist/builtin/subagents/package.json +5 -5
  10. package/dist/builtin/subagents/src/agents/agent-discovery.ts +26 -15
  11. package/dist/builtin/subagents/src/agents/agent-loaders.ts +48 -34
  12. package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +80 -31
  13. package/dist/builtin/subagents/src/agents/agent-management.ts +194 -55
  14. package/dist/builtin/subagents/src/agents/agent-overrides.ts +85 -32
  15. package/dist/builtin/subagents/src/agents/agent-paths.ts +4 -1
  16. package/dist/builtin/subagents/src/agents/agent-selection.ts +1 -1
  17. package/dist/builtin/subagents/src/agents/agent-serializer.ts +1 -4
  18. package/dist/builtin/subagents/src/agents/agents.ts +9 -9
  19. package/dist/builtin/subagents/src/agents/chain-serializer.ts +9 -5
  20. package/dist/builtin/subagents/src/agents/identity.ts +12 -3
  21. package/dist/builtin/subagents/src/agents/skills-paths.ts +64 -24
  22. package/dist/builtin/subagents/src/agents/skills.ts +29 -26
  23. package/dist/builtin/subagents/src/extension/doctor.ts +31 -20
  24. package/dist/builtin/subagents/src/extension/fanout-child.ts +27 -12
  25. package/dist/builtin/subagents/src/extension/index.ts +119 -43
  26. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +0 -1
  27. package/dist/builtin/subagents/src/extension/schemas.ts +304 -177
  28. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +137 -73
  29. package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +49 -21
  30. package/dist/builtin/subagents/src/intercom/result-intercom.ts +76 -38
  31. package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +12 -6
  32. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +164 -57
  33. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +15 -18
  34. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +66 -27
  35. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +4 -14
  36. package/dist/builtin/subagents/src/runs/background/async-execution.ts +1 -1
  37. package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +86 -32
  38. package/dist/builtin/subagents/src/runs/background/async-resume.ts +93 -36
  39. package/dist/builtin/subagents/src/runs/background/async-status.ts +82 -27
  40. package/dist/builtin/subagents/src/runs/background/completion-claims.ts +12 -5
  41. package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +3 -1
  42. package/dist/builtin/subagents/src/runs/background/completion-notification.ts +3 -1
  43. package/dist/builtin/subagents/src/runs/background/notify.ts +36 -18
  44. package/dist/builtin/subagents/src/runs/background/parallel-groups.ts +28 -14
  45. package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +147 -79
  46. package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +20 -5
  47. package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +7 -2
  48. package/dist/builtin/subagents/src/runs/background/result-status.ts +11 -5
  49. package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +18 -5
  50. package/dist/builtin/subagents/src/runs/background/result-watcher.ts +104 -35
  51. package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +28 -7
  52. package/dist/builtin/subagents/src/runs/background/run-status.ts +120 -32
  53. package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +98 -39
  54. package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +185 -37
  55. package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +23 -9
  56. package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +6 -2
  57. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +34 -18
  58. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +175 -26
  59. package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +68 -23
  60. package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +200 -49
  61. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +81 -49
  62. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +33 -11
  63. package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +16 -6
  64. package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +2 -3
  65. package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +11 -8
  66. package/dist/builtin/subagents/src/runs/foreground/chain-execution-details.ts +5 -2
  67. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +113 -31
  68. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +64 -55
  69. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +103 -37
  70. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +97 -62
  71. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +22 -10
  72. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +9 -6
  73. package/dist/builtin/subagents/src/runs/foreground/detached-cleanup-barrier.ts +22 -22
  74. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +45 -40
  75. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +6 -5
  76. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +118 -43
  77. package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +17 -7
  78. package/dist/builtin/subagents/src/runs/foreground/execution-detach-route.ts +5 -3
  79. package/dist/builtin/subagents/src/runs/foreground/execution-intercom-detach.ts +39 -35
  80. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +81 -42
  81. package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +27 -21
  82. package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +2 -5
  83. package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +9 -4
  84. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +64 -27
  85. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +31 -18
  86. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +95 -62
  87. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +30 -9
  88. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +106 -96
  89. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +68 -37
  90. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +260 -84
  91. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +6 -1
  92. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +63 -40
  93. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +110 -59
  94. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +20 -3
  95. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +8 -6
  96. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +65 -47
  97. package/dist/builtin/subagents/src/runs/shared/chain-outputs.ts +37 -12
  98. package/dist/builtin/subagents/src/runs/shared/dynamic-fanout.ts +120 -34
  99. package/dist/builtin/subagents/src/runs/shared/final-drain.ts +12 -7
  100. package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +3 -2
  101. package/dist/builtin/subagents/src/runs/shared/long-running-guard.ts +8 -3
  102. package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +42 -19
  103. package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +8 -4
  104. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +103 -38
  105. package/dist/builtin/subagents/src/runs/shared/nested-events-control.ts +30 -20
  106. package/dist/builtin/subagents/src/runs/shared/nested-events-core.ts +45 -20
  107. package/dist/builtin/subagents/src/runs/shared/nested-events-projection.ts +57 -23
  108. package/dist/builtin/subagents/src/runs/shared/nested-events-registry.ts +77 -29
  109. package/dist/builtin/subagents/src/runs/shared/nested-events-sanitize.ts +99 -42
  110. package/dist/builtin/subagents/src/runs/shared/nested-events.ts +32 -26
  111. package/dist/builtin/subagents/src/runs/shared/nested-path.ts +22 -17
  112. package/dist/builtin/subagents/src/runs/shared/nested-render.ts +31 -10
  113. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +9 -8
  114. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +54 -30
  115. package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +17 -13
  116. package/dist/builtin/subagents/src/runs/shared/run-history.ts +13 -6
  117. package/dist/builtin/subagents/src/runs/shared/single-output.ts +11 -6
  118. package/dist/builtin/subagents/src/runs/shared/spawn-env.ts +21 -0
  119. package/dist/builtin/subagents/src/runs/shared/structured-output.ts +33 -19
  120. package/dist/builtin/subagents/src/runs/shared/subagent-control.ts +59 -48
  121. package/dist/builtin/subagents/src/runs/shared/subagent-prompt-runtime.ts +18 -11
  122. package/dist/builtin/subagents/src/runs/shared/workflow-graph.ts +41 -11
  123. package/dist/builtin/subagents/src/runs/shared/worktree-post-create.ts +46 -10
  124. package/dist/builtin/subagents/src/runs/shared/worktree-root.ts +21 -5
  125. package/dist/builtin/subagents/src/runs/shared/worktree.ts +89 -34
  126. package/dist/builtin/subagents/src/shared/artifacts.ts +137 -7
  127. package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +49 -13
  128. package/dist/builtin/subagents/src/shared/fast-mode.ts +13 -6
  129. package/dist/builtin/subagents/src/shared/fork-context.ts +7 -4
  130. package/dist/builtin/subagents/src/shared/formatters.ts +14 -9
  131. package/dist/builtin/subagents/src/shared/jsonl-writer.ts +2 -1
  132. package/dist/builtin/subagents/src/shared/model-info.ts +10 -3
  133. package/dist/builtin/subagents/src/shared/post-exit-stdio-guard.ts +7 -6
  134. package/dist/builtin/subagents/src/shared/session-tokens.ts +2 -1
  135. package/dist/builtin/subagents/src/shared/settings.ts +39 -43
  136. package/dist/builtin/subagents/src/shared/status-format.ts +10 -2
  137. package/dist/builtin/subagents/src/shared/types-async.ts +22 -19
  138. package/dist/builtin/subagents/src/shared/types-config.ts +1 -1
  139. package/dist/builtin/subagents/src/shared/types-depth.ts +23 -11
  140. package/dist/builtin/subagents/src/shared/types-results.ts +49 -6
  141. package/dist/builtin/subagents/src/shared/types-runtime.ts +16 -17
  142. package/dist/builtin/subagents/src/shared/types.ts +2 -2
  143. package/dist/builtin/subagents/src/shared/utils.ts +34 -20
  144. package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +44 -47
  145. package/dist/builtin/subagents/src/slash/saved-chain-mapping.ts +5 -7
  146. package/dist/builtin/subagents/src/slash/slash-bridge.ts +3 -3
  147. package/dist/builtin/subagents/src/slash/slash-commands.ts +78 -52
  148. package/dist/builtin/subagents/src/slash/slash-live-state.ts +59 -32
  149. package/dist/builtin/subagents/src/tui/render-chain-graph.ts +120 -32
  150. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +85 -22
  151. package/dist/builtin/subagents/src/tui/render-helpers.ts +16 -6
  152. package/dist/builtin/subagents/src/tui/render-layout.ts +8 -3
  153. package/dist/builtin/subagents/src/tui/render-result-compact.ts +125 -43
  154. package/dist/builtin/subagents/src/tui/render-result.ts +128 -85
  155. package/dist/builtin/subagents/src/tui/render-stable-output.ts +17 -13
  156. package/dist/builtin/subagents/src/tui/render-status-progress.ts +52 -20
  157. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +130 -28
  158. package/dist/builtin/subagents/src/tui/render-widget.ts +54 -27
  159. package/dist/builtin/subagents/src/tui/render.ts +10 -3
  160. package/dist/builtin/web-access/package.json +2 -2
  161. package/dist/builtin/workflows/CHANGELOG.md +31 -0
  162. package/dist/builtin/workflows/README.md +7 -1
  163. package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +104 -40
  164. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +57 -26
  165. package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +125 -12
  166. package/dist/builtin/workflows/package.json +3 -3
  167. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +4 -1
  168. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-dom.js +5 -1
  169. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-session.js +7 -1
  170. package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +5 -2
  171. package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +7 -1
  172. package/dist/builtin/workflows/src/authoring/typebox-defaults.d.ts +5 -5
  173. package/dist/builtin/workflows/src/authoring/typebox-defaults.ts +160 -197
  174. package/dist/builtin/workflows/src/authoring/workflow.ts +137 -133
  175. package/dist/builtin/workflows/src/authoring.d.ts +3 -3
  176. package/dist/builtin/workflows/src/durable/backend.ts +507 -439
  177. package/dist/builtin/workflows/src/durable/boundary-lifecycle.ts +142 -118
  178. package/dist/builtin/workflows/src/durable/boundary-topology.ts +410 -355
  179. package/dist/builtin/workflows/src/durable/child-invocation.ts +6 -6
  180. package/dist/builtin/workflows/src/durable/child-primitive.ts +109 -101
  181. package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +234 -194
  182. package/dist/builtin/workflows/src/durable/completed-catalog.ts +379 -372
  183. package/dist/builtin/workflows/src/durable/completed-inspection.ts +118 -116
  184. package/dist/builtin/workflows/src/durable/completed-subtree.ts +24 -20
  185. package/dist/builtin/workflows/src/durable/dbos-backend.ts +484 -418
  186. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres-root.ts +86 -87
  187. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres.ts +171 -149
  188. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +400 -324
  189. package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +117 -121
  190. package/dist/builtin/workflows/src/durable/dbos-local-postgres.ts +75 -68
  191. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +138 -119
  192. package/dist/builtin/workflows/src/durable/dbos-prompt-reservations.ts +316 -259
  193. package/dist/builtin/workflows/src/durable/dbos-sdk-handle.ts +138 -117
  194. package/dist/builtin/workflows/src/durable/dbos-status-transition.ts +48 -43
  195. package/dist/builtin/workflows/src/durable/dbos-tombstone.ts +14 -14
  196. package/dist/builtin/workflows/src/durable/durable-hash.ts +9 -11
  197. package/dist/builtin/workflows/src/durable/factory.ts +45 -46
  198. package/dist/builtin/workflows/src/durable/format-version.ts +1 -1
  199. package/dist/builtin/workflows/src/durable/index.ts +69 -70
  200. package/dist/builtin/workflows/src/durable/local-command.ts +47 -43
  201. package/dist/builtin/workflows/src/durable/prompt-reservation-state.ts +156 -149
  202. package/dist/builtin/workflows/src/durable/prompt-reservations.ts +16 -16
  203. package/dist/builtin/workflows/src/durable/resume-catalog.ts +11 -11
  204. package/dist/builtin/workflows/src/durable/resume-eligibility.ts +27 -25
  205. package/dist/builtin/workflows/src/durable/resume-runtime.ts +261 -226
  206. package/dist/builtin/workflows/src/durable/retention-policy.ts +31 -30
  207. package/dist/builtin/workflows/src/durable/run-timing.ts +42 -41
  208. package/dist/builtin/workflows/src/durable/scoped-backend.ts +249 -228
  209. package/dist/builtin/workflows/src/durable/stage-primitive.ts +456 -398
  210. package/dist/builtin/workflows/src/durable/stage-topology-validation.ts +199 -186
  211. package/dist/builtin/workflows/src/durable/stage-topology.ts +40 -40
  212. package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +37 -37
  213. package/dist/builtin/workflows/src/durable/tool-outcome.ts +95 -85
  214. package/dist/builtin/workflows/src/durable/tool-primitive.ts +606 -410
  215. package/dist/builtin/workflows/src/durable/types.ts +219 -216
  216. package/dist/builtin/workflows/src/durable/ui-primitive.ts +241 -208
  217. package/dist/builtin/workflows/src/durable/workflow-child-result.ts +40 -37
  218. package/dist/builtin/workflows/src/durable/workflow-status-transition.ts +16 -15
  219. package/dist/builtin/workflows/src/engine/graph-inference.ts +76 -76
  220. package/dist/builtin/workflows/src/engine/options.ts +35 -36
  221. package/dist/builtin/workflows/src/engine/primitives/chain.ts +27 -22
  222. package/dist/builtin/workflows/src/engine/primitives/exit.ts +1 -1
  223. package/dist/builtin/workflows/src/engine/primitives/parallel.ts +64 -52
  224. package/dist/builtin/workflows/src/engine/primitives/task.ts +110 -95
  225. package/dist/builtin/workflows/src/engine/primitives/ui.ts +46 -50
  226. package/dist/builtin/workflows/src/engine/primitives/workflow.ts +194 -160
  227. package/dist/builtin/workflows/src/engine/replay.ts +6 -6
  228. package/dist/builtin/workflows/src/engine/run-durable-admission.ts +30 -30
  229. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +64 -47
  230. package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +29 -23
  231. package/dist/builtin/workflows/src/engine/run-durable-topology.ts +246 -219
  232. package/dist/builtin/workflows/src/engine/run-returned-status.ts +60 -57
  233. package/dist/builtin/workflows/src/engine/run-terminal-event.ts +25 -23
  234. package/dist/builtin/workflows/src/engine/run-terminal-failure.ts +45 -42
  235. package/dist/builtin/workflows/src/engine/run-tool-admission-boundary.ts +99 -0
  236. package/dist/builtin/workflows/src/engine/run-tool-control-registry.ts +179 -0
  237. package/dist/builtin/workflows/src/engine/run-tool-execution-tracker.ts +144 -132
  238. package/dist/builtin/workflows/src/engine/run-tool-node-lifecycle.ts +134 -69
  239. package/dist/builtin/workflows/src/engine/run.ts +678 -473
  240. package/dist/builtin/workflows/src/engine/runtime.ts +160 -153
  241. package/dist/builtin/workflows/src/engine/workflow-activity.ts +7 -3
  242. package/dist/builtin/workflows/src/engine/workflow-tool-abort.ts +92 -0
  243. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +123 -120
  244. package/dist/builtin/workflows/src/extension/background-ui-adapter.ts +108 -112
  245. package/dist/builtin/workflows/src/extension/companions.ts +116 -116
  246. package/dist/builtin/workflows/src/extension/completed-stage-intercom-ask.ts +123 -111
  247. package/dist/builtin/workflows/src/extension/config-file-loader.ts +153 -148
  248. package/dist/builtin/workflows/src/extension/config-loader.ts +264 -283
  249. package/dist/builtin/workflows/src/extension/discovery-loaders.ts +81 -84
  250. package/dist/builtin/workflows/src/extension/discovery.ts +267 -272
  251. package/dist/builtin/workflows/src/extension/dispatcher.ts +214 -217
  252. package/dist/builtin/workflows/src/extension/extension-factory.ts +102 -108
  253. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +118 -116
  254. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +413 -419
  255. package/dist/builtin/workflows/src/extension/hil-answer-notifications.ts +270 -261
  256. package/dist/builtin/workflows/src/extension/index.bundle.mjs +33743 -32844
  257. package/dist/builtin/workflows/src/extension/index.ts +37 -37
  258. package/dist/builtin/workflows/src/extension/lifecycle-notification-delivery.ts +64 -64
  259. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +384 -378
  260. package/dist/builtin/workflows/src/extension/mcp.ts +35 -35
  261. package/dist/builtin/workflows/src/extension/postmortem-deps.ts +31 -35
  262. package/dist/builtin/workflows/src/extension/public-types.ts +160 -182
  263. package/dist/builtin/workflows/src/extension/render-call.ts +85 -88
  264. package/dist/builtin/workflows/src/extension/render-component.ts +9 -11
  265. package/dist/builtin/workflows/src/extension/render-result.ts +447 -386
  266. package/dist/builtin/workflows/src/extension/renderers.ts +35 -35
  267. package/dist/builtin/workflows/src/extension/runtime-active-block-claim.ts +37 -37
  268. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +145 -143
  269. package/dist/builtin/workflows/src/extension/runtime.ts +346 -264
  270. package/dist/builtin/workflows/src/extension/status-writer.ts +95 -95
  271. package/dist/builtin/workflows/src/extension/ui-surface.ts +224 -222
  272. package/dist/builtin/workflows/src/extension/wiring.ts +307 -283
  273. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +109 -108
  274. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +257 -227
  275. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +84 -84
  276. package/dist/builtin/workflows/src/extension/workflow-command-utils.ts +126 -132
  277. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +213 -205
  278. package/dist/builtin/workflows/src/extension/workflow-model-catalog.ts +24 -0
  279. package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +104 -104
  280. package/dist/builtin/workflows/src/extension/workflow-policy.ts +7 -9
  281. package/dist/builtin/workflows/src/extension/workflow-ports.ts +30 -34
  282. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +15 -14
  283. package/dist/builtin/workflows/src/extension/workflow-reload-coordinator.ts +46 -46
  284. package/dist/builtin/workflows/src/extension/workflow-reload-report.ts +28 -25
  285. package/dist/builtin/workflows/src/extension/workflow-resume-picker-rows.ts +48 -45
  286. package/dist/builtin/workflows/src/extension/workflow-resume-shadow.ts +28 -31
  287. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +539 -453
  288. package/dist/builtin/workflows/src/extension/workflow-schema.ts +149 -92
  289. package/dist/builtin/workflows/src/extension/workflow-stage-results.ts +182 -194
  290. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +150 -155
  291. package/dist/builtin/workflows/src/extension/workflow-targets.ts +151 -121
  292. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +204 -224
  293. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +512 -372
  294. package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +146 -150
  295. package/dist/builtin/workflows/src/extension/workflow-tool-registration.ts +43 -46
  296. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +341 -292
  297. package/dist/builtin/workflows/src/extension/workflow-tool.ts +122 -129
  298. package/dist/builtin/workflows/src/intercom/intercom-bridge.ts +17 -20
  299. package/dist/builtin/workflows/src/intercom/intercom-routing.ts +62 -62
  300. package/dist/builtin/workflows/src/intercom/result-intercom.ts +123 -123
  301. package/dist/builtin/workflows/src/runs/background/cancellation-registry.ts +72 -59
  302. package/dist/builtin/workflows/src/runs/background/durable-resume-transition.ts +45 -45
  303. package/dist/builtin/workflows/src/runs/background/job-tracker.ts +69 -34
  304. package/dist/builtin/workflows/src/runs/background/quit-tool-node.ts +71 -0
  305. package/dist/builtin/workflows/src/runs/background/quit.ts +359 -138
  306. package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +70 -69
  307. package/dist/builtin/workflows/src/runs/background/run-inspect.ts +85 -80
  308. package/dist/builtin/workflows/src/runs/background/runner.ts +122 -121
  309. package/dist/builtin/workflows/src/runs/background/startup-admission.ts +56 -60
  310. package/dist/builtin/workflows/src/runs/background/status.ts +324 -294
  311. package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +23 -17
  312. package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +311 -309
  313. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +228 -201
  314. package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +56 -51
  315. package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +168 -152
  316. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +255 -217
  317. package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +178 -173
  318. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +273 -269
  319. package/dist/builtin/workflows/src/runs/foreground/executor-inputs.ts +59 -56
  320. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +368 -361
  321. package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +123 -127
  322. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +355 -339
  323. package/dist/builtin/workflows/src/runs/foreground/executor-queued-user-message.ts +47 -47
  324. package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +125 -104
  325. package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +189 -189
  326. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +294 -250
  327. package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +141 -127
  328. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +218 -213
  329. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +406 -364
  330. package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +143 -127
  331. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +49 -49
  332. package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +1 -1
  333. package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +148 -153
  334. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +155 -117
  335. package/dist/builtin/workflows/src/runs/foreground/executor.ts +10 -10
  336. package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +168 -141
  337. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +356 -379
  338. package/dist/builtin/workflows/src/runs/foreground/stage-delivery-activity.ts +53 -53
  339. package/dist/builtin/workflows/src/runs/foreground/stage-queued-user-messages.ts +95 -0
  340. package/dist/builtin/workflows/src/runs/foreground/stage-runner-candidate.ts +8 -8
  341. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +232 -232
  342. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +630 -493
  343. package/dist/builtin/workflows/src/runs/foreground/stage-runner-message-admission.ts +182 -181
  344. package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +80 -80
  345. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +78 -78
  346. package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +102 -104
  347. package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +178 -173
  348. package/dist/builtin/workflows/src/runs/foreground/stage-runner-replacement.ts +31 -32
  349. package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +114 -105
  350. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +29 -29
  351. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +44 -52
  352. package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +63 -58
  353. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +157 -148
  354. package/dist/builtin/workflows/src/runs/foreground/stage-runner-unresolved-overflow.ts +27 -23
  355. package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +10 -10
  356. package/dist/builtin/workflows/src/runs/foreground/stage-tool-execution-buffer.ts +33 -31
  357. package/dist/builtin/workflows/src/runs/shared/concurrency.ts +53 -53
  358. package/dist/builtin/workflows/src/runs/shared/graph-inference.ts +1 -1
  359. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +257 -245
  360. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +378 -363
  361. package/dist/builtin/workflows/src/runs/shared/prompt-callsite.ts +55 -55
  362. package/dist/builtin/workflows/src/runs/shared/validate-inputs.ts +75 -84
  363. package/dist/builtin/workflows/src/runs/shared/worktree-cache-lifecycle.ts +1 -3
  364. package/dist/builtin/workflows/src/runs/shared/worktree-cwd.ts +96 -83
  365. package/dist/builtin/workflows/src/runs/shared/worktree-diff.ts +9 -2
  366. package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +21 -6
  367. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +60 -30
  368. package/dist/builtin/workflows/src/runs/shared/worktree-post-create.ts +12 -5
  369. package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +51 -30
  370. package/dist/builtin/workflows/src/runs/shared/worktree.ts +4 -4
  371. package/dist/builtin/workflows/src/sdk-surface.ts +38 -19
  372. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +11 -5
  373. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +299 -275
  374. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +21 -7
  375. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +290 -264
  376. package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +220 -211
  377. package/dist/builtin/workflows/src/shared/intercom-group.ts +22 -22
  378. package/dist/builtin/workflows/src/shared/persistence-compaction-policy.ts +30 -30
  379. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +432 -406
  380. package/dist/builtin/workflows/src/shared/persistence-restore.ts +187 -181
  381. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +211 -212
  382. package/dist/builtin/workflows/src/shared/prompt-callsite-context.ts +3 -3
  383. package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +84 -91
  384. package/dist/builtin/workflows/src/shared/resume-continuation.ts +1 -1
  385. package/dist/builtin/workflows/src/shared/returned-run-status.ts +91 -77
  386. package/dist/builtin/workflows/src/shared/run-visibility.ts +2 -2
  387. package/dist/builtin/workflows/src/shared/schema-introspection.ts +50 -60
  388. package/dist/builtin/workflows/src/shared/serializable.ts +72 -86
  389. package/dist/builtin/workflows/src/shared/session-transcript.ts +44 -39
  390. package/dist/builtin/workflows/src/shared/stage-prompt.ts +183 -202
  391. package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +270 -274
  392. package/dist/builtin/workflows/src/shared/store-factory.ts +8 -8
  393. package/dist/builtin/workflows/src/shared/store-internal.ts +168 -172
  394. package/dist/builtin/workflows/src/shared/store-prompt-methods.ts +196 -200
  395. package/dist/builtin/workflows/src/shared/store-public-types.ts +208 -204
  396. package/dist/builtin/workflows/src/shared/store-run-methods.ts +238 -231
  397. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +284 -285
  398. package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +43 -36
  399. package/dist/builtin/workflows/src/shared/store-types.ts +263 -263
  400. package/dist/builtin/workflows/src/shared/store.ts +7 -7
  401. package/dist/builtin/workflows/src/shared/timing.ts +36 -34
  402. package/dist/builtin/workflows/src/shared/types.ts +256 -213
  403. package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +10 -4
  404. package/dist/builtin/workflows/src/shared/workflow-authoring-types.ts +81 -59
  405. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +247 -227
  406. package/dist/builtin/workflows/src/shared/workflow-failures-contract.ts +45 -46
  407. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +330 -351
  408. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +192 -195
  409. package/dist/builtin/workflows/src/shared/workflow-failures.ts +10 -10
  410. package/dist/builtin/workflows/src/shared/workflow-run-ownership.ts +32 -36
  411. package/dist/builtin/workflows/src/tui/chat-surface-message.ts +157 -184
  412. package/dist/builtin/workflows/src/tui/chat-surface.ts +332 -355
  413. package/dist/builtin/workflows/src/tui/color-utils.ts +21 -30
  414. package/dist/builtin/workflows/src/tui/connectors.ts +57 -61
  415. package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +168 -192
  416. package/dist/builtin/workflows/src/tui/edge.ts +10 -9
  417. package/dist/builtin/workflows/src/tui/graph-canvas.ts +131 -134
  418. package/dist/builtin/workflows/src/tui/graph-theme.ts +139 -148
  419. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +6 -6
  420. package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +146 -179
  421. package/dist/builtin/workflows/src/tui/graph-view-input.ts +295 -323
  422. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +291 -327
  423. package/dist/builtin/workflows/src/tui/graph-view-render.ts +171 -191
  424. package/dist/builtin/workflows/src/tui/graph-view-state.ts +317 -303
  425. package/dist/builtin/workflows/src/tui/graph-view-types.ts +65 -59
  426. package/dist/builtin/workflows/src/tui/header.ts +140 -156
  427. package/dist/builtin/workflows/src/tui/host-input-form.ts +47 -45
  428. package/dist/builtin/workflows/src/tui/inline-form-card.ts +277 -266
  429. package/dist/builtin/workflows/src/tui/inline-form-editor-text.ts +61 -62
  430. package/dist/builtin/workflows/src/tui/inline-form-editor.ts +407 -412
  431. package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +203 -214
  432. package/dist/builtin/workflows/src/tui/inline-form-store.ts +24 -24
  433. package/dist/builtin/workflows/src/tui/inputs-overlay.ts +116 -129
  434. package/dist/builtin/workflows/src/tui/inputs-picker-editing.ts +111 -115
  435. package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +255 -269
  436. package/dist/builtin/workflows/src/tui/inputs-picker-render.ts +248 -236
  437. package/dist/builtin/workflows/src/tui/inputs-picker-types.ts +111 -140
  438. package/dist/builtin/workflows/src/tui/inputs-picker.ts +12 -12
  439. package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +49 -57
  440. package/dist/builtin/workflows/src/tui/layout.ts +124 -133
  441. package/dist/builtin/workflows/src/tui/mouse-input.ts +45 -47
  442. package/dist/builtin/workflows/src/tui/node-card.ts +230 -219
  443. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +381 -394
  444. package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +20 -19
  445. package/dist/builtin/workflows/src/tui/prompt-card-input.ts +183 -194
  446. package/dist/builtin/workflows/src/tui/prompt-card-render.ts +243 -302
  447. package/dist/builtin/workflows/src/tui/prompt-card-select.ts +76 -98
  448. package/dist/builtin/workflows/src/tui/prompt-card-state.ts +40 -40
  449. package/dist/builtin/workflows/src/tui/prompt-card-text.ts +76 -83
  450. package/dist/builtin/workflows/src/tui/prompt-card.ts +3 -3
  451. package/dist/builtin/workflows/src/tui/renderers.ts +6 -6
  452. package/dist/builtin/workflows/src/tui/run-detail.ts +287 -279
  453. package/dist/builtin/workflows/src/tui/session-list.ts +19 -22
  454. package/dist/builtin/workflows/src/tui/session-overlays.ts +82 -87
  455. package/dist/builtin/workflows/src/tui/session-picker.ts +258 -275
  456. package/dist/builtin/workflows/src/tui/stage-chat-composer-drafts.ts +11 -11
  457. package/dist/builtin/workflows/src/tui/stage-chat-layout.ts +55 -62
  458. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +220 -263
  459. package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +91 -102
  460. package/dist/builtin/workflows/src/tui/stage-chat-view-delivery-activity.ts +51 -59
  461. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +154 -208
  462. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +174 -208
  463. package/dist/builtin/workflows/src/tui/stage-chat-view-live-events.ts +32 -44
  464. package/dist/builtin/workflows/src/tui/stage-chat-view-pending-tools.ts +2 -4
  465. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +82 -97
  466. package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +33 -31
  467. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +428 -400
  468. package/dist/builtin/workflows/src/tui/stage-chat-view-status.ts +24 -25
  469. package/dist/builtin/workflows/src/tui/stage-chat-view-transcript.ts +181 -197
  470. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +125 -134
  471. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +210 -211
  472. package/dist/builtin/workflows/src/tui/status-helpers.ts +65 -69
  473. package/dist/builtin/workflows/src/tui/status-list.ts +316 -294
  474. package/dist/builtin/workflows/src/tui/store-widget-installer.ts +213 -214
  475. package/dist/builtin/workflows/src/tui/submit-pane.ts +114 -130
  476. package/dist/builtin/workflows/src/tui/switcher.ts +116 -134
  477. package/dist/builtin/workflows/src/tui/text-helpers.ts +136 -145
  478. package/dist/builtin/workflows/src/tui/toast.ts +68 -67
  479. package/dist/builtin/workflows/src/tui/widget.ts +265 -285
  480. package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +12 -17
  481. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +81 -82
  482. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +467 -445
  483. package/dist/builtin/workflows/src/tui/workflow-list.ts +130 -145
  484. package/dist/builtin/workflows/src/tui/workflow-notice-card.ts +127 -144
  485. package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +217 -216
  486. package/dist/builtin/workflows/src/workflows/identity.ts +11 -11
  487. package/dist/builtin/workflows/src/workflows/registry.ts +66 -68
  488. package/dist/bun/cli.js.map +1 -1
  489. package/dist/bun/internal-intercom-broker.d.ts.map +1 -1
  490. package/dist/bun/internal-intercom-broker.js +1 -1
  491. package/dist/bun/internal-intercom-broker.js.map +1 -1
  492. package/dist/bun/register-bedrock.js +1 -1
  493. package/dist/bun/register-bedrock.js.map +1 -1
  494. package/dist/cli/args.d.ts.map +1 -1
  495. package/dist/cli/args.js +8 -1
  496. package/dist/cli/args.js.map +1 -1
  497. package/dist/cli/credential-print.d.ts +170 -0
  498. package/dist/cli/credential-print.d.ts.map +1 -0
  499. package/dist/cli/credential-print.js +513 -0
  500. package/dist/cli/credential-print.js.map +1 -0
  501. package/dist/cli/list-models.d.ts +2 -2
  502. package/dist/cli/list-models.d.ts.map +1 -1
  503. package/dist/cli/list-models.js +5 -5
  504. package/dist/cli/list-models.js.map +1 -1
  505. package/dist/cli/project-trust.d.ts +1 -1
  506. package/dist/cli/project-trust.d.ts.map +1 -1
  507. package/dist/cli/project-trust.js.map +1 -1
  508. package/dist/cli/startup-ui.d.ts.map +1 -1
  509. package/dist/cli/startup-ui.js +13 -6
  510. package/dist/cli/startup-ui.js.map +1 -1
  511. package/dist/config-self-update.d.ts.map +1 -1
  512. package/dist/config-self-update.js +5 -2
  513. package/dist/config-self-update.js.map +1 -1
  514. package/dist/config.d.ts.map +1 -1
  515. package/dist/config.js +1 -3
  516. package/dist/config.js.map +1 -1
  517. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  518. package/dist/core/agent-session-accessors.js +125 -25
  519. package/dist/core/agent-session-accessors.js.map +1 -1
  520. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  521. package/dist/core/agent-session-auto-compaction.js +6 -7
  522. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  523. package/dist/core/agent-session-bash.d.ts +1 -1
  524. package/dist/core/agent-session-bash.d.ts.map +1 -1
  525. package/dist/core/agent-session-bash.js +3 -1
  526. package/dist/core/agent-session-bash.js.map +1 -1
  527. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  528. package/dist/core/agent-session-compaction.js +46 -9
  529. package/dist/core/agent-session-compaction.js.map +1 -1
  530. package/dist/core/agent-session-custom-message-commit.d.ts +1 -1
  531. package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -1
  532. package/dist/core/agent-session-custom-message-commit.js +13 -9
  533. package/dist/core/agent-session-custom-message-commit.js.map +1 -1
  534. package/dist/core/agent-session-delivery-forwarding.d.ts +1 -1
  535. package/dist/core/agent-session-delivery-forwarding.d.ts.map +1 -1
  536. package/dist/core/agent-session-delivery-forwarding.js.map +1 -1
  537. package/dist/core/agent-session-events.d.ts.map +1 -1
  538. package/dist/core/agent-session-events.js +15 -8
  539. package/dist/core/agent-session-events.js.map +1 -1
  540. package/dist/core/agent-session-export.d.ts +1 -1
  541. package/dist/core/agent-session-export.d.ts.map +1 -1
  542. package/dist/core/agent-session-export.js.map +1 -1
  543. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  544. package/dist/core/agent-session-extension-bindings.js +17 -10
  545. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  546. package/dist/core/agent-session-message-queue.d.ts +4 -4
  547. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  548. package/dist/core/agent-session-message-queue.js +21 -12
  549. package/dist/core/agent-session-message-queue.js.map +1 -1
  550. package/dist/core/agent-session-methods.d.ts +8 -9
  551. package/dist/core/agent-session-methods.d.ts.map +1 -1
  552. package/dist/core/agent-session-methods.js.map +1 -1
  553. package/dist/core/agent-session-models.d.ts +1 -1
  554. package/dist/core/agent-session-models.d.ts.map +1 -1
  555. package/dist/core/agent-session-models.js +19 -15
  556. package/dist/core/agent-session-models.js.map +1 -1
  557. package/dist/core/agent-session-persistent-custom-messages.d.ts +1 -1
  558. package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -1
  559. package/dist/core/agent-session-persistent-custom-messages.js +6 -4
  560. package/dist/core/agent-session-persistent-custom-messages.js.map +1 -1
  561. package/dist/core/agent-session-post-tool-compaction.d.ts +1 -1
  562. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  563. package/dist/core/agent-session-post-tool-compaction.js +2 -4
  564. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  565. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  566. package/dist/core/agent-session-prompt.js +7 -11
  567. package/dist/core/agent-session-prompt.js.map +1 -1
  568. package/dist/core/agent-session-queue-pause.d.ts.map +1 -1
  569. package/dist/core/agent-session-queue-pause.js +8 -7
  570. package/dist/core/agent-session-queue-pause.js.map +1 -1
  571. package/dist/core/agent-session-retry.d.ts.map +1 -1
  572. package/dist/core/agent-session-retry.js +31 -8
  573. package/dist/core/agent-session-retry.js.map +1 -1
  574. package/dist/core/agent-session-runtime-auth.d.ts +3 -3
  575. package/dist/core/agent-session-runtime-auth.d.ts.map +1 -1
  576. package/dist/core/agent-session-runtime-auth.js +7 -15
  577. package/dist/core/agent-session-runtime-auth.js.map +1 -1
  578. package/dist/core/agent-session-runtime.d.ts +14 -3
  579. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  580. package/dist/core/agent-session-runtime.js +20 -4
  581. package/dist/core/agent-session-runtime.js.map +1 -1
  582. package/dist/core/agent-session-services.d.ts +3 -8
  583. package/dist/core/agent-session-services.d.ts.map +1 -1
  584. package/dist/core/agent-session-services.js +20 -25
  585. package/dist/core/agent-session-services.js.map +1 -1
  586. package/dist/core/agent-session-state.d.ts +1 -1
  587. package/dist/core/agent-session-state.d.ts.map +1 -1
  588. package/dist/core/agent-session-state.js.map +1 -1
  589. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  590. package/dist/core/agent-session-tool-hooks.js +2 -6
  591. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  592. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  593. package/dist/core/agent-session-tool-registry.js +5 -3
  594. package/dist/core/agent-session-tool-registry.js.map +1 -1
  595. package/dist/core/agent-session-transfer.d.ts.map +1 -1
  596. package/dist/core/agent-session-transfer.js +6 -10
  597. package/dist/core/agent-session-transfer.js.map +1 -1
  598. package/dist/core/agent-session-tree.d.ts +1 -1
  599. package/dist/core/agent-session-tree.d.ts.map +1 -1
  600. package/dist/core/agent-session-tree.js +5 -0
  601. package/dist/core/agent-session-tree.js.map +1 -1
  602. package/dist/core/agent-session-types.d.ts +3 -3
  603. package/dist/core/agent-session-types.d.ts.map +1 -1
  604. package/dist/core/agent-session-types.js +4 -1
  605. package/dist/core/agent-session-types.js.map +1 -1
  606. package/dist/core/agent-session.d.ts +16 -12
  607. package/dist/core/agent-session.d.ts.map +1 -1
  608. package/dist/core/agent-session.js +9 -10
  609. package/dist/core/agent-session.js.map +1 -1
  610. package/dist/core/anthropic-thinking-guard.d.ts.map +1 -1
  611. package/dist/core/anthropic-thinking-guard.js +4 -2
  612. package/dist/core/anthropic-thinking-guard.js.map +1 -1
  613. package/dist/core/async/format.d.ts +1 -1
  614. package/dist/core/async/format.d.ts.map +1 -1
  615. package/dist/core/async/format.js +3 -1
  616. package/dist/core/async/format.js.map +1 -1
  617. package/dist/core/async/job-manager.d.ts.map +1 -1
  618. package/dist/core/async/job-manager.js +20 -5
  619. package/dist/core/async/job-manager.js.map +1 -1
  620. package/dist/core/async/session-manager.d.ts.map +1 -1
  621. package/dist/core/async/session-manager.js.map +1 -1
  622. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  623. package/dist/core/atomic-guide-command.js +1 -2
  624. package/dist/core/atomic-guide-command.js.map +1 -1
  625. package/dist/core/auth-guidance.d.ts.map +1 -1
  626. package/dist/core/auth-guidance.js.map +1 -1
  627. package/dist/core/auth-storage-backends.d.ts +1 -0
  628. package/dist/core/auth-storage-backends.d.ts.map +1 -1
  629. package/dist/core/auth-storage-backends.js +18 -4
  630. package/dist/core/auth-storage-backends.js.map +1 -1
  631. package/dist/core/auth-storage.d.ts +13 -140
  632. package/dist/core/auth-storage.d.ts.map +1 -1
  633. package/dist/core/auth-storage.js +69 -379
  634. package/dist/core/auth-storage.js.map +1 -1
  635. package/dist/core/builtin-packages.d.ts.map +1 -1
  636. package/dist/core/builtin-packages.js +1 -4
  637. package/dist/core/builtin-packages.js.map +1 -1
  638. package/dist/core/cache-stats.d.ts.map +1 -1
  639. package/dist/core/cache-stats.js +8 -6
  640. package/dist/core/cache-stats.js.map +1 -1
  641. package/dist/core/callback-activity.d.ts.map +1 -1
  642. package/dist/core/callback-activity.js.map +1 -1
  643. package/dist/core/codex-errors.d.ts.map +1 -1
  644. package/dist/core/codex-errors.js +1 -1
  645. package/dist/core/codex-errors.js.map +1 -1
  646. package/dist/core/codex-fast-mode.d.ts.map +1 -1
  647. package/dist/core/codex-fast-mode.js.map +1 -1
  648. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  649. package/dist/core/compaction/branch-summarization.js +1 -1
  650. package/dist/core/compaction/branch-summarization.js.map +1 -1
  651. package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
  652. package/dist/core/compaction/compaction-boundary.js +10 -6
  653. package/dist/core/compaction/compaction-boundary.js.map +1 -1
  654. package/dist/core/compaction/compaction-runner.d.ts +1 -1
  655. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  656. package/dist/core/compaction/compaction-runner.js +2 -4
  657. package/dist/core/compaction/compaction-runner.js.map +1 -1
  658. package/dist/core/compaction/compaction.d.ts.map +1 -1
  659. package/dist/core/compaction/compaction.js +5 -1
  660. package/dist/core/compaction/compaction.js.map +1 -1
  661. package/dist/core/compaction/deleted-ranges.d.ts.map +1 -1
  662. package/dist/core/compaction/deleted-ranges.js.map +1 -1
  663. package/dist/core/compaction/fallback-planner.d.ts.map +1 -1
  664. package/dist/core/compaction/fallback-planner.js.map +1 -1
  665. package/dist/core/compaction/index.d.ts +6 -6
  666. package/dist/core/compaction/index.d.ts.map +1 -1
  667. package/dist/core/compaction/index.js +6 -6
  668. package/dist/core/compaction/index.js.map +1 -1
  669. package/dist/core/compaction/planner-outcome.d.ts.map +1 -1
  670. package/dist/core/compaction/planner-outcome.js.map +1 -1
  671. package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
  672. package/dist/core/compaction/range-planner-diagnostics.js +4 -2
  673. package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
  674. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  675. package/dist/core/compaction/range-planner.js +4 -1
  676. package/dist/core/compaction/range-planner.js.map +1 -1
  677. package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
  678. package/dist/core/compaction/transcript-serialization.js.map +1 -1
  679. package/dist/core/context-tool-pairing.js +3 -3
  680. package/dist/core/context-tool-pairing.js.map +1 -1
  681. package/dist/core/copilot-env-routing.d.ts +36 -0
  682. package/dist/core/copilot-env-routing.d.ts.map +1 -0
  683. package/dist/core/copilot-env-routing.js +94 -0
  684. package/dist/core/copilot-env-routing.js.map +1 -0
  685. package/dist/core/exec.d.ts.map +1 -1
  686. package/dist/core/exec.js +5 -0
  687. package/dist/core/exec.js.map +1 -1
  688. package/dist/core/experimental.d.ts.map +1 -1
  689. package/dist/core/experimental.js +2 -1
  690. package/dist/core/experimental.js.map +1 -1
  691. package/dist/core/extensions/api-types.d.ts +2 -2
  692. package/dist/core/extensions/api-types.d.ts.map +1 -1
  693. package/dist/core/extensions/api-types.js.map +1 -1
  694. package/dist/core/extensions/context-types.d.ts +7 -1
  695. package/dist/core/extensions/context-types.d.ts.map +1 -1
  696. package/dist/core/extensions/context-types.js.map +1 -1
  697. package/dist/core/extensions/index.d.ts +7 -7
  698. package/dist/core/extensions/index.d.ts.map +1 -1
  699. package/dist/core/extensions/index.js +2 -2
  700. package/dist/core/extensions/index.js.map +1 -1
  701. package/dist/core/extensions/loader-api.d.ts +1 -1
  702. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  703. package/dist/core/extensions/loader-api.js +4 -2
  704. package/dist/core/extensions/loader-api.js.map +1 -1
  705. package/dist/core/extensions/loader-core.d.ts.map +1 -1
  706. package/dist/core/extensions/loader-core.js +2 -2
  707. package/dist/core/extensions/loader-core.js.map +1 -1
  708. package/dist/core/extensions/loader-discovery.d.ts.map +1 -1
  709. package/dist/core/extensions/loader-discovery.js.map +1 -1
  710. package/dist/core/extensions/loader-resources.d.ts.map +1 -1
  711. package/dist/core/extensions/loader-resources.js.map +1 -1
  712. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  713. package/dist/core/extensions/loader-runtime.js +23 -11
  714. package/dist/core/extensions/loader-runtime.js.map +1 -1
  715. package/dist/core/extensions/loader-virtual-modules.d.ts +17 -0
  716. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  717. package/dist/core/extensions/loader-virtual-modules.js +288 -19
  718. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  719. package/dist/core/extensions/loader.d.ts.map +1 -1
  720. package/dist/core/extensions/loader.js.map +1 -1
  721. package/dist/core/extensions/provider-types.d.ts +2 -42
  722. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  723. package/dist/core/extensions/provider-types.js.map +1 -1
  724. package/dist/core/extensions/reactive-widget.d.ts.map +1 -1
  725. package/dist/core/extensions/reactive-widget.js.map +1 -1
  726. package/dist/core/extensions/runner-context.d.ts +27 -1
  727. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  728. package/dist/core/extensions/runner-context.js +52 -0
  729. package/dist/core/extensions/runner-context.js.map +1 -1
  730. package/dist/core/extensions/runner-events.d.ts.map +1 -1
  731. package/dist/core/extensions/runner-events.js.map +1 -1
  732. package/dist/core/extensions/runner.d.ts +1 -0
  733. package/dist/core/extensions/runner.d.ts.map +1 -1
  734. package/dist/core/extensions/runner.js +18 -6
  735. package/dist/core/extensions/runner.js.map +1 -1
  736. package/dist/core/extensions/runtime-types.d.ts +3 -1
  737. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  738. package/dist/core/extensions/runtime-types.js.map +1 -1
  739. package/dist/core/extensions/session-events.d.ts.map +1 -1
  740. package/dist/core/extensions/session-events.js.map +1 -1
  741. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  742. package/dist/core/extensions/tool-types.js.map +1 -1
  743. package/dist/core/extensions/types.d.ts +15 -2
  744. package/dist/core/extensions/types.d.ts.map +1 -1
  745. package/dist/core/extensions/types.js +1 -1
  746. package/dist/core/extensions/types.js.map +1 -1
  747. package/dist/core/extensions/ui-types.d.ts +16 -2
  748. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  749. package/dist/core/extensions/ui-types.js.map +1 -1
  750. package/dist/core/fallback-models.d.ts +4 -4
  751. package/dist/core/fallback-models.d.ts.map +1 -1
  752. package/dist/core/fallback-models.js +14 -5
  753. package/dist/core/fallback-models.js.map +1 -1
  754. package/dist/core/flattened-tool-arguments.d.ts.map +1 -1
  755. package/dist/core/flattened-tool-arguments.js.map +1 -1
  756. package/dist/core/footer-data-provider.d.ts +10 -0
  757. package/dist/core/footer-data-provider.d.ts.map +1 -1
  758. package/dist/core/footer-data-provider.js +5 -3
  759. package/dist/core/footer-data-provider.js.map +1 -1
  760. package/dist/core/http-dispatcher.d.ts.map +1 -1
  761. package/dist/core/http-dispatcher.js.map +1 -1
  762. package/dist/core/keybindings.d.ts +1 -1
  763. package/dist/core/keybindings.d.ts.map +1 -1
  764. package/dist/core/keybindings.js.map +1 -1
  765. package/dist/core/messages.d.ts.map +1 -1
  766. package/dist/core/messages.js.map +1 -1
  767. package/dist/core/model-capabilities.d.ts.map +1 -1
  768. package/dist/core/model-capabilities.js +1 -2
  769. package/dist/core/model-capabilities.js.map +1 -1
  770. package/dist/core/model-config.d.ts +542 -0
  771. package/dist/core/model-config.d.ts.map +1 -0
  772. package/dist/core/{model-registry-schemas.js → model-config.js} +85 -34
  773. package/dist/core/model-config.js.map +1 -0
  774. package/dist/core/model-registry.d.ts +25 -85
  775. package/dist/core/model-registry.d.ts.map +1 -1
  776. package/dist/core/model-registry.js +65 -388
  777. package/dist/core/model-registry.js.map +1 -1
  778. package/dist/core/model-resolver-cli.d.ts +2 -2
  779. package/dist/core/model-resolver-cli.d.ts.map +1 -1
  780. package/dist/core/model-resolver-cli.js +2 -2
  781. package/dist/core/model-resolver-cli.js.map +1 -1
  782. package/dist/core/model-resolver-defaults.js.map +1 -1
  783. package/dist/core/model-resolver-initial.d.ts +4 -4
  784. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  785. package/dist/core/model-resolver-initial.js +18 -18
  786. package/dist/core/model-resolver-initial.js.map +1 -1
  787. package/dist/core/model-resolver-patterns.d.ts.map +1 -1
  788. package/dist/core/model-resolver-patterns.js.map +1 -1
  789. package/dist/core/model-resolver-scope.d.ts +3 -3
  790. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  791. package/dist/core/model-resolver-scope.js +16 -6
  792. package/dist/core/model-resolver-scope.js.map +1 -1
  793. package/dist/core/model-resolver-types.d.ts.map +1 -1
  794. package/dist/core/model-resolver-types.js.map +1 -1
  795. package/dist/core/model-resolver.d.ts +3 -3
  796. package/dist/core/model-resolver.d.ts.map +1 -1
  797. package/dist/core/model-resolver.js +1 -1
  798. package/dist/core/model-resolver.js.map +1 -1
  799. package/dist/core/model-runtime-auth.d.ts +7 -0
  800. package/dist/core/model-runtime-auth.d.ts.map +1 -0
  801. package/dist/core/model-runtime-auth.js +17 -0
  802. package/dist/core/model-runtime-auth.js.map +1 -0
  803. package/dist/core/model-runtime-providers.d.ts +6 -0
  804. package/dist/core/model-runtime-providers.d.ts.map +1 -0
  805. package/dist/core/model-runtime-providers.js +22 -0
  806. package/dist/core/model-runtime-providers.js.map +1 -0
  807. package/dist/core/model-runtime-restoration.d.ts +6 -0
  808. package/dist/core/model-runtime-restoration.d.ts.map +1 -0
  809. package/dist/core/model-runtime-restoration.js +21 -0
  810. package/dist/core/model-runtime-restoration.js.map +1 -0
  811. package/dist/core/model-runtime-snapshot.d.ts +16 -0
  812. package/dist/core/model-runtime-snapshot.d.ts.map +1 -0
  813. package/dist/core/model-runtime-snapshot.js +52 -0
  814. package/dist/core/model-runtime-snapshot.js.map +1 -0
  815. package/dist/core/model-runtime-streaming.d.ts +17 -0
  816. package/dist/core/model-runtime-streaming.d.ts.map +1 -0
  817. package/dist/core/model-runtime-streaming.js +66 -0
  818. package/dist/core/model-runtime-streaming.js.map +1 -0
  819. package/dist/core/model-runtime-types.d.ts +21 -0
  820. package/dist/core/model-runtime-types.d.ts.map +1 -0
  821. package/dist/core/model-runtime-types.js +2 -0
  822. package/dist/core/model-runtime-types.js.map +1 -0
  823. package/dist/core/model-runtime.d.ts +50 -29
  824. package/dist/core/model-runtime.d.ts.map +1 -1
  825. package/dist/core/model-runtime.js +332 -90
  826. package/dist/core/model-runtime.js.map +1 -1
  827. package/dist/core/models-store.d.ts +2 -10
  828. package/dist/core/models-store.d.ts.map +1 -1
  829. package/dist/core/models-store.js +2 -29
  830. package/dist/core/models-store.js.map +1 -1
  831. package/dist/core/oauth-login.d.ts +24 -0
  832. package/dist/core/oauth-login.d.ts.map +1 -0
  833. package/dist/core/oauth-login.js +92 -0
  834. package/dist/core/oauth-login.js.map +1 -0
  835. package/dist/core/oauth-provider-metadata.d.ts +5 -0
  836. package/dist/core/oauth-provider-metadata.d.ts.map +1 -0
  837. package/dist/core/oauth-provider-metadata.js +33 -0
  838. package/dist/core/oauth-provider-metadata.js.map +1 -0
  839. package/dist/core/openai-responses-payload-sanitizer.js.map +1 -1
  840. package/dist/core/output-guard.d.ts +44 -0
  841. package/dist/core/output-guard.d.ts.map +1 -1
  842. package/dist/core/output-guard.js +63 -0
  843. package/dist/core/output-guard.js.map +1 -1
  844. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  845. package/dist/core/package-manager-auto-resources.js +6 -1
  846. package/dist/core/package-manager-auto-resources.js.map +1 -1
  847. package/dist/core/package-manager-git.d.ts.map +1 -1
  848. package/dist/core/package-manager-git.js +27 -11
  849. package/dist/core/package-manager-git.js.map +1 -1
  850. package/dist/core/package-manager-npm.d.ts.map +1 -1
  851. package/dist/core/package-manager-npm.js +4 -2
  852. package/dist/core/package-manager-npm.js.map +1 -1
  853. package/dist/core/package-manager-operations.d.ts.map +1 -1
  854. package/dist/core/package-manager-operations.js +2 -2
  855. package/dist/core/package-manager-operations.js.map +1 -1
  856. package/dist/core/package-manager-paths.d.ts.map +1 -1
  857. package/dist/core/package-manager-paths.js.map +1 -1
  858. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  859. package/dist/core/package-manager-resolver.js +19 -16
  860. package/dist/core/package-manager-resolver.js.map +1 -1
  861. package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
  862. package/dist/core/package-manager-resource-collector.js +6 -6
  863. package/dist/core/package-manager-resource-collector.js.map +1 -1
  864. package/dist/core/package-manager-resource-files.d.ts.map +1 -1
  865. package/dist/core/package-manager-resource-files.js +4 -3
  866. package/dist/core/package-manager-resource-files.js.map +1 -1
  867. package/dist/core/package-manager-resource-patterns.d.ts.map +1 -1
  868. package/dist/core/package-manager-resource-patterns.js.map +1 -1
  869. package/dist/core/package-manager-settings.d.ts.map +1 -1
  870. package/dist/core/package-manager-settings.js +3 -2
  871. package/dist/core/package-manager-settings.js.map +1 -1
  872. package/dist/core/package-manager-source.d.ts.map +1 -1
  873. package/dist/core/package-manager-source.js +1 -1
  874. package/dist/core/package-manager-source.js.map +1 -1
  875. package/dist/core/package-manager.d.ts +1 -1
  876. package/dist/core/package-manager.d.ts.map +1 -1
  877. package/dist/core/package-manager.js +2 -3
  878. package/dist/core/package-manager.js.map +1 -1
  879. package/dist/core/prompt-templates-async.d.ts.map +1 -1
  880. package/dist/core/prompt-templates-async.js +15 -7
  881. package/dist/core/prompt-templates-async.js.map +1 -1
  882. package/dist/core/prompt-templates.d.ts.map +1 -1
  883. package/dist/core/prompt-templates.js +1 -3
  884. package/dist/core/prompt-templates.js.map +1 -1
  885. package/dist/core/provider-composer-internal.d.ts +53 -0
  886. package/dist/core/provider-composer-internal.d.ts.map +1 -0
  887. package/dist/core/provider-composer-internal.js +273 -0
  888. package/dist/core/provider-composer-internal.js.map +1 -0
  889. package/dist/core/provider-composer.d.ts +16 -0
  890. package/dist/core/provider-composer.d.ts.map +1 -0
  891. package/dist/core/provider-composer.js +108 -0
  892. package/dist/core/provider-composer.js.map +1 -0
  893. package/dist/core/provider-context-usage.d.ts.map +1 -1
  894. package/dist/core/provider-context-usage.js +2 -1
  895. package/dist/core/provider-context-usage.js.map +1 -1
  896. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  897. package/dist/core/remote-catalog-provider.js +74 -122
  898. package/dist/core/remote-catalog-provider.js.map +1 -1
  899. package/dist/core/resolve-config-value.d.ts +8 -7
  900. package/dist/core/resolve-config-value.d.ts.map +1 -1
  901. package/dist/core/resolve-config-value.js +26 -23
  902. package/dist/core/resolve-config-value.js.map +1 -1
  903. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  904. package/dist/core/resource-loader-assets.js +31 -7
  905. package/dist/core/resource-loader-assets.js.map +1 -1
  906. package/dist/core/resource-loader-context-files.d.ts +6 -0
  907. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  908. package/dist/core/resource-loader-context-files.js +83 -4
  909. package/dist/core/resource-loader-context-files.js.map +1 -1
  910. package/dist/core/resource-loader-core.d.ts +12 -3
  911. package/dist/core/resource-loader-core.d.ts.map +1 -1
  912. package/dist/core/resource-loader-core.js +36 -19
  913. package/dist/core/resource-loader-core.js.map +1 -1
  914. package/dist/core/resource-loader-discovery.d.ts.map +1 -1
  915. package/dist/core/resource-loader-discovery.js.map +1 -1
  916. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  917. package/dist/core/resource-loader-extensions.js +33 -21
  918. package/dist/core/resource-loader-extensions.js.map +1 -1
  919. package/dist/core/resource-loader-internals.d.ts +13 -6
  920. package/dist/core/resource-loader-internals.d.ts.map +1 -1
  921. package/dist/core/resource-loader-internals.js.map +1 -1
  922. package/dist/core/resource-loader-package-resources.d.ts.map +1 -1
  923. package/dist/core/resource-loader-package-resources.js +1 -1
  924. package/dist/core/resource-loader-package-resources.js.map +1 -1
  925. package/dist/core/resource-loader-paths.js.map +1 -1
  926. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  927. package/dist/core/resource-loader-reload.js +28 -13
  928. package/dist/core/resource-loader-reload.js.map +1 -1
  929. package/dist/core/resource-loader-source-info.d.ts +1 -1
  930. package/dist/core/resource-loader-source-info.d.ts.map +1 -1
  931. package/dist/core/resource-loader-source-info.js +1 -1
  932. package/dist/core/resource-loader-source-info.js.map +1 -1
  933. package/dist/core/resource-loader-types.d.ts +9 -3
  934. package/dist/core/resource-loader-types.d.ts.map +1 -1
  935. package/dist/core/resource-loader-types.js.map +1 -1
  936. package/dist/core/resource-loader.d.ts +1 -1
  937. package/dist/core/resource-loader.d.ts.map +1 -1
  938. package/dist/core/resource-loader.js +1 -1
  939. package/dist/core/resource-loader.js.map +1 -1
  940. package/dist/core/runtime-credentials.d.ts +16 -0
  941. package/dist/core/runtime-credentials.d.ts.map +1 -0
  942. package/dist/core/runtime-credentials.js +42 -0
  943. package/dist/core/runtime-credentials.js.map +1 -0
  944. package/dist/core/sdk-exports.d.ts +1 -1
  945. package/dist/core/sdk-exports.d.ts.map +1 -1
  946. package/dist/core/sdk-exports.js +2 -2
  947. package/dist/core/sdk-exports.js.map +1 -1
  948. package/dist/core/sdk-types.d.ts +4 -10
  949. package/dist/core/sdk-types.d.ts.map +1 -1
  950. package/dist/core/sdk-types.js.map +1 -1
  951. package/dist/core/sdk.d.ts +1 -1
  952. package/dist/core/sdk.d.ts.map +1 -1
  953. package/dist/core/sdk.js +37 -45
  954. package/dist/core/sdk.js.map +1 -1
  955. package/dist/core/session-manager-archive.d.ts.map +1 -1
  956. package/dist/core/session-manager-archive.js +5 -2
  957. package/dist/core/session-manager-archive.js.map +1 -1
  958. package/dist/core/session-manager-classification.js +3 -3
  959. package/dist/core/session-manager-classification.js.map +1 -1
  960. package/dist/core/session-manager-core.d.ts.map +1 -1
  961. package/dist/core/session-manager-core.js +3 -3
  962. package/dist/core/session-manager-core.js.map +1 -1
  963. package/dist/core/session-manager-entries.d.ts +1 -1
  964. package/dist/core/session-manager-entries.d.ts.map +1 -1
  965. package/dist/core/session-manager-entries.js.map +1 -1
  966. package/dist/core/session-manager-history.d.ts.map +1 -1
  967. package/dist/core/session-manager-history.js +13 -5
  968. package/dist/core/session-manager-history.js.map +1 -1
  969. package/dist/core/session-manager-list.d.ts.map +1 -1
  970. package/dist/core/session-manager-list.js +1 -1
  971. package/dist/core/session-manager-list.js.map +1 -1
  972. package/dist/core/session-manager-migrations.js.map +1 -1
  973. package/dist/core/session-manager-storage.d.ts.map +1 -1
  974. package/dist/core/session-manager-storage.js.map +1 -1
  975. package/dist/core/session-manager-types.d.ts.map +1 -1
  976. package/dist/core/session-manager-types.js.map +1 -1
  977. package/dist/core/session-manager.d.ts +4 -4
  978. package/dist/core/session-manager.d.ts.map +1 -1
  979. package/dist/core/session-manager.js +2 -2
  980. package/dist/core/session-manager.js.map +1 -1
  981. package/dist/core/settings-manager-core.d.ts.map +1 -1
  982. package/dist/core/settings-manager-core.js.map +1 -1
  983. package/dist/core/settings-manager-ui-accessors.js +2 -1
  984. package/dist/core/settings-manager-ui-accessors.js.map +1 -1
  985. package/dist/core/settings-storage.d.ts.map +1 -1
  986. package/dist/core/settings-storage.js +3 -3
  987. package/dist/core/settings-storage.js.map +1 -1
  988. package/dist/core/settings-types.d.ts.map +1 -1
  989. package/dist/core/settings-types.js.map +1 -1
  990. package/dist/core/skills-async.d.ts.map +1 -1
  991. package/dist/core/skills-async.js +18 -8
  992. package/dist/core/skills-async.js.map +1 -1
  993. package/dist/core/slash-commands.d.ts.map +1 -1
  994. package/dist/core/slash-commands.js +76 -19
  995. package/dist/core/slash-commands.js.map +1 -1
  996. package/dist/core/system-prompt.d.ts.map +1 -1
  997. package/dist/core/system-prompt.js +5 -19
  998. package/dist/core/system-prompt.js.map +1 -1
  999. package/dist/core/thinking-blocks.d.ts.map +1 -1
  1000. package/dist/core/thinking-blocks.js +2 -2
  1001. package/dist/core/thinking-blocks.js.map +1 -1
  1002. package/dist/core/tools/artifact-protocol.d.ts.map +1 -1
  1003. package/dist/core/tools/artifact-protocol.js.map +1 -1
  1004. package/dist/core/tools/artifacts.d.ts.map +1 -1
  1005. package/dist/core/tools/artifacts.js.map +1 -1
  1006. package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
  1007. package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
  1008. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts +1 -1
  1009. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts.map +1 -1
  1010. package/dist/core/tools/ask-user-question/state/build-questionnaire.js +1 -1
  1011. package/dist/core/tools/ask-user-question/state/build-questionnaire.js.map +1 -1
  1012. package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts.map +1 -1
  1013. package/dist/core/tools/ask-user-question/state/questionnaire-session.js +2 -4
  1014. package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
  1015. package/dist/core/tools/ask-user-question/state/state-reducer.d.ts.map +1 -1
  1016. package/dist/core/tools/ask-user-question/state/state-reducer.js.map +1 -1
  1017. package/dist/core/tools/ask-user-question/view/body-residual-spacer.d.ts.map +1 -1
  1018. package/dist/core/tools/ask-user-question/view/body-residual-spacer.js.map +1 -1
  1019. package/dist/core/tools/ask-user-question/view/components/multi-select-view.d.ts.map +1 -1
  1020. package/dist/core/tools/ask-user-question/view/components/multi-select-view.js.map +1 -1
  1021. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts +1 -1
  1022. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts.map +1 -1
  1023. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js.map +1 -1
  1024. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts +1 -1
  1025. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts.map +1 -1
  1026. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js +1 -3
  1027. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js.map +1 -1
  1028. package/dist/core/tools/ask-user-question/view/components/submit-picker.d.ts.map +1 -1
  1029. package/dist/core/tools/ask-user-question/view/components/submit-picker.js.map +1 -1
  1030. package/dist/core/tools/ask-user-question/view/components/tab-bar.d.ts.map +1 -1
  1031. package/dist/core/tools/ask-user-question/view/components/tab-bar.js.map +1 -1
  1032. package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts +1 -1
  1033. package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts.map +1 -1
  1034. package/dist/core/tools/ask-user-question/view/dialog-builder.js +1 -1
  1035. package/dist/core/tools/ask-user-question/view/dialog-builder.js.map +1 -1
  1036. package/dist/core/tools/ask-user-question/view/props-adapter.d.ts.map +1 -1
  1037. package/dist/core/tools/ask-user-question/view/props-adapter.js +2 -4
  1038. package/dist/core/tools/ask-user-question/view/props-adapter.js.map +1 -1
  1039. package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts +1 -1
  1040. package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts.map +1 -1
  1041. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js +2 -9
  1042. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js.map +1 -1
  1043. package/dist/core/tools/bash-async-execution.d.ts.map +1 -1
  1044. package/dist/core/tools/bash-async-execution.js +11 -4
  1045. package/dist/core/tools/bash-async-execution.js.map +1 -1
  1046. package/dist/core/tools/bash-async-jobs.d.ts.map +1 -1
  1047. package/dist/core/tools/bash-async-jobs.js +14 -2
  1048. package/dist/core/tools/bash-async-jobs.js.map +1 -1
  1049. package/dist/core/tools/bash-async-output.d.ts.map +1 -1
  1050. package/dist/core/tools/bash-async-output.js +6 -2
  1051. package/dist/core/tools/bash-async-output.js.map +1 -1
  1052. package/dist/core/tools/bash-interceptor.d.ts.map +1 -1
  1053. package/dist/core/tools/bash-interceptor.js +20 -4
  1054. package/dist/core/tools/bash-interceptor.js.map +1 -1
  1055. package/dist/core/tools/bash-leading-cd.d.ts.map +1 -1
  1056. package/dist/core/tools/bash-leading-cd.js +9 -3
  1057. package/dist/core/tools/bash-leading-cd.js.map +1 -1
  1058. package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
  1059. package/dist/core/tools/bash-pty-native.js.map +1 -1
  1060. package/dist/core/tools/bash-session-environment.d.ts.map +1 -1
  1061. package/dist/core/tools/bash-session-environment.js +24 -12
  1062. package/dist/core/tools/bash-session-environment.js.map +1 -1
  1063. package/dist/core/tools/bash.d.ts.map +1 -1
  1064. package/dist/core/tools/bash.js +123 -27
  1065. package/dist/core/tools/bash.js.map +1 -1
  1066. package/dist/core/tools/block-resolver.d.ts.map +1 -1
  1067. package/dist/core/tools/block-resolver.js.map +1 -1
  1068. package/dist/core/tools/conflict-registry.d.ts.map +1 -1
  1069. package/dist/core/tools/conflict-registry.js.map +1 -1
  1070. package/dist/core/tools/directory-tree.d.ts.map +1 -1
  1071. package/dist/core/tools/directory-tree.js +20 -4
  1072. package/dist/core/tools/directory-tree.js.map +1 -1
  1073. package/dist/core/tools/edit.d.ts.map +1 -1
  1074. package/dist/core/tools/edit.js +37 -13
  1075. package/dist/core/tools/edit.js.map +1 -1
  1076. package/dist/core/tools/fetch-url.d.ts.map +1 -1
  1077. package/dist/core/tools/fetch-url.js +127 -41
  1078. package/dist/core/tools/fetch-url.js.map +1 -1
  1079. package/dist/core/tools/find.d.ts.map +1 -1
  1080. package/dist/core/tools/find.js +176 -46
  1081. package/dist/core/tools/find.js.map +1 -1
  1082. package/dist/core/tools/grep.d.ts.map +1 -1
  1083. package/dist/core/tools/grep.js +43 -10
  1084. package/dist/core/tools/grep.js.map +1 -1
  1085. package/dist/core/tools/hashline-engine/apply.d.ts.map +1 -1
  1086. package/dist/core/tools/hashline-engine/apply.js +6 -6
  1087. package/dist/core/tools/hashline-engine/apply.js.map +1 -1
  1088. package/dist/core/tools/hashline-engine/block.js +1 -1
  1089. package/dist/core/tools/hashline-engine/block.js.map +1 -1
  1090. package/dist/core/tools/hashline-engine/format.d.ts.map +1 -1
  1091. package/dist/core/tools/hashline-engine/format.js +1 -1
  1092. package/dist/core/tools/hashline-engine/format.js.map +1 -1
  1093. package/dist/core/tools/hashline-engine/input.d.ts.map +1 -1
  1094. package/dist/core/tools/hashline-engine/input.js +7 -7
  1095. package/dist/core/tools/hashline-engine/input.js.map +1 -1
  1096. package/dist/core/tools/hashline-engine/parser.js +1 -1
  1097. package/dist/core/tools/hashline-engine/parser.js.map +1 -1
  1098. package/dist/core/tools/hashline-engine/patcher.js +5 -5
  1099. package/dist/core/tools/hashline-engine/patcher.js.map +1 -1
  1100. package/dist/core/tools/hashline-engine/prefixes.js +4 -4
  1101. package/dist/core/tools/hashline-engine/prefixes.js.map +1 -1
  1102. package/dist/core/tools/hashline-engine/recovery.d.ts.map +1 -1
  1103. package/dist/core/tools/hashline-engine/recovery.js +4 -2
  1104. package/dist/core/tools/hashline-engine/recovery.js.map +1 -1
  1105. package/dist/core/tools/hashline-engine/snapshots.js +5 -5
  1106. package/dist/core/tools/hashline-engine/snapshots.js.map +1 -1
  1107. package/dist/core/tools/hashline.d.ts.map +1 -1
  1108. package/dist/core/tools/hashline.js +24 -13
  1109. package/dist/core/tools/hashline.js.map +1 -1
  1110. package/dist/core/tools/index.d.ts +6 -6
  1111. package/dist/core/tools/index.d.ts.map +1 -1
  1112. package/dist/core/tools/index.js +6 -6
  1113. package/dist/core/tools/index.js.map +1 -1
  1114. package/dist/core/tools/ls.d.ts.map +1 -1
  1115. package/dist/core/tools/ls.js +2 -1
  1116. package/dist/core/tools/ls.js.map +1 -1
  1117. package/dist/core/tools/notebook.d.ts.map +1 -1
  1118. package/dist/core/tools/notebook.js +13 -3
  1119. package/dist/core/tools/notebook.js.map +1 -1
  1120. package/dist/core/tools/read-document-extract.d.ts.map +1 -1
  1121. package/dist/core/tools/read-document-extract.js +30 -10
  1122. package/dist/core/tools/read-document-extract.js.map +1 -1
  1123. package/dist/core/tools/read-selectors.d.ts.map +1 -1
  1124. package/dist/core/tools/read-selectors.js +59 -15
  1125. package/dist/core/tools/read-selectors.js.map +1 -1
  1126. package/dist/core/tools/read-url.d.ts.map +1 -1
  1127. package/dist/core/tools/read-url.js +41 -7
  1128. package/dist/core/tools/read-url.js.map +1 -1
  1129. package/dist/core/tools/read.d.ts.map +1 -1
  1130. package/dist/core/tools/read.js +306 -71
  1131. package/dist/core/tools/read.js.map +1 -1
  1132. package/dist/core/tools/resource-selectors.d.ts +4 -0
  1133. package/dist/core/tools/resource-selectors.d.ts.map +1 -1
  1134. package/dist/core/tools/resource-selectors.js +324 -84
  1135. package/dist/core/tools/resource-selectors.js.map +1 -1
  1136. package/dist/core/tools/search-details.d.ts.map +1 -1
  1137. package/dist/core/tools/search-details.js +13 -1
  1138. package/dist/core/tools/search-details.js.map +1 -1
  1139. package/dist/core/tools/search-line-ranges.d.ts.map +1 -1
  1140. package/dist/core/tools/search-line-ranges.js +5 -2
  1141. package/dist/core/tools/search-line-ranges.js.map +1 -1
  1142. package/dist/core/tools/search-native.d.ts.map +1 -1
  1143. package/dist/core/tools/search-native.js.map +1 -1
  1144. package/dist/core/tools/search.d.ts.map +1 -1
  1145. package/dist/core/tools/search.js +244 -90
  1146. package/dist/core/tools/search.js.map +1 -1
  1147. package/dist/core/tools/structured-output.d.ts +1 -1
  1148. package/dist/core/tools/structured-output.d.ts.map +1 -1
  1149. package/dist/core/tools/structured-output.js.map +1 -1
  1150. package/dist/core/tools/todos-execute.d.ts.map +1 -1
  1151. package/dist/core/tools/todos-execute.js +4 -4
  1152. package/dist/core/tools/todos-execute.js.map +1 -1
  1153. package/dist/core/tools/todos-locks.d.ts.map +1 -1
  1154. package/dist/core/tools/todos-locks.js.map +1 -1
  1155. package/dist/core/tools/todos-mutations.js +1 -1
  1156. package/dist/core/tools/todos-mutations.js.map +1 -1
  1157. package/dist/core/tools/todos-paths.js +2 -2
  1158. package/dist/core/tools/todos-paths.js.map +1 -1
  1159. package/dist/core/tools/todos-render.d.ts.map +1 -1
  1160. package/dist/core/tools/todos-render.js +2 -2
  1161. package/dist/core/tools/todos-render.js.map +1 -1
  1162. package/dist/core/tools/todos-storage.d.ts.map +1 -1
  1163. package/dist/core/tools/todos-storage.js +1 -2
  1164. package/dist/core/tools/todos-storage.js.map +1 -1
  1165. package/dist/core/tools/todos-types.d.ts.map +1 -1
  1166. package/dist/core/tools/todos-types.js +1 -11
  1167. package/dist/core/tools/todos-types.js.map +1 -1
  1168. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  1169. package/dist/core/tools/tool-definition-wrapper.js +2 -6
  1170. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  1171. package/dist/core/tools/url-ip-guards.d.ts.map +1 -1
  1172. package/dist/core/tools/url-ip-guards.js +27 -17
  1173. package/dist/core/tools/url-ip-guards.js.map +1 -1
  1174. package/dist/core/tools/write.d.ts.map +1 -1
  1175. package/dist/core/tools/write.js +88 -29
  1176. package/dist/core/tools/write.js.map +1 -1
  1177. package/dist/core/usage-totals.d.ts.map +1 -1
  1178. package/dist/core/usage-totals.js +5 -2
  1179. package/dist/core/usage-totals.js.map +1 -1
  1180. package/dist/core/workflow-stage-admission.d.ts.map +1 -1
  1181. package/dist/core/workflow-stage-admission.js +8 -2
  1182. package/dist/core/workflow-stage-admission.js.map +1 -1
  1183. package/dist/extensions/llama/index.js +1 -1
  1184. package/dist/extensions/llama/index.js.map +1 -1
  1185. package/dist/extensions/llama/provider.d.ts +2 -4
  1186. package/dist/extensions/llama/provider.d.ts.map +1 -1
  1187. package/dist/extensions/llama/provider.js +26 -18
  1188. package/dist/extensions/llama/provider.js.map +1 -1
  1189. package/dist/extensions/llama/ui.d.ts.map +1 -1
  1190. package/dist/extensions/llama/ui.js.map +1 -1
  1191. package/dist/index-extensions.d.ts +2 -2
  1192. package/dist/index-extensions.d.ts.map +1 -1
  1193. package/dist/index-extensions.js +1 -1
  1194. package/dist/index-extensions.js.map +1 -1
  1195. package/dist/index.d.ts +21 -22
  1196. package/dist/index.d.ts.map +1 -1
  1197. package/dist/index.js +25 -26
  1198. package/dist/index.js.map +1 -1
  1199. package/dist/main-deferred-startup.d.ts +1 -1
  1200. package/dist/main-deferred-startup.d.ts.map +1 -1
  1201. package/dist/main-deferred-startup.js +16 -15
  1202. package/dist/main-deferred-startup.js.map +1 -1
  1203. package/dist/main-early-input.js.map +1 -1
  1204. package/dist/main-first-time-setup.d.ts +1 -1
  1205. package/dist/main-first-time-setup.d.ts.map +1 -1
  1206. package/dist/main-first-time-setup.js.map +1 -1
  1207. package/dist/main-runtime-api-key.d.ts +6 -0
  1208. package/dist/main-runtime-api-key.d.ts.map +1 -0
  1209. package/dist/main-runtime-api-key.js +6 -0
  1210. package/dist/main-runtime-api-key.js.map +1 -0
  1211. package/dist/main-session-options.d.ts +2 -2
  1212. package/dist/main-session-options.d.ts.map +1 -1
  1213. package/dist/main-session-options.js +3 -3
  1214. package/dist/main-session-options.js.map +1 -1
  1215. package/dist/main-session.d.ts.map +1 -1
  1216. package/dist/main-session.js +4 -4
  1217. package/dist/main-session.js.map +1 -1
  1218. package/dist/main.d.ts +1 -1
  1219. package/dist/main.d.ts.map +1 -1
  1220. package/dist/main.js +152 -49
  1221. package/dist/main.js.map +1 -1
  1222. package/dist/migrations-config-values.d.ts.map +1 -1
  1223. package/dist/migrations-config-values.js +3 -1
  1224. package/dist/migrations-config-values.js.map +1 -1
  1225. package/dist/migrations.d.ts.map +1 -1
  1226. package/dist/migrations.js.map +1 -1
  1227. package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
  1228. package/dist/modes/interactive/chat-input-actions.js +3 -6
  1229. package/dist/modes/interactive/chat-input-actions.js.map +1 -1
  1230. package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
  1231. package/dist/modes/interactive/components/atomic-banner.js +7 -5
  1232. package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
  1233. package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -1
  1234. package/dist/modes/interactive/components/atomic-working-status.js +26 -13
  1235. package/dist/modes/interactive/components/atomic-working-status.js.map +1 -1
  1236. package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -1
  1237. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  1238. package/dist/modes/interactive/components/chat-message-renderer.js +6 -5
  1239. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  1240. package/dist/modes/interactive/components/chat-session-host-actions.d.ts +3 -2
  1241. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  1242. package/dist/modes/interactive/components/chat-session-host-actions.js +14 -18
  1243. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  1244. package/dist/modes/interactive/components/chat-session-host-editor.d.ts +4 -4
  1245. package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -1
  1246. package/dist/modes/interactive/components/chat-session-host-editor.js +9 -4
  1247. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
  1248. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  1249. package/dist/modes/interactive/components/chat-session-host-events.js +9 -8
  1250. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  1251. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts +1 -1
  1252. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  1253. package/dist/modes/interactive/components/chat-session-host-rendering.js +22 -7
  1254. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  1255. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +9 -2
  1256. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
  1257. package/dist/modes/interactive/components/chat-session-host-runtime.js +15 -13
  1258. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
  1259. package/dist/modes/interactive/components/chat-session-host-state.d.ts +2 -2
  1260. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  1261. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  1262. package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.d.ts.map +1 -1
  1263. package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.js.map +1 -1
  1264. package/dist/modes/interactive/components/chat-session-host-types.d.ts +9 -2
  1265. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
  1266. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
  1267. package/dist/modes/interactive/components/chat-session-host-utils.d.ts +1 -1
  1268. package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -1
  1269. package/dist/modes/interactive/components/chat-session-host-utils.js +3 -8
  1270. package/dist/modes/interactive/components/chat-session-host-utils.js.map +1 -1
  1271. package/dist/modes/interactive/components/chat-session-host.d.ts +4 -4
  1272. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  1273. package/dist/modes/interactive/components/chat-session-host.js +1 -2
  1274. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  1275. package/dist/modes/interactive/components/chat-transcript.d.ts +1 -1
  1276. package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
  1277. package/dist/modes/interactive/components/chat-transcript.js +5 -12
  1278. package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
  1279. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  1280. package/dist/modes/interactive/components/compaction-boundary-message.js +18 -7
  1281. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  1282. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
  1283. package/dist/modes/interactive/components/config-selector-list.js +4 -2
  1284. package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
  1285. package/dist/modes/interactive/components/config-selector-project-scope.d.ts.map +1 -1
  1286. package/dist/modes/interactive/components/config-selector-project-scope.js +2 -4
  1287. package/dist/modes/interactive/components/config-selector-project-scope.js.map +1 -1
  1288. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1289. package/dist/modes/interactive/components/config-selector.js +15 -6
  1290. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1291. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  1292. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  1293. package/dist/modes/interactive/components/custom-editor.d.ts +11 -0
  1294. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  1295. package/dist/modes/interactive/components/custom-editor.js +21 -5
  1296. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  1297. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  1298. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  1299. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  1300. package/dist/modes/interactive/components/custom-message.js +1 -3
  1301. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  1302. package/dist/modes/interactive/components/diff.js +2 -2
  1303. package/dist/modes/interactive/components/diff.js.map +1 -1
  1304. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  1305. package/dist/modes/interactive/components/extension-editor.js +1 -1
  1306. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  1307. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  1308. package/dist/modes/interactive/components/first-time-setup.js +15 -4
  1309. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  1310. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  1311. package/dist/modes/interactive/components/footer.js +17 -16
  1312. package/dist/modes/interactive/components/footer.js.map +1 -1
  1313. package/dist/modes/interactive/components/host-input-form-mount.d.ts.map +1 -1
  1314. package/dist/modes/interactive/components/host-input-form-mount.js +4 -2
  1315. package/dist/modes/interactive/components/host-input-form-mount.js.map +1 -1
  1316. package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -1
  1317. package/dist/modes/interactive/components/host-input-form.js +55 -21
  1318. package/dist/modes/interactive/components/host-input-form.js.map +1 -1
  1319. package/dist/modes/interactive/components/host-session-picker.d.ts.map +1 -1
  1320. package/dist/modes/interactive/components/host-session-picker.js +8 -3
  1321. package/dist/modes/interactive/components/host-session-picker.js.map +1 -1
  1322. package/dist/modes/interactive/components/index.d.ts +7 -7
  1323. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  1324. package/dist/modes/interactive/components/index.js +4 -4
  1325. package/dist/modes/interactive/components/index.js.map +1 -1
  1326. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  1327. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  1328. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  1329. package/dist/modes/interactive/components/login-dialog.js +1 -3
  1330. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  1331. package/dist/modes/interactive/components/model-selector.d.ts +4 -3
  1332. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1333. package/dist/modes/interactive/components/model-selector.js +60 -74
  1334. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1335. package/dist/modes/interactive/components/oauth-selector.d.ts +4 -3
  1336. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  1337. package/dist/modes/interactive/components/oauth-selector.js +10 -13
  1338. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  1339. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  1340. package/dist/modes/interactive/components/scoped-models-selector.js +5 -1
  1341. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  1342. package/dist/modes/interactive/components/session-selector-list.d.ts +1 -1
  1343. package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -1
  1344. package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
  1345. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1346. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1347. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
  1348. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
  1349. package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
  1350. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
  1351. package/dist/modes/interactive/components/startup-identity.d.ts.map +1 -1
  1352. package/dist/modes/interactive/components/startup-identity.js.map +1 -1
  1353. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  1354. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  1355. package/dist/modes/interactive/components/tree-selector-model.js +1 -9
  1356. package/dist/modes/interactive/components/tree-selector-model.js.map +1 -1
  1357. package/dist/modes/interactive/components/tree-selector-viewport.d.ts.map +1 -1
  1358. package/dist/modes/interactive/components/tree-selector-viewport.js.map +1 -1
  1359. package/dist/modes/interactive/components/working-status.d.ts.map +1 -1
  1360. package/dist/modes/interactive/components/working-status.js +1 -1
  1361. package/dist/modes/interactive/components/working-status.js.map +1 -1
  1362. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  1363. package/dist/modes/interactive/external-editor.js.map +1 -1
  1364. package/dist/modes/interactive/interactive-agent-events.js +20 -13
  1365. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  1366. package/dist/modes/interactive/interactive-auth-login.js +24 -35
  1367. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  1368. package/dist/modes/interactive/interactive-auth-routing.d.ts +1 -1
  1369. package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
  1370. package/dist/modes/interactive/interactive-auth-routing.js +22 -51
  1371. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  1372. package/dist/modes/interactive/interactive-autocomplete.js +7 -13
  1373. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  1374. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
  1375. package/dist/modes/interactive/interactive-bash-compact.js +18 -8
  1376. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  1377. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  1378. package/dist/modes/interactive/interactive-deferred-startup.js +14 -10
  1379. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  1380. package/dist/modes/interactive/interactive-editor-actions.js +6 -11
  1381. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  1382. package/dist/modes/interactive/interactive-extension-context.js +4 -4
  1383. package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
  1384. package/dist/modes/interactive/interactive-extension-custom-ui.js +15 -8
  1385. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
  1386. package/dist/modes/interactive/interactive-extension-dialogs.js +50 -24
  1387. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  1388. package/dist/modes/interactive/interactive-extension-runtime.js +11 -7
  1389. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  1390. package/dist/modes/interactive/interactive-extension-widgets.js +1 -1
  1391. package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
  1392. package/dist/modes/interactive/interactive-global-clear.d.ts +45 -1
  1393. package/dist/modes/interactive/interactive-global-clear.d.ts.map +1 -1
  1394. package/dist/modes/interactive/interactive-global-clear.js +60 -4
  1395. package/dist/modes/interactive/interactive-global-clear.js.map +1 -1
  1396. package/dist/modes/interactive/interactive-hotkeys-debug.js +2 -3
  1397. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
  1398. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  1399. package/dist/modes/interactive/interactive-input-handling.js +55 -20
  1400. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  1401. package/dist/modes/interactive/interactive-key-identity.d.ts +22 -0
  1402. package/dist/modes/interactive/interactive-key-identity.d.ts.map +1 -0
  1403. package/dist/modes/interactive/interactive-key-identity.js +29 -0
  1404. package/dist/modes/interactive/interactive-key-identity.js.map +1 -0
  1405. package/dist/modes/interactive/interactive-mode-base.d.ts +7 -6
  1406. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  1407. package/dist/modes/interactive/interactive-mode-base.js +12 -12
  1408. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  1409. package/dist/modes/interactive/interactive-mode-deps.d.ts +20 -20
  1410. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  1411. package/dist/modes/interactive/interactive-mode-deps.js +16 -16
  1412. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  1413. package/dist/modes/interactive/interactive-mode-helpers.d.ts +1 -1
  1414. package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
  1415. package/dist/modes/interactive/interactive-mode-helpers.js +3 -9
  1416. package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
  1417. package/dist/modes/interactive/interactive-mode-surface.d.ts +8 -7
  1418. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  1419. package/dist/modes/interactive/interactive-mode-surface.js +1 -0
  1420. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  1421. package/dist/modes/interactive/interactive-mode-types.d.ts +2 -2
  1422. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  1423. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  1424. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -1
  1425. package/dist/modes/interactive/interactive-model-catalog-startup.js +3 -2
  1426. package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -1
  1427. package/dist/modes/interactive/interactive-model-routing.js +17 -17
  1428. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  1429. package/dist/modes/interactive/interactive-onboarding.js +7 -7
  1430. package/dist/modes/interactive/interactive-onboarding.js.map +1 -1
  1431. package/dist/modes/interactive/interactive-pause.js.map +1 -1
  1432. package/dist/modes/interactive/interactive-process-lifecycle.js +38 -8
  1433. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  1434. package/dist/modes/interactive/interactive-prompt-restore.d.ts +58 -0
  1435. package/dist/modes/interactive/interactive-prompt-restore.d.ts.map +1 -0
  1436. package/dist/modes/interactive/interactive-prompt-restore.js +87 -0
  1437. package/dist/modes/interactive/interactive-prompt-restore.js.map +1 -0
  1438. package/dist/modes/interactive/interactive-prompt-turn.js +18 -3
  1439. package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -1
  1440. package/dist/modes/interactive/interactive-queueing.js +3 -7
  1441. package/dist/modes/interactive/interactive-queueing.js.map +1 -1
  1442. package/dist/modes/interactive/interactive-render-chat.js +47 -36
  1443. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  1444. package/dist/modes/interactive/interactive-resource-disclosure.js +1 -3
  1445. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
  1446. package/dist/modes/interactive/interactive-resource-paths.js +6 -19
  1447. package/dist/modes/interactive/interactive-resource-paths.js.map +1 -1
  1448. package/dist/modes/interactive/interactive-resource-rendering.js +15 -16
  1449. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  1450. package/dist/modes/interactive/interactive-selectors.js +3 -5
  1451. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  1452. package/dist/modes/interactive/interactive-session-routing.js +16 -4
  1453. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  1454. package/dist/modes/interactive/interactive-session-runtime.js +11 -0
  1455. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  1456. package/dist/modes/interactive/interactive-slash-commands.js +12 -7
  1457. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  1458. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  1459. package/dist/modes/interactive/interactive-startup.js +10 -12
  1460. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  1461. package/dist/modes/interactive/interactive-submission.d.ts +24 -0
  1462. package/dist/modes/interactive/interactive-submission.d.ts.map +1 -0
  1463. package/dist/modes/interactive/interactive-submission.js +10 -0
  1464. package/dist/modes/interactive/interactive-submission.js.map +1 -0
  1465. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts +1 -1
  1466. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts.map +1 -1
  1467. package/dist/modes/interactive/interactive-summarization-retry-events.js +4 -2
  1468. package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -1
  1469. package/dist/modes/interactive/login-provider-options.d.ts.map +1 -1
  1470. package/dist/modes/interactive/login-provider-options.js +1 -2
  1471. package/dist/modes/interactive/login-provider-options.js.map +1 -1
  1472. package/dist/modes/interactive/theme/global-theme.d.ts +1 -1
  1473. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
  1474. package/dist/modes/interactive/theme/global-theme.js.map +1 -1
  1475. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  1476. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  1477. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  1478. package/dist/modes/interactive/theme/theme-loading.js +1 -1
  1479. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  1480. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  1481. package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  1482. package/dist/modes/interactive/theme/theme.d.ts +2 -2
  1483. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1484. package/dist/modes/interactive/theme/theme.js +2 -2
  1485. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1486. package/dist/modes/interactive/whimsical-messages.d.ts.map +1 -1
  1487. package/dist/modes/interactive/whimsical-messages.js.map +1 -1
  1488. package/dist/modes/interactive-engine/activity-watchdog.d.ts +16 -6
  1489. package/dist/modes/interactive-engine/activity-watchdog.d.ts.map +1 -1
  1490. package/dist/modes/interactive-engine/activity-watchdog.js +12 -6
  1491. package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -1
  1492. package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -1
  1493. package/dist/modes/interactive-engine/create-isolated-runtime.js +5 -4
  1494. package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -1
  1495. package/dist/modes/interactive-engine/engine-child-liveness.d.ts.map +1 -1
  1496. package/dist/modes/interactive-engine/engine-child-liveness.js +6 -4
  1497. package/dist/modes/interactive-engine/engine-child-liveness.js.map +1 -1
  1498. package/dist/modes/interactive-engine/engine-custom-ui.d.ts +3 -2
  1499. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  1500. package/dist/modes/interactive-engine/engine-custom-ui.js +32 -11
  1501. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  1502. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts +16 -0
  1503. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts.map +1 -0
  1504. package/dist/modes/interactive-engine/engine-diagnostic-view.js +19 -0
  1505. package/dist/modes/interactive-engine/engine-diagnostic-view.js.map +1 -0
  1506. package/dist/modes/interactive-engine/engine-dialog-host.d.ts +33 -0
  1507. package/dist/modes/interactive-engine/engine-dialog-host.d.ts.map +1 -0
  1508. package/dist/modes/interactive-engine/engine-dialog-host.js +129 -0
  1509. package/dist/modes/interactive-engine/engine-dialog-host.js.map +1 -0
  1510. package/dist/modes/interactive-engine/engine-generation.d.ts +29 -0
  1511. package/dist/modes/interactive-engine/engine-generation.d.ts.map +1 -0
  1512. package/dist/modes/interactive-engine/engine-generation.js +11 -0
  1513. package/dist/modes/interactive-engine/engine-generation.js.map +1 -0
  1514. package/dist/modes/interactive-engine/engine-health.d.ts +101 -0
  1515. package/dist/modes/interactive-engine/engine-health.d.ts.map +1 -0
  1516. package/dist/modes/interactive-engine/engine-health.js +236 -0
  1517. package/dist/modes/interactive-engine/engine-health.js.map +1 -0
  1518. package/dist/modes/interactive-engine/engine-input-form.d.ts.map +1 -1
  1519. package/dist/modes/interactive-engine/engine-input-form.js +12 -3
  1520. package/dist/modes/interactive-engine/engine-input-form.js.map +1 -1
  1521. package/dist/modes/interactive-engine/engine-monitor.d.ts.map +1 -1
  1522. package/dist/modes/interactive-engine/engine-monitor.js +7 -2
  1523. package/dist/modes/interactive-engine/engine-monitor.js.map +1 -1
  1524. package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
  1525. package/dist/modes/interactive-engine/engine-render-service.js +11 -5
  1526. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  1527. package/dist/modes/interactive-engine/engine-session-picker.d.ts.map +1 -1
  1528. package/dist/modes/interactive-engine/engine-session-picker.js +4 -2
  1529. package/dist/modes/interactive-engine/engine-session-picker.js.map +1 -1
  1530. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +14 -3
  1531. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  1532. package/dist/modes/interactive-engine/extension-ui-bridge.js +32 -45
  1533. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  1534. package/dist/modes/interactive-engine/input-form-host.d.ts +1 -0
  1535. package/dist/modes/interactive-engine/input-form-host.d.ts.map +1 -1
  1536. package/dist/modes/interactive-engine/input-form-host.js +12 -2
  1537. package/dist/modes/interactive-engine/input-form-host.js.map +1 -1
  1538. package/dist/modes/interactive-engine/isolated-auth.d.ts +2 -2
  1539. package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -1
  1540. package/dist/modes/interactive-engine/isolated-auth.js +4 -3
  1541. package/dist/modes/interactive-engine/isolated-auth.js.map +1 -1
  1542. package/dist/modes/interactive-engine/isolated-runtime.d.ts +32 -6
  1543. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  1544. package/dist/modes/interactive-engine/isolated-runtime.js +126 -62
  1545. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  1546. package/dist/modes/interactive-engine/protocol.d.ts +20 -1
  1547. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  1548. package/dist/modes/interactive-engine/protocol.js +183 -55
  1549. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  1550. package/dist/modes/interactive-engine/remote-component.d.ts +38 -0
  1551. package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
  1552. package/dist/modes/interactive-engine/remote-component.js +111 -22
  1553. package/dist/modes/interactive-engine/remote-component.js.map +1 -1
  1554. package/dist/modes/interactive-engine/remote-input-ownership.d.ts +48 -0
  1555. package/dist/modes/interactive-engine/remote-input-ownership.d.ts.map +1 -0
  1556. package/dist/modes/interactive-engine/remote-input-ownership.js +42 -0
  1557. package/dist/modes/interactive-engine/remote-input-ownership.js.map +1 -0
  1558. package/dist/modes/interactive-engine/remote-model-catalog.d.ts +0 -1
  1559. package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
  1560. package/dist/modes/interactive-engine/remote-model-catalog.js +14 -47
  1561. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
  1562. package/dist/modes/interactive-engine/remote-queue-pause.d.ts.map +1 -1
  1563. package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -1
  1564. package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -1
  1565. package/dist/modes/interactive-engine/remote-renderer.js +38 -10
  1566. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
  1567. package/dist/modes/interactive-engine/session-picker-host.d.ts +1 -0
  1568. package/dist/modes/interactive-engine/session-picker-host.d.ts.map +1 -1
  1569. package/dist/modes/interactive-engine/session-picker-host.js +4 -0
  1570. package/dist/modes/interactive-engine/session-picker-host.js.map +1 -1
  1571. package/dist/modes/print-mode.d.ts.map +1 -1
  1572. package/dist/modes/print-mode.js.map +1 -1
  1573. package/dist/modes/rpc/jsonl.d.ts +7 -0
  1574. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  1575. package/dist/modes/rpc/jsonl.js +17 -1
  1576. package/dist/modes/rpc/jsonl.js.map +1 -1
  1577. package/dist/modes/rpc/queued-writer.d.ts +14 -0
  1578. package/dist/modes/rpc/queued-writer.d.ts.map +1 -1
  1579. package/dist/modes/rpc/queued-writer.js +33 -9
  1580. package/dist/modes/rpc/queued-writer.js.map +1 -1
  1581. package/dist/modes/rpc/rpc-bash-request-owners.js +1 -1
  1582. package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -1
  1583. package/dist/modes/rpc/rpc-client-api.d.ts +4 -4
  1584. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  1585. package/dist/modes/rpc/rpc-client-api.js +63 -22
  1586. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  1587. package/dist/modes/rpc/rpc-client-process.d.ts +10 -0
  1588. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  1589. package/dist/modes/rpc/rpc-client-process.js +72 -15
  1590. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  1591. package/dist/modes/rpc/rpc-client-waits.d.ts +17 -1
  1592. package/dist/modes/rpc/rpc-client-waits.d.ts.map +1 -1
  1593. package/dist/modes/rpc/rpc-client-waits.js +25 -0
  1594. package/dist/modes/rpc/rpc-client-waits.js.map +1 -1
  1595. package/dist/modes/rpc/rpc-client.d.ts +61 -6
  1596. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  1597. package/dist/modes/rpc/rpc-client.js +200 -145
  1598. package/dist/modes/rpc/rpc-client.js.map +1 -1
  1599. package/dist/modes/rpc/rpc-command-handler.d.ts +2 -2
  1600. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  1601. package/dist/modes/rpc/rpc-command-handler.js +61 -32
  1602. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  1603. package/dist/modes/rpc/rpc-command-timeouts.d.ts +30 -0
  1604. package/dist/modes/rpc/rpc-command-timeouts.d.ts.map +1 -0
  1605. package/dist/modes/rpc/rpc-command-timeouts.js +52 -0
  1606. package/dist/modes/rpc/rpc-command-timeouts.js.map +1 -0
  1607. package/dist/modes/rpc/rpc-event-buffer.d.ts.map +1 -1
  1608. package/dist/modes/rpc/rpc-event-buffer.js +3 -1
  1609. package/dist/modes/rpc/rpc-event-buffer.js.map +1 -1
  1610. package/dist/modes/rpc/rpc-extension-ui.d.ts +1 -1
  1611. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
  1612. package/dist/modes/rpc/rpc-extension-ui.js +44 -16
  1613. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
  1614. package/dist/modes/rpc/rpc-generation-buffer.d.ts +21 -0
  1615. package/dist/modes/rpc/rpc-generation-buffer.d.ts.map +1 -0
  1616. package/dist/modes/rpc/rpc-generation-buffer.js +35 -0
  1617. package/dist/modes/rpc/rpc-generation-buffer.js.map +1 -0
  1618. package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
  1619. package/dist/modes/rpc/rpc-input-scheduler.js +13 -6
  1620. package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
  1621. package/dist/modes/rpc/rpc-input.d.ts +7 -1
  1622. package/dist/modes/rpc/rpc-input.d.ts.map +1 -1
  1623. package/dist/modes/rpc/rpc-input.js +14 -4
  1624. package/dist/modes/rpc/rpc-input.js.map +1 -1
  1625. package/dist/modes/rpc/rpc-keybindings-reload.d.ts.map +1 -1
  1626. package/dist/modes/rpc/rpc-keybindings-reload.js.map +1 -1
  1627. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  1628. package/dist/modes/rpc/rpc-mode.js +17 -18
  1629. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  1630. package/dist/modes/rpc/rpc-oauth-client.d.ts +2 -3
  1631. package/dist/modes/rpc/rpc-oauth-client.d.ts.map +1 -1
  1632. package/dist/modes/rpc/rpc-oauth-client.js +12 -5
  1633. package/dist/modes/rpc/rpc-oauth-client.js.map +1 -1
  1634. package/dist/modes/rpc/rpc-oauth-interaction.d.ts +1 -1
  1635. package/dist/modes/rpc/rpc-oauth-interaction.d.ts.map +1 -1
  1636. package/dist/modes/rpc/rpc-oauth-interaction.js +1 -1
  1637. package/dist/modes/rpc/rpc-oauth-interaction.js.map +1 -1
  1638. package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
  1639. package/dist/modes/rpc/rpc-output-buffer.js +3 -1
  1640. package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
  1641. package/dist/modes/rpc/rpc-pending-requests.d.ts +37 -0
  1642. package/dist/modes/rpc/rpc-pending-requests.d.ts.map +1 -0
  1643. package/dist/modes/rpc/rpc-pending-requests.js +57 -0
  1644. package/dist/modes/rpc/rpc-pending-requests.js.map +1 -0
  1645. package/dist/modes/rpc/rpc-provider-auth.d.ts +4 -5
  1646. package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -1
  1647. package/dist/modes/rpc/rpc-provider-auth.js +29 -57
  1648. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
  1649. package/dist/modes/rpc/rpc-responses.js.map +1 -1
  1650. package/dist/modes/rpc/rpc-session-binding.d.ts +1 -1
  1651. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
  1652. package/dist/modes/rpc/rpc-session-binding.js +8 -3
  1653. package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
  1654. package/dist/modes/rpc/rpc-terminal-drain.d.ts +52 -0
  1655. package/dist/modes/rpc/rpc-terminal-drain.d.ts.map +1 -0
  1656. package/dist/modes/rpc/rpc-terminal-drain.js +85 -0
  1657. package/dist/modes/rpc/rpc-terminal-drain.js.map +1 -0
  1658. package/dist/modes/rpc/rpc-transport-error.d.ts +49 -0
  1659. package/dist/modes/rpc/rpc-transport-error.d.ts.map +1 -0
  1660. package/dist/modes/rpc/rpc-transport-error.js +78 -0
  1661. package/dist/modes/rpc/rpc-transport-error.js.map +1 -0
  1662. package/dist/modes/rpc/rpc-types.d.ts +12 -7
  1663. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1664. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1665. package/dist/package-manager-cli-parser.js.map +1 -1
  1666. package/dist/package-manager-cli.d.ts.map +1 -1
  1667. package/dist/package-manager-cli.js +25 -16
  1668. package/dist/package-manager-cli.js.map +1 -1
  1669. package/dist/utils/child-process.d.ts.map +1 -1
  1670. package/dist/utils/child-process.js.map +1 -1
  1671. package/dist/utils/clipboard-image.js +1 -1
  1672. package/dist/utils/clipboard-image.js.map +1 -1
  1673. package/dist/utils/clipboard.d.ts.map +1 -1
  1674. package/dist/utils/clipboard.js.map +1 -1
  1675. package/dist/utils/fs-watch.d.ts.map +1 -1
  1676. package/dist/utils/fs-watch.js +1 -3
  1677. package/dist/utils/fs-watch.js.map +1 -1
  1678. package/dist/utils/git.js +1 -1
  1679. package/dist/utils/git.js.map +1 -1
  1680. package/dist/utils/interactive-engine-bootstrap.d.ts +67 -0
  1681. package/dist/utils/interactive-engine-bootstrap.d.ts.map +1 -0
  1682. package/dist/utils/interactive-engine-bootstrap.js +117 -0
  1683. package/dist/utils/interactive-engine-bootstrap.js.map +1 -0
  1684. package/dist/utils/interactive-engine-env.d.ts +41 -0
  1685. package/dist/utils/interactive-engine-env.d.ts.map +1 -0
  1686. package/dist/utils/interactive-engine-env.js +67 -0
  1687. package/dist/utils/interactive-engine-env.js.map +1 -0
  1688. package/dist/utils/markit.d.ts.map +1 -1
  1689. package/dist/utils/markit.js +15 -5
  1690. package/dist/utils/markit.js.map +1 -1
  1691. package/dist/utils/shell.js +2 -2
  1692. package/dist/utils/shell.js.map +1 -1
  1693. package/dist/utils/split-launcher.d.ts.map +1 -1
  1694. package/dist/utils/split-launcher.js +1 -2
  1695. package/dist/utils/split-launcher.js.map +1 -1
  1696. package/dist/utils/tools-manager.d.ts.map +1 -1
  1697. package/dist/utils/tools-manager.js +8 -34
  1698. package/dist/utils/tools-manager.js.map +1 -1
  1699. package/dist/utils/version-check.d.ts.map +1 -1
  1700. package/dist/utils/version-check.js +1 -1
  1701. package/dist/utils/version-check.js.map +1 -1
  1702. package/docs/changelog.mdx +12 -1
  1703. package/docs/custom-provider.md +27 -4
  1704. package/docs/development.md +14 -15
  1705. package/docs/extensions.md +60 -2
  1706. package/docs/keybindings.md +13 -1
  1707. package/docs/models.md +4 -6
  1708. package/docs/providers.md +28 -2
  1709. package/docs/quickstart.md +2 -1
  1710. package/docs/rpc.md +1 -1
  1711. package/docs/sdk.md +32 -49
  1712. package/docs/security.md +15 -0
  1713. package/docs/session-format.md +2 -0
  1714. package/docs/usage.md +34 -0
  1715. package/docs/workflows.md +89 -12
  1716. package/examples/extensions/border-status-editor.ts +1 -6
  1717. package/examples/extensions/custom-compaction.ts +7 -2
  1718. package/examples/extensions/custom-footer.ts +1 -1
  1719. package/examples/extensions/custom-provider-anthropic/index.ts +14 -2
  1720. package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
  1721. package/examples/extensions/gondolin/index.ts +1 -1
  1722. package/examples/extensions/handoff.ts +2 -2
  1723. package/examples/extensions/hello.ts +1 -1
  1724. package/examples/extensions/minimal-mode.ts +6 -6
  1725. package/examples/extensions/overlay-qa-focus-components.ts +0 -1
  1726. package/examples/extensions/overlay-qa-streaming-input-components.ts +2 -2
  1727. package/examples/extensions/overlay-qa-tests.ts +16 -14
  1728. package/examples/extensions/overlay-qa-toggle-passive-components.ts +3 -5
  1729. package/examples/extensions/overlay-test.ts +3 -6
  1730. package/examples/extensions/plan-mode/index.ts +1 -1
  1731. package/examples/extensions/preset.ts +1 -1
  1732. package/examples/extensions/qna.ts +1 -1
  1733. package/examples/extensions/structured-output.ts +9 -9
  1734. package/examples/extensions/subagent/display.ts +115 -127
  1735. package/examples/extensions/subagent/index.ts +310 -349
  1736. package/examples/extensions/subagent/render.ts +244 -345
  1737. package/examples/extensions/subagent/runner.ts +223 -230
  1738. package/examples/extensions/subagent/schemas.ts +39 -46
  1739. package/examples/extensions/subagent/types.ts +22 -22
  1740. package/examples/extensions/summarize.ts +2 -2
  1741. package/examples/extensions/tic-tac-toe.ts +4 -4
  1742. package/examples/extensions/todo.ts +1 -1
  1743. package/examples/extensions/tool-override.ts +1 -1
  1744. package/examples/extensions/trigger-compact.ts +4 -1
  1745. package/examples/extensions/working-indicator.ts +2 -1
  1746. package/examples/rpc-extension-ui-components.ts +1 -2
  1747. package/examples/sdk/02-custom-model.ts +8 -10
  1748. package/examples/sdk/03-custom-prompt.ts +1 -6
  1749. package/examples/sdk/06-extensions.ts +1 -6
  1750. package/examples/sdk/07-context-files.ts +1 -6
  1751. package/examples/sdk/09-api-keys-and-oauth.ts +17 -23
  1752. package/examples/sdk/12-full-control.ts +10 -12
  1753. package/examples/sdk/README.md +17 -21
  1754. package/npm-shrinkwrap.json +300 -303
  1755. package/package.json +11 -11
  1756. package/dist/core/model-registry-auth.d.ts +0 -10
  1757. package/dist/core/model-registry-auth.d.ts.map +0 -1
  1758. package/dist/core/model-registry-auth.js +0 -98
  1759. package/dist/core/model-registry-auth.js.map +0 -1
  1760. package/dist/core/model-registry-builtins.d.ts +0 -8
  1761. package/dist/core/model-registry-builtins.d.ts.map +0 -1
  1762. package/dist/core/model-registry-builtins.js +0 -104
  1763. package/dist/core/model-registry-builtins.js.map +0 -1
  1764. package/dist/core/model-registry-custom-loader.d.ts +0 -3
  1765. package/dist/core/model-registry-custom-loader.d.ts.map +0 -1
  1766. package/dist/core/model-registry-custom-loader.js +0 -255
  1767. package/dist/core/model-registry-custom-loader.js.map +0 -1
  1768. package/dist/core/model-registry-dynamic.d.ts +0 -7
  1769. package/dist/core/model-registry-dynamic.d.ts.map +0 -1
  1770. package/dist/core/model-registry-dynamic.js +0 -189
  1771. package/dist/core/model-registry-dynamic.js.map +0 -1
  1772. package/dist/core/model-registry-extension-refresh.d.ts +0 -23
  1773. package/dist/core/model-registry-extension-refresh.d.ts.map +0 -1
  1774. package/dist/core/model-registry-extension-refresh.js +0 -32
  1775. package/dist/core/model-registry-extension-refresh.js.map +0 -1
  1776. package/dist/core/model-registry-loader.d.ts +0 -5
  1777. package/dist/core/model-registry-loader.d.ts.map +0 -1
  1778. package/dist/core/model-registry-loader.js +0 -29
  1779. package/dist/core/model-registry-loader.js.map +0 -1
  1780. package/dist/core/model-registry-schemas.d.ts +0 -1399
  1781. package/dist/core/model-registry-schemas.d.ts.map +0 -1
  1782. package/dist/core/model-registry-schemas.js.map +0 -1
  1783. package/dist/core/model-registry-types.d.ts +0 -91
  1784. package/dist/core/model-registry-types.d.ts.map +0 -1
  1785. package/dist/core/model-registry-types.js +0 -2
  1786. package/dist/core/model-registry-types.js.map +0 -1
  1787. package/dist/core/model-registry-validation.d.ts +0 -7
  1788. package/dist/core/model-registry-validation.d.ts.map +0 -1
  1789. package/dist/core/model-registry-validation.js +0 -12
  1790. package/dist/core/model-registry-validation.js.map +0 -1
  1791. package/dist/core/oauth-compat.d.ts +0 -17
  1792. package/dist/core/oauth-compat.d.ts.map +0 -1
  1793. package/dist/core/oauth-compat.js +0 -2
  1794. package/dist/core/oauth-compat.js.map +0 -1
  1795. package/dist/core/oauth-provider-bridge.d.ts +0 -63
  1796. package/dist/core/oauth-provider-bridge.d.ts.map +0 -1
  1797. package/dist/core/oauth-provider-bridge.js +0 -232
  1798. package/dist/core/oauth-provider-bridge.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import chalk from "chalk";
2
2
  import { spawnSync } from "child_process";
3
- import { chmodSync, existsSync, mkdirSync, readdirSync, renameSync, rmSync, } from "fs";
3
+ import { chmodSync, existsSync, mkdirSync, readdirSync, renameSync, rmSync } from "fs";
4
4
  import { writeFile } from "fs/promises";
5
5
  import { arch, platform } from "os";
6
6
  import { join } from "path";
@@ -12,9 +12,7 @@ function isOfflineModeEnabled() {
12
12
  const value = getEnvValue(ENV_OFFLINE);
13
13
  if (!value)
14
14
  return false;
15
- return (value === "1" ||
16
- value.toLowerCase() === "true" ||
17
- value.toLowerCase() === "yes");
15
+ return value === "1" || value.toLowerCase() === "true" || value.toLowerCase() === "yes";
18
16
  }
19
17
  const TOOLS = {
20
18
  fd: {
@@ -159,12 +157,7 @@ function runExtractionCommand(command, args) {
159
157
  return `${command}: ${formatSpawnFailure(result)}`;
160
158
  }
161
159
  function extractTarGzArchive(archivePath, extractDir, assetName) {
162
- const failure = runExtractionCommand("tar", [
163
- "xzf",
164
- archivePath,
165
- "-C",
166
- extractDir,
167
- ]);
160
+ const failure = runExtractionCommand("tar", ["xzf", archivePath, "-C", extractDir]);
168
161
  if (failure) {
169
162
  throw new Error(`Failed to extract ${assetName}: ${failure}`);
170
163
  }
@@ -184,12 +177,7 @@ function extractZipArchive(archivePath, extractDir, assetName) {
184
177
  if (platform() === "win32") {
185
178
  // Windows ships bsdtar as tar.exe, which supports zip files. Prefer the
186
179
  // System32 binary over Git Bash's GNU tar, which does not handle zip archives.
187
- const tarFailure = runExtractionCommand(getWindowsTarCommand(), [
188
- "xf",
189
- archivePath,
190
- "-C",
191
- extractDir,
192
- ]);
180
+ const tarFailure = runExtractionCommand(getWindowsTarCommand(), ["xf", archivePath, "-C", extractDir]);
193
181
  if (!tarFailure)
194
182
  return;
195
183
  failures.push(tarFailure);
@@ -210,21 +198,11 @@ function extractZipArchive(archivePath, extractDir, assetName) {
210
198
  failures.push(powershellFailure);
211
199
  }
212
200
  else {
213
- const unzipFailure = runExtractionCommand("unzip", [
214
- "-q",
215
- archivePath,
216
- "-d",
217
- extractDir,
218
- ]);
201
+ const unzipFailure = runExtractionCommand("unzip", ["-q", archivePath, "-d", extractDir]);
219
202
  if (!unzipFailure)
220
203
  return;
221
204
  failures.push(unzipFailure);
222
- const tarFailure = runExtractionCommand("tar", [
223
- "xf",
224
- archivePath,
225
- "-C",
226
- extractDir,
227
- ]);
205
+ const tarFailure = runExtractionCommand("tar", ["xf", archivePath, "-C", extractDir]);
228
206
  if (!tarFailure)
229
207
  return;
230
208
  failures.push(tarFailure);
@@ -271,14 +249,10 @@ async function downloadTool(tool) {
271
249
  // at root, others nest under a versioned subdirectory.
272
250
  const binaryFileName = config.binaryName + binaryExt;
273
251
  const extractedDir = join(extractDir, assetName.replace(/\.(tar\.gz|zip)$/, ""));
274
- const extractedBinaryCandidates = [
275
- join(extractedDir, binaryFileName),
276
- join(extractDir, binaryFileName),
277
- ];
252
+ const extractedBinaryCandidates = [join(extractedDir, binaryFileName), join(extractDir, binaryFileName)];
278
253
  let extractedBinary = extractedBinaryCandidates.find((candidate) => existsSync(candidate));
279
254
  if (!extractedBinary) {
280
- extractedBinary =
281
- findBinaryRecursively(extractDir, binaryFileName) ?? undefined;
255
+ extractedBinary = findBinaryRecursively(extractDir, binaryFileName) ?? undefined;
282
256
  }
283
257
  if (extractedBinary) {
284
258
  renameSync(extractedBinary, binaryPath);
@@ -1 +1 @@
1
- {"version":3,"file":"tools-manager.js","sourceRoot":"","sources":["../../src/utils/tools-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from \"chalk\";\nimport { type SpawnSyncReturns, spawnSync } from \"child_process\";\nimport {\n chmodSync,\n existsSync,\n mkdirSync,\n readdirSync,\n renameSync,\n rmSync,\n} from \"fs\";\nimport { writeFile } from \"fs/promises\";\nimport { arch, platform } from \"os\";\nimport { join } from \"path\";\nimport { APP_NAME, ENV_OFFLINE, getBinDir, getEnvValue } from \"../config.ts\";\n\nconst TOOLS_DIR = getBinDir();\nconst NETWORK_TIMEOUT_MS = 10_000;\nconst DOWNLOAD_TIMEOUT_MS = 120_000;\n\nfunction isOfflineModeEnabled(): boolean {\n const value = getEnvValue(ENV_OFFLINE);\n if (!value) return false;\n return (\n value === \"1\" ||\n value.toLowerCase() === \"true\" ||\n value.toLowerCase() === \"yes\"\n );\n}\n\ninterface ToolConfig {\n name: string;\n repo: string; // GitHub repo (e.g., \"sharkdp/fd\")\n binaryName: string; // Name of the binary inside the archive\n systemBinaryNames?: string[]; // Alternative system command names to try before downloading\n tagPrefix: string; // Prefix for tags (e.g., \"v\" for v1.0.0, \"\" for 1.0.0)\n getAssetName: (\n version: string,\n plat: string,\n architecture: string,\n ) => string | null;\n}\n\nconst TOOLS: Record<string, ToolConfig> = {\n fd: {\n name: \"fd\",\n repo: \"sharkdp/fd\",\n binaryName: \"fd\",\n systemBinaryNames: [\"fd\", \"fdfind\"],\n tagPrefix: \"v\",\n getAssetName: (version, plat, architecture) => {\n if (plat === \"darwin\") {\n const archStr = architecture === \"arm64\" ? \"aarch64\" : \"x86_64\";\n return `fd-v${version}-${archStr}-apple-darwin.tar.gz`;\n } else if (plat === \"linux\") {\n const archStr = architecture === \"arm64\" ? \"aarch64\" : \"x86_64\";\n return `fd-v${version}-${archStr}-unknown-linux-gnu.tar.gz`;\n } else if (plat === \"win32\") {\n const archStr = architecture === \"arm64\" ? \"aarch64\" : \"x86_64\";\n return `fd-v${version}-${archStr}-pc-windows-msvc.zip`;\n }\n return null;\n },\n },\n rg: {\n name: \"ripgrep\",\n repo: \"BurntSushi/ripgrep\",\n binaryName: \"rg\",\n tagPrefix: \"\",\n getAssetName: (version, plat, architecture) => {\n if (plat === \"darwin\") {\n const archStr = architecture === \"arm64\" ? \"aarch64\" : \"x86_64\";\n return `ripgrep-${version}-${archStr}-apple-darwin.tar.gz`;\n } else if (plat === \"linux\") {\n if (architecture === \"arm64\") {\n return `ripgrep-${version}-aarch64-unknown-linux-gnu.tar.gz`;\n }\n return `ripgrep-${version}-x86_64-unknown-linux-musl.tar.gz`;\n } else if (plat === \"win32\") {\n const archStr = architecture === \"arm64\" ? \"aarch64\" : \"x86_64\";\n return `ripgrep-${version}-${archStr}-pc-windows-msvc.zip`;\n }\n return null;\n },\n },\n};\n\n// Check if a command exists in PATH by trying to run it\nfunction commandExists(cmd: string): boolean {\n try {\n const result = spawnSync(cmd, [\"--version\"], { stdio: \"pipe\" });\n // Check for ENOENT error (command not found)\n return result.error === undefined || result.error === null;\n } catch {\n return false;\n }\n}\n\n// Get the path to a tool (system-wide or in our tools dir)\nexport function getToolPath(tool: \"fd\" | \"rg\"): string | null {\n const config = TOOLS[tool];\n if (!config) return null;\n\n // Check our tools directory first\n const localPath = join(\n TOOLS_DIR,\n config.binaryName + (platform() === \"win32\" ? \".exe\" : \"\"),\n );\n if (existsSync(localPath)) {\n return localPath;\n }\n\n // Check system PATH - if found, just return the command name (it's in PATH)\n const systemBinaryNames = config.systemBinaryNames ?? [config.binaryName];\n for (const systemBinaryName of systemBinaryNames) {\n if (commandExists(systemBinaryName)) {\n return systemBinaryName;\n }\n }\n\n return null;\n}\n\n// Fetch latest release version from GitHub\nasync function getLatestVersion(repo: string): Promise<string> {\n const response = await fetch(\n `https://api.github.com/repos/${repo}/releases/latest`,\n {\n headers: { \"User-Agent\": APP_NAME },\n signal: AbortSignal.timeout(NETWORK_TIMEOUT_MS),\n },\n );\n\n if (!response.ok) {\n throw new Error(`GitHub API error: ${response.status}`);\n }\n\n const data = (await response.json()) as { tag_name: string };\n return data.tag_name.replace(/^v/, \"\");\n}\n\n// Download a file from URL\nasync function downloadFile(url: string, dest: string): Promise<void> {\n const response = await fetch(url, {\n signal: AbortSignal.timeout(DOWNLOAD_TIMEOUT_MS),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to download: ${response.status}`);\n }\n\n if (!response.body) {\n throw new Error(\"No response body\");\n }\n\n await writeFile(dest, Buffer.from(await response.arrayBuffer()));\n}\n\nfunction findBinaryRecursively(\n rootDir: string,\n binaryFileName: string,\n): string | null {\n const stack: string[] = [rootDir];\n\n while (stack.length > 0) {\n const currentDir = stack.pop();\n if (!currentDir) continue;\n\n const entries = readdirSync(currentDir, { withFileTypes: true });\n for (const entry of entries) {\n const fullPath = join(currentDir, entry.name);\n if (entry.isFile() && entry.name === binaryFileName) {\n return fullPath;\n }\n if (entry.isDirectory()) {\n stack.push(fullPath);\n }\n }\n }\n\n return null;\n}\n\nfunction formatSpawnFailure(result: SpawnSyncReturns<Buffer>): string {\n if (result.error?.message) {\n return result.error.message;\n }\n const stderr = result.stderr?.toString().trim();\n if (stderr) {\n return stderr;\n }\n const stdout = result.stdout?.toString().trim();\n if (stdout) {\n return stdout;\n }\n return `exit status ${result.status ?? \"unknown\"}`;\n}\n\nfunction runExtractionCommand(command: string, args: string[]): string | null {\n const result = spawnSync(command, args, { stdio: \"pipe\" });\n if (!result.error && result.status === 0) {\n return null;\n }\n return `${command}: ${formatSpawnFailure(result)}`;\n}\n\nfunction extractTarGzArchive(\n archivePath: string,\n extractDir: string,\n assetName: string,\n): void {\n const failure = runExtractionCommand(\"tar\", [\n \"xzf\",\n archivePath,\n \"-C\",\n extractDir,\n ]);\n if (failure) {\n throw new Error(`Failed to extract ${assetName}: ${failure}`);\n }\n}\n\nfunction getWindowsTarCommand(): string {\n const systemRoot = process.env.SystemRoot ?? process.env.WINDIR;\n if (systemRoot) {\n const systemTar = join(systemRoot, \"System32\", \"tar.exe\");\n if (existsSync(systemTar)) {\n return systemTar;\n }\n }\n return \"tar.exe\";\n}\n\nfunction extractZipArchive(\n archivePath: string,\n extractDir: string,\n assetName: string,\n): void {\n const failures: string[] = [];\n\n if (platform() === \"win32\") {\n // Windows ships bsdtar as tar.exe, which supports zip files. Prefer the\n // System32 binary over Git Bash's GNU tar, which does not handle zip archives.\n const tarFailure = runExtractionCommand(getWindowsTarCommand(), [\n \"xf\",\n archivePath,\n \"-C\",\n extractDir,\n ]);\n if (!tarFailure) return;\n failures.push(tarFailure);\n\n const script =\n \"& { param($archive, $destination) $ErrorActionPreference = 'Stop'; Expand-Archive -LiteralPath $archive -DestinationPath $destination -Force }\";\n const powershellFailure = runExtractionCommand(\"powershell.exe\", [\n \"-NoLogo\",\n \"-NoProfile\",\n \"-NonInteractive\",\n \"-ExecutionPolicy\",\n \"Bypass\",\n \"-Command\",\n script,\n archivePath,\n extractDir,\n ]);\n if (!powershellFailure) return;\n failures.push(powershellFailure);\n } else {\n const unzipFailure = runExtractionCommand(\"unzip\", [\n \"-q\",\n archivePath,\n \"-d\",\n extractDir,\n ]);\n if (!unzipFailure) return;\n failures.push(unzipFailure);\n\n const tarFailure = runExtractionCommand(\"tar\", [\n \"xf\",\n archivePath,\n \"-C\",\n extractDir,\n ]);\n if (!tarFailure) return;\n failures.push(tarFailure);\n }\n\n throw new Error(`Failed to extract ${assetName}: ${failures.join(\"; \")}`);\n}\n\n// Download and install a tool\nasync function downloadTool(tool: \"fd\" | \"rg\"): Promise<string> {\n const config = TOOLS[tool];\n if (!config) throw new Error(`Unknown tool: ${tool}`);\n\n const plat = platform();\n const architecture = arch();\n\n // Get latest version\n const version = await getLatestVersion(config.repo);\n\n // Get asset name for this platform\n const assetName = config.getAssetName(version, plat, architecture);\n if (!assetName) {\n throw new Error(`Unsupported platform: ${plat}/${architecture}`);\n }\n\n // Create tools directory\n mkdirSync(TOOLS_DIR, { recursive: true });\n\n const downloadUrl = `https://github.com/${config.repo}/releases/download/${config.tagPrefix}${version}/${assetName}`;\n const archivePath = join(TOOLS_DIR, assetName);\n const binaryExt = plat === \"win32\" ? \".exe\" : \"\";\n const binaryPath = join(TOOLS_DIR, config.binaryName + binaryExt);\n\n // Download\n await downloadFile(downloadUrl, archivePath);\n\n // Extract into a unique temp directory. fd and rg downloads can run concurrently\n // during startup, so sharing a fixed directory causes races.\n const extractDir = join(\n TOOLS_DIR,\n `extract_tmp_${config.binaryName}_${process.pid}_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`,\n );\n mkdirSync(extractDir, { recursive: true });\n\n try {\n if (assetName.endsWith(\".tar.gz\")) {\n extractTarGzArchive(archivePath, extractDir, assetName);\n } else if (assetName.endsWith(\".zip\")) {\n extractZipArchive(archivePath, extractDir, assetName);\n } else {\n throw new Error(`Unsupported archive format: ${assetName}`);\n }\n\n // Find the binary in extracted files. Some archives contain files directly\n // at root, others nest under a versioned subdirectory.\n const binaryFileName = config.binaryName + binaryExt;\n const extractedDir = join(\n extractDir,\n assetName.replace(/\\.(tar\\.gz|zip)$/, \"\"),\n );\n const extractedBinaryCandidates = [\n join(extractedDir, binaryFileName),\n join(extractDir, binaryFileName),\n ];\n let extractedBinary = extractedBinaryCandidates.find((candidate) =>\n existsSync(candidate),\n );\n\n if (!extractedBinary) {\n extractedBinary =\n findBinaryRecursively(extractDir, binaryFileName) ?? undefined;\n }\n\n if (extractedBinary) {\n renameSync(extractedBinary, binaryPath);\n } else {\n throw new Error(\n `Binary not found in archive: expected ${binaryFileName} under ${extractDir}`,\n );\n }\n\n // Make executable (Unix only)\n if (plat !== \"win32\") {\n chmodSync(binaryPath, 0o755);\n }\n } finally {\n // Cleanup\n rmSync(archivePath, { force: true });\n rmSync(extractDir, { recursive: true, force: true });\n }\n\n return binaryPath;\n}\n\n// Termux package names for tools\nconst TERMUX_PACKAGES: Record<string, string> = {\n fd: \"fd\",\n rg: \"ripgrep\",\n};\n\n// Ensure a tool is available, downloading if necessary\n// Returns the path to the tool, or null if unavailable\nexport async function ensureTool(\n tool: \"fd\" | \"rg\",\n silent: boolean = false,\n): Promise<string | undefined> {\n const existingPath = getToolPath(tool);\n if (existingPath) {\n return existingPath;\n }\n\n const config = TOOLS[tool];\n if (!config) return undefined;\n\n if (isOfflineModeEnabled()) {\n if (!silent) {\n console.log(\n chalk.yellow(\n `${config.name} not found. Offline mode enabled, skipping download.`,\n ),\n );\n }\n return undefined;\n }\n\n // On Android/Termux, Linux binaries don't work due to Bionic libc incompatibility.\n // Users must install via pkg.\n if (platform() === \"android\") {\n const pkgName = TERMUX_PACKAGES[tool] ?? tool;\n if (!silent) {\n console.log(\n chalk.yellow(\n `${config.name} not found. Install with: pkg install ${pkgName}`,\n ),\n );\n }\n return undefined;\n }\n\n // Tool not found - download it\n if (!silent) {\n console.log(chalk.dim(`${config.name} not found. Downloading...`));\n }\n\n try {\n const path = await downloadTool(tool);\n if (!silent) {\n console.log(chalk.dim(`${config.name} installed to ${path}`));\n }\n return path;\n } catch (e) {\n if (!silent) {\n console.log(\n chalk.yellow(\n `Failed to download ${config.name}: ${e instanceof Error ? e.message : e}`,\n ),\n );\n }\n return undefined;\n }\n}\n"]}
1
+ {"version":3,"file":"tools-manager.js","sourceRoot":"","sources":["../../src/utils/tools-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from \"chalk\";\nimport { type SpawnSyncReturns, spawnSync } from \"child_process\";\nimport { chmodSync, existsSync, mkdirSync, readdirSync, renameSync, rmSync } from \"fs\";\nimport { writeFile } from \"fs/promises\";\nimport { arch, platform } from \"os\";\nimport { join } from \"path\";\nimport { APP_NAME, ENV_OFFLINE, getBinDir, getEnvValue } from \"../config.ts\";\n\nconst TOOLS_DIR = getBinDir();\nconst NETWORK_TIMEOUT_MS = 10_000;\nconst DOWNLOAD_TIMEOUT_MS = 120_000;\n\nfunction isOfflineModeEnabled(): boolean {\n\tconst value = getEnvValue(ENV_OFFLINE);\n\tif (!value) return false;\n\treturn value === \"1\" || value.toLowerCase() === \"true\" || value.toLowerCase() === \"yes\";\n}\n\ninterface ToolConfig {\n\tname: string;\n\trepo: string; // GitHub repo (e.g., \"sharkdp/fd\")\n\tbinaryName: string; // Name of the binary inside the archive\n\tsystemBinaryNames?: string[]; // Alternative system command names to try before downloading\n\ttagPrefix: string; // Prefix for tags (e.g., \"v\" for v1.0.0, \"\" for 1.0.0)\n\tgetAssetName: (version: string, plat: string, architecture: string) => string | null;\n}\n\nconst TOOLS: Record<string, ToolConfig> = {\n\tfd: {\n\t\tname: \"fd\",\n\t\trepo: \"sharkdp/fd\",\n\t\tbinaryName: \"fd\",\n\t\tsystemBinaryNames: [\"fd\", \"fdfind\"],\n\t\ttagPrefix: \"v\",\n\t\tgetAssetName: (version, plat, architecture) => {\n\t\t\tif (plat === \"darwin\") {\n\t\t\t\tconst archStr = architecture === \"arm64\" ? \"aarch64\" : \"x86_64\";\n\t\t\t\treturn `fd-v${version}-${archStr}-apple-darwin.tar.gz`;\n\t\t\t} else if (plat === \"linux\") {\n\t\t\t\tconst archStr = architecture === \"arm64\" ? \"aarch64\" : \"x86_64\";\n\t\t\t\treturn `fd-v${version}-${archStr}-unknown-linux-gnu.tar.gz`;\n\t\t\t} else if (plat === \"win32\") {\n\t\t\t\tconst archStr = architecture === \"arm64\" ? \"aarch64\" : \"x86_64\";\n\t\t\t\treturn `fd-v${version}-${archStr}-pc-windows-msvc.zip`;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t},\n\trg: {\n\t\tname: \"ripgrep\",\n\t\trepo: \"BurntSushi/ripgrep\",\n\t\tbinaryName: \"rg\",\n\t\ttagPrefix: \"\",\n\t\tgetAssetName: (version, plat, architecture) => {\n\t\t\tif (plat === \"darwin\") {\n\t\t\t\tconst archStr = architecture === \"arm64\" ? \"aarch64\" : \"x86_64\";\n\t\t\t\treturn `ripgrep-${version}-${archStr}-apple-darwin.tar.gz`;\n\t\t\t} else if (plat === \"linux\") {\n\t\t\t\tif (architecture === \"arm64\") {\n\t\t\t\t\treturn `ripgrep-${version}-aarch64-unknown-linux-gnu.tar.gz`;\n\t\t\t\t}\n\t\t\t\treturn `ripgrep-${version}-x86_64-unknown-linux-musl.tar.gz`;\n\t\t\t} else if (plat === \"win32\") {\n\t\t\t\tconst archStr = architecture === \"arm64\" ? \"aarch64\" : \"x86_64\";\n\t\t\t\treturn `ripgrep-${version}-${archStr}-pc-windows-msvc.zip`;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t},\n};\n\n// Check if a command exists in PATH by trying to run it\nfunction commandExists(cmd: string): boolean {\n\ttry {\n\t\tconst result = spawnSync(cmd, [\"--version\"], { stdio: \"pipe\" });\n\t\t// Check for ENOENT error (command not found)\n\t\treturn result.error === undefined || result.error === null;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n// Get the path to a tool (system-wide or in our tools dir)\nexport function getToolPath(tool: \"fd\" | \"rg\"): string | null {\n\tconst config = TOOLS[tool];\n\tif (!config) return null;\n\n\t// Check our tools directory first\n\tconst localPath = join(TOOLS_DIR, config.binaryName + (platform() === \"win32\" ? \".exe\" : \"\"));\n\tif (existsSync(localPath)) {\n\t\treturn localPath;\n\t}\n\n\t// Check system PATH - if found, just return the command name (it's in PATH)\n\tconst systemBinaryNames = config.systemBinaryNames ?? [config.binaryName];\n\tfor (const systemBinaryName of systemBinaryNames) {\n\t\tif (commandExists(systemBinaryName)) {\n\t\t\treturn systemBinaryName;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n// Fetch latest release version from GitHub\nasync function getLatestVersion(repo: string): Promise<string> {\n\tconst response = await fetch(`https://api.github.com/repos/${repo}/releases/latest`, {\n\t\theaders: { \"User-Agent\": APP_NAME },\n\t\tsignal: AbortSignal.timeout(NETWORK_TIMEOUT_MS),\n\t});\n\n\tif (!response.ok) {\n\t\tthrow new Error(`GitHub API error: ${response.status}`);\n\t}\n\n\tconst data = (await response.json()) as { tag_name: string };\n\treturn data.tag_name.replace(/^v/, \"\");\n}\n\n// Download a file from URL\nasync function downloadFile(url: string, dest: string): Promise<void> {\n\tconst response = await fetch(url, {\n\t\tsignal: AbortSignal.timeout(DOWNLOAD_TIMEOUT_MS),\n\t});\n\n\tif (!response.ok) {\n\t\tthrow new Error(`Failed to download: ${response.status}`);\n\t}\n\n\tif (!response.body) {\n\t\tthrow new Error(\"No response body\");\n\t}\n\n\tawait writeFile(dest, Buffer.from(await response.arrayBuffer()));\n}\n\nfunction findBinaryRecursively(rootDir: string, binaryFileName: string): string | null {\n\tconst stack: string[] = [rootDir];\n\n\twhile (stack.length > 0) {\n\t\tconst currentDir = stack.pop();\n\t\tif (!currentDir) continue;\n\n\t\tconst entries = readdirSync(currentDir, { withFileTypes: true });\n\t\tfor (const entry of entries) {\n\t\t\tconst fullPath = join(currentDir, entry.name);\n\t\t\tif (entry.isFile() && entry.name === binaryFileName) {\n\t\t\t\treturn fullPath;\n\t\t\t}\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\tstack.push(fullPath);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction formatSpawnFailure(result: SpawnSyncReturns<Buffer>): string {\n\tif (result.error?.message) {\n\t\treturn result.error.message;\n\t}\n\tconst stderr = result.stderr?.toString().trim();\n\tif (stderr) {\n\t\treturn stderr;\n\t}\n\tconst stdout = result.stdout?.toString().trim();\n\tif (stdout) {\n\t\treturn stdout;\n\t}\n\treturn `exit status ${result.status ?? \"unknown\"}`;\n}\n\nfunction runExtractionCommand(command: string, args: string[]): string | null {\n\tconst result = spawnSync(command, args, { stdio: \"pipe\" });\n\tif (!result.error && result.status === 0) {\n\t\treturn null;\n\t}\n\treturn `${command}: ${formatSpawnFailure(result)}`;\n}\n\nfunction extractTarGzArchive(archivePath: string, extractDir: string, assetName: string): void {\n\tconst failure = runExtractionCommand(\"tar\", [\"xzf\", archivePath, \"-C\", extractDir]);\n\tif (failure) {\n\t\tthrow new Error(`Failed to extract ${assetName}: ${failure}`);\n\t}\n}\n\nfunction getWindowsTarCommand(): string {\n\tconst systemRoot = process.env.SystemRoot ?? process.env.WINDIR;\n\tif (systemRoot) {\n\t\tconst systemTar = join(systemRoot, \"System32\", \"tar.exe\");\n\t\tif (existsSync(systemTar)) {\n\t\t\treturn systemTar;\n\t\t}\n\t}\n\treturn \"tar.exe\";\n}\n\nfunction extractZipArchive(archivePath: string, extractDir: string, assetName: string): void {\n\tconst failures: string[] = [];\n\n\tif (platform() === \"win32\") {\n\t\t// Windows ships bsdtar as tar.exe, which supports zip files. Prefer the\n\t\t// System32 binary over Git Bash's GNU tar, which does not handle zip archives.\n\t\tconst tarFailure = runExtractionCommand(getWindowsTarCommand(), [\"xf\", archivePath, \"-C\", extractDir]);\n\t\tif (!tarFailure) return;\n\t\tfailures.push(tarFailure);\n\n\t\tconst script =\n\t\t\t\"& { param($archive, $destination) $ErrorActionPreference = 'Stop'; Expand-Archive -LiteralPath $archive -DestinationPath $destination -Force }\";\n\t\tconst powershellFailure = runExtractionCommand(\"powershell.exe\", [\n\t\t\t\"-NoLogo\",\n\t\t\t\"-NoProfile\",\n\t\t\t\"-NonInteractive\",\n\t\t\t\"-ExecutionPolicy\",\n\t\t\t\"Bypass\",\n\t\t\t\"-Command\",\n\t\t\tscript,\n\t\t\tarchivePath,\n\t\t\textractDir,\n\t\t]);\n\t\tif (!powershellFailure) return;\n\t\tfailures.push(powershellFailure);\n\t} else {\n\t\tconst unzipFailure = runExtractionCommand(\"unzip\", [\"-q\", archivePath, \"-d\", extractDir]);\n\t\tif (!unzipFailure) return;\n\t\tfailures.push(unzipFailure);\n\n\t\tconst tarFailure = runExtractionCommand(\"tar\", [\"xf\", archivePath, \"-C\", extractDir]);\n\t\tif (!tarFailure) return;\n\t\tfailures.push(tarFailure);\n\t}\n\n\tthrow new Error(`Failed to extract ${assetName}: ${failures.join(\"; \")}`);\n}\n\n// Download and install a tool\nasync function downloadTool(tool: \"fd\" | \"rg\"): Promise<string> {\n\tconst config = TOOLS[tool];\n\tif (!config) throw new Error(`Unknown tool: ${tool}`);\n\n\tconst plat = platform();\n\tconst architecture = arch();\n\n\t// Get latest version\n\tconst version = await getLatestVersion(config.repo);\n\n\t// Get asset name for this platform\n\tconst assetName = config.getAssetName(version, plat, architecture);\n\tif (!assetName) {\n\t\tthrow new Error(`Unsupported platform: ${plat}/${architecture}`);\n\t}\n\n\t// Create tools directory\n\tmkdirSync(TOOLS_DIR, { recursive: true });\n\n\tconst downloadUrl = `https://github.com/${config.repo}/releases/download/${config.tagPrefix}${version}/${assetName}`;\n\tconst archivePath = join(TOOLS_DIR, assetName);\n\tconst binaryExt = plat === \"win32\" ? \".exe\" : \"\";\n\tconst binaryPath = join(TOOLS_DIR, config.binaryName + binaryExt);\n\n\t// Download\n\tawait downloadFile(downloadUrl, archivePath);\n\n\t// Extract into a unique temp directory. fd and rg downloads can run concurrently\n\t// during startup, so sharing a fixed directory causes races.\n\tconst extractDir = join(\n\t\tTOOLS_DIR,\n\t\t`extract_tmp_${config.binaryName}_${process.pid}_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`,\n\t);\n\tmkdirSync(extractDir, { recursive: true });\n\n\ttry {\n\t\tif (assetName.endsWith(\".tar.gz\")) {\n\t\t\textractTarGzArchive(archivePath, extractDir, assetName);\n\t\t} else if (assetName.endsWith(\".zip\")) {\n\t\t\textractZipArchive(archivePath, extractDir, assetName);\n\t\t} else {\n\t\t\tthrow new Error(`Unsupported archive format: ${assetName}`);\n\t\t}\n\n\t\t// Find the binary in extracted files. Some archives contain files directly\n\t\t// at root, others nest under a versioned subdirectory.\n\t\tconst binaryFileName = config.binaryName + binaryExt;\n\t\tconst extractedDir = join(extractDir, assetName.replace(/\\.(tar\\.gz|zip)$/, \"\"));\n\t\tconst extractedBinaryCandidates = [join(extractedDir, binaryFileName), join(extractDir, binaryFileName)];\n\t\tlet extractedBinary = extractedBinaryCandidates.find((candidate) => existsSync(candidate));\n\n\t\tif (!extractedBinary) {\n\t\t\textractedBinary = findBinaryRecursively(extractDir, binaryFileName) ?? undefined;\n\t\t}\n\n\t\tif (extractedBinary) {\n\t\t\trenameSync(extractedBinary, binaryPath);\n\t\t} else {\n\t\t\tthrow new Error(`Binary not found in archive: expected ${binaryFileName} under ${extractDir}`);\n\t\t}\n\n\t\t// Make executable (Unix only)\n\t\tif (plat !== \"win32\") {\n\t\t\tchmodSync(binaryPath, 0o755);\n\t\t}\n\t} finally {\n\t\t// Cleanup\n\t\trmSync(archivePath, { force: true });\n\t\trmSync(extractDir, { recursive: true, force: true });\n\t}\n\n\treturn binaryPath;\n}\n\n// Termux package names for tools\nconst TERMUX_PACKAGES: Record<string, string> = {\n\tfd: \"fd\",\n\trg: \"ripgrep\",\n};\n\n// Ensure a tool is available, downloading if necessary\n// Returns the path to the tool, or null if unavailable\nexport async function ensureTool(tool: \"fd\" | \"rg\", silent: boolean = false): Promise<string | undefined> {\n\tconst existingPath = getToolPath(tool);\n\tif (existingPath) {\n\t\treturn existingPath;\n\t}\n\n\tconst config = TOOLS[tool];\n\tif (!config) return undefined;\n\n\tif (isOfflineModeEnabled()) {\n\t\tif (!silent) {\n\t\t\tconsole.log(chalk.yellow(`${config.name} not found. Offline mode enabled, skipping download.`));\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t// On Android/Termux, Linux binaries don't work due to Bionic libc incompatibility.\n\t// Users must install via pkg.\n\tif (platform() === \"android\") {\n\t\tconst pkgName = TERMUX_PACKAGES[tool] ?? tool;\n\t\tif (!silent) {\n\t\t\tconsole.log(chalk.yellow(`${config.name} not found. Install with: pkg install ${pkgName}`));\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t// Tool not found - download it\n\tif (!silent) {\n\t\tconsole.log(chalk.dim(`${config.name} not found. Downloading...`));\n\t}\n\n\ttry {\n\t\tconst path = await downloadTool(tool);\n\t\tif (!silent) {\n\t\t\tconsole.log(chalk.dim(`${config.name} installed to ${path}`));\n\t\t}\n\t\treturn path;\n\t} catch (e) {\n\t\tif (!silent) {\n\t\t\tconsole.log(chalk.yellow(`Failed to download ${config.name}: ${e instanceof Error ? e.message : e}`));\n\t\t}\n\t\treturn undefined;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"AAeA,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOpG;AAED,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAM/F;AAED,wBAAsB,kBAAkB,CACvC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAgBtC;AAED,wBAAsB,kBAAkB,CACvC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE7B;AAED,wBAAsB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiB9F"}
1
+ {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"AAeA,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOpG;AAED,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAM/F;AAED,wBAAsB,kBAAkB,CAAC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAgBnH;AAED,wBAAsB,kBAAkB,CAAC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE1G;AAED,wBAAsB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiB9F"}
@@ -1,5 +1,5 @@
1
1
  import { compare, valid } from "semver";
2
- import { ENV_OFFLINE, ENV_SKIP_VERSION_CHECK, PACKAGE_NAME, getEnvValue } from "../config.js";
2
+ import { ENV_OFFLINE, ENV_SKIP_VERSION_CHECK, getEnvValue, PACKAGE_NAME } from "../config.js";
3
3
  const LATEST_VERSION_URL = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;
4
4
  const DEFAULT_VERSION_CHECK_TIMEOUT_MS = 10000;
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"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","sourcesContent":["import { compare, valid } from \"semver\";\nimport { ENV_OFFLINE, ENV_SKIP_VERSION_CHECK, PACKAGE_NAME, getEnvValue } from \"../config.ts\";\n\nconst LATEST_VERSION_URL = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;\nconst DEFAULT_VERSION_CHECK_TIMEOUT_MS = 10000;\n\n/**\n * The versionless placeholder stamped on `main` and read from source-tree dev\n * runs (`bun packages/coding-agent/src/cli.ts`). Real releases never carry it —\n * `scripts/cut-release.ts` materializes the actual version on the tag commit —\n * so encountering it means this is a dev build that should not be compared\n * against the published registry version.\n */\nconst DEV_VERSION_PLACEHOLDER = \"0.0.0\";\n\nexport function isDevVersion(version: string): boolean {\n\treturn version.trim() === DEV_VERSION_PLACEHOLDER;\n}\n\nexport interface LatestPiRelease {\n\tversion: string;\n\tpackageName?: string;\n\tnote?: string;\n}\n\nexport function comparePackageVersions(leftVersion: string, rightVersion: string): number | undefined {\n\tconst left = valid(leftVersion.trim());\n\tconst right = valid(rightVersion.trim());\n\tif (!left || !right) {\n\t\treturn undefined;\n\t}\n\treturn compare(left, right);\n}\n\nexport function isNewerPackageVersion(candidateVersion: string, currentVersion: string): boolean {\n\tconst comparison = comparePackageVersions(candidateVersion, currentVersion);\n\tif (comparison !== undefined) {\n\t\treturn comparison > 0;\n\t}\n\treturn candidateVersion.trim() !== currentVersion.trim();\n}\n\nexport async function getLatestPiRelease(\n\toptions: { timeoutMs?: number } = {},\n): Promise<LatestPiRelease | undefined> {\n\tif (getEnvValue(ENV_OFFLINE)) return undefined;\n\n\tconst response = await fetch(LATEST_VERSION_URL, {\n\t\theaders: {\n\t\t\taccept: \"application/json\",\n\t\t},\n\t\tsignal: AbortSignal.timeout(options.timeoutMs ?? DEFAULT_VERSION_CHECK_TIMEOUT_MS),\n\t});\n\tif (!response.ok) return undefined;\n\n\tconst data = (await response.json()) as { name?: unknown; version?: unknown; note?: unknown };\n\tif (typeof data.version !== \"string\" || !data.version.trim()) return undefined;\n\tconst packageName = typeof data.name === \"string\" && data.name.trim() ? data.name.trim() : undefined;\n\tconst note = typeof data.note === \"string\" && data.note.trim() ? data.note.trim() : undefined;\n\treturn { version: data.version.trim(), packageName, ...(note ? { note } : {}) };\n}\n\nexport async function getLatestPiVersion(\n\toptions: { timeoutMs?: number } = {},\n): Promise<string | undefined> {\n\treturn (await getLatestPiRelease(options))?.version;\n}\n\nexport async function checkForNewPiVersion(currentVersion: string): Promise<string | undefined> {\n\tif (getEnvValue(ENV_SKIP_VERSION_CHECK)) return undefined;\n\t// Dev builds always read the versionless `0.0.0` placeholder, which is older\n\t// than any published release, so the registry check would always nag. Skip it\n\t// (and the network call) for source-tree/dev runs.\n\tif (isDevVersion(currentVersion)) {\n\t\treturn undefined;\n\t}\n\ttry {\n\t\tconst latestVersion = await getLatestPiVersion();\n\t\tif (latestVersion && isNewerPackageVersion(latestVersion, currentVersion)) {\n\t\t\treturn latestVersion;\n\t\t}\n\t\treturn undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n"]}
1
+ {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"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","sourcesContent":["import { compare, valid } from \"semver\";\nimport { ENV_OFFLINE, ENV_SKIP_VERSION_CHECK, getEnvValue, PACKAGE_NAME } from \"../config.ts\";\n\nconst LATEST_VERSION_URL = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;\nconst DEFAULT_VERSION_CHECK_TIMEOUT_MS = 10000;\n\n/**\n * The versionless placeholder stamped on `main` and read from source-tree dev\n * runs (`bun packages/coding-agent/src/cli.ts`). Real releases never carry it —\n * `scripts/cut-release.ts` materializes the actual version on the tag commit —\n * so encountering it means this is a dev build that should not be compared\n * against the published registry version.\n */\nconst DEV_VERSION_PLACEHOLDER = \"0.0.0\";\n\nexport function isDevVersion(version: string): boolean {\n\treturn version.trim() === DEV_VERSION_PLACEHOLDER;\n}\n\nexport interface LatestPiRelease {\n\tversion: string;\n\tpackageName?: string;\n\tnote?: string;\n}\n\nexport function comparePackageVersions(leftVersion: string, rightVersion: string): number | undefined {\n\tconst left = valid(leftVersion.trim());\n\tconst right = valid(rightVersion.trim());\n\tif (!left || !right) {\n\t\treturn undefined;\n\t}\n\treturn compare(left, right);\n}\n\nexport function isNewerPackageVersion(candidateVersion: string, currentVersion: string): boolean {\n\tconst comparison = comparePackageVersions(candidateVersion, currentVersion);\n\tif (comparison !== undefined) {\n\t\treturn comparison > 0;\n\t}\n\treturn candidateVersion.trim() !== currentVersion.trim();\n}\n\nexport async function getLatestPiRelease(options: { timeoutMs?: number } = {}): Promise<LatestPiRelease | undefined> {\n\tif (getEnvValue(ENV_OFFLINE)) return undefined;\n\n\tconst response = await fetch(LATEST_VERSION_URL, {\n\t\theaders: {\n\t\t\taccept: \"application/json\",\n\t\t},\n\t\tsignal: AbortSignal.timeout(options.timeoutMs ?? DEFAULT_VERSION_CHECK_TIMEOUT_MS),\n\t});\n\tif (!response.ok) return undefined;\n\n\tconst data = (await response.json()) as { name?: unknown; version?: unknown; note?: unknown };\n\tif (typeof data.version !== \"string\" || !data.version.trim()) return undefined;\n\tconst packageName = typeof data.name === \"string\" && data.name.trim() ? data.name.trim() : undefined;\n\tconst note = typeof data.note === \"string\" && data.note.trim() ? data.note.trim() : undefined;\n\treturn { version: data.version.trim(), packageName, ...(note ? { note } : {}) };\n}\n\nexport async function getLatestPiVersion(options: { timeoutMs?: number } = {}): Promise<string | undefined> {\n\treturn (await getLatestPiRelease(options))?.version;\n}\n\nexport async function checkForNewPiVersion(currentVersion: string): Promise<string | undefined> {\n\tif (getEnvValue(ENV_SKIP_VERSION_CHECK)) return undefined;\n\t// Dev builds always read the versionless `0.0.0` placeholder, which is older\n\t// than any published release, so the registry check would always nag. Skip it\n\t// (and the network call) for source-tree/dev runs.\n\tif (isDevVersion(currentVersion)) {\n\t\treturn undefined;\n\t}\n\ttry {\n\t\tconst latestVersion = await getLatestPiVersion();\n\t\tif (latestVersion && isNewerPackageVersion(latestVersion, currentVersion)) {\n\t\t\treturn latestVersion;\n\t\t}\n\t\treturn undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n"]}
@@ -3,6 +3,17 @@ title: "Changelog"
3
3
  description: "What's new in Atomic"
4
4
  ---
5
5
 
6
+ <Update label="July 31, 2026">
7
+
8
+ ## Pi 0.83.0 parity
9
+
10
+ - **One door prints a stored credential.** `atomic auth print-api-key --model <model>` and `atomic auth print-bearer-token --model <model>` hand a configured credential to an external client. The credential is all that reaches stdout — warnings, provider selection, refresh notices, and help go to stderr — `--model` is required, and each failure has its own exit code, with stdout empty on every non-zero exit. `--min-expiry` accepts `ms`, `s`, `m`, or `h`, defaults to `30m`, and is a usage error on `print-api-key`, which has no expiry to wait for. See [Usage](/usage#credential-commands) and [Security](/security#credential-export).
11
+ - **Extensions can read the session's model scope.** `ctx.scopedModels` reports the models scoped to the current session — the set `/scoped-models` shows — resolved at access time and correct under the isolated engine. It reports the scope and cannot widen it: the accessor is read-only, and every read hands back a frozen copy of the array, its entries, and their models, so neither pushing an entry nor swapping one in place reaches the session. `ScopedModel` and `ExtensionScopedModels` are exported so an extension can name what it read. See [Extensions](/extensions#ctxmodelregistry--ctxmodel--ctxscopedmodels).
12
+ - **An unrecognised stop reason is now an error.** A provider that ends a turn with a terminal reason the mapping does not know surfaces a provider error naming the raw value instead of an ordinary successful stop, so a new truncation or safety signal is visible rather than silent. Streaming partials carry the new `pending` reason until the terminal event replaces it; a stream that ends still `pending` is an error. See [Providers](/providers#stop-reasons) and [Custom Providers](/custom-provider#stop-reasons).
13
+ - **OAuth tokens refresh before they expire.** A stored token with under five minutes of validity left is refreshed rather than used, so a long turn does not start on a credential that dies mid-request. The refresh runs under the `auth.json` lock and re-checks expiry inside it, so concurrent sessions sharing one credential file refresh it once between them. See [Providers](/providers#token-refresh).
14
+ - **Remote OpenRouter logins have a way through.** When the browser cannot reach the loopback callback — over SSH, or on a headless host — the OpenRouter login accepts the final redirect URL, or the authorization code alone, pasted into the prompt. See [Providers](/providers#subscriptions).
15
+
16
+ </Update>
6
17
  <Update label="July 26, 2026">
7
18
 
8
19
  ## Pi 0.82.1 parity
@@ -30,7 +41,7 @@ See [SDK](/sdk) and [Custom providers](/custom-provider).
30
41
  ## Pi 0.80.6 compatibility
31
42
 
32
43
  - **Synced through upstream Pi 0.80.6.** Atomic and its bundled extensions now use the 0.80.6 Pi runtime packages, including signed empty Anthropic thinking preservation, request-wide GPT-5.4/5.5 long-context pricing, and corrected GPT-5.6 catalog/backend metadata.
33
- - **Model controls are current.** Atomic accepts `max` wherever the active model advertises it, applies `models.json` overrides to matching extension-registered models and built-ins, and loads legacy `.pi` plus primary `.atomic` layers during normal CLI startup. Disjoint override IDs survive, exact primary entries replace complete legacy entries, and removed catalog IDs fall back instead of being synthesized on resume. See [Models](/models).
44
+ - **Model controls are current.** Atomic accepts `max` wherever the active model advertises it, applies the active agent directory's single `models.json` overrides to matching extension-registered models and built-ins, and falls back instead of synthesizing removed catalog IDs on resume. See [Models](/models).
34
45
  - **Custom pricing tiers are preserved.** Custom `models.json` entries and extension providers can declare complete request-wide `cost.tiers`; matching `modelOverrides` can update scalar rates without losing inherited tiers or replace/clear the tier array explicitly. See [Models](/models#request-wide-cost-tiers) and [Custom Providers](/custom-provider#usage-and-cost).
35
46
  - **Safer session and tool behavior.** Invalid explicit bash timeouts fail instead of being clamped; missing exact session IDs warn before creation; lax null or omitted message content is normalized; auth writes surface persistence failures; Windows context traversal terminates at drive roots; and duplicate fork selections are ignored. See [Tools](/tools) and [Usage](/usage).
36
47
  - **More reliable streaming and binaries.** Visible custom messages stay before the live assistant row, standalone Linux clipboard reads can fall back to xclip with correctly packaged native bindings, caller-relative `TMPDIR` paths work from external directories, and `--skip-deps` tolerates a missing optional clipboard wrapper.
@@ -312,7 +312,7 @@ After registration, users can authenticate via `/login corporate-ai`.
312
312
 
313
313
  Existing extension OAuth definitions keep their `login`, `refreshToken`, `getApiKey`, and optional `modifyModels` methods. OAuth refresh is serialized so concurrent requests do not overwrite each other's credentials.
314
314
 
315
- In isolated interactive mode, extension code and executable OAuth methods remain in the engine process. Atomic transports only the JSON-safe provider description (`id`, `name`, `loginLabel`, and `usesCallbackServer`) to the terminal process; it never serializes provider functions or acquired credentials and does not load the extension a second time in the frontend. The engine executes the provider's login closure and correlates browser URLs, device codes, progress/info messages, prompts, selections, and manual-code callbacks with the originating login.
315
+ In isolated interactive mode, extension code and executable OAuth methods remain in the engine process. Atomic transports only the JSON-safe provider description (`id`, `name`, `loginLabel`, and `usesCallbackServer`) to the terminal process; it never serializes provider functions or acquired credentials and does not load the extension a second time in the frontend. `loginLabel` replaces the login dialog title, while `usesCallbackServer: true` exposes a redirect-URL paste field that races the browser callback. The engine executes the provider's login closure and correlates browser URLs, device codes, progress/info messages, prompts, selections, and manual-code callbacks with the originating login.
316
316
 
317
317
  After acquisition, the engine owns serialized credential persistence, model/current-model refresh, rollback on failure, and logout. The frontend applies the returned catalog only after the engine transaction succeeds. Escape or Ctrl+C cancels only the matching login and leaves the prior credential/catalog intact. Built-in OAuth and direct, non-isolated extension OAuth use the same persistence and cancellation semantics; later provider registrations continue to override earlier registrations by ID.
318
318
 
@@ -419,7 +419,7 @@ function streamMyProvider(
419
419
  totalTokens: 0,
420
420
  cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
421
421
  },
422
- stopReason: "stop",
422
+ stopReason: "pending",
423
423
  timestamp: Date.now(),
424
424
  };
425
425
 
@@ -428,12 +428,20 @@ function streamMyProvider(
428
428
  stream.push({ type: "start", partial: output });
429
429
 
430
430
  // Make API request and process response...
431
- // Push content events as they arrive...
431
+ // Push content events as they arrive, and set output.stopReason from the
432
+ // terminal event. A reason your provider sends that you do not map must
433
+ // become an error, not a silent "stop".
434
+ if (output.stopReason === "pending") {
435
+ throw new Error("Provider stream ended without a stop reason");
436
+ }
437
+ if (output.stopReason === "error" || output.stopReason === "aborted") {
438
+ throw new Error(output.errorMessage || "An unknown error occurred");
439
+ }
432
440
 
433
441
  // Push done event
434
442
  stream.push({
435
443
  type: "done",
436
- reason: output.stopReason as "stop" | "length" | "toolUse",
444
+ reason: output.stopReason,
437
445
  message: output
438
446
  });
439
447
  stream.end();
@@ -470,6 +478,21 @@ Push events via `stream.push()` in this order:
470
478
 
471
479
  The `partial` field in each event contains the current `AssistantMessage` state. Update `output.content` as you receive data, then include `output` as the `partial`.
472
480
 
481
+ ### Stop Reasons
482
+
483
+ `StopReason` is `"pending" | "stop" | "length" | "toolUse" | "error" | "aborted"`.
484
+
485
+ Start the partial message at `"pending"`. It is the reason every in-flight message carries, and it says the terminal event has not arrived yet — it is not a default standing in for `"stop"`. Set the real reason when the provider says the turn ended, then push `done` with it.
486
+
487
+ Two checks belong immediately before `done`:
488
+
489
+ - a stream that reached the end while still `"pending"` never received a terminal event, so raise rather than report a stop that did not happen;
490
+ - `"error"` and `"aborted"` are failures, so raise them with `output.errorMessage` and let the `catch` push an `error` event.
491
+
492
+ `done` accepts only `"stop"`, `"length"`, and `"toolUse"`, which is exactly what those two checks leave, so the `as "stop" | "length" | "toolUse"` cast older implementations used is no longer needed.
493
+
494
+ Map each raw reason your provider can send onto one of the five terminal values, and **raise on one you do not recognise** rather than falling back to `"stop"`. This is what the built-in providers do: an unmapped reason becomes a provider error naming the raw value, so a new truncation or safety signal is visible instead of arriving as a turn that looks like it finished normally. The optional `rawStopReason` field on `AssistantMessage` is where the provider's own string belongs when you want to keep it.
495
+
473
496
  ### Content Blocks
474
497
 
475
498
  Add content blocks to `output.content` as they arrive:
@@ -7,16 +7,15 @@ See [AGENTS.md](https://github.com/bastani-inc/atomic/blob/main/AGENTS.md) for a
7
7
  ```bash
8
8
  git clone https://github.com/bastani-inc/atomic
9
9
  cd atomic
10
- bun install
11
- bun run typecheck
12
- bun run check:file-length
10
+ npm ci --ignore-scripts
11
+ npm run typecheck
13
12
  ```
14
13
 
15
- This monorepo uses Bun for development commands; avoid npm/yarn/pnpm except for npm registry publishing. Run package scripts from the monorepo root or package directory with Bun, for example:
14
+ This monorepo runs a hybrid toolchain matching upstream pi: npm installs, builds, checks, and runs the vitest suites, while Bun compiles the release binaries and runs `scripts/*.ts`. Avoid yarn and pnpm. Run package scripts from the monorepo root or a package directory, for example:
16
15
 
17
16
  ```bash
18
- bun run test:unit
19
- bun run --cwd packages/coding-agent build
17
+ npm run test:unit
18
+ npm run build --workspace=@bastani/atomic
20
19
  ```
21
20
 
22
21
  Atomic keeps the caller's current working directory when launched from development wrappers.
@@ -61,17 +60,17 @@ Set `ATOMIC_TIMING=1` when profiling startup. Normal interactive launches print
61
60
  ## Testing
62
61
 
63
62
  ```bash
64
- bun run typecheck # Type-check the monorepo
65
- bun run check:file-length # Enforce the tracked TS/JS/Rust 500-line limit
66
- bun run test:unit # Run unit tests
67
- bun run test:integration # Run integration tests
68
- bun run test:all # Run all tests
69
- # Run package Vitest tests
70
- bun run --cwd packages/coding-agent test -- test/specific.test.ts
63
+ npm run typecheck # Type-check the monorepo
64
+ npm run test:unit # Run unit tests
65
+ npm run test:integration # Run integration tests
66
+ npm run test:all # Run all tests
67
+ npm run test:scripts # Run the repository script tests under node --test
68
+ # Run the package Vitest suite (Node-hosted)
69
+ npm run test --workspace=@bastani/atomic -- test/specific.test.ts
70
+ # Run its Bun-hosted half. Required: the SQLite selector tests load bun:sqlite,
71
+ # which the shipped binary has and Node does not.
71
72
  ```
72
73
 
73
- The file-length gate scans tracked `.ts`, `.tsx`, `.js`, `.jsx`, `.mjs`, `.cjs`, and `.rs` files via `git ls-files`, falls back to a recursive walk outside Git, and counts physical lines with a no-final-newline correction. Only generated/vendored path globs (`node_modules`, `dist`, `target`, `binaries`, `.git`, `vendor`, minified bundles, and the bundled third-party `packages/workflows/skills/impeccable/**` skill) plus first-five-line generated markers are excluded.
74
-
75
74
  ## Deterministic installs
76
75
 
77
76
  `@bastani/atomic` ships `packages/coding-agent/npm-shrinkwrap.json` so package-manager installs resolve the same dependency tree every time. Contributors working from a source checkout can validate that the checked-in shrinkwrap is up to date with:
@@ -64,7 +64,41 @@ Bundled MCP startup, proxy calls, direct tools, and readiness-critical commands
64
64
 
65
65
  ## Interactive callback isolation
66
66
 
67
- Interactive Atomic sessions run the agent engine, extensions, tools, hooks, workflow code, and extension-owned render components in a supervised child process. The terminal host owns stdin and cached rendering, so a synchronous busy loop in one callback cannot stop keyboard handling, spinners, or render scheduling. The engine sends a heartbeat every 50 ms; Atomic identifies the active callback after a 250 ms heartbeat gap and marks the engine unresponsive after one second. Escape requests cooperative cancellation and escalates to terminating the engine when it cannot acknowledge; the interrupted result is reported as unknown and is never retried automatically.
67
+ Interactive Atomic sessions run the agent engine, extensions, tools, hooks, workflow code, and extension-owned render components in a supervised child process. The terminal host owns stdin and cached rendering, so a synchronous busy loop in one callback cannot stop keyboard handling, spinners, or render scheduling. The engine sends a heartbeat every 50 ms; Atomic identifies the active callback after a 250 ms heartbeat gap and marks the engine unresponsive after one second.
68
+
69
+ Escape requests the engine's own cooperative cancellation and waits for it, for as long as the engine takes. There is no deadline on that wait, and Escape never terminates or replaces the engine, so an interrupt cannot discard in-flight tool state.
70
+
71
+ Ctrl+C is the host's escape hatch, and it applies in two distinct situations.
72
+
73
+ The first is a remote custom UI. While an engine-owned `ctx.ui.custom()` component or overlay holds input, every key is forwarded to the engine child, so a component that never resolves would trap Ctrl+C too. Ownership of the key is declared per mount:
74
+
75
+ - A component mounted with `handlesCtrlC: true` receives the press and keeps its own Skip, Close, or cancel binding. If that same component is still holding input on the next press, that press closes it, so a declared component cannot trap the keyboard either.
76
+ - A component that did not declare it is closed by the first press, through the ordinary close path: its `ctx.ui.custom()` promise resolves with `undefined`, the child is told the component closed, the editor comes back, and the engine keeps running — including any other component that generation has mounted below or above this one.
77
+
78
+ Declare `handlesCtrlC` whenever your component's hint row offers `ctrl+c` for anything. This is a migration for existing components: an extension that already bound Ctrl+C keeps that binding only by adding the option. The bundled workflow surfaces and the `/mcp`, `/mcp setup`, and MCP OAuth panels declare it. Native host selectors, dialogs, input forms, session pickers, and unrelated native overlays are unaffected: they keep Ctrl+C as their own cancel.
79
+
80
+ ```typescript
81
+ await ctx.ui.custom<string | undefined>(
82
+ (tui, theme, keybindings, done) => new PromptCard(tui, theme, done),
83
+ { overlay: true, handlesCtrlC: true },
84
+ );
85
+ ```
86
+
87
+ Both safety keys are matched by physical identity rather than by the configured `app.clear` action, so rebinding `app.clear` — even to Escape — can neither route Escape into a stop/restart branch nor take the host route away from Ctrl+C. A configured `app.clear` on any other key keeps its ordinary editor-clear behavior, and key-release events never act.
88
+
89
+ The second is an engine that is provably not answering, reported as `Interactive engine is not responding; restarting.`. That means the watchdog has called it unresponsive, a cooperative abort has been outstanding longer than that same one-second threshold, a replacement has been waiting for readiness longer than it, or a replacement failed outright. This case takes precedence over everything above: the first press terminates and replaces the engine even behind a component that declared `handlesCtrlC`, because a wedged child cannot run that component's handler either. The readiness case has no heartbeat and no watchdog diagnostic at all, so Ctrl+C is the only way out of a replacement that hangs before it becomes ready; a repeat press can stop an overdue replacement and start another, while a replacement that is still fresh is never stopped by a stray press. A failed replacement keeps Ctrl+C armed indefinitely, so recovery stays available without Atomic ever retrying on its own.
90
+
91
+ If an engine generation dies for any reason (crash, SIGKILL, closed stdin, malformed transport, explicit stop), the host tears that generation's UI down immediately rather than waiting for the next `engine_ready`. Every mounted remote component is closed newest-first so a nested overlay never restores focus to a layer that has already gone, each `ctx.ui.custom()` promise settles, `select`/`confirm`/`input`/`editor` dialogs opened by that generation are cancelled without answering the replacement child, widget keys are released — both component-factory widgets and line widgets, and only those a newer generation has not taken over — terminal modes are reset, the editor is remounted and refocused unless a surviving native modal owns input, and the blocking inline custom-UI depth unwinds to zero. Frames that generation had buffered die with it, so a mount frame from a dead child can never remount UI into the replacement, and a child that exits during the startup window — after it reported ready but before the host finished attaching — is still recovered rather than leaving a live TUI bound to a dead engine. Atomic then makes one automatic replacement attempt and reports `Interactive engine stopped unexpectedly; restarting.`; a failed replacement reports `Interactive engine restart failed: …`, leaves the editor usable, and stays recoverable with Ctrl+C. A child that dies while that replacement is still starting does not trigger another automatic attempt either — it simply keeps Ctrl+C armed. A submission the engine never accepted is returned to the editor as a draft instead of being discarded — exactly as it was typed, including surrounding whitespace and expanded paste content, placed ahead of anything typed while the send was still pending and separated by a blank line. Submissions still queued behind it come back with it, in the order they were entered. Each submission carries its own draft, so two entries that differ only in whitespace can never restore each other's text. A restored draft is the whole report: Atomic does not add a red transport error beside it.
92
+
93
+ "Never accepted" is a correlated fact, not a guess from error text. Before a child runs anything for a request — extension hook, queue change, compaction, shell — it announces that it owns that request, and flushes the announcement first. A transport failure that arrives without an announcement means the work never started, so the exact draft comes back; a transport failure after one means the work may already have had effects, so the text stays gone and the failure is reported normally. Output is deliberately not the boundary: `!touch marker && sleep 400` changes the working tree and prints nothing, and offering it back would invite a second run. Classification is otherwise unchanged: it covers the raw stream failures a dying engine produces (`EPIPE`, `ERR_STREAM_DESTROYED`, `ERR_STREAM_WRITE_AFTER_END`) as well as an explicit stop or a missing child; the rejected error keeps its own identity and its `code`, `errno`, and `syscall` fields, with the classification carried in non-enumerable markers. Request timeouts after a successful write, RPC error responses, provider and model errors, and anything after `agent_start` are reported as before and never restore a draft.
94
+
95
+ Because the announcement is part of the ownership decision, the interactive-engine protocol version is now `2`. A host and child from different versions do not bind, rather than silently falling back to the old, unsafe policy.
96
+
97
+ An announcement can still be in the pipe when the child dies, so a dead generation gets a short settling window: its UI is torn down at once, but its stdout keeps being read and only its ownership frames are honoured, and its requests are classified once, with the error of whatever ended it. A replacement is started only after that — at most a bounded pause, so a descendant that inherited stdout and never closes it cannot delay recovery.
98
+
99
+ Session teardown fences engine recovery: disposal stops the current child, cancels an in-flight replacement, and waits for it before returning, so no engine child — and no host initialization — outlives the session that started it.
100
+
101
+ The engine child is launched with an environment that never contains Atomic's engine-only control values (engine role, host PID, guardian path, and any `--api-key` credential). They travel in an owner-only bootstrap file whose path is a private CLI argument; the child reads it once, freezes the values, and unlinks exactly that file. Recursive cleanup of the file's directory belongs to the host that created it, never to a path read from arguments. This matters for extensions: under Bun a child process spawned without an explicit `env` inherits the runtime's launch-time environment, so a value placed in the engine's environment could not be taken back by deleting it later. Because the engine never receives those values in its environment, `Bun.spawn()`, `Bun.spawnSync()`, and `node:child_process` calls from extension and hook code cannot leak them either. Passing an explicit `env` derived from `process.env` remains the recommended practice for anything an extension spawns.
68
102
 
69
103
  Dialogs and `ctx.ui.custom()` components are proxied to the host as rendered lines with asynchronous input forwarding. Custom UI results must be JSON-safe. APIs that require a synchronous callback in the terminal process—raw `onTerminalInput` transforms, synchronous `getEditorText`, custom editor factories, autocomplete wrappers, component-factory widgets, and custom header/footer factories—are unavailable in isolated interactive mode and produce a warning rather than executing extension code in the host. Print and public RPC modes retain their existing execution model.
70
104
 
@@ -997,10 +1031,32 @@ ctx.sessionManager.getBranch() // Current branch
997
1031
  ctx.sessionManager.getLeafId() // Current leaf entry ID
998
1032
  ```
999
1033
 
1000
- ### ctx.modelRegistry / ctx.model
1034
+ ### ctx.modelRegistry / ctx.model / ctx.scopedModels
1001
1035
 
1002
1036
  Access to models and API keys.
1003
1037
 
1038
+ `ctx.scopedModels` is the read-only list of models scoped to the current session — the same set the `/scoped-models` command shows. It is resolved from the `--models` CLI flag and the `enabledModels` setting, matched against the available catalogue. It is empty when no scoping is configured, meaning every available model is usable. Each entry is `{ model, thinkingLevel? }`, where `thinkingLevel` is set only when a pattern pinned it (for example `anthropic/*:high`). Use it to populate a model picker that mirrors the built-in one instead of enumerating the whole catalogue.
1039
+
1040
+ The value is resolved at access time, so it tracks session replacement. Under the isolated interactive engine it reflects the engine's catalogue rather than a stale host snapshot.
1041
+
1042
+ It reports the scope and cannot change it. `ctx.scopedModels` is a getter with no setter, typed `readonly ScopedModel[]`, so assigning to it or pushing an entry is a compile error. The guarantee also holds at runtime, where the type does not reach: each read returns a fresh copy — of the array, of every `{ model, thinkingLevel }` entry in it, and of each entry's model — and all three are frozen. A JavaScript extension, or one that asserts the `readonly` away, therefore cannot widen the set of models the session may use by pushing an entry, nor change which model it selects by swapping one in place; the attempt throws rather than quietly working. Read it, and change scope through the commands and settings that own it.
1043
+
1044
+ ```typescript
1045
+ for (const { model, thinkingLevel } of ctx.scopedModels) {
1046
+ console.log(`${model.provider}/${model.id}${thinkingLevel ? `:${thinkingLevel}` : ""}`);
1047
+ }
1048
+ ```
1049
+
1050
+ Both types are exported: `ScopedModel` for one entry, `ExtensionScopedModels` for the accessor's own type. They are declared at the public extension type path (`core/extensions/types.ts`) and re-exported from the package root, so an extension never reaches into an internal module to describe what it just read.
1051
+
1052
+ ```typescript
1053
+ import type { ExtensionScopedModels, ScopedModel } from "@bastani/atomic";
1054
+
1055
+ function firstScoped(scope: ExtensionScopedModels): ScopedModel | undefined {
1056
+ return scope[0];
1057
+ }
1058
+ ```
1059
+
1004
1060
  ### ctx.signal
1005
1061
 
1006
1062
  The current agent abort signal, or `undefined` when no agent turn is active.
@@ -2572,6 +2628,8 @@ The callback receives:
2572
2628
 
2573
2629
  Pass `{ signal }` to dismiss the custom UI if an operation is aborted; the returned promise rejects with the signal reason.
2574
2630
 
2631
+ Pass `{ handlesCtrlC: true }` when the component binds Ctrl+C itself (cancel, skip, close). In isolated interactive sessions the host otherwise closes a component that owns input on the first Ctrl+C, so that a component which never resolves cannot trap the keyboard. See [Interactive callback isolation](#interactive-callback-isolation).
2632
+
2575
2633
  See [TUI components](/tui) for the full component API.
2576
2634
 
2577
2635
  #### Overlay Mode (Experimental)
@@ -83,7 +83,7 @@ Modifier combinations: `ctrl+shift+x`, `alt+ctrl+x`, `ctrl+shift+alt+x`, `ctrl+1
83
83
  | Keybinding id | Default | Description |
84
84
  |--------|---------|-------------|
85
85
  | `app.interrupt` | `escape` | Abort active work and hold queued messages; repeated Escape does not dequeue the hold |
86
- | `app.clear` | `ctrl+c` | Interrupt active or queued work; once idle, clear the editor (press twice while idle to exit) |
86
+ | `app.clear` | `ctrl+c` | Interrupt active or queued work, or terminate an unresponsive interactive engine; once idle, clear the editor (press twice while idle to exit) |
87
87
  | `app.exit` | `ctrl+d` | Exit (when editor empty) |
88
88
  | `app.suspend` | `ctrl+z` (none on Windows) | Suspend to background |
89
89
  | `app.editor.external` | `ctrl+g` | Open in external editor (`$VISUAL` or `$EDITOR`) |
@@ -94,6 +94,18 @@ When `app.clipboard.pasteImage` finds text rather than an image, Atomic inserts
94
94
 
95
95
  A held paused queue by itself is idle for Ctrl+C handling. After an interruption settles, the next Ctrl+C clears the editor without releasing or dequeuing the hold, and a second quick idle press exits normally.
96
96
 
97
+ In interactive sessions the agent runs in a supervised engine child (see [Extensions](/extensions#interactive-callback-isolation)). Escape there requests the engine's cooperative cancellation and waits for it with no deadline; it never terminates or replaces the engine.
98
+
99
+ Both keys are recognized by their physical identity, not by the configured `app.clear` action, so rebinding `app.clear` cannot make Escape stop the engine or take the host route away from Ctrl+C.
100
+
101
+ Ctrl+C is the host's escape hatch whenever an engine-owned `ctx.ui.custom()` component or overlay holds input: those forward every key to the engine, so a component that never resolves would swallow Ctrl+C. Which component gets the press is decided per mount, in this order:
102
+
103
+ 1. If the engine is provably not answering, the first press terminates and replaces it — a wedged child cannot run the component's own handler either. "Not answering" means the watchdog has declared it unresponsive, a cooperative abort has gone unanswered past the same one-second threshold, a replacement has been waiting for readiness past it, or a replacement failed. A failed replacement keeps Ctrl+C armed so another press can try again; Atomic never retries on its own.
104
+ 2. Otherwise, if the component declared `handlesCtrlC` when it was mounted, it receives the press and keeps its own Skip, Close, or cancel behavior. The bundled workflow surfaces declare it. If the same component is still holding input on the next press, that press closes it.
105
+ 3. Otherwise the first press closes that one component, exactly as if it had been cancelled: its `ctx.ui.custom()` promise resolves with `undefined`, the editor comes back, and the engine — along with everything else it has mounted or is running — is left alone.
106
+
107
+ `tui.select.cancel` still keeps Ctrl+C as local cancel inside host-native selectors, dialogs, input forms, and session pickers.
108
+
97
109
  ### Sessions
98
110
 
99
111
  | Keybinding id | Default | Description |
package/docs/models.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # Custom Models
2
2
 
3
- Add custom providers and models (Ollama, vLLM, LM Studio, proxies) via `~/.atomic/agent/models.json` (legacy `~/.pi/agent/models.json` is also read).
4
-
5
- When both files exist, Atomic reads the legacy `.pi` file first and the primary `.atomic` file second. For `modelOverrides`, entries are layered by provider and model ID: disjoint legacy entries remain available, while an exact primary provider/model entry replaces the complete legacy override entry. Atomic does not field-merge one override entry across files; use `{}` in the primary file to restore the built-in model values for that exact entry.
3
+ Add custom providers and models (Ollama, vLLM, LM Studio, proxies) via the single `models.json` in the active Atomic agent directory, normally `~/.atomic/agent/models.json`, or the directory selected by `ATOMIC_CODING_AGENT_DIR`/`PI_CODING_AGENT_DIR`. Atomic reads only that file: it does not read project-scoped `.atomic/models.json`, fall back to `~/.pi/agent/models.json`, or merge `.pi` and `.atomic` model configuration files. The legacy `.pi` read fallback remains available for configuration surfaces that explicitly use layered config paths, such as `auth.json`; it does not apply to `models.json`.
6
4
 
7
5
  A complete `defaultProvider`/`defaultModel` pair in `settings.json` is resolved after built-in, configured, and extension providers register. If the provider remains unsupported, interactive mode reports a generic saved-configuration warning and leaves model selection open instead of routing the session to a different provider. Print and JSON modes write that diagnostic to stderr and exit nonzero before prompting, keeping JSON stdout JSONL-clean. RPC rejects `prompt` with the same correlated diagnostic until an explicit successful `set_model` selects an available model or an explicit model cycle returns a different available model. A null or unchanged cycle result does not clear the condition. If the provider is supported but the model is unknown or lacks authentication, normal automatic selection of an available authenticated model continues. Valid custom- and extension-provider defaults resolve once their provider registration is available. See [Settings](/settings#model--thinking).
8
6
 
@@ -95,7 +93,7 @@ Override defaults when you need specific values:
95
93
  }
96
94
  ```
97
95
 
98
- Atomic reloads every configured `models.json` layer each time you open `/model`: legacy global/project `.pi` sources first, then primary global/project `.atomic` sources. Provider definitions, complete per-model overrides, dynamic catalogs, and isolated-engine model state are rebuilt from that fresh layered view, so edits take effect without restarting. Invalid edits report an error and do not silently reuse a different layer.
96
+ Atomic reloads the active agent directory's single `models.json` each time you open `/model`. Provider definitions, per-model overrides, dynamic catalogs, and isolated-engine model state are rebuilt from that fresh configuration, so edits take effect without restarting. Invalid edits report an error.
99
97
 
100
98
  ## Google AI Studio Example
101
99
 
@@ -418,13 +416,13 @@ Use `modelOverrides` to customize specific models without replacing the provider
418
416
 
419
417
  `modelOverrides` supports these fields per model: `name`, `reasoning`, `thinkingLevelMap`, `input`, `cost` (partial scalar rates plus optional full tier-array replacement), `contextWindow`, `maxTokens`, `headers`, `compat`.
420
418
 
421
- When both `~/.pi/agent/models.json` and `~/.atomic/agent/models.json` define `modelOverrides`, Atomic merges their nested provider/model maps in that order. Different model IDs survive from both files. For the same provider and model ID, the primary `.atomic` entry replaces the entire legacy `.pi` override entry rather than deep-merging individual fields. This complete-entry rule includes `headers`: a primary exact override without headers removes headers that came from the legacy override, but does not erase a surviving custom model definition's own headers. An empty primary override (`{}`) therefore restores the model's built-in values for that entry.
419
+ Atomic reads one `models.json` from the active agent directory. It does not layer model overrides from `.pi` and `.atomic` files.
422
420
 
423
421
  Within a single file, custom model definitions replace matching built-in entries after built-in overrides are applied. `modelOverrides` composes only with built-in and extension-registered models; it does not modify a same-ID custom model definition.
424
422
 
425
423
  Behavior notes:
426
424
  - Atomic retains the parsed override map even when an extension registers the matching provider/model after `models.json` is loaded.
427
- - Layered primary/legacy compatibility merges override maps by provider and model ID; disjoint entries survive, while a primary exact entry replaces the complete legacy entry without cross-file field-level merging.
425
+ - Model overrides come from the active agent directory's single `models.json`; no cross-file layering or merging is performed.
428
426
  - For matching built-in and extension-registered models, the model definition is the base and `modelOverrides` wins configured fields. Extension-registered model headers are shallow-merged with override headers, with override headers winning duplicate names. A same-ID custom model replaces the built-in override result, including its complete header record.
429
427
  - A scalar-only `cost` override preserves inherited tiers. Supplying `cost.tiers` replaces the complete tier array, including `[]` to clear it; omitted scalar cost fields remain inherited.
430
428
  - Provider-level request headers remain a separate provider layer and are combined at request time.