@bastani/atomic 0.9.11-alpha.1 → 0.9.11-alpha.11

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 (2353) hide show
  1. package/CHANGELOG.md +278 -0
  2. package/README.md +16 -11
  3. package/dist/builtin/intercom/package.json +3 -3
  4. package/dist/builtin/intercom/subagent-relay.ts +8 -5
  5. package/dist/builtin/mcp/CHANGELOG.md +12 -0
  6. package/dist/builtin/mcp/README.md +3 -3
  7. package/dist/builtin/mcp/cli.js +0 -1
  8. package/dist/builtin/mcp/commands.ts +7 -3
  9. package/dist/builtin/mcp/config.ts +0 -2
  10. package/dist/builtin/mcp/package.json +6 -6
  11. package/dist/builtin/mcp/sampling-handler.ts +1 -5
  12. package/dist/builtin/mcp/types.ts +0 -1
  13. package/dist/builtin/subagents/CHANGELOG.md +34 -0
  14. package/dist/builtin/subagents/README.md +10 -1
  15. package/dist/builtin/subagents/agents/code-simplifier.md +48 -103
  16. package/dist/builtin/subagents/agents/codebase-analyzer.md +28 -131
  17. package/dist/builtin/subagents/agents/codebase-locator.md +25 -84
  18. package/dist/builtin/subagents/agents/codebase-online-researcher.md +61 -260
  19. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +30 -208
  20. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +29 -151
  21. package/dist/builtin/subagents/agents/codebase-research-locator.md +22 -119
  22. package/dist/builtin/subagents/agents/debugger.md +29 -65
  23. package/dist/builtin/subagents/agents/worker.md +24 -31
  24. package/dist/builtin/subagents/package.json +5 -5
  25. package/dist/builtin/subagents/prompts/gather-context-and-clarify.md +18 -11
  26. package/dist/builtin/subagents/prompts/parallel-cleanup.md +34 -33
  27. package/dist/builtin/subagents/prompts/parallel-context-build.md +22 -36
  28. package/dist/builtin/subagents/prompts/parallel-handoff-plan.md +20 -52
  29. package/dist/builtin/subagents/prompts/parallel-research.md +17 -41
  30. package/dist/builtin/subagents/prompts/parallel-review.md +23 -28
  31. package/dist/builtin/subagents/prompts/review-loop.md +18 -27
  32. package/dist/builtin/subagents/skills/subagent/SKILL.md +6 -6
  33. package/dist/builtin/subagents/src/agents/agent-discovery.ts +26 -15
  34. package/dist/builtin/subagents/src/agents/agent-loaders.ts +48 -34
  35. package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +80 -31
  36. package/dist/builtin/subagents/src/agents/agent-management.ts +194 -55
  37. package/dist/builtin/subagents/src/agents/agent-overrides.ts +85 -32
  38. package/dist/builtin/subagents/src/agents/agent-paths.ts +4 -1
  39. package/dist/builtin/subagents/src/agents/agent-selection.ts +1 -1
  40. package/dist/builtin/subagents/src/agents/agent-serializer.ts +1 -4
  41. package/dist/builtin/subagents/src/agents/agents.ts +9 -9
  42. package/dist/builtin/subagents/src/agents/chain-serializer.ts +9 -5
  43. package/dist/builtin/subagents/src/agents/identity.ts +12 -3
  44. package/dist/builtin/subagents/src/agents/skills-paths.ts +64 -24
  45. package/dist/builtin/subagents/src/agents/skills.ts +29 -26
  46. package/dist/builtin/subagents/src/extension/doctor.ts +31 -20
  47. package/dist/builtin/subagents/src/extension/fanout-child.ts +27 -12
  48. package/dist/builtin/subagents/src/extension/index.ts +119 -43
  49. package/dist/builtin/subagents/src/extension/notification-content.ts +14 -9
  50. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +4 -2
  51. package/dist/builtin/subagents/src/extension/schemas.ts +304 -177
  52. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +137 -73
  53. package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +49 -21
  54. package/dist/builtin/subagents/src/intercom/result-intercom.ts +76 -38
  55. package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +12 -6
  56. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +183 -57
  57. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +15 -18
  58. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +67 -26
  59. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +8 -8
  60. package/dist/builtin/subagents/src/runs/background/async-execution.ts +1 -1
  61. package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +86 -32
  62. package/dist/builtin/subagents/src/runs/background/async-resume.ts +93 -36
  63. package/dist/builtin/subagents/src/runs/background/async-status.ts +82 -27
  64. package/dist/builtin/subagents/src/runs/background/completion-claims.ts +12 -5
  65. package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +3 -1
  66. package/dist/builtin/subagents/src/runs/background/completion-notification.ts +3 -1
  67. package/dist/builtin/subagents/src/runs/background/notify.ts +57 -21
  68. package/dist/builtin/subagents/src/runs/background/parallel-groups.ts +28 -14
  69. package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +147 -79
  70. package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +20 -5
  71. package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +7 -2
  72. package/dist/builtin/subagents/src/runs/background/result-status.ts +11 -5
  73. package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +18 -5
  74. package/dist/builtin/subagents/src/runs/background/result-watcher.ts +104 -35
  75. package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +28 -7
  76. package/dist/builtin/subagents/src/runs/background/run-status.ts +120 -32
  77. package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +98 -39
  78. package/dist/builtin/subagents/src/runs/background/subagent-runner-dynamic.ts +185 -37
  79. package/dist/builtin/subagents/src/runs/background/subagent-runner-finalize.ts +23 -9
  80. package/dist/builtin/subagents/src/runs/background/subagent-runner-output.ts +6 -2
  81. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel-helpers.ts +34 -18
  82. package/dist/builtin/subagents/src/runs/background/subagent-runner-parallel.ts +175 -26
  83. package/dist/builtin/subagents/src/runs/background/subagent-runner-sequential.ts +68 -23
  84. package/dist/builtin/subagents/src/runs/background/subagent-runner-state.ts +200 -49
  85. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +82 -49
  86. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +33 -11
  87. package/dist/builtin/subagents/src/runs/background/subagent-runner-types.ts +16 -6
  88. package/dist/builtin/subagents/src/runs/background/subagent-runner-utils.ts +2 -3
  89. package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +11 -8
  90. package/dist/builtin/subagents/src/runs/foreground/chain-execution-details.ts +5 -2
  91. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +115 -31
  92. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +71 -54
  93. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +104 -37
  94. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +102 -61
  95. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +24 -10
  96. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +9 -6
  97. package/dist/builtin/subagents/src/runs/foreground/detached-cleanup-barrier.ts +22 -22
  98. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-control.ts +45 -40
  99. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +6 -5
  100. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +118 -43
  101. package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +17 -7
  102. package/dist/builtin/subagents/src/runs/foreground/execution-detach-route.ts +5 -3
  103. package/dist/builtin/subagents/src/runs/foreground/execution-intercom-detach.ts +39 -35
  104. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +81 -42
  105. package/dist/builtin/subagents/src/runs/foreground/execution-structured-retries.ts +27 -21
  106. package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +2 -5
  107. package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +9 -4
  108. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +69 -25
  109. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +36 -19
  110. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +95 -62
  111. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +30 -9
  112. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +106 -96
  113. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +68 -36
  114. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +262 -83
  115. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +6 -1
  116. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +67 -41
  117. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +129 -44
  118. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +20 -3
  119. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +8 -6
  120. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +65 -47
  121. package/dist/builtin/subagents/src/runs/shared/chain-outputs.ts +37 -12
  122. package/dist/builtin/subagents/src/runs/shared/dynamic-fanout.ts +120 -34
  123. package/dist/builtin/subagents/src/runs/shared/final-drain.ts +12 -7
  124. package/dist/builtin/subagents/src/runs/shared/intercom-group.ts +3 -2
  125. package/dist/builtin/subagents/src/runs/shared/long-running-guard.ts +8 -3
  126. package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +42 -20
  127. package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +8 -4
  128. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +103 -38
  129. package/dist/builtin/subagents/src/runs/shared/nested-events-control.ts +30 -20
  130. package/dist/builtin/subagents/src/runs/shared/nested-events-core.ts +45 -20
  131. package/dist/builtin/subagents/src/runs/shared/nested-events-projection.ts +57 -23
  132. package/dist/builtin/subagents/src/runs/shared/nested-events-registry.ts +77 -29
  133. package/dist/builtin/subagents/src/runs/shared/nested-events-sanitize.ts +99 -42
  134. package/dist/builtin/subagents/src/runs/shared/nested-events.ts +32 -26
  135. package/dist/builtin/subagents/src/runs/shared/nested-path.ts +22 -17
  136. package/dist/builtin/subagents/src/runs/shared/nested-render.ts +31 -10
  137. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +10 -8
  138. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +59 -33
  139. package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +17 -13
  140. package/dist/builtin/subagents/src/runs/shared/run-history.ts +13 -6
  141. package/dist/builtin/subagents/src/runs/shared/single-output.ts +11 -6
  142. package/dist/builtin/subagents/src/runs/shared/spawn-env.ts +21 -0
  143. package/dist/builtin/subagents/src/runs/shared/structured-output.ts +33 -19
  144. package/dist/builtin/subagents/src/runs/shared/subagent-control.ts +59 -48
  145. package/dist/builtin/subagents/src/runs/shared/subagent-prompt-runtime.ts +18 -11
  146. package/dist/builtin/subagents/src/runs/shared/workflow-graph.ts +41 -11
  147. package/dist/builtin/subagents/src/runs/shared/worktree-post-create.ts +46 -10
  148. package/dist/builtin/subagents/src/runs/shared/worktree-root.ts +21 -5
  149. package/dist/builtin/subagents/src/runs/shared/worktree.ts +89 -34
  150. package/dist/builtin/subagents/src/shared/artifacts.ts +137 -7
  151. package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +49 -13
  152. package/dist/builtin/subagents/src/shared/fast-mode.ts +13 -6
  153. package/dist/builtin/subagents/src/shared/fork-context.ts +7 -4
  154. package/dist/builtin/subagents/src/shared/formatters.ts +14 -9
  155. package/dist/builtin/subagents/src/shared/jsonl-writer.ts +2 -1
  156. package/dist/builtin/subagents/src/shared/model-info.ts +10 -3
  157. package/dist/builtin/subagents/src/shared/post-exit-stdio-guard.ts +7 -6
  158. package/dist/builtin/subagents/src/shared/session-tokens.ts +2 -1
  159. package/dist/builtin/subagents/src/shared/settings.ts +43 -43
  160. package/dist/builtin/subagents/src/shared/status-format.ts +10 -2
  161. package/dist/builtin/subagents/src/shared/types-async.ts +22 -19
  162. package/dist/builtin/subagents/src/shared/types-config.ts +1 -1
  163. package/dist/builtin/subagents/src/shared/types-depth.ts +23 -11
  164. package/dist/builtin/subagents/src/shared/types-results.ts +49 -6
  165. package/dist/builtin/subagents/src/shared/types-runtime.ts +16 -17
  166. package/dist/builtin/subagents/src/shared/types.ts +2 -2
  167. package/dist/builtin/subagents/src/shared/utils.ts +34 -20
  168. package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +44 -47
  169. package/dist/builtin/subagents/src/slash/saved-chain-mapping.ts +5 -7
  170. package/dist/builtin/subagents/src/slash/slash-bridge.ts +3 -3
  171. package/dist/builtin/subagents/src/slash/slash-commands.ts +78 -52
  172. package/dist/builtin/subagents/src/slash/slash-live-state.ts +59 -32
  173. package/dist/builtin/subagents/src/tui/render-chain-graph.ts +120 -32
  174. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +85 -22
  175. package/dist/builtin/subagents/src/tui/render-helpers.ts +16 -6
  176. package/dist/builtin/subagents/src/tui/render-layout.ts +8 -3
  177. package/dist/builtin/subagents/src/tui/render-result-compact.ts +125 -43
  178. package/dist/builtin/subagents/src/tui/render-result.ts +128 -85
  179. package/dist/builtin/subagents/src/tui/render-stable-output.ts +17 -13
  180. package/dist/builtin/subagents/src/tui/render-status-progress.ts +52 -20
  181. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +130 -28
  182. package/dist/builtin/subagents/src/tui/render-widget.ts +54 -27
  183. package/dist/builtin/subagents/src/tui/render.ts +10 -3
  184. package/dist/builtin/web-access/CHANGELOG.md +6 -0
  185. package/dist/builtin/web-access/content-tools.ts +1 -0
  186. package/dist/builtin/web-access/flat-string.ts +37 -0
  187. package/dist/builtin/web-access/github-api.ts +2 -1
  188. package/dist/builtin/web-access/github-extract.ts +3 -2
  189. package/dist/builtin/web-access/package.json +2 -2
  190. package/dist/builtin/workflows/CHANGELOG.md +120 -0
  191. package/dist/builtin/workflows/README.md +78 -70
  192. package/dist/builtin/workflows/ambient.d.ts +0 -5
  193. package/dist/builtin/workflows/builtin/adversarial-verification-prompts.ts +7 -4
  194. package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +1 -1
  195. package/dist/builtin/workflows/builtin/adversarial-verification.ts +2 -1
  196. package/dist/builtin/workflows/builtin/classify-and-act-prompts.ts +5 -2
  197. package/dist/builtin/workflows/builtin/classify-and-act-runner.ts +5 -7
  198. package/dist/builtin/workflows/builtin/classify-and-act.ts +3 -2
  199. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-prompts.ts +6 -3
  200. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-runner.ts +5 -5
  201. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +3 -2
  202. package/dist/builtin/workflows/builtin/generate-and-filter-prompts.ts +7 -4
  203. package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +6 -3
  204. package/dist/builtin/workflows/builtin/generate-and-filter.ts +3 -2
  205. package/dist/builtin/workflows/builtin/goal-artifacts.ts +1 -1
  206. package/dist/builtin/workflows/builtin/goal-ledger.ts +6 -4
  207. package/dist/builtin/workflows/builtin/goal-models.ts +39 -39
  208. package/dist/builtin/workflows/builtin/goal-orchestrator-prompts.ts +94 -0
  209. package/dist/builtin/workflows/builtin/goal-prompts.ts +70 -285
  210. package/dist/builtin/workflows/builtin/goal-reducer.ts +1 -1
  211. package/dist/builtin/workflows/builtin/goal-runner.ts +74 -117
  212. package/dist/builtin/workflows/builtin/goal.ts +13 -12
  213. package/dist/builtin/workflows/builtin/index.d.ts +17 -112
  214. package/dist/builtin/workflows/builtin/index.ts +1 -2
  215. package/dist/builtin/workflows/builtin/loop-until-done-prompts.ts +20 -12
  216. package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +3 -0
  217. package/dist/builtin/workflows/builtin/loop-until-done.ts +3 -2
  218. package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +149 -88
  219. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +102 -78
  220. package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +164 -56
  221. package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +16 -21
  222. package/dist/builtin/workflows/builtin/open-claude-design.ts +2 -1
  223. package/dist/builtin/workflows/builtin/ralph-core.ts +67 -64
  224. package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +40 -46
  225. package/dist/builtin/workflows/builtin/ralph-models.ts +37 -47
  226. package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +37 -117
  227. package/dist/builtin/workflows/builtin/ralph-runner.ts +88 -116
  228. package/dist/builtin/workflows/builtin/ralph.ts +8 -6
  229. package/dist/builtin/workflows/builtin/shared-prompts.ts +117 -70
  230. package/dist/builtin/workflows/builtin/steering-context.ts +51 -0
  231. package/dist/builtin/workflows/builtin/tournament-prompts.ts +21 -12
  232. package/dist/builtin/workflows/builtin/tournament-runner.ts +3 -0
  233. package/dist/builtin/workflows/builtin/tournament.ts +3 -2
  234. package/dist/builtin/workflows/package.json +4 -4
  235. package/dist/builtin/workflows/skills/create-spec/SKILL.md +1 -1
  236. package/dist/builtin/workflows/skills/impeccable/SKILL.md +33 -129
  237. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_asset_producer.toml +11 -3
  238. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_documenter.toml +26 -0
  239. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_finish_reviewer.toml +35 -0
  240. package/dist/builtin/workflows/skills/impeccable/reference/android.md +1 -1
  241. package/dist/builtin/workflows/skills/impeccable/reference/animate.md +72 -189
  242. package/dist/builtin/workflows/skills/impeccable/reference/audit.md +10 -9
  243. package/dist/builtin/workflows/skills/impeccable/reference/audit.native.md +2 -2
  244. package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +19 -108
  245. package/dist/builtin/workflows/skills/impeccable/reference/clarify.md +59 -253
  246. package/dist/builtin/workflows/skills/impeccable/reference/colorize.md +51 -222
  247. package/dist/builtin/workflows/skills/impeccable/reference/craft-floor.md +45 -0
  248. package/dist/builtin/workflows/skills/impeccable/reference/craft.md +3 -121
  249. package/dist/builtin/workflows/skills/impeccable/reference/critique.md +28 -20
  250. package/dist/builtin/workflows/skills/impeccable/reference/degraded/asset-producer.md +97 -0
  251. package/dist/builtin/workflows/skills/impeccable/reference/degraded/documenter.md +23 -0
  252. package/dist/builtin/workflows/skills/impeccable/reference/degraded/finish-reviewer.md +32 -0
  253. package/dist/builtin/workflows/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
  254. package/dist/builtin/workflows/skills/impeccable/reference/delight.md +47 -279
  255. package/dist/builtin/workflows/skills/impeccable/reference/distill.md +2 -2
  256. package/dist/builtin/workflows/skills/impeccable/reference/doctor.md +53 -0
  257. package/dist/builtin/workflows/skills/impeccable/reference/document.md +60 -73
  258. package/dist/builtin/workflows/skills/impeccable/reference/harden.md +1 -12
  259. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +23 -12
  260. package/dist/builtin/workflows/skills/impeccable/reference/init.md +64 -163
  261. package/dist/builtin/workflows/skills/impeccable/reference/ios.md +1 -1
  262. package/dist/builtin/workflows/skills/impeccable/reference/layout.md +52 -153
  263. package/dist/builtin/workflows/skills/impeccable/reference/live.md +47 -36
  264. package/dist/builtin/workflows/skills/impeccable/reference/new-work.md +105 -0
  265. package/dist/builtin/workflows/skills/impeccable/reference/{product.md → operate.md} +6 -5
  266. package/dist/builtin/workflows/skills/impeccable/reference/optimize.md +4 -4
  267. package/dist/builtin/workflows/skills/impeccable/reference/overdrive.md +1 -4
  268. package/dist/builtin/workflows/skills/impeccable/reference/polish.md +68 -212
  269. package/dist/builtin/workflows/skills/impeccable/reference/quieter.md +3 -3
  270. package/dist/builtin/workflows/skills/impeccable/reference/routing.md +18 -0
  271. package/dist/builtin/workflows/skills/impeccable/reference/shape.md +38 -144
  272. package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +48 -269
  273. package/dist/builtin/workflows/skills/impeccable/reference/visualize.md +38 -0
  274. package/dist/builtin/workflows/skills/impeccable/scripts/command-metadata.json +1 -1
  275. package/dist/builtin/workflows/skills/impeccable/scripts/concept-seed.mjs +584 -0
  276. package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +117 -9
  277. package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +486 -59
  278. package/dist/builtin/workflows/skills/impeccable/scripts/critique-storage.mjs +16 -45
  279. package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +96 -10
  280. package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +143 -26
  281. package/dist/builtin/workflows/skills/impeccable/scripts/detector/design-system.mjs +181 -12
  282. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +3187 -182
  283. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +102 -7
  284. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +282 -70
  285. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +183 -15
  286. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +22 -7
  287. package/dist/builtin/workflows/skills/impeccable/scripts/detector/findings.mjs +7 -1
  288. package/dist/builtin/workflows/skills/impeccable/scripts/detector/node/file-system.mjs +16 -2
  289. package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +155 -42
  290. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +2988 -155
  291. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/constants.mjs +11 -0
  292. package/dist/builtin/workflows/skills/impeccable/scripts/doctor.mjs +336 -0
  293. package/dist/builtin/workflows/skills/impeccable/scripts/generate-image.mjs +232 -0
  294. package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +92 -30
  295. package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +414 -120
  296. package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +25 -8
  297. package/dist/builtin/workflows/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
  298. package/dist/builtin/workflows/skills/impeccable/scripts/lib/composition-catalog.mjs +165 -0
  299. package/dist/builtin/workflows/skills/impeccable/scripts/lib/concept-catalog.mjs +329 -0
  300. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-config.mjs +20 -5
  301. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-paths.mjs +16 -8
  302. package/dist/builtin/workflows/skills/impeccable/scripts/lib/provider.mjs +1 -0
  303. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-deep.mjs +455 -0
  304. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
  305. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness.mjs +457 -0
  306. package/dist/builtin/workflows/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
  307. package/dist/builtin/workflows/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
  308. package/dist/builtin/workflows/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
  309. package/dist/builtin/workflows/skills/impeccable/scripts/live/completion.mjs +10 -1
  310. package/dist/builtin/workflows/skills/impeccable/scripts/live/event-validation.mjs +15 -0
  311. package/dist/builtin/workflows/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
  312. package/dist/builtin/workflows/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
  313. package/dist/builtin/workflows/skills/impeccable/scripts/live/session-store.mjs +109 -32
  314. package/dist/builtin/workflows/skills/impeccable/scripts/live/source-lock.mjs +105 -0
  315. package/dist/builtin/workflows/skills/impeccable/scripts/live/source-search.mjs +105 -0
  316. package/dist/builtin/workflows/skills/impeccable/scripts/live/sveltekit-adapter.mjs +8 -6
  317. package/dist/builtin/workflows/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
  318. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +212 -69
  319. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-dom.js +5 -1
  320. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-session.js +7 -1
  321. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +565 -115
  322. package/dist/builtin/workflows/skills/impeccable/scripts/live-commit-manual-edits.mjs +3 -0
  323. package/dist/builtin/workflows/skills/impeccable/scripts/live-inject.mjs +198 -14
  324. package/dist/builtin/workflows/skills/impeccable/scripts/live-insert.mjs +24 -6
  325. package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +11 -3
  326. package/dist/builtin/workflows/skills/impeccable/scripts/live-poll.mjs +44 -14
  327. package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +405 -34
  328. package/dist/builtin/workflows/skills/impeccable/scripts/live-status.mjs +9 -5
  329. package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +81 -67
  330. package/dist/builtin/workflows/skills/impeccable/scripts/live.mjs +7 -2
  331. package/dist/builtin/workflows/skills/impeccable/scripts/palette.mjs +76 -81
  332. package/dist/builtin/workflows/skills/impeccable/scripts/pin.mjs +4 -4
  333. package/dist/builtin/workflows/skills/impeccable/scripts/serve-question.mjs +890 -0
  334. package/dist/builtin/workflows/skills/impeccable/scripts/surface-brief.mjs +74 -0
  335. package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +57 -252
  336. package/dist/builtin/workflows/skills/prompt-engineer/references/advanced_patterns.md +70 -226
  337. package/dist/builtin/workflows/skills/prompt-engineer/references/core_prompting.md +64 -103
  338. package/dist/builtin/workflows/skills/prompt-engineer/references/quality_improvement.md +81 -155
  339. package/dist/builtin/workflows/src/authoring/typebox-defaults.d.ts +5 -5
  340. package/dist/builtin/workflows/src/authoring/typebox-defaults.ts +160 -197
  341. package/dist/builtin/workflows/src/authoring/workflow.ts +137 -132
  342. package/dist/builtin/workflows/src/authoring.d.ts +7 -3
  343. package/dist/builtin/workflows/src/durable/backend.ts +510 -383
  344. package/dist/builtin/workflows/src/durable/boundary-lifecycle.ts +172 -0
  345. package/dist/builtin/workflows/src/durable/boundary-topology.ts +475 -0
  346. package/dist/builtin/workflows/src/durable/child-invocation.ts +14 -0
  347. package/dist/builtin/workflows/src/durable/child-primitive.ts +115 -74
  348. package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +290 -0
  349. package/dist/builtin/workflows/src/durable/completed-catalog.ts +425 -189
  350. package/dist/builtin/workflows/src/durable/completed-inspection.ts +117 -105
  351. package/dist/builtin/workflows/src/durable/completed-subtree.ts +35 -0
  352. package/dist/builtin/workflows/src/durable/dbos-backend.ts +484 -414
  353. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres-root.ts +86 -87
  354. package/dist/builtin/workflows/src/durable/dbos-embedded-postgres.ts +171 -149
  355. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +415 -189
  356. package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +128 -106
  357. package/dist/builtin/workflows/src/durable/dbos-local-postgres.ts +75 -68
  358. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +138 -101
  359. package/dist/builtin/workflows/src/durable/dbos-prompt-reservations.ts +316 -259
  360. package/dist/builtin/workflows/src/durable/dbos-sdk-handle.ts +138 -117
  361. package/dist/builtin/workflows/src/durable/dbos-status-transition.ts +48 -43
  362. package/dist/builtin/workflows/src/durable/dbos-tombstone.ts +14 -14
  363. package/dist/builtin/workflows/src/durable/durable-hash.ts +9 -11
  364. package/dist/builtin/workflows/src/durable/factory.ts +54 -29
  365. package/dist/builtin/workflows/src/durable/format-version.ts +1 -1
  366. package/dist/builtin/workflows/src/durable/index.ts +69 -68
  367. package/dist/builtin/workflows/src/durable/local-command.ts +47 -43
  368. package/dist/builtin/workflows/src/durable/prompt-reservation-state.ts +156 -149
  369. package/dist/builtin/workflows/src/durable/prompt-reservations.ts +16 -16
  370. package/dist/builtin/workflows/src/durable/resume-catalog.ts +11 -11
  371. package/dist/builtin/workflows/src/durable/resume-eligibility.ts +69 -25
  372. package/dist/builtin/workflows/src/durable/resume-runtime.ts +262 -224
  373. package/dist/builtin/workflows/src/durable/retention-policy.ts +31 -30
  374. package/dist/builtin/workflows/src/durable/run-timing.ts +42 -41
  375. package/dist/builtin/workflows/src/durable/scoped-backend.ts +261 -193
  376. package/dist/builtin/workflows/src/durable/stage-primitive.ts +466 -370
  377. package/dist/builtin/workflows/src/durable/stage-topology-validation.ts +247 -0
  378. package/dist/builtin/workflows/src/durable/stage-topology.ts +53 -0
  379. package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +49 -0
  380. package/dist/builtin/workflows/src/durable/tool-outcome.ts +130 -0
  381. package/dist/builtin/workflows/src/durable/tool-primitive.ts +650 -137
  382. package/dist/builtin/workflows/src/durable/types.ts +243 -132
  383. package/dist/builtin/workflows/src/durable/ui-primitive.ts +243 -164
  384. package/dist/builtin/workflows/src/durable/workflow-child-result.ts +61 -0
  385. package/dist/builtin/workflows/src/durable/workflow-status-transition.ts +16 -15
  386. package/dist/builtin/workflows/src/engine/graph-inference.ts +76 -76
  387. package/dist/builtin/workflows/src/engine/options.ts +35 -35
  388. package/dist/builtin/workflows/src/engine/primitives/chain.ts +27 -22
  389. package/dist/builtin/workflows/src/engine/primitives/exit.ts +1 -1
  390. package/dist/builtin/workflows/src/engine/primitives/parallel.ts +64 -52
  391. package/dist/builtin/workflows/src/engine/primitives/task.ts +110 -95
  392. package/dist/builtin/workflows/src/engine/primitives/ui.ts +46 -50
  393. package/dist/builtin/workflows/src/engine/primitives/workflow.ts +194 -151
  394. package/dist/builtin/workflows/src/engine/replay.ts +6 -6
  395. package/dist/builtin/workflows/src/engine/run-durable-admission.ts +50 -0
  396. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +64 -37
  397. package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +30 -24
  398. package/dist/builtin/workflows/src/engine/run-durable-topology.ts +288 -0
  399. package/dist/builtin/workflows/src/engine/run-returned-status.ts +60 -57
  400. package/dist/builtin/workflows/src/engine/run-terminal-event.ts +39 -0
  401. package/dist/builtin/workflows/src/engine/run-terminal-failure.ts +53 -0
  402. package/dist/builtin/workflows/src/engine/run-tool-admission-boundary.ts +99 -0
  403. package/dist/builtin/workflows/src/engine/run-tool-control-registry.ts +179 -0
  404. package/dist/builtin/workflows/src/engine/run-tool-execution-tracker.ts +164 -0
  405. package/dist/builtin/workflows/src/engine/run-tool-node-lifecycle.ts +152 -0
  406. package/dist/builtin/workflows/src/engine/run.ts +681 -477
  407. package/dist/builtin/workflows/src/engine/runtime.ts +160 -140
  408. package/dist/builtin/workflows/src/engine/workflow-activity.ts +7 -3
  409. package/dist/builtin/workflows/src/engine/workflow-tool-abort.ts +92 -0
  410. package/dist/builtin/workflows/src/extension/atomic-stage-session.ts +123 -120
  411. package/dist/builtin/workflows/src/extension/background-ui-adapter.ts +108 -112
  412. package/dist/builtin/workflows/src/extension/companions.ts +116 -116
  413. package/dist/builtin/workflows/src/extension/completed-stage-intercom-ask.ts +123 -111
  414. package/dist/builtin/workflows/src/extension/config-file-loader.ts +153 -148
  415. package/dist/builtin/workflows/src/extension/config-loader.ts +264 -283
  416. package/dist/builtin/workflows/src/extension/discovery-loaders.ts +81 -84
  417. package/dist/builtin/workflows/src/extension/discovery.ts +267 -272
  418. package/dist/builtin/workflows/src/extension/dispatcher.ts +214 -217
  419. package/dist/builtin/workflows/src/extension/extension-factory.ts +103 -93
  420. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +127 -111
  421. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +418 -409
  422. package/dist/builtin/workflows/src/extension/hil-answer-notifications.ts +273 -261
  423. package/dist/builtin/workflows/src/extension/index.bundle.mjs +75711 -0
  424. package/dist/builtin/workflows/src/extension/index.ts +37 -37
  425. package/dist/builtin/workflows/src/extension/lifecycle-notification-delivery.ts +64 -64
  426. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +389 -369
  427. package/dist/builtin/workflows/src/extension/mcp.ts +35 -35
  428. package/dist/builtin/workflows/src/extension/postmortem-deps.ts +32 -35
  429. package/dist/builtin/workflows/src/extension/public-types.ts +160 -182
  430. package/dist/builtin/workflows/src/extension/render-call.ts +85 -88
  431. package/dist/builtin/workflows/src/extension/render-component.ts +9 -11
  432. package/dist/builtin/workflows/src/extension/render-result.ts +443 -375
  433. package/dist/builtin/workflows/src/extension/renderers.ts +35 -35
  434. package/dist/builtin/workflows/src/extension/runtime-active-block-claim.ts +37 -37
  435. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +143 -138
  436. package/dist/builtin/workflows/src/extension/runtime.ts +346 -258
  437. package/dist/builtin/workflows/src/extension/status-writer.ts +95 -95
  438. package/dist/builtin/workflows/src/extension/ui-surface.ts +224 -218
  439. package/dist/builtin/workflows/src/extension/wiring.ts +307 -281
  440. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +109 -108
  441. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +253 -224
  442. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +84 -83
  443. package/dist/builtin/workflows/src/extension/workflow-command-utils.ts +126 -132
  444. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +213 -202
  445. package/dist/builtin/workflows/src/extension/workflow-model-catalog.ts +24 -0
  446. package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +110 -95
  447. package/dist/builtin/workflows/src/extension/workflow-policy.ts +7 -9
  448. package/dist/builtin/workflows/src/extension/workflow-ports.ts +30 -34
  449. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +41 -20
  450. package/dist/builtin/workflows/src/extension/workflow-reload-coordinator.ts +46 -46
  451. package/dist/builtin/workflows/src/extension/workflow-reload-report.ts +28 -25
  452. package/dist/builtin/workflows/src/extension/workflow-resume-picker-rows.ts +61 -46
  453. package/dist/builtin/workflows/src/extension/workflow-resume-shadow.ts +29 -31
  454. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +531 -453
  455. package/dist/builtin/workflows/src/extension/workflow-schema.ts +149 -92
  456. package/dist/builtin/workflows/src/extension/workflow-stage-results.ts +182 -194
  457. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +151 -118
  458. package/dist/builtin/workflows/src/extension/workflow-targets.ts +159 -128
  459. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +204 -217
  460. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +485 -372
  461. package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +124 -150
  462. package/dist/builtin/workflows/src/extension/workflow-tool-registration.ts +43 -46
  463. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +346 -206
  464. package/dist/builtin/workflows/src/extension/workflow-tool.ts +113 -129
  465. package/dist/builtin/workflows/src/intercom/intercom-bridge.ts +17 -20
  466. package/dist/builtin/workflows/src/intercom/intercom-routing.ts +62 -62
  467. package/dist/builtin/workflows/src/intercom/result-intercom.ts +123 -123
  468. package/dist/builtin/workflows/src/runs/background/cancellation-registry.ts +72 -59
  469. package/dist/builtin/workflows/src/runs/background/durable-resume-transition.ts +45 -45
  470. package/dist/builtin/workflows/src/runs/background/job-tracker.ts +69 -34
  471. package/dist/builtin/workflows/src/runs/background/quit-tool-node.ts +71 -0
  472. package/dist/builtin/workflows/src/runs/background/quit.ts +360 -138
  473. package/dist/builtin/workflows/src/runs/background/resume-acknowledgements.ts +70 -69
  474. package/dist/builtin/workflows/src/runs/background/run-inspect.ts +90 -79
  475. package/dist/builtin/workflows/src/runs/background/runner.ts +122 -121
  476. package/dist/builtin/workflows/src/runs/background/startup-admission.ts +56 -60
  477. package/dist/builtin/workflows/src/runs/background/status.ts +325 -284
  478. package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +25 -26
  479. package/dist/builtin/workflows/src/runs/foreground/executor-abort.ts +311 -309
  480. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +229 -199
  481. package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +56 -51
  482. package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +168 -152
  483. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +258 -220
  484. package/dist/builtin/workflows/src/runs/foreground/executor-exit-manager.ts +178 -173
  485. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +273 -269
  486. package/dist/builtin/workflows/src/runs/foreground/executor-inputs.ts +59 -56
  487. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +379 -351
  488. package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +123 -127
  489. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +360 -295
  490. package/dist/builtin/workflows/src/runs/foreground/executor-queued-user-message.ts +47 -47
  491. package/dist/builtin/workflows/src/runs/foreground/executor-run-finalizers.ts +125 -104
  492. package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +191 -189
  493. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +309 -242
  494. package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +141 -127
  495. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +219 -179
  496. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +410 -354
  497. package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +143 -126
  498. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +50 -47
  499. package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +1 -1
  500. package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +153 -153
  501. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +157 -110
  502. package/dist/builtin/workflows/src/runs/foreground/executor.ts +10 -10
  503. package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +176 -100
  504. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +363 -257
  505. package/dist/builtin/workflows/src/runs/foreground/stage-delivery-activity.ts +86 -0
  506. package/dist/builtin/workflows/src/runs/foreground/stage-queued-user-messages.ts +95 -0
  507. package/dist/builtin/workflows/src/runs/foreground/stage-runner-candidate.ts +8 -8
  508. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +277 -219
  509. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +636 -494
  510. package/dist/builtin/workflows/src/runs/foreground/stage-runner-message-admission.ts +182 -181
  511. package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +80 -80
  512. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +78 -74
  513. package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +235 -106
  514. package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +200 -0
  515. package/dist/builtin/workflows/src/runs/foreground/stage-runner-replacement.ts +31 -32
  516. package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +115 -98
  517. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +29 -42
  518. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +44 -52
  519. package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +63 -58
  520. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +161 -124
  521. package/dist/builtin/workflows/src/runs/foreground/stage-runner-unresolved-overflow.ts +27 -23
  522. package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +10 -10
  523. package/dist/builtin/workflows/src/runs/foreground/stage-tool-execution-buffer.ts +33 -31
  524. package/dist/builtin/workflows/src/runs/shared/concurrency.ts +53 -53
  525. package/dist/builtin/workflows/src/runs/shared/graph-inference.ts +1 -1
  526. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +257 -385
  527. package/dist/builtin/workflows/src/runs/shared/model-fallback-failures.ts +378 -363
  528. package/dist/builtin/workflows/src/runs/shared/prompt-callsite.ts +55 -55
  529. package/dist/builtin/workflows/src/runs/shared/validate-inputs.ts +75 -84
  530. package/dist/builtin/workflows/src/runs/shared/worktree-cache-lifecycle.ts +1 -3
  531. package/dist/builtin/workflows/src/runs/shared/worktree-cwd.ts +96 -83
  532. package/dist/builtin/workflows/src/runs/shared/worktree-diff.ts +9 -2
  533. package/dist/builtin/workflows/src/runs/shared/worktree-git-runner.ts +21 -6
  534. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +60 -30
  535. package/dist/builtin/workflows/src/runs/shared/worktree-post-create.ts +12 -5
  536. package/dist/builtin/workflows/src/runs/shared/worktree-setup.ts +51 -30
  537. package/dist/builtin/workflows/src/runs/shared/worktree.ts +4 -4
  538. package/dist/builtin/workflows/src/sdk-surface.ts +38 -19
  539. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +17 -16
  540. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +299 -280
  541. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +78 -10
  542. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +313 -219
  543. package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +400 -152
  544. package/dist/builtin/workflows/src/shared/flat-string.ts +33 -0
  545. package/dist/builtin/workflows/src/shared/graph-store-snapshot.ts +144 -0
  546. package/dist/builtin/workflows/src/shared/intercom-group.ts +33 -26
  547. package/dist/builtin/workflows/src/shared/persistence-compaction-policy.ts +30 -30
  548. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +435 -379
  549. package/dist/builtin/workflows/src/shared/persistence-restore.ts +187 -181
  550. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +211 -208
  551. package/dist/builtin/workflows/src/shared/prompt-callsite-context.ts +3 -3
  552. package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +87 -94
  553. package/dist/builtin/workflows/src/shared/resume-continuation.ts +1 -1
  554. package/dist/builtin/workflows/src/shared/returned-run-status.ts +91 -77
  555. package/dist/builtin/workflows/src/shared/run-id.ts +36 -0
  556. package/dist/builtin/workflows/src/shared/run-visibility.ts +2 -2
  557. package/dist/builtin/workflows/src/shared/schema-introspection.ts +50 -60
  558. package/dist/builtin/workflows/src/shared/serializable.ts +72 -86
  559. package/dist/builtin/workflows/src/shared/session-transcript.ts +44 -39
  560. package/dist/builtin/workflows/src/shared/stage-prompt.ts +183 -202
  561. package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +270 -274
  562. package/dist/builtin/workflows/src/shared/store-factory.ts +9 -7
  563. package/dist/builtin/workflows/src/shared/store-internal.ts +201 -168
  564. package/dist/builtin/workflows/src/shared/store-observation.ts +10 -0
  565. package/dist/builtin/workflows/src/shared/store-prompt-methods.ts +196 -200
  566. package/dist/builtin/workflows/src/shared/store-public-types.ts +216 -196
  567. package/dist/builtin/workflows/src/shared/store-run-methods.ts +252 -222
  568. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +284 -283
  569. package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +53 -0
  570. package/dist/builtin/workflows/src/shared/store-types.ts +273 -235
  571. package/dist/builtin/workflows/src/shared/store.ts +7 -7
  572. package/dist/builtin/workflows/src/shared/timing.ts +36 -34
  573. package/dist/builtin/workflows/src/shared/types.ts +259 -217
  574. package/dist/builtin/workflows/src/shared/workflow-artifacts.ts +261 -0
  575. package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +11 -4
  576. package/dist/builtin/workflows/src/shared/workflow-authoring-types.ts +81 -58
  577. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +247 -221
  578. package/dist/builtin/workflows/src/shared/workflow-failures-contract.ts +45 -46
  579. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +330 -351
  580. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +212 -157
  581. package/dist/builtin/workflows/src/shared/workflow-failures.ts +10 -10
  582. package/dist/builtin/workflows/src/shared/workflow-run-ownership.ts +49 -0
  583. package/dist/builtin/workflows/src/tui/chat-surface-message.ts +157 -184
  584. package/dist/builtin/workflows/src/tui/chat-surface.ts +332 -355
  585. package/dist/builtin/workflows/src/tui/color-utils.ts +21 -30
  586. package/dist/builtin/workflows/src/tui/connectors.ts +57 -61
  587. package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +192 -200
  588. package/dist/builtin/workflows/src/tui/edge.ts +10 -9
  589. package/dist/builtin/workflows/src/tui/graph-canvas.ts +148 -134
  590. package/dist/builtin/workflows/src/tui/graph-theme.ts +139 -148
  591. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +9 -6
  592. package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +147 -183
  593. package/dist/builtin/workflows/src/tui/graph-view-input.ts +295 -329
  594. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +291 -320
  595. package/dist/builtin/workflows/src/tui/graph-view-render.ts +160 -192
  596. package/dist/builtin/workflows/src/tui/graph-view-state.ts +487 -308
  597. package/dist/builtin/workflows/src/tui/graph-view-types.ts +65 -58
  598. package/dist/builtin/workflows/src/tui/header.ts +140 -156
  599. package/dist/builtin/workflows/src/tui/host-input-form.ts +47 -45
  600. package/dist/builtin/workflows/src/tui/inline-form-card.ts +277 -266
  601. package/dist/builtin/workflows/src/tui/inline-form-editor-text.ts +61 -62
  602. package/dist/builtin/workflows/src/tui/inline-form-editor.ts +407 -412
  603. package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +203 -214
  604. package/dist/builtin/workflows/src/tui/inline-form-store.ts +24 -24
  605. package/dist/builtin/workflows/src/tui/inputs-overlay.ts +116 -129
  606. package/dist/builtin/workflows/src/tui/inputs-picker-editing.ts +111 -115
  607. package/dist/builtin/workflows/src/tui/inputs-picker-input.ts +255 -269
  608. package/dist/builtin/workflows/src/tui/inputs-picker-render.ts +248 -236
  609. package/dist/builtin/workflows/src/tui/inputs-picker-types.ts +111 -140
  610. package/dist/builtin/workflows/src/tui/inputs-picker.ts +12 -12
  611. package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +49 -57
  612. package/dist/builtin/workflows/src/tui/layout.ts +130 -133
  613. package/dist/builtin/workflows/src/tui/mouse-input.ts +45 -47
  614. package/dist/builtin/workflows/src/tui/node-card.ts +247 -223
  615. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +383 -398
  616. package/dist/builtin/workflows/src/tui/overlay-terminal-modes.ts +20 -19
  617. package/dist/builtin/workflows/src/tui/prompt-card-input.ts +183 -194
  618. package/dist/builtin/workflows/src/tui/prompt-card-render.ts +529 -318
  619. package/dist/builtin/workflows/src/tui/prompt-card-select.ts +76 -98
  620. package/dist/builtin/workflows/src/tui/prompt-card-state.ts +40 -40
  621. package/dist/builtin/workflows/src/tui/prompt-card-text.ts +76 -83
  622. package/dist/builtin/workflows/src/tui/prompt-card.ts +3 -3
  623. package/dist/builtin/workflows/src/tui/renderers.ts +6 -7
  624. package/dist/builtin/workflows/src/tui/run-detail.ts +320 -259
  625. package/dist/builtin/workflows/src/tui/run-identity-rows.ts +97 -0
  626. package/dist/builtin/workflows/src/tui/session-list.ts +19 -18
  627. package/dist/builtin/workflows/src/tui/session-overlays.ts +103 -87
  628. package/dist/builtin/workflows/src/tui/session-picker.ts +318 -282
  629. package/dist/builtin/workflows/src/tui/stage-chat-composer-drafts.ts +11 -11
  630. package/dist/builtin/workflows/src/tui/stage-chat-layout.ts +55 -62
  631. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +384 -263
  632. package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +91 -102
  633. package/dist/builtin/workflows/src/tui/stage-chat-view-delivery-activity.ts +113 -0
  634. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +189 -209
  635. package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +178 -208
  636. package/dist/builtin/workflows/src/tui/stage-chat-view-live-events.ts +53 -23
  637. package/dist/builtin/workflows/src/tui/stage-chat-view-pending-tools.ts +2 -4
  638. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +85 -88
  639. package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +39 -17
  640. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +475 -409
  641. package/dist/builtin/workflows/src/tui/stage-chat-view-status.ts +24 -25
  642. package/dist/builtin/workflows/src/tui/stage-chat-view-transcript.ts +181 -197
  643. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +128 -129
  644. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +211 -205
  645. package/dist/builtin/workflows/src/tui/status-helpers.ts +65 -69
  646. package/dist/builtin/workflows/src/tui/status-list.ts +349 -305
  647. package/dist/builtin/workflows/src/tui/store-widget-installer.ts +214 -214
  648. package/dist/builtin/workflows/src/tui/submit-pane.ts +114 -130
  649. package/dist/builtin/workflows/src/tui/switcher.ts +120 -128
  650. package/dist/builtin/workflows/src/tui/text-helpers.ts +136 -145
  651. package/dist/builtin/workflows/src/tui/widget.ts +284 -295
  652. package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +12 -17
  653. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +81 -91
  654. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +473 -479
  655. package/dist/builtin/workflows/src/tui/workflow-list.ts +130 -145
  656. package/dist/builtin/workflows/src/tui/workflow-notice-card.ts +127 -144
  657. package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +231 -218
  658. package/dist/builtin/workflows/src/tui/workflow-status.ts +7 -0
  659. package/dist/builtin/workflows/src/workflows/identity.ts +12 -12
  660. package/dist/builtin/workflows/src/workflows/registry.ts +66 -68
  661. package/dist/bun/cli.js.map +1 -1
  662. package/dist/bun/internal-intercom-broker.d.ts.map +1 -1
  663. package/dist/bun/internal-intercom-broker.js +1 -1
  664. package/dist/bun/internal-intercom-broker.js.map +1 -1
  665. package/dist/bun/register-bedrock.js +1 -1
  666. package/dist/bun/register-bedrock.js.map +1 -1
  667. package/dist/cli/args.d.ts +8 -1
  668. package/dist/cli/args.d.ts.map +1 -1
  669. package/dist/cli/args.js +28 -22
  670. package/dist/cli/args.js.map +1 -1
  671. package/dist/cli/config-selector.d.ts +4 -2
  672. package/dist/cli/config-selector.d.ts.map +1 -1
  673. package/dist/cli/config-selector.js +2 -2
  674. package/dist/cli/config-selector.js.map +1 -1
  675. package/dist/cli/credential-print.d.ts +170 -0
  676. package/dist/cli/credential-print.d.ts.map +1 -0
  677. package/dist/cli/credential-print.js +513 -0
  678. package/dist/cli/credential-print.js.map +1 -0
  679. package/dist/cli/list-models.d.ts +2 -2
  680. package/dist/cli/list-models.d.ts.map +1 -1
  681. package/dist/cli/list-models.js +6 -7
  682. package/dist/cli/list-models.js.map +1 -1
  683. package/dist/cli/project-trust.d.ts +1 -1
  684. package/dist/cli/project-trust.d.ts.map +1 -1
  685. package/dist/cli/project-trust.js.map +1 -1
  686. package/dist/cli/session-picker.d.ts.map +1 -1
  687. package/dist/cli/session-picker.js +2 -1
  688. package/dist/cli/session-picker.js.map +1 -1
  689. package/dist/cli/startup-ui.d.ts +3 -0
  690. package/dist/cli/startup-ui.d.ts.map +1 -1
  691. package/dist/cli/startup-ui.js +58 -2
  692. package/dist/cli/startup-ui.js.map +1 -1
  693. package/dist/cli.js +2 -0
  694. package/dist/cli.js.map +1 -1
  695. package/dist/config-command-parser.d.ts +9 -0
  696. package/dist/config-command-parser.d.ts.map +1 -0
  697. package/dist/config-command-parser.js +22 -0
  698. package/dist/config-command-parser.js.map +1 -0
  699. package/dist/config-self-update.d.ts +6 -2
  700. package/dist/config-self-update.d.ts.map +1 -1
  701. package/dist/config-self-update.js +23 -13
  702. package/dist/config-self-update.js.map +1 -1
  703. package/dist/config.d.ts +5 -3
  704. package/dist/config.d.ts.map +1 -1
  705. package/dist/config.js +36 -14
  706. package/dist/config.js.map +1 -1
  707. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  708. package/dist/core/agent-session-accessors.js +130 -24
  709. package/dist/core/agent-session-accessors.js.map +1 -1
  710. package/dist/core/agent-session-auto-compaction.d.ts +4 -3
  711. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  712. package/dist/core/agent-session-auto-compaction.js +64 -64
  713. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  714. package/dist/core/agent-session-bash.d.ts +10 -7
  715. package/dist/core/agent-session-bash.d.ts.map +1 -1
  716. package/dist/core/agent-session-bash.js +34 -13
  717. package/dist/core/agent-session-bash.js.map +1 -1
  718. package/dist/core/agent-session-compaction.d.ts +11 -1
  719. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  720. package/dist/core/agent-session-compaction.js +141 -27
  721. package/dist/core/agent-session-compaction.js.map +1 -1
  722. package/dist/core/agent-session-custom-message-commit.d.ts +14 -0
  723. package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -0
  724. package/dist/core/agent-session-custom-message-commit.js +145 -0
  725. package/dist/core/agent-session-custom-message-commit.js.map +1 -0
  726. package/dist/core/agent-session-delivery-forwarding.d.ts +9 -0
  727. package/dist/core/agent-session-delivery-forwarding.d.ts.map +1 -0
  728. package/dist/core/agent-session-delivery-forwarding.js +36 -0
  729. package/dist/core/agent-session-delivery-forwarding.js.map +1 -0
  730. package/dist/core/agent-session-events.d.ts +1 -1
  731. package/dist/core/agent-session-events.d.ts.map +1 -1
  732. package/dist/core/agent-session-events.js +58 -19
  733. package/dist/core/agent-session-events.js.map +1 -1
  734. package/dist/core/agent-session-export.d.ts +1 -1
  735. package/dist/core/agent-session-export.d.ts.map +1 -1
  736. package/dist/core/agent-session-export.js +32 -25
  737. package/dist/core/agent-session-export.js.map +1 -1
  738. package/dist/core/agent-session-extension-bindings.d.ts +2 -6
  739. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  740. package/dist/core/agent-session-extension-bindings.js +38 -18
  741. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  742. package/dist/core/agent-session-message-queue.d.ts +10 -11
  743. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  744. package/dist/core/agent-session-message-queue.js +123 -106
  745. package/dist/core/agent-session-message-queue.js.map +1 -1
  746. package/dist/core/agent-session-methods.d.ts +55 -46
  747. package/dist/core/agent-session-methods.d.ts.map +1 -1
  748. package/dist/core/agent-session-methods.js.map +1 -1
  749. package/dist/core/agent-session-models.d.ts +3 -39
  750. package/dist/core/agent-session-models.d.ts.map +1 -1
  751. package/dist/core/agent-session-models.js +22 -160
  752. package/dist/core/agent-session-models.js.map +1 -1
  753. package/dist/core/agent-session-persistent-custom-messages.d.ts +47 -0
  754. package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -0
  755. package/dist/core/agent-session-persistent-custom-messages.js +272 -0
  756. package/dist/core/agent-session-persistent-custom-messages.js.map +1 -0
  757. package/dist/core/agent-session-post-tool-compaction.d.ts +1 -1
  758. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  759. package/dist/core/agent-session-post-tool-compaction.js +45 -13
  760. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  761. package/dist/core/agent-session-prompt.d.ts +2 -0
  762. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  763. package/dist/core/agent-session-prompt.js +52 -25
  764. package/dist/core/agent-session-prompt.js.map +1 -1
  765. package/dist/core/agent-session-queue-pause.d.ts +10 -0
  766. package/dist/core/agent-session-queue-pause.d.ts.map +1 -0
  767. package/dist/core/agent-session-queue-pause.js +87 -0
  768. package/dist/core/agent-session-queue-pause.js.map +1 -0
  769. package/dist/core/agent-session-retry.d.ts +0 -11
  770. package/dist/core/agent-session-retry.d.ts.map +1 -1
  771. package/dist/core/agent-session-retry.js +38 -64
  772. package/dist/core/agent-session-retry.js.map +1 -1
  773. package/dist/core/agent-session-runtime-auth.d.ts +6 -0
  774. package/dist/core/agent-session-runtime-auth.d.ts.map +1 -0
  775. package/dist/core/agent-session-runtime-auth.js +18 -0
  776. package/dist/core/agent-session-runtime-auth.js.map +1 -0
  777. package/dist/core/agent-session-runtime.d.ts +25 -3
  778. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  779. package/dist/core/agent-session-runtime.js +55 -11
  780. package/dist/core/agent-session-runtime.js.map +1 -1
  781. package/dist/core/agent-session-services.d.ts +4 -9
  782. package/dist/core/agent-session-services.d.ts.map +1 -1
  783. package/dist/core/agent-session-services.js +25 -25
  784. package/dist/core/agent-session-services.js.map +1 -1
  785. package/dist/core/agent-session-state.d.ts +1 -1
  786. package/dist/core/agent-session-state.d.ts.map +1 -1
  787. package/dist/core/agent-session-state.js +3 -0
  788. package/dist/core/agent-session-state.js.map +1 -1
  789. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  790. package/dist/core/agent-session-tool-hooks.js +8 -7
  791. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  792. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  793. package/dist/core/agent-session-tool-registry.js +6 -20
  794. package/dist/core/agent-session-tool-registry.js.map +1 -1
  795. package/dist/core/agent-session-transfer.d.ts +4 -0
  796. package/dist/core/agent-session-transfer.d.ts.map +1 -0
  797. package/dist/core/agent-session-transfer.js +67 -0
  798. package/dist/core/agent-session-transfer.js.map +1 -0
  799. package/dist/core/agent-session-tree.d.ts +1 -1
  800. package/dist/core/agent-session-tree.d.ts.map +1 -1
  801. package/dist/core/agent-session-tree.js +17 -3
  802. package/dist/core/agent-session-tree.js.map +1 -1
  803. package/dist/core/agent-session-types.d.ts +32 -14
  804. package/dist/core/agent-session-types.d.ts.map +1 -1
  805. package/dist/core/agent-session-types.js +4 -4
  806. package/dist/core/agent-session-types.js.map +1 -1
  807. package/dist/core/agent-session.d.ts +28 -13
  808. package/dist/core/agent-session.d.ts.map +1 -1
  809. package/dist/core/agent-session.js +18 -12
  810. package/dist/core/agent-session.js.map +1 -1
  811. package/dist/core/anthropic-thinking-guard.d.ts.map +1 -1
  812. package/dist/core/anthropic-thinking-guard.js +4 -2
  813. package/dist/core/anthropic-thinking-guard.js.map +1 -1
  814. package/dist/core/async/format.d.ts +1 -1
  815. package/dist/core/async/format.d.ts.map +1 -1
  816. package/dist/core/async/format.js +3 -1
  817. package/dist/core/async/format.js.map +1 -1
  818. package/dist/core/async/job-manager.d.ts.map +1 -1
  819. package/dist/core/async/job-manager.js +20 -5
  820. package/dist/core/async/job-manager.js.map +1 -1
  821. package/dist/core/async/session-manager.d.ts.map +1 -1
  822. package/dist/core/async/session-manager.js.map +1 -1
  823. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  824. package/dist/core/atomic-guide-command.js +32 -35
  825. package/dist/core/atomic-guide-command.js.map +1 -1
  826. package/dist/core/auth-guidance.d.ts.map +1 -1
  827. package/dist/core/auth-guidance.js.map +1 -1
  828. package/dist/core/auth-storage-backends.d.ts +1 -0
  829. package/dist/core/auth-storage-backends.d.ts.map +1 -1
  830. package/dist/core/auth-storage-backends.js +30 -5
  831. package/dist/core/auth-storage-backends.js.map +1 -1
  832. package/dist/core/auth-storage.d.ts +13 -136
  833. package/dist/core/auth-storage.d.ts.map +1 -1
  834. package/dist/core/auth-storage.js +69 -375
  835. package/dist/core/auth-storage.js.map +1 -1
  836. package/dist/core/bash-executor.d.ts +5 -3
  837. package/dist/core/bash-executor.d.ts.map +1 -1
  838. package/dist/core/bash-executor.js +5 -4
  839. package/dist/core/bash-executor.js.map +1 -1
  840. package/dist/core/bounded-model-refresh.d.ts +14 -0
  841. package/dist/core/bounded-model-refresh.d.ts.map +1 -0
  842. package/dist/core/bounded-model-refresh.js +38 -0
  843. package/dist/core/bounded-model-refresh.js.map +1 -0
  844. package/dist/core/builtin-packages.d.ts.map +1 -1
  845. package/dist/core/builtin-packages.js +1 -10
  846. package/dist/core/builtin-packages.js.map +1 -1
  847. package/dist/core/cache-stats.d.ts +25 -0
  848. package/dist/core/cache-stats.d.ts.map +1 -0
  849. package/dist/core/cache-stats.js +70 -0
  850. package/dist/core/cache-stats.js.map +1 -0
  851. package/dist/core/callback-activity.d.ts.map +1 -1
  852. package/dist/core/callback-activity.js.map +1 -1
  853. package/dist/core/codex-errors.d.ts.map +1 -1
  854. package/dist/core/codex-errors.js +1 -1
  855. package/dist/core/codex-errors.js.map +1 -1
  856. package/dist/core/codex-fast-mode.d.ts.map +1 -1
  857. package/dist/core/codex-fast-mode.js.map +1 -1
  858. package/dist/core/compaction/branch-summarization.d.ts +15 -5
  859. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  860. package/dist/core/compaction/branch-summarization.js +23 -12
  861. package/dist/core/compaction/branch-summarization.js.map +1 -1
  862. package/dist/core/compaction/compaction-boundary.d.ts +18 -1
  863. package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
  864. package/dist/core/compaction/compaction-boundary.js +12 -8
  865. package/dist/core/compaction/compaction-boundary.js.map +1 -1
  866. package/dist/core/compaction/compaction-runner.d.ts +63 -6
  867. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  868. package/dist/core/compaction/compaction-runner.js +244 -17
  869. package/dist/core/compaction/compaction-runner.js.map +1 -1
  870. package/dist/core/compaction/compaction-types.d.ts +53 -2
  871. package/dist/core/compaction/compaction-types.d.ts.map +1 -1
  872. package/dist/core/compaction/compaction-types.js.map +1 -1
  873. package/dist/core/compaction/compaction.d.ts.map +1 -1
  874. package/dist/core/compaction/compaction.js +5 -1
  875. package/dist/core/compaction/compaction.js.map +1 -1
  876. package/dist/core/compaction/deleted-ranges.d.ts.map +1 -1
  877. package/dist/core/compaction/deleted-ranges.js.map +1 -1
  878. package/dist/core/compaction/fallback-planner.d.ts +64 -0
  879. package/dist/core/compaction/fallback-planner.d.ts.map +1 -0
  880. package/dist/core/compaction/fallback-planner.js +75 -0
  881. package/dist/core/compaction/fallback-planner.js.map +1 -0
  882. package/dist/core/compaction/index.d.ts +7 -4
  883. package/dist/core/compaction/index.d.ts.map +1 -1
  884. package/dist/core/compaction/index.js +7 -4
  885. package/dist/core/compaction/index.js.map +1 -1
  886. package/dist/core/compaction/planner-outcome.d.ts +86 -0
  887. package/dist/core/compaction/planner-outcome.d.ts.map +1 -0
  888. package/dist/core/compaction/planner-outcome.js +122 -0
  889. package/dist/core/compaction/planner-outcome.js.map +1 -0
  890. package/dist/core/compaction/range-planner-diagnostics.d.ts +58 -6
  891. package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
  892. package/dist/core/compaction/range-planner-diagnostics.js +71 -31
  893. package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
  894. package/dist/core/compaction/range-planner.d.ts +39 -8
  895. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  896. package/dist/core/compaction/range-planner.js +140 -51
  897. package/dist/core/compaction/range-planner.js.map +1 -1
  898. package/dist/core/compaction/region-trimming.d.ts +34 -0
  899. package/dist/core/compaction/region-trimming.d.ts.map +1 -0
  900. package/dist/core/compaction/region-trimming.js +73 -0
  901. package/dist/core/compaction/region-trimming.js.map +1 -0
  902. package/dist/core/compaction/transcript-serialization.d.ts +8 -1
  903. package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
  904. package/dist/core/compaction/transcript-serialization.js +78 -27
  905. package/dist/core/compaction/transcript-serialization.js.map +1 -1
  906. package/dist/core/context-tool-pairing.d.ts +19 -0
  907. package/dist/core/context-tool-pairing.d.ts.map +1 -0
  908. package/dist/core/context-tool-pairing.js +50 -0
  909. package/dist/core/context-tool-pairing.js.map +1 -0
  910. package/dist/core/copilot-env-routing.d.ts +36 -0
  911. package/dist/core/copilot-env-routing.d.ts.map +1 -0
  912. package/dist/core/copilot-env-routing.js +94 -0
  913. package/dist/core/copilot-env-routing.js.map +1 -0
  914. package/dist/core/diagnostics.d.ts +8 -0
  915. package/dist/core/diagnostics.d.ts.map +1 -1
  916. package/dist/core/diagnostics.js.map +1 -1
  917. package/dist/core/exec.d.ts.map +1 -1
  918. package/dist/core/exec.js +5 -0
  919. package/dist/core/exec.js.map +1 -1
  920. package/dist/core/experimental.d.ts.map +1 -1
  921. package/dist/core/experimental.js +2 -1
  922. package/dist/core/experimental.js.map +1 -1
  923. package/dist/core/extensions/agent-events.d.ts +10 -0
  924. package/dist/core/extensions/agent-events.d.ts.map +1 -1
  925. package/dist/core/extensions/agent-events.js.map +1 -1
  926. package/dist/core/extensions/api-types.d.ts +9 -3
  927. package/dist/core/extensions/api-types.d.ts.map +1 -1
  928. package/dist/core/extensions/api-types.js.map +1 -1
  929. package/dist/core/extensions/context-types.d.ts +10 -1
  930. package/dist/core/extensions/context-types.d.ts.map +1 -1
  931. package/dist/core/extensions/context-types.js.map +1 -1
  932. package/dist/core/extensions/event-types.d.ts +2 -2
  933. package/dist/core/extensions/event-types.d.ts.map +1 -1
  934. package/dist/core/extensions/event-types.js.map +1 -1
  935. package/dist/core/extensions/index.d.ts +7 -5
  936. package/dist/core/extensions/index.d.ts.map +1 -1
  937. package/dist/core/extensions/index.js +2 -2
  938. package/dist/core/extensions/index.js.map +1 -1
  939. package/dist/core/extensions/loader-api.d.ts +1 -1
  940. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  941. package/dist/core/extensions/loader-api.js +63 -29
  942. package/dist/core/extensions/loader-api.js.map +1 -1
  943. package/dist/core/extensions/loader-core.d.ts.map +1 -1
  944. package/dist/core/extensions/loader-core.js +3 -2
  945. package/dist/core/extensions/loader-core.js.map +1 -1
  946. package/dist/core/extensions/loader-discovery.d.ts.map +1 -1
  947. package/dist/core/extensions/loader-discovery.js.map +1 -1
  948. package/dist/core/extensions/loader-resources.d.ts.map +1 -1
  949. package/dist/core/extensions/loader-resources.js.map +1 -1
  950. package/dist/core/extensions/loader-runtime.d.ts +2 -4
  951. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  952. package/dist/core/extensions/loader-runtime.js +214 -13
  953. package/dist/core/extensions/loader-runtime.js.map +1 -1
  954. package/dist/core/extensions/loader-virtual-modules.d.ts +17 -0
  955. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  956. package/dist/core/extensions/loader-virtual-modules.js +288 -19
  957. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  958. package/dist/core/extensions/loader.d.ts.map +1 -1
  959. package/dist/core/extensions/loader.js.map +1 -1
  960. package/dist/core/extensions/message-types.d.ts +12 -4
  961. package/dist/core/extensions/message-types.d.ts.map +1 -1
  962. package/dist/core/extensions/message-types.js.map +1 -1
  963. package/dist/core/extensions/provider-types.d.ts +16 -5
  964. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  965. package/dist/core/extensions/provider-types.js.map +1 -1
  966. package/dist/core/extensions/reactive-widget.d.ts.map +1 -1
  967. package/dist/core/extensions/reactive-widget.js.map +1 -1
  968. package/dist/core/extensions/runner-context.d.ts +29 -1
  969. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  970. package/dist/core/extensions/runner-context.js +56 -0
  971. package/dist/core/extensions/runner-context.js.map +1 -1
  972. package/dist/core/extensions/runner-events.d.ts.map +1 -1
  973. package/dist/core/extensions/runner-events.js.map +1 -1
  974. package/dist/core/extensions/runner-registries.d.ts +2 -1
  975. package/dist/core/extensions/runner-registries.d.ts.map +1 -1
  976. package/dist/core/extensions/runner-registries.js +8 -0
  977. package/dist/core/extensions/runner-registries.js.map +1 -1
  978. package/dist/core/extensions/runner.d.ts +7 -2
  979. package/dist/core/extensions/runner.d.ts.map +1 -1
  980. package/dist/core/extensions/runner.js +65 -23
  981. package/dist/core/extensions/runner.js.map +1 -1
  982. package/dist/core/extensions/runtime-types.d.ts +35 -2
  983. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  984. package/dist/core/extensions/runtime-types.js.map +1 -1
  985. package/dist/core/extensions/session-events.d.ts.map +1 -1
  986. package/dist/core/extensions/session-events.js.map +1 -1
  987. package/dist/core/extensions/tool-types.d.ts +7 -3
  988. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  989. package/dist/core/extensions/tool-types.js.map +1 -1
  990. package/dist/core/extensions/types.d.ts +15 -2
  991. package/dist/core/extensions/types.d.ts.map +1 -1
  992. package/dist/core/extensions/types.js +1 -1
  993. package/dist/core/extensions/types.js.map +1 -1
  994. package/dist/core/extensions/ui-types.d.ts +34 -6
  995. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  996. package/dist/core/extensions/ui-types.js.map +1 -1
  997. package/dist/core/fallback-models.d.ts +37 -0
  998. package/dist/core/fallback-models.d.ts.map +1 -0
  999. package/dist/core/fallback-models.js +57 -0
  1000. package/dist/core/fallback-models.js.map +1 -0
  1001. package/dist/core/flattened-tool-arguments.d.ts +4 -7
  1002. package/dist/core/flattened-tool-arguments.d.ts.map +1 -1
  1003. package/dist/core/flattened-tool-arguments.js +4 -7
  1004. package/dist/core/flattened-tool-arguments.js.map +1 -1
  1005. package/dist/core/footer-data-provider.d.ts +10 -0
  1006. package/dist/core/footer-data-provider.d.ts.map +1 -1
  1007. package/dist/core/footer-data-provider.js +5 -3
  1008. package/dist/core/footer-data-provider.js.map +1 -1
  1009. package/dist/core/http-dispatcher.d.ts +1 -0
  1010. package/dist/core/http-dispatcher.d.ts.map +1 -1
  1011. package/dist/core/http-dispatcher.js +42 -8
  1012. package/dist/core/http-dispatcher.js.map +1 -1
  1013. package/dist/core/keybindings.d.ts +7 -2
  1014. package/dist/core/keybindings.d.ts.map +1 -1
  1015. package/dist/core/keybindings.js +3 -1
  1016. package/dist/core/keybindings.js.map +1 -1
  1017. package/dist/core/messages.d.ts +29 -5
  1018. package/dist/core/messages.d.ts.map +1 -1
  1019. package/dist/core/messages.js +66 -14
  1020. package/dist/core/messages.js.map +1 -1
  1021. package/dist/core/model-capabilities.d.ts +18 -0
  1022. package/dist/core/model-capabilities.d.ts.map +1 -0
  1023. package/dist/core/model-capabilities.js +22 -0
  1024. package/dist/core/model-capabilities.js.map +1 -0
  1025. package/dist/core/model-config.d.ts +542 -0
  1026. package/dist/core/model-config.d.ts.map +1 -0
  1027. package/dist/core/{model-registry-schemas.js → model-config.js} +92 -32
  1028. package/dist/core/model-config.js.map +1 -0
  1029. package/dist/core/model-refresh-timeout.d.ts +9 -0
  1030. package/dist/core/model-refresh-timeout.d.ts.map +1 -0
  1031. package/dist/core/model-refresh-timeout.js +9 -0
  1032. package/dist/core/model-refresh-timeout.js.map +1 -0
  1033. package/dist/core/model-registry.d.ts +26 -94
  1034. package/dist/core/model-registry.d.ts.map +1 -1
  1035. package/dist/core/model-registry.js +65 -382
  1036. package/dist/core/model-registry.js.map +1 -1
  1037. package/dist/core/model-resolver-cli.d.ts +2 -2
  1038. package/dist/core/model-resolver-cli.d.ts.map +1 -1
  1039. package/dist/core/model-resolver-cli.js +2 -2
  1040. package/dist/core/model-resolver-cli.js.map +1 -1
  1041. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  1042. package/dist/core/model-resolver-defaults.js +5 -1
  1043. package/dist/core/model-resolver-defaults.js.map +1 -1
  1044. package/dist/core/model-resolver-initial.d.ts +4 -4
  1045. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  1046. package/dist/core/model-resolver-initial.js +26 -17
  1047. package/dist/core/model-resolver-initial.js.map +1 -1
  1048. package/dist/core/model-resolver-patterns.d.ts.map +1 -1
  1049. package/dist/core/model-resolver-patterns.js +0 -2
  1050. package/dist/core/model-resolver-patterns.js.map +1 -1
  1051. package/dist/core/model-resolver-scope.d.ts +5 -3
  1052. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  1053. package/dist/core/model-resolver-scope.js +32 -8
  1054. package/dist/core/model-resolver-scope.js.map +1 -1
  1055. package/dist/core/model-resolver-types.d.ts +2 -0
  1056. package/dist/core/model-resolver-types.d.ts.map +1 -1
  1057. package/dist/core/model-resolver-types.js.map +1 -1
  1058. package/dist/core/model-resolver.d.ts +3 -3
  1059. package/dist/core/model-resolver.d.ts.map +1 -1
  1060. package/dist/core/model-resolver.js +1 -1
  1061. package/dist/core/model-resolver.js.map +1 -1
  1062. package/dist/core/model-runtime-auth.d.ts +7 -0
  1063. package/dist/core/model-runtime-auth.d.ts.map +1 -0
  1064. package/dist/core/model-runtime-auth.js +17 -0
  1065. package/dist/core/model-runtime-auth.js.map +1 -0
  1066. package/dist/core/model-runtime-providers.d.ts +6 -0
  1067. package/dist/core/model-runtime-providers.d.ts.map +1 -0
  1068. package/dist/core/model-runtime-providers.js +22 -0
  1069. package/dist/core/model-runtime-providers.js.map +1 -0
  1070. package/dist/core/model-runtime-restoration.d.ts +6 -0
  1071. package/dist/core/model-runtime-restoration.d.ts.map +1 -0
  1072. package/dist/core/model-runtime-restoration.js +21 -0
  1073. package/dist/core/model-runtime-restoration.js.map +1 -0
  1074. package/dist/core/model-runtime-snapshot.d.ts +19 -0
  1075. package/dist/core/model-runtime-snapshot.d.ts.map +1 -0
  1076. package/dist/core/model-runtime-snapshot.js +111 -0
  1077. package/dist/core/model-runtime-snapshot.js.map +1 -0
  1078. package/dist/core/model-runtime-streaming.d.ts +17 -0
  1079. package/dist/core/model-runtime-streaming.d.ts.map +1 -0
  1080. package/dist/core/model-runtime-streaming.js +66 -0
  1081. package/dist/core/model-runtime-streaming.js.map +1 -0
  1082. package/dist/core/model-runtime-types.d.ts +21 -0
  1083. package/dist/core/model-runtime-types.d.ts.map +1 -0
  1084. package/dist/core/model-runtime-types.js +2 -0
  1085. package/dist/core/model-runtime-types.js.map +1 -0
  1086. package/dist/core/model-runtime.d.ts +79 -0
  1087. package/dist/core/model-runtime.d.ts.map +1 -0
  1088. package/dist/core/model-runtime.js +417 -0
  1089. package/dist/core/model-runtime.js.map +1 -0
  1090. package/dist/core/models-store.d.ts +2 -10
  1091. package/dist/core/models-store.d.ts.map +1 -1
  1092. package/dist/core/models-store.js +2 -29
  1093. package/dist/core/models-store.js.map +1 -1
  1094. package/dist/core/oauth-login.d.ts +24 -0
  1095. package/dist/core/oauth-login.d.ts.map +1 -0
  1096. package/dist/core/oauth-login.js +92 -0
  1097. package/dist/core/oauth-login.js.map +1 -0
  1098. package/dist/core/oauth-provider-metadata.d.ts +5 -0
  1099. package/dist/core/oauth-provider-metadata.d.ts.map +1 -0
  1100. package/dist/core/oauth-provider-metadata.js +33 -0
  1101. package/dist/core/oauth-provider-metadata.js.map +1 -0
  1102. package/dist/core/openai-responses-payload-sanitizer.js.map +1 -1
  1103. package/dist/core/output-guard.d.ts +44 -0
  1104. package/dist/core/output-guard.d.ts.map +1 -1
  1105. package/dist/core/output-guard.js +63 -0
  1106. package/dist/core/output-guard.js.map +1 -1
  1107. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  1108. package/dist/core/package-manager-auto-resources.js +18 -5
  1109. package/dist/core/package-manager-auto-resources.js.map +1 -1
  1110. package/dist/core/package-manager-git.d.ts.map +1 -1
  1111. package/dist/core/package-manager-git.js +27 -11
  1112. package/dist/core/package-manager-git.js.map +1 -1
  1113. package/dist/core/package-manager-npm.d.ts.map +1 -1
  1114. package/dist/core/package-manager-npm.js +4 -2
  1115. package/dist/core/package-manager-npm.js.map +1 -1
  1116. package/dist/core/package-manager-operations.d.ts.map +1 -1
  1117. package/dist/core/package-manager-operations.js +2 -2
  1118. package/dist/core/package-manager-operations.js.map +1 -1
  1119. package/dist/core/package-manager-paths.d.ts.map +1 -1
  1120. package/dist/core/package-manager-paths.js.map +1 -1
  1121. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  1122. package/dist/core/package-manager-resolver.js +71 -26
  1123. package/dist/core/package-manager-resolver.js.map +1 -1
  1124. package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
  1125. package/dist/core/package-manager-resource-collector.js +13 -7
  1126. package/dist/core/package-manager-resource-collector.js.map +1 -1
  1127. package/dist/core/package-manager-resource-files.d.ts.map +1 -1
  1128. package/dist/core/package-manager-resource-files.js +4 -3
  1129. package/dist/core/package-manager-resource-files.js.map +1 -1
  1130. package/dist/core/package-manager-resource-patterns.d.ts +1 -0
  1131. package/dist/core/package-manager-resource-patterns.d.ts.map +1 -1
  1132. package/dist/core/package-manager-resource-patterns.js +15 -0
  1133. package/dist/core/package-manager-resource-patterns.js.map +1 -1
  1134. package/dist/core/package-manager-settings.d.ts.map +1 -1
  1135. package/dist/core/package-manager-settings.js +3 -2
  1136. package/dist/core/package-manager-settings.js.map +1 -1
  1137. package/dist/core/package-manager-source.d.ts.map +1 -1
  1138. package/dist/core/package-manager-source.js +16 -9
  1139. package/dist/core/package-manager-source.js.map +1 -1
  1140. package/dist/core/package-manager-types.d.ts +3 -0
  1141. package/dist/core/package-manager-types.d.ts.map +1 -1
  1142. package/dist/core/package-manager-types.js.map +1 -1
  1143. package/dist/core/package-manager.d.ts +1 -1
  1144. package/dist/core/package-manager.d.ts.map +1 -1
  1145. package/dist/core/package-manager.js +2 -3
  1146. package/dist/core/package-manager.js.map +1 -1
  1147. package/dist/core/prompt-templates-async.d.ts.map +1 -1
  1148. package/dist/core/prompt-templates-async.js +15 -7
  1149. package/dist/core/prompt-templates-async.js.map +1 -1
  1150. package/dist/core/prompt-templates.d.ts +1 -0
  1151. package/dist/core/prompt-templates.d.ts.map +1 -1
  1152. package/dist/core/prompt-templates.js +4 -4
  1153. package/dist/core/prompt-templates.js.map +1 -1
  1154. package/dist/core/provider-composer-internal.d.ts +53 -0
  1155. package/dist/core/provider-composer-internal.d.ts.map +1 -0
  1156. package/dist/core/provider-composer-internal.js +273 -0
  1157. package/dist/core/provider-composer-internal.js.map +1 -0
  1158. package/dist/core/provider-composer.d.ts +16 -0
  1159. package/dist/core/provider-composer.d.ts.map +1 -0
  1160. package/dist/core/provider-composer.js +108 -0
  1161. package/dist/core/provider-composer.js.map +1 -0
  1162. package/dist/core/provider-context-usage.d.ts.map +1 -1
  1163. package/dist/core/provider-context-usage.js +2 -1
  1164. package/dist/core/provider-context-usage.js.map +1 -1
  1165. package/dist/core/provider-display-names.d.ts.map +1 -1
  1166. package/dist/core/provider-display-names.js +4 -0
  1167. package/dist/core/provider-display-names.js.map +1 -1
  1168. package/dist/core/remote-catalog-provider.d.ts +1 -1
  1169. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  1170. package/dist/core/remote-catalog-provider.js +82 -105
  1171. package/dist/core/remote-catalog-provider.js.map +1 -1
  1172. package/dist/core/resolve-config-value.d.ts +8 -7
  1173. package/dist/core/resolve-config-value.d.ts.map +1 -1
  1174. package/dist/core/resolve-config-value.js +26 -23
  1175. package/dist/core/resolve-config-value.js.map +1 -1
  1176. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  1177. package/dist/core/resource-loader-assets.js +58 -8
  1178. package/dist/core/resource-loader-assets.js.map +1 -1
  1179. package/dist/core/resource-loader-context-files.d.ts +6 -0
  1180. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  1181. package/dist/core/resource-loader-context-files.js +85 -4
  1182. package/dist/core/resource-loader-context-files.js.map +1 -1
  1183. package/dist/core/resource-loader-core.d.ts +13 -3
  1184. package/dist/core/resource-loader-core.d.ts.map +1 -1
  1185. package/dist/core/resource-loader-core.js +39 -19
  1186. package/dist/core/resource-loader-core.js.map +1 -1
  1187. package/dist/core/resource-loader-discovery.d.ts.map +1 -1
  1188. package/dist/core/resource-loader-discovery.js.map +1 -1
  1189. package/dist/core/resource-loader-extensions.d.ts +1 -0
  1190. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  1191. package/dist/core/resource-loader-extensions.js +140 -12
  1192. package/dist/core/resource-loader-extensions.js.map +1 -1
  1193. package/dist/core/resource-loader-helpers.d.ts.map +1 -1
  1194. package/dist/core/resource-loader-helpers.js +1 -0
  1195. package/dist/core/resource-loader-helpers.js.map +1 -1
  1196. package/dist/core/resource-loader-internals.d.ts +14 -7
  1197. package/dist/core/resource-loader-internals.d.ts.map +1 -1
  1198. package/dist/core/resource-loader-internals.js.map +1 -1
  1199. package/dist/core/resource-loader-package-resources.d.ts.map +1 -1
  1200. package/dist/core/resource-loader-package-resources.js +15 -2
  1201. package/dist/core/resource-loader-package-resources.js.map +1 -1
  1202. package/dist/core/resource-loader-paths.js.map +1 -1
  1203. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  1204. package/dist/core/resource-loader-reload.js +29 -13
  1205. package/dist/core/resource-loader-reload.js.map +1 -1
  1206. package/dist/core/resource-loader-source-info.d.ts +1 -1
  1207. package/dist/core/resource-loader-source-info.d.ts.map +1 -1
  1208. package/dist/core/resource-loader-source-info.js +7 -4
  1209. package/dist/core/resource-loader-source-info.js.map +1 -1
  1210. package/dist/core/resource-loader-types.d.ts +12 -6
  1211. package/dist/core/resource-loader-types.d.ts.map +1 -1
  1212. package/dist/core/resource-loader-types.js.map +1 -1
  1213. package/dist/core/resource-loader.d.ts +1 -1
  1214. package/dist/core/resource-loader.d.ts.map +1 -1
  1215. package/dist/core/resource-loader.js +1 -1
  1216. package/dist/core/resource-loader.js.map +1 -1
  1217. package/dist/core/runtime-credentials.d.ts +16 -0
  1218. package/dist/core/runtime-credentials.d.ts.map +1 -0
  1219. package/dist/core/runtime-credentials.js +42 -0
  1220. package/dist/core/runtime-credentials.js.map +1 -0
  1221. package/dist/core/sdk-exports.d.ts +2 -2
  1222. package/dist/core/sdk-exports.d.ts.map +1 -1
  1223. package/dist/core/sdk-exports.js +2 -2
  1224. package/dist/core/sdk-exports.js.map +1 -1
  1225. package/dist/core/sdk-types.d.ts +16 -18
  1226. package/dist/core/sdk-types.d.ts.map +1 -1
  1227. package/dist/core/sdk-types.js.map +1 -1
  1228. package/dist/core/sdk.d.ts +2 -1
  1229. package/dist/core/sdk.d.ts.map +1 -1
  1230. package/dist/core/sdk.js +61 -132
  1231. package/dist/core/sdk.js.map +1 -1
  1232. package/dist/core/session-manager-archive.d.ts.map +1 -1
  1233. package/dist/core/session-manager-archive.js +5 -2
  1234. package/dist/core/session-manager-archive.js.map +1 -1
  1235. package/dist/core/session-manager-classification.js +3 -3
  1236. package/dist/core/session-manager-classification.js.map +1 -1
  1237. package/dist/core/session-manager-core.d.ts +5 -4
  1238. package/dist/core/session-manager-core.d.ts.map +1 -1
  1239. package/dist/core/session-manager-core.js +29 -33
  1240. package/dist/core/session-manager-core.js.map +1 -1
  1241. package/dist/core/session-manager-entries.d.ts +6 -9
  1242. package/dist/core/session-manager-entries.d.ts.map +1 -1
  1243. package/dist/core/session-manager-entries.js +5 -9
  1244. package/dist/core/session-manager-entries.js.map +1 -1
  1245. package/dist/core/session-manager-history.d.ts +8 -3
  1246. package/dist/core/session-manager-history.d.ts.map +1 -1
  1247. package/dist/core/session-manager-history.js +90 -27
  1248. package/dist/core/session-manager-history.js.map +1 -1
  1249. package/dist/core/session-manager-list.d.ts.map +1 -1
  1250. package/dist/core/session-manager-list.js +1 -1
  1251. package/dist/core/session-manager-list.js.map +1 -1
  1252. package/dist/core/session-manager-migrations.js.map +1 -1
  1253. package/dist/core/session-manager-storage.d.ts +6 -0
  1254. package/dist/core/session-manager-storage.d.ts.map +1 -1
  1255. package/dist/core/session-manager-storage.js +38 -5
  1256. package/dist/core/session-manager-storage.js.map +1 -1
  1257. package/dist/core/session-manager-types.d.ts +13 -8
  1258. package/dist/core/session-manager-types.d.ts.map +1 -1
  1259. package/dist/core/session-manager-types.js.map +1 -1
  1260. package/dist/core/session-manager-validation.d.ts.map +1 -1
  1261. package/dist/core/session-manager-validation.js +3 -16
  1262. package/dist/core/session-manager-validation.js.map +1 -1
  1263. package/dist/core/session-manager.d.ts +4 -4
  1264. package/dist/core/session-manager.d.ts.map +1 -1
  1265. package/dist/core/session-manager.js +2 -2
  1266. package/dist/core/session-manager.js.map +1 -1
  1267. package/dist/core/settings-manager-basic-accessors.d.ts +7 -4
  1268. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  1269. package/dist/core/settings-manager-basic-accessors.js +35 -50
  1270. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  1271. package/dist/core/settings-manager-core.d.ts +2 -4
  1272. package/dist/core/settings-manager-core.d.ts.map +1 -1
  1273. package/dist/core/settings-manager-core.js +5 -51
  1274. package/dist/core/settings-manager-core.js.map +1 -1
  1275. package/dist/core/settings-manager-resource-accessors.d.ts +3 -0
  1276. package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -1
  1277. package/dist/core/settings-manager-resource-accessors.js +16 -0
  1278. package/dist/core/settings-manager-resource-accessors.js.map +1 -1
  1279. package/dist/core/settings-manager-ui-accessors.js +2 -1
  1280. package/dist/core/settings-manager-ui-accessors.js.map +1 -1
  1281. package/dist/core/settings-manager.d.ts +1 -1
  1282. package/dist/core/settings-manager.d.ts.map +1 -1
  1283. package/dist/core/settings-manager.js.map +1 -1
  1284. package/dist/core/settings-storage.d.ts +3 -1
  1285. package/dist/core/settings-storage.d.ts.map +1 -1
  1286. package/dist/core/settings-storage.js +23 -1
  1287. package/dist/core/settings-storage.js.map +1 -1
  1288. package/dist/core/settings-types.d.ts +10 -6
  1289. package/dist/core/settings-types.d.ts.map +1 -1
  1290. package/dist/core/settings-types.js.map +1 -1
  1291. package/dist/core/skills-async.d.ts.map +1 -1
  1292. package/dist/core/skills-async.js +18 -8
  1293. package/dist/core/skills-async.js.map +1 -1
  1294. package/dist/core/slash-commands.d.ts +1 -0
  1295. package/dist/core/slash-commands.d.ts.map +1 -1
  1296. package/dist/core/slash-commands.js +127 -24
  1297. package/dist/core/slash-commands.js.map +1 -1
  1298. package/dist/core/source-info.d.ts +3 -1
  1299. package/dist/core/source-info.d.ts.map +1 -1
  1300. package/dist/core/source-info.js +2 -0
  1301. package/dist/core/source-info.js.map +1 -1
  1302. package/dist/core/summarization-retry.d.ts +11 -0
  1303. package/dist/core/summarization-retry.d.ts.map +1 -0
  1304. package/dist/core/summarization-retry.js +21 -0
  1305. package/dist/core/summarization-retry.js.map +1 -0
  1306. package/dist/core/system-prompt.d.ts.map +1 -1
  1307. package/dist/core/system-prompt.js +15 -18
  1308. package/dist/core/system-prompt.js.map +1 -1
  1309. package/dist/core/thinking-blocks.d.ts.map +1 -1
  1310. package/dist/core/thinking-blocks.js +2 -2
  1311. package/dist/core/thinking-blocks.js.map +1 -1
  1312. package/dist/core/tools/artifact-protocol.d.ts.map +1 -1
  1313. package/dist/core/tools/artifact-protocol.js.map +1 -1
  1314. package/dist/core/tools/artifacts.d.ts.map +1 -1
  1315. package/dist/core/tools/artifacts.js.map +1 -1
  1316. package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
  1317. package/dist/core/tools/ask-user-question/ask-user-question.js +1 -1
  1318. package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
  1319. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts +1 -1
  1320. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts.map +1 -1
  1321. package/dist/core/tools/ask-user-question/state/build-questionnaire.js +1 -1
  1322. package/dist/core/tools/ask-user-question/state/build-questionnaire.js.map +1 -1
  1323. package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts.map +1 -1
  1324. package/dist/core/tools/ask-user-question/state/questionnaire-session.js +2 -4
  1325. package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
  1326. package/dist/core/tools/ask-user-question/state/state-reducer.d.ts.map +1 -1
  1327. package/dist/core/tools/ask-user-question/state/state-reducer.js.map +1 -1
  1328. package/dist/core/tools/ask-user-question/view/body-residual-spacer.d.ts.map +1 -1
  1329. package/dist/core/tools/ask-user-question/view/body-residual-spacer.js.map +1 -1
  1330. package/dist/core/tools/ask-user-question/view/components/multi-select-view.d.ts.map +1 -1
  1331. package/dist/core/tools/ask-user-question/view/components/multi-select-view.js.map +1 -1
  1332. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts +1 -1
  1333. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts.map +1 -1
  1334. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js.map +1 -1
  1335. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts +1 -1
  1336. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts.map +1 -1
  1337. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js +1 -3
  1338. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js.map +1 -1
  1339. package/dist/core/tools/ask-user-question/view/components/submit-picker.d.ts.map +1 -1
  1340. package/dist/core/tools/ask-user-question/view/components/submit-picker.js.map +1 -1
  1341. package/dist/core/tools/ask-user-question/view/components/tab-bar.d.ts.map +1 -1
  1342. package/dist/core/tools/ask-user-question/view/components/tab-bar.js.map +1 -1
  1343. package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts +1 -1
  1344. package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts.map +1 -1
  1345. package/dist/core/tools/ask-user-question/view/dialog-builder.js +1 -1
  1346. package/dist/core/tools/ask-user-question/view/dialog-builder.js.map +1 -1
  1347. package/dist/core/tools/ask-user-question/view/props-adapter.d.ts.map +1 -1
  1348. package/dist/core/tools/ask-user-question/view/props-adapter.js +2 -4
  1349. package/dist/core/tools/ask-user-question/view/props-adapter.js.map +1 -1
  1350. package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts +1 -1
  1351. package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts.map +1 -1
  1352. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js +2 -9
  1353. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js.map +1 -1
  1354. package/dist/core/tools/bash-async-execution.d.ts.map +1 -1
  1355. package/dist/core/tools/bash-async-execution.js +11 -4
  1356. package/dist/core/tools/bash-async-execution.js.map +1 -1
  1357. package/dist/core/tools/bash-async-jobs.d.ts.map +1 -1
  1358. package/dist/core/tools/bash-async-jobs.js +14 -2
  1359. package/dist/core/tools/bash-async-jobs.js.map +1 -1
  1360. package/dist/core/tools/bash-async-output.d.ts.map +1 -1
  1361. package/dist/core/tools/bash-async-output.js +6 -2
  1362. package/dist/core/tools/bash-async-output.js.map +1 -1
  1363. package/dist/core/tools/bash-interceptor.d.ts.map +1 -1
  1364. package/dist/core/tools/bash-interceptor.js +20 -4
  1365. package/dist/core/tools/bash-interceptor.js.map +1 -1
  1366. package/dist/core/tools/bash-leading-cd.d.ts.map +1 -1
  1367. package/dist/core/tools/bash-leading-cd.js +9 -3
  1368. package/dist/core/tools/bash-leading-cd.js.map +1 -1
  1369. package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
  1370. package/dist/core/tools/bash-pty-native.js.map +1 -1
  1371. package/dist/core/tools/bash-session-environment.d.ts +13 -0
  1372. package/dist/core/tools/bash-session-environment.d.ts.map +1 -0
  1373. package/dist/core/tools/bash-session-environment.js +47 -0
  1374. package/dist/core/tools/bash-session-environment.js.map +1 -0
  1375. package/dist/core/tools/bash.d.ts +4 -1
  1376. package/dist/core/tools/bash.d.ts.map +1 -1
  1377. package/dist/core/tools/bash.js +134 -30
  1378. package/dist/core/tools/bash.js.map +1 -1
  1379. package/dist/core/tools/block-resolver.d.ts.map +1 -1
  1380. package/dist/core/tools/block-resolver.js.map +1 -1
  1381. package/dist/core/tools/conflict-registry.d.ts.map +1 -1
  1382. package/dist/core/tools/conflict-registry.js.map +1 -1
  1383. package/dist/core/tools/directory-tree.d.ts.map +1 -1
  1384. package/dist/core/tools/directory-tree.js +20 -4
  1385. package/dist/core/tools/directory-tree.js.map +1 -1
  1386. package/dist/core/tools/edit.d.ts.map +1 -1
  1387. package/dist/core/tools/edit.js +37 -13
  1388. package/dist/core/tools/edit.js.map +1 -1
  1389. package/dist/core/tools/fetch-url.d.ts.map +1 -1
  1390. package/dist/core/tools/fetch-url.js +127 -41
  1391. package/dist/core/tools/fetch-url.js.map +1 -1
  1392. package/dist/core/tools/find.d.ts.map +1 -1
  1393. package/dist/core/tools/find.js +176 -46
  1394. package/dist/core/tools/find.js.map +1 -1
  1395. package/dist/core/tools/grep.d.ts.map +1 -1
  1396. package/dist/core/tools/grep.js +43 -10
  1397. package/dist/core/tools/grep.js.map +1 -1
  1398. package/dist/core/tools/hashline-engine/apply.d.ts.map +1 -1
  1399. package/dist/core/tools/hashline-engine/apply.js +6 -6
  1400. package/dist/core/tools/hashline-engine/apply.js.map +1 -1
  1401. package/dist/core/tools/hashline-engine/block.js +1 -1
  1402. package/dist/core/tools/hashline-engine/block.js.map +1 -1
  1403. package/dist/core/tools/hashline-engine/format.d.ts.map +1 -1
  1404. package/dist/core/tools/hashline-engine/format.js +1 -1
  1405. package/dist/core/tools/hashline-engine/format.js.map +1 -1
  1406. package/dist/core/tools/hashline-engine/input.d.ts.map +1 -1
  1407. package/dist/core/tools/hashline-engine/input.js +7 -7
  1408. package/dist/core/tools/hashline-engine/input.js.map +1 -1
  1409. package/dist/core/tools/hashline-engine/parser.js +1 -1
  1410. package/dist/core/tools/hashline-engine/parser.js.map +1 -1
  1411. package/dist/core/tools/hashline-engine/patcher.js +5 -5
  1412. package/dist/core/tools/hashline-engine/patcher.js.map +1 -1
  1413. package/dist/core/tools/hashline-engine/prefixes.js +4 -4
  1414. package/dist/core/tools/hashline-engine/prefixes.js.map +1 -1
  1415. package/dist/core/tools/hashline-engine/recovery.d.ts.map +1 -1
  1416. package/dist/core/tools/hashline-engine/recovery.js +4 -2
  1417. package/dist/core/tools/hashline-engine/recovery.js.map +1 -1
  1418. package/dist/core/tools/hashline-engine/snapshots.js +5 -5
  1419. package/dist/core/tools/hashline-engine/snapshots.js.map +1 -1
  1420. package/dist/core/tools/hashline.d.ts.map +1 -1
  1421. package/dist/core/tools/hashline.js +24 -13
  1422. package/dist/core/tools/hashline.js.map +1 -1
  1423. package/dist/core/tools/index.d.ts +6 -6
  1424. package/dist/core/tools/index.d.ts.map +1 -1
  1425. package/dist/core/tools/index.js +6 -6
  1426. package/dist/core/tools/index.js.map +1 -1
  1427. package/dist/core/tools/ls.d.ts.map +1 -1
  1428. package/dist/core/tools/ls.js +2 -1
  1429. package/dist/core/tools/ls.js.map +1 -1
  1430. package/dist/core/tools/notebook.d.ts.map +1 -1
  1431. package/dist/core/tools/notebook.js +13 -3
  1432. package/dist/core/tools/notebook.js.map +1 -1
  1433. package/dist/core/tools/read-document-extract.d.ts.map +1 -1
  1434. package/dist/core/tools/read-document-extract.js +30 -10
  1435. package/dist/core/tools/read-document-extract.js.map +1 -1
  1436. package/dist/core/tools/read-selectors.d.ts.map +1 -1
  1437. package/dist/core/tools/read-selectors.js +59 -15
  1438. package/dist/core/tools/read-selectors.js.map +1 -1
  1439. package/dist/core/tools/read-url.d.ts.map +1 -1
  1440. package/dist/core/tools/read-url.js +41 -7
  1441. package/dist/core/tools/read-url.js.map +1 -1
  1442. package/dist/core/tools/read.d.ts.map +1 -1
  1443. package/dist/core/tools/read.js +307 -72
  1444. package/dist/core/tools/read.js.map +1 -1
  1445. package/dist/core/tools/resource-selectors.d.ts +4 -0
  1446. package/dist/core/tools/resource-selectors.d.ts.map +1 -1
  1447. package/dist/core/tools/resource-selectors.js +324 -84
  1448. package/dist/core/tools/resource-selectors.js.map +1 -1
  1449. package/dist/core/tools/search-details.d.ts.map +1 -1
  1450. package/dist/core/tools/search-details.js +13 -1
  1451. package/dist/core/tools/search-details.js.map +1 -1
  1452. package/dist/core/tools/search-line-ranges.d.ts.map +1 -1
  1453. package/dist/core/tools/search-line-ranges.js +5 -2
  1454. package/dist/core/tools/search-line-ranges.js.map +1 -1
  1455. package/dist/core/tools/search-native.d.ts.map +1 -1
  1456. package/dist/core/tools/search-native.js.map +1 -1
  1457. package/dist/core/tools/search.d.ts.map +1 -1
  1458. package/dist/core/tools/search.js +244 -90
  1459. package/dist/core/tools/search.js.map +1 -1
  1460. package/dist/core/tools/structured-output.d.ts +1 -1
  1461. package/dist/core/tools/structured-output.d.ts.map +1 -1
  1462. package/dist/core/tools/structured-output.js.map +1 -1
  1463. package/dist/core/tools/todos-execute.d.ts.map +1 -1
  1464. package/dist/core/tools/todos-execute.js +4 -4
  1465. package/dist/core/tools/todos-execute.js.map +1 -1
  1466. package/dist/core/tools/todos-locks.d.ts.map +1 -1
  1467. package/dist/core/tools/todos-locks.js.map +1 -1
  1468. package/dist/core/tools/todos-mutations.js +1 -1
  1469. package/dist/core/tools/todos-mutations.js.map +1 -1
  1470. package/dist/core/tools/todos-paths.js +2 -2
  1471. package/dist/core/tools/todos-paths.js.map +1 -1
  1472. package/dist/core/tools/todos-render.d.ts.map +1 -1
  1473. package/dist/core/tools/todos-render.js +2 -2
  1474. package/dist/core/tools/todos-render.js.map +1 -1
  1475. package/dist/core/tools/todos-storage.d.ts.map +1 -1
  1476. package/dist/core/tools/todos-storage.js +1 -2
  1477. package/dist/core/tools/todos-storage.js.map +1 -1
  1478. package/dist/core/tools/todos-types.d.ts.map +1 -1
  1479. package/dist/core/tools/todos-types.js +1 -11
  1480. package/dist/core/tools/todos-types.js.map +1 -1
  1481. package/dist/core/tools/tool-definition-wrapper.d.ts +3 -0
  1482. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  1483. package/dist/core/tools/tool-definition-wrapper.js +9 -5
  1484. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  1485. package/dist/core/tools/url-ip-guards.d.ts.map +1 -1
  1486. package/dist/core/tools/url-ip-guards.js +27 -17
  1487. package/dist/core/tools/url-ip-guards.js.map +1 -1
  1488. package/dist/core/tools/write.d.ts.map +1 -1
  1489. package/dist/core/tools/write.js +88 -29
  1490. package/dist/core/tools/write.js.map +1 -1
  1491. package/dist/core/usage-totals.d.ts +18 -0
  1492. package/dist/core/usage-totals.d.ts.map +1 -0
  1493. package/dist/core/usage-totals.js +43 -0
  1494. package/dist/core/usage-totals.js.map +1 -0
  1495. package/dist/core/workflow-stage-admission.d.ts.map +1 -1
  1496. package/dist/core/workflow-stage-admission.js +8 -2
  1497. package/dist/core/workflow-stage-admission.js.map +1 -1
  1498. package/dist/extensions/index.d.ts +3 -0
  1499. package/dist/extensions/index.d.ts.map +1 -0
  1500. package/dist/extensions/index.js +5 -0
  1501. package/dist/extensions/index.js.map +1 -0
  1502. package/dist/extensions/llama/client.d.ts +61 -0
  1503. package/dist/extensions/llama/client.d.ts.map +1 -0
  1504. package/dist/extensions/llama/client.js +300 -0
  1505. package/dist/extensions/llama/client.js.map +1 -0
  1506. package/dist/extensions/llama/huggingface-ui.d.ts +33 -0
  1507. package/dist/extensions/llama/huggingface-ui.d.ts.map +1 -0
  1508. package/dist/extensions/llama/huggingface-ui.js +166 -0
  1509. package/dist/extensions/llama/huggingface-ui.js.map +1 -0
  1510. package/dist/extensions/llama/huggingface.d.ts +23 -0
  1511. package/dist/extensions/llama/huggingface.d.ts.map +1 -0
  1512. package/dist/extensions/llama/huggingface.js +139 -0
  1513. package/dist/extensions/llama/huggingface.js.map +1 -0
  1514. package/dist/extensions/llama/index.d.ts +3 -0
  1515. package/dist/extensions/llama/index.d.ts.map +1 -0
  1516. package/dist/extensions/llama/index.js +208 -0
  1517. package/dist/extensions/llama/index.js.map +1 -0
  1518. package/dist/extensions/llama/provider.d.ts +10 -0
  1519. package/dist/extensions/llama/provider.d.ts.map +1 -0
  1520. package/dist/extensions/llama/provider.js +107 -0
  1521. package/dist/extensions/llama/provider.js.map +1 -0
  1522. package/dist/extensions/llama/ui.d.ts +42 -0
  1523. package/dist/extensions/llama/ui.d.ts.map +1 -0
  1524. package/dist/extensions/llama/ui.js +237 -0
  1525. package/dist/extensions/llama/ui.js.map +1 -0
  1526. package/dist/index-extensions.d.ts +2 -2
  1527. package/dist/index-extensions.d.ts.map +1 -1
  1528. package/dist/index-extensions.js +1 -1
  1529. package/dist/index-extensions.js.map +1 -1
  1530. package/dist/index.d.ts +22 -23
  1531. package/dist/index.d.ts.map +1 -1
  1532. package/dist/index.js +26 -27
  1533. package/dist/index.js.map +1 -1
  1534. package/dist/main-app-mode.d.ts +1 -0
  1535. package/dist/main-app-mode.d.ts.map +1 -1
  1536. package/dist/main-app-mode.js +3 -0
  1537. package/dist/main-app-mode.js.map +1 -1
  1538. package/dist/main-deferred-startup.d.ts +1 -1
  1539. package/dist/main-deferred-startup.d.ts.map +1 -1
  1540. package/dist/main-deferred-startup.js +16 -15
  1541. package/dist/main-deferred-startup.js.map +1 -1
  1542. package/dist/main-early-input.js.map +1 -1
  1543. package/dist/main-first-time-setup.d.ts +6 -0
  1544. package/dist/main-first-time-setup.d.ts.map +1 -0
  1545. package/dist/main-first-time-setup.js +10 -0
  1546. package/dist/main-first-time-setup.js.map +1 -0
  1547. package/dist/main-runtime-api-key.d.ts +6 -0
  1548. package/dist/main-runtime-api-key.d.ts.map +1 -0
  1549. package/dist/main-runtime-api-key.js +6 -0
  1550. package/dist/main-runtime-api-key.js.map +1 -0
  1551. package/dist/main-session-options.d.ts +2 -2
  1552. package/dist/main-session-options.d.ts.map +1 -1
  1553. package/dist/main-session-options.js +3 -7
  1554. package/dist/main-session-options.js.map +1 -1
  1555. package/dist/main-session.d.ts.map +1 -1
  1556. package/dist/main-session.js +5 -4
  1557. package/dist/main-session.js.map +1 -1
  1558. package/dist/main-types.d.ts +2 -2
  1559. package/dist/main-types.d.ts.map +1 -1
  1560. package/dist/main-types.js.map +1 -1
  1561. package/dist/main.d.ts +1 -1
  1562. package/dist/main.d.ts.map +1 -1
  1563. package/dist/main.js +173 -69
  1564. package/dist/main.js.map +1 -1
  1565. package/dist/migrations-config-values.d.ts.map +1 -1
  1566. package/dist/migrations-config-values.js +3 -1
  1567. package/dist/migrations-config-values.js.map +1 -1
  1568. package/dist/migrations.d.ts.map +1 -1
  1569. package/dist/migrations.js.map +1 -1
  1570. package/dist/modes/index.d.ts +1 -1
  1571. package/dist/modes/index.d.ts.map +1 -1
  1572. package/dist/modes/index.js.map +1 -1
  1573. package/dist/modes/interactive/chat-input-actions.d.ts +1 -1
  1574. package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
  1575. package/dist/modes/interactive/chat-input-actions.js +30 -103
  1576. package/dist/modes/interactive/chat-input-actions.js.map +1 -1
  1577. package/dist/modes/interactive/components/atomic-banner.d.ts +9 -8
  1578. package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
  1579. package/dist/modes/interactive/components/atomic-banner.js +68 -22
  1580. package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
  1581. package/dist/modes/interactive/components/atomic-working-status.d.ts +52 -0
  1582. package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -0
  1583. package/dist/modes/interactive/components/atomic-working-status.js +215 -0
  1584. package/dist/modes/interactive/components/atomic-working-status.js.map +1 -0
  1585. package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -1
  1586. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  1587. package/dist/modes/interactive/components/chat-message-renderer.js +7 -6
  1588. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  1589. package/dist/modes/interactive/components/chat-session-host-actions.d.ts +10 -4
  1590. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  1591. package/dist/modes/interactive/components/chat-session-host-actions.js +105 -20
  1592. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  1593. package/dist/modes/interactive/components/chat-session-host-editor.d.ts +7 -5
  1594. package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -1
  1595. package/dist/modes/interactive/components/chat-session-host-editor.js +14 -9
  1596. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
  1597. package/dist/modes/interactive/components/chat-session-host-events.d.ts +3 -0
  1598. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  1599. package/dist/modes/interactive/components/chat-session-host-events.js +86 -16
  1600. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  1601. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts +1 -1
  1602. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  1603. package/dist/modes/interactive/components/chat-session-host-rendering.js +49 -14
  1604. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  1605. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +36 -2
  1606. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
  1607. package/dist/modes/interactive/components/chat-session-host-runtime.js +129 -25
  1608. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
  1609. package/dist/modes/interactive/components/chat-session-host-state.d.ts +11 -2
  1610. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  1611. package/dist/modes/interactive/components/chat-session-host-state.js +5 -0
  1612. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  1613. package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.d.ts.map +1 -1
  1614. package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.js.map +1 -1
  1615. package/dist/modes/interactive/components/chat-session-host-types.d.ts +19 -2
  1616. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
  1617. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
  1618. package/dist/modes/interactive/components/chat-session-host-utils.d.ts +1 -1
  1619. package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -1
  1620. package/dist/modes/interactive/components/chat-session-host-utils.js +3 -8
  1621. package/dist/modes/interactive/components/chat-session-host-utils.js.map +1 -1
  1622. package/dist/modes/interactive/components/chat-session-host.d.ts +33 -6
  1623. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  1624. package/dist/modes/interactive/components/chat-session-host.js +57 -7
  1625. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  1626. package/dist/modes/interactive/components/chat-transcript.d.ts +1 -1
  1627. package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
  1628. package/dist/modes/interactive/components/chat-transcript.js +5 -12
  1629. package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
  1630. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  1631. package/dist/modes/interactive/components/compaction-boundary-message.js +20 -8
  1632. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  1633. package/dist/modes/interactive/components/config-selector-list.d.ts +6 -6
  1634. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
  1635. package/dist/modes/interactive/components/config-selector-list.js +66 -125
  1636. package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
  1637. package/dist/modes/interactive/components/config-selector-project-scope.d.ts +4 -0
  1638. package/dist/modes/interactive/components/config-selector-project-scope.d.ts.map +1 -0
  1639. package/dist/modes/interactive/components/config-selector-project-scope.js +59 -0
  1640. package/dist/modes/interactive/components/config-selector-project-scope.js.map +1 -0
  1641. package/dist/modes/interactive/components/config-selector.d.ts +8 -5
  1642. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  1643. package/dist/modes/interactive/components/config-selector.js +46 -13
  1644. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  1645. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  1646. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  1647. package/dist/modes/interactive/components/custom-editor.d.ts +11 -0
  1648. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  1649. package/dist/modes/interactive/components/custom-editor.js +21 -5
  1650. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  1651. package/dist/modes/interactive/components/custom-entry.d.ts +16 -0
  1652. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  1653. package/dist/modes/interactive/components/custom-entry.js +45 -0
  1654. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  1655. package/dist/modes/interactive/components/custom-message.d.ts +3 -1
  1656. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  1657. package/dist/modes/interactive/components/custom-message.js +10 -5
  1658. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  1659. package/dist/modes/interactive/components/diff.js +2 -2
  1660. package/dist/modes/interactive/components/diff.js.map +1 -1
  1661. package/dist/modes/interactive/components/extension-editor.d.ts +3 -2
  1662. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  1663. package/dist/modes/interactive/components/extension-editor.js +14 -43
  1664. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  1665. package/dist/modes/interactive/components/first-time-setup.d.ts +24 -0
  1666. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  1667. package/dist/modes/interactive/components/first-time-setup.js +80 -0
  1668. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  1669. package/dist/modes/interactive/components/footer.d.ts +7 -1
  1670. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  1671. package/dist/modes/interactive/components/footer.js +68 -39
  1672. package/dist/modes/interactive/components/footer.js.map +1 -1
  1673. package/dist/modes/interactive/components/host-input-form-mount.d.ts.map +1 -1
  1674. package/dist/modes/interactive/components/host-input-form-mount.js +4 -2
  1675. package/dist/modes/interactive/components/host-input-form-mount.js.map +1 -1
  1676. package/dist/modes/interactive/components/host-input-form.d.ts +2 -0
  1677. package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -1
  1678. package/dist/modes/interactive/components/host-input-form.js +61 -24
  1679. package/dist/modes/interactive/components/host-input-form.js.map +1 -1
  1680. package/dist/modes/interactive/components/host-session-picker.d.ts.map +1 -1
  1681. package/dist/modes/interactive/components/host-session-picker.js +8 -3
  1682. package/dist/modes/interactive/components/host-session-picker.js.map +1 -1
  1683. package/dist/modes/interactive/components/idle-status.d.ts +8 -0
  1684. package/dist/modes/interactive/components/idle-status.d.ts.map +1 -0
  1685. package/dist/modes/interactive/components/idle-status.js +13 -0
  1686. package/dist/modes/interactive/components/idle-status.js.map +1 -0
  1687. package/dist/modes/interactive/components/index.d.ts +9 -5
  1688. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  1689. package/dist/modes/interactive/components/index.js +5 -2
  1690. package/dist/modes/interactive/components/index.js.map +1 -1
  1691. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  1692. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  1693. package/dist/modes/interactive/components/login-dialog.d.ts +5 -5
  1694. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  1695. package/dist/modes/interactive/components/login-dialog.js +15 -9
  1696. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  1697. package/dist/modes/interactive/components/model-selector.d.ts +3 -3
  1698. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  1699. package/dist/modes/interactive/components/model-selector.js +44 -68
  1700. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  1701. package/dist/modes/interactive/components/oauth-selector.d.ts +4 -3
  1702. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  1703. package/dist/modes/interactive/components/oauth-selector.js +19 -18
  1704. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  1705. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  1706. package/dist/modes/interactive/components/scoped-models-selector.js +22 -13
  1707. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  1708. package/dist/modes/interactive/components/session-selector-list.d.ts +1 -1
  1709. package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -1
  1710. package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
  1711. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  1712. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  1713. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
  1714. package/dist/modes/interactive/components/settings-selector-handlers.js +6 -0
  1715. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
  1716. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
  1717. package/dist/modes/interactive/components/settings-selector-items.js +14 -0
  1718. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  1719. package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
  1720. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
  1721. package/dist/modes/interactive/components/settings-selector-types.d.ts +4 -0
  1722. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
  1723. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
  1724. package/dist/modes/interactive/components/startup-identity.d.ts +22 -0
  1725. package/dist/modes/interactive/components/startup-identity.d.ts.map +1 -0
  1726. package/dist/modes/interactive/components/startup-identity.js +58 -0
  1727. package/dist/modes/interactive/components/startup-identity.js.map +1 -0
  1728. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  1729. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  1730. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -1
  1731. package/dist/modes/interactive/components/tree-selector-content.js +0 -6
  1732. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
  1733. package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -1
  1734. package/dist/modes/interactive/components/tree-selector-model.js +1 -10
  1735. package/dist/modes/interactive/components/tree-selector-model.js.map +1 -1
  1736. package/dist/modes/interactive/components/tree-selector-viewport.d.ts.map +1 -1
  1737. package/dist/modes/interactive/components/tree-selector-viewport.js.map +1 -1
  1738. package/dist/modes/interactive/components/working-status.d.ts +5 -11
  1739. package/dist/modes/interactive/components/working-status.d.ts.map +1 -1
  1740. package/dist/modes/interactive/components/working-status.js +14 -15
  1741. package/dist/modes/interactive/components/working-status.js.map +1 -1
  1742. package/dist/modes/interactive/external-editor.d.ts +23 -0
  1743. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  1744. package/dist/modes/interactive/external-editor.js +120 -0
  1745. package/dist/modes/interactive/external-editor.js.map +1 -0
  1746. package/dist/modes/interactive/interactive-agent-events.js +73 -28
  1747. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  1748. package/dist/modes/interactive/interactive-auth-login.js +36 -28
  1749. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  1750. package/dist/modes/interactive/interactive-auth-routing.d.ts +3 -1
  1751. package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
  1752. package/dist/modes/interactive/interactive-auth-routing.js +86 -64
  1753. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  1754. package/dist/modes/interactive/interactive-autocomplete.js +13 -13
  1755. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  1756. package/dist/modes/interactive/interactive-bash-compact.d.ts +2 -1
  1757. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
  1758. package/dist/modes/interactive/interactive-bash-compact.js +26 -8
  1759. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  1760. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  1761. package/dist/modes/interactive/interactive-deferred-startup.js +61 -27
  1762. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  1763. package/dist/modes/interactive/interactive-editor-actions.js +9 -12
  1764. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  1765. package/dist/modes/interactive/interactive-extension-context.js +4 -4
  1766. package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
  1767. package/dist/modes/interactive/interactive-extension-custom-ui.js +15 -8
  1768. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
  1769. package/dist/modes/interactive/interactive-extension-dialogs.js +51 -25
  1770. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  1771. package/dist/modes/interactive/interactive-extension-runtime.js +15 -6
  1772. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  1773. package/dist/modes/interactive/interactive-extension-widgets.js +1 -1
  1774. package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
  1775. package/dist/modes/interactive/interactive-global-clear.d.ts +55 -3
  1776. package/dist/modes/interactive/interactive-global-clear.d.ts.map +1 -1
  1777. package/dist/modes/interactive/interactive-global-clear.js +61 -3
  1778. package/dist/modes/interactive/interactive-global-clear.js.map +1 -1
  1779. package/dist/modes/interactive/interactive-hotkeys-debug.js +2 -3
  1780. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
  1781. package/dist/modes/interactive/interactive-initial-session-binding.d.ts +4 -0
  1782. package/dist/modes/interactive/interactive-initial-session-binding.d.ts.map +1 -0
  1783. package/dist/modes/interactive/interactive-initial-session-binding.js +23 -0
  1784. package/dist/modes/interactive/interactive-initial-session-binding.js.map +1 -0
  1785. package/dist/modes/interactive/interactive-input-handling.d.ts +2 -1
  1786. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  1787. package/dist/modes/interactive/interactive-input-handling.js +82 -69
  1788. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  1789. package/dist/modes/interactive/interactive-key-identity.d.ts +22 -0
  1790. package/dist/modes/interactive/interactive-key-identity.d.ts.map +1 -0
  1791. package/dist/modes/interactive/interactive-key-identity.js +29 -0
  1792. package/dist/modes/interactive/interactive-key-identity.js.map +1 -0
  1793. package/dist/modes/interactive/interactive-mode-base.d.ts +18 -13
  1794. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  1795. package/dist/modes/interactive/interactive-mode-base.js +26 -18
  1796. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  1797. package/dist/modes/interactive/interactive-mode-deps.d.ts +20 -22
  1798. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  1799. package/dist/modes/interactive/interactive-mode-deps.js +16 -18
  1800. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  1801. package/dist/modes/interactive/interactive-mode-helpers.d.ts +3 -2
  1802. package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
  1803. package/dist/modes/interactive/interactive-mode-helpers.js +8 -18
  1804. package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
  1805. package/dist/modes/interactive/interactive-mode-surface.d.ts +32 -18
  1806. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  1807. package/dist/modes/interactive/interactive-mode-surface.js +1 -0
  1808. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  1809. package/dist/modes/interactive/interactive-mode-types.d.ts +2 -2
  1810. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  1811. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  1812. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  1813. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  1814. package/dist/modes/interactive/interactive-mode.js +1 -0
  1815. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  1816. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts +12 -0
  1817. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -0
  1818. package/dist/modes/interactive/interactive-model-catalog-startup.js +22 -0
  1819. package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -0
  1820. package/dist/modes/interactive/interactive-model-routing.js +44 -111
  1821. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  1822. package/dist/modes/interactive/interactive-onboarding.js +7 -7
  1823. package/dist/modes/interactive/interactive-onboarding.js.map +1 -1
  1824. package/dist/modes/interactive/interactive-pause.d.ts +6 -0
  1825. package/dist/modes/interactive/interactive-pause.d.ts.map +1 -0
  1826. package/dist/modes/interactive/interactive-pause.js +12 -0
  1827. package/dist/modes/interactive/interactive-pause.js.map +1 -0
  1828. package/dist/modes/interactive/interactive-process-lifecycle.js +43 -12
  1829. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  1830. package/dist/modes/interactive/interactive-prompt-restore.d.ts +58 -0
  1831. package/dist/modes/interactive/interactive-prompt-restore.d.ts.map +1 -0
  1832. package/dist/modes/interactive/interactive-prompt-restore.js +87 -0
  1833. package/dist/modes/interactive/interactive-prompt-restore.js.map +1 -0
  1834. package/dist/modes/interactive/interactive-prompt-turn.d.ts +2 -0
  1835. package/dist/modes/interactive/interactive-prompt-turn.d.ts.map +1 -0
  1836. package/dist/modes/interactive/interactive-prompt-turn.js +56 -0
  1837. package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -0
  1838. package/dist/modes/interactive/interactive-queueing.js +9 -12
  1839. package/dist/modes/interactive/interactive-queueing.js.map +1 -1
  1840. package/dist/modes/interactive/interactive-render-chat.js +128 -48
  1841. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  1842. package/dist/modes/interactive/interactive-resource-disclosure.js +1 -3
  1843. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
  1844. package/dist/modes/interactive/interactive-resource-paths.js +17 -21
  1845. package/dist/modes/interactive/interactive-resource-paths.js.map +1 -1
  1846. package/dist/modes/interactive/interactive-resource-rendering.js +110 -12
  1847. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  1848. package/dist/modes/interactive/interactive-selectors.js +13 -5
  1849. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  1850. package/dist/modes/interactive/interactive-session-routing.js +19 -4
  1851. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  1852. package/dist/modes/interactive/interactive-session-runtime.js +12 -1
  1853. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  1854. package/dist/modes/interactive/interactive-slash-commands.js +23 -4
  1855. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  1856. package/dist/modes/interactive/interactive-startup-chat-container.d.ts +20 -0
  1857. package/dist/modes/interactive/interactive-startup-chat-container.d.ts.map +1 -0
  1858. package/dist/modes/interactive/interactive-startup-chat-container.js +26 -0
  1859. package/dist/modes/interactive/interactive-startup-chat-container.js.map +1 -0
  1860. package/dist/modes/interactive/interactive-startup.d.ts +1 -1
  1861. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  1862. package/dist/modes/interactive/interactive-startup.js +37 -37
  1863. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  1864. package/dist/modes/interactive/interactive-submission.d.ts +24 -0
  1865. package/dist/modes/interactive/interactive-submission.d.ts.map +1 -0
  1866. package/dist/modes/interactive/interactive-submission.js +10 -0
  1867. package/dist/modes/interactive/interactive-submission.js.map +1 -0
  1868. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts +8 -0
  1869. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts.map +1 -0
  1870. package/dist/modes/interactive/interactive-summarization-retry-events.js +48 -0
  1871. package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -0
  1872. package/dist/modes/interactive/login-provider-options.d.ts +21 -0
  1873. package/dist/modes/interactive/login-provider-options.d.ts.map +1 -0
  1874. package/dist/modes/interactive/login-provider-options.js +50 -0
  1875. package/dist/modes/interactive/login-provider-options.js.map +1 -0
  1876. package/dist/modes/interactive/theme/catppuccin-frappe.json +1 -1
  1877. package/dist/modes/interactive/theme/catppuccin-latte.json +1 -1
  1878. package/dist/modes/interactive/theme/catppuccin-macchiato.json +1 -1
  1879. package/dist/modes/interactive/theme/catppuccin-mocha.json +9 -1
  1880. package/dist/modes/interactive/theme/dark.json +1 -1
  1881. package/dist/modes/interactive/theme/global-theme.d.ts +1 -1
  1882. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
  1883. package/dist/modes/interactive/theme/global-theme.js.map +1 -1
  1884. package/dist/modes/interactive/theme/light.json +1 -1
  1885. package/dist/modes/interactive/theme/theme-class.d.ts +4 -0
  1886. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  1887. package/dist/modes/interactive/theme/theme-class.js +7 -0
  1888. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  1889. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  1890. package/dist/modes/interactive/theme/theme-loading.js +5 -1
  1891. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  1892. package/dist/modes/interactive/theme/theme-schema.d.ts +32 -0
  1893. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  1894. package/dist/modes/interactive/theme/theme-schema.js +8 -0
  1895. package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  1896. package/dist/modes/interactive/theme/theme-schema.json +15 -2
  1897. package/dist/modes/interactive/theme/theme.d.ts +2 -2
  1898. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  1899. package/dist/modes/interactive/theme/theme.js +2 -2
  1900. package/dist/modes/interactive/theme/theme.js.map +1 -1
  1901. package/dist/modes/interactive/whimsical-messages.d.ts +1 -0
  1902. package/dist/modes/interactive/whimsical-messages.d.ts.map +1 -1
  1903. package/dist/modes/interactive/whimsical-messages.js +2 -2
  1904. package/dist/modes/interactive/whimsical-messages.js.map +1 -1
  1905. package/dist/modes/interactive-engine/activity-watchdog.d.ts +16 -6
  1906. package/dist/modes/interactive-engine/activity-watchdog.d.ts.map +1 -1
  1907. package/dist/modes/interactive-engine/activity-watchdog.js +12 -6
  1908. package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -1
  1909. package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -1
  1910. package/dist/modes/interactive-engine/create-isolated-runtime.js +8 -5
  1911. package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -1
  1912. package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -1
  1913. package/dist/modes/interactive-engine/engine-args.js +0 -1
  1914. package/dist/modes/interactive-engine/engine-args.js.map +1 -1
  1915. package/dist/modes/interactive-engine/engine-child-liveness.d.ts.map +1 -1
  1916. package/dist/modes/interactive-engine/engine-child-liveness.js +6 -4
  1917. package/dist/modes/interactive-engine/engine-child-liveness.js.map +1 -1
  1918. package/dist/modes/interactive-engine/engine-custom-ui.d.ts +3 -2
  1919. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  1920. package/dist/modes/interactive-engine/engine-custom-ui.js +37 -28
  1921. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  1922. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts +16 -0
  1923. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts.map +1 -0
  1924. package/dist/modes/interactive-engine/engine-diagnostic-view.js +19 -0
  1925. package/dist/modes/interactive-engine/engine-diagnostic-view.js.map +1 -0
  1926. package/dist/modes/interactive-engine/engine-dialog-host.d.ts +33 -0
  1927. package/dist/modes/interactive-engine/engine-dialog-host.d.ts.map +1 -0
  1928. package/dist/modes/interactive-engine/engine-dialog-host.js +129 -0
  1929. package/dist/modes/interactive-engine/engine-dialog-host.js.map +1 -0
  1930. package/dist/modes/interactive-engine/engine-generation.d.ts +29 -0
  1931. package/dist/modes/interactive-engine/engine-generation.d.ts.map +1 -0
  1932. package/dist/modes/interactive-engine/engine-generation.js +11 -0
  1933. package/dist/modes/interactive-engine/engine-generation.js.map +1 -0
  1934. package/dist/modes/interactive-engine/engine-health.d.ts +107 -0
  1935. package/dist/modes/interactive-engine/engine-health.d.ts.map +1 -0
  1936. package/dist/modes/interactive-engine/engine-health.js +250 -0
  1937. package/dist/modes/interactive-engine/engine-health.js.map +1 -0
  1938. package/dist/modes/interactive-engine/engine-input-form.d.ts +1 -1
  1939. package/dist/modes/interactive-engine/engine-input-form.d.ts.map +1 -1
  1940. package/dist/modes/interactive-engine/engine-input-form.js +21 -4
  1941. package/dist/modes/interactive-engine/engine-input-form.js.map +1 -1
  1942. package/dist/modes/interactive-engine/engine-monitor.d.ts +8 -1
  1943. package/dist/modes/interactive-engine/engine-monitor.d.ts.map +1 -1
  1944. package/dist/modes/interactive-engine/engine-monitor.js +19 -16
  1945. package/dist/modes/interactive-engine/engine-monitor.js.map +1 -1
  1946. package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
  1947. package/dist/modes/interactive-engine/engine-render-service.js +19 -24
  1948. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  1949. package/dist/modes/interactive-engine/engine-session-picker.d.ts.map +1 -1
  1950. package/dist/modes/interactive-engine/engine-session-picker.js +4 -2
  1951. package/dist/modes/interactive-engine/engine-session-picker.js.map +1 -1
  1952. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +16 -3
  1953. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  1954. package/dist/modes/interactive-engine/extension-ui-bridge.js +35 -45
  1955. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  1956. package/dist/modes/interactive-engine/input-form-host.d.ts +1 -0
  1957. package/dist/modes/interactive-engine/input-form-host.d.ts.map +1 -1
  1958. package/dist/modes/interactive-engine/input-form-host.js +18 -3
  1959. package/dist/modes/interactive-engine/input-form-host.js.map +1 -1
  1960. package/dist/modes/interactive-engine/isolated-auth.d.ts +10 -0
  1961. package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -0
  1962. package/dist/modes/interactive-engine/isolated-auth.js +15 -0
  1963. package/dist/modes/interactive-engine/isolated-auth.js.map +1 -0
  1964. package/dist/modes/interactive-engine/isolated-runtime.d.ts +41 -6
  1965. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  1966. package/dist/modes/interactive-engine/isolated-runtime.js +166 -84
  1967. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  1968. package/dist/modes/interactive-engine/protocol.d.ts +26 -2
  1969. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  1970. package/dist/modes/interactive-engine/protocol.js +192 -63
  1971. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  1972. package/dist/modes/interactive-engine/remote-component.d.ts +38 -0
  1973. package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
  1974. package/dist/modes/interactive-engine/remote-component.js +111 -22
  1975. package/dist/modes/interactive-engine/remote-component.js.map +1 -1
  1976. package/dist/modes/interactive-engine/remote-input-ownership.d.ts +48 -0
  1977. package/dist/modes/interactive-engine/remote-input-ownership.d.ts.map +1 -0
  1978. package/dist/modes/interactive-engine/remote-input-ownership.js +42 -0
  1979. package/dist/modes/interactive-engine/remote-input-ownership.js.map +1 -0
  1980. package/dist/modes/interactive-engine/remote-model-catalog.d.ts +2 -0
  1981. package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
  1982. package/dist/modes/interactive-engine/remote-model-catalog.js +23 -10
  1983. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
  1984. package/dist/modes/interactive-engine/remote-queue-pause.d.ts +13 -0
  1985. package/dist/modes/interactive-engine/remote-queue-pause.d.ts.map +1 -0
  1986. package/dist/modes/interactive-engine/remote-queue-pause.js +38 -0
  1987. package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -0
  1988. package/dist/modes/interactive-engine/remote-renderer.d.ts +3 -1
  1989. package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -1
  1990. package/dist/modes/interactive-engine/remote-renderer.js +41 -10
  1991. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
  1992. package/dist/modes/interactive-engine/session-picker-host.d.ts +1 -0
  1993. package/dist/modes/interactive-engine/session-picker-host.d.ts.map +1 -1
  1994. package/dist/modes/interactive-engine/session-picker-host.js +4 -0
  1995. package/dist/modes/interactive-engine/session-picker-host.js.map +1 -1
  1996. package/dist/modes/print-mode.d.ts.map +1 -1
  1997. package/dist/modes/print-mode.js +5 -0
  1998. package/dist/modes/print-mode.js.map +1 -1
  1999. package/dist/modes/rpc/jsonl.d.ts +9 -7
  2000. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  2001. package/dist/modes/rpc/jsonl.js +23 -24
  2002. package/dist/modes/rpc/jsonl.js.map +1 -1
  2003. package/dist/modes/rpc/queued-writer.d.ts +33 -0
  2004. package/dist/modes/rpc/queued-writer.d.ts.map +1 -0
  2005. package/dist/modes/rpc/queued-writer.js +104 -0
  2006. package/dist/modes/rpc/queued-writer.js.map +1 -0
  2007. package/dist/modes/rpc/rpc-bash-request-owners.d.ts +24 -0
  2008. package/dist/modes/rpc/rpc-bash-request-owners.d.ts.map +1 -0
  2009. package/dist/modes/rpc/rpc-bash-request-owners.js +45 -0
  2010. package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -0
  2011. package/dist/modes/rpc/rpc-client-api.d.ts +10 -4
  2012. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  2013. package/dist/modes/rpc/rpc-client-api.js +83 -25
  2014. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  2015. package/dist/modes/rpc/rpc-client-process.d.ts +11 -4
  2016. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  2017. package/dist/modes/rpc/rpc-client-process.js +77 -29
  2018. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  2019. package/dist/modes/rpc/rpc-client-waits.d.ts +17 -1
  2020. package/dist/modes/rpc/rpc-client-waits.d.ts.map +1 -1
  2021. package/dist/modes/rpc/rpc-client-waits.js +25 -0
  2022. package/dist/modes/rpc/rpc-client-waits.js.map +1 -1
  2023. package/dist/modes/rpc/rpc-client.d.ts +68 -9
  2024. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  2025. package/dist/modes/rpc/rpc-client.js +205 -158
  2026. package/dist/modes/rpc/rpc-client.js.map +1 -1
  2027. package/dist/modes/rpc/rpc-command-handler.d.ts +10 -3
  2028. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  2029. package/dist/modes/rpc/rpc-command-handler.js +149 -56
  2030. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  2031. package/dist/modes/rpc/rpc-command-timeouts.d.ts +30 -0
  2032. package/dist/modes/rpc/rpc-command-timeouts.d.ts.map +1 -0
  2033. package/dist/modes/rpc/rpc-command-timeouts.js +52 -0
  2034. package/dist/modes/rpc/rpc-command-timeouts.js.map +1 -0
  2035. package/dist/modes/rpc/rpc-event-buffer.d.ts.map +1 -1
  2036. package/dist/modes/rpc/rpc-event-buffer.js +3 -1
  2037. package/dist/modes/rpc/rpc-event-buffer.js.map +1 -1
  2038. package/dist/modes/rpc/rpc-extension-ui.d.ts +4 -2
  2039. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
  2040. package/dist/modes/rpc/rpc-extension-ui.js +50 -17
  2041. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
  2042. package/dist/modes/rpc/rpc-generation-buffer.d.ts +21 -0
  2043. package/dist/modes/rpc/rpc-generation-buffer.d.ts.map +1 -0
  2044. package/dist/modes/rpc/rpc-generation-buffer.js +35 -0
  2045. package/dist/modes/rpc/rpc-generation-buffer.js.map +1 -0
  2046. package/dist/modes/rpc/rpc-input-scheduler.d.ts +3 -3
  2047. package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
  2048. package/dist/modes/rpc/rpc-input-scheduler.js +19 -8
  2049. package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
  2050. package/dist/modes/rpc/rpc-input.d.ts +7 -1
  2051. package/dist/modes/rpc/rpc-input.d.ts.map +1 -1
  2052. package/dist/modes/rpc/rpc-input.js +14 -4
  2053. package/dist/modes/rpc/rpc-input.js.map +1 -1
  2054. package/dist/modes/rpc/rpc-keybindings-reload.d.ts.map +1 -1
  2055. package/dist/modes/rpc/rpc-keybindings-reload.js.map +1 -1
  2056. package/dist/modes/rpc/rpc-mode.d.ts +1 -1
  2057. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  2058. package/dist/modes/rpc/rpc-mode.js +23 -23
  2059. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  2060. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts +4 -0
  2061. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts.map +1 -0
  2062. package/dist/modes/rpc/rpc-model-fallback-prompt.js +11 -0
  2063. package/dist/modes/rpc/rpc-model-fallback-prompt.js.map +1 -0
  2064. package/dist/modes/rpc/rpc-oauth-client.d.ts +21 -0
  2065. package/dist/modes/rpc/rpc-oauth-client.d.ts.map +1 -0
  2066. package/dist/modes/rpc/rpc-oauth-client.js +81 -0
  2067. package/dist/modes/rpc/rpc-oauth-client.js.map +1 -0
  2068. package/dist/modes/rpc/rpc-oauth-interaction.d.ts +9 -0
  2069. package/dist/modes/rpc/rpc-oauth-interaction.d.ts.map +1 -0
  2070. package/dist/modes/rpc/rpc-oauth-interaction.js +49 -0
  2071. package/dist/modes/rpc/rpc-oauth-interaction.js.map +1 -0
  2072. package/dist/modes/rpc/rpc-output-buffer.d.ts +2 -1
  2073. package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
  2074. package/dist/modes/rpc/rpc-output-buffer.js +7 -40
  2075. package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
  2076. package/dist/modes/rpc/rpc-pending-requests.d.ts +37 -0
  2077. package/dist/modes/rpc/rpc-pending-requests.d.ts.map +1 -0
  2078. package/dist/modes/rpc/rpc-pending-requests.js +57 -0
  2079. package/dist/modes/rpc/rpc-pending-requests.js.map +1 -0
  2080. package/dist/modes/rpc/rpc-provider-auth.d.ts +22 -0
  2081. package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -0
  2082. package/dist/modes/rpc/rpc-provider-auth.js +117 -0
  2083. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -0
  2084. package/dist/modes/rpc/rpc-responses.d.ts +0 -1
  2085. package/dist/modes/rpc/rpc-responses.d.ts.map +1 -1
  2086. package/dist/modes/rpc/rpc-responses.js +0 -14
  2087. package/dist/modes/rpc/rpc-responses.js.map +1 -1
  2088. package/dist/modes/rpc/rpc-session-binding.d.ts +2 -1
  2089. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
  2090. package/dist/modes/rpc/rpc-session-binding.js +71 -43
  2091. package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
  2092. package/dist/modes/rpc/rpc-terminal-drain.d.ts +52 -0
  2093. package/dist/modes/rpc/rpc-terminal-drain.d.ts.map +1 -0
  2094. package/dist/modes/rpc/rpc-terminal-drain.js +85 -0
  2095. package/dist/modes/rpc/rpc-terminal-drain.js.map +1 -0
  2096. package/dist/modes/rpc/rpc-transport-error.d.ts +49 -0
  2097. package/dist/modes/rpc/rpc-transport-error.d.ts.map +1 -0
  2098. package/dist/modes/rpc/rpc-transport-error.js +78 -0
  2099. package/dist/modes/rpc/rpc-transport-error.js.map +1 -0
  2100. package/dist/modes/rpc/rpc-types.d.ts +125 -21
  2101. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  2102. package/dist/modes/rpc/rpc-types.js.map +1 -1
  2103. package/dist/package-manager-cli-parser.js.map +1 -1
  2104. package/dist/package-manager-cli.d.ts +3 -3
  2105. package/dist/package-manager-cli.d.ts.map +1 -1
  2106. package/dist/package-manager-cli.js +66 -53
  2107. package/dist/package-manager-cli.js.map +1 -1
  2108. package/dist/rpc-entry.js +6 -2
  2109. package/dist/rpc-entry.js.map +1 -1
  2110. package/dist/self-update-plan.d.ts +12 -0
  2111. package/dist/self-update-plan.d.ts.map +1 -0
  2112. package/dist/self-update-plan.js +42 -0
  2113. package/dist/self-update-plan.js.map +1 -0
  2114. package/dist/utils/child-process.d.ts.map +1 -1
  2115. package/dist/utils/child-process.js.map +1 -1
  2116. package/dist/utils/clipboard-image.js +1 -1
  2117. package/dist/utils/clipboard-image.js.map +1 -1
  2118. package/dist/utils/clipboard-native.d.ts +1 -0
  2119. package/dist/utils/clipboard-native.d.ts.map +1 -1
  2120. package/dist/utils/clipboard-native.js.map +1 -1
  2121. package/dist/utils/clipboard.d.ts +3 -0
  2122. package/dist/utils/clipboard.d.ts.map +1 -1
  2123. package/dist/utils/clipboard.js +31 -8
  2124. package/dist/utils/clipboard.js.map +1 -1
  2125. package/dist/utils/compile-cache.d.ts +8 -0
  2126. package/dist/utils/compile-cache.d.ts.map +1 -0
  2127. package/dist/utils/compile-cache.js +31 -0
  2128. package/dist/utils/compile-cache.js.map +1 -0
  2129. package/dist/utils/fs-watch.d.ts.map +1 -1
  2130. package/dist/utils/fs-watch.js +1 -3
  2131. package/dist/utils/fs-watch.js.map +1 -1
  2132. package/dist/utils/git.js +1 -1
  2133. package/dist/utils/git.js.map +1 -1
  2134. package/dist/utils/interactive-engine-bootstrap.d.ts +67 -0
  2135. package/dist/utils/interactive-engine-bootstrap.d.ts.map +1 -0
  2136. package/dist/utils/interactive-engine-bootstrap.js +117 -0
  2137. package/dist/utils/interactive-engine-bootstrap.js.map +1 -0
  2138. package/dist/utils/interactive-engine-env.d.ts +41 -0
  2139. package/dist/utils/interactive-engine-env.d.ts.map +1 -0
  2140. package/dist/utils/interactive-engine-env.js +67 -0
  2141. package/dist/utils/interactive-engine-env.js.map +1 -0
  2142. package/dist/utils/markit.d.ts.map +1 -1
  2143. package/dist/utils/markit.js +15 -5
  2144. package/dist/utils/markit.js.map +1 -1
  2145. package/dist/utils/shell.js +2 -2
  2146. package/dist/utils/shell.js.map +1 -1
  2147. package/dist/utils/split-launcher.d.ts.map +1 -1
  2148. package/dist/utils/split-launcher.js +1 -2
  2149. package/dist/utils/split-launcher.js.map +1 -1
  2150. package/dist/utils/tools-manager.d.ts.map +1 -1
  2151. package/dist/utils/tools-manager.js +8 -34
  2152. package/dist/utils/tools-manager.js.map +1 -1
  2153. package/dist/utils/version-check.d.ts +1 -0
  2154. package/dist/utils/version-check.d.ts.map +1 -1
  2155. package/dist/utils/version-check.js +7 -5
  2156. package/dist/utils/version-check.js.map +1 -1
  2157. package/docs/changelog.mdx +24 -2
  2158. package/docs/compaction.md +101 -18
  2159. package/docs/custom-provider.md +40 -8
  2160. package/docs/development.md +14 -15
  2161. package/docs/docs.json +3 -1
  2162. package/docs/environment-variables.md +37 -0
  2163. package/docs/extensions.md +166 -18
  2164. package/docs/index.md +11 -0
  2165. package/docs/intercom.md +1 -1
  2166. package/docs/json.md +11 -5
  2167. package/docs/keybindings.md +19 -2
  2168. package/docs/llama-cpp.md +72 -0
  2169. package/docs/models.md +41 -50
  2170. package/docs/packages.md +4 -2
  2171. package/docs/prompt-templates.md +1 -0
  2172. package/docs/providers.md +86 -24
  2173. package/docs/quickstart.md +28 -18
  2174. package/docs/rpc.md +88 -86
  2175. package/docs/sdk.md +68 -71
  2176. package/docs/security.md +15 -0
  2177. package/docs/session-format.md +6 -15
  2178. package/docs/sessions.md +1 -1
  2179. package/docs/settings.md +29 -18
  2180. package/docs/skills.md +8 -0
  2181. package/docs/subagents.md +24 -8
  2182. package/docs/termux.md +3 -1
  2183. package/docs/themes.md +10 -1
  2184. package/docs/tui.md +14 -7
  2185. package/docs/usage.md +72 -2
  2186. package/docs/windows.md +1 -1
  2187. package/docs/workflows.md +1304 -562
  2188. package/examples/extensions/README.md +2 -2
  2189. package/examples/extensions/border-status-editor.ts +1 -6
  2190. package/examples/extensions/custom-compaction.ts +7 -2
  2191. package/examples/extensions/custom-footer.ts +1 -1
  2192. package/examples/extensions/custom-provider-anthropic/index.ts +14 -2
  2193. package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
  2194. package/examples/extensions/gondolin/index.ts +1 -1
  2195. package/examples/extensions/handoff.ts +9 -2
  2196. package/examples/extensions/hello.ts +1 -1
  2197. package/examples/extensions/message-renderer.ts +2 -2
  2198. package/examples/extensions/minimal-mode.ts +6 -6
  2199. package/examples/extensions/overlay-qa-focus-components.ts +0 -1
  2200. package/examples/extensions/overlay-qa-streaming-input-components.ts +2 -2
  2201. package/examples/extensions/overlay-qa-tests.ts +16 -14
  2202. package/examples/extensions/overlay-qa-toggle-passive-components.ts +3 -5
  2203. package/examples/extensions/overlay-test.ts +3 -6
  2204. package/examples/extensions/plan-mode/index.ts +1 -1
  2205. package/examples/extensions/preset.ts +1 -1
  2206. package/examples/extensions/qna.ts +1 -1
  2207. package/examples/extensions/sandbox/package-lock.json +3 -3
  2208. package/examples/extensions/structured-output.ts +9 -9
  2209. package/examples/extensions/subagent/display.ts +115 -127
  2210. package/examples/extensions/subagent/index.ts +310 -349
  2211. package/examples/extensions/subagent/render.ts +244 -345
  2212. package/examples/extensions/subagent/runner.ts +223 -230
  2213. package/examples/extensions/subagent/schemas.ts +39 -46
  2214. package/examples/extensions/subagent/types.ts +22 -22
  2215. package/examples/extensions/summarize.ts +4 -1
  2216. package/examples/extensions/tic-tac-toe.ts +4 -4
  2217. package/examples/extensions/todo.ts +1 -1
  2218. package/examples/extensions/tool-override.ts +1 -1
  2219. package/examples/extensions/trigger-compact.ts +4 -1
  2220. package/examples/extensions/working-indicator.ts +3 -2
  2221. package/examples/rpc-extension-ui-components.ts +1 -2
  2222. package/examples/sdk/02-custom-model.ts +8 -10
  2223. package/examples/sdk/03-custom-prompt.ts +1 -6
  2224. package/examples/sdk/06-extensions.ts +1 -6
  2225. package/examples/sdk/07-context-files.ts +1 -6
  2226. package/examples/sdk/09-api-keys-and-oauth.ts +17 -23
  2227. package/examples/sdk/12-full-control.ts +10 -12
  2228. package/examples/sdk/README.md +17 -21
  2229. package/npm-shrinkwrap.json +336 -313
  2230. package/package.json +15 -13
  2231. package/dist/builtin/cursor/CHANGELOG.md +0 -281
  2232. package/dist/builtin/cursor/LICENSE +0 -26
  2233. package/dist/builtin/cursor/README.md +0 -24
  2234. package/dist/builtin/cursor/index.ts +0 -9
  2235. package/dist/builtin/cursor/package.json +0 -47
  2236. package/dist/builtin/cursor/src/auth.ts +0 -352
  2237. package/dist/builtin/cursor/src/catalog-cache.ts +0 -155
  2238. package/dist/builtin/cursor/src/config.ts +0 -123
  2239. package/dist/builtin/cursor/src/conversation-state.ts +0 -135
  2240. package/dist/builtin/cursor/src/cursor-models-raw.json +0 -412
  2241. package/dist/builtin/cursor/src/model-mapper.ts +0 -369
  2242. package/dist/builtin/cursor/src/model-reference.ts +0 -282
  2243. package/dist/builtin/cursor/src/models.ts +0 -54
  2244. package/dist/builtin/cursor/src/native-loader.ts +0 -71
  2245. package/dist/builtin/cursor/src/proto/README.md +0 -34
  2246. package/dist/builtin/cursor/src/proto/agent_pb.ts +0 -15294
  2247. package/dist/builtin/cursor/src/proto/protobuf-codec-base64.ts +0 -22
  2248. package/dist/builtin/cursor/src/proto/protobuf-codec-json.ts +0 -44
  2249. package/dist/builtin/cursor/src/proto/protobuf-codec-request.ts +0 -311
  2250. package/dist/builtin/cursor/src/proto/protobuf-codec-wire.ts +0 -248
  2251. package/dist/builtin/cursor/src/proto/protobuf-codec.ts +0 -200
  2252. package/dist/builtin/cursor/src/provider.ts +0 -301
  2253. package/dist/builtin/cursor/src/stream.ts +0 -494
  2254. package/dist/builtin/cursor/src/transport-errors.ts +0 -74
  2255. package/dist/builtin/cursor/src/transport-frame.ts +0 -56
  2256. package/dist/builtin/cursor/src/transport-http2.ts +0 -122
  2257. package/dist/builtin/cursor/src/transport-native-client.ts +0 -161
  2258. package/dist/builtin/cursor/src/transport-run-stream.ts +0 -188
  2259. package/dist/builtin/cursor/src/transport-timeouts.ts +0 -87
  2260. package/dist/builtin/cursor/src/transport-types.ts +0 -143
  2261. package/dist/builtin/cursor/src/transport.ts +0 -26
  2262. package/dist/builtin/workflows/builtin/deep-research-codebase-runner.ts +0 -492
  2263. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +0 -383
  2264. package/dist/builtin/workflows/builtin/deep-research-codebase.d.ts +0 -35
  2265. package/dist/builtin/workflows/builtin/deep-research-codebase.ts +0 -47
  2266. package/dist/builtin/workflows/skills/impeccable/reference/brand.md +0 -108
  2267. package/dist/builtin/workflows/skills/impeccable/reference/codex.md +0 -105
  2268. package/dist/builtin/workflows/skills/impeccable/reference/interaction-design.md +0 -189
  2269. package/dist/builtin/workflows/skills/impeccable/scripts/hook-before-edit.mjs +0 -516
  2270. package/dist/builtin/workflows/src/tui/toast.ts +0 -106
  2271. package/dist/core/context-window.d.ts +0 -54
  2272. package/dist/core/context-window.d.ts.map +0 -1
  2273. package/dist/core/context-window.js +0 -110
  2274. package/dist/core/context-window.js.map +0 -1
  2275. package/dist/core/copilot-anthropic-sse-repair.d.ts +0 -23
  2276. package/dist/core/copilot-anthropic-sse-repair.d.ts.map +0 -1
  2277. package/dist/core/copilot-anthropic-sse-repair.js +0 -340
  2278. package/dist/core/copilot-anthropic-sse-repair.js.map +0 -1
  2279. package/dist/core/copilot-errors.d.ts +0 -9
  2280. package/dist/core/copilot-errors.d.ts.map +0 -1
  2281. package/dist/core/copilot-errors.js +0 -32
  2282. package/dist/core/copilot-errors.js.map +0 -1
  2283. package/dist/core/copilot-gemini-payload-sanitizer.d.ts +0 -72
  2284. package/dist/core/copilot-gemini-payload-sanitizer.d.ts.map +0 -1
  2285. package/dist/core/copilot-gemini-payload-sanitizer.js +0 -296
  2286. package/dist/core/copilot-gemini-payload-sanitizer.js.map +0 -1
  2287. package/dist/core/copilot-gemini-reasoning.d.ts +0 -126
  2288. package/dist/core/copilot-gemini-reasoning.d.ts.map +0 -1
  2289. package/dist/core/copilot-gemini-reasoning.js +0 -265
  2290. package/dist/core/copilot-gemini-reasoning.js.map +0 -1
  2291. package/dist/core/copilot-gemini-tool-arguments.d.ts +0 -42
  2292. package/dist/core/copilot-gemini-tool-arguments.d.ts.map +0 -1
  2293. package/dist/core/copilot-gemini-tool-arguments.js +0 -159
  2294. package/dist/core/copilot-gemini-tool-arguments.js.map +0 -1
  2295. package/dist/core/copilot-hosts.d.ts +0 -12
  2296. package/dist/core/copilot-hosts.d.ts.map +0 -1
  2297. package/dist/core/copilot-hosts.js +0 -33
  2298. package/dist/core/copilot-hosts.js.map +0 -1
  2299. package/dist/core/copilot-model-catalog.d.ts +0 -114
  2300. package/dist/core/copilot-model-catalog.d.ts.map +0 -1
  2301. package/dist/core/copilot-model-catalog.js +0 -392
  2302. package/dist/core/copilot-model-catalog.js.map +0 -1
  2303. package/dist/core/copilot-model-static-fallbacks.d.ts +0 -43
  2304. package/dist/core/copilot-model-static-fallbacks.d.ts.map +0 -1
  2305. package/dist/core/copilot-model-static-fallbacks.js +0 -50
  2306. package/dist/core/copilot-model-static-fallbacks.js.map +0 -1
  2307. package/dist/core/copilot-model-synthesis.d.ts +0 -10
  2308. package/dist/core/copilot-model-synthesis.d.ts.map +0 -1
  2309. package/dist/core/copilot-model-synthesis.js +0 -91
  2310. package/dist/core/copilot-model-synthesis.js.map +0 -1
  2311. package/dist/core/model-registry-auth.d.ts +0 -8
  2312. package/dist/core/model-registry-auth.d.ts.map +0 -1
  2313. package/dist/core/model-registry-auth.js +0 -83
  2314. package/dist/core/model-registry-auth.js.map +0 -1
  2315. package/dist/core/model-registry-builtins.d.ts +0 -10
  2316. package/dist/core/model-registry-builtins.d.ts.map +0 -1
  2317. package/dist/core/model-registry-builtins.js +0 -171
  2318. package/dist/core/model-registry-builtins.js.map +0 -1
  2319. package/dist/core/model-registry-custom-loader.d.ts +0 -3
  2320. package/dist/core/model-registry-custom-loader.d.ts.map +0 -1
  2321. package/dist/core/model-registry-custom-loader.js +0 -254
  2322. package/dist/core/model-registry-custom-loader.js.map +0 -1
  2323. package/dist/core/model-registry-dynamic.d.ts +0 -7
  2324. package/dist/core/model-registry-dynamic.d.ts.map +0 -1
  2325. package/dist/core/model-registry-dynamic.js +0 -201
  2326. package/dist/core/model-registry-dynamic.js.map +0 -1
  2327. package/dist/core/model-registry-loader.d.ts +0 -5
  2328. package/dist/core/model-registry-loader.d.ts.map +0 -1
  2329. package/dist/core/model-registry-loader.js +0 -28
  2330. package/dist/core/model-registry-loader.js.map +0 -1
  2331. package/dist/core/model-registry-schemas.d.ts +0 -1273
  2332. package/dist/core/model-registry-schemas.d.ts.map +0 -1
  2333. package/dist/core/model-registry-schemas.js.map +0 -1
  2334. package/dist/core/model-registry-types.d.ts +0 -82
  2335. package/dist/core/model-registry-types.d.ts.map +0 -1
  2336. package/dist/core/model-registry-types.js +0 -2
  2337. package/dist/core/model-registry-types.js.map +0 -1
  2338. package/dist/core/oauth-compat.d.ts +0 -17
  2339. package/dist/core/oauth-compat.d.ts.map +0 -1
  2340. package/dist/core/oauth-compat.js +0 -2
  2341. package/dist/core/oauth-compat.js.map +0 -1
  2342. package/dist/core/oauth-provider-bridge.d.ts +0 -40
  2343. package/dist/core/oauth-provider-bridge.d.ts.map +0 -1
  2344. package/dist/core/oauth-provider-bridge.js +0 -169
  2345. package/dist/core/oauth-provider-bridge.js.map +0 -1
  2346. package/dist/modes/interactive/components/context-window-selector.d.ts +0 -53
  2347. package/dist/modes/interactive/components/context-window-selector.d.ts.map +0 -1
  2348. package/dist/modes/interactive/components/context-window-selector.js +0 -136
  2349. package/dist/modes/interactive/components/context-window-selector.js.map +0 -1
  2350. package/dist/modes/rpc/bounded-writer.d.ts +0 -27
  2351. package/dist/modes/rpc/bounded-writer.d.ts.map +0 -1
  2352. package/dist/modes/rpc/bounded-writer.js +0 -103
  2353. package/dist/modes/rpc/bounded-writer.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-engine-bootstrap.js","sourceRoot":"","sources":["../../src/utils/interactive-engine-bootstrap.ts"],"names":[],"mappings":"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","sourcesContent":["import { mkdtempSync, readFileSync, renameSync, rmSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\n\n/**\n * Private startup channel for the isolated interactive engine.\n *\n * The engine child needs four control values (engine role, host PID, guardian\n * path, and optionally an API key) before its runtime exists. They used to\n * travel as environment variables, which cannot be taken back: under Bun a\n * child spawned without an explicit `env` inherits the runtime's launch-time\n * environment map, so deleting the variables from `process.env` afterwards does\n * not stop arbitrary extension or hook code from leaking them — including the\n * API key — into its own subprocesses.\n *\n * The engine is therefore launched with an environment that never contained the\n * values, and the values travel in a 0600 file whose path is passed as a private\n * CLI argument. The child reads it once, freezes the snapshot, and unlinks it.\n * The filename carries no secret material.\n *\n * Cleanup is ownership-scoped. The path is untrusted child input — anyone can\n * pass the private flag — so a reader may unlink only that exact file. Only the\n * writer, which holds an {@link InteractiveEngineBootstrapHandle} for the\n * directory it created, may remove that directory recursively.\n */\nexport const INTERACTIVE_ENGINE_BOOTSTRAP_FLAG = \"--internal-engine-bootstrap\";\nexport const INTERACTIVE_ENGINE_BOOTSTRAP_VERSION = 1;\n\nexport interface InteractiveEngineBootstrap {\n\tversion: number;\n\thostPid: number;\n\tguardFile: string;\n\tapiKey?: string;\n}\n\n/**\n * Proof that this process created a bootstrap record. A bare path — in\n * particular one taken from argv — is never sufficient for recursive removal.\n */\nexport interface InteractiveEngineBootstrapHandle {\n\treadonly path: string;\n\treadonly directory: string;\n}\n\n/**\n * Publish a bootstrap record atomically so a reader never sees a partial file.\n *\n * On any failure the exact temporary file and the directory this call created\n * are removed before the original error propagates, so a `0600` file holding a\n * credential is never left behind.\n */\nexport function writeInteractiveEngineBootstrap(\n\trecord: Omit<InteractiveEngineBootstrap, \"version\">,\n): InteractiveEngineBootstrapHandle {\n\tconst directory = mkdtempSync(join(tmpdir(), \"atomic-engine-bootstrap-\"));\n\tconst path = join(directory, \"bootstrap.json\");\n\tconst tempPath = `${path}.tmp`;\n\tconst payload: InteractiveEngineBootstrap = { version: INTERACTIVE_ENGINE_BOOTSTRAP_VERSION, ...record };\n\ttry {\n\t\twriteFileSync(tempPath, JSON.stringify(payload), { encoding: \"utf8\", mode: 0o600 });\n\t\trenameSync(tempPath, path);\n\t} catch (error) {\n\t\trmSync(tempPath, { force: true });\n\t\trmSync(directory, { recursive: true, force: true });\n\t\tthrow error;\n\t}\n\treturn { path, directory };\n}\n\n/** Remove a bootstrap record and the directory whose creation this handle proves. */\nexport function removeOwnedInteractiveEngineBootstrap(handle: InteractiveEngineBootstrapHandle | undefined): void {\n\tif (!handle) return;\n\trmSync(handle.directory, { recursive: true, force: true });\n}\n\n/**\n * Split the private bootstrap argument out of an argv slice.\n *\n * Returns the remaining arguments so normal CLI parsing never sees the flag.\n */\nexport function takeInteractiveEngineBootstrapArg(args: readonly string[]): {\n\targs: string[];\n\tpath: string | undefined;\n} {\n\tconst remaining: string[] = [];\n\tlet path: string | undefined;\n\tfor (let index = 0; index < args.length; index += 1) {\n\t\tconst value = args[index]!;\n\t\tif (value === INTERACTIVE_ENGINE_BOOTSTRAP_FLAG && index + 1 < args.length) {\n\t\t\tpath = args[++index];\n\t\t\tcontinue;\n\t\t}\n\t\tif (value.startsWith(`${INTERACTIVE_ENGINE_BOOTSTRAP_FLAG}=`)) {\n\t\t\tpath = value.slice(INTERACTIVE_ENGINE_BOOTSTRAP_FLAG.length + 1);\n\t\t\tcontinue;\n\t\t}\n\t\tremaining.push(value);\n\t}\n\treturn { args: remaining, path };\n}\n\n/** True when this argv belongs to an isolated interactive engine child. */\nexport function hasInteractiveEngineBootstrapArg(args: readonly string[]): boolean {\n\treturn takeInteractiveEngineBootstrapArg(args).path !== undefined;\n}\n\n/**\n * Read and consume a bootstrap record.\n *\n * The named file is always unlinked, including on malformed content, so a stale\n * API key never outlives the handshake. The path came from argv, so nothing\n * around it is touched: no parent directory, no sibling.\n */\nexport function readInteractiveEngineBootstrap(path: string): InteractiveEngineBootstrap | undefined {\n\tlet raw: string;\n\ttry {\n\t\traw = readFileSync(path, \"utf8\");\n\t} catch {\n\t\treturn undefined;\n\t} finally {\n\t\trmSync(path, { force: true });\n\t}\n\ttry {\n\t\tconst parsed = JSON.parse(raw) as Partial<InteractiveEngineBootstrap>;\n\t\tif (parsed.version !== INTERACTIVE_ENGINE_BOOTSTRAP_VERSION) return undefined;\n\t\tif (typeof parsed.hostPid !== \"number\" || typeof parsed.guardFile !== \"string\") return undefined;\n\t\treturn {\n\t\t\tversion: parsed.version,\n\t\t\thostPid: parsed.hostPid,\n\t\t\tguardFile: parsed.guardFile,\n\t\t\t...(typeof parsed.apiKey === \"string\" ? { apiKey: parsed.apiKey } : {}),\n\t\t};\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n"]}
