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

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 (1127) hide show
  1. package/CHANGELOG.md +63 -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 +12 -0
  11. package/dist/builtin/subagents/README.md +1 -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 +27 -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/src/extension/prompt-guidance.ts +1 -1
  30. package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +23 -4
  31. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +2 -0
  32. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +10 -0
  33. package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +1 -0
  34. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +2 -0
  35. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +8 -0
  36. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +1 -0
  37. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +6 -0
  38. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +2 -0
  39. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +7 -0
  40. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +1 -0
  41. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +3 -0
  42. package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +1 -2
  43. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +1 -0
  44. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +5 -3
  45. package/dist/builtin/subagents/src/shared/settings.ts +4 -0
  46. package/dist/builtin/web-access/package.json +2 -2
  47. package/dist/builtin/workflows/CHANGELOG.md +44 -0
  48. package/dist/builtin/workflows/README.md +72 -70
  49. package/dist/builtin/workflows/ambient.d.ts +0 -5
  50. package/dist/builtin/workflows/builtin/adversarial-verification-prompts.ts +7 -4
  51. package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +1 -1
  52. package/dist/builtin/workflows/builtin/adversarial-verification.ts +2 -1
  53. package/dist/builtin/workflows/builtin/classify-and-act-prompts.ts +5 -2
  54. package/dist/builtin/workflows/builtin/classify-and-act-runner.ts +5 -7
  55. package/dist/builtin/workflows/builtin/classify-and-act.ts +3 -2
  56. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-prompts.ts +6 -3
  57. package/dist/builtin/workflows/builtin/fan-out-and-synthesize-runner.ts +5 -5
  58. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +3 -2
  59. package/dist/builtin/workflows/builtin/generate-and-filter-prompts.ts +7 -4
  60. package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +6 -3
  61. package/dist/builtin/workflows/builtin/generate-and-filter.ts +3 -2
  62. package/dist/builtin/workflows/builtin/goal-models.ts +14 -18
  63. package/dist/builtin/workflows/builtin/goal-orchestrator-prompts.ts +39 -78
  64. package/dist/builtin/workflows/builtin/goal-prompts.ts +64 -244
  65. package/dist/builtin/workflows/builtin/goal-runner.ts +32 -64
  66. package/dist/builtin/workflows/builtin/goal.ts +2 -1
  67. package/dist/builtin/workflows/builtin/index.d.ts +17 -112
  68. package/dist/builtin/workflows/builtin/index.ts +1 -2
  69. package/dist/builtin/workflows/builtin/loop-until-done-prompts.ts +20 -12
  70. package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +3 -0
  71. package/dist/builtin/workflows/builtin/loop-until-done.ts +3 -2
  72. package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +52 -55
  73. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +45 -52
  74. package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +41 -46
  75. package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +16 -21
  76. package/dist/builtin/workflows/builtin/open-claude-design.ts +2 -1
  77. package/dist/builtin/workflows/builtin/ralph-core.ts +61 -57
  78. package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +41 -45
  79. package/dist/builtin/workflows/builtin/ralph-models.ts +33 -43
  80. package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +35 -120
  81. package/dist/builtin/workflows/builtin/ralph-runner.ts +81 -108
  82. package/dist/builtin/workflows/builtin/ralph.ts +2 -1
  83. package/dist/builtin/workflows/builtin/shared-prompts.ts +110 -93
  84. package/dist/builtin/workflows/builtin/steering-context.ts +51 -0
  85. package/dist/builtin/workflows/builtin/tournament-prompts.ts +21 -12
  86. package/dist/builtin/workflows/builtin/tournament-runner.ts +3 -0
  87. package/dist/builtin/workflows/builtin/tournament.ts +3 -2
  88. package/dist/builtin/workflows/package.json +2 -2
  89. package/dist/builtin/workflows/skills/create-spec/SKILL.md +1 -1
  90. package/dist/builtin/workflows/skills/impeccable/SKILL.md +33 -129
  91. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_asset_producer.toml +11 -3
  92. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_documenter.toml +26 -0
  93. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_finish_reviewer.toml +35 -0
  94. package/dist/builtin/workflows/skills/impeccable/reference/android.md +1 -1
  95. package/dist/builtin/workflows/skills/impeccable/reference/animate.md +72 -189
  96. package/dist/builtin/workflows/skills/impeccable/reference/audit.md +10 -9
  97. package/dist/builtin/workflows/skills/impeccable/reference/audit.native.md +2 -2
  98. package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +19 -108
  99. package/dist/builtin/workflows/skills/impeccable/reference/clarify.md +59 -253
  100. package/dist/builtin/workflows/skills/impeccable/reference/colorize.md +51 -222
  101. package/dist/builtin/workflows/skills/impeccable/reference/craft-floor.md +45 -0
  102. package/dist/builtin/workflows/skills/impeccable/reference/craft.md +3 -121
  103. package/dist/builtin/workflows/skills/impeccable/reference/critique.md +28 -20
  104. package/dist/builtin/workflows/skills/impeccable/reference/degraded/asset-producer.md +97 -0
  105. package/dist/builtin/workflows/skills/impeccable/reference/degraded/documenter.md +23 -0
  106. package/dist/builtin/workflows/skills/impeccable/reference/degraded/finish-reviewer.md +32 -0
  107. package/dist/builtin/workflows/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
  108. package/dist/builtin/workflows/skills/impeccable/reference/delight.md +47 -279
  109. package/dist/builtin/workflows/skills/impeccable/reference/distill.md +2 -2
  110. package/dist/builtin/workflows/skills/impeccable/reference/doctor.md +53 -0
  111. package/dist/builtin/workflows/skills/impeccable/reference/document.md +60 -73
  112. package/dist/builtin/workflows/skills/impeccable/reference/harden.md +1 -12
  113. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +23 -12
  114. package/dist/builtin/workflows/skills/impeccable/reference/init.md +64 -163
  115. package/dist/builtin/workflows/skills/impeccable/reference/ios.md +1 -1
  116. package/dist/builtin/workflows/skills/impeccable/reference/layout.md +52 -153
  117. package/dist/builtin/workflows/skills/impeccable/reference/live.md +47 -36
  118. package/dist/builtin/workflows/skills/impeccable/reference/new-work.md +105 -0
  119. package/dist/builtin/workflows/skills/impeccable/reference/{product.md → operate.md} +6 -5
  120. package/dist/builtin/workflows/skills/impeccable/reference/optimize.md +4 -4
  121. package/dist/builtin/workflows/skills/impeccable/reference/overdrive.md +1 -4
  122. package/dist/builtin/workflows/skills/impeccable/reference/polish.md +68 -212
  123. package/dist/builtin/workflows/skills/impeccable/reference/quieter.md +3 -3
  124. package/dist/builtin/workflows/skills/impeccable/reference/routing.md +18 -0
  125. package/dist/builtin/workflows/skills/impeccable/reference/shape.md +38 -144
  126. package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +48 -269
  127. package/dist/builtin/workflows/skills/impeccable/reference/visualize.md +38 -0
  128. package/dist/builtin/workflows/skills/impeccable/scripts/command-metadata.json +1 -1
  129. package/dist/builtin/workflows/skills/impeccable/scripts/concept-seed.mjs +584 -0
  130. package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +117 -9
  131. package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +486 -59
  132. package/dist/builtin/workflows/skills/impeccable/scripts/critique-storage.mjs +16 -45
  133. package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +96 -10
  134. package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +143 -26
  135. package/dist/builtin/workflows/skills/impeccable/scripts/detector/design-system.mjs +181 -12
  136. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +3187 -182
  137. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +102 -7
  138. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +282 -70
  139. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +183 -15
  140. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +22 -7
  141. package/dist/builtin/workflows/skills/impeccable/scripts/detector/findings.mjs +7 -1
  142. package/dist/builtin/workflows/skills/impeccable/scripts/detector/node/file-system.mjs +16 -2
  143. package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +155 -42
  144. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +2988 -155
  145. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/constants.mjs +11 -0
  146. package/dist/builtin/workflows/skills/impeccable/scripts/doctor.mjs +336 -0
  147. package/dist/builtin/workflows/skills/impeccable/scripts/generate-image.mjs +232 -0
  148. package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +92 -30
  149. package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +414 -120
  150. package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +25 -8
  151. package/dist/builtin/workflows/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
  152. package/dist/builtin/workflows/skills/impeccable/scripts/lib/composition-catalog.mjs +165 -0
  153. package/dist/builtin/workflows/skills/impeccable/scripts/lib/concept-catalog.mjs +329 -0
  154. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-config.mjs +20 -5
  155. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-paths.mjs +16 -8
  156. package/dist/builtin/workflows/skills/impeccable/scripts/lib/provider.mjs +1 -0
  157. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-deep.mjs +455 -0
  158. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
  159. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness.mjs +457 -0
  160. package/dist/builtin/workflows/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
  161. package/dist/builtin/workflows/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
  162. package/dist/builtin/workflows/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
  163. package/dist/builtin/workflows/skills/impeccable/scripts/live/completion.mjs +10 -1
  164. package/dist/builtin/workflows/skills/impeccable/scripts/live/event-validation.mjs +15 -0
  165. package/dist/builtin/workflows/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
  166. package/dist/builtin/workflows/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
  167. package/dist/builtin/workflows/skills/impeccable/scripts/live/session-store.mjs +109 -32
  168. package/dist/builtin/workflows/skills/impeccable/scripts/live/source-lock.mjs +105 -0
  169. package/dist/builtin/workflows/skills/impeccable/scripts/live/source-search.mjs +105 -0
  170. package/dist/builtin/workflows/skills/impeccable/scripts/live/sveltekit-adapter.mjs +8 -6
  171. package/dist/builtin/workflows/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
  172. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +208 -68
  173. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +565 -115
  174. package/dist/builtin/workflows/skills/impeccable/scripts/live-commit-manual-edits.mjs +3 -0
  175. package/dist/builtin/workflows/skills/impeccable/scripts/live-inject.mjs +198 -14
  176. package/dist/builtin/workflows/skills/impeccable/scripts/live-insert.mjs +24 -6
  177. package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +6 -1
  178. package/dist/builtin/workflows/skills/impeccable/scripts/live-poll.mjs +44 -14
  179. package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +398 -33
  180. package/dist/builtin/workflows/skills/impeccable/scripts/live-status.mjs +9 -5
  181. package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +81 -67
  182. package/dist/builtin/workflows/skills/impeccable/scripts/live.mjs +7 -2
  183. package/dist/builtin/workflows/skills/impeccable/scripts/palette.mjs +76 -81
  184. package/dist/builtin/workflows/skills/impeccable/scripts/pin.mjs +4 -4
  185. package/dist/builtin/workflows/skills/impeccable/scripts/serve-question.mjs +890 -0
  186. package/dist/builtin/workflows/skills/impeccable/scripts/surface-brief.mjs +74 -0
  187. package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +57 -252
  188. package/dist/builtin/workflows/skills/prompt-engineer/references/advanced_patterns.md +70 -226
  189. package/dist/builtin/workflows/skills/prompt-engineer/references/core_prompting.md +64 -103
  190. package/dist/builtin/workflows/skills/prompt-engineer/references/quality_improvement.md +81 -155
  191. package/dist/builtin/workflows/src/authoring.d.ts +5 -1
  192. package/dist/builtin/workflows/src/durable/backend.ts +68 -9
  193. package/dist/builtin/workflows/src/durable/boundary-lifecycle.ts +148 -0
  194. package/dist/builtin/workflows/src/durable/boundary-topology.ts +420 -0
  195. package/dist/builtin/workflows/src/durable/child-invocation.ts +14 -0
  196. package/dist/builtin/workflows/src/durable/child-primitive.ts +74 -44
  197. package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +250 -0
  198. package/dist/builtin/workflows/src/durable/completed-catalog.ts +205 -131
  199. package/dist/builtin/workflows/src/durable/completed-inspection.ts +8 -2
  200. package/dist/builtin/workflows/src/durable/completed-subtree.ts +31 -0
  201. package/dist/builtin/workflows/src/durable/dbos-backend.ts +28 -24
  202. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +130 -3
  203. package/dist/builtin/workflows/src/durable/dbos-metadata.ts +18 -0
  204. package/dist/builtin/workflows/src/durable/scoped-backend.ts +64 -17
  205. package/dist/builtin/workflows/src/durable/stage-primitive.ts +60 -60
  206. package/dist/builtin/workflows/src/durable/stage-topology-validation.ts +234 -0
  207. package/dist/builtin/workflows/src/durable/stage-topology.ts +53 -0
  208. package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +49 -0
  209. package/dist/builtin/workflows/src/durable/tool-outcome.ts +120 -0
  210. package/dist/builtin/workflows/src/durable/tool-primitive.ts +367 -58
  211. package/dist/builtin/workflows/src/durable/types.ts +97 -0
  212. package/dist/builtin/workflows/src/durable/ui-primitive.ts +46 -0
  213. package/dist/builtin/workflows/src/durable/workflow-child-result.ts +58 -0
  214. package/dist/builtin/workflows/src/engine/options.ts +1 -0
  215. package/dist/builtin/workflows/src/engine/primitives/workflow.ts +19 -10
  216. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +11 -1
  217. package/dist/builtin/workflows/src/engine/run-durable-topology.ts +190 -18
  218. package/dist/builtin/workflows/src/engine/run-terminal-event.ts +37 -0
  219. package/dist/builtin/workflows/src/engine/run-terminal-failure.ts +50 -0
  220. package/dist/builtin/workflows/src/engine/run-tool-execution-tracker.ts +152 -0
  221. package/dist/builtin/workflows/src/engine/run-tool-node-lifecycle.ts +87 -0
  222. package/dist/builtin/workflows/src/engine/run.ts +111 -110
  223. package/dist/builtin/workflows/src/engine/runtime.ts +15 -2
  224. package/dist/builtin/workflows/src/extension/extension-factory.ts +1 -0
  225. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +11 -0
  226. package/dist/builtin/workflows/src/extension/index.bundle.mjs +6710 -4810
  227. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +16 -5
  228. package/dist/builtin/workflows/src/extension/render-result.ts +16 -2
  229. package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +3 -0
  230. package/dist/builtin/workflows/src/extension/runtime.ts +4 -0
  231. package/dist/builtin/workflows/src/extension/wiring.ts +3 -1
  232. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +1 -0
  233. package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +9 -3
  234. package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +18 -3
  235. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +22 -11
  236. package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +43 -0
  237. package/dist/builtin/workflows/src/extension/workflow-targets.ts +34 -30
  238. package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +12 -5
  239. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +162 -63
  240. package/dist/builtin/workflows/src/runs/background/run-inspect.ts +7 -1
  241. package/dist/builtin/workflows/src/runs/background/status.ts +18 -8
  242. package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +3 -11
  243. package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +24 -21
  244. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +1 -1
  245. package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +30 -13
  246. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +102 -53
  247. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +13 -5
  248. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +49 -17
  249. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +11 -4
  250. package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +1 -0
  251. package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +4 -1
  252. package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +7 -1
  253. package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +53 -4
  254. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +146 -17
  255. package/dist/builtin/workflows/src/runs/foreground/stage-delivery-activity.ts +86 -0
  256. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +18 -6
  257. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +45 -46
  258. package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +5 -1
  259. package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +195 -0
  260. package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +8 -0
  261. package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +0 -13
  262. package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +30 -2
  263. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +3 -143
  264. package/dist/builtin/workflows/src/sdk-surface.ts +1 -1
  265. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +6 -11
  266. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +6 -11
  267. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +57 -6
  268. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +76 -11
  269. package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +206 -116
  270. package/dist/builtin/workflows/src/shared/intercom-group.ts +17 -10
  271. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +30 -0
  272. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +5 -0
  273. package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +3 -3
  274. package/dist/builtin/workflows/src/shared/store-factory.ts +2 -0
  275. package/dist/builtin/workflows/src/shared/store-internal.ts +8 -0
  276. package/dist/builtin/workflows/src/shared/store-public-types.ts +8 -0
  277. package/dist/builtin/workflows/src/shared/store-run-methods.ts +9 -0
  278. package/dist/builtin/workflows/src/shared/store-stage-methods.ts +2 -0
  279. package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +46 -0
  280. package/dist/builtin/workflows/src/shared/store-types.ts +34 -0
  281. package/dist/builtin/workflows/src/shared/types.ts +14 -24
  282. package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +11 -5
  283. package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +58 -0
  284. package/dist/builtin/workflows/src/shared/workflow-run-ownership.ts +53 -0
  285. package/dist/builtin/workflows/src/tui/graph-view-input.ts +2 -8
  286. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +11 -4
  287. package/dist/builtin/workflows/src/tui/graph-view-render.ts +1 -0
  288. package/dist/builtin/workflows/src/tui/graph-view-state.ts +27 -9
  289. package/dist/builtin/workflows/src/tui/graph-view-types.ts +4 -3
  290. package/dist/builtin/workflows/src/tui/node-card.ts +4 -3
  291. package/dist/builtin/workflows/src/tui/overlay-adapter.ts +0 -4
  292. package/dist/builtin/workflows/src/tui/run-detail.ts +53 -17
  293. package/dist/builtin/workflows/src/tui/session-list.ts +8 -4
  294. package/dist/builtin/workflows/src/tui/stage-chat-view-delivery-activity.ts +121 -0
  295. package/dist/builtin/workflows/src/tui/stage-chat-view-live-events.ts +42 -0
  296. package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +12 -0
  297. package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +21 -1
  298. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +19 -19
  299. package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +4 -0
  300. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +4 -2
  301. package/dist/builtin/workflows/src/tui/switcher.ts +13 -3
  302. package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +1 -1
  303. package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +0 -9
  304. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +16 -49
  305. package/dist/builtin/workflows/src/tui/workflow-status.ts +7 -0
  306. package/dist/builtin/workflows/src/workflows/identity.ts +1 -1
  307. package/dist/cli/args.d.ts +0 -1
  308. package/dist/cli/args.d.ts.map +1 -1
  309. package/dist/cli/args.js +1 -20
  310. package/dist/cli/args.js.map +1 -1
  311. package/dist/cli/config-selector.js +1 -1
  312. package/dist/cli/config-selector.js.map +1 -1
  313. package/dist/cli/list-models.d.ts.map +1 -1
  314. package/dist/cli/list-models.js +1 -2
  315. package/dist/cli/list-models.js.map +1 -1
  316. package/dist/cli/session-picker.d.ts.map +1 -1
  317. package/dist/cli/session-picker.js +2 -1
  318. package/dist/cli/session-picker.js.map +1 -1
  319. package/dist/cli/startup-ui.js +2 -2
  320. package/dist/cli/startup-ui.js.map +1 -1
  321. package/dist/config-self-update.js +1 -1
  322. package/dist/config-self-update.js.map +1 -1
  323. package/dist/config.d.ts +2 -0
  324. package/dist/config.d.ts.map +1 -1
  325. package/dist/config.js +34 -10
  326. package/dist/config.js.map +1 -1
  327. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  328. package/dist/core/agent-session-accessors.js +2 -1
  329. package/dist/core/agent-session-accessors.js.map +1 -1
  330. package/dist/core/agent-session-auto-compaction.d.ts +4 -3
  331. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  332. package/dist/core/agent-session-auto-compaction.js +55 -59
  333. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  334. package/dist/core/agent-session-bash.d.ts +9 -6
  335. package/dist/core/agent-session-bash.d.ts.map +1 -1
  336. package/dist/core/agent-session-bash.js +32 -13
  337. package/dist/core/agent-session-bash.js.map +1 -1
  338. package/dist/core/agent-session-compaction.d.ts +11 -1
  339. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  340. package/dist/core/agent-session-compaction.js +87 -19
  341. package/dist/core/agent-session-compaction.js.map +1 -1
  342. package/dist/core/agent-session-custom-message-commit.d.ts +14 -0
  343. package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -0
  344. package/dist/core/agent-session-custom-message-commit.js +141 -0
  345. package/dist/core/agent-session-custom-message-commit.js.map +1 -0
  346. package/dist/core/agent-session-delivery-forwarding.d.ts +9 -0
  347. package/dist/core/agent-session-delivery-forwarding.d.ts.map +1 -0
  348. package/dist/core/agent-session-delivery-forwarding.js +36 -0
  349. package/dist/core/agent-session-delivery-forwarding.js.map +1 -0
  350. package/dist/core/agent-session-events.d.ts +1 -1
  351. package/dist/core/agent-session-events.d.ts.map +1 -1
  352. package/dist/core/agent-session-events.js +45 -14
  353. package/dist/core/agent-session-events.js.map +1 -1
  354. package/dist/core/agent-session-extension-bindings.d.ts +2 -6
  355. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  356. package/dist/core/agent-session-extension-bindings.js +18 -11
  357. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  358. package/dist/core/agent-session-message-queue.d.ts +5 -2
  359. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  360. package/dist/core/agent-session-message-queue.js +91 -97
  361. package/dist/core/agent-session-message-queue.js.map +1 -1
  362. package/dist/core/agent-session-methods.d.ts +47 -39
  363. package/dist/core/agent-session-methods.d.ts.map +1 -1
  364. package/dist/core/agent-session-methods.js.map +1 -1
  365. package/dist/core/agent-session-models.d.ts +2 -38
  366. package/dist/core/agent-session-models.d.ts.map +1 -1
  367. package/dist/core/agent-session-models.js +5 -147
  368. package/dist/core/agent-session-models.js.map +1 -1
  369. package/dist/core/agent-session-persistent-custom-messages.d.ts +47 -0
  370. package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -0
  371. package/dist/core/agent-session-persistent-custom-messages.js +267 -0
  372. package/dist/core/agent-session-persistent-custom-messages.js.map +1 -0
  373. package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
  374. package/dist/core/agent-session-post-tool-compaction.js +34 -9
  375. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  376. package/dist/core/agent-session-prompt.d.ts +2 -0
  377. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  378. package/dist/core/agent-session-prompt.js +42 -16
  379. package/dist/core/agent-session-prompt.js.map +1 -1
  380. package/dist/core/agent-session-queue-pause.d.ts +10 -0
  381. package/dist/core/agent-session-queue-pause.d.ts.map +1 -0
  382. package/dist/core/agent-session-queue-pause.js +86 -0
  383. package/dist/core/agent-session-queue-pause.js.map +1 -0
  384. package/dist/core/agent-session-retry.d.ts +0 -11
  385. package/dist/core/agent-session-retry.d.ts.map +1 -1
  386. package/dist/core/agent-session-retry.js +8 -57
  387. package/dist/core/agent-session-retry.js.map +1 -1
  388. package/dist/core/agent-session-runtime-auth.d.ts +6 -0
  389. package/dist/core/agent-session-runtime-auth.d.ts.map +1 -0
  390. package/dist/core/agent-session-runtime-auth.js +26 -0
  391. package/dist/core/agent-session-runtime-auth.js.map +1 -0
  392. package/dist/core/agent-session-runtime.d.ts +13 -2
  393. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  394. package/dist/core/agent-session-runtime.js +32 -6
  395. package/dist/core/agent-session-runtime.js.map +1 -1
  396. package/dist/core/agent-session-services.d.ts +0 -2
  397. package/dist/core/agent-session-services.d.ts.map +1 -1
  398. package/dist/core/agent-session-services.js +6 -7
  399. package/dist/core/agent-session-services.js.map +1 -1
  400. package/dist/core/agent-session-state.d.ts.map +1 -1
  401. package/dist/core/agent-session-state.js +3 -0
  402. package/dist/core/agent-session-state.js.map +1 -1
  403. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  404. package/dist/core/agent-session-tool-hooks.js +6 -1
  405. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  406. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  407. package/dist/core/agent-session-tool-registry.js +2 -18
  408. package/dist/core/agent-session-tool-registry.js.map +1 -1
  409. package/dist/core/agent-session-transfer.d.ts +4 -0
  410. package/dist/core/agent-session-transfer.d.ts.map +1 -0
  411. package/dist/core/agent-session-transfer.js +71 -0
  412. package/dist/core/agent-session-transfer.js.map +1 -0
  413. package/dist/core/agent-session-tree.js +1 -1
  414. package/dist/core/agent-session-tree.js.map +1 -1
  415. package/dist/core/agent-session-types.d.ts +5 -11
  416. package/dist/core/agent-session-types.d.ts.map +1 -1
  417. package/dist/core/agent-session-types.js +0 -3
  418. package/dist/core/agent-session-types.js.map +1 -1
  419. package/dist/core/agent-session.d.ts +12 -2
  420. package/dist/core/agent-session.d.ts.map +1 -1
  421. package/dist/core/agent-session.js +8 -2
  422. package/dist/core/agent-session.js.map +1 -1
  423. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  424. package/dist/core/atomic-guide-command.js +31 -33
  425. package/dist/core/atomic-guide-command.js.map +1 -1
  426. package/dist/core/auth-storage.js +2 -2
  427. package/dist/core/auth-storage.js.map +1 -1
  428. package/dist/core/bash-executor.d.ts +5 -3
  429. package/dist/core/bash-executor.d.ts.map +1 -1
  430. package/dist/core/bash-executor.js +5 -4
  431. package/dist/core/bash-executor.js.map +1 -1
  432. package/dist/core/builtin-packages.d.ts.map +1 -1
  433. package/dist/core/builtin-packages.js +0 -6
  434. package/dist/core/builtin-packages.js.map +1 -1
  435. package/dist/core/compaction/branch-summarization.d.ts +8 -3
  436. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  437. package/dist/core/compaction/branch-summarization.js +17 -6
  438. package/dist/core/compaction/branch-summarization.js.map +1 -1
  439. package/dist/core/compaction/compaction-boundary.d.ts +18 -1
  440. package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
  441. package/dist/core/compaction/compaction-boundary.js +2 -2
  442. package/dist/core/compaction/compaction-boundary.js.map +1 -1
  443. package/dist/core/compaction/compaction-runner.d.ts +61 -6
  444. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  445. package/dist/core/compaction/compaction-runner.js +242 -18
  446. package/dist/core/compaction/compaction-runner.js.map +1 -1
  447. package/dist/core/compaction/compaction-types.d.ts +53 -2
  448. package/dist/core/compaction/compaction-types.d.ts.map +1 -1
  449. package/dist/core/compaction/compaction-types.js.map +1 -1
  450. package/dist/core/compaction/fallback-planner.d.ts +64 -0
  451. package/dist/core/compaction/fallback-planner.d.ts.map +1 -0
  452. package/dist/core/compaction/fallback-planner.js +75 -0
  453. package/dist/core/compaction/fallback-planner.js.map +1 -0
  454. package/dist/core/compaction/index.d.ts +3 -0
  455. package/dist/core/compaction/index.d.ts.map +1 -1
  456. package/dist/core/compaction/index.js +3 -0
  457. package/dist/core/compaction/index.js.map +1 -1
  458. package/dist/core/compaction/planner-outcome.d.ts +86 -0
  459. package/dist/core/compaction/planner-outcome.d.ts.map +1 -0
  460. package/dist/core/compaction/planner-outcome.js +122 -0
  461. package/dist/core/compaction/planner-outcome.js.map +1 -0
  462. package/dist/core/compaction/range-planner-diagnostics.d.ts +58 -6
  463. package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
  464. package/dist/core/compaction/range-planner-diagnostics.js +69 -31
  465. package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
  466. package/dist/core/compaction/range-planner.d.ts +36 -8
  467. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  468. package/dist/core/compaction/range-planner.js +136 -51
  469. package/dist/core/compaction/range-planner.js.map +1 -1
  470. package/dist/core/compaction/region-trimming.d.ts +34 -0
  471. package/dist/core/compaction/region-trimming.d.ts.map +1 -0
  472. package/dist/core/compaction/region-trimming.js +73 -0
  473. package/dist/core/compaction/region-trimming.js.map +1 -0
  474. package/dist/core/compaction/transcript-serialization.d.ts +8 -1
  475. package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
  476. package/dist/core/compaction/transcript-serialization.js +78 -27
  477. package/dist/core/compaction/transcript-serialization.js.map +1 -1
  478. package/dist/core/context-tool-pairing.d.ts +19 -0
  479. package/dist/core/context-tool-pairing.d.ts.map +1 -0
  480. package/dist/core/context-tool-pairing.js +50 -0
  481. package/dist/core/context-tool-pairing.js.map +1 -0
  482. package/dist/core/diagnostics.d.ts +8 -0
  483. package/dist/core/diagnostics.d.ts.map +1 -1
  484. package/dist/core/diagnostics.js.map +1 -1
  485. package/dist/core/extensions/context-types.d.ts +3 -0
  486. package/dist/core/extensions/context-types.d.ts.map +1 -1
  487. package/dist/core/extensions/context-types.js.map +1 -1
  488. package/dist/core/extensions/index.d.ts +2 -0
  489. package/dist/core/extensions/index.d.ts.map +1 -1
  490. package/dist/core/extensions/index.js.map +1 -1
  491. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  492. package/dist/core/extensions/loader-api.js +48 -27
  493. package/dist/core/extensions/loader-api.js.map +1 -1
  494. package/dist/core/extensions/loader-runtime.d.ts +2 -4
  495. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  496. package/dist/core/extensions/loader-runtime.js +199 -18
  497. package/dist/core/extensions/loader-runtime.js.map +1 -1
  498. package/dist/core/extensions/message-types.d.ts +7 -4
  499. package/dist/core/extensions/message-types.d.ts.map +1 -1
  500. package/dist/core/extensions/message-types.js.map +1 -1
  501. package/dist/core/extensions/provider-types.d.ts +9 -4
  502. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  503. package/dist/core/extensions/provider-types.js.map +1 -1
  504. package/dist/core/extensions/runner-context.d.ts +2 -0
  505. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  506. package/dist/core/extensions/runner-context.js +4 -0
  507. package/dist/core/extensions/runner-context.js.map +1 -1
  508. package/dist/core/extensions/runner.d.ts +1 -0
  509. package/dist/core/extensions/runner.d.ts.map +1 -1
  510. package/dist/core/extensions/runner.js +28 -20
  511. package/dist/core/extensions/runner.js.map +1 -1
  512. package/dist/core/extensions/runtime-types.d.ts +25 -0
  513. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  514. package/dist/core/extensions/runtime-types.js.map +1 -1
  515. package/dist/core/extensions/tool-types.d.ts +7 -3
  516. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  517. package/dist/core/extensions/tool-types.js.map +1 -1
  518. package/dist/core/extensions/ui-types.d.ts +14 -4
  519. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  520. package/dist/core/extensions/ui-types.js.map +1 -1
  521. package/dist/core/fallback-models.d.ts +37 -0
  522. package/dist/core/fallback-models.d.ts.map +1 -0
  523. package/dist/core/fallback-models.js +48 -0
  524. package/dist/core/fallback-models.js.map +1 -0
  525. package/dist/core/flattened-tool-arguments.d.ts +4 -7
  526. package/dist/core/flattened-tool-arguments.d.ts.map +1 -1
  527. package/dist/core/flattened-tool-arguments.js +4 -7
  528. package/dist/core/flattened-tool-arguments.js.map +1 -1
  529. package/dist/core/http-dispatcher.d.ts.map +1 -1
  530. package/dist/core/http-dispatcher.js +0 -5
  531. package/dist/core/http-dispatcher.js.map +1 -1
  532. package/dist/core/messages.d.ts +14 -2
  533. package/dist/core/messages.d.ts.map +1 -1
  534. package/dist/core/messages.js +28 -4
  535. package/dist/core/messages.js.map +1 -1
  536. package/dist/core/model-capabilities.d.ts +18 -0
  537. package/dist/core/model-capabilities.d.ts.map +1 -0
  538. package/dist/core/model-capabilities.js +23 -0
  539. package/dist/core/model-capabilities.js.map +1 -0
  540. package/dist/core/model-registry-auth.d.ts.map +1 -1
  541. package/dist/core/model-registry-auth.js +0 -2
  542. package/dist/core/model-registry-auth.js.map +1 -1
  543. package/dist/core/model-registry-builtins.d.ts +0 -2
  544. package/dist/core/model-registry-builtins.d.ts.map +1 -1
  545. package/dist/core/model-registry-builtins.js +9 -76
  546. package/dist/core/model-registry-builtins.js.map +1 -1
  547. package/dist/core/model-registry-custom-loader.d.ts.map +1 -1
  548. package/dist/core/model-registry-custom-loader.js +1 -12
  549. package/dist/core/model-registry-custom-loader.js.map +1 -1
  550. package/dist/core/model-registry-dynamic.d.ts.map +1 -1
  551. package/dist/core/model-registry-dynamic.js +3 -15
  552. package/dist/core/model-registry-dynamic.js.map +1 -1
  553. package/dist/core/model-registry-extension-refresh.d.ts +23 -0
  554. package/dist/core/model-registry-extension-refresh.d.ts.map +1 -0
  555. package/dist/core/model-registry-extension-refresh.js +32 -0
  556. package/dist/core/model-registry-extension-refresh.js.map +1 -0
  557. package/dist/core/model-registry-schemas.d.ts +118 -9
  558. package/dist/core/model-registry-schemas.d.ts.map +1 -1
  559. package/dist/core/model-registry-schemas.js +10 -3
  560. package/dist/core/model-registry-schemas.js.map +1 -1
  561. package/dist/core/model-registry-types.d.ts +5 -5
  562. package/dist/core/model-registry-types.d.ts.map +1 -1
  563. package/dist/core/model-registry-types.js.map +1 -1
  564. package/dist/core/model-registry-validation.d.ts +7 -0
  565. package/dist/core/model-registry-validation.d.ts.map +1 -0
  566. package/dist/core/model-registry-validation.js +12 -0
  567. package/dist/core/model-registry-validation.js.map +1 -0
  568. package/dist/core/model-registry.d.ts +5 -3
  569. package/dist/core/model-registry.d.ts.map +1 -1
  570. package/dist/core/model-registry.js +34 -33
  571. package/dist/core/model-registry.js.map +1 -1
  572. package/dist/core/model-resolver-defaults.d.ts.map +1 -1
  573. package/dist/core/model-resolver-defaults.js +0 -1
  574. package/dist/core/model-resolver-defaults.js.map +1 -1
  575. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  576. package/dist/core/model-resolver-initial.js +9 -0
  577. package/dist/core/model-resolver-initial.js.map +1 -1
  578. package/dist/core/model-resolver-patterns.d.ts.map +1 -1
  579. package/dist/core/model-resolver-patterns.js +0 -2
  580. package/dist/core/model-resolver-patterns.js.map +1 -1
  581. package/dist/core/model-resolver-scope.d.ts +2 -0
  582. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  583. package/dist/core/model-resolver-scope.js +18 -4
  584. package/dist/core/model-resolver-scope.js.map +1 -1
  585. package/dist/core/model-resolver-types.d.ts +2 -0
  586. package/dist/core/model-resolver-types.d.ts.map +1 -1
  587. package/dist/core/model-resolver-types.js.map +1 -1
  588. package/dist/core/oauth-provider-bridge.d.ts +21 -0
  589. package/dist/core/oauth-provider-bridge.d.ts.map +1 -1
  590. package/dist/core/oauth-provider-bridge.js +68 -7
  591. package/dist/core/oauth-provider-bridge.js.map +1 -1
  592. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  593. package/dist/core/package-manager-auto-resources.js +12 -4
  594. package/dist/core/package-manager-auto-resources.js.map +1 -1
  595. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  596. package/dist/core/package-manager-resolver.js +42 -11
  597. package/dist/core/package-manager-resolver.js.map +1 -1
  598. package/dist/core/package-manager-types.d.ts +2 -0
  599. package/dist/core/package-manager-types.d.ts.map +1 -1
  600. package/dist/core/package-manager-types.js.map +1 -1
  601. package/dist/core/package-manager.d.ts +1 -1
  602. package/dist/core/package-manager.d.ts.map +1 -1
  603. package/dist/core/package-manager.js.map +1 -1
  604. package/dist/core/remote-catalog-provider.d.ts +1 -1
  605. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  606. package/dist/core/remote-catalog-provider.js +17 -11
  607. package/dist/core/remote-catalog-provider.js.map +1 -1
  608. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  609. package/dist/core/resource-loader-assets.js +30 -4
  610. package/dist/core/resource-loader-assets.js.map +1 -1
  611. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  612. package/dist/core/resource-loader-context-files.js +3 -1
  613. package/dist/core/resource-loader-context-files.js.map +1 -1
  614. package/dist/core/resource-loader-core.d.ts +2 -1
  615. package/dist/core/resource-loader-core.d.ts.map +1 -1
  616. package/dist/core/resource-loader-core.js +3 -0
  617. package/dist/core/resource-loader-core.js.map +1 -1
  618. package/dist/core/resource-loader-extensions.d.ts +1 -0
  619. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  620. package/dist/core/resource-loader-extensions.js +120 -7
  621. package/dist/core/resource-loader-extensions.js.map +1 -1
  622. package/dist/core/resource-loader-package-resources.d.ts.map +1 -1
  623. package/dist/core/resource-loader-package-resources.js +14 -1
  624. package/dist/core/resource-loader-package-resources.js.map +1 -1
  625. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  626. package/dist/core/resource-loader-reload.js +2 -1
  627. package/dist/core/resource-loader-reload.js.map +1 -1
  628. package/dist/core/resource-loader-source-info.d.ts.map +1 -1
  629. package/dist/core/resource-loader-source-info.js +6 -3
  630. package/dist/core/resource-loader-source-info.js.map +1 -1
  631. package/dist/core/sdk-types.d.ts +11 -10
  632. package/dist/core/sdk-types.d.ts.map +1 -1
  633. package/dist/core/sdk-types.js.map +1 -1
  634. package/dist/core/sdk.d.ts +1 -0
  635. package/dist/core/sdk.d.ts.map +1 -1
  636. package/dist/core/sdk.js +13 -84
  637. package/dist/core/sdk.js.map +1 -1
  638. package/dist/core/session-manager-core.d.ts +3 -3
  639. package/dist/core/session-manager-core.d.ts.map +1 -1
  640. package/dist/core/session-manager-core.js +18 -25
  641. package/dist/core/session-manager-core.js.map +1 -1
  642. package/dist/core/session-manager-entries.d.ts +2 -5
  643. package/dist/core/session-manager-entries.d.ts.map +1 -1
  644. package/dist/core/session-manager-entries.js +2 -8
  645. package/dist/core/session-manager-entries.js.map +1 -1
  646. package/dist/core/session-manager-history.d.ts +3 -3
  647. package/dist/core/session-manager-history.d.ts.map +1 -1
  648. package/dist/core/session-manager-history.js +49 -27
  649. package/dist/core/session-manager-history.js.map +1 -1
  650. package/dist/core/session-manager-storage.d.ts +6 -0
  651. package/dist/core/session-manager-storage.d.ts.map +1 -1
  652. package/dist/core/session-manager-storage.js +38 -5
  653. package/dist/core/session-manager-storage.js.map +1 -1
  654. package/dist/core/session-manager-types.d.ts +6 -6
  655. package/dist/core/session-manager-types.d.ts.map +1 -1
  656. package/dist/core/session-manager-types.js.map +1 -1
  657. package/dist/core/session-manager.d.ts +1 -1
  658. package/dist/core/session-manager.d.ts.map +1 -1
  659. package/dist/core/session-manager.js.map +1 -1
  660. package/dist/core/settings-manager-basic-accessors.d.ts +0 -4
  661. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  662. package/dist/core/settings-manager-basic-accessors.js +0 -50
  663. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  664. package/dist/core/settings-manager-core.d.ts +2 -4
  665. package/dist/core/settings-manager-core.d.ts.map +1 -1
  666. package/dist/core/settings-manager-core.js +5 -51
  667. package/dist/core/settings-manager-core.js.map +1 -1
  668. package/dist/core/settings-manager.d.ts +1 -1
  669. package/dist/core/settings-manager.d.ts.map +1 -1
  670. package/dist/core/settings-manager.js.map +1 -1
  671. package/dist/core/settings-storage.d.ts +3 -1
  672. package/dist/core/settings-storage.d.ts.map +1 -1
  673. package/dist/core/settings-storage.js +22 -0
  674. package/dist/core/settings-storage.js.map +1 -1
  675. package/dist/core/settings-types.d.ts +2 -4
  676. package/dist/core/settings-types.d.ts.map +1 -1
  677. package/dist/core/settings-types.js.map +1 -1
  678. package/dist/core/slash-commands.d.ts.map +1 -1
  679. package/dist/core/slash-commands.js +68 -22
  680. package/dist/core/slash-commands.js.map +1 -1
  681. package/dist/core/source-info.d.ts +3 -1
  682. package/dist/core/source-info.d.ts.map +1 -1
  683. package/dist/core/source-info.js +2 -0
  684. package/dist/core/source-info.js.map +1 -1
  685. package/dist/core/tools/ask-user-question/ask-user-question.js +1 -1
  686. package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
  687. package/dist/core/tools/bash-session-environment.d.ts +13 -0
  688. package/dist/core/tools/bash-session-environment.d.ts.map +1 -0
  689. package/dist/core/tools/bash-session-environment.js +35 -0
  690. package/dist/core/tools/bash-session-environment.js.map +1 -0
  691. package/dist/core/tools/bash.d.ts +4 -1
  692. package/dist/core/tools/bash.d.ts.map +1 -1
  693. package/dist/core/tools/bash.js +16 -8
  694. package/dist/core/tools/bash.js.map +1 -1
  695. package/dist/core/tools/tool-definition-wrapper.d.ts +3 -0
  696. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  697. package/dist/core/tools/tool-definition-wrapper.js +10 -2
  698. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  699. package/dist/extensions/index.js +1 -1
  700. package/dist/extensions/index.js.map +1 -1
  701. package/dist/extensions/llama/provider.d.ts +3 -2
  702. package/dist/extensions/llama/provider.d.ts.map +1 -1
  703. package/dist/extensions/llama/provider.js +9 -3
  704. package/dist/extensions/llama/provider.js.map +1 -1
  705. package/dist/index-extensions.d.ts +1 -1
  706. package/dist/index-extensions.d.ts.map +1 -1
  707. package/dist/index-extensions.js.map +1 -1
  708. package/dist/index.d.ts +2 -3
  709. package/dist/index.d.ts.map +1 -1
  710. package/dist/index.js +1 -2
  711. package/dist/index.js.map +1 -1
  712. package/dist/main-session-options.d.ts.map +1 -1
  713. package/dist/main-session-options.js +0 -4
  714. package/dist/main-session-options.js.map +1 -1
  715. package/dist/main-session.d.ts.map +1 -1
  716. package/dist/main-session.js +2 -1
  717. package/dist/main-session.js.map +1 -1
  718. package/dist/main.d.ts.map +1 -1
  719. package/dist/main.js +1 -17
  720. package/dist/main.js.map +1 -1
  721. package/dist/modes/index.d.ts +1 -1
  722. package/dist/modes/index.d.ts.map +1 -1
  723. package/dist/modes/index.js.map +1 -1
  724. package/dist/modes/interactive/chat-input-actions.d.ts +1 -1
  725. package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
  726. package/dist/modes/interactive/chat-input-actions.js +14 -96
  727. package/dist/modes/interactive/chat-input-actions.js.map +1 -1
  728. package/dist/modes/interactive/components/atomic-banner.d.ts +9 -8
  729. package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
  730. package/dist/modes/interactive/components/atomic-banner.js +68 -24
  731. package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
  732. package/dist/modes/interactive/components/atomic-working-status.d.ts +52 -0
  733. package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -0
  734. package/dist/modes/interactive/components/atomic-working-status.js +202 -0
  735. package/dist/modes/interactive/components/atomic-working-status.js.map +1 -0
  736. package/dist/modes/interactive/components/chat-message-renderer.js +1 -1
  737. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  738. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  739. package/dist/modes/interactive/components/chat-session-host-actions.js +87 -7
  740. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  741. package/dist/modes/interactive/components/chat-session-host-editor.js +3 -3
  742. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
  743. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  744. package/dist/modes/interactive/components/chat-session-host-events.js +61 -9
  745. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  746. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  747. package/dist/modes/interactive/components/chat-session-host-rendering.js +23 -7
  748. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  749. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +27 -0
  750. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
  751. package/dist/modes/interactive/components/chat-session-host-runtime.js +120 -18
  752. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
  753. package/dist/modes/interactive/components/chat-session-host-state.d.ts +9 -0
  754. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  755. package/dist/modes/interactive/components/chat-session-host-state.js +5 -0
  756. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  757. package/dist/modes/interactive/components/chat-session-host-types.d.ts +10 -0
  758. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
  759. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
  760. package/dist/modes/interactive/components/chat-session-host.d.ts +13 -0
  761. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  762. package/dist/modes/interactive/components/chat-session-host.js +22 -1
  763. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  764. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  765. package/dist/modes/interactive/components/compaction-boundary-message.js +2 -1
  766. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  767. package/dist/modes/interactive/components/custom-message.d.ts +3 -1
  768. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  769. package/dist/modes/interactive/components/custom-message.js +9 -2
  770. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  771. package/dist/modes/interactive/components/extension-editor.d.ts +3 -2
  772. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  773. package/dist/modes/interactive/components/extension-editor.js +14 -43
  774. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  775. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  776. package/dist/modes/interactive/components/scoped-models-selector.js +18 -13
  777. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  778. package/dist/modes/interactive/components/startup-identity.d.ts +22 -0
  779. package/dist/modes/interactive/components/startup-identity.d.ts.map +1 -0
  780. package/dist/modes/interactive/components/startup-identity.js +58 -0
  781. package/dist/modes/interactive/components/startup-identity.js.map +1 -0
  782. package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -1
  783. package/dist/modes/interactive/components/tree-selector-content.js +0 -6
  784. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
  785. package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -1
  786. package/dist/modes/interactive/components/tree-selector-model.js +0 -1
  787. package/dist/modes/interactive/components/tree-selector-model.js.map +1 -1
  788. package/dist/modes/interactive/components/working-status.d.ts +5 -11
  789. package/dist/modes/interactive/components/working-status.d.ts.map +1 -1
  790. package/dist/modes/interactive/components/working-status.js +14 -15
  791. package/dist/modes/interactive/components/working-status.js.map +1 -1
  792. package/dist/modes/interactive/external-editor.d.ts +23 -0
  793. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  794. package/dist/modes/interactive/external-editor.js +120 -0
  795. package/dist/modes/interactive/external-editor.js.map +1 -0
  796. package/dist/modes/interactive/interactive-agent-events.js +33 -22
  797. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  798. package/dist/modes/interactive/interactive-auth-login.js +16 -6
  799. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  800. package/dist/modes/interactive/interactive-auth-routing.js +3 -0
  801. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  802. package/dist/modes/interactive/interactive-bash-compact.d.ts +2 -1
  803. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
  804. package/dist/modes/interactive/interactive-bash-compact.js +8 -0
  805. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  806. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  807. package/dist/modes/interactive/interactive-deferred-startup.js +49 -19
  808. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  809. package/dist/modes/interactive/interactive-editor-actions.js +4 -3
  810. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  811. package/dist/modes/interactive/interactive-extension-dialogs.js +1 -1
  812. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  813. package/dist/modes/interactive/interactive-extension-runtime.js +3 -2
  814. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  815. package/dist/modes/interactive/interactive-initial-session-binding.d.ts +4 -0
  816. package/dist/modes/interactive/interactive-initial-session-binding.d.ts.map +1 -0
  817. package/dist/modes/interactive/interactive-initial-session-binding.js +23 -0
  818. package/dist/modes/interactive/interactive-initial-session-binding.js.map +1 -0
  819. package/dist/modes/interactive/interactive-input-handling.d.ts +2 -1
  820. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  821. package/dist/modes/interactive/interactive-input-handling.js +27 -51
  822. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  823. package/dist/modes/interactive/interactive-mode-base.d.ts +11 -7
  824. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  825. package/dist/modes/interactive/interactive-mode-base.js +14 -6
  826. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  827. package/dist/modes/interactive/interactive-mode-deps.d.ts +2 -4
  828. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  829. package/dist/modes/interactive/interactive-mode-deps.js +2 -4
  830. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  831. package/dist/modes/interactive/interactive-mode-surface.d.ts +9 -8
  832. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  833. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  834. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  835. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  836. package/dist/modes/interactive/interactive-mode.js +1 -0
  837. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  838. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts +2 -3
  839. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -1
  840. package/dist/modes/interactive/interactive-model-catalog-startup.js +3 -6
  841. package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -1
  842. package/dist/modes/interactive/interactive-model-routing.js +26 -97
  843. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  844. package/dist/modes/interactive/interactive-pause.d.ts +4 -0
  845. package/dist/modes/interactive/interactive-pause.d.ts.map +1 -0
  846. package/dist/modes/interactive/interactive-pause.js +8 -0
  847. package/dist/modes/interactive/interactive-pause.js.map +1 -0
  848. package/dist/modes/interactive/interactive-process-lifecycle.js +5 -4
  849. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  850. package/dist/modes/interactive/interactive-prompt-turn.d.ts +2 -0
  851. package/dist/modes/interactive/interactive-prompt-turn.d.ts.map +1 -0
  852. package/dist/modes/interactive/interactive-prompt-turn.js +41 -0
  853. package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -0
  854. package/dist/modes/interactive/interactive-render-chat.js +20 -8
  855. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  856. package/dist/modes/interactive/interactive-resource-paths.js +11 -2
  857. package/dist/modes/interactive/interactive-resource-paths.js.map +1 -1
  858. package/dist/modes/interactive/interactive-resource-rendering.js +99 -0
  859. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  860. package/dist/modes/interactive/interactive-session-runtime.js +1 -1
  861. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  862. package/dist/modes/interactive/interactive-slash-commands.js +1 -1
  863. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  864. package/dist/modes/interactive/interactive-startup-chat-container.d.ts +20 -0
  865. package/dist/modes/interactive/interactive-startup-chat-container.d.ts.map +1 -0
  866. package/dist/modes/interactive/interactive-startup-chat-container.js +26 -0
  867. package/dist/modes/interactive/interactive-startup-chat-container.js.map +1 -0
  868. package/dist/modes/interactive/interactive-startup.d.ts +1 -1
  869. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  870. package/dist/modes/interactive/interactive-startup.js +30 -25
  871. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  872. package/dist/modes/interactive/interactive-summarization-retry-events.d.ts.map +1 -1
  873. package/dist/modes/interactive/interactive-summarization-retry-events.js +9 -3
  874. package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -1
  875. package/dist/modes/interactive/theme/catppuccin-frappe.json +1 -1
  876. package/dist/modes/interactive/theme/catppuccin-latte.json +1 -1
  877. package/dist/modes/interactive/theme/catppuccin-macchiato.json +1 -1
  878. package/dist/modes/interactive/theme/catppuccin-mocha.json +9 -1
  879. package/dist/modes/interactive/theme/dark.json +1 -1
  880. package/dist/modes/interactive/theme/light.json +1 -1
  881. package/dist/modes/interactive/theme/theme-class.d.ts +4 -0
  882. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  883. package/dist/modes/interactive/theme/theme-class.js +7 -0
  884. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  885. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  886. package/dist/modes/interactive/theme/theme-loading.js +4 -0
  887. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  888. package/dist/modes/interactive/theme/theme-schema.d.ts +32 -0
  889. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  890. package/dist/modes/interactive/theme/theme-schema.js +8 -0
  891. package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  892. package/dist/modes/interactive/theme/theme-schema.json +15 -2
  893. package/dist/modes/interactive/whimsical-messages.d.ts +1 -0
  894. package/dist/modes/interactive/whimsical-messages.d.ts.map +1 -1
  895. package/dist/modes/interactive/whimsical-messages.js +2 -2
  896. package/dist/modes/interactive/whimsical-messages.js.map +1 -1
  897. package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -1
  898. package/dist/modes/interactive-engine/create-isolated-runtime.js +3 -1
  899. package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -1
  900. package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -1
  901. package/dist/modes/interactive-engine/engine-args.js +0 -1
  902. package/dist/modes/interactive-engine/engine-args.js.map +1 -1
  903. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  904. package/dist/modes/interactive-engine/engine-custom-ui.js +5 -17
  905. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  906. package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
  907. package/dist/modes/interactive-engine/engine-render-service.js +8 -19
  908. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  909. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +2 -0
  910. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  911. package/dist/modes/interactive-engine/extension-ui-bridge.js +3 -0
  912. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  913. package/dist/modes/interactive-engine/isolated-auth.d.ts +10 -0
  914. package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -0
  915. package/dist/modes/interactive-engine/isolated-auth.js +14 -0
  916. package/dist/modes/interactive-engine/isolated-auth.js.map +1 -0
  917. package/dist/modes/interactive-engine/isolated-runtime.d.ts +9 -1
  918. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  919. package/dist/modes/interactive-engine/isolated-runtime.js +46 -34
  920. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  921. package/dist/modes/interactive-engine/protocol.d.ts +1 -1
  922. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  923. package/dist/modes/interactive-engine/protocol.js +3 -10
  924. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  925. package/dist/modes/interactive-engine/remote-model-catalog.d.ts +1 -0
  926. package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
  927. package/dist/modes/interactive-engine/remote-model-catalog.js +10 -1
  928. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
  929. package/dist/modes/interactive-engine/remote-queue-pause.d.ts +13 -0
  930. package/dist/modes/interactive-engine/remote-queue-pause.d.ts.map +1 -0
  931. package/dist/modes/interactive-engine/remote-queue-pause.js +38 -0
  932. package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -0
  933. package/dist/modes/interactive-engine/remote-renderer.d.ts +3 -1
  934. package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -1
  935. package/dist/modes/interactive-engine/remote-renderer.js +4 -1
  936. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
  937. package/dist/modes/print-mode.d.ts.map +1 -1
  938. package/dist/modes/print-mode.js +5 -0
  939. package/dist/modes/print-mode.js.map +1 -1
  940. package/dist/modes/rpc/jsonl.d.ts +2 -7
  941. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  942. package/dist/modes/rpc/jsonl.js +7 -24
  943. package/dist/modes/rpc/jsonl.js.map +1 -1
  944. package/dist/modes/rpc/queued-writer.d.ts +19 -0
  945. package/dist/modes/rpc/queued-writer.d.ts.map +1 -0
  946. package/dist/modes/rpc/{bounded-writer.js → queued-writer.js} +7 -30
  947. package/dist/modes/rpc/queued-writer.js.map +1 -0
  948. package/dist/modes/rpc/rpc-bash-request-owners.d.ts +24 -0
  949. package/dist/modes/rpc/rpc-bash-request-owners.d.ts.map +1 -0
  950. package/dist/modes/rpc/rpc-bash-request-owners.js +45 -0
  951. package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -0
  952. package/dist/modes/rpc/rpc-client-api.d.ts +8 -5
  953. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  954. package/dist/modes/rpc/rpc-client-api.js +10 -11
  955. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  956. package/dist/modes/rpc/rpc-client-process.d.ts +1 -4
  957. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  958. package/dist/modes/rpc/rpc-client-process.js +2 -14
  959. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  960. package/dist/modes/rpc/rpc-client.d.ts +8 -4
  961. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  962. package/dist/modes/rpc/rpc-client.js +21 -30
  963. package/dist/modes/rpc/rpc-client.js.map +1 -1
  964. package/dist/modes/rpc/rpc-command-handler.d.ts +7 -4
  965. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  966. package/dist/modes/rpc/rpc-command-handler.js +76 -93
  967. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  968. package/dist/modes/rpc/rpc-input-scheduler.d.ts +3 -3
  969. package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
  970. package/dist/modes/rpc/rpc-input-scheduler.js +7 -4
  971. package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
  972. package/dist/modes/rpc/rpc-mode.d.ts +1 -1
  973. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  974. package/dist/modes/rpc/rpc-mode.js +5 -5
  975. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  976. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts +4 -0
  977. package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts.map +1 -0
  978. package/dist/modes/rpc/rpc-model-fallback-prompt.js +11 -0
  979. package/dist/modes/rpc/rpc-model-fallback-prompt.js.map +1 -0
  980. package/dist/modes/rpc/rpc-oauth-client.d.ts +22 -0
  981. package/dist/modes/rpc/rpc-oauth-client.d.ts.map +1 -0
  982. package/dist/modes/rpc/rpc-oauth-client.js +74 -0
  983. package/dist/modes/rpc/rpc-oauth-client.js.map +1 -0
  984. package/dist/modes/rpc/rpc-oauth-interaction.d.ts +9 -0
  985. package/dist/modes/rpc/rpc-oauth-interaction.d.ts.map +1 -0
  986. package/dist/modes/rpc/rpc-oauth-interaction.js +49 -0
  987. package/dist/modes/rpc/rpc-oauth-interaction.js.map +1 -0
  988. package/dist/modes/rpc/rpc-output-buffer.d.ts +2 -1
  989. package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
  990. package/dist/modes/rpc/rpc-output-buffer.js +4 -39
  991. package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
  992. package/dist/modes/rpc/rpc-provider-auth.d.ts +23 -0
  993. package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -0
  994. package/dist/modes/rpc/rpc-provider-auth.js +145 -0
  995. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -0
  996. package/dist/modes/rpc/rpc-responses.d.ts +0 -1
  997. package/dist/modes/rpc/rpc-responses.d.ts.map +1 -1
  998. package/dist/modes/rpc/rpc-responses.js +0 -14
  999. package/dist/modes/rpc/rpc-responses.js.map +1 -1
  1000. package/dist/modes/rpc/rpc-types.d.ts +83 -27
  1001. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  1002. package/dist/modes/rpc/rpc-types.js.map +1 -1
  1003. package/dist/utils/clipboard.d.ts.map +1 -1
  1004. package/dist/utils/clipboard.js +21 -8
  1005. package/dist/utils/clipboard.js.map +1 -1
  1006. package/dist/utils/version-check.d.ts.map +1 -1
  1007. package/dist/utils/version-check.js +3 -1
  1008. package/dist/utils/version-check.js.map +1 -1
  1009. package/docs/changelog.mdx +12 -1
  1010. package/docs/compaction.md +101 -18
  1011. package/docs/custom-provider.md +13 -4
  1012. package/docs/docs.json +1 -0
  1013. package/docs/environment-variables.md +37 -0
  1014. package/docs/extensions.md +45 -9
  1015. package/docs/index.md +1 -0
  1016. package/docs/intercom.md +1 -1
  1017. package/docs/json.md +4 -4
  1018. package/docs/keybindings.md +4 -2
  1019. package/docs/llama-cpp.md +3 -1
  1020. package/docs/models.md +29 -43
  1021. package/docs/providers.md +18 -24
  1022. package/docs/quickstart.md +19 -16
  1023. package/docs/rpc.md +38 -85
  1024. package/docs/sdk.md +15 -22
  1025. package/docs/session-format.md +2 -15
  1026. package/docs/sessions.md +1 -1
  1027. package/docs/settings.md +10 -15
  1028. package/docs/skills.md +8 -0
  1029. package/docs/subagents.md +17 -9
  1030. package/docs/themes.md +10 -1
  1031. package/docs/tui.md +10 -5
  1032. package/docs/usage.md +21 -2
  1033. package/docs/windows.md +1 -1
  1034. package/docs/workflows.md +1096 -518
  1035. package/examples/extensions/README.md +1 -1
  1036. package/examples/extensions/handoff.ts +8 -1
  1037. package/examples/extensions/message-renderer.ts +2 -2
  1038. package/examples/extensions/summarize.ts +3 -0
  1039. package/examples/extensions/working-indicator.ts +2 -2
  1040. package/npm-shrinkwrap.json +40 -46
  1041. package/package.json +9 -7
  1042. package/dist/builtin/cursor/CHANGELOG.md +0 -281
  1043. package/dist/builtin/cursor/LICENSE +0 -26
  1044. package/dist/builtin/cursor/README.md +0 -24
  1045. package/dist/builtin/cursor/index.ts +0 -9
  1046. package/dist/builtin/cursor/package.json +0 -47
  1047. package/dist/builtin/cursor/src/auth.ts +0 -352
  1048. package/dist/builtin/cursor/src/catalog-cache.ts +0 -155
  1049. package/dist/builtin/cursor/src/config.ts +0 -123
  1050. package/dist/builtin/cursor/src/conversation-state.ts +0 -135
  1051. package/dist/builtin/cursor/src/cursor-models-raw.json +0 -412
  1052. package/dist/builtin/cursor/src/model-mapper.ts +0 -369
  1053. package/dist/builtin/cursor/src/model-reference.ts +0 -282
  1054. package/dist/builtin/cursor/src/models.ts +0 -54
  1055. package/dist/builtin/cursor/src/native-loader.ts +0 -71
  1056. package/dist/builtin/cursor/src/proto/README.md +0 -34
  1057. package/dist/builtin/cursor/src/proto/agent_pb.ts +0 -15294
  1058. package/dist/builtin/cursor/src/proto/protobuf-codec-base64.ts +0 -22
  1059. package/dist/builtin/cursor/src/proto/protobuf-codec-json.ts +0 -44
  1060. package/dist/builtin/cursor/src/proto/protobuf-codec-request.ts +0 -311
  1061. package/dist/builtin/cursor/src/proto/protobuf-codec-wire.ts +0 -248
  1062. package/dist/builtin/cursor/src/proto/protobuf-codec.ts +0 -200
  1063. package/dist/builtin/cursor/src/provider.ts +0 -301
  1064. package/dist/builtin/cursor/src/stream.ts +0 -494
  1065. package/dist/builtin/cursor/src/transport-errors.ts +0 -74
  1066. package/dist/builtin/cursor/src/transport-frame.ts +0 -56
  1067. package/dist/builtin/cursor/src/transport-http2.ts +0 -122
  1068. package/dist/builtin/cursor/src/transport-native-client.ts +0 -161
  1069. package/dist/builtin/cursor/src/transport-run-stream.ts +0 -188
  1070. package/dist/builtin/cursor/src/transport-timeouts.ts +0 -87
  1071. package/dist/builtin/cursor/src/transport-types.ts +0 -143
  1072. package/dist/builtin/cursor/src/transport.ts +0 -26
  1073. package/dist/builtin/workflows/builtin/deep-research-codebase-runner.ts +0 -492
  1074. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +0 -383
  1075. package/dist/builtin/workflows/builtin/deep-research-codebase.d.ts +0 -35
  1076. package/dist/builtin/workflows/builtin/deep-research-codebase.ts +0 -47
  1077. package/dist/builtin/workflows/skills/impeccable/reference/brand.md +0 -108
  1078. package/dist/builtin/workflows/skills/impeccable/reference/codex.md +0 -105
  1079. package/dist/builtin/workflows/skills/impeccable/reference/interaction-design.md +0 -189
  1080. package/dist/builtin/workflows/skills/impeccable/scripts/hook-before-edit.mjs +0 -516
  1081. package/dist/core/context-window.d.ts +0 -54
  1082. package/dist/core/context-window.d.ts.map +0 -1
  1083. package/dist/core/context-window.js +0 -110
  1084. package/dist/core/context-window.js.map +0 -1
  1085. package/dist/core/copilot-anthropic-sse-repair.d.ts +0 -23
  1086. package/dist/core/copilot-anthropic-sse-repair.d.ts.map +0 -1
  1087. package/dist/core/copilot-anthropic-sse-repair.js +0 -340
  1088. package/dist/core/copilot-anthropic-sse-repair.js.map +0 -1
  1089. package/dist/core/copilot-errors.d.ts +0 -9
  1090. package/dist/core/copilot-errors.d.ts.map +0 -1
  1091. package/dist/core/copilot-errors.js +0 -32
  1092. package/dist/core/copilot-errors.js.map +0 -1
  1093. package/dist/core/copilot-gemini-payload-sanitizer.d.ts +0 -72
  1094. package/dist/core/copilot-gemini-payload-sanitizer.d.ts.map +0 -1
  1095. package/dist/core/copilot-gemini-payload-sanitizer.js +0 -296
  1096. package/dist/core/copilot-gemini-payload-sanitizer.js.map +0 -1
  1097. package/dist/core/copilot-gemini-reasoning.d.ts +0 -126
  1098. package/dist/core/copilot-gemini-reasoning.d.ts.map +0 -1
  1099. package/dist/core/copilot-gemini-reasoning.js +0 -265
  1100. package/dist/core/copilot-gemini-reasoning.js.map +0 -1
  1101. package/dist/core/copilot-gemini-tool-arguments.d.ts +0 -42
  1102. package/dist/core/copilot-gemini-tool-arguments.d.ts.map +0 -1
  1103. package/dist/core/copilot-gemini-tool-arguments.js +0 -159
  1104. package/dist/core/copilot-gemini-tool-arguments.js.map +0 -1
  1105. package/dist/core/copilot-hosts.d.ts +0 -12
  1106. package/dist/core/copilot-hosts.d.ts.map +0 -1
  1107. package/dist/core/copilot-hosts.js +0 -33
  1108. package/dist/core/copilot-hosts.js.map +0 -1
  1109. package/dist/core/copilot-model-catalog.d.ts +0 -114
  1110. package/dist/core/copilot-model-catalog.d.ts.map +0 -1
  1111. package/dist/core/copilot-model-catalog.js +0 -392
  1112. package/dist/core/copilot-model-catalog.js.map +0 -1
  1113. package/dist/core/copilot-model-static-fallbacks.d.ts +0 -43
  1114. package/dist/core/copilot-model-static-fallbacks.d.ts.map +0 -1
  1115. package/dist/core/copilot-model-static-fallbacks.js +0 -50
  1116. package/dist/core/copilot-model-static-fallbacks.js.map +0 -1
  1117. package/dist/core/copilot-model-synthesis.d.ts +0 -10
  1118. package/dist/core/copilot-model-synthesis.d.ts.map +0 -1
  1119. package/dist/core/copilot-model-synthesis.js +0 -91
  1120. package/dist/core/copilot-model-synthesis.js.map +0 -1
  1121. package/dist/modes/interactive/components/context-window-selector.d.ts +0 -53
  1122. package/dist/modes/interactive/components/context-window-selector.d.ts.map +0 -1
  1123. package/dist/modes/interactive/components/context-window-selector.js +0 -136
  1124. package/dist/modes/interactive/components/context-window-selector.js.map +0 -1
  1125. package/dist/modes/rpc/bounded-writer.d.ts +0 -27
  1126. package/dist/modes/rpc/bounded-writer.d.ts.map +0 -1
  1127. package/dist/modes/rpc/bounded-writer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Custom message types and transformers for the coding agent.\n *\n * Extends the base AgentMessage type with coding-agent specific message types,\n * and provides a transformer to convert them to LLM-compatible messages.\n */\n\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { ImageContent, Message, TextContent } from \"@earendil-works/pi-ai/compat\";\n\nexport const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:\n\n<summary>\n`;\n\nexport const BRANCH_SUMMARY_SUFFIX = `</summary>`;\n\n/**\n * Message type for bash executions via the ! command.\n */\nexport interface BashExecutionMessage {\n\trole: \"bashExecution\";\n\tcommand: string;\n\toutput: string;\n\texitCode: number | undefined;\n\tcancelled: boolean;\n\ttruncated: boolean;\n\tfullOutputPath?: string;\n\ttimestamp: number;\n\t/** If true, this message is excluded from LLM context (!! prefix) */\n\texcludeFromContext?: boolean;\n}\n\n/**\n * Message type for extension-injected messages via sendMessage().\n * These are custom messages that extensions can inject into the conversation.\n */\nexport interface CustomMessage<T = unknown> {\n\trole: \"custom\";\n\tcustomType: string;\n\tcontent: string | (TextContent | ImageContent)[];\n\tdisplay: boolean;\n\tdetails?: T;\n\ttimestamp: number;\n}\n\nexport interface BranchSummaryMessage {\n\trole: \"branchSummary\";\n\tsummary: string;\n\tfromId: string;\n\ttimestamp: number;\n}\n\n// Extend CustomAgentMessages via declaration merging\ndeclare module \"@earendil-works/pi-agent-core\" {\n\tinterface CustomAgentMessages {\n\t\tbashExecution: BashExecutionMessage;\n\t\tcustom: CustomMessage;\n\t\tbranchSummary: BranchSummaryMessage;\n\t}\n}\n\n/** Normalize lax JavaScript/legacy message input before it reaches history or providers. */\nexport function normalizeMessageContent<T extends AgentMessage>(message: T): T {\n\tswitch (message.role) {\n\t\tcase \"user\":\n\t\tcase \"assistant\":\n\t\tcase \"toolResult\":\n\t\tcase \"custom\":\n\t\t\treturn message.content == null ? ({ ...message, content: [] } as T) : message;\n\t\tdefault:\n\t\t\treturn message;\n\t}\n}\n\nexport function userLikeContentBlockIsLlmVisible(block: unknown): boolean {\n\tif (!block || typeof block !== \"object\") return false;\n\tconst candidate = block as { type?: unknown; text?: unknown };\n\tif (candidate.type === \"image\") return true;\n\tif (candidate.type === \"text\") return typeof candidate.text === \"string\" && candidate.text.trim().length > 0;\n\t// Future provider-supported blocks must fail visible; only malformed/untyped blocks fail closed.\n\treturn typeof candidate.type === \"string\" && candidate.type.trim().length > 0;\n}\n\n/** Whether user/custom content survives provider conversion as a visible input. */\nexport function userLikeContentIsLlmVisible(\n\tcontent: unknown,\n\tdeletedBlockIndexes: ReadonlySet<number> = new Set<number>(),\n): boolean {\n\tif (typeof content === \"string\") return content.trim().length > 0;\n\tif (!Array.isArray(content)) return false;\n\treturn content.some((block, index) => !deletedBlockIndexes.has(index) && userLikeContentBlockIsLlmVisible(block));\n}\n\n/** Whether an Atomic message emits an LLM-visible user-like turn boundary. */\nexport function messageStartsLlmUserTurn(\n\tmessage: AgentMessage,\n\tdeletedBlockIndexes: ReadonlySet<number> = new Set<number>(),\n): boolean {\n\tswitch (message.role) {\n\t\tcase \"user\":\n\t\t\treturn userLikeContentIsLlmVisible(message.content, deletedBlockIndexes);\n\t\tcase \"custom\":\n\t\t\treturn (\n\t\t\t\t(message as CustomMessage & { excludeFromContext?: boolean }).excludeFromContext !== true &&\n\t\t\t\tuserLikeContentIsLlmVisible(message.content, deletedBlockIndexes)\n\t\t\t);\n\t\tcase \"branchSummary\":\n\t\t\t// Empty summaries are omitted by session reconstruction. Whitespace is\n\t\t\t// visible because the branch-summary wrapper itself is non-whitespace.\n\t\t\treturn typeof message.summary === \"string\" && message.summary.length > 0;\n\t\tcase \"bashExecution\":\n\t\t\treturn message.excludeFromContext !== true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n/** Whether an Atomic message survives conversion into provider-visible context. */\nexport function messageIsLlmVisible(\n\tmessage: AgentMessage,\n\tdeletedBlockIndexes: ReadonlySet<number> = new Set<number>(),\n): boolean {\n\tif (message.role === \"assistant\" || message.role === \"toolResult\") return true;\n\treturn messageStartsLlmUserTurn(message, deletedBlockIndexes);\n}\n\n/** Filter invalid user-like blocks only in transient provider-bound content. */\nfunction filterUserLikeContentBlocks(content: unknown[]): unknown[] {\n\treturn content.filter(userLikeContentBlockIsLlmVisible);\n}\n\n/** Normalize raw blocks only in the transient LLM-compatible message returned by convertToLlm. */\nfunction normalizeRawRedactedThinking(message: AgentMessage): AgentMessage {\n\tif (message.role !== \"assistant\" || !Array.isArray(message.content)) return message;\n\tlet changed = false;\n\tconst content = message.content.map((block) => {\n\t\tif (!block || typeof block !== \"object\") return block;\n\t\tconst candidate = block as { type?: unknown; data?: unknown };\n\t\tif (candidate.type !== \"redacted_thinking\" || typeof candidate.data !== \"string\") return block;\n\t\tchanged = true;\n\t\treturn {\n\t\t\ttype: \"thinking\" as const,\n\t\t\tthinking: \"\",\n\t\t\tthinkingSignature: candidate.data,\n\t\t\tredacted: true,\n\t\t};\n\t});\n\treturn changed ? ({ ...message, content } as AgentMessage) : message;\n}\n\n/**\n * Convert a BashExecutionMessage to user message text for LLM context.\n */\nexport function bashExecutionToText(msg: BashExecutionMessage): string {\n\tlet text = `Ran \\`${msg.command}\\`\\n`;\n\tif (msg.output) {\n\t\ttext += `\\`\\`\\`\\n${msg.output}\\n\\`\\`\\``;\n\t} else {\n\t\ttext += \"(no output)\";\n\t}\n\tif (msg.cancelled) {\n\t\ttext += \"\\n\\n(command cancelled)\";\n\t} else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {\n\t\ttext += `\\n\\nCommand exited with code ${msg.exitCode}`;\n\t}\n\tif (msg.truncated && msg.fullOutputPath) {\n\t\ttext += `\\n\\n[Output truncated. Full output: ${msg.fullOutputPath}]`;\n\t}\n\treturn text;\n}\n\nexport const VERBATIM_COMPACTION_PREFIX =\n\t'The earlier conversation was compacted. Below is the verbatim transcript of the retained lines; elided spans are marked \"(filtered N lines)\".\\n\\n';\nconst verbatimCompactionMessages = new WeakSet<CustomMessage>();\n\nexport function isVerbatimCompactionMessage(message: CustomMessage): boolean {\n\treturn verbatimCompactionMessages.has(message);\n}\n\n/** Create the visible custom-role boundary used to replay a verbatim compaction. */\nexport function createVerbatimCompactionMessage(\n\tcompactedText: string,\n\ttokensBefore: number,\n\ttimestamp: string,\n\tdetails?: unknown,\n): CustomMessage {\n\tconst message = createCustomMessage(\n\t\t\"compaction\",\n\t\t[{ type: \"text\", text: VERBATIM_COMPACTION_PREFIX + compactedText }],\n\t\ttrue,\n\t\tdetails ?? { tokensBefore },\n\t\ttimestamp,\n\t);\n\tverbatimCompactionMessages.add(message);\n\treturn message;\n}\n\nexport function createBranchSummaryMessage(summary: string, fromId: string, timestamp: string): BranchSummaryMessage {\n\treturn {\n\t\trole: \"branchSummary\",\n\t\tsummary,\n\t\tfromId,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\n\n/** Convert CustomMessageEntry to AgentMessage format */\nexport function createCustomMessage(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: unknown | undefined,\n\ttimestamp: string,\n\texcludeFromContext?: boolean,\n): CustomMessage {\n\tconst message: CustomMessage & { excludeFromContext?: boolean } = {\n\t\trole: \"custom\",\n\t\tcustomType,\n\t\tcontent: content ?? [],\n\t\tdisplay,\n\t\tdetails,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n\tif (excludeFromContext === true) message.excludeFromContext = true;\n\treturn message;\n}\n\nfunction collectAssistantToolCallIds(message: Message): Set<string> {\n\tconst content = (message as { content?: unknown }).content;\n\tconst ids = new Set<string>();\n\tif (!Array.isArray(content)) return ids;\n\tfor (const block of content) {\n\t\tif (!block || typeof block !== \"object\") continue;\n\t\tconst candidate = block as { type?: unknown; id?: unknown };\n\t\tif (candidate.type === \"toolCall\" && typeof candidate.id === \"string\") ids.add(candidate.id);\n\t}\n\treturn ids;\n}\n\nfunction getToolResultCallId(message: Message): string | undefined {\n\tif (message.role !== \"toolResult\") return undefined;\n\tconst toolCallId = (message as { toolCallId?: unknown }).toolCallId;\n\treturn typeof toolCallId === \"string\" ? toolCallId : undefined;\n}\n\nexport function repairOrphanToolResults(messages: Message[]): Message[] {\n\tlet allowedToolCallIds: Set<string> | undefined;\n\tlet changed = false;\n\tconst repaired: Message[] = [];\n\tfor (const message of messages) {\n\t\tif (message.role === \"assistant\") {\n\t\t\tallowedToolCallIds = collectAssistantToolCallIds(message);\n\t\t\trepaired.push(message);\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.role === \"toolResult\") {\n\t\t\tconst toolCallId = getToolResultCallId(message);\n\t\t\tif (toolCallId && allowedToolCallIds?.has(toolCallId)) {\n\t\t\t\trepaired.push(message);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tchanged = true;\n\t\t\tcontinue;\n\t\t}\n\t\tallowedToolCallIds = undefined;\n\t\trepaired.push(message);\n\t}\n\treturn changed ? repaired : messages;\n}\n\n/**\n * Transform AgentMessages (including custom types) to LLM-compatible Messages.\n *\n * This is used by:\n * - Agent's transormToLlm option (for prompt calls and queued messages)\n * - Branch summarization (for summarizing abandoned branches)\n * - Custom extensions and tools\n */\nexport function convertToLlm(messages: AgentMessage[]): Message[] {\n\tconst converted = messages\n\t\t.map((rawMessage): Message | undefined => {\n\t\t\tconst m = normalizeRawRedactedThinking(normalizeMessageContent(rawMessage));\n\t\t\tswitch (m.role) {\n\t\t\t\tcase \"bashExecution\":\n\t\t\t\t\tif (!messageStartsLlmUserTurn(m)) return undefined;\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: bashExecutionToText(m) }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"custom\": {\n\t\t\t\t\tif (!messageStartsLlmUserTurn(m)) return undefined;\n\t\t\t\t\tconst content = typeof m.content === \"string\"\n\t\t\t\t\t\t? [{ type: \"text\" as const, text: m.content }]\n\t\t\t\t\t\t: filterUserLikeContentBlocks(m.content) as Message[\"content\"];\n\t\t\t\t\treturn { role: \"user\", content, timestamp: m.timestamp } as Message;\n\t\t\t\t}\n\t\t\t\tcase \"branchSummary\":\n\t\t\t\t\tif (!messageStartsLlmUserTurn(m)) return undefined;\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"user\": {\n\t\t\t\t\tif (!messageStartsLlmUserTurn(m)) return undefined;\n\t\t\t\t\tif (!Array.isArray(m.content)) return m;\n\t\t\t\t\treturn { ...m, content: filterUserLikeContentBlocks(m.content) } as Message;\n\t\t\t\t}\n\t\t\t\tcase \"assistant\":\n\t\t\t\tcase \"toolResult\":\n\t\t\t\t\treturn m;\n\t\t\t\tcase \"compactionSummary\":\n\t\t\t\t\t// Legacy generated summaries remain archival and never enter active LLM context.\n\t\t\t\t\treturn undefined;\n\t\t\t\tdefault: {\n\t\t\t\t\t// Exhaustiveness guard: new AgentMessage roles must define provider conversion explicitly.\n\t\t\t\t\tconst _exhaustiveCheck: never = m;\n\t\t\t\t\tvoid _exhaustiveCheck;\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.filter((m) => m !== undefined);\n\treturn repairOrphanToolResults(converted);\n}\n"]}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/core/messages.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Custom message types and transformers for the coding agent.\n *\n * Extends the base AgentMessage type with coding-agent specific message types,\n * and provides a transformer to convert them to LLM-compatible messages.\n */\n\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { ImageContent, Message, TextContent } from \"@earendil-works/pi-ai/compat\";\n\nexport const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:\n\n<summary>\n`;\n\nexport const BRANCH_SUMMARY_SUFFIX = `</summary>`;\n\n/**\n * Message type for bash executions via the ! command.\n */\nexport interface BashExecutionMessage {\n\trole: \"bashExecution\";\n\tcommand: string;\n\toutput: string;\n\texitCode: number | undefined;\n\tcancelled: boolean;\n\ttruncated: boolean;\n\tfullOutputPath?: string;\n\ttimestamp: number;\n\t/** If true, this message is excluded from LLM context (!! prefix) */\n\texcludeFromContext?: boolean;\n}\n\n/**\n * Message type for extension-injected messages via sendMessage().\n * These are custom messages that extensions can inject into the conversation.\n */\nexport interface CustomMessage<T = unknown> {\n\trole: \"custom\";\n\tcustomType: string;\n\tcontent: string | (TextContent | ImageContent)[];\n\tdisplay: boolean;\n\tdetails?: T;\n\ttimestamp: number;\n}\n\nexport interface BranchSummaryMessage {\n\trole: \"branchSummary\";\n\tsummary: string;\n\tfromId: string;\n\ttimestamp: number;\n}\n\n// Extend CustomAgentMessages via declaration merging\ndeclare module \"@earendil-works/pi-agent-core\" {\n\tinterface CustomAgentMessages {\n\t\tbashExecution: BashExecutionMessage;\n\t\tcustom: CustomMessage;\n\t\tbranchSummary: BranchSummaryMessage;\n\t}\n}\n\n/** Normalize lax JavaScript/legacy message input before it reaches history or providers. */\nexport function normalizeMessageContent<T extends AgentMessage>(message: T): T {\n\tswitch (message.role) {\n\t\tcase \"user\":\n\t\tcase \"assistant\":\n\t\tcase \"toolResult\":\n\t\tcase \"custom\":\n\t\t\treturn message.content == null ? ({ ...message, content: [] } as T) : message;\n\t\tdefault:\n\t\t\treturn message;\n\t}\n}\n\nexport function userLikeContentBlockIsLlmVisible(block: unknown): boolean {\n\tif (!block || typeof block !== \"object\") return false;\n\tconst candidate = block as { type?: unknown; text?: unknown };\n\tif (candidate.type === \"image\") return true;\n\tif (candidate.type === \"text\") return typeof candidate.text === \"string\" && candidate.text.trim().length > 0;\n\t// Future provider-supported blocks must fail visible; only malformed/untyped blocks fail closed.\n\treturn typeof candidate.type === \"string\" && candidate.type.trim().length > 0;\n}\n\n/** Whether user/custom content survives provider conversion as a visible input. */\nexport function userLikeContentIsLlmVisible(\n\tcontent: unknown,\n\tdeletedBlockIndexes: ReadonlySet<number> = new Set<number>(),\n): boolean {\n\tif (typeof content === \"string\") return content.trim().length > 0;\n\tif (!Array.isArray(content)) return false;\n\treturn content.some((block, index) => !deletedBlockIndexes.has(index) && userLikeContentBlockIsLlmVisible(block));\n}\n\n/** Whether an Atomic message emits an LLM-visible user-like turn boundary. */\nexport function messageStartsLlmUserTurn(\n\tmessage: AgentMessage,\n\tdeletedBlockIndexes: ReadonlySet<number> = new Set<number>(),\n): boolean {\n\tswitch (message.role) {\n\t\tcase \"user\":\n\t\t\treturn userLikeContentIsLlmVisible(message.content, deletedBlockIndexes);\n\t\tcase \"custom\":\n\t\t\treturn (\n\t\t\t\t(message as CustomMessage & { excludeFromContext?: boolean }).excludeFromContext !== true &&\n\t\t\t\tuserLikeContentIsLlmVisible(message.content, deletedBlockIndexes)\n\t\t\t);\n\t\tcase \"branchSummary\":\n\t\t\t// Empty summaries are omitted by session reconstruction. Whitespace is\n\t\t\t// visible because the branch-summary wrapper itself is non-whitespace.\n\t\t\treturn typeof message.summary === \"string\" && message.summary.length > 0;\n\t\tcase \"bashExecution\":\n\t\t\treturn message.excludeFromContext !== true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n/** Whether an Atomic message survives conversion into provider-visible context. */\nexport function messageIsLlmVisible(\n\tmessage: AgentMessage,\n\tdeletedBlockIndexes: ReadonlySet<number> = new Set<number>(),\n): boolean {\n\tif (message.role === \"assistant\" || message.role === \"toolResult\") return true;\n\treturn messageStartsLlmUserTurn(message, deletedBlockIndexes);\n}\n\n/** Filter invalid user-like blocks only in transient provider-bound content. */\nfunction filterUserLikeContentBlocks(content: unknown[]): unknown[] {\n\treturn content.filter(userLikeContentBlockIsLlmVisible);\n}\n\n/** Normalize raw blocks only in the transient LLM-compatible message returned by convertToLlm. */\nfunction normalizeRawRedactedThinking(message: AgentMessage): AgentMessage {\n\tif (message.role !== \"assistant\" || !Array.isArray(message.content)) return message;\n\tlet changed = false;\n\tconst content = message.content.map((block) => {\n\t\tif (!block || typeof block !== \"object\") return block;\n\t\tconst candidate = block as { type?: unknown; data?: unknown };\n\t\tif (candidate.type !== \"redacted_thinking\" || typeof candidate.data !== \"string\") return block;\n\t\tchanged = true;\n\t\treturn {\n\t\t\ttype: \"thinking\" as const,\n\t\t\tthinking: \"\",\n\t\t\tthinkingSignature: candidate.data,\n\t\t\tredacted: true,\n\t\t};\n\t});\n\treturn changed ? ({ ...message, content } as AgentMessage) : message;\n}\n\n/**\n * Convert a BashExecutionMessage to user message text for LLM context.\n */\nexport function bashExecutionToText(msg: BashExecutionMessage): string {\n\tlet text = `Ran \\`${msg.command}\\`\\n`;\n\tif (msg.output) {\n\t\ttext += `\\`\\`\\`\\n${msg.output}\\n\\`\\`\\``;\n\t} else {\n\t\ttext += \"(no output)\";\n\t}\n\tif (msg.cancelled) {\n\t\ttext += \"\\n\\n(command cancelled)\";\n\t} else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {\n\t\ttext += `\\n\\nCommand exited with code ${msg.exitCode}`;\n\t}\n\tif (msg.truncated && msg.fullOutputPath) {\n\t\ttext += `\\n\\n[Output truncated. Full output: ${msg.fullOutputPath}]`;\n\t}\n\treturn text;\n}\n\nexport const VERBATIM_COMPACTION_PREFIX =\n\t'The earlier conversation was compacted. Below is the verbatim transcript of the retained lines; elided spans are marked \"(filtered N lines)\".\\n\\n';\nconst verbatimCompactionMessages = new WeakSet<CustomMessage>();\n\nexport function isVerbatimCompactionMessage(message: CustomMessage): boolean {\n\treturn verbatimCompactionMessages.has(message);\n}\n\n/**\n * Create the visible custom-role boundary used to replay a verbatim compaction.\n *\n * `retainedTail` holds the serialized kept tail. Its text merges into the boundary text and\n * its image blocks stay intact, so preserved content is not reduced to a placeholder.\n */\nexport function createVerbatimCompactionMessage(\n\tcompactedText: string,\n\ttokensBefore: number,\n\ttimestamp: string,\n\tdetails?: unknown,\n\tretainedTail?: readonly (TextContent | ImageContent)[],\n): CustomMessage {\n\tconst content: (TextContent | ImageContent)[] = [{ type: \"text\", text: VERBATIM_COMPACTION_PREFIX + compactedText }];\n\tfor (const block of retainedTail ?? []) {\n\t\tconst last = content[content.length - 1];\n\t\tif (block.type === \"text\" && last.type === \"text\") last.text += block.text;\n\t\telse content.push({ ...block });\n\t}\n\tconst message = createCustomMessage(\"compaction\", content, true, details ?? { tokensBefore }, timestamp);\n\tverbatimCompactionMessages.add(message);\n\treturn message;\n}\n\nexport function createBranchSummaryMessage(summary: string, fromId: string, timestamp: string): BranchSummaryMessage {\n\treturn {\n\t\trole: \"branchSummary\",\n\t\tsummary,\n\t\tfromId,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n}\n\n/** Convert CustomMessageEntry to AgentMessage format */\nexport function createCustomMessage(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: unknown | undefined,\n\ttimestamp: string,\n\texcludeFromContext?: boolean,\n): CustomMessage {\n\tconst message: CustomMessage & { excludeFromContext?: boolean } = {\n\t\trole: \"custom\",\n\t\tcustomType,\n\t\tcontent: content ?? [],\n\t\tdisplay,\n\t\tdetails,\n\t\ttimestamp: new Date(timestamp).getTime(),\n\t};\n\tif (excludeFromContext === true) message.excludeFromContext = true;\n\treturn message;\n}\n\nfunction collectAssistantToolCallIds(message: Message): Set<string> {\n\tconst content = (message as { content?: unknown }).content;\n\tconst ids = new Set<string>();\n\tif (!Array.isArray(content)) return ids;\n\tfor (const block of content) {\n\t\tif (!block || typeof block !== \"object\") continue;\n\t\tconst candidate = block as { type?: unknown; id?: unknown };\n\t\tif (candidate.type === \"toolCall\" && typeof candidate.id === \"string\") ids.add(candidate.id);\n\t}\n\treturn ids;\n}\n\nfunction getToolResultCallId(message: Message): string | undefined {\n\tif (message.role !== \"toolResult\") return undefined;\n\tconst toolCallId = (message as { toolCallId?: unknown }).toolCallId;\n\treturn typeof toolCallId === \"string\" ? toolCallId : undefined;\n}\n\n/**\n * Enforce the provider's tool-pairing invariant on a converted message list.\n *\n * A provider rejects both an orphaned `tool_result` and a second `tool_result`\n * carrying a `tool_use` id that was already answered. Keep exactly the first\n * result for each id the preceding assistant message announced.\n */\nexport function repairOrphanToolResults(messages: Message[]): Message[] {\n\tlet allowedToolCallIds: Set<string> | undefined;\n\tlet answeredToolCallIds: Set<string> | undefined;\n\tlet changed = false;\n\tconst repaired: Message[] = [];\n\tfor (const message of messages) {\n\t\tif (message.role === \"assistant\") {\n\t\t\tallowedToolCallIds = collectAssistantToolCallIds(message);\n\t\t\tansweredToolCallIds = new Set<string>();\n\t\t\trepaired.push(message);\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.role === \"toolResult\") {\n\t\t\tconst toolCallId = getToolResultCallId(message);\n\t\t\tif (toolCallId && allowedToolCallIds?.has(toolCallId) && answeredToolCallIds?.has(toolCallId) === false) {\n\t\t\t\tansweredToolCallIds.add(toolCallId);\n\t\t\t\trepaired.push(message);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tchanged = true;\n\t\t\tcontinue;\n\t\t}\n\t\tallowedToolCallIds = undefined;\n\t\tansweredToolCallIds = undefined;\n\t\trepaired.push(message);\n\t}\n\treturn changed ? repaired : messages;\n}\n\n/**\n * Transform AgentMessages (including custom types) to LLM-compatible Messages.\n *\n * This is used by:\n * - Agent's transormToLlm option (for prompt calls and queued messages)\n * - Branch summarization (for summarizing abandoned branches)\n * - Custom extensions and tools\n */\nexport function convertToLlm(messages: AgentMessage[]): Message[] {\n\tconst converted = messages\n\t\t.map((rawMessage): Message | undefined => {\n\t\t\tconst m = normalizeRawRedactedThinking(normalizeMessageContent(rawMessage));\n\t\t\tswitch (m.role) {\n\t\t\t\tcase \"bashExecution\":\n\t\t\t\t\tif (!messageStartsLlmUserTurn(m)) return undefined;\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: bashExecutionToText(m) }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"custom\": {\n\t\t\t\t\tif (!messageStartsLlmUserTurn(m)) return undefined;\n\t\t\t\t\tconst content = typeof m.content === \"string\"\n\t\t\t\t\t\t? [{ type: \"text\" as const, text: m.content }]\n\t\t\t\t\t\t: filterUserLikeContentBlocks(m.content) as Message[\"content\"];\n\t\t\t\t\treturn { role: \"user\", content, timestamp: m.timestamp } as Message;\n\t\t\t\t}\n\t\t\t\tcase \"branchSummary\":\n\t\t\t\t\tif (!messageStartsLlmUserTurn(m)) return undefined;\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"user\": {\n\t\t\t\t\tif (!messageStartsLlmUserTurn(m)) return undefined;\n\t\t\t\t\tif (!Array.isArray(m.content)) return m;\n\t\t\t\t\treturn { ...m, content: filterUserLikeContentBlocks(m.content) } as Message;\n\t\t\t\t}\n\t\t\t\tcase \"assistant\":\n\t\t\t\tcase \"toolResult\":\n\t\t\t\t\treturn m;\n\t\t\t\tcase \"compactionSummary\":\n\t\t\t\t\t// Legacy generated summaries remain archival and never enter active LLM context.\n\t\t\t\t\treturn undefined;\n\t\t\t\tdefault: {\n\t\t\t\t\t// Exhaustiveness guard: new AgentMessage roles must define provider conversion explicitly.\n\t\t\t\t\tconst _exhaustiveCheck: never = m;\n\t\t\t\t\tvoid _exhaustiveCheck;\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.filter((m) => m !== undefined);\n\treturn repairOrphanToolResults(converted);\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import type { Api, Model } from "@earendil-works/pi-ai/compat";
