@bastani/atomic 0.9.11-alpha.4 → 0.9.11-alpha.6

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 (1032) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +12 -5
  3. package/dist/builtin/intercom/package.json +2 -2
  4. package/dist/builtin/mcp/CHANGELOG.md +6 -0
  5. package/dist/builtin/mcp/README.md +3 -3
  6. package/dist/builtin/mcp/cli.js +0 -1
  7. package/dist/builtin/mcp/config.ts +0 -2
  8. package/dist/builtin/mcp/package.json +3 -3
  9. package/dist/builtin/mcp/types.ts +0 -1
  10. package/dist/builtin/subagents/CHANGELOG.md +19 -0
  11. package/dist/builtin/subagents/README.md +10 -1
  12. package/dist/builtin/subagents/agents/code-simplifier.md +47 -102
  13. package/dist/builtin/subagents/agents/codebase-analyzer.md +27 -130
  14. package/dist/builtin/subagents/agents/codebase-locator.md +24 -83
  15. package/dist/builtin/subagents/agents/codebase-online-researcher.md +60 -259
  16. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +29 -207
  17. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +28 -150
  18. package/dist/builtin/subagents/agents/codebase-research-locator.md +21 -118
  19. package/dist/builtin/subagents/agents/debugger.md +29 -65
  20. package/dist/builtin/subagents/agents/worker.md +23 -30
  21. package/dist/builtin/subagents/package.json +4 -4
  22. package/dist/builtin/subagents/prompts/gather-context-and-clarify.md +18 -11
  23. package/dist/builtin/subagents/prompts/parallel-cleanup.md +34 -33
  24. package/dist/builtin/subagents/prompts/parallel-context-build.md +22 -36
  25. package/dist/builtin/subagents/prompts/parallel-handoff-plan.md +20 -52
  26. package/dist/builtin/subagents/prompts/parallel-research.md +17 -41
  27. package/dist/builtin/subagents/prompts/parallel-review.md +23 -28
  28. package/dist/builtin/subagents/prompts/review-loop.md +18 -27
  29. package/dist/builtin/subagents/skills/subagent/SKILL.md +6 -6
  30. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +4 -1
  31. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +23 -4
  32. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +2 -0
  33. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +10 -0
  34. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +1 -0
  35. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +2 -0
  36. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +8 -0
  37. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +1 -0
  38. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +6 -0
  39. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +2 -0
  40. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +7 -0
  41. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +1 -0
  42. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +3 -0
  43. package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +1 -2
  44. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +1 -0
  45. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +5 -3
  46. package/dist/builtin/subagents/src/shared/settings.ts +4 -0
  47. package/dist/builtin/web-access/package.json +2 -2
  48. package/dist/builtin/workflows/CHANGELOG.md +53 -0
  49. package/dist/builtin/workflows/README.md +72 -70
  50. package/dist/builtin/workflows/ambient.d.ts +0 -5
  51. package/dist/builtin/workflows/builtin/adversarial-verification-prompts.ts +7 -4
  52. package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +1 -1
  53. package/dist/builtin/workflows/builtin/adversarial-verification.ts +2 -1
  54. package/dist/builtin/workflows/builtin/classify-and-act-prompts.ts +5 -2
  55. package/dist/builtin/workflows/builtin/classify-and-act-runner.ts +5 -7
  56. package/dist/builtin/workflows/builtin/classify-and-act.ts +3 -2
  57. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-prompts.ts +6 -3
  58. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-runner.ts +5 -5
  59. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +3 -2
  60. package/dist/builtin/workflows/builtin/generate-and-filter-prompts.ts +7 -4
  61. package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +6 -3
  62. package/dist/builtin/workflows/builtin/generate-and-filter.ts +3 -2
  63. package/dist/builtin/workflows/builtin/goal-artifacts.ts +1 -1
  64. package/dist/builtin/workflows/builtin/goal-models.ts +39 -39
  65. package/dist/builtin/workflows/builtin/goal-orchestrator-prompts.ts +94 -0
  66. package/dist/builtin/workflows/builtin/goal-prompts.ts +66 -286
  67. package/dist/builtin/workflows/builtin/goal-reducer.ts +1 -1
  68. package/dist/builtin/workflows/builtin/goal-runner.ts +72 -116
  69. package/dist/builtin/workflows/builtin/goal.ts +9 -8
  70. package/dist/builtin/workflows/builtin/index.d.ts +17 -112
  71. package/dist/builtin/workflows/builtin/index.ts +1 -2
  72. package/dist/builtin/workflows/builtin/loop-until-done-prompts.ts +20 -12
  73. package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +3 -0
  74. package/dist/builtin/workflows/builtin/loop-until-done.ts +3 -2
  75. package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +52 -55
  76. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +45 -52
  77. package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +41 -46
  78. package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +16 -21
  79. package/dist/builtin/workflows/builtin/open-claude-design.ts +2 -1
  80. package/dist/builtin/workflows/builtin/ralph-core.ts +61 -57
  81. package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +41 -45
  82. package/dist/builtin/workflows/builtin/ralph-models.ts +33 -43
  83. package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +35 -117
  84. package/dist/builtin/workflows/builtin/ralph-runner.ts +81 -108
  85. package/dist/builtin/workflows/builtin/ralph.ts +2 -1
  86. package/dist/builtin/workflows/builtin/shared-prompts.ts +111 -80
  87. package/dist/builtin/workflows/builtin/steering-context.ts +51 -0
  88. package/dist/builtin/workflows/builtin/tournament-prompts.ts +21 -12
  89. package/dist/builtin/workflows/builtin/tournament-runner.ts +3 -0
  90. package/dist/builtin/workflows/builtin/tournament.ts +3 -2
  91. package/dist/builtin/workflows/package.json +2 -2
  92. package/dist/builtin/workflows/skills/create-spec/SKILL.md +1 -1
  93. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +6 -8
  94. package/dist/builtin/workflows/skills/impeccable/reference/live.md +3 -4
  95. package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +2 -20
  96. package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +4 -42
  97. package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +3 -3
  98. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +2 -3
  99. package/dist/builtin/workflows/skills/impeccable/scripts/live-inject.mjs +0 -1
  100. package/dist/builtin/workflows/skills/impeccable/scripts/live-poll.mjs +2 -2
  101. package/dist/builtin/workflows/skills/impeccable/scripts/pin.mjs +4 -4
  102. package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +57 -252
  103. package/dist/builtin/workflows/skills/prompt-engineer/references/advanced_patterns.md +70 -226
  104. package/dist/builtin/workflows/skills/prompt-engineer/references/core_prompting.md +64 -103
  105. package/dist/builtin/workflows/skills/prompt-engineer/references/quality_improvement.md +81 -155
  106. package/dist/builtin/workflows/src/authoring.d.ts +5 -1
  107. package/dist/builtin/workflows/src/durable/backend.ts +68 -9
  108. package/dist/builtin/workflows/src/durable/boundary-lifecycle.ts +148 -0
  109. package/dist/builtin/workflows/src/durable/boundary-topology.ts +420 -0
  110. package/dist/builtin/workflows/src/durable/child-invocation.ts +14 -0
  111. package/dist/builtin/workflows/src/durable/child-primitive.ts +74 -44
  112. package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +250 -0
  113. package/dist/builtin/workflows/src/durable/completed-catalog.ts +205 -131
  114. package/dist/builtin/workflows/src/durable/completed-inspection.ts +8 -2
  115. package/dist/builtin/workflows/src/durable/completed-subtree.ts +31 -0
  116. package/dist/builtin/workflows/src/durable/dbos-backend.ts +28 -24
  117. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +130 -3
  118. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +18 -0
  119. package/dist/builtin/workflows/src/durable/scoped-backend.ts +64 -17
  120. package/dist/builtin/workflows/src/durable/stage-primitive.ts +60 -60
  121. package/dist/builtin/workflows/src/durable/stage-topology-validation.ts +234 -0
  122. package/dist/builtin/workflows/src/durable/stage-topology.ts +53 -0
  123. package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +49 -0
  124. package/dist/builtin/workflows/src/durable/tool-outcome.ts +120 -0
  125. package/dist/builtin/workflows/src/durable/tool-primitive.ts +367 -58
  126. package/dist/builtin/workflows/src/durable/types.ts +97 -0
  127. package/dist/builtin/workflows/src/durable/ui-primitive.ts +46 -0
  128. package/dist/builtin/workflows/src/durable/workflow-child-result.ts +58 -0
  129. package/dist/builtin/workflows/src/engine/options.ts +1 -0
  130. package/dist/builtin/workflows/src/engine/primitives/workflow.ts +19 -10
  131. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +11 -1
  132. package/dist/builtin/workflows/src/engine/run-durable-topology.ts +190 -18
  133. package/dist/builtin/workflows/src/engine/run-terminal-event.ts +37 -0
  134. package/dist/builtin/workflows/src/engine/run-terminal-failure.ts +50 -0
  135. package/dist/builtin/workflows/src/engine/run-tool-execution-tracker.ts +152 -0
  136. package/dist/builtin/workflows/src/engine/run-tool-node-lifecycle.ts +87 -0
  137. package/dist/builtin/workflows/src/engine/run.ts +111 -110
  138. package/dist/builtin/workflows/src/engine/runtime.ts +15 -2
  139. package/dist/builtin/workflows/src/extension/extension-factory.ts +1 -0
  140. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +11 -0
  141. package/dist/builtin/workflows/src/extension/index.bundle.mjs +6599 -4776
  142. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +16 -5
  143. package/dist/builtin/workflows/src/extension/render-result.ts +16 -2
  144. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +3 -0
  145. package/dist/builtin/workflows/src/extension/runtime.ts +4 -0
  146. package/dist/builtin/workflows/src/extension/wiring.ts +3 -1
  147. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +1 -0
  148. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +9 -3
  149. package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +18 -3
  150. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +27 -9
  151. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +43 -0
  152. package/dist/builtin/workflows/src/extension/workflow-targets.ts +34 -30
  153. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +12 -5
  154. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +162 -63
  155. package/dist/builtin/workflows/src/runs/background/run-inspect.ts +7 -1
  156. package/dist/builtin/workflows/src/runs/background/status.ts +18 -8
  157. package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +3 -11
  158. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +24 -21
  159. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +1 -1
  160. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +30 -13
  161. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +102 -53
  162. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +13 -5
  163. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +26 -8
  164. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +11 -4
  165. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +4 -1
  166. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +7 -1
  167. package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +35 -1
  168. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +136 -17
  169. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +12 -4
  170. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +35 -42
  171. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +5 -1
  172. package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +195 -0
  173. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +0 -13
  174. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +14 -2
  175. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +3 -143
  176. package/dist/builtin/workflows/src/sdk-surface.ts +1 -1
  177. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +6 -11
  178. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +6 -11
  179. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +57 -6
  180. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +76 -11
  181. package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +206 -116
  182. package/dist/builtin/workflows/src/shared/intercom-group.ts +17 -10
  183. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +30 -0
  184. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +5 -0
  185. package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +3 -3
  186. package/dist/builtin/workflows/src/shared/store-factory.ts +2 -0
  187. package/dist/builtin/workflows/src/shared/store-internal.ts +8 -0
  188. package/dist/builtin/workflows/src/shared/store-public-types.ts +8 -0
  189. package/dist/builtin/workflows/src/shared/store-run-methods.ts +9 -0
  190. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +2 -0
  191. package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +46 -0
  192. package/dist/builtin/workflows/src/shared/store-types.ts +34 -0
  193. package/dist/builtin/workflows/src/shared/types.ts +14 -24
  194. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +11 -5
  195. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +58 -0
  196. package/dist/builtin/workflows/src/shared/workflow-run-ownership.ts +53 -0
  197. package/dist/builtin/workflows/src/tui/graph-view-input.ts +2 -8
  198. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +11 -4
  199. package/dist/builtin/workflows/src/tui/graph-view-render.ts +1 -0
  200. package/dist/builtin/workflows/src/tui/graph-view-state.ts +27 -9
  201. package/dist/builtin/workflows/src/tui/graph-view-types.ts +4 -3
  202. package/dist/builtin/workflows/src/tui/node-card.ts +4 -3
  203. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +0 -4
  204. package/dist/builtin/workflows/src/tui/run-detail.ts +53 -17
  205. package/dist/builtin/workflows/src/tui/session-list.ts +8 -4
  206. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +12 -0
  207. package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +21 -1
  208. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +3 -19
  209. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +4 -2
  210. package/dist/builtin/workflows/src/tui/switcher.ts +13 -3
  211. package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +1 -1
  212. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +0 -9
  213. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +16 -49
  214. package/dist/builtin/workflows/src/tui/workflow-status.ts +7 -0
  215. package/dist/builtin/workflows/src/workflows/identity.ts +1 -1
  216. package/dist/cli/args.d.ts +0 -1
  217. package/dist/cli/args.d.ts.map +1 -1
  218. package/dist/cli/args.js +1 -20
  219. package/dist/cli/args.js.map +1 -1
  220. package/dist/cli/config-selector.js +1 -1
  221. package/dist/cli/config-selector.js.map +1 -1
  222. package/dist/cli/list-models.d.ts.map +1 -1
  223. package/dist/cli/list-models.js +1 -2
  224. package/dist/cli/list-models.js.map +1 -1
  225. package/dist/cli/session-picker.d.ts.map +1 -1
  226. package/dist/cli/session-picker.js +2 -1
  227. package/dist/cli/session-picker.js.map +1 -1
  228. package/dist/cli/startup-ui.js +2 -2
  229. package/dist/cli/startup-ui.js.map +1 -1
  230. package/dist/config-self-update.js +1 -1
  231. package/dist/config-self-update.js.map +1 -1
  232. package/dist/config.d.ts +2 -0
  233. package/dist/config.d.ts.map +1 -1
  234. package/dist/config.js +34 -10
  235. package/dist/config.js.map +1 -1
  236. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  237. package/dist/core/agent-session-accessors.js +2 -1
  238. package/dist/core/agent-session-accessors.js.map +1 -1
  239. package/dist/core/agent-session-auto-compaction.d.ts +4 -3
  240. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  241. package/dist/core/agent-session-auto-compaction.js +55 -59
  242. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  243. package/dist/core/agent-session-bash.d.ts +9 -6
  244. package/dist/core/agent-session-bash.d.ts.map +1 -1
  245. package/dist/core/agent-session-bash.js +32 -13
  246. package/dist/core/agent-session-bash.js.map +1 -1
  247. package/dist/core/agent-session-compaction.d.ts +11 -1
  248. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  249. package/dist/core/agent-session-compaction.js +87 -19
  250. package/dist/core/agent-session-compaction.js.map +1 -1
  251. package/dist/core/agent-session-custom-message-commit.d.ts +14 -0
  252. package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -0
  253. package/dist/core/agent-session-custom-message-commit.js +141 -0
  254. package/dist/core/agent-session-custom-message-commit.js.map +1 -0
  255. package/dist/core/agent-session-delivery-forwarding.d.ts +9 -0
  256. package/dist/core/agent-session-delivery-forwarding.d.ts.map +1 -0
  257. package/dist/core/agent-session-delivery-forwarding.js +36 -0
  258. package/dist/core/agent-session-delivery-forwarding.js.map +1 -0
  259. package/dist/core/agent-session-events.d.ts +1 -1
  260. package/dist/core/agent-session-events.d.ts.map +1 -1
  261. package/dist/core/agent-session-events.js +45 -14
  262. package/dist/core/agent-session-events.js.map +1 -1
  263. package/dist/core/agent-session-extension-bindings.d.ts +2 -6
  264. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  265. package/dist/core/agent-session-extension-bindings.js +18 -11
  266. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  267. package/dist/core/agent-session-message-queue.d.ts +5 -2
  268. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  269. package/dist/core/agent-session-message-queue.js +91 -97
  270. package/dist/core/agent-session-message-queue.js.map +1 -1
  271. package/dist/core/agent-session-methods.d.ts +47 -39
  272. package/dist/core/agent-session-methods.d.ts.map +1 -1
  273. package/dist/core/agent-session-methods.js.map +1 -1
  274. package/dist/core/agent-session-models.d.ts +2 -38
  275. package/dist/core/agent-session-models.d.ts.map +1 -1
  276. package/dist/core/agent-session-models.js +5 -147
  277. package/dist/core/agent-session-models.js.map +1 -1
  278. package/dist/core/agent-session-persistent-custom-messages.d.ts +47 -0
  279. package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -0
  280. package/dist/core/agent-session-persistent-custom-messages.js +267 -0
  281. package/dist/core/agent-session-persistent-custom-messages.js.map +1 -0
  282. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  283. package/dist/core/agent-session-post-tool-compaction.js +34 -9
  284. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  285. package/dist/core/agent-session-prompt.d.ts +2 -0
  286. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  287. package/dist/core/agent-session-prompt.js +42 -16
  288. package/dist/core/agent-session-prompt.js.map +1 -1
  289. package/dist/core/agent-session-queue-pause.d.ts +10 -0
  290. package/dist/core/agent-session-queue-pause.d.ts.map +1 -0
  291. package/dist/core/agent-session-queue-pause.js +86 -0
  292. package/dist/core/agent-session-queue-pause.js.map +1 -0
  293. package/dist/core/agent-session-retry.d.ts +0 -11
  294. package/dist/core/agent-session-retry.d.ts.map +1 -1
  295. package/dist/core/agent-session-retry.js +8 -57
  296. package/dist/core/agent-session-retry.js.map +1 -1
  297. package/dist/core/agent-session-runtime-auth.d.ts +6 -0
  298. package/dist/core/agent-session-runtime-auth.d.ts.map +1 -0
  299. package/dist/core/agent-session-runtime-auth.js +26 -0
  300. package/dist/core/agent-session-runtime-auth.js.map +1 -0
  301. package/dist/core/agent-session-runtime.d.ts +13 -2
  302. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  303. package/dist/core/agent-session-runtime.js +32 -6
  304. package/dist/core/agent-session-runtime.js.map +1 -1
  305. package/dist/core/agent-session-services.d.ts +0 -2
  306. package/dist/core/agent-session-services.d.ts.map +1 -1
  307. package/dist/core/agent-session-services.js +6 -7
  308. package/dist/core/agent-session-services.js.map +1 -1
  309. package/dist/core/agent-session-state.d.ts.map +1 -1
  310. package/dist/core/agent-session-state.js +3 -0
  311. package/dist/core/agent-session-state.js.map +1 -1
  312. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  313. package/dist/core/agent-session-tool-hooks.js +6 -1
  314. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  315. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  316. package/dist/core/agent-session-tool-registry.js +2 -18
  317. package/dist/core/agent-session-tool-registry.js.map +1 -1
  318. package/dist/core/agent-session-transfer.d.ts +4 -0
  319. package/dist/core/agent-session-transfer.d.ts.map +1 -0
  320. package/dist/core/agent-session-transfer.js +71 -0
  321. package/dist/core/agent-session-transfer.js.map +1 -0
  322. package/dist/core/agent-session-tree.js +1 -1
  323. package/dist/core/agent-session-tree.js.map +1 -1
  324. package/dist/core/agent-session-types.d.ts +5 -11
  325. package/dist/core/agent-session-types.d.ts.map +1 -1
  326. package/dist/core/agent-session-types.js +0 -3
  327. package/dist/core/agent-session-types.js.map +1 -1
  328. package/dist/core/agent-session.d.ts +12 -2
  329. package/dist/core/agent-session.d.ts.map +1 -1
  330. package/dist/core/agent-session.js +8 -2
  331. package/dist/core/agent-session.js.map +1 -1
  332. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  333. package/dist/core/atomic-guide-command.js +31 -33
  334. package/dist/core/atomic-guide-command.js.map +1 -1
  335. package/dist/core/auth-storage.js +2 -2
  336. package/dist/core/auth-storage.js.map +1 -1
  337. package/dist/core/bash-executor.d.ts +5 -3
  338. package/dist/core/bash-executor.d.ts.map +1 -1
  339. package/dist/core/bash-executor.js +5 -4
  340. package/dist/core/bash-executor.js.map +1 -1
  341. package/dist/core/builtin-packages.d.ts.map +1 -1
  342. package/dist/core/builtin-packages.js +0 -6
  343. package/dist/core/builtin-packages.js.map +1 -1
  344. package/dist/core/compaction/branch-summarization.d.ts +8 -3
  345. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  346. package/dist/core/compaction/branch-summarization.js +17 -6
  347. package/dist/core/compaction/branch-summarization.js.map +1 -1
  348. package/dist/core/compaction/compaction-boundary.d.ts +18 -1
  349. package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
  350. package/dist/core/compaction/compaction-boundary.js +2 -2
  351. package/dist/core/compaction/compaction-boundary.js.map +1 -1
  352. package/dist/core/compaction/compaction-runner.d.ts +61 -6
  353. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  354. package/dist/core/compaction/compaction-runner.js +242 -18
  355. package/dist/core/compaction/compaction-runner.js.map +1 -1
  356. package/dist/core/compaction/compaction-types.d.ts +53 -2
  357. package/dist/core/compaction/compaction-types.d.ts.map +1 -1
  358. package/dist/core/compaction/compaction-types.js.map +1 -1
  359. package/dist/core/compaction/fallback-planner.d.ts +64 -0
  360. package/dist/core/compaction/fallback-planner.d.ts.map +1 -0
  361. package/dist/core/compaction/fallback-planner.js +75 -0
  362. package/dist/core/compaction/fallback-planner.js.map +1 -0
  363. package/dist/core/compaction/index.d.ts +3 -0
  364. package/dist/core/compaction/index.d.ts.map +1 -1
  365. package/dist/core/compaction/index.js +3 -0
  366. package/dist/core/compaction/index.js.map +1 -1
  367. package/dist/core/compaction/planner-outcome.d.ts +86 -0
  368. package/dist/core/compaction/planner-outcome.d.ts.map +1 -0
  369. package/dist/core/compaction/planner-outcome.js +122 -0
  370. package/dist/core/compaction/planner-outcome.js.map +1 -0
  371. package/dist/core/compaction/range-planner-diagnostics.d.ts +58 -6
  372. package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
  373. package/dist/core/compaction/range-planner-diagnostics.js +69 -31
  374. package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
  375. package/dist/core/compaction/range-planner.d.ts +36 -8
  376. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  377. package/dist/core/compaction/range-planner.js +136 -51
  378. package/dist/core/compaction/range-planner.js.map +1 -1
  379. package/dist/core/compaction/region-trimming.d.ts +34 -0
  380. package/dist/core/compaction/region-trimming.d.ts.map +1 -0
  381. package/dist/core/compaction/region-trimming.js +73 -0
  382. package/dist/core/compaction/region-trimming.js.map +1 -0
  383. package/dist/core/compaction/transcript-serialization.d.ts +8 -1
  384. package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
  385. package/dist/core/compaction/transcript-serialization.js +78 -27
  386. package/dist/core/compaction/transcript-serialization.js.map +1 -1
  387. package/dist/core/context-tool-pairing.d.ts +19 -0
  388. package/dist/core/context-tool-pairing.d.ts.map +1 -0
  389. package/dist/core/context-tool-pairing.js +50 -0
  390. package/dist/core/context-tool-pairing.js.map +1 -0
  391. package/dist/core/diagnostics.d.ts +8 -0
  392. package/dist/core/diagnostics.d.ts.map +1 -1
  393. package/dist/core/diagnostics.js.map +1 -1
  394. package/dist/core/extensions/context-types.d.ts +3 -0
  395. package/dist/core/extensions/context-types.d.ts.map +1 -1
  396. package/dist/core/extensions/context-types.js.map +1 -1
  397. package/dist/core/extensions/index.d.ts +2 -0
  398. package/dist/core/extensions/index.d.ts.map +1 -1
  399. package/dist/core/extensions/index.js.map +1 -1
  400. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  401. package/dist/core/extensions/loader-api.js +48 -27
  402. package/dist/core/extensions/loader-api.js.map +1 -1
  403. package/dist/core/extensions/loader-runtime.d.ts +2 -4
  404. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  405. package/dist/core/extensions/loader-runtime.js +199 -18
  406. package/dist/core/extensions/loader-runtime.js.map +1 -1
  407. package/dist/core/extensions/message-types.d.ts +7 -4
  408. package/dist/core/extensions/message-types.d.ts.map +1 -1
  409. package/dist/core/extensions/message-types.js.map +1 -1
  410. package/dist/core/extensions/provider-types.d.ts +9 -4
  411. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  412. package/dist/core/extensions/provider-types.js.map +1 -1
  413. package/dist/core/extensions/runner-context.d.ts +2 -0
  414. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  415. package/dist/core/extensions/runner-context.js +4 -0
  416. package/dist/core/extensions/runner-context.js.map +1 -1
  417. package/dist/core/extensions/runner.d.ts +1 -0
  418. package/dist/core/extensions/runner.d.ts.map +1 -1
  419. package/dist/core/extensions/runner.js +28 -20
  420. package/dist/core/extensions/runner.js.map +1 -1
  421. package/dist/core/extensions/runtime-types.d.ts +25 -0
  422. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  423. package/dist/core/extensions/runtime-types.js.map +1 -1
  424. package/dist/core/extensions/tool-types.d.ts +7 -3
  425. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  426. package/dist/core/extensions/tool-types.js.map +1 -1
  427. package/dist/core/extensions/ui-types.d.ts +14 -4
  428. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  429. package/dist/core/extensions/ui-types.js.map +1 -1
  430. package/dist/core/fallback-models.d.ts +37 -0
  431. package/dist/core/fallback-models.d.ts.map +1 -0
  432. package/dist/core/fallback-models.js +48 -0
  433. package/dist/core/fallback-models.js.map +1 -0
  434. package/dist/core/flattened-tool-arguments.d.ts +4 -7
  435. package/dist/core/flattened-tool-arguments.d.ts.map +1 -1
  436. package/dist/core/flattened-tool-arguments.js +4 -7
  437. package/dist/core/flattened-tool-arguments.js.map +1 -1
  438. package/dist/core/http-dispatcher.d.ts.map +1 -1
  439. package/dist/core/http-dispatcher.js +0 -5
  440. package/dist/core/http-dispatcher.js.map +1 -1
  441. package/dist/core/messages.d.ts +14 -2
  442. package/dist/core/messages.d.ts.map +1 -1
  443. package/dist/core/messages.js +28 -4
  444. package/dist/core/messages.js.map +1 -1
  445. package/dist/core/model-capabilities.d.ts +18 -0
  446. package/dist/core/model-capabilities.d.ts.map +1 -0
  447. package/dist/core/model-capabilities.js +23 -0
  448. package/dist/core/model-capabilities.js.map +1 -0
  449. package/dist/core/model-registry-auth.d.ts.map +1 -1
  450. package/dist/core/model-registry-auth.js +0 -2
  451. package/dist/core/model-registry-auth.js.map +1 -1
  452. package/dist/core/model-registry-builtins.d.ts +0 -2
  453. package/dist/core/model-registry-builtins.d.ts.map +1 -1
  454. package/dist/core/model-registry-builtins.js +9 -76
  455. package/dist/core/model-registry-builtins.js.map +1 -1
  456. package/dist/core/model-registry-custom-loader.d.ts.map +1 -1
  457. package/dist/core/model-registry-custom-loader.js +1 -12
  458. package/dist/core/model-registry-custom-loader.js.map +1 -1
  459. package/dist/core/model-registry-dynamic.d.ts.map +1 -1
  460. package/dist/core/model-registry-dynamic.js +3 -15
  461. package/dist/core/model-registry-dynamic.js.map +1 -1
  462. package/dist/core/model-registry-extension-refresh.d.ts +23 -0
  463. package/dist/core/model-registry-extension-refresh.d.ts.map +1 -0
  464. package/dist/core/model-registry-extension-refresh.js +32 -0
  465. package/dist/core/model-registry-extension-refresh.js.map +1 -0
  466. package/dist/core/model-registry-schemas.d.ts +118 -9
  467. package/dist/core/model-registry-schemas.d.ts.map +1 -1
  468. package/dist/core/model-registry-schemas.js +10 -3
  469. package/dist/core/model-registry-schemas.js.map +1 -1
  470. package/dist/core/model-registry-types.d.ts +5 -5
  471. package/dist/core/model-registry-types.d.ts.map +1 -1
  472. package/dist/core/model-registry-types.js.map +1 -1
  473. package/dist/core/model-registry-validation.d.ts +7 -0
  474. package/dist/core/model-registry-validation.d.ts.map +1 -0
  475. package/dist/core/model-registry-validation.js +12 -0
  476. package/dist/core/model-registry-validation.js.map +1 -0
  477. package/dist/core/model-registry.d.ts +5 -3
  478. package/dist/core/model-registry.d.ts.map +1 -1
  479. package/dist/core/model-registry.js +34 -33
  480. package/dist/core/model-registry.js.map +1 -1
  481. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  482. package/dist/core/model-resolver-defaults.js +0 -1
  483. package/dist/core/model-resolver-defaults.js.map +1 -1
  484. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  485. package/dist/core/model-resolver-initial.js +9 -0
  486. package/dist/core/model-resolver-initial.js.map +1 -1
  487. package/dist/core/model-resolver-patterns.d.ts.map +1 -1
  488. package/dist/core/model-resolver-patterns.js +0 -2
  489. package/dist/core/model-resolver-patterns.js.map +1 -1
  490. package/dist/core/model-resolver-scope.d.ts +2 -0
  491. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  492. package/dist/core/model-resolver-scope.js +18 -4
  493. package/dist/core/model-resolver-scope.js.map +1 -1
  494. package/dist/core/model-resolver-types.d.ts +2 -0
  495. package/dist/core/model-resolver-types.d.ts.map +1 -1
  496. package/dist/core/model-resolver-types.js.map +1 -1
  497. package/dist/core/oauth-provider-bridge.d.ts +21 -0
  498. package/dist/core/oauth-provider-bridge.d.ts.map +1 -1
  499. package/dist/core/oauth-provider-bridge.js +68 -7
  500. package/dist/core/oauth-provider-bridge.js.map +1 -1
  501. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  502. package/dist/core/package-manager-auto-resources.js +12 -4
  503. package/dist/core/package-manager-auto-resources.js.map +1 -1
  504. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  505. package/dist/core/package-manager-resolver.js +42 -11
  506. package/dist/core/package-manager-resolver.js.map +1 -1
  507. package/dist/core/package-manager-types.d.ts +2 -0
  508. package/dist/core/package-manager-types.d.ts.map +1 -1
  509. package/dist/core/package-manager-types.js.map +1 -1
  510. package/dist/core/package-manager.d.ts +1 -1
  511. package/dist/core/package-manager.d.ts.map +1 -1
  512. package/dist/core/package-manager.js.map +1 -1
  513. package/dist/core/remote-catalog-provider.d.ts +1 -1
  514. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  515. package/dist/core/remote-catalog-provider.js +17 -11
  516. package/dist/core/remote-catalog-provider.js.map +1 -1
  517. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  518. package/dist/core/resource-loader-assets.js +30 -4
  519. package/dist/core/resource-loader-assets.js.map +1 -1
  520. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  521. package/dist/core/resource-loader-context-files.js +3 -1
  522. package/dist/core/resource-loader-context-files.js.map +1 -1
  523. package/dist/core/resource-loader-core.d.ts +2 -1
  524. package/dist/core/resource-loader-core.d.ts.map +1 -1
  525. package/dist/core/resource-loader-core.js +3 -0
  526. package/dist/core/resource-loader-core.js.map +1 -1
  527. package/dist/core/resource-loader-extensions.d.ts +1 -0
  528. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  529. package/dist/core/resource-loader-extensions.js +120 -7
  530. package/dist/core/resource-loader-extensions.js.map +1 -1
  531. package/dist/core/resource-loader-package-resources.d.ts.map +1 -1
  532. package/dist/core/resource-loader-package-resources.js +14 -1
  533. package/dist/core/resource-loader-package-resources.js.map +1 -1
  534. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  535. package/dist/core/resource-loader-reload.js +2 -1
  536. package/dist/core/resource-loader-reload.js.map +1 -1
  537. package/dist/core/resource-loader-source-info.d.ts.map +1 -1
  538. package/dist/core/resource-loader-source-info.js +6 -3
  539. package/dist/core/resource-loader-source-info.js.map +1 -1
  540. package/dist/core/sdk-types.d.ts +11 -10
  541. package/dist/core/sdk-types.d.ts.map +1 -1
  542. package/dist/core/sdk-types.js.map +1 -1
  543. package/dist/core/sdk.d.ts +1 -0
  544. package/dist/core/sdk.d.ts.map +1 -1
  545. package/dist/core/sdk.js +13 -84
  546. package/dist/core/sdk.js.map +1 -1
  547. package/dist/core/session-manager-core.d.ts +3 -3
  548. package/dist/core/session-manager-core.d.ts.map +1 -1
  549. package/dist/core/session-manager-core.js +18 -25
  550. package/dist/core/session-manager-core.js.map +1 -1
  551. package/dist/core/session-manager-entries.d.ts +2 -5
  552. package/dist/core/session-manager-entries.d.ts.map +1 -1
  553. package/dist/core/session-manager-entries.js +2 -8
  554. package/dist/core/session-manager-entries.js.map +1 -1
  555. package/dist/core/session-manager-history.d.ts +3 -3
  556. package/dist/core/session-manager-history.d.ts.map +1 -1
  557. package/dist/core/session-manager-history.js +49 -27
  558. package/dist/core/session-manager-history.js.map +1 -1
  559. package/dist/core/session-manager-storage.d.ts +6 -0
  560. package/dist/core/session-manager-storage.d.ts.map +1 -1
  561. package/dist/core/session-manager-storage.js +38 -5
  562. package/dist/core/session-manager-storage.js.map +1 -1
  563. package/dist/core/session-manager-types.d.ts +6 -6
  564. package/dist/core/session-manager-types.d.ts.map +1 -1
  565. package/dist/core/session-manager-types.js.map +1 -1
  566. package/dist/core/session-manager.d.ts +1 -1
  567. package/dist/core/session-manager.d.ts.map +1 -1
  568. package/dist/core/session-manager.js.map +1 -1
  569. package/dist/core/settings-manager-basic-accessors.d.ts +0 -4
  570. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  571. package/dist/core/settings-manager-basic-accessors.js +0 -50
  572. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  573. package/dist/core/settings-manager-core.d.ts +2 -4
  574. package/dist/core/settings-manager-core.d.ts.map +1 -1
  575. package/dist/core/settings-manager-core.js +5 -51
  576. package/dist/core/settings-manager-core.js.map +1 -1
  577. package/dist/core/settings-manager.d.ts +1 -1
  578. package/dist/core/settings-manager.d.ts.map +1 -1
  579. package/dist/core/settings-manager.js.map +1 -1
  580. package/dist/core/settings-storage.d.ts +3 -1
  581. package/dist/core/settings-storage.d.ts.map +1 -1
  582. package/dist/core/settings-storage.js +22 -0
  583. package/dist/core/settings-storage.js.map +1 -1
  584. package/dist/core/settings-types.d.ts +2 -4
  585. package/dist/core/settings-types.d.ts.map +1 -1
  586. package/dist/core/settings-types.js.map +1 -1
  587. package/dist/core/slash-commands.d.ts.map +1 -1
  588. package/dist/core/slash-commands.js +69 -23
  589. package/dist/core/slash-commands.js.map +1 -1
  590. package/dist/core/source-info.d.ts +3 -1
  591. package/dist/core/source-info.d.ts.map +1 -1
  592. package/dist/core/source-info.js +2 -0
  593. package/dist/core/source-info.js.map +1 -1
  594. package/dist/core/system-prompt.d.ts.map +1 -1
  595. package/dist/core/system-prompt.js +11 -0
  596. package/dist/core/system-prompt.js.map +1 -1
  597. package/dist/core/tools/ask-user-question/ask-user-question.js +1 -1
  598. package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
  599. package/dist/core/tools/bash-session-environment.d.ts +13 -0
  600. package/dist/core/tools/bash-session-environment.d.ts.map +1 -0
  601. package/dist/core/tools/bash-session-environment.js +35 -0
  602. package/dist/core/tools/bash-session-environment.js.map +1 -0
  603. package/dist/core/tools/bash.d.ts +4 -1
  604. package/dist/core/tools/bash.d.ts.map +1 -1
  605. package/dist/core/tools/bash.js +16 -8
  606. package/dist/core/tools/bash.js.map +1 -1
  607. package/dist/core/tools/tool-definition-wrapper.d.ts +3 -0
  608. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  609. package/dist/core/tools/tool-definition-wrapper.js +10 -2
  610. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  611. package/dist/extensions/index.js +1 -1
  612. package/dist/extensions/index.js.map +1 -1
  613. package/dist/extensions/llama/provider.d.ts +3 -2
  614. package/dist/extensions/llama/provider.d.ts.map +1 -1
  615. package/dist/extensions/llama/provider.js +9 -3
  616. package/dist/extensions/llama/provider.js.map +1 -1
  617. package/dist/index-extensions.d.ts +1 -1
  618. package/dist/index-extensions.d.ts.map +1 -1
  619. package/dist/index-extensions.js.map +1 -1
  620. package/dist/index.d.ts +2 -3
  621. package/dist/index.d.ts.map +1 -1
  622. package/dist/index.js +1 -2
  623. package/dist/index.js.map +1 -1
  624. package/dist/main-session-options.d.ts.map +1 -1
  625. package/dist/main-session-options.js +0 -4
  626. package/dist/main-session-options.js.map +1 -1
  627. package/dist/main-session.d.ts.map +1 -1
  628. package/dist/main-session.js +2 -1
  629. package/dist/main-session.js.map +1 -1
  630. package/dist/main.d.ts.map +1 -1
  631. package/dist/main.js +1 -17
  632. package/dist/main.js.map +1 -1
  633. package/dist/modes/index.d.ts +1 -1
  634. package/dist/modes/index.d.ts.map +1 -1
  635. package/dist/modes/index.js.map +1 -1
  636. package/dist/modes/interactive/chat-input-actions.d.ts +1 -1
  637. package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
  638. package/dist/modes/interactive/chat-input-actions.js +14 -96
  639. package/dist/modes/interactive/chat-input-actions.js.map +1 -1
  640. package/dist/modes/interactive/components/atomic-banner.d.ts +9 -8
  641. package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
  642. package/dist/modes/interactive/components/atomic-banner.js +68 -24
  643. package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
  644. package/dist/modes/interactive/components/atomic-working-status.d.ts +52 -0
  645. package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -0
  646. package/dist/modes/interactive/components/atomic-working-status.js +202 -0
  647. package/dist/modes/interactive/components/atomic-working-status.js.map +1 -0
  648. package/dist/modes/interactive/components/chat-message-renderer.js +1 -1
  649. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  650. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  651. package/dist/modes/interactive/components/chat-session-host-actions.js +99 -7
  652. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  653. package/dist/modes/interactive/components/chat-session-host-editor.js +3 -3
  654. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
  655. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  656. package/dist/modes/interactive/components/chat-session-host-events.js +52 -9
  657. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  658. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  659. package/dist/modes/interactive/components/chat-session-host-rendering.js +23 -7
  660. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  661. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +2 -0
  662. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
  663. package/dist/modes/interactive/components/chat-session-host-runtime.js +67 -18
  664. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
  665. package/dist/modes/interactive/components/chat-session-host-state.d.ts +9 -0
  666. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  667. package/dist/modes/interactive/components/chat-session-host-state.js +5 -0
  668. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  669. package/dist/modes/interactive/components/chat-session-host-types.d.ts +10 -0
  670. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
  671. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
  672. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  673. package/dist/modes/interactive/components/compaction-boundary-message.js +2 -1
  674. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  675. package/dist/modes/interactive/components/custom-message.d.ts +3 -1
  676. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  677. package/dist/modes/interactive/components/custom-message.js +9 -2
  678. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  679. package/dist/modes/interactive/components/extension-editor.d.ts +3 -2
  680. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  681. package/dist/modes/interactive/components/extension-editor.js +14 -43
  682. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  683. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  684. package/dist/modes/interactive/components/scoped-models-selector.js +18 -13
  685. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  686. package/dist/modes/interactive/components/startup-identity.d.ts +22 -0
  687. package/dist/modes/interactive/components/startup-identity.d.ts.map +1 -0
  688. package/dist/modes/interactive/components/startup-identity.js +58 -0
  689. package/dist/modes/interactive/components/startup-identity.js.map +1 -0
  690. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -1
  691. package/dist/modes/interactive/components/tree-selector-content.js +0 -6
  692. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
  693. package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -1
  694. package/dist/modes/interactive/components/tree-selector-model.js +0 -1
  695. package/dist/modes/interactive/components/tree-selector-model.js.map +1 -1
  696. package/dist/modes/interactive/components/working-status.d.ts +5 -11
  697. package/dist/modes/interactive/components/working-status.d.ts.map +1 -1
  698. package/dist/modes/interactive/components/working-status.js +14 -15
  699. package/dist/modes/interactive/components/working-status.js.map +1 -1
  700. package/dist/modes/interactive/external-editor.d.ts +23 -0
  701. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  702. package/dist/modes/interactive/external-editor.js +120 -0
  703. package/dist/modes/interactive/external-editor.js.map +1 -0
  704. package/dist/modes/interactive/interactive-agent-events.js +25 -20
  705. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  706. package/dist/modes/interactive/interactive-auth-login.js +16 -6
  707. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  708. package/dist/modes/interactive/interactive-auth-routing.js +3 -0
  709. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  710. package/dist/modes/interactive/interactive-bash-compact.d.ts +2 -1
  711. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
  712. package/dist/modes/interactive/interactive-bash-compact.js +8 -0
  713. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  714. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  715. package/dist/modes/interactive/interactive-deferred-startup.js +49 -19
  716. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  717. package/dist/modes/interactive/interactive-editor-actions.js +4 -3
  718. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  719. package/dist/modes/interactive/interactive-extension-dialogs.js +1 -1
  720. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  721. package/dist/modes/interactive/interactive-extension-runtime.js +3 -2
  722. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  723. package/dist/modes/interactive/interactive-initial-session-binding.d.ts +4 -0
  724. package/dist/modes/interactive/interactive-initial-session-binding.d.ts.map +1 -0
  725. package/dist/modes/interactive/interactive-initial-session-binding.js +23 -0
  726. package/dist/modes/interactive/interactive-initial-session-binding.js.map +1 -0
  727. package/dist/modes/interactive/interactive-input-handling.d.ts +2 -1
  728. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  729. package/dist/modes/interactive/interactive-input-handling.js +27 -51
  730. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  731. package/dist/modes/interactive/interactive-mode-base.d.ts +11 -7
  732. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  733. package/dist/modes/interactive/interactive-mode-base.js +14 -6
  734. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  735. package/dist/modes/interactive/interactive-mode-deps.d.ts +2 -4
  736. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  737. package/dist/modes/interactive/interactive-mode-deps.js +2 -4
  738. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  739. package/dist/modes/interactive/interactive-mode-surface.d.ts +9 -8
  740. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  741. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  742. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  743. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  744. package/dist/modes/interactive/interactive-mode.js +1 -0
  745. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  746. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts +2 -3
  747. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -1
  748. package/dist/modes/interactive/interactive-model-catalog-startup.js +3 -6
  749. package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -1
  750. package/dist/modes/interactive/interactive-model-routing.js +26 -97
  751. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  752. package/dist/modes/interactive/interactive-pause.d.ts +4 -0
  753. package/dist/modes/interactive/interactive-pause.d.ts.map +1 -0
  754. package/dist/modes/interactive/interactive-pause.js +8 -0
  755. package/dist/modes/interactive/interactive-pause.js.map +1 -0
  756. package/dist/modes/interactive/interactive-process-lifecycle.js +5 -4
  757. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  758. package/dist/modes/interactive/interactive-prompt-turn.d.ts +2 -0
  759. package/dist/modes/interactive/interactive-prompt-turn.d.ts.map +1 -0
  760. package/dist/modes/interactive/interactive-prompt-turn.js +41 -0
  761. package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -0
  762. package/dist/modes/interactive/interactive-render-chat.js +20 -8
  763. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  764. package/dist/modes/interactive/interactive-resource-paths.js +11 -2
  765. package/dist/modes/interactive/interactive-resource-paths.js.map +1 -1
  766. package/dist/modes/interactive/interactive-resource-rendering.js +99 -0
  767. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  768. package/dist/modes/interactive/interactive-session-runtime.js +1 -1
  769. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  770. package/dist/modes/interactive/interactive-slash-commands.js +1 -1
  771. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  772. package/dist/modes/interactive/interactive-startup-chat-container.d.ts +20 -0
  773. package/dist/modes/interactive/interactive-startup-chat-container.d.ts.map +1 -0
  774. package/dist/modes/interactive/interactive-startup-chat-container.js +26 -0
  775. package/dist/modes/interactive/interactive-startup-chat-container.js.map +1 -0
  776. package/dist/modes/interactive/interactive-startup.d.ts +1 -1
  777. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  778. package/dist/modes/interactive/interactive-startup.js +30 -25
  779. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  780. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts.map +1 -1
  781. package/dist/modes/interactive/interactive-summarization-retry-events.js +9 -3
  782. package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -1
  783. package/dist/modes/interactive/theme/catppuccin-frappe.json +1 -1
  784. package/dist/modes/interactive/theme/catppuccin-latte.json +1 -1
  785. package/dist/modes/interactive/theme/catppuccin-macchiato.json +1 -1
  786. package/dist/modes/interactive/theme/catppuccin-mocha.json +9 -1
  787. package/dist/modes/interactive/theme/dark.json +1 -1
  788. package/dist/modes/interactive/theme/light.json +1 -1
  789. package/dist/modes/interactive/theme/theme-class.d.ts +4 -0
  790. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  791. package/dist/modes/interactive/theme/theme-class.js +7 -0
  792. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  793. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  794. package/dist/modes/interactive/theme/theme-loading.js +4 -0
  795. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  796. package/dist/modes/interactive/theme/theme-schema.d.ts +32 -0
  797. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  798. package/dist/modes/interactive/theme/theme-schema.js +8 -0
  799. package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  800. package/dist/modes/interactive/theme/theme-schema.json +15 -2
  801. package/dist/modes/interactive/whimsical-messages.d.ts +1 -0
  802. package/dist/modes/interactive/whimsical-messages.d.ts.map +1 -1
  803. package/dist/modes/interactive/whimsical-messages.js +2 -2
  804. package/dist/modes/interactive/whimsical-messages.js.map +1 -1
  805. package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -1
  806. package/dist/modes/interactive-engine/create-isolated-runtime.js +3 -1
  807. package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -1
  808. package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -1
  809. package/dist/modes/interactive-engine/engine-args.js +0 -1
  810. package/dist/modes/interactive-engine/engine-args.js.map +1 -1
  811. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  812. package/dist/modes/interactive-engine/engine-custom-ui.js +5 -17
  813. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  814. package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
  815. package/dist/modes/interactive-engine/engine-render-service.js +8 -19
  816. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  817. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +2 -0
  818. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  819. package/dist/modes/interactive-engine/extension-ui-bridge.js +3 -0
  820. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  821. package/dist/modes/interactive-engine/isolated-auth.d.ts +10 -0
  822. package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -0
  823. package/dist/modes/interactive-engine/isolated-auth.js +14 -0
  824. package/dist/modes/interactive-engine/isolated-auth.js.map +1 -0
  825. package/dist/modes/interactive-engine/isolated-runtime.d.ts +9 -1
  826. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  827. package/dist/modes/interactive-engine/isolated-runtime.js +46 -34
  828. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  829. package/dist/modes/interactive-engine/protocol.d.ts +1 -1
  830. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  831. package/dist/modes/interactive-engine/protocol.js +3 -10
  832. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  833. package/dist/modes/interactive-engine/remote-model-catalog.d.ts +1 -0
  834. package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
  835. package/dist/modes/interactive-engine/remote-model-catalog.js +10 -1
  836. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
  837. package/dist/modes/interactive-engine/remote-queue-pause.d.ts +13 -0
  838. package/dist/modes/interactive-engine/remote-queue-pause.d.ts.map +1 -0
  839. package/dist/modes/interactive-engine/remote-queue-pause.js +38 -0
  840. package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -0
  841. package/dist/modes/interactive-engine/remote-renderer.d.ts +3 -1
  842. package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -1
  843. package/dist/modes/interactive-engine/remote-renderer.js +4 -1
  844. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
  845. package/dist/modes/print-mode.d.ts.map +1 -1
  846. package/dist/modes/print-mode.js +5 -0
  847. package/dist/modes/print-mode.js.map +1 -1
  848. package/dist/modes/rpc/jsonl.d.ts +2 -7
  849. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  850. package/dist/modes/rpc/jsonl.js +7 -24
  851. package/dist/modes/rpc/jsonl.js.map +1 -1
  852. package/dist/modes/rpc/queued-writer.d.ts +19 -0
  853. package/dist/modes/rpc/queued-writer.d.ts.map +1 -0
  854. package/dist/modes/rpc/{bounded-writer.js → queued-writer.js} +7 -30
  855. package/dist/modes/rpc/queued-writer.js.map +1 -0
  856. package/dist/modes/rpc/rpc-bash-request-owners.d.ts +24 -0
  857. package/dist/modes/rpc/rpc-bash-request-owners.d.ts.map +1 -0
  858. package/dist/modes/rpc/rpc-bash-request-owners.js +45 -0
  859. package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -0
  860. package/dist/modes/rpc/rpc-client-api.d.ts +8 -5
  861. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  862. package/dist/modes/rpc/rpc-client-api.js +10 -11
  863. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  864. package/dist/modes/rpc/rpc-client-process.d.ts +1 -4
  865. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  866. package/dist/modes/rpc/rpc-client-process.js +2 -14
  867. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  868. package/dist/modes/rpc/rpc-client.d.ts +8 -4
  869. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  870. package/dist/modes/rpc/rpc-client.js +21 -30
  871. package/dist/modes/rpc/rpc-client.js.map +1 -1
  872. package/dist/modes/rpc/rpc-command-handler.d.ts +7 -4
  873. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  874. package/dist/modes/rpc/rpc-command-handler.js +76 -93
  875. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  876. package/dist/modes/rpc/rpc-input-scheduler.d.ts +3 -3
  877. package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
  878. package/dist/modes/rpc/rpc-input-scheduler.js +7 -4
  879. package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
  880. package/dist/modes/rpc/rpc-mode.d.ts +1 -1
  881. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  882. package/dist/modes/rpc/rpc-mode.js +5 -5
  883. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  884. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts +4 -0
  885. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts.map +1 -0
  886. package/dist/modes/rpc/rpc-model-fallback-prompt.js +11 -0
  887. package/dist/modes/rpc/rpc-model-fallback-prompt.js.map +1 -0
  888. package/dist/modes/rpc/rpc-oauth-client.d.ts +22 -0
  889. package/dist/modes/rpc/rpc-oauth-client.d.ts.map +1 -0
  890. package/dist/modes/rpc/rpc-oauth-client.js +74 -0
  891. package/dist/modes/rpc/rpc-oauth-client.js.map +1 -0
  892. package/dist/modes/rpc/rpc-oauth-interaction.d.ts +9 -0
  893. package/dist/modes/rpc/rpc-oauth-interaction.d.ts.map +1 -0
  894. package/dist/modes/rpc/rpc-oauth-interaction.js +49 -0
  895. package/dist/modes/rpc/rpc-oauth-interaction.js.map +1 -0
  896. package/dist/modes/rpc/rpc-output-buffer.d.ts +2 -1
  897. package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
  898. package/dist/modes/rpc/rpc-output-buffer.js +4 -39
  899. package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
  900. package/dist/modes/rpc/rpc-provider-auth.d.ts +23 -0
  901. package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -0
  902. package/dist/modes/rpc/rpc-provider-auth.js +145 -0
  903. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -0
  904. package/dist/modes/rpc/rpc-responses.d.ts +0 -1
  905. package/dist/modes/rpc/rpc-responses.d.ts.map +1 -1
  906. package/dist/modes/rpc/rpc-responses.js +0 -14
  907. package/dist/modes/rpc/rpc-responses.js.map +1 -1
  908. package/dist/modes/rpc/rpc-types.d.ts +83 -27
  909. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  910. package/dist/modes/rpc/rpc-types.js.map +1 -1
  911. package/dist/utils/clipboard.d.ts.map +1 -1
  912. package/dist/utils/clipboard.js +21 -8
  913. package/dist/utils/clipboard.js.map +1 -1
  914. package/dist/utils/version-check.d.ts.map +1 -1
  915. package/dist/utils/version-check.js +3 -1
  916. package/dist/utils/version-check.js.map +1 -1
  917. package/docs/changelog.mdx +12 -1
  918. package/docs/compaction.md +101 -18
  919. package/docs/custom-provider.md +13 -4
  920. package/docs/docs.json +1 -0
  921. package/docs/environment-variables.md +37 -0
  922. package/docs/extensions.md +45 -9
  923. package/docs/index.md +1 -0
  924. package/docs/intercom.md +1 -1
  925. package/docs/json.md +4 -4
  926. package/docs/keybindings.md +4 -2
  927. package/docs/llama-cpp.md +3 -1
  928. package/docs/models.md +29 -43
  929. package/docs/providers.md +18 -24
  930. package/docs/quickstart.md +19 -16
  931. package/docs/rpc.md +38 -85
  932. package/docs/sdk.md +15 -22
  933. package/docs/session-format.md +2 -15
  934. package/docs/sessions.md +1 -1
  935. package/docs/settings.md +10 -15
  936. package/docs/skills.md +8 -0
  937. package/docs/subagents.md +24 -8
  938. package/docs/themes.md +10 -1
  939. package/docs/tui.md +3 -3
  940. package/docs/usage.md +30 -2
  941. package/docs/windows.md +1 -1
  942. package/docs/workflows.md +1128 -522
  943. package/examples/extensions/README.md +1 -1
  944. package/examples/extensions/handoff.ts +8 -1
  945. package/examples/extensions/message-renderer.ts +2 -2
  946. package/examples/extensions/summarize.ts +3 -0
  947. package/examples/extensions/working-indicator.ts +2 -2
  948. package/npm-shrinkwrap.json +40 -46
  949. package/package.json +9 -7
  950. package/dist/builtin/cursor/CHANGELOG.md +0 -281
  951. package/dist/builtin/cursor/LICENSE +0 -26
  952. package/dist/builtin/cursor/README.md +0 -24
  953. package/dist/builtin/cursor/index.ts +0 -9
  954. package/dist/builtin/cursor/package.json +0 -47
  955. package/dist/builtin/cursor/src/auth.ts +0 -352
  956. package/dist/builtin/cursor/src/catalog-cache.ts +0 -155
  957. package/dist/builtin/cursor/src/config.ts +0 -123
  958. package/dist/builtin/cursor/src/conversation-state.ts +0 -135
  959. package/dist/builtin/cursor/src/cursor-models-raw.json +0 -412
  960. package/dist/builtin/cursor/src/model-mapper.ts +0 -369
  961. package/dist/builtin/cursor/src/model-reference.ts +0 -282
  962. package/dist/builtin/cursor/src/models.ts +0 -54
  963. package/dist/builtin/cursor/src/native-loader.ts +0 -71
  964. package/dist/builtin/cursor/src/proto/README.md +0 -34
  965. package/dist/builtin/cursor/src/proto/agent_pb.ts +0 -15294
  966. package/dist/builtin/cursor/src/proto/protobuf-codec-base64.ts +0 -22
  967. package/dist/builtin/cursor/src/proto/protobuf-codec-json.ts +0 -44
  968. package/dist/builtin/cursor/src/proto/protobuf-codec-request.ts +0 -311
  969. package/dist/builtin/cursor/src/proto/protobuf-codec-wire.ts +0 -248
  970. package/dist/builtin/cursor/src/proto/protobuf-codec.ts +0 -200
  971. package/dist/builtin/cursor/src/provider.ts +0 -301
  972. package/dist/builtin/cursor/src/stream.ts +0 -494
  973. package/dist/builtin/cursor/src/transport-errors.ts +0 -74
  974. package/dist/builtin/cursor/src/transport-frame.ts +0 -56
  975. package/dist/builtin/cursor/src/transport-http2.ts +0 -122
  976. package/dist/builtin/cursor/src/transport-native-client.ts +0 -161
  977. package/dist/builtin/cursor/src/transport-run-stream.ts +0 -188
  978. package/dist/builtin/cursor/src/transport-timeouts.ts +0 -87
  979. package/dist/builtin/cursor/src/transport-types.ts +0 -143
  980. package/dist/builtin/cursor/src/transport.ts +0 -26
  981. package/dist/builtin/workflows/builtin/deep-research-codebase-runner.ts +0 -492
  982. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +0 -383
  983. package/dist/builtin/workflows/builtin/deep-research-codebase.d.ts +0 -35
  984. package/dist/builtin/workflows/builtin/deep-research-codebase.ts +0 -47
  985. package/dist/builtin/workflows/skills/impeccable/scripts/hook-before-edit.mjs +0 -516
  986. package/dist/core/context-window.d.ts +0 -54
  987. package/dist/core/context-window.d.ts.map +0 -1
  988. package/dist/core/context-window.js +0 -110
  989. package/dist/core/context-window.js.map +0 -1
  990. package/dist/core/copilot-anthropic-sse-repair.d.ts +0 -23
  991. package/dist/core/copilot-anthropic-sse-repair.d.ts.map +0 -1
  992. package/dist/core/copilot-anthropic-sse-repair.js +0 -340
  993. package/dist/core/copilot-anthropic-sse-repair.js.map +0 -1
  994. package/dist/core/copilot-errors.d.ts +0 -9
  995. package/dist/core/copilot-errors.d.ts.map +0 -1
  996. package/dist/core/copilot-errors.js +0 -32
  997. package/dist/core/copilot-errors.js.map +0 -1
  998. package/dist/core/copilot-gemini-payload-sanitizer.d.ts +0 -72
  999. package/dist/core/copilot-gemini-payload-sanitizer.d.ts.map +0 -1
  1000. package/dist/core/copilot-gemini-payload-sanitizer.js +0 -296
  1001. package/dist/core/copilot-gemini-payload-sanitizer.js.map +0 -1
  1002. package/dist/core/copilot-gemini-reasoning.d.ts +0 -126
  1003. package/dist/core/copilot-gemini-reasoning.d.ts.map +0 -1
  1004. package/dist/core/copilot-gemini-reasoning.js +0 -265
  1005. package/dist/core/copilot-gemini-reasoning.js.map +0 -1
  1006. package/dist/core/copilot-gemini-tool-arguments.d.ts +0 -42
  1007. package/dist/core/copilot-gemini-tool-arguments.d.ts.map +0 -1
  1008. package/dist/core/copilot-gemini-tool-arguments.js +0 -159
  1009. package/dist/core/copilot-gemini-tool-arguments.js.map +0 -1
  1010. package/dist/core/copilot-hosts.d.ts +0 -12
  1011. package/dist/core/copilot-hosts.d.ts.map +0 -1
  1012. package/dist/core/copilot-hosts.js +0 -33
  1013. package/dist/core/copilot-hosts.js.map +0 -1
  1014. package/dist/core/copilot-model-catalog.d.ts +0 -114
  1015. package/dist/core/copilot-model-catalog.d.ts.map +0 -1
  1016. package/dist/core/copilot-model-catalog.js +0 -392
  1017. package/dist/core/copilot-model-catalog.js.map +0 -1
  1018. package/dist/core/copilot-model-static-fallbacks.d.ts +0 -43
  1019. package/dist/core/copilot-model-static-fallbacks.d.ts.map +0 -1
  1020. package/dist/core/copilot-model-static-fallbacks.js +0 -50
  1021. package/dist/core/copilot-model-static-fallbacks.js.map +0 -1
  1022. package/dist/core/copilot-model-synthesis.d.ts +0 -10
  1023. package/dist/core/copilot-model-synthesis.d.ts.map +0 -1
  1024. package/dist/core/copilot-model-synthesis.js +0 -91
  1025. package/dist/core/copilot-model-synthesis.js.map +0 -1
  1026. package/dist/modes/interactive/components/context-window-selector.d.ts +0 -53
  1027. package/dist/modes/interactive/components/context-window-selector.d.ts.map +0 -1
  1028. package/dist/modes/interactive/components/context-window-selector.js +0 -136
  1029. package/dist/modes/interactive/components/context-window-selector.js.map +0 -1
  1030. package/dist/modes/rpc/bounded-writer.d.ts +0 -27
  1031. package/dist/modes/rpc/bounded-writer.d.ts.map +0 -1
  1032. package/dist/modes/rpc/bounded-writer.js.map +0 -1