@@ -0,0 +1,41 @@
1
+ import type { InteractiveEngineBootstrap } from "./interactive-engine-bootstrap.ts";
2
+ /**
3
+ * Legacy interactive-engine control variables.
4
+ *
5
+ * The host no longer sets these: engine startup metadata travels through a
6
+ * protected bootstrap file (see interactive-engine-bootstrap.ts) precisely
7
+ * because environment values cannot be taken back from a Bun process tree. They
8
+ * are still recognized and scrubbed as defense in depth, so an inherited or
9
+ * caller-supplied value can neither select engine mode nor reach a child.
10
+ */
11
+ export declare const INTERACTIVE_ENGINE_ENV_VARS: readonly ["ATOMIC_INTERACTIVE_ENGINE_CHILD", "ATOMIC_INTERACTIVE_ENGINE_HOST_PID", "ATOMIC_INTERACTIVE_ENGINE_GUARD_FILE", "ATOMIC_INTERACTIVE_ENGINE_API_KEY"];
12
+ /** Immutable startup values captured before they are removed from `process.env`. */
13
+ export interface InteractiveEngineStartupEnv {
14
+ readonly child: string | undefined;
15
+ readonly hostPid: string | undefined;
16
+ readonly guardFile: string | undefined;
17
+ readonly apiKey: string | undefined;
18
+ }
19
+ /**
20
+ * Copy an environment without the interactive-engine control variables.
21
+ *
22
+ * Pure: the input object is never mutated. Call this AFTER merging every other
23
+ * environment source so a caller-supplied value cannot reintroduce a key.
24
+ */
25
+ export declare function scrubInteractiveEngineEnv<T extends NodeJS.ProcessEnv>(env: T): T;
26
+ /**
27
+ * Capture the engine startup values once and remove the legacy variables from
28
+ * `process.env`.
29
+ *
30
+ * A bootstrap record is authoritative when present. The legacy environment is
31
+ * only a fallback for a host that still launches the old way; it cannot be made
32
+ * safe on its own, because Bun children spawned without an explicit `env`
33
+ * inherit the runtime's launch-time environment no matter what this process
34
+ * deletes afterwards. Idempotent: later calls return the same frozen snapshot.
35
+ */
36
+ export declare function captureInteractiveEngineStartupEnv(bootstrap?: InteractiveEngineBootstrap): InteractiveEngineStartupEnv;
37
+ /** Frozen startup snapshot; captures (and scrubs) on first read. */
38
+ export declare function interactiveEngineStartupEnv(): InteractiveEngineStartupEnv;
39
+ /** True when this process was started as the isolated interactive engine child. */
40
+ export declare function isInteractiveEngineChild(): boolean;
41
+ //# sourceMappingURL=interactive-engine-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-engine-env.d.ts","sourceRoot":"","sources":["../../src/utils/interactive-engine-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAEpF;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,YACvC,iCAAiC,EACjC,oCAAoC,EACpC,sCAAsC,EACtC,mCAAmC,CAC1B,CAAC;AAEX,oFAAoF;AACpF,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAID;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAIhF;AAED;;;;;;;;;GASG;AACH,wBAAgB,kCAAkC,CACjD,SAAS,CAAC,EAAE,0BAA0B,GACpC,2BAA2B,CAmB7B;AAED,oEAAoE;AACpE,wBAAgB,2BAA2B,IAAI,2BAA2B,CAEzE;AAED,mFAAmF;AACnF,wBAAgB,wBAAwB,IAAI,OAAO,CAElD"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Legacy interactive-engine control variables.
3
+ *
4
+ * The host no longer sets these: engine startup metadata travels through a
5
+ * protected bootstrap file (see interactive-engine-bootstrap.ts) precisely
6
+ * because environment values cannot be taken back from a Bun process tree. They
7
+ * are still recognized and scrubbed as defense in depth, so an inherited or
8
+ * caller-supplied value can neither select engine mode nor reach a child.
9
+ */
10
+ export const INTERACTIVE_ENGINE_ENV_VARS = [
11
+ "ATOMIC_INTERACTIVE_ENGINE_CHILD",
12
+ "ATOMIC_INTERACTIVE_ENGINE_HOST_PID",
13
+ "ATOMIC_INTERACTIVE_ENGINE_GUARD_FILE",
14
+ "ATOMIC_INTERACTIVE_ENGINE_API_KEY",
15
+ ];
16
+ let snapshot;
17
+ /**
18
+ * Copy an environment without the interactive-engine control variables.
19
+ *
20
+ * Pure: the input object is never mutated. Call this AFTER merging every other
21
+ * environment source so a caller-supplied value cannot reintroduce a key.
22
+ */
23
+ export function scrubInteractiveEngineEnv(env) {
24
+ const copy = { ...env };
25
+ for (const name of INTERACTIVE_ENGINE_ENV_VARS)
26
+ delete copy[name];
27
+ return copy;
28
+ }
29
+ /**
30
+ * Capture the engine startup values once and remove the legacy variables from
31
+ * `process.env`.
32
+ *
33
+ * A bootstrap record is authoritative when present. The legacy environment is
34
+ * only a fallback for a host that still launches the old way; it cannot be made
35
+ * safe on its own, because Bun children spawned without an explicit `env`
36
+ * inherit the runtime's launch-time environment no matter what this process
37
+ * deletes afterwards. Idempotent: later calls return the same frozen snapshot.
38
+ */
39
+ export function captureInteractiveEngineStartupEnv(bootstrap) {
40
+ if (snapshot)
41
+ return snapshot;
42
+ snapshot = Object.freeze(bootstrap
43
+ ? {
44
+ child: "1",
45
+ hostPid: String(bootstrap.hostPid),
46
+ guardFile: bootstrap.guardFile,
47
+ apiKey: bootstrap.apiKey,
48
+ }
49
+ : {
50
+ child: process.env.ATOMIC_INTERACTIVE_ENGINE_CHILD,
51
+ hostPid: process.env.ATOMIC_INTERACTIVE_ENGINE_HOST_PID,
52
+ guardFile: process.env.ATOMIC_INTERACTIVE_ENGINE_GUARD_FILE,
53
+ apiKey: process.env.ATOMIC_INTERACTIVE_ENGINE_API_KEY,
54
+ });
55
+ for (const name of INTERACTIVE_ENGINE_ENV_VARS)
56
+ delete process.env[name];
57
+ return snapshot;
58
+ }
59
+ /** Frozen startup snapshot; captures (and scrubs) on first read. */
60
+ export function interactiveEngineStartupEnv() {
61
+ return captureInteractiveEngineStartupEnv();
62
+ }
63
+ /** True when this process was started as the isolated interactive engine child. */
64
+ export function isInteractiveEngineChild() {
65
+ return interactiveEngineStartupEnv().child === "1";
66
+ }
67
+ //# sourceMappingURL=interactive-engine-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-engine-env.js","sourceRoot":"","sources":["../../src/utils/interactive-engine-env.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IAC1C,iCAAiC;IACjC,oCAAoC;IACpC,sCAAsC;IACtC,mCAAmC;CAC1B,CAAC;AAUX,IAAI,QAAiD,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAA8B,GAAM;IAC5E,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,EAAO,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,2BAA2B;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kCAAkC,CACjD,SAAsC;IAEtC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,QAAQ,GAAG,MAAM,CAAC,MAAM,CACvB,SAAS;QACR,CAAC,CAAC;YACA,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;YAClC,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;SACxB;QACF,CAAC,CAAC;YACA,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,+BAA+B;YAClD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,kCAAkC;YACvD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,oCAAoC;YAC3D,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,iCAAiC;SACrD,CACH,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,2BAA2B;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzE,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,2BAA2B;IAC1C,OAAO,kCAAkC,EAAE,CAAC;AAC7C,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,wBAAwB;IACvC,OAAO,2BAA2B,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC;AACpD,CAAC","sourcesContent":["import type { InteractiveEngineBootstrap } from \"./interactive-engine-bootstrap.ts\";\n\n/**\n * Legacy interactive-engine control variables.\n *\n * The host no longer sets these: engine startup metadata travels through a\n * protected bootstrap file (see interactive-engine-bootstrap.ts) precisely\n * because environment values cannot be taken back from a Bun process tree. They\n * are still recognized and scrubbed as defense in depth, so an inherited or\n * caller-supplied value can neither select engine mode nor reach a child.\n */\nexport const INTERACTIVE_ENGINE_ENV_VARS = [\n\t\"ATOMIC_INTERACTIVE_ENGINE_CHILD\",\n\t\"ATOMIC_INTERACTIVE_ENGINE_HOST_PID\",\n\t\"ATOMIC_INTERACTIVE_ENGINE_GUARD_FILE\",\n\t\"ATOMIC_INTERACTIVE_ENGINE_API_KEY\",\n] as const;\n\n/** Immutable startup values captured before they are removed from `process.env`. */\nexport interface InteractiveEngineStartupEnv {\n\treadonly child: string | undefined;\n\treadonly hostPid: string | undefined;\n\treadonly guardFile: string | undefined;\n\treadonly apiKey: string | undefined;\n}\n\nlet snapshot: InteractiveEngineStartupEnv | undefined;\n\n/**\n * Copy an environment without the interactive-engine control variables.\n *\n * Pure: the input object is never mutated. Call this AFTER merging every other\n * environment source so a caller-supplied value cannot reintroduce a key.\n */\nexport function scrubInteractiveEngineEnv<T extends NodeJS.ProcessEnv>(env: T): T {\n\tconst copy = { ...env } as T;\n\tfor (const name of INTERACTIVE_ENGINE_ENV_VARS) delete copy[name];\n\treturn copy;\n}\n\n/**\n * Capture the engine startup values once and remove the legacy variables from\n * `process.env`.\n *\n * A bootstrap record is authoritative when present. The legacy environment is\n * only a fallback for a host that still launches the old way; it cannot be made\n * safe on its own, because Bun children spawned without an explicit `env`\n * inherit the runtime's launch-time environment no matter what this process\n * deletes afterwards. Idempotent: later calls return the same frozen snapshot.\n */\nexport function captureInteractiveEngineStartupEnv(\n\tbootstrap?: InteractiveEngineBootstrap,\n): InteractiveEngineStartupEnv {\n\tif (snapshot) return snapshot;\n\tsnapshot = Object.freeze(\n\t\tbootstrap\n\t\t\t? {\n\t\t\t\t\tchild: \"1\",\n\t\t\t\t\thostPid: String(bootstrap.hostPid),\n\t\t\t\t\tguardFile: bootstrap.guardFile,\n\t\t\t\t\tapiKey: bootstrap.apiKey,\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tchild: process.env.ATOMIC_INTERACTIVE_ENGINE_CHILD,\n\t\t\t\t\thostPid: process.env.ATOMIC_INTERACTIVE_ENGINE_HOST_PID,\n\t\t\t\t\tguardFile: process.env.ATOMIC_INTERACTIVE_ENGINE_GUARD_FILE,\n\t\t\t\t\tapiKey: process.env.ATOMIC_INTERACTIVE_ENGINE_API_KEY,\n\t\t\t\t},\n\t);\n\tfor (const name of INTERACTIVE_ENGINE_ENV_VARS) delete process.env[name];\n\treturn snapshot;\n}\n\n/** Frozen startup snapshot; captures (and scrubs) on first read. */\nexport function interactiveEngineStartupEnv(): InteractiveEngineStartupEnv {\n\treturn captureInteractiveEngineStartupEnv();\n}\n\n/** True when this process was started as the isolated interactive engine child. */\nexport function isInteractiveEngineChild(): boolean {\n\treturn interactiveEngineStartupEnv().child === \"1\";\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"markit.d.ts","sourceRoot":"","sources":["../../src/utils/markit.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAoCxF,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAGnH;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAK1I"}
1
+ {"version":3,"file":"markit.d.ts","sourceRoot":"","sources":["../../src/utils/markit.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AA8CD,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,sBAAsB,CAAC,CASnH;AAED,wBAAsB,uBAAuB,CAC5C,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,sBAAsB,CAAC,CAWjC"}
@@ -9,10 +9,16 @@ let markit = async () => {
9
9
  };
10
10
  function normalizeExtension(extension) {
11
11
  const trimmed = extension.trim().toLowerCase();
12
- return trimmed ? trimmed.startsWith(".") ? trimmed : `.${trimmed}` : ".bin";
12
+ return trimmed ? (trimmed.startsWith(".") ? trimmed : `.${trimmed}`) : ".bin";
13
+ }
14
+ function normalizeError(error) {
15
+ return error instanceof Error && error.message.trim().length > 0 ? error.message.trim() : "Conversion failed";
16
+ }
17
+ function abortError() {
18
+ const error = new Error("Aborted");
19
+ error.name = "AbortError";
20
+ return error;
13
21
  }
14
- function normalizeError(error) { return error instanceof Error && error.message.trim().length > 0 ? error.message.trim() : "Conversion failed"; }
15
- function abortError() { const error = new Error("Aborted"); error.name = "AbortError"; return error; }
16
22
  async function runMarkitConversion(task, signal) {
17
23
  if (signal?.aborted)
18
24
  throw abortError();
@@ -22,11 +28,15 @@ async function runMarkitConversion(task, signal) {
22
28
  return await new Promise((resolve, reject) => {
23
29
  const abort = () => reject(abortError());
24
30
  signal.addEventListener("abort", abort, { once: true });
25
- void task(instance).then(resolve, reject).finally(() => signal.removeEventListener("abort", abort));
31
+ void task(instance)
32
+ .then(resolve, reject)
33
+ .finally(() => signal.removeEventListener("abort", abort));
26
34
  });
27
35
  }
28
36
  function finalizeConversion(markdown) {
29
- return typeof markdown === "string" && markdown.length > 0 ? { content: markdown, ok: true } : { content: "", ok: false, error: "Conversion produced no output" };
37
+ return typeof markdown === "string" && markdown.length > 0
38
+ ? { content: markdown, ok: true }
39
+ : { content: "", ok: false, error: "Conversion produced no output" };
30
40
  }
31
41
  export async function convertFileWithMarkit(filePath, signal) {
32
42
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"markit.js","sourceRoot":"","sources":["../../src/utils/markit.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Markit, StreamInfo } from \"markit-ai\";\n\nexport interface MarkitConversionResult { content: string; ok: boolean; error?: string }\n\nlet markit: () => Markit | Promise<Markit> = async () => {\n\tconst promise = import(\"markit-ai\").then(({ Markit }) => {\n\t\tconst instance = new Markit();\n\t\tmarkit = () => instance;\n\t\treturn instance;\n\t});\n\tmarkit = () => promise;\n\treturn promise;\n};\n\nfunction normalizeExtension(extension: string): string {\n\tconst trimmed = extension.trim().toLowerCase();\n\treturn trimmed ? trimmed.startsWith(\".\") ? trimmed : `.${trimmed}` : \".bin\";\n}\n\nfunction normalizeError(error: unknown): string { return error instanceof Error && error.message.trim().length > 0 ? error.message.trim() : \"Conversion failed\"; }\n\nfunction abortError(): Error { const error = new Error(\"Aborted\"); error.name = \"AbortError\"; return error; }\n\nasync function runMarkitConversion<T>(task: (markit: Markit) => Promise<T>, signal?: AbortSignal): Promise<T> {\n\tif (signal?.aborted) throw abortError();\n\tconst instance = await markit();\n\tif (!signal) return task(instance);\n\treturn await new Promise<T>((resolve, reject) => {\n\t\tconst abort = () => reject(abortError());\n\t\tsignal.addEventListener(\"abort\", abort, { once: true });\n\t\tvoid task(instance).then(resolve, reject).finally(() => signal.removeEventListener(\"abort\", abort));\n\t});\n}\n\nfunction finalizeConversion(markdown?: string): MarkitConversionResult {\n\treturn typeof markdown === \"string\" && markdown.length > 0 ? { content: markdown, ok: true } : { content: \"\", ok: false, error: \"Conversion produced no output\" };\n}\n\nexport async function convertFileWithMarkit(filePath: string, signal?: AbortSignal): Promise<MarkitConversionResult> {\n\ttry { return finalizeConversion((await runMarkitConversion((instance) => instance.convertFile(filePath), signal)).markdown); }\n\tcatch (error) { if (error instanceof Error && error.name === \"AbortError\") throw error; return { content: \"\", ok: false, error: normalizeError(error) }; }\n}\n\nexport async function convertBufferWithMarkit(buffer: Uint8Array, extension: string, signal?: AbortSignal): Promise<MarkitConversionResult> {\n\tconst normalizedExtension = normalizeExtension(extension);\n\tconst streamInfo: StreamInfo = { extension: normalizedExtension, filename: `input${normalizedExtension}` };\n\ttry { return finalizeConversion((await runMarkitConversion((instance) => instance.convert(Buffer.from(buffer), streamInfo), signal)).markdown); }\n\tcatch (error) { if (error instanceof Error && error.name === \"AbortError\") throw error; return { content: \"\", ok: false, error: normalizeError(error) }; }\n}\n"]}
1
+ {"version":3,"file":"markit.js","sourceRoot":"","sources":["../../src/utils/markit.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Markit, StreamInfo } from \"markit-ai\";\n\nexport interface MarkitConversionResult {\n\tcontent: string;\n\tok: boolean;\n\terror?: string;\n}\n\nlet markit: () => Markit | Promise<Markit> = async () => {\n\tconst promise = import(\"markit-ai\").then(({ Markit }) => {\n\t\tconst instance = new Markit();\n\t\tmarkit = () => instance;\n\t\treturn instance;\n\t});\n\tmarkit = () => promise;\n\treturn promise;\n};\n\nfunction normalizeExtension(extension: string): string {\n\tconst trimmed = extension.trim().toLowerCase();\n\treturn trimmed ? (trimmed.startsWith(\".\") ? trimmed : `.${trimmed}`) : \".bin\";\n}\n\nfunction normalizeError(error: unknown): string {\n\treturn error instanceof Error && error.message.trim().length > 0 ? error.message.trim() : \"Conversion failed\";\n}\n\nfunction abortError(): Error {\n\tconst error = new Error(\"Aborted\");\n\terror.name = \"AbortError\";\n\treturn error;\n}\n\nasync function runMarkitConversion<T>(task: (markit: Markit) => Promise<T>, signal?: AbortSignal): Promise<T> {\n\tif (signal?.aborted) throw abortError();\n\tconst instance = await markit();\n\tif (!signal) return task(instance);\n\treturn await new Promise<T>((resolve, reject) => {\n\t\tconst abort = () => reject(abortError());\n\t\tsignal.addEventListener(\"abort\", abort, { once: true });\n\t\tvoid task(instance)\n\t\t\t.then(resolve, reject)\n\t\t\t.finally(() => signal.removeEventListener(\"abort\", abort));\n\t});\n}\n\nfunction finalizeConversion(markdown?: string): MarkitConversionResult {\n\treturn typeof markdown === \"string\" && markdown.length > 0\n\t\t? { content: markdown, ok: true }\n\t\t: { content: \"\", ok: false, error: \"Conversion produced no output\" };\n}\n\nexport async function convertFileWithMarkit(filePath: string, signal?: AbortSignal): Promise<MarkitConversionResult> {\n\ttry {\n\t\treturn finalizeConversion(\n\t\t\t(await runMarkitConversion((instance) => instance.convertFile(filePath), signal)).markdown,\n\t\t);\n\t} catch (error) {\n\t\tif (error instanceof Error && error.name === \"AbortError\") throw error;\n\t\treturn { content: \"\", ok: false, error: normalizeError(error) };\n\t}\n}\n\nexport async function convertBufferWithMarkit(\n\tbuffer: Uint8Array,\n\textension: string,\n\tsignal?: AbortSignal,\n): Promise<MarkitConversionResult> {\n\tconst normalizedExtension = normalizeExtension(extension);\n\tconst streamInfo: StreamInfo = { extension: normalizedExtension, filename: `input${normalizedExtension}` };\n\ttry {\n\t\treturn finalizeConversion(\n\t\t\t(await runMarkitConversion((instance) => instance.convert(Buffer.from(buffer), streamInfo), signal)).markdown,\n\t\t);\n\t} catch (error) {\n\t\tif (error instanceof Error && error.name === \"AbortError\") throw error;\n\t\treturn { content: \"\", ok: false, error: normalizeError(error) };\n\t}\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import { delimiter } from "node:path";
3
- import { spawn, spawnSync } from "child_process";
4
3
  import { Worker } from "node:worker_threads";
4
+ import { spawn, spawnSync } from "child_process";
5
5
  import { getBinDir } from "../config.js";
6
6
  function isLegacyWslBashPath(path) {
7
7
  const normalized = path.replace(/\//g, "\\").toLowerCase();
@@ -147,7 +147,7 @@ export function sanitizeBinaryOutput(str) {
147
147
  .join("");
148
148
  }
149
149
  let detachedChildGuardian;
150
- const PARENT_GUARDIAN_SOURCE = String.raw `
150
+ const PARENT_GUARDIAN_SOURCE = `
151
151
  const { parentPort, workerData } = require("node:worker_threads");
152
152
  const { spawn } = require("node:child_process");
153
153
  const { existsSync } = require("node:fs");
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from \"node:fs\";\nimport { delimiter } from \"node:path\";\nimport { spawn, spawnSync } from \"child_process\";\nimport { Worker } from \"node:worker_threads\";\nimport { getBinDir } from \"../config.ts\";\n\nexport interface ShellConfig {\n\tshell: string;\n\targs: string[];\n\tcommandTransport?: \"argv\" | \"stdin\";\n}\n\nfunction isLegacyWslBashPath(path: string): boolean {\n\tconst normalized = path.replace(/\\//g, \"\\\\\").toLowerCase();\n\treturn /^[a-z]:\\\\windows\\\\(?:system32|sysnative)\\\\bash\\.exe$/.test(normalized);\n}\n\nfunction getBashShellConfig(shell: string): ShellConfig {\n\treturn isLegacyWslBashPath(shell) ? { shell, args: [\"-s\"], commandTransport: \"stdin\" } : { shell, args: [\"-c\"] };\n}\n\n/**\n * Find bash executable on PATH (cross-platform)\n */\nfunction findBashOnPath(): string | null {\n\tif (process.platform === \"win32\") {\n\t\t// Windows: Use 'where' and verify file exists (where can return non-existent paths)\n\t\ttry {\n\t\t\tconst result = spawnSync(\"where\", [\"bash.exe\"], { encoding: \"utf-8\", timeout: 5000 });\n\t\t\tif (result.status === 0 && result.stdout) {\n\t\t\t\tconst firstMatch = result.stdout.trim().split(/\\r?\\n/)[0];\n\t\t\t\tif (firstMatch && existsSync(firstMatch)) {\n\t\t\t\t\treturn firstMatch;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore errors\n\t\t}\n\t\treturn null;\n\t}\n\n\t// Unix: Use 'which' and trust its output (handles Termux and special filesystems)\n\ttry {\n\t\tconst result = spawnSync(\"which\", [\"bash\"], { encoding: \"utf-8\", timeout: 5000 });\n\t\tif (result.status === 0 && result.stdout) {\n\t\t\tconst firstMatch = result.stdout.trim().split(/\\r?\\n/)[0];\n\t\t\tif (firstMatch) {\n\t\t\t\treturn firstMatch;\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Ignore errors\n\t}\n\treturn null;\n}\n\n/**\n * Resolve shell configuration based on platform and an optional explicit shell path.\n * Resolution order:\n * 1. User-specified shellPath\n * 2. On Windows: Git Bash in known locations, then bash on PATH\n * 3. On Unix: /bin/bash, then bash on PATH, then fallback to sh\n */\nexport function getShellConfig(customShellPath?: string): ShellConfig {\n\t// 1. Check user-specified shell path\n\tif (customShellPath) {\n\t\tif (existsSync(customShellPath)) {\n\t\t\treturn getBashShellConfig(customShellPath);\n\t\t}\n\t\tthrow new Error(`Custom shell path not found: ${customShellPath}`);\n\t}\n\n\tif (process.platform === \"win32\") {\n\t\t// 2. Try Git Bash in known locations\n\t\tconst paths: string[] = [];\n\t\tconst programFiles = process.env.ProgramFiles;\n\t\tif (programFiles) {\n\t\t\tpaths.push(`${programFiles}\\\\Git\\\\bin\\\\bash.exe`);\n\t\t}\n\t\tconst programFilesX86 = process.env[\"ProgramFiles(x86)\"];\n\t\tif (programFilesX86) {\n\t\t\tpaths.push(`${programFilesX86}\\\\Git\\\\bin\\\\bash.exe`);\n\t\t}\n\n\t\tfor (const path of paths) {\n\t\t\tif (existsSync(path)) {\n\t\t\t\treturn getBashShellConfig(path);\n\t\t\t}\n\t\t}\n\n\t\t// 3. Fallback: search bash.exe on PATH (Cygwin, MSYS2, WSL, etc.)\n\t\tconst bashOnPath = findBashOnPath();\n\t\tif (bashOnPath) {\n\t\t\treturn getBashShellConfig(bashOnPath);\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`No bash shell found. Options:\\n` +\n\t\t\t\t` 1. Install Git for Windows: https://git-scm.com/download/win\\n` +\n\t\t\t\t` 2. Add your bash to PATH (Cygwin, MSYS2, etc.)\\n` +\n\t\t\t\t\" 3. Set shellPath in settings.json\\n\\n\" +\n\t\t\t\t`Searched Git Bash in:\\n${paths.map((p) => ` ${p}`).join(\"\\n\")}`,\n\t\t);\n\t}\n\n\t// Unix: try /bin/bash, then bash on PATH, then fallback to sh\n\tif (existsSync(\"/bin/bash\")) {\n\t\treturn getBashShellConfig(\"/bin/bash\");\n\t}\n\n\tconst bashOnPath = findBashOnPath();\n\tif (bashOnPath) {\n\t\treturn getBashShellConfig(bashOnPath);\n\t}\n\n\treturn { shell: \"sh\", args: [\"-c\"] };\n}\n\nexport function getShellEnv(): NodeJS.ProcessEnv {\n\tconst binDir = getBinDir();\n\tconst pathKey = Object.keys(process.env).find((key) => key.toLowerCase() === \"path\") ?? \"PATH\";\n\tconst currentPath = process.env[pathKey] ?? \"\";\n\tconst pathEntries = currentPath.split(delimiter).filter(Boolean);\n\tconst hasBinDir = pathEntries.includes(binDir);\n\tconst updatedPath = hasBinDir ? currentPath : [binDir, currentPath].filter(Boolean).join(delimiter);\n\n\treturn {\n\t\t...process.env,\n\t\t[pathKey]: updatedPath,\n\t};\n}\n\n/**\n * Sanitize binary output for display/storage.\n * Removes characters that crash string-width or cause display issues:\n * - Control characters (except tab, newline, carriage return)\n * - Lone surrogates\n * - Unicode Format characters (crash string-width due to a bug)\n * - Characters with undefined code points\n */\nexport function sanitizeBinaryOutput(str: string): string {\n\t// Use Array.from to properly iterate over code points (not code units)\n\t// This handles surrogate pairs correctly and catches edge cases where\n\t// codePointAt() might return undefined\n\treturn Array.from(str)\n\t\t.filter((char) => {\n\t\t\t// Filter out characters that cause string-width to crash\n\t\t\t// This includes:\n\t\t\t// - Unicode format characters\n\t\t\t// - Lone surrogates (already filtered by Array.from)\n\t\t\t// - Control chars except \\t \\n \\r\n\t\t\t// - Characters with undefined code points\n\n\t\t\tconst code = char.codePointAt(0);\n\n\t\t\t// Skip if code point is undefined (edge case with invalid strings)\n\t\t\tif (code === undefined) return false;\n\n\t\t\t// Allow tab, newline, carriage return\n\t\t\tif (code === 0x09 || code === 0x0a || code === 0x0d) return true;\n\n\t\t\t// Filter out control characters (0x00-0x1F, except 0x09, 0x0a, 0x0x0d)\n\t\t\tif (code <= 0x1f) return false;\n\n\t\t\t// Filter out Unicode format characters\n\t\t\tif (code >= 0xfff9 && code <= 0xfffb) return false;\n\n\t\t\treturn true;\n\t\t})\n\t\t.join(\"\");\n}\n\ninterface DetachedChildGuardian {\n\tpostMessage(message: { action: \"track\" | \"untrack\"; pid: number }): void;\n\tterminate(): Promise<number>;\n\tunref(): void;\n}\n\nlet detachedChildGuardian: DetachedChildGuardian | undefined;\n\nconst PARENT_GUARDIAN_SOURCE = String.raw`\nconst { parentPort, workerData } = require(\"node:worker_threads\");\nconst { spawn } = require(\"node:child_process\");\nconst { existsSync } = require(\"node:fs\");\nconst tracked = new Set();\nparentPort.on(\"message\", ({ action, pid }) => {\n if (action === \"track\") tracked.add(pid);\n else tracked.delete(pid);\n});\nfunction killTree(pid) {\n if (process.platform === \"win32\") {\n try { spawn(\"taskkill\", [\"/F\", \"/T\", \"/PID\", String(pid)], { stdio: \"ignore\", detached: true }); } catch {}\n return;\n }\n try { process.kill(-pid, \"SIGKILL\"); }\n catch { try { process.kill(pid, \"SIGKILL\"); } catch {} }\n}\nconst timer = setInterval(() => {\n let parentAlive = true;\n try { process.kill(workerData.parentPid, 0); } catch { parentAlive = false; }\n if (parentAlive && (!workerData.stopFile || !existsSync(workerData.stopFile))) return;\n for (const pid of tracked) killTree(pid);\n killTree(process.pid);\n}, 50);\ntimer.unref?.();\n`;\n\nexport function startParentProcessGuardian(parentPid: number, stopFile?: string): () => Promise<void> {\n\tif (detachedChildGuardian) return async () => {};\n\tconst guardian = new Worker(PARENT_GUARDIAN_SOURCE, { eval: true, workerData: { parentPid, stopFile } });\n\tdetachedChildGuardian = guardian;\n\tfor (const pid of trackedDetachedChildPids) guardian.postMessage({ action: \"track\", pid });\n\tguardian.unref();\n\treturn async () => {\n\t\tif (detachedChildGuardian !== guardian) return;\n\t\tdetachedChildGuardian = undefined;\n\t\tawait guardian.terminate();\n\t};\n}\n\n/**\n * Detached child processes must be tracked so they can be killed on parent\n * shutdown signals (SIGHUP/SIGTERM).\n */\nconst trackedDetachedChildPids = new Set<number>();\n\nexport function trackDetachedChildPid(pid: number): void {\n\ttrackedDetachedChildPids.add(pid);\n\tdetachedChildGuardian?.postMessage({ action: \"track\", pid });\n}\n\nexport function untrackDetachedChildPid(pid: number): void {\n\ttrackedDetachedChildPids.delete(pid);\n\tdetachedChildGuardian?.postMessage({ action: \"untrack\", pid });\n}\n\nexport function killTrackedDetachedChildren(): void {\n\tfor (const pid of trackedDetachedChildPids) {\n\t\tkillProcessTree(pid);\n\t\tdetachedChildGuardian?.postMessage({ action: \"untrack\", pid });\n\t}\n\ttrackedDetachedChildPids.clear();\n}\n\n/**\n * Kill a process and all its children (cross-platform)\n */\nexport function killProcessTree(pid: number): void {\n\tif (process.platform === \"win32\") {\n\t\t// Use taskkill on Windows to kill process tree\n\t\ttry {\n\t\t\tspawn(\"taskkill\", [\"/F\", \"/T\", \"/PID\", String(pid)], {\n\t\t\t\tstdio: \"ignore\",\n\t\t\t\tdetached: true,\n\t\t\t});\n\t\t} catch {\n\t\t\t// Ignore errors if taskkill fails\n\t\t}\n\t} else {\n\t\t// Use SIGKILL on Unix/Linux/Mac\n\t\ttry {\n\t\t\tprocess.kill(-pid, \"SIGKILL\");\n\t\t} catch {\n\t\t\t// Fallback to killing just the child if process group kill fails\n\t\t\ttry {\n\t\t\t\tprocess.kill(pid, \"SIGKILL\");\n\t\t\t} catch {\n\t\t\t\t// Process already dead\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from \"node:fs\";\nimport { delimiter } from \"node:path\";\nimport { Worker } from \"node:worker_threads\";\nimport { spawn, spawnSync } from \"child_process\";\nimport { getBinDir } from \"../config.ts\";\n\nexport interface ShellConfig {\n\tshell: string;\n\targs: string[];\n\tcommandTransport?: \"argv\" | \"stdin\";\n}\n\nfunction isLegacyWslBashPath(path: string): boolean {\n\tconst normalized = path.replace(/\\//g, \"\\\\\").toLowerCase();\n\treturn /^[a-z]:\\\\windows\\\\(?:system32|sysnative)\\\\bash\\.exe$/.test(normalized);\n}\n\nfunction getBashShellConfig(shell: string): ShellConfig {\n\treturn isLegacyWslBashPath(shell) ? { shell, args: [\"-s\"], commandTransport: \"stdin\" } : { shell, args: [\"-c\"] };\n}\n\n/**\n * Find bash executable on PATH (cross-platform)\n */\nfunction findBashOnPath(): string | null {\n\tif (process.platform === \"win32\") {\n\t\t// Windows: Use 'where' and verify file exists (where can return non-existent paths)\n\t\ttry {\n\t\t\tconst result = spawnSync(\"where\", [\"bash.exe\"], { encoding: \"utf-8\", timeout: 5000 });\n\t\t\tif (result.status === 0 && result.stdout) {\n\t\t\t\tconst firstMatch = result.stdout.trim().split(/\\r?\\n/)[0];\n\t\t\t\tif (firstMatch && existsSync(firstMatch)) {\n\t\t\t\t\treturn firstMatch;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore errors\n\t\t}\n\t\treturn null;\n\t}\n\n\t// Unix: Use 'which' and trust its output (handles Termux and special filesystems)\n\ttry {\n\t\tconst result = spawnSync(\"which\", [\"bash\"], { encoding: \"utf-8\", timeout: 5000 });\n\t\tif (result.status === 0 && result.stdout) {\n\t\t\tconst firstMatch = result.stdout.trim().split(/\\r?\\n/)[0];\n\t\t\tif (firstMatch) {\n\t\t\t\treturn firstMatch;\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Ignore errors\n\t}\n\treturn null;\n}\n\n/**\n * Resolve shell configuration based on platform and an optional explicit shell path.\n * Resolution order:\n * 1. User-specified shellPath\n * 2. On Windows: Git Bash in known locations, then bash on PATH\n * 3. On Unix: /bin/bash, then bash on PATH, then fallback to sh\n */\nexport function getShellConfig(customShellPath?: string): ShellConfig {\n\t// 1. Check user-specified shell path\n\tif (customShellPath) {\n\t\tif (existsSync(customShellPath)) {\n\t\t\treturn getBashShellConfig(customShellPath);\n\t\t}\n\t\tthrow new Error(`Custom shell path not found: ${customShellPath}`);\n\t}\n\n\tif (process.platform === \"win32\") {\n\t\t// 2. Try Git Bash in known locations\n\t\tconst paths: string[] = [];\n\t\tconst programFiles = process.env.ProgramFiles;\n\t\tif (programFiles) {\n\t\t\tpaths.push(`${programFiles}\\\\Git\\\\bin\\\\bash.exe`);\n\t\t}\n\t\tconst programFilesX86 = process.env[\"ProgramFiles(x86)\"];\n\t\tif (programFilesX86) {\n\t\t\tpaths.push(`${programFilesX86}\\\\Git\\\\bin\\\\bash.exe`);\n\t\t}\n\n\t\tfor (const path of paths) {\n\t\t\tif (existsSync(path)) {\n\t\t\t\treturn getBashShellConfig(path);\n\t\t\t}\n\t\t}\n\n\t\t// 3. Fallback: search bash.exe on PATH (Cygwin, MSYS2, WSL, etc.)\n\t\tconst bashOnPath = findBashOnPath();\n\t\tif (bashOnPath) {\n\t\t\treturn getBashShellConfig(bashOnPath);\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`No bash shell found. Options:\\n` +\n\t\t\t\t` 1. Install Git for Windows: https://git-scm.com/download/win\\n` +\n\t\t\t\t` 2. Add your bash to PATH (Cygwin, MSYS2, etc.)\\n` +\n\t\t\t\t\" 3. Set shellPath in settings.json\\n\\n\" +\n\t\t\t\t`Searched Git Bash in:\\n${paths.map((p) => ` ${p}`).join(\"\\n\")}`,\n\t\t);\n\t}\n\n\t// Unix: try /bin/bash, then bash on PATH, then fallback to sh\n\tif (existsSync(\"/bin/bash\")) {\n\t\treturn getBashShellConfig(\"/bin/bash\");\n\t}\n\n\tconst bashOnPath = findBashOnPath();\n\tif (bashOnPath) {\n\t\treturn getBashShellConfig(bashOnPath);\n\t}\n\n\treturn { shell: \"sh\", args: [\"-c\"] };\n}\n\nexport function getShellEnv(): NodeJS.ProcessEnv {\n\tconst binDir = getBinDir();\n\tconst pathKey = Object.keys(process.env).find((key) => key.toLowerCase() === \"path\") ?? \"PATH\";\n\tconst currentPath = process.env[pathKey] ?? \"\";\n\tconst pathEntries = currentPath.split(delimiter).filter(Boolean);\n\tconst hasBinDir = pathEntries.includes(binDir);\n\tconst updatedPath = hasBinDir ? currentPath : [binDir, currentPath].filter(Boolean).join(delimiter);\n\n\treturn {\n\t\t...process.env,\n\t\t[pathKey]: updatedPath,\n\t};\n}\n\n/**\n * Sanitize binary output for display/storage.\n * Removes characters that crash string-width or cause display issues:\n * - Control characters (except tab, newline, carriage return)\n * - Lone surrogates\n * - Unicode Format characters (crash string-width due to a bug)\n * - Characters with undefined code points\n */\nexport function sanitizeBinaryOutput(str: string): string {\n\t// Use Array.from to properly iterate over code points (not code units)\n\t// This handles surrogate pairs correctly and catches edge cases where\n\t// codePointAt() might return undefined\n\treturn Array.from(str)\n\t\t.filter((char) => {\n\t\t\t// Filter out characters that cause string-width to crash\n\t\t\t// This includes:\n\t\t\t// - Unicode format characters\n\t\t\t// - Lone surrogates (already filtered by Array.from)\n\t\t\t// - Control chars except \\t \\n \\r\n\t\t\t// - Characters with undefined code points\n\n\t\t\tconst code = char.codePointAt(0);\n\n\t\t\t// Skip if code point is undefined (edge case with invalid strings)\n\t\t\tif (code === undefined) return false;\n\n\t\t\t// Allow tab, newline, carriage return\n\t\t\tif (code === 0x09 || code === 0x0a || code === 0x0d) return true;\n\n\t\t\t// Filter out control characters (0x00-0x1F, except 0x09, 0x0a, 0x0x0d)\n\t\t\tif (code <= 0x1f) return false;\n\n\t\t\t// Filter out Unicode format characters\n\t\t\tif (code >= 0xfff9 && code <= 0xfffb) return false;\n\n\t\t\treturn true;\n\t\t})\n\t\t.join(\"\");\n}\n\ninterface DetachedChildGuardian {\n\tpostMessage(message: { action: \"track\" | \"untrack\"; pid: number }): void;\n\tterminate(): Promise<number>;\n\tunref(): void;\n}\n\nlet detachedChildGuardian: DetachedChildGuardian | undefined;\n\nconst PARENT_GUARDIAN_SOURCE = `\nconst { parentPort, workerData } = require(\"node:worker_threads\");\nconst { spawn } = require(\"node:child_process\");\nconst { existsSync } = require(\"node:fs\");\nconst tracked = new Set();\nparentPort.on(\"message\", ({ action, pid }) => {\n if (action === \"track\") tracked.add(pid);\n else tracked.delete(pid);\n});\nfunction killTree(pid) {\n if (process.platform === \"win32\") {\n try { spawn(\"taskkill\", [\"/F\", \"/T\", \"/PID\", String(pid)], { stdio: \"ignore\", detached: true }); } catch {}\n return;\n }\n try { process.kill(-pid, \"SIGKILL\"); }\n catch { try { process.kill(pid, \"SIGKILL\"); } catch {} }\n}\nconst timer = setInterval(() => {\n let parentAlive = true;\n try { process.kill(workerData.parentPid, 0); } catch { parentAlive = false; }\n if (parentAlive && (!workerData.stopFile || !existsSync(workerData.stopFile))) return;\n for (const pid of tracked) killTree(pid);\n killTree(process.pid);\n}, 50);\ntimer.unref?.();\n`;\n\nexport function startParentProcessGuardian(parentPid: number, stopFile?: string): () => Promise<void> {\n\tif (detachedChildGuardian) return async () => {};\n\tconst guardian = new Worker(PARENT_GUARDIAN_SOURCE, { eval: true, workerData: { parentPid, stopFile } });\n\tdetachedChildGuardian = guardian;\n\tfor (const pid of trackedDetachedChildPids) guardian.postMessage({ action: \"track\", pid });\n\tguardian.unref();\n\treturn async () => {\n\t\tif (detachedChildGuardian !== guardian) return;\n\t\tdetachedChildGuardian = undefined;\n\t\tawait guardian.terminate();\n\t};\n}\n\n/**\n * Detached child processes must be tracked so they can be killed on parent\n * shutdown signals (SIGHUP/SIGTERM).\n */\nconst trackedDetachedChildPids = new Set<number>();\n\nexport function trackDetachedChildPid(pid: number): void {\n\ttrackedDetachedChildPids.add(pid);\n\tdetachedChildGuardian?.postMessage({ action: \"track\", pid });\n}\n\nexport function untrackDetachedChildPid(pid: number): void {\n\ttrackedDetachedChildPids.delete(pid);\n\tdetachedChildGuardian?.postMessage({ action: \"untrack\", pid });\n}\n\nexport function killTrackedDetachedChildren(): void {\n\tfor (const pid of trackedDetachedChildPids) {\n\t\tkillProcessTree(pid);\n\t\tdetachedChildGuardian?.postMessage({ action: \"untrack\", pid });\n\t}\n\ttrackedDetachedChildPids.clear();\n}\n\n/**\n * Kill a process and all its children (cross-platform)\n */\nexport function killProcessTree(pid: number): void {\n\tif (process.platform === \"win32\") {\n\t\t// Use taskkill on Windows to kill process tree\n\t\ttry {\n\t\t\tspawn(\"taskkill\", [\"/F\", \"/T\", \"/PID\", String(pid)], {\n\t\t\t\tstdio: \"ignore\",\n\t\t\t\tdetached: true,\n\t\t\t});\n\t\t} catch {\n\t\t\t// Ignore errors if taskkill fails\n\t\t}\n\t} else {\n\t\t// Use SIGKILL on Unix/Linux/Mac\n\t\ttry {\n\t\t\tprocess.kill(-pid, \"SIGKILL\");\n\t\t} catch {\n\t\t\t// Fallback to killing just the child if process group kill fails\n\t\t\ttry {\n\t\t\t\tprocess.kill(pid, \"SIGKILL\");\n\t\t\t} catch {\n\t\t\t\t// Process already dead\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"split-launcher.d.ts","sourceRoot":"","sources":["../../src/utils/split-launcher.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAKhD;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAE,MAAM,EAAE,GAAG,MAAM,CAO/F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAOvF"}
1
+ {"version":3,"file":"split-launcher.d.ts","sourceRoot":"","sources":["../../src/utils/split-launcher.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAE,MAAM,EAAE,GAAG,MAAM,CAO/F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAOvF"}
@@ -23,8 +23,7 @@ import { fileURLToPath } from "node:url";
23
23
  * scattered ad-hoc guards.
24
24
  */
25
25
  export function isSplitLauncherRuntime() {
26
- return (process.env.ATOMIC_CODING_AGENT === "true" &&
27
- /(?:^|[\\/])atomic(?:\.exe)?$/i.test(process.execPath));
26
+ return process.env.ATOMIC_CODING_AGENT === "true" && /(?:^|[\\/])atomic(?:\.exe)?$/i.test(process.execPath);
28
27
  }
29
28
  /** Directory containing the launcher executable and its sidecar bundle/assets. */
30
29
  export function splitLauncherDir() {
@@ -1 +1 @@
1
- {"version":3,"file":"split-launcher.js","sourceRoot":"","sources":["../../src/utils/split-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,sBAAsB;IACrC,OAAO,CACN,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,MAAM;QAC1C,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CACtD,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,gBAAgB;IAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,GAAG,oBAA8B;IACtF,IAAI,CAAC;QACJ,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,sBAAsB,EAAE;YAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,GAAG,oBAAoB,CAAC,CAAC;QACvF,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,gBAAwB;IAC9E,IAAI,CAAC;QACJ,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,sBAAsB,EAAE;YAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAChF,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC","sourcesContent":["import { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\n/**\n * Split-launcher / foreign-build `import.meta.url` handling.\n *\n * Atomic's release binaries use a split launcher: a tiny compiled `atomic` /\n * `atomic.exe` executable sets `ATOMIC_CODING_AGENT=true` and then dynamically\n * imports the bundled sidecar `app.js` (plus raw-TS built-in extensions) from\n * disk next to the executable.\n *\n * Unlike pi's single monolithic `bun --compile` binary — where `import.meta.url`\n * is always a `$bunfs://` virtual-FS URL — the split sidecar bundle carries the\n * build machine's source path baked in at bundle time (e.g. a macOS\n * `file:///Users/.../app.js` URL). On Windows, `fileURLToPath()` rejects that\n * URL with `ERR_INVALID_FILE_URL_PATH` (\"File URL path must be an absolute\n * path\") because `/Users/...` has no drive letter, so every site that decodes\n * `import.meta.url` to a filesystem path must tolerate it.\n *\n * These helpers centralize that tolerance: decode normally, and only when the\n * decode fails under the split launcher fall back to a path resolved relative to\n * the launcher executable (where the sidecar bundle and its assets actually\n * live). This mirrors pi's convention of a single detection point rather than\n * scattered ad-hoc guards.\n */\nexport function isSplitLauncherRuntime(): boolean {\n\treturn (\n\t\tprocess.env.ATOMIC_CODING_AGENT === \"true\" &&\n\t\t/(?:^|[\\\\/])atomic(?:\\.exe)?$/i.test(process.execPath)\n\t);\n}\n\n/** Directory containing the launcher executable and its sidecar bundle/assets. */\nexport function splitLauncherDir(): string {\n\treturn dirname(process.execPath);\n}\n\n/**\n * Resolve a module's directory from its `import.meta.url`, tolerating the\n * split-launcher case where the bundled URL is a foreign-OS build path.\n * `execRelativeSegments` locate the equivalent directory next to the launcher.\n */\nexport function moduleDirFromMetaUrl(metaUrl: string, ...execRelativeSegments: string[]): string {\n\ttry {\n\t\treturn dirname(fileURLToPath(metaUrl));\n\t} catch (error) {\n\t\tif (isSplitLauncherRuntime()) return join(splitLauncherDir(), ...execRelativeSegments);\n\t\tthrow error;\n\t}\n}\n\n/**\n * Resolve a module's filename from its `import.meta.url`, tolerating the\n * split-launcher case. `execRelativeFile` locates the equivalent file next to\n * the launcher (used as a stable resolution base, e.g. for `createRequire`).\n */\nexport function moduleFileFromMetaUrl(metaUrl: string, execRelativeFile: string): string {\n\ttry {\n\t\treturn fileURLToPath(metaUrl);\n\t} catch (error) {\n\t\tif (isSplitLauncherRuntime()) return join(splitLauncherDir(), execRelativeFile);\n\t\tthrow error;\n\t}\n}\n"]}
1
+ {"version":3,"file":"split-launcher.js","sourceRoot":"","sources":["../../src/utils/split-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,sBAAsB;IACrC,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,MAAM,IAAI,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7G,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,gBAAgB;IAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,GAAG,oBAA8B;IACtF,IAAI,CAAC;QACJ,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,sBAAsB,EAAE;YAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,GAAG,oBAAoB,CAAC,CAAC;QACvF,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,gBAAwB;IAC9E,IAAI,CAAC;QACJ,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,sBAAsB,EAAE;YAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAChF,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC","sourcesContent":["import { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\n/**\n * Split-launcher / foreign-build `import.meta.url` handling.\n *\n * Atomic's release binaries use a split launcher: a tiny compiled `atomic` /\n * `atomic.exe` executable sets `ATOMIC_CODING_AGENT=true` and then dynamically\n * imports the bundled sidecar `app.js` (plus raw-TS built-in extensions) from\n * disk next to the executable.\n *\n * Unlike pi's single monolithic `bun --compile` binary — where `import.meta.url`\n * is always a `$bunfs://` virtual-FS URL — the split sidecar bundle carries the\n * build machine's source path baked in at bundle time (e.g. a macOS\n * `file:///Users/.../app.js` URL). On Windows, `fileURLToPath()` rejects that\n * URL with `ERR_INVALID_FILE_URL_PATH` (\"File URL path must be an absolute\n * path\") because `/Users/...` has no drive letter, so every site that decodes\n * `import.meta.url` to a filesystem path must tolerate it.\n *\n * These helpers centralize that tolerance: decode normally, and only when the\n * decode fails under the split launcher fall back to a path resolved relative to\n * the launcher executable (where the sidecar bundle and its assets actually\n * live). This mirrors pi's convention of a single detection point rather than\n * scattered ad-hoc guards.\n */\nexport function isSplitLauncherRuntime(): boolean {\n\treturn process.env.ATOMIC_CODING_AGENT === \"true\" && /(?:^|[\\\\/])atomic(?:\\.exe)?$/i.test(process.execPath);\n}\n\n/** Directory containing the launcher executable and its sidecar bundle/assets. */\nexport function splitLauncherDir(): string {\n\treturn dirname(process.execPath);\n}\n\n/**\n * Resolve a module's directory from its `import.meta.url`, tolerating the\n * split-launcher case where the bundled URL is a foreign-OS build path.\n * `execRelativeSegments` locate the equivalent directory next to the launcher.\n */\nexport function moduleDirFromMetaUrl(metaUrl: string, ...execRelativeSegments: string[]): string {\n\ttry {\n\t\treturn dirname(fileURLToPath(metaUrl));\n\t} catch (error) {\n\t\tif (isSplitLauncherRuntime()) return join(splitLauncherDir(), ...execRelativeSegments);\n\t\tthrow error;\n\t}\n}\n\n/**\n * Resolve a module's filename from its `import.meta.url`, tolerating the\n * split-launcher case. `execRelativeFile` locates the equivalent file next to\n * the launcher (used as a stable resolution base, e.g. for `createRequire`).\n */\nexport function moduleFileFromMetaUrl(metaUrl: string, execRelativeFile: string): string {\n\ttry {\n\t\treturn fileURLToPath(metaUrl);\n\t} catch (error) {\n\t\tif (isSplitLauncherRuntime()) return join(splitLauncherDir(), execRelativeFile);\n\t\tthrow error;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tools-manager.d.ts","sourceRoot":"","sources":["../../src/utils/tools-manager.ts"],"names":[],"mappings":"AAkGA,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAsB5D;AAuQD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAuD7B"}
1
+ {"version":3,"file":"tools-manager.d.ts","sourceRoot":"","sources":["../../src/utils/tools-manager.ts"],"names":[],"mappings":"AAmFA,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAmB5D;AA0ND,wBAAsB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA2CxG"}
@@ -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"]}
@@ -2,6 +2,7 @@ export declare function isDevVersion(version: string): boolean;
2
2
  export interface LatestPiRelease {
3
3
  version: string;
4
4
  packageName?: string;
5
+ note?: string;
5
6
  }
6
7
  export declare function comparePackageVersions(leftVersion: string, rightVersion: string): number | undefined;
7
8
  export declare function isNewerPackageVersion(candidateVersion: string, currentVersion: string): boolean;
@@ -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;CACrB;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,CAiBtC;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,CAgB9F"}
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"}