2
+ /** Atomic compatibility alias accepted alongside pi-ai's canonical grammar capability. */
3
+ export interface GrammarToolCapabilityAlias {
4
+ supportsGrammarTools?: boolean;
5
+ }
6
+ /** Pi provider compatibility metadata plus Atomic's public constrained-sampling fields. */
7
+ export type AtomicProviderCompat = NonNullable<Model<Api>["compat"]> & GrammarToolCapabilityAlias & {
8
+ supportsStrictTools?: boolean;
9
+ supportsStrictMode?: boolean;
10
+ supportsOpenAIGrammarTools?: boolean;
11
+ };
12
+ /**
13
+ * Keep Atomic's documented capability alias synchronized with pi-ai's canonical
14
+ * field. The canonical field wins when both are supplied, so Atomic never
15
+ * advertises grammar enforcement that the provider runtime has disabled.
16
+ */
17
+ export declare function normalizeGrammarToolCapability(compat: AtomicProviderCompat | Model<Api>["compat"] | undefined): AtomicProviderCompat | undefined;
18
+ //# sourceMappingURL=model-capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-capabilities.d.ts","sourceRoot":"","sources":["../../src/core/model-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAE/D,0FAA0F;AAC1F,MAAM,WAAW,0BAA0B;IAC1C,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,2FAA2F;AAC3F,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,0BAA0B,GAAG;IACnG,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACrC,CAAC;AAMF;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,SAAS,GAC7D,oBAAoB,GAAG,SAAS,CAgBlC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Keep Atomic's documented capability alias synchronized with pi-ai's canonical
3
+ * field. The canonical field wins when both are supplied, so Atomic never
4
+ * advertises grammar enforcement that the provider runtime has disabled.
5
+ */
6
+ export function normalizeGrammarToolCapability(compat) {
7
+ if (!compat)
8
+ return undefined;
9
+ const grammarCompat = compat;
10
+ const supported = grammarCompat.supportsOpenAIGrammarTools ?? grammarCompat.supportsGrammarTools;
11
+ if (supported === undefined)
12
+ return compat;
13
+ if (grammarCompat.supportsOpenAIGrammarTools === supported &&
14
+ grammarCompat.supportsGrammarTools === supported) {
15
+ return compat;
16
+ }
17
+ return {
18
+ ...grammarCompat,
19
+ supportsOpenAIGrammarTools: supported,
20
+ supportsGrammarTools: supported,
21
+ };
22
+ }
23
+ //# sourceMappingURL=model-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-capabilities.js","sourceRoot":"","sources":["../../src/core/model-capabilities.ts"],"names":[],"mappings":"AAkBA;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC7C,MAA+D;IAE/D,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,aAAa,GAAG,MAA2B,CAAC;IAClD,MAAM,SAAS,GAAG,aAAa,CAAC,0BAA0B,IAAI,aAAa,CAAC,oBAAoB,CAAC;IACjG,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,MAA8B,CAAC;IACnE,IACC,aAAa,CAAC,0BAA0B,KAAK,SAAS;QACtD,aAAa,CAAC,oBAAoB,KAAK,SAAS,EAC/C,CAAC;QACF,OAAO,MAA8B,CAAC;IACvC,CAAC;IACD,OAAO;QACN,GAAG,aAAa;QAChB,0BAA0B,EAAE,SAAS;QACrC,oBAAoB,EAAE,SAAS;KACP,CAAC;AAC3B,CAAC","sourcesContent":["import type { Api, Model } from \"@earendil-works/pi-ai/compat\";\n\n/** Atomic compatibility alias accepted alongside pi-ai's canonical grammar capability. */\nexport interface GrammarToolCapabilityAlias {\n\tsupportsGrammarTools?: boolean;\n}\n\n/** Pi provider compatibility metadata plus Atomic's public constrained-sampling fields. */\nexport type AtomicProviderCompat = NonNullable<Model<Api>[\"compat\"]> & GrammarToolCapabilityAlias & {\n\tsupportsStrictTools?: boolean;\n\tsupportsStrictMode?: boolean;\n\tsupportsOpenAIGrammarTools?: boolean;\n};\n\ntype GrammarCompatible = NonNullable<Model<Api>[\"compat\"]> & GrammarToolCapabilityAlias & {\n\tsupportsOpenAIGrammarTools?: boolean;\n};\n\n/**\n * Keep Atomic's documented capability alias synchronized with pi-ai's canonical\n * field. The canonical field wins when both are supplied, so Atomic never\n * advertises grammar enforcement that the provider runtime has disabled.\n */\nexport function normalizeGrammarToolCapability(\n\tcompat: AtomicProviderCompat | Model<Api>[\"compat\"] | undefined,\n): AtomicProviderCompat | undefined {\n\tif (!compat) return undefined;\n\tconst grammarCompat = compat as GrammarCompatible;\n\tconst supported = grammarCompat.supportsOpenAIGrammarTools ?? grammarCompat.supportsGrammarTools;\n\tif (supported === undefined) return compat as AtomicProviderCompat;\n\tif (\n\t\tgrammarCompat.supportsOpenAIGrammarTools === supported &&\n\t\tgrammarCompat.supportsGrammarTools === supported\n\t) {\n\t\treturn compat as AtomicProviderCompat;\n\t}\n\treturn {\n\t\t...grammarCompat,\n\t\tsupportsOpenAIGrammarTools: supported,\n\t\tsupportsGrammarTools: supported,\n\t} as AtomicProviderCompat;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"model-registry-auth.d.ts","sourceRoot":"","sources":["../../src/core/model-registry-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAS5F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAiB/E,wBAAsB,uBAAuB,CAC5C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACxD,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAE/C;AAkBD,wBAAsB,mBAAmB,CACxC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,WAAW,EAAE,WAAW,EACxB,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC1D,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACxD,YAAY,CAAC,EAAE,SAAS,GACtB,OAAO,CAAC,mBAAmB,CAAC,CA+C9B;AAED,wBAAgB,+BAA+B,CAC9C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACxD,UAAU,CAuBZ;AAED,wBAAsB,8BAA8B,CACnD,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACxD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ7B"}
1
+ {"version":3,"file":"model-registry-auth.d.ts","sourceRoot":"","sources":["../../src/core/model-registry-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAS5F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAiB/E,wBAAsB,uBAAuB,CAC5C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACxD,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAE/C;AAkBD,wBAAsB,mBAAmB,CACxC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,WAAW,EAAE,WAAW,EACxB,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC1D,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACxD,YAAY,CAAC,EAAE,SAAS,GACtB,OAAO,CAAC,mBAAmB,CAAC,CA8C9B;AAED,wBAAgB,+BAA+B,CAC9C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACxD,UAAU,CAuBZ;AAED,wBAAsB,8BAA8B,CACnD,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GACxD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ7B"}
@@ -1,4 +1,3 @@
1
- import { withGitHubCopilotApiVersionHeader } from "./model-registry-builtins.js";
2
1
  import { getConfigValueEnvVarNames, isCommandConfigValue, isConfigValueConfigured, resolveConfigValueOrThrow, resolveConfigValueUncached, resolveHeadersOrThrow, } from "./resolve-config-value.js";
3
2
  async function resolveCustomApiKeyAuth(provider, authStorage, providerRequestConfigs) {
4
3
  const resolver = providerRequestConfigs.get(provider)?.auth?.apiKey?.resolve;
@@ -54,7 +53,6 @@ export async function getModelRequestAuth(model, authStorage, providerRequestCon
54
53
  }
55
54
  headers = { ...headers, Authorization: `Bearer ${apiKey}` };
56
55
  }
57
- headers = withGitHubCopilotApiVersionHeader(model, headers);
58
56
  return {
59
57
  ok: true,
60
58
  apiKey,
@@ -1 +1 @@
1
- {"version":3,"file":"model-registry-auth.js","sourceRoot":"","sources":["../../src/core/model-registry-auth.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ModelAuth, ProviderHeaders } from \"@earendil-works/pi-ai\";\nimport type { Api, Model } from \"@earendil-works/pi-ai/compat\";\nimport type { AuthStatus, AuthStorage } from \"./auth-storage.ts\";\nimport { withGitHubCopilotApiVersionHeader } from \"./model-registry-builtins.ts\";\nimport type { ProviderRequestConfig, ResolvedRequestAuth } from \"./model-registry-types.ts\";\nimport {\n\tgetConfigValueEnvVarNames,\n\tisCommandConfigValue,\n\tisConfigValueConfigured,\n\tresolveConfigValueOrThrow,\n\tresolveConfigValueUncached,\n\tresolveHeadersOrThrow,\n} from \"./resolve-config-value.ts\";\nimport type { ProviderApiKeyAuthResult } from \"./extensions/provider-types.ts\";\n\nasync function resolveCustomApiKeyAuth(\n\tprovider: string,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n): Promise<ProviderApiKeyAuthResult | undefined> {\n\tconst resolver = providerRequestConfigs.get(provider)?.auth?.apiKey?.resolve;\n\tif (!resolver) return undefined;\n\tconst stored = authStorage.get(provider);\n\tconst credential = stored?.type === \"api_key\" ? stored : undefined;\n\treturn resolver({\n\t\tcredential,\n\t\tctx: { env: async (name) => credential?.env?.[name] ?? process.env[name] },\n\t});\n}\n\nexport async function getProviderResolvedAuth(\n\tprovider: string,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n): Promise<ProviderApiKeyAuthResult | undefined> {\n\treturn resolveCustomApiKeyAuth(provider, authStorage, providerRequestConfigs);\n}\nfunction mergeHeaders(\n\tbase: ProviderHeaders | undefined,\n\toverride: ProviderHeaders | undefined,\n): ProviderHeaders | undefined {\n\tif (!base && !override) return undefined;\n\tconst merged: ProviderHeaders = {};\n\tfor (const source of [base, override]) {\n\t\tfor (const [name, value] of Object.entries(source ?? {})) {\n\t\t\tfor (const existing of Object.keys(merged)) {\n\t\t\t\tif (existing.toLowerCase() === name.toLowerCase()) delete merged[existing];\n\t\t\t}\n\t\t\tmerged[name] = value;\n\t\t}\n\t}\n\treturn Object.keys(merged).length > 0 ? merged : undefined;\n}\n\nexport async function getModelRequestAuth(\n\tmodel: Model<Api>,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n\tmodelRequestHeaders: Map<string, Record<string, string>>,\n\tproviderAuth?: ModelAuth,\n): Promise<ResolvedRequestAuth> {\n\ttry {\n\t\tconst providerConfig = providerRequestConfigs.get(model.provider);\n\t\tconst customAuth = await resolveCustomApiKeyAuth(model.provider, authStorage, providerRequestConfigs);\n\t\tconst storedAuth = await authStorage.getModelAuth(model.provider, { includeFallback: false });\n\t\tconst apiKey =\n\t\t\tproviderAuth?.apiKey ??\n\t\t\tcustomAuth?.auth.apiKey ??\n\t\t\tstoredAuth?.apiKey ??\n\t\t\t(providerConfig?.apiKey\n\t\t\t\t? resolveConfigValueOrThrow(providerConfig.apiKey, `API key for provider \"${model.provider}\"`)\n\t\t\t\t: undefined);\n\n\t\tconst providerHeaders = resolveHeadersOrThrow(providerConfig?.headers, `provider \"${model.provider}\"`);\n\t\tconst modelHeaders = resolveHeadersOrThrow(\n\t\t\tmodelRequestHeaders.get(`${model.provider}:${model.id}`),\n\t\t\t`model \"${model.provider}/${model.id}\"`,\n\t\t);\n\n\t\tlet headers = providerAuth\n\t\t\t? mergeHeaders(model.headers, providerAuth.headers)\n\t\t\t: mergeHeaders(storedAuth?.headers, model.headers);\n\t\theaders = mergeHeaders(headers, customAuth?.auth.headers);\n\t\theaders = mergeHeaders(headers, providerHeaders);\n\t\theaders = mergeHeaders(headers, modelHeaders);\n\n\t\tif (providerConfig?.authHeader) {\n\t\t\tif (!apiKey) {\n\t\t\t\treturn { ok: false, error: `No API key found for \"${model.provider}\"` };\n\t\t\t}\n\t\t\theaders = { ...headers, Authorization: `Bearer ${apiKey}` };\n\t\t}\n\n\t\theaders = withGitHubCopilotApiVersionHeader(model, headers);\n\n\t\treturn {\n\t\t\tok: true,\n\t\t\tapiKey,\n\t\t\theaders: headers && Object.keys(headers).length > 0 ? headers : undefined,\n\t\t\tbaseUrl: providerAuth?.baseUrl ?? customAuth?.auth.baseUrl ?? storedAuth?.baseUrl,\n\t\t};\n\t} catch (error) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t};\n\t}\n}\n\nexport function getProviderAuthStatusFromConfig(\n\tprovider: string,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n): AuthStatus {\n\tconst authStatus = authStorage.getAuthStatus(provider);\n\tif (authStatus.source) {\n\t\treturn authStatus;\n\t}\n\n\tconst providerApiKey = providerRequestConfigs.get(provider)?.apiKey;\n\tif (!providerApiKey) {\n\t\treturn authStatus;\n\t}\n\n\tif (isCommandConfigValue(providerApiKey)) {\n\t\treturn { configured: true, source: \"models_json_command\" };\n\t}\n\n\tconst envVarNames = getConfigValueEnvVarNames(providerApiKey);\n\tif (envVarNames.length > 0) {\n\t\treturn isConfigValueConfigured(providerApiKey)\n\t\t\t? { configured: true, source: \"environment\", label: envVarNames.join(\", \") }\n\t\t\t: { configured: false };\n\t}\n\n\treturn { configured: true, source: \"models_json_key\" };\n}\n\nexport async function getApiKeyForProviderFromConfig(\n\tprovider: string,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n): Promise<string | undefined> {\n\tconst apiKey = await authStorage.getApiKey(provider, { includeFallback: false });\n\tif (apiKey !== undefined) {\n\t\treturn apiKey;\n\t}\n\n\tconst providerApiKey = providerRequestConfigs.get(provider)?.apiKey;\n\treturn providerApiKey ? resolveConfigValueUncached(providerApiKey) : undefined;\n}\n"]}
1
+ {"version":3,"file":"model-registry-auth.js","sourceRoot":"","sources":["../../src/core/model-registry-auth.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ModelAuth, ProviderHeaders } from \"@earendil-works/pi-ai\";\nimport type { Api, Model } from \"@earendil-works/pi-ai/compat\";\nimport type { AuthStatus, AuthStorage } from \"./auth-storage.ts\";\nimport type { ProviderRequestConfig, ResolvedRequestAuth } from \"./model-registry-types.ts\";\nimport {\n\tgetConfigValueEnvVarNames,\n\tisCommandConfigValue,\n\tisConfigValueConfigured,\n\tresolveConfigValueOrThrow,\n\tresolveConfigValueUncached,\n\tresolveHeadersOrThrow,\n} from \"./resolve-config-value.ts\";\nimport type { ProviderApiKeyAuthResult } from \"./extensions/provider-types.ts\";\n\nasync function resolveCustomApiKeyAuth(\n\tprovider: string,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n): Promise<ProviderApiKeyAuthResult | undefined> {\n\tconst resolver = providerRequestConfigs.get(provider)?.auth?.apiKey?.resolve;\n\tif (!resolver) return undefined;\n\tconst stored = authStorage.get(provider);\n\tconst credential = stored?.type === \"api_key\" ? stored : undefined;\n\treturn resolver({\n\t\tcredential,\n\t\tctx: { env: async (name) => credential?.env?.[name] ?? process.env[name] },\n\t});\n}\n\nexport async function getProviderResolvedAuth(\n\tprovider: string,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n): Promise<ProviderApiKeyAuthResult | undefined> {\n\treturn resolveCustomApiKeyAuth(provider, authStorage, providerRequestConfigs);\n}\nfunction mergeHeaders(\n\tbase: ProviderHeaders | undefined,\n\toverride: ProviderHeaders | undefined,\n): ProviderHeaders | undefined {\n\tif (!base && !override) return undefined;\n\tconst merged: ProviderHeaders = {};\n\tfor (const source of [base, override]) {\n\t\tfor (const [name, value] of Object.entries(source ?? {})) {\n\t\t\tfor (const existing of Object.keys(merged)) {\n\t\t\t\tif (existing.toLowerCase() === name.toLowerCase()) delete merged[existing];\n\t\t\t}\n\t\t\tmerged[name] = value;\n\t\t}\n\t}\n\treturn Object.keys(merged).length > 0 ? merged : undefined;\n}\n\nexport async function getModelRequestAuth(\n\tmodel: Model<Api>,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n\tmodelRequestHeaders: Map<string, Record<string, string>>,\n\tproviderAuth?: ModelAuth,\n): Promise<ResolvedRequestAuth> {\n\ttry {\n\t\tconst providerConfig = providerRequestConfigs.get(model.provider);\n\t\tconst customAuth = await resolveCustomApiKeyAuth(model.provider, authStorage, providerRequestConfigs);\n\t\tconst storedAuth = await authStorage.getModelAuth(model.provider, { includeFallback: false });\n\t\tconst apiKey =\n\t\t\tproviderAuth?.apiKey ??\n\t\t\tcustomAuth?.auth.apiKey ??\n\t\t\tstoredAuth?.apiKey ??\n\t\t\t(providerConfig?.apiKey\n\t\t\t\t? resolveConfigValueOrThrow(providerConfig.apiKey, `API key for provider \"${model.provider}\"`)\n\t\t\t\t: undefined);\n\n\t\tconst providerHeaders = resolveHeadersOrThrow(providerConfig?.headers, `provider \"${model.provider}\"`);\n\t\tconst modelHeaders = resolveHeadersOrThrow(\n\t\t\tmodelRequestHeaders.get(`${model.provider}:${model.id}`),\n\t\t\t`model \"${model.provider}/${model.id}\"`,\n\t\t);\n\n\t\tlet headers = providerAuth\n\t\t\t? mergeHeaders(model.headers, providerAuth.headers)\n\t\t\t: mergeHeaders(storedAuth?.headers, model.headers);\n\t\theaders = mergeHeaders(headers, customAuth?.auth.headers);\n\t\theaders = mergeHeaders(headers, providerHeaders);\n\t\theaders = mergeHeaders(headers, modelHeaders);\n\n\t\tif (providerConfig?.authHeader) {\n\t\t\tif (!apiKey) {\n\t\t\t\treturn { ok: false, error: `No API key found for \"${model.provider}\"` };\n\t\t\t}\n\t\t\theaders = { ...headers, Authorization: `Bearer ${apiKey}` };\n\t\t}\n\n\n\t\treturn {\n\t\t\tok: true,\n\t\t\tapiKey,\n\t\t\theaders: headers && Object.keys(headers).length > 0 ? headers : undefined,\n\t\t\tbaseUrl: providerAuth?.baseUrl ?? customAuth?.auth.baseUrl ?? storedAuth?.baseUrl,\n\t\t};\n\t} catch (error) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t};\n\t}\n}\n\nexport function getProviderAuthStatusFromConfig(\n\tprovider: string,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n): AuthStatus {\n\tconst authStatus = authStorage.getAuthStatus(provider);\n\tif (authStatus.source) {\n\t\treturn authStatus;\n\t}\n\n\tconst providerApiKey = providerRequestConfigs.get(provider)?.apiKey;\n\tif (!providerApiKey) {\n\t\treturn authStatus;\n\t}\n\n\tif (isCommandConfigValue(providerApiKey)) {\n\t\treturn { configured: true, source: \"models_json_command\" };\n\t}\n\n\tconst envVarNames = getConfigValueEnvVarNames(providerApiKey);\n\tif (envVarNames.length > 0) {\n\t\treturn isConfigValueConfigured(providerApiKey)\n\t\t\t? { configured: true, source: \"environment\", label: envVarNames.join(\", \") }\n\t\t\t: { configured: false };\n\t}\n\n\treturn { configured: true, source: \"models_json_key\" };\n}\n\nexport async function getApiKeyForProviderFromConfig(\n\tprovider: string,\n\tauthStorage: AuthStorage,\n\tproviderRequestConfigs: Map<string, ProviderRequestConfig>,\n): Promise<string | undefined> {\n\tconst apiKey = await authStorage.getApiKey(provider, { includeFallback: false });\n\tif (apiKey !== undefined) {\n\t\treturn apiKey;\n\t}\n\n\tconst providerApiKey = providerRequestConfigs.get(provider)?.apiKey;\n\treturn providerApiKey ? resolveConfigValueUncached(providerApiKey) : undefined;\n}\n"]}
@@ -1,8 +1,6 @@
1
- import type { ProviderHeaders } from "@earendil-works/pi-ai";
2
1
  import { type Api, type Model } from "@earendil-works/pi-ai/compat";
3
2
  import type { ModelOverride } from "./model-registry-schemas.ts";
4
3
  import type { ProviderOverride } from "./model-registry-types.ts";
5
- export declare function withGitHubCopilotApiVersionHeader(model: Model<Api>, headers: ProviderHeaders | undefined): ProviderHeaders | undefined;
6
4
  export declare function mergeCompat(baseCompat: Model<Api>["compat"], overrideCompat: ModelOverride["compat"] | Model<Api>["compat"]): Model<Api>["compat"] | undefined;
7
5
  export declare function applyModelOverride(model: Model<Api>, override: ModelOverride): Model<Api>;
8
6
  export declare function loadBuiltInModels(overrides: Map<string, ProviderOverride>, modelOverrides: Map<string, Map<string, ModelOverride>>, baseModels?: readonly Model<Api>[]): Model<Api>[];
@@ -1 +1 @@
1
- {"version":3,"file":"model-registry-builtins.d.ts","sourceRoot":"","sources":["../../src/core/model-registry-builtins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EACN,KAAK,GAAG,EAIR,KAAK,KAAK,EAEV,MAAM,8BAA8B,CAAC;AAKtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAkB,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAmBlF,wBAAgB,iCAAiC,CAChD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,OAAO,EAAE,eAAe,GAAG,SAAS,GAClC,eAAe,GAAG,SAAS,CAK7B;AAmCD,wBAAgB,WAAW,CAC1B,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAChC,cAAc,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAC5D,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,SAAS,CAiClC;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAqCzF;AAED,wBAAgB,iBAAiB,CAChC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACxC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EACvD,UAAU,CAAC,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,GAChC,KAAK,CAAC,GAAG,CAAC,EAAE,CA0Bd;AAED,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAWvG"}
1
+ {"version":3,"file":"model-registry-builtins.d.ts","sourceRoot":"","sources":["../../src/core/model-registry-builtins.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,GAAG,EAIR,KAAK,KAAK,EAEV,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAkB,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAGlF,wBAAgB,WAAW,CAC1B,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAChC,cAAc,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAC5D,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,SAAS,CAiClC;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CA4BzF;AAED,wBAAgB,iBAAiB,CAChC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACxC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EACvD,UAAU,CAAC,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,GAChC,KAAK,CAAC,GAAG,CAAC,EAAE,CA4Bd;AAED,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAWvG"}
@@ -1,69 +1,8 @@
1
1
  import { getModels, getProviders, } from "@earendil-works/pi-ai/compat";
2
- import { normalizeContextWindowOptions, withContextWindowOptions } from "./context-window.js";
3
- import { copilotApiBaseUrlFromToken, copilotTokenFromEnvironment, DEFAULT_COPILOT_API_BASE_URL, getActiveCopilotModelCatalog } from "./copilot-model-catalog.js";
4
- import { copilotTemplateFromModels, copilotThinkingLevelMapFor, synthesizeCopilotCatalogModels } from "./copilot-model-synthesis.js";
5
- import { getStaticCopilotModelFallback } from "./copilot-model-static-fallbacks.js";
6
- const GITHUB_COPILOT_API_VERSION_HEADER = "X-GitHub-Api-Version";
7
- const GITHUB_COPILOT_API_VERSION = "2026-06-01";
8
- function withDynamicGitHubCopilotModels(provider, models) {
9
- if (provider !== "github-copilot")
10
- return models;
11
- const existingIds = new Set(models.map((model) => model.id));
12
- const template = copilotTemplateFromModels(models);
13
- const dynamicModels = synthesizeCopilotCatalogModels(getActiveCopilotModelCatalog(), existingIds, template);
14
- return dynamicModels.length === 0 ? models : [...models, ...dynamicModels];
15
- }
16
- function hasHeader(headers, headerName) {
17
- if (!headers)
18
- return false;
19
- const normalizedHeaderName = headerName.toLowerCase();
20
- return Object.keys(headers).some((key) => key.toLowerCase() === normalizedHeaderName);
21
- }
22
- export function withGitHubCopilotApiVersionHeader(model, headers) {
23
- if (model.provider !== "github-copilot" || hasHeader(headers, GITHUB_COPILOT_API_VERSION_HEADER)) {
24
- return headers;
25
- }
26
- return { ...(headers ?? {}), [GITHUB_COPILOT_API_VERSION_HEADER]: GITHUB_COPILOT_API_VERSION };
27
- }
28
- function withCopilotEnvironmentBaseUrl(model) {
29
- if (model.provider !== "github-copilot")
30
- return model;
31
- const resolvedBaseUrl = copilotApiBaseUrlFromToken(copilotTokenFromEnvironment());
32
- if (resolvedBaseUrl === DEFAULT_COPILOT_API_BASE_URL || resolvedBaseUrl === model.baseUrl)
33
- return model;
34
- return { ...model, baseUrl: resolvedBaseUrl };
35
- }
36
- function withCopilotThinkingLevelMap(model) {
37
- if (model.provider !== "github-copilot")
38
- return model;
39
- const context = getActiveCopilotModelCatalog().get(model.id);
40
- if (!context?.supports?.reasoningEffortLevels)
41
- return model;
42
- const thinkingLevelMap = copilotThinkingLevelMapFor(context, model.api);
43
- return thinkingLevelMap ? { ...model, thinkingLevelMap } : model;
44
- }
45
- function withCopilotContextWindowOptions(model) {
46
- if (model.provider !== "github-copilot")
47
- return model;
48
- // The live CAPI catalog (or its disk cache) is authoritative. Without an
49
- // entry (cold start, fetch failure, offline), fall back to the bundled
50
- // static CAPI snapshot: several bundled pi-ai definitions overstate the
51
- // enforced default-tier window or understate output caps, which lets
52
- // sessions sail past the server-side limits before compaction fires
53
- // (issue #1608). Fallback entries carry the same tier structure as catalog
54
- // entries so long-context (1M-class) tiers stay selectable offline.
55
- const context = getActiveCopilotModelCatalog().get(model.id) ?? getStaticCopilotModelFallback(model.id);
56
- if (!context)
57
- return model;
58
- const base = { ...model, contextWindow: context.contextWindow, maxInputTokens: context.maxInputTokens, maxTokens: context.maxTokens ?? model.maxTokens };
59
- if (context.contextWindowOptions && context.contextWindowOptions.length > 1) {
60
- return withContextWindowOptions(base, context.contextWindowOptions);
61
- }
62
- return base;
63
- }
2
+ import { normalizeGrammarToolCapability } from "./model-capabilities.js";
64
3
  export function mergeCompat(baseCompat, overrideCompat) {
65
4
  if (!overrideCompat)
66
- return baseCompat;
5
+ return normalizeGrammarToolCapability(baseCompat);
67
6
  const base = baseCompat;
68
7
  const override = overrideCompat;
69
8
  const merged = { ...base, ...override };
@@ -88,7 +27,7 @@ export function mergeCompat(baseCompat, overrideCompat) {
88
27
  ...overrideCompletions.chatTemplateKwargs,
89
28
  };
90
29
  }
91
- return merged;
30
+ return normalizeGrammarToolCapability(merged);
92
31
  }
93
32
  export function applyModelOverride(model, override) {
94
33
  const result = { ...model };
@@ -101,16 +40,8 @@ export function applyModelOverride(model, override) {
101
40
  }
102
41
  if (override.input !== undefined)
103
42
  result.input = override.input;
104
- if (override.contextWindow !== undefined) {
43
+ if (override.contextWindow !== undefined)
105
44
  result.contextWindow = override.contextWindow;
106
- result.defaultContextWindow = override.contextWindow;
107
- if (override.contextWindowOptions === undefined) {
108
- result.contextWindowOptions = undefined;
109
- }
110
- }
111
- if (override.contextWindowOptions !== undefined) {
112
- result.contextWindowOptions = normalizeContextWindowOptions(override.contextWindowOptions);
113
- }
114
45
  if (override.maxTokens !== undefined)
115
46
  result.maxTokens = override.maxTokens;
116
47
  if (override.cost) {
@@ -137,11 +68,14 @@ export function loadBuiltInModels(overrides, modelOverrides, baseModels) {
137
68
  const providerModels = baseModels
138
69
  ? baseModels.filter((model) => model.provider === provider)
139
70
  : getModels(provider);
140
- const models = withDynamicGitHubCopilotModels(provider, [...providerModels]);
71
+ const models = [...providerModels];
141
72
  const providerOverride = overrides.get(provider);
142
73
  const perModelOverrides = modelOverrides.get(provider);
143
74
  return models.map((candidate) => {
144
- let model = withCopilotEnvironmentBaseUrl(candidate);
75
+ let model = {
76
+ ...candidate,
77
+ compat: normalizeGrammarToolCapability(candidate.compat),
78
+ };
145
79
  if (providerOverride) {
146
80
  model = {
147
81
  ...model,
@@ -149,7 +83,6 @@ export function loadBuiltInModels(overrides, modelOverrides, baseModels) {
149
83
  compat: mergeCompat(model.compat, providerOverride.compat),
150
84
  };
151
85
  }
152
- model = withCopilotThinkingLevelMap(withCopilotContextWindowOptions(model));
153
86
  const modelOverride = perModelOverrides?.get(candidate.id);
154
87
  return modelOverride ? applyModelOverride(model, modelOverride) : model;
155
88
  });
@@ -1 +1 @@
1
- {"version":3,"file":"model-registry-builtins.js","sourceRoot":"","sources":["../../src/core/model-registry-builtins.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ProviderHeaders } from \"@earendil-works/pi-ai\";\nimport {\n\ttype Api,\n\tgetModels,\n\tgetProviders,\n\ttype BuiltinProvider,\n\ttype Model,\n\ttype OpenAICompletionsCompat,\n} from \"@earendil-works/pi-ai/compat\";\nimport { normalizeContextWindowOptions, withContextWindowOptions } from \"./context-window.ts\";\nimport { copilotApiBaseUrlFromToken, copilotTokenFromEnvironment, DEFAULT_COPILOT_API_BASE_URL, getActiveCopilotModelCatalog } from \"./copilot-model-catalog.ts\";\nimport { copilotTemplateFromModels, copilotThinkingLevelMapFor, synthesizeCopilotCatalogModels } from \"./copilot-model-synthesis.ts\";\nimport { getStaticCopilotModelFallback } from \"./copilot-model-static-fallbacks.ts\";\nimport type { ModelOverride } from \"./model-registry-schemas.ts\";\nimport type { ProviderCompat, ProviderOverride } from \"./model-registry-types.ts\";\n\nconst GITHUB_COPILOT_API_VERSION_HEADER = \"X-GitHub-Api-Version\";\nconst GITHUB_COPILOT_API_VERSION = \"2026-06-01\";\n\nfunction withDynamicGitHubCopilotModels(provider: string, models: Model<Api>[]): Model<Api>[] {\n\tif (provider !== \"github-copilot\") return models;\n\tconst existingIds = new Set(models.map((model) => model.id));\n\tconst template = copilotTemplateFromModels(models);\n\tconst dynamicModels = synthesizeCopilotCatalogModels(getActiveCopilotModelCatalog(), existingIds, template);\n\treturn dynamicModels.length === 0 ? models : [...models, ...dynamicModels];\n}\n\nfunction hasHeader(headers: ProviderHeaders | undefined, headerName: string): boolean {\n\tif (!headers) return false;\n\tconst normalizedHeaderName = headerName.toLowerCase();\n\treturn Object.keys(headers).some((key) => key.toLowerCase() === normalizedHeaderName);\n}\n\nexport function withGitHubCopilotApiVersionHeader(\n\tmodel: Model<Api>,\n\theaders: ProviderHeaders | undefined,\n): ProviderHeaders | undefined {\n\tif (model.provider !== \"github-copilot\" || hasHeader(headers, GITHUB_COPILOT_API_VERSION_HEADER)) {\n\t\treturn headers;\n\t}\n\treturn { ...(headers ?? {}), [GITHUB_COPILOT_API_VERSION_HEADER]: GITHUB_COPILOT_API_VERSION };\n}\n\nfunction withCopilotEnvironmentBaseUrl(model: Model<Api>): Model<Api> {\n\tif (model.provider !== \"github-copilot\") return model;\n\tconst resolvedBaseUrl = copilotApiBaseUrlFromToken(copilotTokenFromEnvironment());\n\tif (resolvedBaseUrl === DEFAULT_COPILOT_API_BASE_URL || resolvedBaseUrl === model.baseUrl) return model;\n\treturn { ...model, baseUrl: resolvedBaseUrl };\n}\n\nfunction withCopilotThinkingLevelMap(model: Model<Api>): Model<Api> {\n\tif (model.provider !== \"github-copilot\") return model;\n\tconst context = getActiveCopilotModelCatalog().get(model.id);\n\tif (!context?.supports?.reasoningEffortLevels) return model;\n\tconst thinkingLevelMap = copilotThinkingLevelMapFor(context, model.api);\n\treturn thinkingLevelMap ? { ...model, thinkingLevelMap } : model;\n}\n\nfunction withCopilotContextWindowOptions(model: Model<Api>): Model<Api> {\n\tif (model.provider !== \"github-copilot\") return model;\n\t// The live CAPI catalog (or its disk cache) is authoritative. Without an\n\t// entry (cold start, fetch failure, offline), fall back to the bundled\n\t// static CAPI snapshot: several bundled pi-ai definitions overstate the\n\t// enforced default-tier window or understate output caps, which lets\n\t// sessions sail past the server-side limits before compaction fires\n\t// (issue #1608). Fallback entries carry the same tier structure as catalog\n\t// entries so long-context (1M-class) tiers stay selectable offline.\n\tconst context = getActiveCopilotModelCatalog().get(model.id) ?? getStaticCopilotModelFallback(model.id);\n\tif (!context) return model;\n\tconst base = { ...model, contextWindow: context.contextWindow, maxInputTokens: context.maxInputTokens, maxTokens: context.maxTokens ?? model.maxTokens };\n\tif (context.contextWindowOptions && context.contextWindowOptions.length > 1) {\n\t\treturn withContextWindowOptions(base, context.contextWindowOptions);\n\t}\n\treturn base;\n}\n\nexport function mergeCompat(\n\tbaseCompat: Model<Api>[\"compat\"],\n\toverrideCompat: ModelOverride[\"compat\"] | Model<Api>[\"compat\"],\n): Model<Api>[\"compat\"] | undefined {\n\tif (!overrideCompat) return baseCompat;\n\n\tconst base = baseCompat as ProviderCompat | undefined;\n\tconst override = overrideCompat as ProviderCompat;\n\tconst merged = { ...base, ...override } as ProviderCompat;\n\n\tconst baseCompletions = base as OpenAICompletionsCompat | undefined;\n\tconst overrideCompletions = override as OpenAICompletionsCompat;\n\tconst mergedCompletions = merged as OpenAICompletionsCompat;\n\n\tif (baseCompletions?.openRouterRouting || overrideCompletions.openRouterRouting) {\n\t\tmergedCompletions.openRouterRouting = {\n\t\t\t...baseCompletions?.openRouterRouting,\n\t\t\t...overrideCompletions.openRouterRouting,\n\t\t};\n\t}\n\n\tif (baseCompletions?.vercelGatewayRouting || overrideCompletions.vercelGatewayRouting) {\n\t\tmergedCompletions.vercelGatewayRouting = {\n\t\t\t...baseCompletions?.vercelGatewayRouting,\n\t\t\t...overrideCompletions.vercelGatewayRouting,\n\t\t};\n\t}\n\n\tif (baseCompletions?.chatTemplateKwargs || overrideCompletions.chatTemplateKwargs) {\n\t\tmergedCompletions.chatTemplateKwargs = {\n\t\t\t...baseCompletions?.chatTemplateKwargs,\n\t\t\t...overrideCompletions.chatTemplateKwargs,\n\t\t};\n\t}\n\n\treturn merged as Model<Api>[\"compat\"];\n}\n\nexport function applyModelOverride(model: Model<Api>, override: ModelOverride): Model<Api> {\n\tconst result = { ...model };\n\n\tif (override.name !== undefined) result.name = override.name;\n\tif (override.reasoning !== undefined) result.reasoning = override.reasoning;\n\tif (override.thinkingLevelMap !== undefined) {\n\t\tresult.thinkingLevelMap = { ...model.thinkingLevelMap, ...override.thinkingLevelMap };\n\t}\n\tif (override.input !== undefined) result.input = override.input as (\"text\" | \"image\")[];\n\tif (override.contextWindow !== undefined) {\n\t\tresult.contextWindow = override.contextWindow;\n\t\tresult.defaultContextWindow = override.contextWindow;\n\t\tif (override.contextWindowOptions === undefined) {\n\t\t\tresult.contextWindowOptions = undefined;\n\t\t}\n\t}\n\tif (override.contextWindowOptions !== undefined) {\n\t\tresult.contextWindowOptions = normalizeContextWindowOptions(override.contextWindowOptions);\n\t}\n\tif (override.maxTokens !== undefined) result.maxTokens = override.maxTokens;\n\n\tif (override.cost) {\n\t\tresult.cost = {\n\t\t\tinput: override.cost.input ?? model.cost.input,\n\t\t\toutput: override.cost.output ?? model.cost.output,\n\t\t\tcacheRead: override.cost.cacheRead ?? model.cost.cacheRead,\n\t\t\tcacheWrite: override.cost.cacheWrite ?? model.cost.cacheWrite,\n\t\t\t...(override.cost.tiers !== undefined\n\t\t\t\t? { tiers: override.cost.tiers }\n\t\t\t\t: model.cost.tiers !== undefined\n\t\t\t\t\t? { tiers: model.cost.tiers }\n\t\t\t\t\t: {}),\n\t\t};\n\t}\n\n\tresult.compat = mergeCompat(model.compat, override.compat);\n\treturn result;\n}\n\nexport function loadBuiltInModels(\n\toverrides: Map<string, ProviderOverride>,\n\tmodelOverrides: Map<string, Map<string, ModelOverride>>,\n\tbaseModels?: readonly Model<Api>[],\n): Model<Api>[] {\n\tconst providers = baseModels\n\t\t? [...new Set(baseModels.map((model) => model.provider))]\n\t\t: getProviders();\n\treturn providers.flatMap((provider) => {\n\t\tconst providerModels = baseModels\n\t\t\t? baseModels.filter((model) => model.provider === provider)\n\t\t\t: getModels(provider as BuiltinProvider) as Model<Api>[];\n\t\tconst models = withDynamicGitHubCopilotModels(provider, [...providerModels]);\n\t\tconst providerOverride = overrides.get(provider);\n\t\tconst perModelOverrides = modelOverrides.get(provider);\n\n\t\treturn models.map((candidate) => {\n\t\t\tlet model = withCopilotEnvironmentBaseUrl(candidate);\n\t\t\tif (providerOverride) {\n\t\t\t\tmodel = {\n\t\t\t\t\t...model,\n\t\t\t\t\tbaseUrl: providerOverride.baseUrl ?? model.baseUrl,\n\t\t\t\t\tcompat: mergeCompat(model.compat, providerOverride.compat),\n\t\t\t\t};\n\t\t\t}\n\t\t\tmodel = withCopilotThinkingLevelMap(withCopilotContextWindowOptions(model));\n\t\t\tconst modelOverride = perModelOverrides?.get(candidate.id);\n\t\t\treturn modelOverride ? applyModelOverride(model, modelOverride) : model;\n\t\t});\n\t});\n}\n\nexport function mergeCustomModels(builtInModels: Model<Api>[], customModels: Model<Api>[]): Model<Api>[] {\n\tconst merged = [...builtInModels];\n\tfor (const customModel of customModels) {\n\t\tconst existingIndex = merged.findIndex((m) => m.provider === customModel.provider && m.id === customModel.id);\n\t\tif (existingIndex >= 0) {\n\t\t\tmerged[existingIndex] = customModel;\n\t\t} else {\n\t\t\tmerged.push(customModel);\n\t\t}\n\t}\n\treturn merged;\n}\n"]}
1
+ {"version":3,"file":"model-registry-builtins.js","sourceRoot":"","sources":["../../src/core/model-registry-builtins.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype Api,\n\tgetModels,\n\tgetProviders,\n\ttype BuiltinProvider,\n\ttype Model,\n\ttype OpenAICompletionsCompat,\n} from \"@earendil-works/pi-ai/compat\";\nimport { normalizeGrammarToolCapability } from \"./model-capabilities.ts\";\nimport type { ModelOverride } from \"./model-registry-schemas.ts\";\nimport type { ProviderCompat, ProviderOverride } from \"./model-registry-types.ts\";\n\n\nexport function mergeCompat(\n\tbaseCompat: Model<Api>[\"compat\"],\n\toverrideCompat: ModelOverride[\"compat\"] | Model<Api>[\"compat\"],\n): Model<Api>[\"compat\"] | undefined {\n\tif (!overrideCompat) return normalizeGrammarToolCapability(baseCompat);\n\n\tconst base = baseCompat as ProviderCompat | undefined;\n\tconst override = overrideCompat as ProviderCompat;\n\tconst merged = { ...base, ...override } as ProviderCompat;\n\n\tconst baseCompletions = base as OpenAICompletionsCompat | undefined;\n\tconst overrideCompletions = override as OpenAICompletionsCompat;\n\tconst mergedCompletions = merged as OpenAICompletionsCompat;\n\n\tif (baseCompletions?.openRouterRouting || overrideCompletions.openRouterRouting) {\n\t\tmergedCompletions.openRouterRouting = {\n\t\t\t...baseCompletions?.openRouterRouting,\n\t\t\t...overrideCompletions.openRouterRouting,\n\t\t};\n\t}\n\n\tif (baseCompletions?.vercelGatewayRouting || overrideCompletions.vercelGatewayRouting) {\n\t\tmergedCompletions.vercelGatewayRouting = {\n\t\t\t...baseCompletions?.vercelGatewayRouting,\n\t\t\t...overrideCompletions.vercelGatewayRouting,\n\t\t};\n\t}\n\n\tif (baseCompletions?.chatTemplateKwargs || overrideCompletions.chatTemplateKwargs) {\n\t\tmergedCompletions.chatTemplateKwargs = {\n\t\t\t...baseCompletions?.chatTemplateKwargs,\n\t\t\t...overrideCompletions.chatTemplateKwargs,\n\t\t};\n\t}\n\n\treturn normalizeGrammarToolCapability(merged);\n}\n\nexport function applyModelOverride(model: Model<Api>, override: ModelOverride): Model<Api> {\n\tconst result = { ...model };\n\n\tif (override.name !== undefined) result.name = override.name;\n\tif (override.reasoning !== undefined) result.reasoning = override.reasoning;\n\tif (override.thinkingLevelMap !== undefined) {\n\t\tresult.thinkingLevelMap = { ...model.thinkingLevelMap, ...override.thinkingLevelMap };\n\t}\n\tif (override.input !== undefined) result.input = override.input as (\"text\" | \"image\")[];\n\tif (override.contextWindow !== undefined) result.contextWindow = override.contextWindow;\n\tif (override.maxTokens !== undefined) result.maxTokens = override.maxTokens;\n\n\tif (override.cost) {\n\t\tresult.cost = {\n\t\t\tinput: override.cost.input ?? model.cost.input,\n\t\t\toutput: override.cost.output ?? model.cost.output,\n\t\t\tcacheRead: override.cost.cacheRead ?? model.cost.cacheRead,\n\t\t\tcacheWrite: override.cost.cacheWrite ?? model.cost.cacheWrite,\n\t\t\t...(override.cost.tiers !== undefined\n\t\t\t\t? { tiers: override.cost.tiers }\n\t\t\t\t: model.cost.tiers !== undefined\n\t\t\t\t\t? { tiers: model.cost.tiers }\n\t\t\t\t\t: {}),\n\t\t};\n\t}\n\n\tresult.compat = mergeCompat(model.compat, override.compat);\n\treturn result;\n}\n\nexport function loadBuiltInModels(\n\toverrides: Map<string, ProviderOverride>,\n\tmodelOverrides: Map<string, Map<string, ModelOverride>>,\n\tbaseModels?: readonly Model<Api>[],\n): Model<Api>[] {\n\tconst providers = baseModels\n\t\t? [...new Set(baseModels.map((model) => model.provider))]\n\t\t: getProviders();\n\treturn providers.flatMap((provider) => {\n\t\tconst providerModels = baseModels\n\t\t\t? baseModels.filter((model) => model.provider === provider)\n\t\t\t: getModels(provider as BuiltinProvider) as Model<Api>[];\n\t\tconst models = [...providerModels];\n\t\tconst providerOverride = overrides.get(provider);\n\t\tconst perModelOverrides = modelOverrides.get(provider);\n\n\t\treturn models.map((candidate) => {\n\t\t\tlet model: Model<Api> = {\n\t\t\t\t...candidate,\n\t\t\t\tcompat: normalizeGrammarToolCapability(candidate.compat),\n\t\t\t};\n\t\t\tif (providerOverride) {\n\t\t\t\tmodel = {\n\t\t\t\t\t...model,\n\t\t\t\t\tbaseUrl: providerOverride.baseUrl ?? model.baseUrl,\n\t\t\t\t\tcompat: mergeCompat(model.compat, providerOverride.compat),\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst modelOverride = perModelOverrides?.get(candidate.id);\n\t\t\treturn modelOverride ? applyModelOverride(model, modelOverride) : model;\n\t\t});\n\t});\n}\n\nexport function mergeCustomModels(builtInModels: Model<Api>[], customModels: Model<Api>[]): Model<Api>[] {\n\tconst merged = [...builtInModels];\n\tfor (const customModel of customModels) {\n\t\tconst existingIndex = merged.findIndex((m) => m.provider === customModel.provider && m.id === customModel.id);\n\t\tif (existingIndex >= 0) {\n\t\t\tmerged[existingIndex] = customModel;\n\t\t} else {\n\t\t\tmerged.push(customModel);\n\t\t}\n\t}\n\treturn merged;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"model-registry-custom-loader.d.ts","sourceRoot":"","sources":["../../src/core/model-registry-custom-loader.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACX,kBAAkB,EAIlB,MAAM,2BAA2B,CAAC;AAsTnC,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAYvF"}
1
+ {"version":3,"file":"model-registry-custom-loader.d.ts","sourceRoot":"","sources":["../../src/core/model-registry-custom-loader.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACX,kBAAkB,EAIlB,MAAM,2BAA2B,CAAC;AA0SnC,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAYvF"}
@@ -1,7 +1,7 @@
1
1
  import { getModels, getProviders } from "@earendil-works/pi-ai/compat";
2
2
  import { radiusProvider } from "@earendil-works/pi-ai/providers/all";
3
3
  import { existsSync, readFileSync } from "fs";
4
- import { normalizeContextWindowOptions, validateContextWindowValue } from "./context-window.js";
4
+ import { validateContextWindowValue } from "./model-registry-validation.js";
5
5
  import { mergeCompat, mergeCustomModels } from "./model-registry-builtins.js";
6
6
  import { formatValidationPath, stripJsonComments, validateModelsConfig, } from "./model-registry-schemas.js";
7
7
  function modelRequestKey(provider, modelId) {
@@ -82,13 +82,6 @@ function collectModelHeaders(providerName, modelId, headers, modelHeaders, model
82
82
  modelHeaders.set(key, headers);
83
83
  modelHeaderSources.set(key, source);
84
84
  }
85
- function validateContextWindowOptions(providerName, modelId, options) {
86
- for (const option of options ?? []) {
87
- if (validateContextWindowValue(option)) {
88
- throw new Error(`Provider ${providerName}, model ${modelId}: invalid contextWindowOptions value`);
89
- }
90
- }
91
- }
92
85
  function validateConfig(config) {
93
86
  const builtInProviders = new Set(getProviders());
94
87
  for (const [providerName, providerConfig] of Object.entries(config.providers)) {
@@ -119,7 +112,6 @@ function validateConfig(config) {
119
112
  if (modelDef.contextWindow !== undefined && validateContextWindowValue(modelDef.contextWindow)) {
120
113
  throw new Error(`Provider ${providerName}, model ${modelDef.id}: invalid contextWindow`);
121
114
  }
122
- validateContextWindowOptions(providerName, modelDef.id, modelDef.contextWindowOptions);
123
115
  if (modelDef.maxTokens !== undefined && modelDef.maxTokens <= 0) {
124
116
  throw new Error(`Provider ${providerName}, model ${modelDef.id}: invalid maxTokens`);
125
117
  }
@@ -128,7 +120,6 @@ function validateConfig(config) {
128
120
  if (modelOverride.contextWindow !== undefined && validateContextWindowValue(modelOverride.contextWindow)) {
129
121
  throw new Error(`Provider ${providerName}, model ${modelId}: invalid contextWindow`);
130
122
  }
131
- validateContextWindowOptions(providerName, modelId, modelOverride.contextWindowOptions);
132
123
  if (modelOverride.maxTokens !== undefined && modelOverride.maxTokens <= 0) {
133
124
  throw new Error(`Provider ${providerName}, model ${modelId}: invalid maxTokens`);
134
125
  }
@@ -178,8 +169,6 @@ function parseModels(config, modelHeaders, modelHeaderSources) {
178
169
  input: (modelDef.input ?? ["text"]),
179
170
  cost: modelDef.cost ?? defaultCost,
180
171
  contextWindow,
181
- defaultContextWindow: contextWindow,
182
- contextWindowOptions: normalizeContextWindowOptions([contextWindow, ...(modelDef.contextWindowOptions ?? [])]),
183
172
  maxTokens: modelDef.maxTokens ?? 16384,
184
173
  headers: undefined,
185
174
  compat,