@@ -1,13 +1,14 @@
1
- import type { AnthropicMessagesCompat, Api, AssistantMessageEventStream, Context, Model, OpenAICompletionsCompat, OpenAIResponsesCompat, SimpleStreamOptions } from "@earendil-works/pi-ai/compat";
1
+ import type { Api, AssistantMessageEventStream, Context, Model, SimpleStreamOptions } from "@earendil-works/pi-ai/compat";
2
2
  import type { Provider, ProviderHeaders } from "@earendil-works/pi-ai";
3
3
  import type { LegacyOAuthProvider } from "./oauth-provider-bridge.ts";
4
4
  import type { RefreshModelsContext } from "@earendil-works/pi-ai";
5
5
  import type { AuthStorage } from "./auth-storage.ts";
6
6
  import type { ModelOverride } from "./model-registry-schemas.ts";
7
7
  import type { ProviderApiKeyAuth } from "./extensions/provider-types.ts";
8
+ import type { AtomicProviderCompat } from "./model-capabilities.ts";
8
9
  export interface ProviderOverride {
9
10
  baseUrl?: string;
10
- compat?: Model<Api>["compat"];
11
+ compat?: AtomicProviderCompat;
11
12
  }
12
13
  export interface ProviderRequestConfig {
13
14
  apiKey?: string;
@@ -58,7 +59,7 @@ export interface DynamicProviderApplyInput {
58
59
  storeProviderRequestConfig: (providerName: string, config: ProviderRequestConfig) => void;
59
60
  storeModelHeaders: (providerName: string, modelId: string, headers?: Record<string, string>) => void;
60
61
  }
61
- export type ProviderCompat = OpenAICompletionsCompat | OpenAIResponsesCompat | AnthropicMessagesCompat;
62
+ export type ProviderCompat = AtomicProviderCompat;
62
63
  export interface ProviderConfigInput {
63
64
  name?: string;
64
65
  baseUrl?: string;
@@ -82,10 +83,9 @@ export interface ProviderConfigInput {
82
83
  input: ("text" | "image")[];
83
84
  cost: Model<Api>["cost"];
84
85
  contextWindow: number;
85
- contextWindowOptions?: readonly number[];
86
86
  maxTokens: number;
87
87
  headers?: Record<string, string>;
88
- compat?: Model<Api>["compat"];
88
+ compat?: AtomicProviderCompat;
89
89
  }>;
90
90
  }
91
91
  //# sourceMappingURL=model-registry-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-registry-types.d.ts","sourceRoot":"","sources":["../../src/core/model-registry-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-registry-types.d.ts","sourceRoot":"","sources":["../../src/core/model-registry-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-registry-types.js","sourceRoot":"","sources":["../../src/core/model-registry-types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n\tAnthropicMessagesCompat,\n\tApi,\n\tAssistantMessageEventStream,\n\tContext,\n\tModel,\n\tOpenAICompletionsCompat,\n\tOpenAIResponsesCompat,\n\tSimpleStreamOptions,\n} from \"@earendil-works/pi-ai/compat\";\nimport type { Provider, ProviderHeaders } from \"@earendil-works/pi-ai\";\nimport type { LegacyOAuthProvider } from \"./oauth-provider-bridge.ts\";\nimport type { RefreshModelsContext } from \"@earendil-works/pi-ai\";\nimport type { AuthStorage } from \"./auth-storage.ts\";\nimport type { ModelOverride } from \"./model-registry-schemas.ts\";\nimport type { ProviderApiKeyAuth } from \"./extensions/provider-types.ts\";\n\nexport interface ProviderOverride {\n\tbaseUrl?: string;\n\tcompat?: Model<Api>[\"compat\"];\n}\n\nexport interface ProviderRequestConfig {\n\tapiKey?: string;\n\theaders?: Record<string, string>;\n\tauthHeader?: boolean;\n\tauth?: { apiKey?: ProviderApiKeyAuth };\n}\n\nexport type ResolvedRequestAuth =\n\t| {\n\t\t\tok: true;\n\t\t\tapiKey?: string;\n\t\t\theaders?: ProviderHeaders;\n\t\t\tbaseUrl?: string;\n\t }\n\t| {\n\t\t\tok: false;\n\t\t\terror: string;\n\t };\n\nexport type ModelRequestHeaderSource = \"model\" | \"modelOverride\";\n\nexport interface CustomModelsResult {\n\tmodels: Model<Api>[];\n\toverrides: Map<string, ProviderOverride>;\n\tmodelOverrides: Map<string, Map<string, ModelOverride>>;\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>;\n\tmodelRequestHeaders: Map<string, Record<string, string>>;\n\tmodelRequestHeaderSources: Map<string, ModelRequestHeaderSource>;\n\tconfiguredProviders: Map<string, Provider>;\n\terror: string | undefined;\n}\n\nexport interface ModelRegistryLoadResult {\n\tmodels: Model<Api>[];\n\tmodelOverrides: Map<string, Map<string, ModelOverride>>;\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>;\n\tmodelRequestHeaders: Map<string, Record<string, string>>;\n\tconfiguredProviders: Map<string, Provider>;\n\tbuiltInProviders: Set<string>;\n\tcustomOpenAICompatibleProviders: Set<string>;\n\tloadError: string | undefined;\n}\n\nexport interface DynamicProviderApplyInput {\n\tproviderName: string;\n\tregistrationSource: string;\n\tregisterRuntime?: boolean;\n\tconfig: ProviderConfigInput;\n\tmodels: Model<Api>[];\n\tmodelOverrides: Map<string, Map<string, ModelOverride>>;\n\tauthStorage: AuthStorage;\n\tstoreProviderRequestConfig: (providerName: string, config: ProviderRequestConfig) => void;\n\tstoreModelHeaders: (providerName: string, modelId: string, headers?: Record<string, string>) => void;\n}\n\nexport type ProviderCompat =\n\t| OpenAICompletionsCompat\n\t| OpenAIResponsesCompat\n\t| AnthropicMessagesCompat;\n\nexport interface ProviderConfigInput {\n\tname?: string;\n\tbaseUrl?: string;\n\tapiKey?: string;\n\tapi?: Api;\n\tstreamSimple?: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\theaders?: Record<string, string>;\n\tauthHeader?: boolean;\n\trefreshModels?(context: RefreshModelsContext): Promise<NonNullable<ProviderConfigInput[\"models\"]>>;\n\tauth?: { apiKey?: ProviderApiKeyAuth };\n\toauth?: LegacyOAuthProvider;\n\tmodels?: Array<{\n\t\tid: string;\n\t\tname: string;\n\t\tapi?: Api;\n\t\tbaseUrl?: string;\n\t\treasoning: boolean;\n\t\tthinkingLevelMap?: Model<Api>[\"thinkingLevelMap\"];\n\t\tinput: (\"text\" | \"image\")[];\n\t\tcost: Model<Api>[\"cost\"];\n\t\tcontextWindow: number;\n\t\tcontextWindowOptions?: readonly number[];\n\t\tmaxTokens: number;\n\t\theaders?: Record<string, string>;\n\t\tcompat?: Model<Api>[\"compat\"];\n\t}>;\n}\n"]}
1
+ {"version":3,"file":"model-registry-types.js","sourceRoot":"","sources":["../../src/core/model-registry-types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n\tApi,\n\tAssistantMessageEventStream,\n\tContext,\n\tModel,\n\tSimpleStreamOptions,\n} from \"@earendil-works/pi-ai/compat\";\nimport type { Provider, ProviderHeaders } from \"@earendil-works/pi-ai\";\nimport type { LegacyOAuthProvider } from \"./oauth-provider-bridge.ts\";\nimport type { RefreshModelsContext } from \"@earendil-works/pi-ai\";\nimport type { AuthStorage } from \"./auth-storage.ts\";\nimport type { ModelOverride } from \"./model-registry-schemas.ts\";\nimport type { ProviderApiKeyAuth } from \"./extensions/provider-types.ts\";\nimport type { AtomicProviderCompat } from \"./model-capabilities.ts\";\n\nexport interface ProviderOverride {\n\tbaseUrl?: string;\n\tcompat?: AtomicProviderCompat;\n}\n\nexport interface ProviderRequestConfig {\n\tapiKey?: string;\n\theaders?: Record<string, string>;\n\tauthHeader?: boolean;\n\tauth?: { apiKey?: ProviderApiKeyAuth };\n}\n\nexport type ResolvedRequestAuth =\n\t| {\n\t\t\tok: true;\n\t\t\tapiKey?: string;\n\t\t\theaders?: ProviderHeaders;\n\t\t\tbaseUrl?: string;\n\t }\n\t| {\n\t\t\tok: false;\n\t\t\terror: string;\n\t };\n\nexport type ModelRequestHeaderSource = \"model\" | \"modelOverride\";\n\nexport interface CustomModelsResult {\n\tmodels: Model<Api>[];\n\toverrides: Map<string, ProviderOverride>;\n\tmodelOverrides: Map<string, Map<string, ModelOverride>>;\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>;\n\tmodelRequestHeaders: Map<string, Record<string, string>>;\n\tmodelRequestHeaderSources: Map<string, ModelRequestHeaderSource>;\n\tconfiguredProviders: Map<string, Provider>;\n\terror: string | undefined;\n}\n\nexport interface ModelRegistryLoadResult {\n\tmodels: Model<Api>[];\n\tmodelOverrides: Map<string, Map<string, ModelOverride>>;\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>;\n\tmodelRequestHeaders: Map<string, Record<string, string>>;\n\tconfiguredProviders: Map<string, Provider>;\n\tbuiltInProviders: Set<string>;\n\tcustomOpenAICompatibleProviders: Set<string>;\n\tloadError: string | undefined;\n}\n\nexport interface DynamicProviderApplyInput {\n\tproviderName: string;\n\tregistrationSource: string;\n\tregisterRuntime?: boolean;\n\tconfig: ProviderConfigInput;\n\tmodels: Model<Api>[];\n\tmodelOverrides: Map<string, Map<string, ModelOverride>>;\n\tauthStorage: AuthStorage;\n\tstoreProviderRequestConfig: (providerName: string, config: ProviderRequestConfig) => void;\n\tstoreModelHeaders: (providerName: string, modelId: string, headers?: Record<string, string>) => void;\n}\n\nexport type ProviderCompat = AtomicProviderCompat;\n\nexport interface ProviderConfigInput {\n\tname?: string;\n\tbaseUrl?: string;\n\tapiKey?: string;\n\tapi?: Api;\n\tstreamSimple?: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\theaders?: Record<string, string>;\n\tauthHeader?: boolean;\n\trefreshModels?(context: RefreshModelsContext): Promise<NonNullable<ProviderConfigInput[\"models\"]>>;\n\tauth?: { apiKey?: ProviderApiKeyAuth };\n\toauth?: LegacyOAuthProvider;\n\tmodels?: Array<{\n\t\tid: string;\n\t\tname: string;\n\t\tapi?: Api;\n\t\tbaseUrl?: string;\n\t\treasoning: boolean;\n\t\tthinkingLevelMap?: Model<Api>[\"thinkingLevelMap\"];\n\t\tinput: (\"text\" | \"image\")[];\n\t\tcost: Model<Api>[\"cost\"];\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t\theaders?: Record<string, string>;\n\t\tcompat?: AtomicProviderCompat;\n\t}>;\n}\n"]}
@@ -0,0 +1,7 @@
1
+ /** Shared value validation for custom/dynamic model-registry definitions. */
2
+ /**
3
+ * Validate a model `contextWindow` token count. Returns an error string when the
4
+ * value is not a positive integer, or `undefined` when it is valid.
5
+ */
6
+ export declare function validateContextWindowValue(value: number): string | undefined;
7
+ //# sourceMappingURL=model-registry-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-registry-validation.d.ts","sourceRoot":"","sources":["../../src/core/model-registry-validation.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAM7E;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE5E"}
@@ -0,0 +1,12 @@
1
+ /** Shared value validation for custom/dynamic model-registry definitions. */
2
+ function isPositiveInteger(value) {
3
+ return Number.isFinite(value) && Number.isInteger(value) && value > 0;
4
+ }
5
+ /**
6
+ * Validate a model `contextWindow` token count. Returns an error string when the
7
+ * value is not a positive integer, or `undefined` when it is valid.
8
+ */
9
+ export function validateContextWindowValue(value) {
10
+ return isPositiveInteger(value) ? undefined : "Context window must be a positive integer token count";
11
+ }
12
+ //# sourceMappingURL=model-registry-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-registry-validation.js","sourceRoot":"","sources":["../../src/core/model-registry-validation.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,SAAS,iBAAiB,CAAC,KAAa;IACvC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACvD,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uDAAuD,CAAC;AACvG,CAAC","sourcesContent":["/** Shared value validation for custom/dynamic model-registry definitions. */\n\nfunction isPositiveInteger(value: number): boolean {\n\treturn Number.isFinite(value) && Number.isInteger(value) && value > 0;\n}\n\n/**\n * Validate a model `contextWindow` token count. Returns an error string when the\n * value is not a positive integer, or `undefined` when it is valid.\n */\nexport function validateContextWindowValue(value: number): string | undefined {\n\treturn isPositiveInteger(value) ? undefined : \"Context window must be a positive integer token count\";\n}\n"]}
@@ -31,10 +31,10 @@ export declare class ModelRegistry {
31
31
  private readonly defaultProviders;
32
32
  private configuredProviderIds;
33
33
  readonly authStorage: AuthStorage;
34
- private modelsJsonPaths;
34
+ private readonly modelsJsonPaths;
35
+ private readonly modelDataDir;
35
36
  private constructor();
36
- private seedCopilotModelCatalogFromCache;
37
- static create(authStorage: AuthStorage, modelsJsonPath?: string | string[]): ModelRegistry;
37
+ static create(authStorage: AuthStorage, modelsJsonPath?: string | string[], modelDataDir?: string): ModelRegistry;
38
38
  static inMemory(authStorage: AuthStorage): ModelRegistry;
39
39
  refresh(options?: {
40
40
  signal?: AbortSignal;
@@ -52,6 +52,8 @@ export declare class ModelRegistry {
52
52
  find(provider: string, modelId: string): Model<Api> | undefined;
53
53
  getProviders(): readonly Provider[];
54
54
  getProvider(providerId: string): Provider | undefined;
55
+ /** Whether an exact provider id belongs to a built-in, configured, or extension registration. */
56
+ hasProvider(providerId: string): boolean;
55
57
  checkAuth(providerId: string): Promise<import("@earendil-works/pi-ai").AuthCheck | undefined>;
56
58
  getAuth(providerId: string, overrides?: {
57
59
  apiKey?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"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"}
@@ -2,25 +2,23 @@
2
2
  * Model registry - manages built-in and custom models, provides API key resolution.
3
3
  */
4
4
  import { createModels, } from "@earendil-works/pi-ai";
5
- import { builtinProviders, getBuiltinModelDataUrl } from "@earendil-works/pi-ai/providers/all";
5
+ import { builtinProviders, getBuiltinModelDataGeneratedAt } from "@earendil-works/pi-ai/providers/all";
6
6
  import { dirname, join } from "node:path";
7
+ import { isDeepStrictEqual } from "node:util";
7
8
  import { getAgentConfigPaths } from "../config.js";
8
9
  import { normalizePath } from "../utils/paths.js";
9
- import { copilotApiBaseUrlFromToken, copilotCatalogCachePath, copilotTokenFromEnvironment, seedActiveCopilotModelCatalogFromCache } from "./copilot-model-catalog.js";
10
10
  import { getModelRequestAuth, getApiKeyForProviderFromConfig, getProviderAuthStatusFromConfig, getProviderResolvedAuth } from "./model-registry-auth.js";
11
11
  import { applyProviderConfigToModels, migrateLegacyRegisterProviderConfigValues, unregisterProviderRuntime, validateProviderConfig } from "./model-registry-dynamic.js";
12
12
  import { loadModelRegistryModels } from "./model-registry-loader.js";
13
+ import { refreshExtensionProvider } from "./model-registry-extension-refresh.js";
13
14
  import { BUILT_IN_PROVIDER_DISPLAY_NAMES } from "./provider-display-names.js";
14
15
  import { FileModelsStore, InMemoryCodingAgentModelsStore } from "./models-store.js";
15
16
  import { getLegacyOAuthProvider, oauthCredentialToAuth } from "./oauth-provider-bridge.js";
16
17
  import { withRemoteCatalog } from "./remote-catalog-provider.js";
17
18
  import { clearConfigValueCache, isConfigValueConfigured } from "./resolve-config-value.js";
18
- const REMOTE_CATALOG_PROVIDERS = new Set(["cursor", "github-copilot", "openrouter", "vercel-ai-gateway"]);
19
+ const REMOTE_CATALOG_PROVIDERS = new Set(["github-copilot", "openrouter", "vercel-ai-gateway"]);
19
20
  const OPENAI_COMPATIBLE_APIS = new Set(["openai-completions", "openai-responses"]);
20
21
  let nextRegistryRegistrationId = 0;
21
- function copilotBaseUrlFromRuntimeToken(apiKey) {
22
- return /(?:^|;)proxy-ep=[^;]+/.test(apiKey) ? copilotApiBaseUrlFromToken(apiKey) : undefined;
23
- }
24
22
  function overlayRuntimeApiKey(runtimeApiKey, resolvedAuth, storedOAuthAuth, runtimeBaseUrl) {
25
23
  const headers = storedOAuthAuth?.headers || resolvedAuth?.headers
26
24
  ? { ...storedOAuthAuth?.headers, ...resolvedAuth?.headers }
@@ -51,7 +49,7 @@ export const clearApiKeyCache = clearConfigValueCache;
51
49
  * Model registry - loads and manages models, resolves API keys via AuthStorage.
52
50
  */
53
51
  export class ModelRegistry {
54
- constructor(authStorage, modelsJsonPaths) {
52
+ constructor(authStorage, modelsJsonPaths, modelDataDir) {
55
53
  this.models = [];
56
54
  this.modelOverrides = new Map();
57
55
  this.providerRequestConfigs = new Map();
@@ -68,33 +66,25 @@ export class ModelRegistry {
68
66
  this.configuredProviderIds = new Set();
69
67
  this.authStorage = authStorage;
70
68
  this.modelsJsonPaths = modelsJsonPaths.map((path) => normalizePath(path));
71
- this.modelsStore = this.modelsJsonPaths.length > 0
72
- ? new FileModelsStore(join(dirname(this.modelsJsonPaths[0]), "models-store.json"))
73
- : new InMemoryCodingAgentModelsStore();
69
+ this.modelDataDir = modelDataDir ? normalizePath(modelDataDir) : this.modelsJsonPaths[0] ? dirname(this.modelsJsonPaths[0]) : undefined;
70
+ this.modelsStore = this.modelDataDir ? new FileModelsStore(join(this.modelDataDir, "models-store.json")) : new InMemoryCodingAgentModelsStore();
74
71
  this.credentialStore = authStorage.asCredentialStore();
75
72
  this.providerModels = createModels({
76
73
  credentials: createProviderCredentialStore(this.credentialStore),
77
74
  modelsStore: this.modelsStore,
78
75
  });
76
+ const builtinModelDataGeneratedAt = getBuiltinModelDataGeneratedAt();
79
77
  for (const provider of builtinProviders()) {
80
- const configured = provider.id === "radius" ? provider : withRemoteCatalog(provider, undefined, getBuiltinModelDataUrl(provider.id));
78
+ const configured = provider.id === "radius"
79
+ ? provider
80
+ : withRemoteCatalog(provider, undefined, builtinModelDataGeneratedAt);
81
81
  this.defaultProviders.set(provider.id, configured);
82
82
  this.providerModels.setProvider(configured);
83
83
  }
84
- this.seedCopilotModelCatalogFromCache();
85
84
  this.loadModels();
86
85
  }
87
- seedCopilotModelCatalogFromCache() {
88
- if (this.modelsJsonPaths.length === 0)
89
- return;
90
- const cred = this.authStorage.get("github-copilot");
91
- const token = cred?.type === "oauth" && typeof cred.access === "string" ? cred.access : copilotTokenFromEnvironment();
92
- if (!token)
93
- return;
94
- seedActiveCopilotModelCatalogFromCache(token, copilotCatalogCachePath(dirname(this.modelsJsonPaths[0])));
95
- }
96
- static create(authStorage, modelsJsonPath = getAgentConfigPaths("models.json")) {
97
- return new ModelRegistry(authStorage, Array.isArray(modelsJsonPath) ? modelsJsonPath : [modelsJsonPath]);
86
+ static create(authStorage, modelsJsonPath = getAgentConfigPaths("models.json"), modelDataDir) {
87
+ return new ModelRegistry(authStorage, Array.isArray(modelsJsonPath) ? modelsJsonPath : [modelsJsonPath], modelDataDir);
98
88
  }
99
89
  static inMemory(authStorage) { return new ModelRegistry(authStorage, []); }
100
90
  async refresh(options = {}) {
@@ -171,23 +161,27 @@ export class ModelRegistry {
171
161
  }
172
162
  if (!isCurrentExtensionRefresh())
173
163
  return;
174
- const models = await config.refreshModels({
164
+ const refreshed = await refreshExtensionProvider({
165
+ config,
175
166
  credential,
176
167
  store,
177
168
  allowNetwork: options.allowNetwork ?? true,
178
169
  force: options.force,
179
170
  signal: controller.signal,
171
+ isCurrent: isCurrentExtensionRefresh,
180
172
  });
181
173
  if (!isCurrentExtensionRefresh())
182
174
  return;
183
- const refreshed = { ...config, models };
184
- this.registeredProviders.set(providerName, refreshed);
175
+ if (refreshed.error)
176
+ errors.set(providerName, refreshed.error);
177
+ if (!refreshed.models)
178
+ return;
179
+ this.registeredProviders.set(providerName, { ...config, models: refreshed.models });
185
180
  this.rebuildProviderModels();
186
181
  }
187
182
  catch (error) {
188
- if (generation === this.refreshGeneration && !controller.signal.aborted) {
183
+ if (isCurrentExtensionRefresh())
189
184
  errors.set(providerName, error instanceof Error ? error : new Error(String(error)));
190
- }
191
185
  }
192
186
  });
193
187
  const builtinRefresh = controller.signal.aborted
@@ -236,7 +230,11 @@ export class ModelRegistry {
236
230
  this.providerModels.setProvider(provider);
237
231
  this.configuredProviderIds = new Set(loaded.configuredProviders.keys());
238
232
  this.modelOverrides = loaded.modelOverrides;
239
- this.models = loaded.models;
233
+ const previousModels = new Map(this.models.map((model) => [`${model.provider}\0${model.id}`, model]));
234
+ this.models = loaded.models.map((model) => {
235
+ const previous = previousModels.get(`${model.provider}\0${model.id}`);
236
+ return previous && isDeepStrictEqual(previous, model) ? previous : model;
237
+ });
240
238
  this.providerRequestConfigs = loaded.providerRequestConfigs;
241
239
  this.modelRequestHeaders = loaded.modelRequestHeaders;
242
240
  this.builtInProviders = loaded.builtInProviders;
@@ -263,6 +261,12 @@ export class ModelRegistry {
263
261
  find(provider, modelId) { return this.models.find((model) => model.provider === provider && model.id === modelId); }
264
262
  getProviders() { return this.providerModels.getProviders(); }
265
263
  getProvider(providerId) { return this.providerModels.getProvider(providerId); }
264
+ /** Whether an exact provider id belongs to a built-in, configured, or extension registration. */
265
+ hasProvider(providerId) {
266
+ return this.registeredProviders.has(providerId)
267
+ || this.providerModels.getProvider(providerId) !== undefined
268
+ || this.models.some((model) => model.provider === providerId);
269
+ }
266
270
  checkAuth(providerId) { return this.providerModels.checkAuth(providerId); }
267
271
  getAuth(providerOrModel, overrides) {
268
272
  return typeof providerOrModel === "string" ? this.providerModels.getAuth(providerOrModel, overrides) : this.providerModels.getAuth(providerOrModel, overrides);
@@ -318,12 +322,9 @@ export class ModelRegistry {
318
322
  const storedOAuthAuth = runtimeApiKey !== undefined && !extensionReplacesOAuth && storedCredential?.type === "oauth"
319
323
  ? await oauthCredentialToAuth(model.provider, storedCredential)
320
324
  : undefined;
321
- const runtimeBaseUrl = runtimeApiKey !== undefined && model.provider === "github-copilot"
322
- ? copilotBaseUrlFromRuntimeToken(runtimeApiKey)
323
- : undefined;
324
325
  const providerAuth = runtimeApiKey === undefined
325
326
  ? resolvedProviderAuth
326
- : overlayRuntimeApiKey(runtimeApiKey, resolvedProviderAuth, storedOAuthAuth, runtimeBaseUrl);
327
+ : overlayRuntimeApiKey(runtimeApiKey, resolvedProviderAuth, storedOAuthAuth, undefined);
327
328
  return getModelRequestAuth(model, this.authStorage, this.providerRequestConfigs, this.modelRequestHeaders, providerAuth);
328
329
  }
329
330
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Model registry - manages built-in and custom models, provides API key resolution.\n */\n\nimport {\n\tcreateModels,\n\ttype AuthInteraction,\n\ttype AuthResult,\n\ttype AuthType,\n\ttype Credential,\n\ttype CredentialStore,\n\ttype ModelAuth,\n\ttype ModelsRefreshResult,\n\ttype MutableModels,\n\ttype Provider,\n} from \"@earendil-works/pi-ai\";\nimport { builtinProviders, getBuiltinModelDataUrl, type BuiltinProvider } from \"@earendil-works/pi-ai/providers/all\";\nimport { type Api, type Model } from \"@earendil-works/pi-ai/compat\";\nimport { dirname, join } from \"node:path\";\nimport { getAgentConfigPaths } from \"../config.ts\";\nimport { normalizePath } from \"../utils/paths.ts\";\nimport type { AuthStatus, AuthStorage } from \"./auth-storage.ts\";\nimport { copilotApiBaseUrlFromToken, copilotCatalogCachePath, copilotTokenFromEnvironment, seedActiveCopilotModelCatalogFromCache } from \"./copilot-model-catalog.ts\";\nimport { getModelRequestAuth, getApiKeyForProviderFromConfig, getProviderAuthStatusFromConfig, getProviderResolvedAuth } from \"./model-registry-auth.ts\";\nimport { applyProviderConfigToModels, migrateLegacyRegisterProviderConfigValues, unregisterProviderRuntime, validateProviderConfig } from \"./model-registry-dynamic.ts\";\nimport { loadModelRegistryModels } from \"./model-registry-loader.ts\";\nimport type { ProviderConfigInput, ProviderRequestConfig, ResolvedRequestAuth } from \"./model-registry-types.ts\";\nimport type { ModelOverride } from \"./model-registry-schemas.ts\";\nimport { BUILT_IN_PROVIDER_DISPLAY_NAMES } from \"./provider-display-names.ts\";\nimport { type CodingAgentModelsStore, FileModelsStore, InMemoryCodingAgentModelsStore } from \"./models-store.ts\";\nimport { getLegacyOAuthProvider, oauthCredentialToAuth } from \"./oauth-provider-bridge.ts\";\nimport { withRemoteCatalog } from \"./remote-catalog-provider.ts\";\nimport { clearConfigValueCache, isConfigValueConfigured } from \"./resolve-config-value.ts\";\nconst REMOTE_CATALOG_PROVIDERS = new Set([\"cursor\", \"github-copilot\", \"openrouter\", \"vercel-ai-gateway\"]);\nconst OPENAI_COMPATIBLE_APIS = new Set<Api>([\"openai-completions\", \"openai-responses\"]);\nlet nextRegistryRegistrationId = 0;\n\nfunction copilotBaseUrlFromRuntimeToken(apiKey: string): string | undefined {\n\treturn /(?:^|;)proxy-ep=[^;]+/.test(apiKey) ? copilotApiBaseUrlFromToken(apiKey) : undefined;\n}\n\nfunction overlayRuntimeApiKey(\n\truntimeApiKey: string,\n\tresolvedAuth: ModelAuth | undefined,\n\tstoredOAuthAuth: ModelAuth | undefined,\n\truntimeBaseUrl: string | undefined,\n): ModelAuth {\n\tconst headers = storedOAuthAuth?.headers || resolvedAuth?.headers\n\t\t? { ...storedOAuthAuth?.headers, ...resolvedAuth?.headers }\n\t\t: undefined;\n\treturn {\n\t\t...storedOAuthAuth,\n\t\t...resolvedAuth,\n\t\tapiKey: runtimeApiKey,\n\t\theaders,\n\t\tbaseUrl: runtimeBaseUrl ?? storedOAuthAuth?.baseUrl ?? resolvedAuth?.baseUrl,\n\t};\n}\n\nfunction createProviderCredentialStore(credentials: CredentialStore): CredentialStore {\n\treturn {\n\t\t...credentials,\n\t\tread: async (providerId) => {\n\t\t\tconst credential = await credentials.read(providerId);\n\t\t\tif (credential?.type !== \"oauth\" || !getLegacyOAuthProvider(providerId)) return credential;\n\t\t\tconst auth = await oauthCredentialToAuth(providerId, credential);\n\t\t\treturn auth?.apiKey === undefined ? undefined : { type: \"api_key\", key: auth.apiKey };\n\t\t},\n\t};\n}\n\nexport type { ProviderConfigInput, ResolvedRequestAuth } from \"./model-registry-types.ts\";\n/** Clear the config value command cache. Exported for testing. */\nexport const clearApiKeyCache = clearConfigValueCache;\n/**\n * Model registry - loads and manages models, resolves API keys via AuthStorage.\n */\nexport class ModelRegistry {\n\tprivate models: Model<Api>[] = [];\n\tprivate modelOverrides: Map<string, Map<string, ModelOverride>> = new Map();\n\tprivate providerRequestConfigs: Map<string, ProviderRequestConfig> = new Map();\n\tprivate modelRequestHeaders: Map<string, Record<string, string>> = new Map();\n\tprivate registeredProviders: Map<string, ProviderConfigInput> = new Map();\n\tprivate nativeProviders: Map<string, Provider> = new Map();\n\tprivate builtInProviders: Set<string> = new Set();\n\tprivate customOpenAICompatibleProviders: Set<string> = new Set();\n\tprivate loadError: string | undefined = undefined;\n\tprivate refreshGeneration = 0;\n\tprivate resolvedCustomAuthProviders = new Set<string>();\n\tprivate readonly registrationSource = `atomic:model-registry:${++nextRegistryRegistrationId}`;\n\tdeclare private readonly modelsStore: CodingAgentModelsStore;\n\tdeclare private readonly credentialStore: CredentialStore;\n\tdeclare private readonly providerModels: MutableModels;\n\tprivate readonly defaultProviders = new Map<string, Provider>();\n\tprivate configuredProviderIds = new Set<string>();\n\n\tdeclare readonly authStorage: AuthStorage;\n\tdeclare private modelsJsonPaths: string[];\n\n\tprivate constructor(\n\t\tauthStorage: AuthStorage,\n\t\tmodelsJsonPaths: string[],\n\t) {\n\t\tthis.authStorage = authStorage;\n\t\tthis.modelsJsonPaths = modelsJsonPaths.map((path) => normalizePath(path));\n\t\tthis.modelsStore = this.modelsJsonPaths.length > 0\n\t\t\t? new FileModelsStore(join(dirname(this.modelsJsonPaths[0]), \"models-store.json\"))\n\t\t\t: new InMemoryCodingAgentModelsStore();\n\t\tthis.credentialStore = authStorage.asCredentialStore();\n\t\tthis.providerModels = createModels({\n\t\t\tcredentials: createProviderCredentialStore(this.credentialStore),\n\t\t\tmodelsStore: this.modelsStore,\n\t\t});\n\t\tfor (const provider of builtinProviders()) {\n\t\t\tconst configured = provider.id === \"radius\" ? provider : withRemoteCatalog(provider, undefined, getBuiltinModelDataUrl(provider.id as BuiltinProvider));\n\t\t\tthis.defaultProviders.set(provider.id, configured);\n\t\t\tthis.providerModels.setProvider(configured);\n\t\t}\n\t\tthis.seedCopilotModelCatalogFromCache();\n\t\tthis.loadModels();\n\t}\n\n\tprivate seedCopilotModelCatalogFromCache(): void {\n\t\tif (this.modelsJsonPaths.length === 0) return;\n\t\tconst cred = this.authStorage.get(\"github-copilot\");\n\t\tconst token = cred?.type === \"oauth\" && typeof cred.access === \"string\" ? cred.access : copilotTokenFromEnvironment();\n\t\tif (!token) return;\n\t\tseedActiveCopilotModelCatalogFromCache(token, copilotCatalogCachePath(dirname(this.modelsJsonPaths[0])));\n\t}\n\n\tstatic create(\n\t\tauthStorage: AuthStorage,\n\t\tmodelsJsonPath: string | string[] = getAgentConfigPaths(\"models.json\"),\n\t): ModelRegistry {\n\t\treturn new ModelRegistry(authStorage, Array.isArray(modelsJsonPath) ? modelsJsonPath : [modelsJsonPath]);\n\t}\n\n\tstatic inMemory(authStorage: AuthStorage): ModelRegistry { return new ModelRegistry(authStorage, []); }\n\n\tasync refresh(options: { signal?: AbortSignal; timeoutMs?: number; force?: boolean; allowNetwork?: boolean } = {}): Promise<ModelsRefreshResult> {\n\t\tconst generation = ++this.refreshGeneration;\n\t\tthis.loadError = undefined;\n\t\tthis.rebuildProviderModels();\n\n\t\tconst controller = new AbortController();\n\t\tconst abort = () => controller.abort();\n\t\toptions.signal?.addEventListener(\"abort\", abort, { once: true });\n\t\tif (options.signal?.aborted) controller.abort(options.signal.reason);\n\t\tconst timeout = setTimeout(abort, options.timeoutMs ?? 15_000);\n\t\tconst errors = new Map<string, Error>();\n\t\tconst aborted = new Promise<void>((resolve) => {\n\t\t\tif (controller.signal.aborted) resolve();\n\t\t\telse controller.signal.addEventListener(\"abort\", () => resolve(), { once: true });\n\t\t});\n\t\ttry {\n\t\t\tconst restore = this.providerModels\n\t\t\t\t.refresh({ allowNetwork: false, signal: controller.signal })\n\t\t\t\t.then((result) => {\n\t\t\t\t\tif (controller.signal.aborted || generation !== this.refreshGeneration) return;\n\t\t\t\t\tfor (const [provider, error] of result.errors) errors.set(provider, error);\n\t\t\t\t\tthis.publishProviderModels();\n\t\t\t\t});\n\t\t\tawait Promise.race([restore, aborted]);\n\n\t\t\tif (options.allowNetwork !== false && !controller.signal.aborted) {\n\t\t\t\tconst legacyOAuthProviders = new Set([\n\t\t\t\t\t...this.models.map((model) => model.provider),\n\t\t\t\t\t...[...this.registeredProviders]\n\t\t\t\t\t\t.filter(([, config]) => config.oauth !== undefined)\n\t\t\t\t\t\t.map(([providerId]) => providerId),\n\t\t\t\t].filter((providerId) => getLegacyOAuthProvider(providerId) !== undefined));\n\t\t\t\tconst refreshLegacyOAuth = Promise.all([...legacyOAuthProviders].map(async (providerId) => {\n\t\t\t\t\tconst credential = this.authStorage.get(providerId);\n\t\t\t\t\tif (credential?.type !== \"oauth\" || Date.now() < credential.expires) return;\n\t\t\t\t\tawait this.authStorage.getModelAuth(providerId, { includeFallback: false });\n\t\t\t\t}));\n\t\t\t\tawait Promise.race([refreshLegacyOAuth, aborted]);\n\t\t\t}\n\n\t\t\tconst extensionRefreshes = controller.signal.aborted ? [] : [...this.registeredProviders].map(async ([providerName, config]) => {\n\t\t\t\tif (!config.refreshModels) return;\n\t\t\t\tconst isCurrentExtensionRefresh = () => !controller.signal.aborted\n\t\t\t\t\t&& generation === this.refreshGeneration\n\t\t\t\t\t&& this.registeredProviders.get(providerName) === config;\n\t\t\t\tconst store = {\n\t\t\t\t\tread: () => this.modelsStore.read(providerName),\n\t\t\t\t\twrite: (entry: Parameters<typeof this.modelsStore.write>[1]) =>\n\t\t\t\t\t\tthis.modelsStore.writeIf(providerName, entry, isCurrentExtensionRefresh),\n\t\t\t\t\tdelete: () => this.modelsStore.deleteIf(providerName, isCurrentExtensionRefresh),\n\t\t\t\t};\n\t\t\t\ttry {\n\t\t\t\t\tlet credential = await this.credentialStore.read(providerName);\n\t\t\t\t\tif (credential?.type === \"api_key\") {\n\t\t\t\t\t\tconst effectiveApiKey = await this.authStorage.getApiKey(providerName, { includeFallback: false });\n\t\t\t\t\t\tcredential = { ...credential, key: effectiveApiKey };\n\t\t\t\t\t}\n\t\t\t\t\tif (credential === undefined) {\n\t\t\t\t\t\tconst customAuth = await getProviderResolvedAuth(providerName, this.authStorage, this.providerRequestConfigs);\n\t\t\t\t\t\tif (customAuth) { this.resolvedCustomAuthProviders.add(providerName); credential = { type: \"api_key\", key: customAuth.auth.apiKey, env: customAuth.env }; }\n\t\t\t\t\t\telse this.resolvedCustomAuthProviders.delete(providerName);\n\t\t\t\t\t\tconst configuredApiKey = customAuth ? undefined : await getApiKeyForProviderFromConfig(providerName, this.authStorage, this.providerRequestConfigs);\n\t\t\t\t\t\tif (configuredApiKey !== undefined) credential = { type: \"api_key\", key: configuredApiKey };\n\t\t\t\t\t}\n\t\t\t\t\tif (!isCurrentExtensionRefresh()) return;\n\t\t\t\t\tconst models = await config.refreshModels({\n\t\t\t\t\t\tcredential,\n\t\t\t\t\t\tstore,\n\t\t\t\t\t\tallowNetwork: options.allowNetwork ?? true,\n\t\t\t\t\t\tforce: options.force,\n\t\t\t\t\t\tsignal: controller.signal,\n\t\t\t\t\t});\n\t\t\t\t\tif (!isCurrentExtensionRefresh()) return;\n\t\t\t\t\tconst refreshed = { ...config, models };\n\t\t\t\t\tthis.registeredProviders.set(providerName, refreshed);\n\t\t\t\t\tthis.rebuildProviderModels();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (generation === this.refreshGeneration && !controller.signal.aborted) {\n\t\t\t\t\t\terrors.set(providerName, error instanceof Error ? error : new Error(String(error)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst builtinRefresh = controller.signal.aborted\n\t\t\t\t? Promise.resolve()\n\t\t\t\t: this.providerModels\n\t\t\t\t\t.refresh({ allowNetwork: options.allowNetwork ?? true, force: options.force, signal: controller.signal })\n\t\t\t\t\t.then((result) => {\n\t\t\t\t\t\tif (controller.signal.aborted || generation !== this.refreshGeneration) return;\n\t\t\t\t\t\tfor (const [provider, error] of result.errors) errors.set(provider, error);\n\t\t\t\t\t\tthis.publishProviderModels();\n\t\t\t\t\t});\n\t\t\tawait Promise.race([Promise.all(extensionRefreshes), aborted]);\n\t\t\tawait Promise.race([builtinRefresh, aborted]);\n\t\t} finally {\n\t\t\tclearTimeout(timeout);\n\t\t\toptions.signal?.removeEventListener(\"abort\", abort);\n\t\t}\n\t\treturn { aborted: controller.signal.aborted, errors };\n\t}\n\n\tprivate publishProviderModels(): void {\n\t\tthis.rebuildProviderModels();\n\t}\n\n\tprivate rebuildProviderModels(): void {\n\t\tthis.loadModels(this.providerModels.getModels());\n\t\tfor (const [providerName, config] of this.registeredProviders) {\n\t\t\tthis.applyProviderConfig(providerName, config);\n\t\t}\n\t}\n\n\tprivate providerRegistrationSource(providerName: string): string { return `${this.registrationSource}:${providerName}`; }\n\n\tgetError(): string | undefined {\n\t\treturn this.loadError;\n\t}\n\n\tprivate loadModels(baseModels?: readonly Model<Api>[]): void {\n\t\tconst loaded = loadModelRegistryModels(this.authStorage, this.modelsJsonPaths, baseModels);\n\t\tfor (const providerId of this.configuredProviderIds) {\n\t\t\tconst fallback = this.defaultProviders.get(providerId);\n\t\t\tif (fallback) this.providerModels.setProvider(fallback);\n\t\t\telse this.providerModels.deleteProvider(providerId);\n\t\t}\n\t\tfor (const provider of loaded.configuredProviders.values()) this.providerModels.setProvider(provider);\n\t\tthis.configuredProviderIds = new Set(loaded.configuredProviders.keys());\n\t\tthis.modelOverrides = loaded.modelOverrides;\n\t\tthis.models = loaded.models;\n\t\tthis.providerRequestConfigs = loaded.providerRequestConfigs;\n\t\tthis.modelRequestHeaders = loaded.modelRequestHeaders;\n\t\tthis.builtInProviders = loaded.builtInProviders;\n\t\tthis.customOpenAICompatibleProviders = loaded.customOpenAICompatibleProviders;\n\t\tthis.loadError = loaded.loadError;\n\t}\n\n\tgetAll(): Model<Api>[] { return this.models; }\n\n\tgetAvailable(): Model<Api>[] {\n\t\tconst configured = this.models.filter((model) => this.hasConfiguredAuth(model));\n\t\tconst allowedByProvider = new Map<string, ReadonlySet<string>>();\n\t\tfor (const provider of this.providerModels.getProviders()) {\n\t\t\tconst extension = this.registeredProviders.get(provider.id);\n\t\t\tif (!provider.filterModels || extension?.models || extension?.oauth) continue;\n\t\t\tconst providerModels = configured.filter((model) => model.provider === provider.id);\n\t\t\tconst runtimeApiKey = this.authStorage.getRuntimeApiKey(provider.id);\n\t\t\tconst credential: Credential | undefined = runtimeApiKey === undefined\n\t\t\t\t? this.authStorage.get(provider.id) as Credential | undefined\n\t\t\t\t: { type: \"api_key\", key: runtimeApiKey };\n\t\t\tallowedByProvider.set(\n\t\t\t\tprovider.id,\n\t\t\t\tnew Set(provider.filterModels(providerModels, credential).map((model) => model.id)),\n\t\t\t);\n\t\t}\n\t\treturn configured.filter((model) => allowedByProvider.get(model.provider)?.has(model.id) ?? true);\n\t}\n\n\tfind(provider: string, modelId: string): Model<Api> | undefined { return this.models.find((model) => model.provider === provider && model.id === modelId); }\n\tgetProviders(): readonly Provider[] { return this.providerModels.getProviders(); }\n\tgetProvider(providerId: string): Provider | undefined { return this.providerModels.getProvider(providerId); }\n\tcheckAuth(providerId: string) { return this.providerModels.checkAuth(providerId); }\n\tgetAuth(providerId: string, overrides?: { apiKey?: string; env?: Record<string, string> }): Promise<AuthResult | undefined>;\n\tgetAuth(model: Model<Api>, overrides?: { apiKey?: string; env?: Record<string, string> }): Promise<AuthResult | undefined>;\n\tgetAuth(providerOrModel: string | Model<Api>, overrides?: { apiKey?: string; env?: Record<string, string> }): Promise<AuthResult | undefined> {\n\t\treturn typeof providerOrModel === \"string\" ? this.providerModels.getAuth(providerOrModel, overrides) : this.providerModels.getAuth(providerOrModel, overrides);\n\t}\n\tlogin(providerId: string, type: AuthType, interaction: AuthInteraction): Promise<Credential> { return this.providerModels.login(providerId, type, interaction); }\n\tasync logoutProvider(providerId: string): Promise<void> { await this.providerModels.logout(providerId); this.authStorage.reload(); }\n\n\t/** Whether an authenticated provider may reconstruct an absent saved model ID. */\n\tcanRestoreUnknownModel(provider: string): boolean {\n\t\tif (REMOTE_CATALOG_PROVIDERS.has(provider)) return true;\n\t\tif (this.customOpenAICompatibleProviders.has(provider)) return true;\n\t\tif (this.builtInProviders.has(provider)) return false;\n\n\t\tconst config = this.registeredProviders.get(provider);\n\t\treturn (\n\t\t\tconfig?.models?.some((model) => {\n\t\t\t\tconst api = model.api ?? config.api;\n\t\t\t\treturn api !== undefined && OPENAI_COMPATIBLE_APIS.has(api);\n\t\t\t}) === true\n\t\t);\n\t}\n\n\thasConfiguredAuth(model: Model<Api>): boolean {\n\t\tconst providerApiKey = this.providerRequestConfigs.get(model.provider)?.apiKey;\n\t\treturn (\n\t\t\tthis.authStorage.hasAuth(model.provider) ||\n\t\t\t(providerApiKey !== undefined && isConfigValueConfigured(providerApiKey))\n\t\t);\n\t}\n\n\tprivate getModelRequestKey(provider: string, modelId: string): string {\n\t\treturn `${provider}:${modelId}`;\n\t}\n\n\tprivate storeProviderRequestConfig(providerName: string, config: ProviderRequestConfig): void {\n\t\tif (config.apiKey || config.headers || config.authHeader || config.auth?.apiKey) this.providerRequestConfigs.set(providerName, config);\n\t}\n\n\tprivate storeModelHeaders(providerName: string, modelId: string, headers?: Record<string, string>): void {\n\t\tconst key = this.getModelRequestKey(providerName, modelId);\n\t\tif (!headers || Object.keys(headers).length === 0) {\n\t\t\tthis.modelRequestHeaders.delete(key);\n\t\t\treturn;\n\t\t}\n\t\tthis.modelRequestHeaders.set(key, headers);\n\t}\n\n\t/**\n\t * Get API key and request headers for a model.\n\t */\n\tasync getApiKeyAndHeaders(model: Model<Api>): Promise<ResolvedRequestAuth> {\n\t\ttry {\n\t\t\tconst runtimeApiKey = this.authStorage.getRuntimeApiKey(model.provider);\n\t\t\tconst extensionReplacesOAuth = this.registeredProviders.get(model.provider)?.oauth !== undefined\n\t\t\t\t|| getLegacyOAuthProvider(model.provider) !== undefined;\n\t\t\tconst resolvedProviderAuth = this.providerModels.getProvider(model.provider) && !extensionReplacesOAuth\n\t\t\t\t? (await this.providerModels.getAuth(\n\t\t\t\t\tmodel,\n\t\t\t\t\truntimeApiKey === undefined ? undefined : { apiKey: runtimeApiKey },\n\t\t\t\t))?.auth\n\t\t\t\t: undefined;\n\t\t\tconst storedCredential = this.authStorage.get(model.provider);\n\t\t\tconst storedOAuthAuth = runtimeApiKey !== undefined && !extensionReplacesOAuth && storedCredential?.type === \"oauth\"\n\t\t\t\t? await oauthCredentialToAuth(model.provider, storedCredential)\n\t\t\t\t: undefined;\n\t\t\tconst runtimeBaseUrl = runtimeApiKey !== undefined && model.provider === \"github-copilot\"\n\t\t\t\t? copilotBaseUrlFromRuntimeToken(runtimeApiKey)\n\t\t\t\t: undefined;\n\t\t\tconst providerAuth = runtimeApiKey === undefined\n\t\t\t\t? resolvedProviderAuth\n\t\t\t\t: overlayRuntimeApiKey(runtimeApiKey, resolvedProviderAuth, storedOAuthAuth, runtimeBaseUrl);\n\t\t\treturn getModelRequestAuth(\n\t\t\t\tmodel,\n\t\t\t\tthis.authStorage,\n\t\t\t\tthis.providerRequestConfigs,\n\t\t\t\tthis.modelRequestHeaders,\n\t\t\t\tproviderAuth,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\treturn { ok: false, error: error instanceof Error ? error.message : String(error) };\n\t\t}\n\t}\n\n\t/**\n\t * Return auth status for a provider, including request auth configured in models.json.\n\t * This intentionally does not execute command-backed config values.\n\t */\n\tgetProviderAuthStatus(provider: string): AuthStatus {\n\t\tconst status = getProviderAuthStatusFromConfig(provider, this.authStorage, this.providerRequestConfigs);\n\t\treturn status.source || !this.resolvedCustomAuthProviders.has(provider) ? status : { configured: true, source: \"environment\" };\n\t}\n\t/** Registered extension providers with a custom API-key login contract. */\n\tgetCustomApiKeyAuthProviders(): Array<{ id: string; name: string }> { return [...this.registeredProviders].flatMap(([id, config]) => config.auth?.apiKey ? [{ id, name: config.auth.apiKey.name || this.getProviderDisplayName(id) }] : []); }\n\tgetCustomApiKeyAuth(provider: string) { return this.registeredProviders.get(provider)?.auth?.apiKey; }\n\tasync getProviderAuth(provider: string) { return getProviderResolvedAuth(provider, this.authStorage, this.providerRequestConfigs); }\n\t/**\n\t * Get display name for a provider.\n\t */\n\tgetProviderDisplayName(provider: string): string {\n\t\tconst registeredProvider = this.registeredProviders.get(provider);\n\t\tconst oauthProvider = this.authStorage.getOAuthProviders().find((p) => p.id === provider);\n\n\t\treturn (\n\t\t\tregisteredProvider?.name ??\n\t\t\tregisteredProvider?.oauth?.name ??\n\t\t\toauthProvider?.name ??\n\t\t\tBUILT_IN_PROVIDER_DISPLAY_NAMES[provider] ??\n\t\t\tprovider\n\t\t);\n\t}\n\n\tasync getApiKeyForProvider(provider: string): Promise<string | undefined> {\n\t\treturn getApiKeyForProviderFromConfig(provider, this.authStorage, this.providerRequestConfigs);\n\t}\n\n\tisUsingOAuth(model: Model<Api>): boolean {\n\t\tconst cred = this.authStorage.get(model.provider);\n\t\treturn cred?.type === \"oauth\";\n\t}\n\n\tregisterProvider(provider: Provider): void;\n\tregisterProvider(providerName: string, config: ProviderConfigInput): void;\n\tregisterProvider(providerOrName: Provider | string, config?: ProviderConfigInput): void {\n\t\tif (typeof providerOrName !== \"string\") {\n\t\t\tif (!providerOrName.id.trim()) throw new Error(\"Provider id must not be empty.\");\n\t\t\tthis.registeredProviders.delete(providerOrName.id);\n\t\t\tthis.nativeProviders.set(providerOrName.id, providerOrName);\n\t\t\tthis.providerModels.setProvider(providerOrName);\n\t\t\tthis.rebuildProviderModels();\n\t\t\treturn;\n\t\t}\n\t\tif (!config) throw new Error(\"Provider config is required\");\n\t\tthis.nativeProviders.delete(providerOrName);\n\t\tconst migratedConfig = migrateLegacyRegisterProviderConfigValues(providerOrName, config);\n\t\tvalidateProviderConfig(providerOrName, migratedConfig);\n\t\tconst mergedConfig = this.upsertRegisteredProvider(providerOrName, migratedConfig);\n\t\tunregisterProviderRuntime(this.providerRegistrationSource(providerOrName));\n\t\tthis.rebuildProviderModels();\n\t\tthis.applyProviderConfig(providerOrName, mergedConfig, true);\n\t}\n\n\thasRegisteredStreamSimpleForApi(api: Api): boolean {\n\t\tfor (const config of this.registeredProviders.values()) {\n\t\t\tif (config.api === api && config.streamSimple) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tunregisterProvider(providerName: string): void {\n\t\tconst hadLegacy = this.registeredProviders.delete(providerName);\n\t\tconst hadNative = this.nativeProviders.delete(providerName);\n\t\tif (!hadLegacy && !hadNative) return;\n\t\tunregisterProviderRuntime(this.providerRegistrationSource(providerName));\n\t\tconst fallback = this.defaultProviders.get(providerName);\n\t\tif (fallback) this.providerModels.setProvider(fallback);\n\t\telse this.providerModels.deleteProvider(providerName);\n\t\tthis.rebuildProviderModels();\n\t}\n\n\tprivate upsertRegisteredProvider(providerName: string, config: ProviderConfigInput): ProviderConfigInput {\n\t\tconst definedConfig = Object.fromEntries(\n\t\t\tObject.entries(config).filter(([, value]) => value !== undefined),\n\t\t) as ProviderConfigInput;\n\t\tconst merged = { ...this.registeredProviders.get(providerName), ...definedConfig };\n\t\tthis.registeredProviders.set(providerName, merged);\n\t\treturn merged;\n\t}\n\n\tprivate applyProviderConfig(providerName: string, config: ProviderConfigInput, registerRuntime = false): void {\n\t\tthis.models = applyProviderConfigToModels({\n\t\t\tregistrationSource: this.providerRegistrationSource(providerName),\n\t\t\tregisterRuntime,\n\t\t\tproviderName,\n\t\t\tconfig,\n\t\t\tmodels: this.models,\n\t\t\tmodelOverrides: this.modelOverrides,\n\t\t\tauthStorage: this.authStorage,\n\t\t\tstoreProviderRequestConfig: (name, requestConfig) => this.storeProviderRequestConfig(name, requestConfig),\n\t\t\tstoreModelHeaders: (name, modelId, headers) => this.storeModelHeaders(name, modelId, headers),\n\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Model registry - manages built-in and custom models, provides API key resolution.\n */\n\nimport {\n\tcreateModels,\n\ttype AuthInteraction,\n\ttype AuthResult,\n\ttype AuthType,\n\ttype Credential,\n\ttype CredentialStore,\n\ttype ModelAuth,\n\ttype ModelsRefreshResult,\n\ttype MutableModels,\n\ttype Provider,\n} from \"@earendil-works/pi-ai\";\nimport { builtinProviders, getBuiltinModelDataGeneratedAt } from \"@earendil-works/pi-ai/providers/all\";\nimport { type Api, type Model } from \"@earendil-works/pi-ai/compat\";\nimport { dirname, join } from \"node:path\";\nimport { isDeepStrictEqual } from \"node:util\";\nimport { getAgentConfigPaths } from \"../config.ts\";\nimport { normalizePath } from \"../utils/paths.ts\";\nimport type { AuthStatus, AuthStorage } from \"./auth-storage.ts\";\nimport { getModelRequestAuth, getApiKeyForProviderFromConfig, getProviderAuthStatusFromConfig, getProviderResolvedAuth } from \"./model-registry-auth.ts\";\nimport { applyProviderConfigToModels, migrateLegacyRegisterProviderConfigValues, unregisterProviderRuntime, validateProviderConfig } from \"./model-registry-dynamic.ts\";\nimport { loadModelRegistryModels } from \"./model-registry-loader.ts\";\nimport { refreshExtensionProvider } from \"./model-registry-extension-refresh.ts\";\nimport type { ProviderConfigInput, ProviderRequestConfig, ResolvedRequestAuth } from \"./model-registry-types.ts\";\nimport type { ModelOverride } from \"./model-registry-schemas.ts\";\nimport { BUILT_IN_PROVIDER_DISPLAY_NAMES } from \"./provider-display-names.ts\";\nimport { type CodingAgentModelsStore, FileModelsStore, InMemoryCodingAgentModelsStore } from \"./models-store.ts\";\nimport { getLegacyOAuthProvider, oauthCredentialToAuth } from \"./oauth-provider-bridge.ts\";\nimport { withRemoteCatalog } from \"./remote-catalog-provider.ts\";\nimport { clearConfigValueCache, isConfigValueConfigured } from \"./resolve-config-value.ts\";\nconst REMOTE_CATALOG_PROVIDERS = new Set([\"github-copilot\", \"openrouter\", \"vercel-ai-gateway\"]);\nconst OPENAI_COMPATIBLE_APIS = new Set<Api>([\"openai-completions\", \"openai-responses\"]);\nlet nextRegistryRegistrationId = 0;\n\nfunction overlayRuntimeApiKey(\n\truntimeApiKey: string,\n\tresolvedAuth: ModelAuth | undefined,\n\tstoredOAuthAuth: ModelAuth | undefined,\n\truntimeBaseUrl: string | undefined,\n): ModelAuth {\n\tconst headers = storedOAuthAuth?.headers || resolvedAuth?.headers\n\t\t? { ...storedOAuthAuth?.headers, ...resolvedAuth?.headers }\n\t\t: undefined;\n\treturn {\n\t\t...storedOAuthAuth,\n\t\t...resolvedAuth,\n\t\tapiKey: runtimeApiKey,\n\t\theaders,\n\t\tbaseUrl: runtimeBaseUrl ?? storedOAuthAuth?.baseUrl ?? resolvedAuth?.baseUrl,\n\t};\n}\n\nfunction createProviderCredentialStore(credentials: CredentialStore): CredentialStore {\n\treturn {\n\t\t...credentials,\n\t\tread: async (providerId) => {\n\t\t\tconst credential = await credentials.read(providerId);\n\t\t\tif (credential?.type !== \"oauth\" || !getLegacyOAuthProvider(providerId)) return credential;\n\t\t\tconst auth = await oauthCredentialToAuth(providerId, credential);\n\t\t\treturn auth?.apiKey === undefined ? undefined : { type: \"api_key\", key: auth.apiKey };\n\t\t},\n\t};\n}\n\nexport type { ProviderConfigInput, ResolvedRequestAuth } from \"./model-registry-types.ts\";\n/** Clear the config value command cache. Exported for testing. */\nexport const clearApiKeyCache = clearConfigValueCache;\n/**\n * Model registry - loads and manages models, resolves API keys via AuthStorage.\n */\nexport class ModelRegistry {\n\tprivate models: Model<Api>[] = [];\n\tprivate modelOverrides: Map<string, Map<string, ModelOverride>> = new Map();\n\tprivate providerRequestConfigs: Map<string, ProviderRequestConfig> = new Map();\n\tprivate modelRequestHeaders: Map<string, Record<string, string>> = new Map();\n\tprivate registeredProviders: Map<string, ProviderConfigInput> = new Map();\n\tprivate nativeProviders: Map<string, Provider> = new Map();\n\tprivate builtInProviders: Set<string> = new Set();\n\tprivate customOpenAICompatibleProviders: Set<string> = new Set();\n\tprivate loadError: string | undefined = undefined;\n\tprivate refreshGeneration = 0;\n\tprivate resolvedCustomAuthProviders = new Set<string>();\n\tprivate readonly registrationSource = `atomic:model-registry:${++nextRegistryRegistrationId}`;\n\tdeclare private readonly modelsStore: CodingAgentModelsStore;\n\tdeclare private readonly credentialStore: CredentialStore;\n\tdeclare private readonly providerModels: MutableModels;\n\tprivate readonly defaultProviders = new Map<string, Provider>();\n\tprivate configuredProviderIds = new Set<string>();\n\n\tdeclare readonly authStorage: AuthStorage;\n\tdeclare private readonly modelsJsonPaths: string[];\n\tdeclare private readonly modelDataDir: string | undefined;\n\n\tprivate constructor(\n\t\tauthStorage: AuthStorage,\n\t\tmodelsJsonPaths: string[],\n\t\tmodelDataDir?: string,\n\t) {\n\t\tthis.authStorage = authStorage;\n\t\tthis.modelsJsonPaths = modelsJsonPaths.map((path) => normalizePath(path));\n\t\tthis.modelDataDir = modelDataDir ? normalizePath(modelDataDir) : this.modelsJsonPaths[0] ? dirname(this.modelsJsonPaths[0]) : undefined;\n\t\tthis.modelsStore = this.modelDataDir ? new FileModelsStore(join(this.modelDataDir, \"models-store.json\")) : new InMemoryCodingAgentModelsStore();\n\t\tthis.credentialStore = authStorage.asCredentialStore();\n\t\tthis.providerModels = createModels({\n\t\t\tcredentials: createProviderCredentialStore(this.credentialStore),\n\t\t\tmodelsStore: this.modelsStore,\n\t\t});\n\t\tconst builtinModelDataGeneratedAt = getBuiltinModelDataGeneratedAt();\n\t\tfor (const provider of builtinProviders()) {\n\t\t\tconst configured = provider.id === \"radius\"\n\t\t\t\t? provider\n\t\t\t\t: withRemoteCatalog(provider, undefined, builtinModelDataGeneratedAt);\n\t\t\tthis.defaultProviders.set(provider.id, configured);\n\t\t\tthis.providerModels.setProvider(configured);\n\t\t}\n\t\tthis.loadModels();\n\t}\n\n\tstatic create(\n\t\tauthStorage: AuthStorage,\n\t\tmodelsJsonPath: string | string[] = getAgentConfigPaths(\"models.json\"),\n\t\tmodelDataDir?: string,\n\t): ModelRegistry {\n\t\treturn new ModelRegistry(authStorage, Array.isArray(modelsJsonPath) ? modelsJsonPath : [modelsJsonPath], modelDataDir);\n\t}\n\n\tstatic inMemory(authStorage: AuthStorage): ModelRegistry { return new ModelRegistry(authStorage, []); }\n\n\tasync refresh(options: { signal?: AbortSignal; timeoutMs?: number; force?: boolean; allowNetwork?: boolean } = {}): Promise<ModelsRefreshResult> {\n\t\tconst generation = ++this.refreshGeneration;\n\t\tthis.loadError = undefined;\n\t\tthis.rebuildProviderModels();\n\n\t\tconst controller = new AbortController();\n\t\tconst abort = () => controller.abort();\n\t\toptions.signal?.addEventListener(\"abort\", abort, { once: true });\n\t\tif (options.signal?.aborted) controller.abort(options.signal.reason);\n\t\tconst timeout = setTimeout(abort, options.timeoutMs ?? 15_000);\n\t\tconst errors = new Map<string, Error>();\n\t\tconst aborted = new Promise<void>((resolve) => {\n\t\t\tif (controller.signal.aborted) resolve();\n\t\t\telse controller.signal.addEventListener(\"abort\", () => resolve(), { once: true });\n\t\t});\n\t\ttry {\n\t\t\tconst restore = this.providerModels\n\t\t\t\t.refresh({ allowNetwork: false, signal: controller.signal })\n\t\t\t\t.then((result) => {\n\t\t\t\t\tif (controller.signal.aborted || generation !== this.refreshGeneration) return;\n\t\t\t\t\tfor (const [provider, error] of result.errors) errors.set(provider, error);\n\t\t\t\t\tthis.publishProviderModels();\n\t\t\t\t});\n\t\t\tawait Promise.race([restore, aborted]);\n\n\t\t\tif (options.allowNetwork !== false && !controller.signal.aborted) {\n\t\t\t\tconst legacyOAuthProviders = new Set([\n\t\t\t\t\t...this.models.map((model) => model.provider),\n\t\t\t\t\t...[...this.registeredProviders]\n\t\t\t\t\t\t.filter(([, config]) => config.oauth !== undefined)\n\t\t\t\t\t\t.map(([providerId]) => providerId),\n\t\t\t\t].filter((providerId) => getLegacyOAuthProvider(providerId) !== undefined));\n\t\t\t\tconst refreshLegacyOAuth = Promise.all([...legacyOAuthProviders].map(async (providerId) => {\n\t\t\t\t\tconst credential = this.authStorage.get(providerId);\n\t\t\t\t\tif (credential?.type !== \"oauth\" || Date.now() < credential.expires) return;\n\t\t\t\t\tawait this.authStorage.getModelAuth(providerId, { includeFallback: false });\n\t\t\t\t}));\n\t\t\t\tawait Promise.race([refreshLegacyOAuth, aborted]);\n\t\t\t}\n\n\t\t\tconst extensionRefreshes = controller.signal.aborted ? [] : [...this.registeredProviders].map(async ([providerName, config]) => {\n\t\t\t\tif (!config.refreshModels) return;\n\t\t\t\tconst isCurrentExtensionRefresh = () => !controller.signal.aborted\n\t\t\t\t\t&& generation === this.refreshGeneration\n\t\t\t\t\t&& this.registeredProviders.get(providerName) === config;\n\t\t\t\tconst store = {\n\t\t\t\t\tread: () => this.modelsStore.read(providerName),\n\t\t\t\t\twrite: (entry: Parameters<typeof this.modelsStore.write>[1]) =>\n\t\t\t\t\t\tthis.modelsStore.writeIf(providerName, entry, isCurrentExtensionRefresh),\n\t\t\t\t\tdelete: () => this.modelsStore.deleteIf(providerName, isCurrentExtensionRefresh),\n\t\t\t\t};\n\t\t\t\ttry {\n\t\t\t\t\tlet credential = await this.credentialStore.read(providerName);\n\t\t\t\t\tif (credential?.type === \"api_key\") {\n\t\t\t\t\t\tconst effectiveApiKey = await this.authStorage.getApiKey(providerName, { includeFallback: false });\n\t\t\t\t\t\tcredential = { ...credential, key: effectiveApiKey };\n\t\t\t\t\t}\n\t\t\t\t\tif (credential === undefined) {\n\t\t\t\t\t\tconst customAuth = await getProviderResolvedAuth(providerName, this.authStorage, this.providerRequestConfigs);\n\t\t\t\t\t\tif (customAuth) { this.resolvedCustomAuthProviders.add(providerName); credential = { type: \"api_key\", key: customAuth.auth.apiKey, env: customAuth.env }; }\n\t\t\t\t\t\telse this.resolvedCustomAuthProviders.delete(providerName);\n\t\t\t\t\t\tconst configuredApiKey = customAuth ? undefined : await getApiKeyForProviderFromConfig(providerName, this.authStorage, this.providerRequestConfigs);\n\t\t\t\t\t\tif (configuredApiKey !== undefined) credential = { type: \"api_key\", key: configuredApiKey };\n\t\t\t\t\t}\n\t\t\t\t\tif (!isCurrentExtensionRefresh()) return;\n\t\t\t\t\tconst refreshed = await refreshExtensionProvider({\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tcredential,\n\t\t\t\t\t\tstore,\n\t\t\t\t\t\tallowNetwork: options.allowNetwork ?? true,\n\t\t\t\t\t\tforce: options.force,\n\t\t\t\t\t\tsignal: controller.signal,\n\t\t\t\t\t\tisCurrent: isCurrentExtensionRefresh,\n\t\t\t\t\t});\n\t\t\t\t\tif (!isCurrentExtensionRefresh()) return;\n\t\t\t\t\tif (refreshed.error) errors.set(providerName, refreshed.error);\n\t\t\t\t\tif (!refreshed.models) return;\n\t\t\t\t\tthis.registeredProviders.set(providerName, { ...config, models: refreshed.models });\n\t\t\t\t\tthis.rebuildProviderModels();\n\t\t\t\t} catch (error) { if (isCurrentExtensionRefresh()) errors.set(providerName, error instanceof Error ? error : new Error(String(error))); }\n\t\t\t});\n\t\t\tconst builtinRefresh = controller.signal.aborted\n\t\t\t\t? Promise.resolve()\n\t\t\t\t: this.providerModels\n\t\t\t\t\t.refresh({ allowNetwork: options.allowNetwork ?? true, force: options.force, signal: controller.signal })\n\t\t\t\t\t.then((result) => {\n\t\t\t\t\t\tif (controller.signal.aborted || generation !== this.refreshGeneration) return;\n\t\t\t\t\t\tfor (const [provider, error] of result.errors) errors.set(provider, error);\n\t\t\t\t\t\tthis.publishProviderModels();\n\t\t\t\t\t});\n\t\t\tawait Promise.race([Promise.all(extensionRefreshes), aborted]);\n\t\t\tawait Promise.race([builtinRefresh, aborted]);\n\t\t} finally {\n\t\t\tclearTimeout(timeout);\n\t\t\toptions.signal?.removeEventListener(\"abort\", abort);\n\t\t}\n\t\treturn { aborted: controller.signal.aborted, errors };\n\t}\n\n\tprivate publishProviderModels(): void {\n\t\tthis.rebuildProviderModels();\n\t}\n\n\tprivate rebuildProviderModels(): void {\n\t\tthis.loadModels(this.providerModels.getModels());\n\t\tfor (const [providerName, config] of this.registeredProviders) {\n\t\t\tthis.applyProviderConfig(providerName, config);\n\t\t}\n\t}\n\n\tprivate providerRegistrationSource(providerName: string): string { return `${this.registrationSource}:${providerName}`; }\n\n\tgetError(): string | undefined {\n\t\treturn this.loadError;\n\t}\n\n\tprivate loadModels(baseModels?: readonly Model<Api>[]): void {\n\t\tconst loaded = loadModelRegistryModels(this.authStorage, this.modelsJsonPaths, baseModels);\n\t\tfor (const providerId of this.configuredProviderIds) {\n\t\t\tconst fallback = this.defaultProviders.get(providerId);\n\t\t\tif (fallback) this.providerModels.setProvider(fallback);\n\t\t\telse this.providerModels.deleteProvider(providerId);\n\t\t}\n\t\tfor (const provider of loaded.configuredProviders.values()) this.providerModels.setProvider(provider);\n\t\tthis.configuredProviderIds = new Set(loaded.configuredProviders.keys());\n\t\tthis.modelOverrides = loaded.modelOverrides;\n\t\tconst previousModels = new Map(this.models.map((model) => [`${model.provider}\\0${model.id}`, model]));\n\t\tthis.models = loaded.models.map((model) => {\n\t\t\tconst previous = previousModels.get(`${model.provider}\\0${model.id}`);\n\t\t\treturn previous && isDeepStrictEqual(previous, model) ? previous : model;\n\t\t});\n\t\tthis.providerRequestConfigs = loaded.providerRequestConfigs;\n\t\tthis.modelRequestHeaders = loaded.modelRequestHeaders;\n\t\tthis.builtInProviders = loaded.builtInProviders;\n\t\tthis.customOpenAICompatibleProviders = loaded.customOpenAICompatibleProviders;\n\t\tthis.loadError = loaded.loadError;\n\t}\n\n\tgetAll(): Model<Api>[] { return this.models; }\n\n\tgetAvailable(): Model<Api>[] {\n\t\tconst configured = this.models.filter((model) => this.hasConfiguredAuth(model));\n\t\tconst allowedByProvider = new Map<string, ReadonlySet<string>>();\n\t\tfor (const provider of this.providerModels.getProviders()) {\n\t\t\tconst extension = this.registeredProviders.get(provider.id);\n\t\t\tif (!provider.filterModels || extension?.models || extension?.oauth) continue;\n\t\t\tconst providerModels = configured.filter((model) => model.provider === provider.id);\n\t\t\tconst runtimeApiKey = this.authStorage.getRuntimeApiKey(provider.id);\n\t\t\tconst credential: Credential | undefined = runtimeApiKey === undefined\n\t\t\t\t? this.authStorage.get(provider.id) as Credential | undefined\n\t\t\t\t: { type: \"api_key\", key: runtimeApiKey };\n\t\t\tallowedByProvider.set(\n\t\t\t\tprovider.id,\n\t\t\t\tnew Set(provider.filterModels(providerModels, credential).map((model) => model.id)),\n\t\t\t);\n\t\t}\n\t\treturn configured.filter((model) => allowedByProvider.get(model.provider)?.has(model.id) ?? true);\n\t}\n\n\tfind(provider: string, modelId: string): Model<Api> | undefined { return this.models.find((model) => model.provider === provider && model.id === modelId); }\n\tgetProviders(): readonly Provider[] { return this.providerModels.getProviders(); }\n\tgetProvider(providerId: string): Provider | undefined { return this.providerModels.getProvider(providerId); }\n\t/** Whether an exact provider id belongs to a built-in, configured, or extension registration. */\n\thasProvider(providerId: string): boolean {\n\t\treturn this.registeredProviders.has(providerId)\n\t\t\t|| this.providerModels.getProvider(providerId) !== undefined\n\t\t\t|| this.models.some((model) => model.provider === providerId);\n\t}\n\tcheckAuth(providerId: string) { return this.providerModels.checkAuth(providerId); }\n\tgetAuth(providerId: string, overrides?: { apiKey?: string; env?: Record<string, string> }): Promise<AuthResult | undefined>;\n\tgetAuth(model: Model<Api>, overrides?: { apiKey?: string; env?: Record<string, string> }): Promise<AuthResult | undefined>;\n\tgetAuth(providerOrModel: string | Model<Api>, overrides?: { apiKey?: string; env?: Record<string, string> }): Promise<AuthResult | undefined> {\n\t\treturn typeof providerOrModel === \"string\" ? this.providerModels.getAuth(providerOrModel, overrides) : this.providerModels.getAuth(providerOrModel, overrides);\n\t}\n\tlogin(providerId: string, type: AuthType, interaction: AuthInteraction): Promise<Credential> { return this.providerModels.login(providerId, type, interaction); }\n\tasync logoutProvider(providerId: string): Promise<void> { await this.providerModels.logout(providerId); this.authStorage.reload(); }\n\n\t/** Whether an authenticated provider may reconstruct an absent saved model ID. */\n\tcanRestoreUnknownModel(provider: string): boolean {\n\t\tif (REMOTE_CATALOG_PROVIDERS.has(provider)) return true;\n\t\tif (this.customOpenAICompatibleProviders.has(provider)) return true;\n\t\tif (this.builtInProviders.has(provider)) return false;\n\n\t\tconst config = this.registeredProviders.get(provider);\n\t\treturn (\n\t\t\tconfig?.models?.some((model) => {\n\t\t\t\tconst api = model.api ?? config.api;\n\t\t\t\treturn api !== undefined && OPENAI_COMPATIBLE_APIS.has(api);\n\t\t\t}) === true\n\t\t);\n\t}\n\n\thasConfiguredAuth(model: Model<Api>): boolean {\n\t\tconst providerApiKey = this.providerRequestConfigs.get(model.provider)?.apiKey;\n\t\treturn (\n\t\t\tthis.authStorage.hasAuth(model.provider) ||\n\t\t\t(providerApiKey !== undefined && isConfigValueConfigured(providerApiKey))\n\t\t);\n\t}\n\n\tprivate getModelRequestKey(provider: string, modelId: string): string {\n\t\treturn `${provider}:${modelId}`;\n\t}\n\n\tprivate storeProviderRequestConfig(providerName: string, config: ProviderRequestConfig): void {\n\t\tif (config.apiKey || config.headers || config.authHeader || config.auth?.apiKey) this.providerRequestConfigs.set(providerName, config);\n\t}\n\n\tprivate storeModelHeaders(providerName: string, modelId: string, headers?: Record<string, string>): void {\n\t\tconst key = this.getModelRequestKey(providerName, modelId);\n\t\tif (!headers || Object.keys(headers).length === 0) {\n\t\t\tthis.modelRequestHeaders.delete(key);\n\t\t\treturn;\n\t\t}\n\t\tthis.modelRequestHeaders.set(key, headers);\n\t}\n\n\t/**\n\t * Get API key and request headers for a model.\n\t */\n\tasync getApiKeyAndHeaders(model: Model<Api>): Promise<ResolvedRequestAuth> {\n\t\ttry {\n\t\t\tconst runtimeApiKey = this.authStorage.getRuntimeApiKey(model.provider);\n\t\t\tconst extensionReplacesOAuth = this.registeredProviders.get(model.provider)?.oauth !== undefined\n\t\t\t\t|| getLegacyOAuthProvider(model.provider) !== undefined;\n\t\t\tconst resolvedProviderAuth = this.providerModels.getProvider(model.provider) && !extensionReplacesOAuth\n\t\t\t\t? (await this.providerModels.getAuth(\n\t\t\t\t\tmodel,\n\t\t\t\t\truntimeApiKey === undefined ? undefined : { apiKey: runtimeApiKey },\n\t\t\t\t))?.auth\n\t\t\t\t: undefined;\n\t\t\tconst storedCredential = this.authStorage.get(model.provider);\n\t\t\tconst storedOAuthAuth = runtimeApiKey !== undefined && !extensionReplacesOAuth && storedCredential?.type === \"oauth\"\n\t\t\t\t? await oauthCredentialToAuth(model.provider, storedCredential)\n\t\t\t\t: undefined;\n\t\t\tconst providerAuth = runtimeApiKey === undefined\n\t\t\t\t? resolvedProviderAuth\n\t\t\t\t: overlayRuntimeApiKey(runtimeApiKey, resolvedProviderAuth, storedOAuthAuth, undefined);\n\t\t\treturn getModelRequestAuth(\n\t\t\t\tmodel,\n\t\t\t\tthis.authStorage,\n\t\t\t\tthis.providerRequestConfigs,\n\t\t\t\tthis.modelRequestHeaders,\n\t\t\t\tproviderAuth,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\treturn { ok: false, error: error instanceof Error ? error.message : String(error) };\n\t\t}\n\t}\n\n\t/**\n\t * Return auth status for a provider, including request auth configured in models.json.\n\t * This intentionally does not execute command-backed config values.\n\t */\n\tgetProviderAuthStatus(provider: string): AuthStatus {\n\t\tconst status = getProviderAuthStatusFromConfig(provider, this.authStorage, this.providerRequestConfigs);\n\t\treturn status.source || !this.resolvedCustomAuthProviders.has(provider) ? status : { configured: true, source: \"environment\" };\n\t}\n\t/** Registered extension providers with a custom API-key login contract. */\n\tgetCustomApiKeyAuthProviders(): Array<{ id: string; name: string }> { return [...this.registeredProviders].flatMap(([id, config]) => config.auth?.apiKey ? [{ id, name: config.auth.apiKey.name || this.getProviderDisplayName(id) }] : []); }\n\tgetCustomApiKeyAuth(provider: string) { return this.registeredProviders.get(provider)?.auth?.apiKey; }\n\tasync getProviderAuth(provider: string) { return getProviderResolvedAuth(provider, this.authStorage, this.providerRequestConfigs); }\n\t/**\n\t * Get display name for a provider.\n\t */\n\tgetProviderDisplayName(provider: string): string {\n\t\tconst registeredProvider = this.registeredProviders.get(provider);\n\t\tconst oauthProvider = this.authStorage.getOAuthProviders().find((p) => p.id === provider);\n\n\t\treturn (\n\t\t\tregisteredProvider?.name ??\n\t\t\tregisteredProvider?.oauth?.name ??\n\t\t\toauthProvider?.name ??\n\t\t\tBUILT_IN_PROVIDER_DISPLAY_NAMES[provider] ??\n\t\t\tprovider\n\t\t);\n\t}\n\n\tasync getApiKeyForProvider(provider: string): Promise<string | undefined> {\n\t\treturn getApiKeyForProviderFromConfig(provider, this.authStorage, this.providerRequestConfigs);\n\t}\n\n\tisUsingOAuth(model: Model<Api>): boolean {\n\t\tconst cred = this.authStorage.get(model.provider);\n\t\treturn cred?.type === \"oauth\";\n\t}\n\n\tregisterProvider(provider: Provider): void;\n\tregisterProvider(providerName: string, config: ProviderConfigInput): void;\n\tregisterProvider(providerOrName: Provider | string, config?: ProviderConfigInput): void {\n\t\tif (typeof providerOrName !== \"string\") {\n\t\t\tif (!providerOrName.id.trim()) throw new Error(\"Provider id must not be empty.\");\n\t\t\tthis.registeredProviders.delete(providerOrName.id);\n\t\t\tthis.nativeProviders.set(providerOrName.id, providerOrName);\n\t\t\tthis.providerModels.setProvider(providerOrName);\n\t\t\tthis.rebuildProviderModels();\n\t\t\treturn;\n\t\t}\n\t\tif (!config) throw new Error(\"Provider config is required\");\n\t\tthis.nativeProviders.delete(providerOrName);\n\t\tconst migratedConfig = migrateLegacyRegisterProviderConfigValues(providerOrName, config);\n\t\tvalidateProviderConfig(providerOrName, migratedConfig);\n\t\tconst mergedConfig = this.upsertRegisteredProvider(providerOrName, migratedConfig);\n\t\tunregisterProviderRuntime(this.providerRegistrationSource(providerOrName));\n\t\tthis.rebuildProviderModels();\n\t\tthis.applyProviderConfig(providerOrName, mergedConfig, true);\n\t}\n\n\thasRegisteredStreamSimpleForApi(api: Api): boolean {\n\t\tfor (const config of this.registeredProviders.values()) {\n\t\t\tif (config.api === api && config.streamSimple) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tunregisterProvider(providerName: string): void {\n\t\tconst hadLegacy = this.registeredProviders.delete(providerName);\n\t\tconst hadNative = this.nativeProviders.delete(providerName);\n\t\tif (!hadLegacy && !hadNative) return;\n\t\tunregisterProviderRuntime(this.providerRegistrationSource(providerName));\n\t\tconst fallback = this.defaultProviders.get(providerName);\n\t\tif (fallback) this.providerModels.setProvider(fallback);\n\t\telse this.providerModels.deleteProvider(providerName);\n\t\tthis.rebuildProviderModels();\n\t}\n\n\tprivate upsertRegisteredProvider(providerName: string, config: ProviderConfigInput): ProviderConfigInput {\n\t\tconst definedConfig = Object.fromEntries(\n\t\t\tObject.entries(config).filter(([, value]) => value !== undefined),\n\t\t) as ProviderConfigInput;\n\t\tconst merged = { ...this.registeredProviders.get(providerName), ...definedConfig };\n\t\tthis.registeredProviders.set(providerName, merged);\n\t\treturn merged;\n\t}\n\n\tprivate applyProviderConfig(providerName: string, config: ProviderConfigInput, registerRuntime = false): void {\n\t\tthis.models = applyProviderConfigToModels({\n\t\t\tregistrationSource: this.providerRegistrationSource(providerName),\n\t\t\tregisterRuntime,\n\t\t\tproviderName,\n\t\t\tconfig,\n\t\t\tmodels: this.models,\n\t\t\tmodelOverrides: this.modelOverrides,\n\t\t\tauthStorage: this.authStorage,\n\t\t\tstoreProviderRequestConfig: (name, requestConfig) => this.storeProviderRequestConfig(name, requestConfig),\n\t\t\tstoreModelHeaders: (name, modelId, headers) => this.storeModelHeaders(name, modelId, headers),\n\t\t});\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolver-defaults.d.ts","sourceRoot":"","sources":["../../src/core/model-resolver-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAE/D,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAwC1D,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,eAAe,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CASjG"}
1
+ {"version":3,"file":"model-resolver-defaults.d.ts","sourceRoot":"","sources":["../../src/core/model-resolver-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAE/D,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuC1D,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,eAAe,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CASjG"}
@@ -11,7 +11,6 @@ export const defaultModelPerProvider = {
11
11
  google: "gemini-3.1-pro-preview",
12
12
  "google-vertex": "gemini-3.1-pro-preview",
13
13
  "github-copilot": "gpt-5.4",
14
- cursor: "composer-2",
15
14
  openrouter: "moonshotai/kimi-k2.6",
16
15
  "vercel-ai-gateway": "zai/glm-5.1",
17
16
  xai: "grok-4.20-0309-reasoning",
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolver-defaults.js","sourceRoot":"","sources":["../../src/core/model-resolver-defaults.ts"],"names":[],"mappings":"AAEA,gDAAgD;AAChD,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC7D,gBAAgB,EAAE,iCAAiC;IACnD,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,SAAS;IACjB,wBAAwB,EAAE,SAAS;IACnC,cAAc,EAAE,SAAS;IACzB,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,mCAAmC;IAC3C,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,wBAAwB;IAChC,eAAe,EAAE,wBAAwB;IACzC,gBAAgB,EAAE,SAAS;IAC3B,MAAM,EAAE,YAAY;IACpB,UAAU,EAAE,sBAAsB;IAClC,mBAAmB,EAAE,aAAa;IAClC,GAAG,EAAE,0BAA0B;IAC/B,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,aAAa;IACzB,GAAG,EAAE,SAAS;IACd,eAAe,EAAE,SAAS;IAC1B,OAAO,EAAE,wBAAwB;IACjC,OAAO,EAAE,cAAc;IACvB,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,WAAW;IACvB,eAAe,EAAE,WAAW;IAC5B,WAAW,EAAE,sBAAsB;IACnC,SAAS,EAAE,qCAAqC;IAChD,QAAQ,EAAE,sBAAsB;IAChC,QAAQ,EAAE,WAAW;IACrB,aAAa,EAAE,WAAW;IAC1B,aAAa,EAAE,iBAAiB;IAChC,uBAAuB,EAAE,0BAA0B;IACnD,uBAAuB,EAAE,qCAAqC;IAC9D,iBAAiB,EAAE,aAAa;IAChC,oBAAoB,EAAE,aAAa;IACnC,MAAM,EAAE,eAAe;IACvB,sBAAsB,EAAE,eAAe;IACvC,uBAAuB,EAAE,eAAe;IACxC,uBAAuB,EAAE,eAAe;CACzC,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,eAA6B;IACvE,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC5E,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACzF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC","sourcesContent":["import type { Api, Model } from \"@earendil-works/pi-ai/compat\";\n\n/** Default model IDs for each known provider */\nexport const defaultModelPerProvider: Record<string, string> = {\n \"amazon-bedrock\": \"us.anthropic.claude-opus-4-6-v1\",\n anthropic: \"claude-opus-4-8\",\n openai: \"gpt-5.5\",\n \"azure-openai-responses\": \"gpt-5.4\",\n \"openai-codex\": \"gpt-5.5\",\n radius: \"auto\",\n nvidia: \"nvidia/nemotron-3-super-120b-a12b\",\n deepseek: \"deepseek-v4-pro\",\n google: \"gemini-3.1-pro-preview\",\n \"google-vertex\": \"gemini-3.1-pro-preview\",\n \"github-copilot\": \"gpt-5.4\",\n cursor: \"composer-2\",\n openrouter: \"moonshotai/kimi-k2.6\",\n \"vercel-ai-gateway\": \"zai/glm-5.1\",\n xai: \"grok-4.20-0309-reasoning\",\n groq: \"openai/gpt-oss-120b\",\n cerebras: \"zai-glm-4.7\",\n \"ant-ling\": \"Ring-2.6-1T\",\n zai: \"glm-5.1\",\n \"zai-coding-cn\": \"glm-5.1\",\n mistral: \"devstral-medium-latest\",\n minimax: \"MiniMax-M2.7\",\n \"minimax-cn\": \"MiniMax-M2.7\",\n moonshotai: \"kimi-k2.6\",\n \"moonshotai-cn\": \"kimi-k2.6\",\n huggingface: \"moonshotai/Kimi-K2.6\",\n fireworks: \"accounts/fireworks/models/kimi-k2p6\",\n together: \"moonshotai/Kimi-K2.6\",\n opencode: \"kimi-k2.6\",\n \"opencode-go\": \"kimi-k2.6\",\n \"kimi-coding\": \"kimi-for-coding\",\n \"cloudflare-workers-ai\": \"@cf/moonshotai/kimi-k2.6\",\n \"cloudflare-ai-gateway\": \"workers-ai/@cf/moonshotai/kimi-k2.6\",\n \"qwen-token-plan\": \"qwen3.7-max\",\n \"qwen-token-plan-cn\": \"qwen3.7-max\",\n xiaomi: \"mimo-v2.5-pro\",\n \"xiaomi-token-plan-cn\": \"mimo-v2.5-pro\",\n \"xiaomi-token-plan-ams\": \"mimo-v2.5-pro\",\n \"xiaomi-token-plan-sgp\": \"mimo-v2.5-pro\",\n};\n\nexport function findPreferredAvailableModel(availableModels: Model<Api>[]): Model<Api> | undefined {\n for (const [provider, defaultId] of Object.entries(defaultModelPerProvider)) {\n const match = availableModels.find((m) => m.provider === provider && m.id === defaultId);\n if (match) {\n return match;\n }\n }\n\n return availableModels[0];\n}\n"]}
1
+ {"version":3,"file":"model-resolver-defaults.js","sourceRoot":"","sources":["../../src/core/model-resolver-defaults.ts"],"names":[],"mappings":"AAEA,gDAAgD;AAChD,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC7D,gBAAgB,EAAE,iCAAiC;IACnD,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,SAAS;IACjB,wBAAwB,EAAE,SAAS;IACnC,cAAc,EAAE,SAAS;IACzB,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,mCAAmC;IAC3C,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,wBAAwB;IAChC,eAAe,EAAE,wBAAwB;IACzC,gBAAgB,EAAE,SAAS;IAC3B,UAAU,EAAE,sBAAsB;IAClC,mBAAmB,EAAE,aAAa;IAClC,GAAG,EAAE,0BAA0B;IAC/B,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,aAAa;IACzB,GAAG,EAAE,SAAS;IACd,eAAe,EAAE,SAAS;IAC1B,OAAO,EAAE,wBAAwB;IACjC,OAAO,EAAE,cAAc;IACvB,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,WAAW;IACvB,eAAe,EAAE,WAAW;IAC5B,WAAW,EAAE,sBAAsB;IACnC,SAAS,EAAE,qCAAqC;IAChD,QAAQ,EAAE,sBAAsB;IAChC,QAAQ,EAAE,WAAW;IACrB,aAAa,EAAE,WAAW;IAC1B,aAAa,EAAE,iBAAiB;IAChC,uBAAuB,EAAE,0BAA0B;IACnD,uBAAuB,EAAE,qCAAqC;IAC9D,iBAAiB,EAAE,aAAa;IAChC,oBAAoB,EAAE,aAAa;IACnC,MAAM,EAAE,eAAe;IACvB,sBAAsB,EAAE,eAAe;IACvC,uBAAuB,EAAE,eAAe;IACxC,uBAAuB,EAAE,eAAe;CACzC,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,eAA6B;IACvE,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC5E,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACzF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC","sourcesContent":["import type { Api, Model } from \"@earendil-works/pi-ai/compat\";\n\n/** Default model IDs for each known provider */\nexport const defaultModelPerProvider: Record<string, string> = {\n \"amazon-bedrock\": \"us.anthropic.claude-opus-4-6-v1\",\n anthropic: \"claude-opus-4-8\",\n openai: \"gpt-5.5\",\n \"azure-openai-responses\": \"gpt-5.4\",\n \"openai-codex\": \"gpt-5.5\",\n radius: \"auto\",\n nvidia: \"nvidia/nemotron-3-super-120b-a12b\",\n deepseek: \"deepseek-v4-pro\",\n google: \"gemini-3.1-pro-preview\",\n \"google-vertex\": \"gemini-3.1-pro-preview\",\n \"github-copilot\": \"gpt-5.4\",\n openrouter: \"moonshotai/kimi-k2.6\",\n \"vercel-ai-gateway\": \"zai/glm-5.1\",\n xai: \"grok-4.20-0309-reasoning\",\n groq: \"openai/gpt-oss-120b\",\n cerebras: \"zai-glm-4.7\",\n \"ant-ling\": \"Ring-2.6-1T\",\n zai: \"glm-5.1\",\n \"zai-coding-cn\": \"glm-5.1\",\n mistral: \"devstral-medium-latest\",\n minimax: \"MiniMax-M2.7\",\n \"minimax-cn\": \"MiniMax-M2.7\",\n moonshotai: \"kimi-k2.6\",\n \"moonshotai-cn\": \"kimi-k2.6\",\n huggingface: \"moonshotai/Kimi-K2.6\",\n fireworks: \"accounts/fireworks/models/kimi-k2p6\",\n together: \"moonshotai/Kimi-K2.6\",\n opencode: \"kimi-k2.6\",\n \"opencode-go\": \"kimi-k2.6\",\n \"kimi-coding\": \"kimi-for-coding\",\n \"cloudflare-workers-ai\": \"@cf/moonshotai/kimi-k2.6\",\n \"cloudflare-ai-gateway\": \"workers-ai/@cf/moonshotai/kimi-k2.6\",\n \"qwen-token-plan\": \"qwen3.7-max\",\n \"qwen-token-plan-cn\": \"qwen3.7-max\",\n xiaomi: \"mimo-v2.5-pro\",\n \"xiaomi-token-plan-cn\": \"mimo-v2.5-pro\",\n \"xiaomi-token-plan-ams\": \"mimo-v2.5-pro\",\n \"xiaomi-token-plan-sgp\": \"mimo-v2.5-pro\",\n};\n\nexport function findPreferredAvailableModel(availableModels: Model<Api>[]): Model<Api> | undefined {\n for (const [provider, defaultId] of Object.entries(defaultModelPerProvider)) {\n const match = availableModels.find((m) => m.provider === provider && m.id === defaultId);\n if (match) {\n return match;\n }\n }\n\n return availableModels[0];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolver-initial.d.ts","sourceRoot":"","sources":["../../src/core/model-resolver-initial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAUjF;;;;GAIG;AACH,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAKjC;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,aAAa,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;CAC9B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmE9B;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,EACpC,mBAAmB,EAAE,OAAO,EAC5B,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC;IACT,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAC9B,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC,CAyCD"}
1
+ {"version":3,"file":"model-resolver-initial.d.ts","sourceRoot":"","sources":["../../src/core/model-resolver-initial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAajF;;;;GAIG;AACH,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAKjC;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,aAAa,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;CAC9B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA2E9B;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,EACpC,mBAAmB,EAAE,OAAO,EAC5B,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC;IACT,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAC9B,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC,CAyCD"}
@@ -3,6 +3,7 @@ import { DEFAULT_THINKING_LEVEL } from "./defaults.js";
3
3
  import { findPreferredAvailableModel } from "./model-resolver-defaults.js";
4
4
  import { buildFallbackModel } from "./model-resolver-patterns.js";
5
5
  import { resolveCliModel } from "./model-resolver-cli.js";
6
+ const CONFIGURED_DEFAULT_MODEL_UNAVAILABLE_MESSAGE = "Configured default model is unavailable or unsupported. Update defaultProvider/defaultModel or use /model.";
6
7
  async function buildConfiguredProviderFallbackModel(provider, modelId, modelRegistry) {
7
8
  return buildFallbackModel(provider, modelId, await modelRegistry.getAvailable());
8
9
  }
@@ -65,6 +66,14 @@ export async function findInitialModel(options) {
65
66
  }
66
67
  return { model, thinkingLevel, fallbackMessage: undefined };
67
68
  }
69
+ if (!modelRegistry.hasProvider(defaultProvider)) {
70
+ return {
71
+ model: undefined,
72
+ thinkingLevel: DEFAULT_THINKING_LEVEL,
73
+ fallbackMessage: CONFIGURED_DEFAULT_MODEL_UNAVAILABLE_MESSAGE,
74
+ fallbackReason: "configured-provider-unsupported",
75
+ };
76
+ }
68
77
  }
69
78
  const availableModels = await modelRegistry.getAvailable();
70
79
  if (availableModels.length > 0) {