@duetso/agent 0.2.1 → 0.2.3

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 (244) hide show
  1. package/README.md +19 -11
  2. package/dist/package.json +4 -4
  3. package/dist/src/cli/config.d.ts +10 -0
  4. package/dist/src/cli/config.d.ts.map +1 -0
  5. package/dist/src/cli/config.js +24 -0
  6. package/dist/src/cli/config.js.map +1 -0
  7. package/dist/src/cli/help.d.ts.map +1 -1
  8. package/dist/src/cli/help.js +13 -10
  9. package/dist/src/cli/help.js.map +1 -1
  10. package/dist/src/cli/inline-slash.d.ts +2 -1
  11. package/dist/src/cli/inline-slash.d.ts.map +1 -1
  12. package/dist/src/cli/inline-slash.js +14 -5
  13. package/dist/src/cli/inline-slash.js.map +1 -1
  14. package/dist/src/cli/memory-db.d.ts.map +1 -1
  15. package/dist/src/cli/memory-db.js +9 -5
  16. package/dist/src/cli/memory-db.js.map +1 -1
  17. package/dist/src/cli/memory-query.d.ts +1 -1
  18. package/dist/src/cli/model.d.ts +1 -1
  19. package/dist/src/cli/model.d.ts.map +1 -1
  20. package/dist/src/cli/model.js +1 -1
  21. package/dist/src/cli/model.js.map +1 -1
  22. package/dist/src/cli/route.d.ts +84 -0
  23. package/dist/src/cli/route.d.ts.map +1 -0
  24. package/dist/src/cli/route.js +261 -0
  25. package/dist/src/cli/route.js.map +1 -0
  26. package/dist/src/cli/rpc.d.ts +43 -2
  27. package/dist/src/cli/rpc.d.ts.map +1 -1
  28. package/dist/src/cli/rpc.js +176 -23
  29. package/dist/src/cli/rpc.js.map +1 -1
  30. package/dist/src/cli/run.d.ts +8 -1
  31. package/dist/src/cli/run.d.ts.map +1 -1
  32. package/dist/src/cli/run.js +24 -7
  33. package/dist/src/cli/run.js.map +1 -1
  34. package/dist/src/cli/shared.d.ts +4 -3
  35. package/dist/src/cli/shared.d.ts.map +1 -1
  36. package/dist/src/cli/shared.js +3 -4
  37. package/dist/src/cli/shared.js.map +1 -1
  38. package/dist/src/cli/shutdown.d.ts +4 -2
  39. package/dist/src/cli/shutdown.d.ts.map +1 -1
  40. package/dist/src/cli/shutdown.js +4 -2
  41. package/dist/src/cli/shutdown.js.map +1 -1
  42. package/dist/src/cli.d.ts +2 -0
  43. package/dist/src/cli.d.ts.map +1 -1
  44. package/dist/src/cli.js +12 -0
  45. package/dist/src/cli.js.map +1 -1
  46. package/dist/src/core/structured-output.d.ts +2 -0
  47. package/dist/src/core/structured-output.d.ts.map +1 -1
  48. package/dist/src/core/structured-output.js +1 -0
  49. package/dist/src/core/structured-output.js.map +1 -1
  50. package/dist/src/lib/system-reminder.d.ts +14 -0
  51. package/dist/src/lib/system-reminder.d.ts.map +1 -0
  52. package/dist/src/lib/system-reminder.js +53 -0
  53. package/dist/src/lib/system-reminder.js.map +1 -0
  54. package/dist/src/lib/walk-ancestors.d.ts +9 -0
  55. package/dist/src/lib/walk-ancestors.d.ts.map +1 -0
  56. package/dist/src/lib/walk-ancestors.js +28 -0
  57. package/dist/src/lib/walk-ancestors.js.map +1 -0
  58. package/dist/src/memory/observational-prompts.d.ts.map +1 -1
  59. package/dist/src/memory/observational-prompts.js +2 -1
  60. package/dist/src/memory/observational-prompts.js.map +1 -1
  61. package/dist/src/memory/observational.d.ts +31 -4
  62. package/dist/src/memory/observational.d.ts.map +1 -1
  63. package/dist/src/memory/observational.js +43 -4
  64. package/dist/src/memory/observational.js.map +1 -1
  65. package/dist/src/model-resolution/catalog.d.ts +2 -2
  66. package/dist/src/model-resolution/catalog.d.ts.map +1 -1
  67. package/dist/src/model-resolution/catalog.js +61 -33
  68. package/dist/src/model-resolution/catalog.js.map +1 -1
  69. package/dist/src/model-resolution/duet-gateway.d.ts +3 -3
  70. package/dist/src/model-resolution/duet-gateway.d.ts.map +1 -1
  71. package/dist/src/model-resolution/duet-gateway.js +119 -19
  72. package/dist/src/model-resolution/duet-gateway.js.map +1 -1
  73. package/dist/src/model-resolution/model-gateway.d.ts.map +1 -0
  74. package/dist/src/{cli → model-resolution}/model-gateway.js +10 -6
  75. package/dist/src/model-resolution/model-gateway.js.map +1 -0
  76. package/dist/src/model-resolution/resolver.d.ts +11 -4
  77. package/dist/src/model-resolution/resolver.d.ts.map +1 -1
  78. package/dist/src/model-resolution/resolver.js +39 -8
  79. package/dist/src/model-resolution/resolver.js.map +1 -1
  80. package/dist/src/model-routing/advisor-transcript.d.ts +36 -0
  81. package/dist/src/model-routing/advisor-transcript.d.ts.map +1 -0
  82. package/dist/src/model-routing/advisor-transcript.js +103 -0
  83. package/dist/src/model-routing/advisor-transcript.js.map +1 -0
  84. package/dist/src/model-routing/advisor.d.ts +27 -0
  85. package/dist/src/model-routing/advisor.d.ts.map +1 -0
  86. package/dist/src/model-routing/advisor.js +20 -0
  87. package/dist/src/model-routing/advisor.js.map +1 -0
  88. package/dist/src/model-routing/classifier.d.ts +57 -0
  89. package/dist/src/model-routing/classifier.d.ts.map +1 -0
  90. package/dist/src/model-routing/classifier.js +63 -0
  91. package/dist/src/model-routing/classifier.js.map +1 -0
  92. package/dist/src/model-routing/loader.d.ts +48 -0
  93. package/dist/src/model-routing/loader.d.ts.map +1 -0
  94. package/dist/src/model-routing/loader.js +79 -0
  95. package/dist/src/model-routing/loader.js.map +1 -0
  96. package/dist/src/model-routing/prompts.d.ts +22 -0
  97. package/dist/src/model-routing/prompts.d.ts.map +1 -0
  98. package/dist/src/model-routing/prompts.js +87 -0
  99. package/dist/src/model-routing/prompts.js.map +1 -0
  100. package/dist/src/model-routing/resolve.d.ts +40 -0
  101. package/dist/src/model-routing/resolve.d.ts.map +1 -0
  102. package/dist/src/model-routing/resolve.js +76 -0
  103. package/dist/src/model-routing/resolve.js.map +1 -0
  104. package/dist/src/model-routing/router.d.ts +149 -0
  105. package/dist/src/model-routing/router.d.ts.map +1 -0
  106. package/dist/src/model-routing/router.js +235 -0
  107. package/dist/src/model-routing/router.js.map +1 -0
  108. package/dist/src/model-routing/step-triggers.d.ts +27 -0
  109. package/dist/src/model-routing/step-triggers.d.ts.map +1 -0
  110. package/dist/src/model-routing/step-triggers.js +20 -0
  111. package/dist/src/model-routing/step-triggers.js.map +1 -0
  112. package/dist/src/model-routing/table.d.ts +126 -0
  113. package/dist/src/model-routing/table.d.ts.map +1 -0
  114. package/dist/src/model-routing/table.js +351 -0
  115. package/dist/src/model-routing/table.js.map +1 -0
  116. package/dist/src/session/session.d.ts +40 -23
  117. package/dist/src/session/session.d.ts.map +1 -1
  118. package/dist/src/session/session.js +173 -97
  119. package/dist/src/session/session.js.map +1 -1
  120. package/dist/src/tasks/quiescence.d.ts +13 -0
  121. package/dist/src/tasks/quiescence.d.ts.map +1 -0
  122. package/dist/src/tasks/quiescence.js +11 -0
  123. package/dist/src/tasks/quiescence.js.map +1 -0
  124. package/dist/src/tasks/task-manager.d.ts +101 -0
  125. package/dist/src/tasks/task-manager.d.ts.map +1 -0
  126. package/dist/src/tasks/task-manager.js +311 -0
  127. package/dist/src/tasks/task-manager.js.map +1 -0
  128. package/dist/src/tasks/types.d.ts +85 -0
  129. package/dist/src/tasks/types.d.ts.map +1 -0
  130. package/dist/src/tasks/types.js +2 -0
  131. package/dist/src/tasks/types.js.map +1 -0
  132. package/dist/src/train/archive.d.ts +3 -0
  133. package/dist/src/train/archive.d.ts.map +1 -1
  134. package/dist/src/train/archive.js +7 -3
  135. package/dist/src/train/archive.js.map +1 -1
  136. package/dist/src/train/types.d.ts +7 -2
  137. package/dist/src/train/types.d.ts.map +1 -1
  138. package/dist/src/tui/app.d.ts +1 -1
  139. package/dist/src/tui/app.d.ts.map +1 -1
  140. package/dist/src/tui/app.js +12 -2
  141. package/dist/src/tui/app.js.map +1 -1
  142. package/dist/src/tui/initial-prompt.d.ts.map +1 -1
  143. package/dist/src/tui/initial-prompt.js +0 -3
  144. package/dist/src/tui/initial-prompt.js.map +1 -1
  145. package/dist/src/tui/session-subscription.d.ts +3 -0
  146. package/dist/src/tui/session-subscription.d.ts.map +1 -1
  147. package/dist/src/tui/session-subscription.js +29 -5
  148. package/dist/src/tui/session-subscription.js.map +1 -1
  149. package/dist/src/tui/sidebar.d.ts +3 -0
  150. package/dist/src/tui/sidebar.d.ts.map +1 -1
  151. package/dist/src/tui/sidebar.js +19 -3
  152. package/dist/src/tui/sidebar.js.map +1 -1
  153. package/dist/src/tui/slash-commands.d.ts +12 -9
  154. package/dist/src/tui/slash-commands.d.ts.map +1 -1
  155. package/dist/src/tui/slash-commands.js +48 -10
  156. package/dist/src/tui/slash-commands.js.map +1 -1
  157. package/dist/src/tui/status-controller.d.ts +14 -9
  158. package/dist/src/tui/status-controller.d.ts.map +1 -1
  159. package/dist/src/tui/status-controller.js +26 -7
  160. package/dist/src/tui/status-controller.js.map +1 -1
  161. package/dist/src/tui/task-lane-renderer.d.ts +30 -0
  162. package/dist/src/tui/task-lane-renderer.d.ts.map +1 -0
  163. package/dist/src/tui/task-lane-renderer.js +93 -0
  164. package/dist/src/tui/task-lane-renderer.js.map +1 -0
  165. package/dist/src/tui/task-tree.d.ts +47 -0
  166. package/dist/src/tui/task-tree.d.ts.map +1 -0
  167. package/dist/src/tui/task-tree.js +190 -0
  168. package/dist/src/tui/task-tree.js.map +1 -0
  169. package/dist/src/tui/tool-formatters.js +3 -0
  170. package/dist/src/tui/tool-formatters.js.map +1 -1
  171. package/dist/src/turn-runner/agent-events.d.ts.map +1 -1
  172. package/dist/src/turn-runner/agent-events.js +1 -0
  173. package/dist/src/turn-runner/agent-events.js.map +1 -1
  174. package/dist/src/turn-runner/duration.d.ts +2 -2
  175. package/dist/src/turn-runner/duration.js +3 -3
  176. package/dist/src/turn-runner/duration.js.map +1 -1
  177. package/dist/src/turn-runner/prompts.d.ts +5 -1
  178. package/dist/src/turn-runner/prompts.d.ts.map +1 -1
  179. package/dist/src/turn-runner/prompts.js +30 -6
  180. package/dist/src/turn-runner/prompts.js.map +1 -1
  181. package/dist/src/turn-runner/runtime-clock.d.ts +20 -0
  182. package/dist/src/turn-runner/runtime-clock.d.ts.map +1 -0
  183. package/dist/src/turn-runner/runtime-clock.js +38 -0
  184. package/dist/src/turn-runner/runtime-clock.js.map +1 -0
  185. package/dist/src/turn-runner/shell-state-handle.d.ts +0 -3
  186. package/dist/src/turn-runner/shell-state-handle.d.ts.map +1 -1
  187. package/dist/src/turn-runner/shell-state-handle.js +5 -55
  188. package/dist/src/turn-runner/shell-state-handle.js.map +1 -1
  189. package/dist/src/turn-runner/skill-context.d.ts +6 -7
  190. package/dist/src/turn-runner/skill-context.d.ts.map +1 -1
  191. package/dist/src/turn-runner/skill-context.js +10 -10
  192. package/dist/src/turn-runner/skill-context.js.map +1 -1
  193. package/dist/src/turn-runner/skills.d.ts.map +1 -1
  194. package/dist/src/turn-runner/skills.js +2 -22
  195. package/dist/src/turn-runner/skills.js.map +1 -1
  196. package/dist/src/turn-runner/state-compaction.d.ts +7 -5
  197. package/dist/src/turn-runner/state-compaction.d.ts.map +1 -1
  198. package/dist/src/turn-runner/state-compaction.js +69 -10
  199. package/dist/src/turn-runner/state-compaction.js.map +1 -1
  200. package/dist/src/turn-runner/state-machine-decisions.d.ts +135 -0
  201. package/dist/src/turn-runner/state-machine-decisions.d.ts.map +1 -0
  202. package/dist/src/turn-runner/state-machine-decisions.js +443 -0
  203. package/dist/src/turn-runner/state-machine-decisions.js.map +1 -0
  204. package/dist/src/turn-runner/state-machine-session.d.ts +13 -28
  205. package/dist/src/turn-runner/state-machine-session.d.ts.map +1 -1
  206. package/dist/src/turn-runner/state-machine-session.js +18 -55
  207. package/dist/src/turn-runner/state-machine-session.js.map +1 -1
  208. package/dist/src/turn-runner/subagent.d.ts +156 -0
  209. package/dist/src/turn-runner/subagent.d.ts.map +1 -0
  210. package/dist/src/turn-runner/subagent.js +164 -0
  211. package/dist/src/turn-runner/subagent.js.map +1 -0
  212. package/dist/src/turn-runner/task-tools.d.ts +76 -0
  213. package/dist/src/turn-runner/task-tools.d.ts.map +1 -0
  214. package/dist/src/turn-runner/task-tools.js +370 -0
  215. package/dist/src/turn-runner/task-tools.js.map +1 -0
  216. package/dist/src/turn-runner/tools.d.ts +65 -17
  217. package/dist/src/turn-runner/tools.d.ts.map +1 -1
  218. package/dist/src/turn-runner/tools.js +173 -59
  219. package/dist/src/turn-runner/tools.js.map +1 -1
  220. package/dist/src/turn-runner/turn-runner.d.ts +198 -134
  221. package/dist/src/turn-runner/turn-runner.d.ts.map +1 -1
  222. package/dist/src/turn-runner/turn-runner.js +1302 -713
  223. package/dist/src/turn-runner/turn-runner.js.map +1 -1
  224. package/dist/src/turn-runner/usage-accounting.d.ts +4 -0
  225. package/dist/src/turn-runner/usage-accounting.d.ts.map +1 -1
  226. package/dist/src/turn-runner/usage-accounting.js +19 -0
  227. package/dist/src/turn-runner/usage-accounting.js.map +1 -1
  228. package/dist/src/types/config.d.ts +9 -1
  229. package/dist/src/types/config.d.ts.map +1 -1
  230. package/dist/src/types/config.js +2 -1
  231. package/dist/src/types/config.js.map +1 -1
  232. package/dist/src/types/protocol.d.ts +110 -30
  233. package/dist/src/types/protocol.d.ts.map +1 -1
  234. package/dist/src/types/state-machine.d.ts +10 -12
  235. package/dist/src/types/state-machine.d.ts.map +1 -1
  236. package/dist/src/types/state-machine.js.map +1 -1
  237. package/package.json +4 -4
  238. package/dist/src/cli/model-gateway.d.ts.map +0 -1
  239. package/dist/src/cli/model-gateway.js.map +0 -1
  240. package/dist/src/turn-runner/state-machine-controller.d.ts +0 -140
  241. package/dist/src/turn-runner/state-machine-controller.d.ts.map +0 -1
  242. package/dist/src/turn-runner/state-machine-controller.js +0 -501
  243. package/dist/src/turn-runner/state-machine-controller.js.map +0 -1
  244. /package/dist/src/{cli → model-resolution}/model-gateway.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/model-resolution/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/model-resolution/catalog.ts"],"names":[],"mappings":"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"}
@@ -35,9 +35,9 @@ export declare function resolveDuetGatewayModel(modelId: string): Model<any>;
35
35
  /**
36
36
  * Clone a known sibling on the same provider to build a Model pi-ai has not
37
37
  * shipped yet; returns undefined when the provider/modelId pair is not a
38
- * pending clone. Shared by the `duet-gateway` path (above) and the
39
- * `vercel-ai-gateway` path in resolver.ts. Delete a clone entry once pi-ai
40
- * ships that model to the gateway catalog and it resolves directly.
38
+ * pending clone. Shared by the `duet-gateway` path (above) and direct
39
+ * `vercel-ai-gateway`/`openrouter` resolution in resolver.ts. Delete a clone
40
+ * entry once pi-ai ships that provider/model pair and it resolves directly.
41
41
  */
42
42
  export declare function resolveMissingModel(provider: string, modelId: string): Model<any> | undefined;
43
43
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"duet-gateway.d.ts","sourceRoot":"","sources":["../../../src/model-resolution/duet-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAO3E;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AACvD,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAEjE,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CASnE;AAuED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAK7F;AAaD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK1E"}
1
+ {"version":3,"file":"duet-gateway.d.ts","sourceRoot":"","sources":["../../../src/model-resolution/duet-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAwD3E;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AACvD,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAEjE,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CASnE;AAoGD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAY7F;AA4CD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK1E"}
@@ -3,6 +3,46 @@ const DEFAULT_DUET_GATEWAY_BASE_URL = "https://gateway.duet.so";
3
3
  const OPENAI_MODEL_PREFIX = "openai/";
4
4
  const VERCEL_GATEWAY_BASE_URL = "https://ai-gateway.vercel.sh";
5
5
  const OPENAI_BASE_URL = "https://api.openai.com/v1";
6
+ // Published USD-per-million-token prices (input / output / cacheRead / cacheWrite),
7
+ // verified against the OpenRouter listing 2026-07-18. Clones inherit their
8
+ // sibling's cost and synthesized passthroughs zero it out, so every model that
9
+ // resolves through an override below must carry its real price here or cost
10
+ // accounting (sidebar, usage events, advisor-preview) silently lies.
11
+ const GPT_5_6_GATEWAY_CAPABILITIES = {
12
+ input: ["text", "image"],
13
+ contextWindow: 1_050_000,
14
+ maxTokens: 128_000,
15
+ };
16
+ const OPENAI_GATEWAY_MODEL_OVERRIDES = {
17
+ "openai/gpt-5.6-sol": {
18
+ ...GPT_5_6_GATEWAY_CAPABILITIES,
19
+ cost: { input: 5, output: 30, cacheRead: 0.5, cacheWrite: 6.25 },
20
+ },
21
+ "openai/gpt-5.6-terra": {
22
+ ...GPT_5_6_GATEWAY_CAPABILITIES,
23
+ cost: { input: 2.5, output: 15, cacheRead: 0.25, cacheWrite: 3.125 },
24
+ },
25
+ "openai/gpt-5.6-luna": {
26
+ ...GPT_5_6_GATEWAY_CAPABILITIES,
27
+ cost: { input: 1, output: 6, cacheRead: 0.1, cacheWrite: 1.25 },
28
+ },
29
+ };
30
+ const KIMI_K3_CAPABILITIES = {
31
+ input: ["text", "image"],
32
+ contextWindow: 1_000_000,
33
+ maxTokens: 131_072,
34
+ cost: { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 },
35
+ // K3 currently exposes one reasoning setting. Mapping app-level `high` to
36
+ // `max` keeps the selection honest on both supported transports.
37
+ thinkingLevelMap: { off: null, minimal: null, low: null, medium: null, high: "max", xhigh: null },
38
+ };
39
+ const FABLE_5_COST = {
40
+ cost: { input: 10, output: 50, cacheRead: 1, cacheWrite: 12.5 },
41
+ };
42
+ // Sonnet 5 introductory pricing (through 2026-08-31); bump to 3/15/0.3/3.75 after.
43
+ const SONNET_5_COST = {
44
+ cost: { input: 2, output: 10, cacheRead: 0.2, cacheWrite: 2.5 },
45
+ };
6
46
  /**
7
47
  * The Duet gateway proxies Vercel's AI Gateway path layout and authenticates
8
48
  * with a `DUET_API_KEY` token scoped to a single org. Rather than ship a
@@ -61,9 +101,7 @@ export function resolveDuetGatewayModel(modelId) {
61
101
  */
62
102
  function resolveDuetGatewayUpstream(modelId) {
63
103
  if (modelId.startsWith(OPENAI_MODEL_PREFIX)) {
64
- const slug = modelId.slice(OPENAI_MODEL_PREFIX.length);
65
- return (getModel("openai", slug) ??
66
- synthesizePassthroughModel(modelId, "openai-responses"));
104
+ return resolveOpenAIResponsesModel(modelId);
67
105
  }
68
106
  return (getModel("vercel-ai-gateway", modelId) ??
69
107
  resolveMissingModel("vercel-ai-gateway", modelId) ??
@@ -93,34 +131,96 @@ function synthesizePassthroughModel(modelId, api) {
93
131
  };
94
132
  }
95
133
  /**
96
- * Opus 4.8 siblings cloned to synthesize models pi-ai's gateway catalog has not
97
- * shipped yet. Each `to` reuses Opus 4.8's anthropic-messages transport, 1M
98
- * context window, and 128k output cap unchanged, so swapping the id yields a
99
- * correct spec and a better one than the generic synthesized placeholder,
100
- * which would cap context at 256k and output at 64k. The `duet-gateway` route
101
- * resolves through the `vercel-ai-gateway` catalog, so these entries cover it
102
- * too. `to` scopes each clone to one id so other catalog-missing ids are not
103
- * rewritten. Drop an entry the moment pi-ai ships that model to the gateway.
134
+ * Known sibling specs cloned for models pi-ai's catalog has not shipped yet.
135
+ * The `duet-gateway` route resolves through the `vercel-ai-gateway` catalog, so
136
+ * those entries cover it too. Per-model overrides replace sibling metadata
137
+ * only where the new model's published contract differs. Drop an entry the
138
+ * moment pi-ai ships that provider/model pair.
104
139
  */
105
- const GATEWAY_CLONE_SOURCES = {
140
+ const MISSING_MODEL_CLONES = {
106
141
  "vercel-ai-gateway": [
107
- { from: "anthropic/claude-opus-4.8", to: "anthropic/claude-fable-5" },
108
- { from: "anthropic/claude-opus-4.8", to: "anthropic/claude-sonnet-5" },
142
+ { from: "anthropic/claude-opus-4.8", to: "anthropic/claude-fable-5", overrides: FABLE_5_COST },
143
+ {
144
+ from: "anthropic/claude-opus-4.8",
145
+ to: "anthropic/claude-sonnet-5",
146
+ overrides: SONNET_5_COST,
147
+ },
148
+ {
149
+ from: "moonshotai/kimi-k2.6",
150
+ to: "moonshotai/kimi-k3",
151
+ overrides: {
152
+ ...KIMI_K3_CAPABILITIES,
153
+ compat: { forceAdaptiveThinking: true },
154
+ },
155
+ },
156
+ ],
157
+ openrouter: [
158
+ {
159
+ from: "moonshotai/kimi-k2.6",
160
+ to: "moonshotai/kimi-k3",
161
+ overrides: KIMI_K3_CAPABILITIES,
162
+ },
163
+ {
164
+ from: "openai/gpt-5.5",
165
+ to: "openai/gpt-5.6-sol",
166
+ overrides: OPENAI_GATEWAY_MODEL_OVERRIDES["openai/gpt-5.6-sol"],
167
+ },
168
+ {
169
+ from: "openai/gpt-5.5",
170
+ to: "openai/gpt-5.6-terra",
171
+ overrides: OPENAI_GATEWAY_MODEL_OVERRIDES["openai/gpt-5.6-terra"],
172
+ },
109
173
  ],
110
174
  };
111
175
  /**
112
176
  * Clone a known sibling on the same provider to build a Model pi-ai has not
113
177
  * shipped yet; returns undefined when the provider/modelId pair is not a
114
- * pending clone. Shared by the `duet-gateway` path (above) and the
115
- * `vercel-ai-gateway` path in resolver.ts. Delete a clone entry once pi-ai
116
- * ships that model to the gateway catalog and it resolves directly.
178
+ * pending clone. Shared by the `duet-gateway` path (above) and direct
179
+ * `vercel-ai-gateway`/`openrouter` resolution in resolver.ts. Delete a clone
180
+ * entry once pi-ai ships that provider/model pair and it resolves directly.
117
181
  */
118
182
  export function resolveMissingModel(provider, modelId) {
119
- const clone = GATEWAY_CLONE_SOURCES[provider]?.find((entry) => entry.to === modelId);
183
+ if (provider === "vercel-ai-gateway" && modelId.startsWith(OPENAI_MODEL_PREFIX)) {
184
+ return resolveVercelGatewayOpenAIModel(modelId);
185
+ }
186
+ const clone = MISSING_MODEL_CLONES[provider]?.find((entry) => entry.to === modelId);
120
187
  if (!clone)
121
188
  return undefined;
122
189
  const sibling = getModel(provider, clone.from);
123
- return sibling ? { ...sibling, id: modelId, name: modelId } : undefined;
190
+ if (!sibling)
191
+ return undefined;
192
+ const compat = clone.overrides?.compat
193
+ ? { ...sibling.compat, ...clone.overrides.compat }
194
+ : sibling.compat;
195
+ return { ...sibling, ...clone.overrides, compat, id: modelId, name: modelId };
196
+ }
197
+ /**
198
+ * Synthesize a `vercel-ai-gateway` OpenAI model pi-ai's catalog has not shipped
199
+ * yet, keeping it on the openai-responses transport pointed at the Vercel
200
+ * gateway's OpenAI-compatible `/v1` route. pi-ai serves gateway OpenAI models
201
+ * over the anthropic-messages transport, which drops OpenAI reasoning stream
202
+ * semantics AND silently ignores `reasoningEffort` — so a memory model resolved
203
+ * here (e.g. the default gpt-5.6-luna) could never run at the low effort the
204
+ * observer/reflectors request. This mirrors the deliberate openai-responses
205
+ * routing documented on `resolveDuetGatewayModel`. Auth is unaffected:
206
+ * `resolveProviderApiKey`/pi-ai key resolution keys off `provider`, which stays
207
+ * `vercel-ai-gateway`, so `AI_GATEWAY_API_KEY` still applies.
208
+ */
209
+ function resolveVercelGatewayOpenAIModel(modelId) {
210
+ const upstream = resolveOpenAIResponsesModel(modelId);
211
+ return {
212
+ ...upstream,
213
+ provider: "vercel-ai-gateway",
214
+ id: modelId,
215
+ name: modelId,
216
+ baseUrl: `${VERCEL_GATEWAY_BASE_URL}/v1`,
217
+ };
218
+ }
219
+ function resolveOpenAIResponsesModel(modelId) {
220
+ const slug = modelId.slice(OPENAI_MODEL_PREFIX.length);
221
+ const upstream = getModel("openai", slug) ??
222
+ synthesizePassthroughModel(modelId, "openai-responses");
223
+ return { ...upstream, ...OPENAI_GATEWAY_MODEL_OVERRIDES[modelId] };
124
224
  }
125
225
  function getDuetGatewayBaseUrlForModel(model) {
126
226
  if (model.api === "openai-completions" || model.api === "openai-responses") {
@@ -1 +1 @@
1
- {"version":3,"file":"duet-gateway.js","sourceRoot":"","sources":["../../../src/model-resolution/duet-gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"duet-gateway.js","sourceRoot":"","sources":["../../../src/model-resolution/duet-gateway.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-gateway.d.ts","sourceRoot":"","sources":["../../../src/model-resolution/model-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAGnC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAM/C,4EAA4E;AAC5E,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,OAAO,GACP,OAAO,GACP,WAAW,GACX,UAAU,GACV,WAAW,GACX,QAAQ,GACR,eAAe,CAAC;AAEpB;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,UAAU,CAAC,OAAO,aAAa,CAAC,CAkBzE;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAazE"}
@@ -1,5 +1,5 @@
1
1
  import { createGateway } from "ai";
2
- import { getDuetGatewayBaseUrl } from "../model-resolution/duet-gateway.js";
2
+ import { getDuetGatewayBaseUrl } from "./duet-gateway.js";
3
3
  /**
4
4
  * The `duet model` subcommand talks to models directly through the Vercel AI
5
5
  * SDK (`ai@^7`), pointed at the Duet gateway instead of the pi harness. The
@@ -22,11 +22,15 @@ export function createDuetModelGateway() {
22
22
  // Preserve `fetch.preconnect` so the wrapper still satisfies the platform
23
23
  // fetch signature; only the abort timeout is overridden.
24
24
  const longTimeoutFetch = Object.assign((input, init) => fetch(input, { ...init, signal: AbortSignal.timeout(GENERATION_TIMEOUT_MS) }), { preconnect: fetch.preconnect });
25
- return createGateway({
26
- baseURL: `${getDuetGatewayBaseUrl()}/v4/ai`,
27
- apiKey: process.env[DUET_API_KEY_ENV],
28
- fetch: longTimeoutFetch,
29
- });
25
+ // Credential precedence mirrors the harness: the Duet proxy when its key is
26
+ // present, else Vercel's AI Gateway (same /v4/ai protocol path) with the
27
+ // Vercel key. One owner for this fallback — callers never bridge env vars.
28
+ const duetKey = process.env[DUET_API_KEY_ENV]?.trim();
29
+ const vercelKey = process.env.AI_GATEWAY_API_KEY?.trim();
30
+ const upstream = duetKey || !vercelKey
31
+ ? { baseURL: `${getDuetGatewayBaseUrl()}/v4/ai`, apiKey: process.env[DUET_API_KEY_ENV] }
32
+ : { baseURL: "https://ai-gateway.vercel.sh/v4/ai", apiKey: vercelKey };
33
+ return createGateway({ ...upstream, fetch: longTimeoutFetch });
30
34
  }
31
35
  /**
32
36
  * Fetch the gateway model catalog and return a map of model id -> capability
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-gateway.js","sourceRoot":"","sources":["../../../src/model-resolution/model-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAE/C,6EAA6E;AAC7E,wEAAwE;AACxE,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAa7C;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB;IACpC,0EAA0E;IAC1E,yDAAyD;IACzD,MAAM,gBAAgB,GAAiB,MAAM,CAAC,MAAM,CAClD,CAAC,KAAkC,EAAE,IAAkC,EAAE,EAAE,CACzE,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAC/E,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CACjC,CAAC;IACF,4EAA4E;IAC5E,yEAAyE;IACzE,2EAA2E;IAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC;IACtD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACzD,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,SAAS;QACnB,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;QACxF,CAAC,CAAC,EAAE,OAAO,EAAE,oCAAoC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC3E,OAAO,aAAa,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,qBAAqB,EAAE,YAAY,EAAE;QACnE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE;KAC5E,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsD,CAAC;IAC1F,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { type Model } from "@earendil-works/pi-ai";
2
+ import { type RoutingCatalogAdapter, type RoutingTable } from "../model-routing/table.js";
2
3
  export { DEFAULT_CLI_MEMORY_MODEL, DEFAULT_CLI_MODEL } from "./catalog.js";
3
4
  /**
4
5
  * Resolves which provider:modelId the CLI talks to, plus the provenance for
@@ -9,14 +10,20 @@ export { DEFAULT_CLI_MEMORY_MODEL, DEFAULT_CLI_MODEL } from "./catalog.js";
9
10
  export interface ModelResolution {
10
11
  /** Model name retained for config, display, and later runtime resolution. */
11
12
  modelName: string;
12
- /** explicit: CLI flag; inferred: provider env var present; default: built-in fallback. */
13
+ /** explicit: CLI flag; inferred: provider env var present; default: active routing-table fallback. */
13
14
  source: "explicit" | "inferred" | "default";
14
- /** Provider env var that triggered inference, e.g. "ANTHROPIC_API_KEY". */
15
+ /** Provider env var that triggered inference, e.g. "AI_GATEWAY_API_KEY". */
15
16
  envVar?: string;
16
17
  /** True when the env var was loaded from a CLI env file rather than the shell. */
17
18
  fromDotenv?: boolean;
19
+ /** True when the retained name is a virtual tier owned by model routing. */
20
+ routed?: boolean;
18
21
  }
19
22
  export declare function resolveModelName(model: string): Model<any>;
23
+ /** Shared concrete-catalog boundary used by every model-routing composition site. */
24
+ export declare const routingCatalogAdapter: RoutingCatalogAdapter;
25
+ /** Resolve a concrete catalog name to the provider-pinned reference used for model calls. */
26
+ export declare function pinnedModelReference(name: string): string;
20
27
  /**
21
28
  * Same selection logic as resolveCliModel, but picks each provider's cheaper
22
29
  * observational-memory model.
@@ -24,8 +31,8 @@ export declare function resolveModelName(model: string): Model<any>;
24
31
  export declare function resolveCliMemoryModel(memoryModelName: string | undefined, dotenvKeys: Set<string>): ModelResolution;
25
32
  /**
26
33
  * Resolve the user-visible model and report provenance so callers can show
27
- * "inferred from ANTHROPIC_API_KEY in an env file" etc.
34
+ * "inferred from AI_GATEWAY_API_KEY in an env file" etc.
28
35
  */
29
- export declare function resolveCliModel(modelName: string | undefined, dotenvKeys: Set<string>): ModelResolution;
36
+ export declare function resolveCliModel(modelName: string | undefined, dotenvKeys: Set<string>, routingTable?: RoutingTable): ModelResolution;
30
37
  export declare function describeModelResolution(resolution: ModelResolution): string;
31
38
  //# sourceMappingURL=resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/model-resolution/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAoB1E,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE3E;;;;;GAKG;AAEH,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,0FAA0F;IAC1F,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC5C,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CA2B1D;AAiBD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GACtB,eAAe,CAOjB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GACtB,eAAe,CAEjB;AAoED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,CAO3E"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/model-resolution/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE1E,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AAkBnC,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE3E;;;;;GAKG;AAEH,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,sGAAsG;IACtG,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC5C,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAmC1D;AAED,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,EAAE,qBAMnC,CAAC;AAEF,6FAA6F;AAC7F,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGzD;AAiBD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GACtB,eAAe,CAOjB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,YAAY,GAAE,YAAqC,GAClD,eAAe,CAQjB;AA8ED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,CAU3E"}
@@ -1,6 +1,7 @@
1
1
  import { findEnvKeys, getModel } from "@earendil-works/pi-ai";
2
+ import { BUILT_IN_ROUTING_TABLE, isVirtualModel, } from "../model-routing/table.js";
2
3
  import { resolveDuetGatewayModel, resolveMissingModel } from "./duet-gateway.js";
3
- import { canonicalizeModelName, canonicalizeProviderModelId, clampModelOutputTokens, DEFAULT_CLI_MEMORY_MODEL, DEFAULT_CLI_MODEL, getModelCandidates, getProviderDefaultModel, getProviderMemoryModel, isKnownShorthand, isProviderPinnedModelName, PROVIDER_ORDER, resolveProviderShorthand, } from "./catalog.js";
4
+ import { canonicalizeModelName, canonicalizeProviderModelId, clampModelOutputTokens, DEFAULT_CLI_MEMORY_MODEL, getModelCandidates, getProviderDefaultModel, getProviderMemoryModel, isKnownShorthand, isProviderPinnedModelName, PROVIDER_ORDER, resolveProviderShorthand, } from "./catalog.js";
4
5
  export { DEFAULT_CLI_MEMORY_MODEL, DEFAULT_CLI_MODEL } from "./catalog.js";
5
6
  export function resolveModelName(model) {
6
7
  model = resolveModelReference(model);
@@ -10,6 +11,14 @@ export function resolveModelName(model) {
10
11
  }
11
12
  const rawProvider = model.slice(0, separator);
12
13
  const rawModelId = model.slice(separator + 1);
14
+ // The CLI supports only the router providers (duet-gateway, vercel-ai-gateway,
15
+ // openrouter). Any other explicit pin — e.g. `anthropic:claude-opus-4-8` or
16
+ // `openai:gpt-5.5` — is an unknown provider here: `resolveProviderShorthand`
17
+ // returns undefined, the raw provider passes through, and `getModel` below
18
+ // forwards it to pi-ai unchanged. That's incidental passthrough, not a
19
+ // supported path: pi-ai resolves it if it ships that provider/id and the
20
+ // caller supplies the credential, otherwise it resolves to an undefined
21
+ // model. No catalog canonicalization applies to unknown providers.
13
22
  const provider = resolveProviderShorthand(rawProvider) ?? rawProvider;
14
23
  const modelId = isKnownProvider(provider)
15
24
  ? canonicalizeProviderModelId(provider, rawModelId)
@@ -26,6 +35,16 @@ export function resolveModelName(model) {
26
35
  const resolved = getModel(provider, modelId) ?? resolveMissingModel(provider, modelId);
27
36
  return clampModelOutputTokens(resolved);
28
37
  }
38
+ /** Shared concrete-catalog boundary used by every model-routing composition site. */
39
+ export const routingCatalogAdapter = {
40
+ isCatalogName: isKnownShorthand,
41
+ modelAcceptsImages: (name) => resolveModelName(isProviderPinnedModelName(name) ? name : `duet-gateway:${name}`).input.includes("image"),
42
+ };
43
+ /** Resolve a concrete catalog name to the provider-pinned reference used for model calls. */
44
+ export function pinnedModelReference(name) {
45
+ const model = resolveModelName(name);
46
+ return `${model.provider}:${model.id}`;
47
+ }
29
48
  function isKnownProvider(provider) {
30
49
  return PROVIDER_ORDER.some((entry) => entry.provider === provider);
31
50
  }
@@ -45,13 +64,19 @@ export function resolveCliMemoryModel(memoryModelName, dotenvKeys) {
45
64
  }
46
65
  /**
47
66
  * Resolve the user-visible model and report provenance so callers can show
48
- * "inferred from ANTHROPIC_API_KEY in an env file" etc.
67
+ * "inferred from AI_GATEWAY_API_KEY in an env file" etc.
49
68
  */
50
- export function resolveCliModel(modelName, dotenvKeys) {
51
- return resolveCliModelWith(modelName, getDefaultModelCandidates(), dotenvKeys, DEFAULT_CLI_MODEL);
69
+ export function resolveCliModel(modelName, dotenvKeys, routingTable = BUILT_IN_ROUTING_TABLE) {
70
+ return resolveCliModelWith(modelName, getDefaultModelCandidates(), dotenvKeys, routingTable.defaultTier, routingTable);
52
71
  }
53
- function resolveCliModelWith(modelName, providerInference, dotenvKeys, defaultModel) {
72
+ function resolveCliModelWith(modelName, providerInference, dotenvKeys, defaultModel, routingTable = BUILT_IN_ROUTING_TABLE) {
54
73
  if (modelName) {
74
+ if (isVirtualModel(modelName, routingTable)) {
75
+ return { modelName, source: "explicit", routed: true };
76
+ }
77
+ if (isVirtualModel(modelName, BUILT_IN_ROUTING_TABLE)) {
78
+ throw new Error(`Unknown virtual model tier "${modelName}" in the active routing table.`);
79
+ }
55
80
  return {
56
81
  modelName: isProviderPinnedModelName(modelName)
57
82
  ? modelName
@@ -59,6 +84,9 @@ function resolveCliModelWith(modelName, providerInference, dotenvKeys, defaultMo
59
84
  source: "explicit",
60
85
  };
61
86
  }
87
+ if (isVirtualModel(defaultModel, routingTable)) {
88
+ return { modelName: defaultModel, source: "default", routed: true };
89
+ }
62
90
  const inferred = findInferredProviderEntry(providerInference);
63
91
  if (inferred) {
64
92
  return {
@@ -105,12 +133,15 @@ function resolveModelReference(modelName) {
105
133
  throw new Error(`Unknown model shorthand: ${modelName}`);
106
134
  }
107
135
  export function describeModelResolution(resolution) {
136
+ const routed = resolution.routed ? `${resolution.modelName} (routed) — ` : "";
108
137
  if (resolution.source === "explicit")
109
- return "explicit CLI flag";
138
+ return `${routed}explicit CLI flag`;
110
139
  if (resolution.source === "inferred") {
111
140
  const where = resolution.fromDotenv ? "an env file" : "shell environment";
112
- return `inferred from ${resolution.envVar} in ${where}`;
141
+ return `${routed}inferred from ${resolution.envVar} in ${where}`;
113
142
  }
114
- return "built-in default (no provider env vars set)";
143
+ return resolution.routed
144
+ ? `${routed}routing-table default`
145
+ : "built-in default (no provider env vars set)";
115
146
  }
116
147
  //# sourceMappingURL=resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/model-resolution/resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/model-resolution/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { serializeMessageForObserver } from "../memory/observational.js";
2
+ /**
3
+ * Text projection produced by {@link serializeMessageForObserver}. The future
4
+ * advisor tool can pass that projection directly after serializing the
5
+ * `AgentMessage` values in `agent.state.messages`.
6
+ */
7
+ export type SerializedAdvisorMessage = ReturnType<typeof serializeMessageForObserver>;
8
+ /** Inputs needed to assemble advisor context without runtime or persistence dependencies. */
9
+ export interface BuildAdvisorTranscriptInput {
10
+ /** Serialized first user turn, pinned ahead of every lower-priority section. */
11
+ firstUserMessage: SerializedAdvisorMessage;
12
+ /** Fully resolved executor prompt; rendered as quoted transcript content, not instructions. */
13
+ executorSystemPrompt: string;
14
+ /** Chronological `Observation.content` values from `readSessionObservations`. */
15
+ observations: readonly string[];
16
+ /** Serialized recent messages in oldest-to-newest order. */
17
+ tailMessages: readonly SerializedAdvisorMessage[];
18
+ /** Maximum estimated tokens allowed in the returned text. */
19
+ budgetTokens: number;
20
+ }
21
+ /** A budgeted advisor payload and the memory system's estimate for that exact text. */
22
+ export interface AdvisorTranscript {
23
+ /** Curated transcript to send as advisor-call content. */
24
+ text: string;
25
+ /** Heuristic token estimate for `text`, using the memory system's estimator. */
26
+ tokens: number;
27
+ /** True when any source content was omitted or shortened to meet the budget. */
28
+ truncated: boolean;
29
+ }
30
+ /**
31
+ * Assemble the executor context in descending retention priority. Higher-priority
32
+ * prose consumes the budget first; recent messages are retained newest-first at
33
+ * whole-message boundaries.
34
+ */
35
+ export declare function buildAdvisorTranscript(input: BuildAdvisorTranscriptInput): AdvisorTranscript;
36
+ //# sourceMappingURL=advisor-transcript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advisor-transcript.d.ts","sourceRoot":"","sources":["../../../src/model-routing/advisor-transcript.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,2BAA2B,EAE5B,MAAM,4BAA4B,CAAC;AAEpC;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEtF,6FAA6F;AAC7F,MAAM,WAAW,2BAA2B;IAC1C,gFAAgF;IAChF,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,+FAA+F;IAC/F,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iFAAiF;IACjF,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,4DAA4D;IAC5D,YAAY,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAClD,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,uFAAuF;AACvF,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,SAAS,EAAE,OAAO,CAAC;CACpB;AAOD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,iBAAiB,CA0C5F"}
@@ -0,0 +1,103 @@
1
+ import { estimateTokens, trimMessagesToTranscriptBudget, } from "../memory/observational.js";
2
+ const FIRST_USER_HEADING = "## Pinned first user message";
3
+ const SYSTEM_PROMPT_HEADING = "## Executor system prompt (quoted content)";
4
+ const OBSERVATIONS_HEADING = "## Observations";
5
+ const TAIL_HEADING = "## Recent transcript";
6
+ /**
7
+ * Assemble the executor context in descending retention priority. Higher-priority
8
+ * prose consumes the budget first; recent messages are retained newest-first at
9
+ * whole-message boundaries.
10
+ */
11
+ export function buildAdvisorTranscript(input) {
12
+ const budgetTokens = normalizeBudget(input.budgetTokens);
13
+ let text = "";
14
+ let truncated = false;
15
+ ({ text, truncated } = appendPriorityContent(text, `${FIRST_USER_HEADING}\n\n${input.firstUserMessage.textPreview}`, budgetTokens, truncated));
16
+ const quotedSystemPrompt = quoteAsContent(input.executorSystemPrompt);
17
+ ({ text, truncated } = appendPriorityContent(text, `${SYSTEM_PROMPT_HEADING}\n\nThe executor is operating under this system prompt:\n\n${quotedSystemPrompt}`, budgetTokens, truncated));
18
+ if (input.observations.length > 0) {
19
+ const observations = input.observations
20
+ .map((observation, index) => `[Observation ${index + 1}]\n${observation}`)
21
+ .join("\n\n");
22
+ ({ text, truncated } = appendPriorityContent(text, `${OBSERVATIONS_HEADING}\n\n${observations}`, budgetTokens, truncated));
23
+ }
24
+ if (estimateTokens(text) < budgetTokens && !truncated) {
25
+ const tail = withoutPinnedDuplicate(input.tailMessages, input.firstUserMessage);
26
+ const tailResult = buildTailSection(text, tail, budgetTokens);
27
+ text = tailResult.text;
28
+ truncated = tailResult.truncated;
29
+ }
30
+ else if (input.tailMessages.length > 0) {
31
+ truncated = true;
32
+ }
33
+ return { text, tokens: estimateTokens(text), truncated };
34
+ }
35
+ function normalizeBudget(budgetTokens) {
36
+ if (!Number.isFinite(budgetTokens))
37
+ return 0;
38
+ return Math.max(0, Math.floor(budgetTokens));
39
+ }
40
+ function quoteAsContent(prompt) {
41
+ return prompt
42
+ .split("\n")
43
+ .map((line) => `> ${line}`)
44
+ .join("\n");
45
+ }
46
+ function appendPriorityContent(existing, content, budgetTokens, alreadyTruncated) {
47
+ if (alreadyTruncated)
48
+ return { text: existing, truncated: true };
49
+ const separator = existing.length > 0 ? "\n\n" : "";
50
+ const candidate = `${existing}${separator}${content}`;
51
+ if (estimateTokens(candidate) <= budgetTokens) {
52
+ return { text: candidate, truncated: false };
53
+ }
54
+ let low = 0;
55
+ let high = content.length;
56
+ while (low < high) {
57
+ const midpoint = Math.ceil((low + high) / 2);
58
+ if (estimateTokens(`${existing}${separator}${content.slice(0, midpoint)}`) <= budgetTokens) {
59
+ low = midpoint;
60
+ }
61
+ else {
62
+ high = midpoint - 1;
63
+ }
64
+ }
65
+ return { text: `${existing}${separator}${content.slice(0, low)}`, truncated: true };
66
+ }
67
+ function withoutPinnedDuplicate(tailMessages, firstUserMessage) {
68
+ const duplicateIndex = tailMessages.findIndex((message) => message.textPreview === firstUserMessage.textPreview);
69
+ return tailMessages.filter((_message, index) => index !== duplicateIndex);
70
+ }
71
+ function buildTailSection(existing, tailMessages, budgetTokens) {
72
+ if (tailMessages.length === 0)
73
+ return { text: existing, truncated: false };
74
+ const remainingTokens = Math.max(0, budgetTokens - estimateTokens(existing));
75
+ const rawMessages = tailMessages.map((message, index) => ({
76
+ id: String(index),
77
+ createdAt: index,
78
+ role: "assistant",
79
+ content: [{ type: "text", text: message.textPreview }],
80
+ textPreview: message.textPreview,
81
+ estimatedTokens: estimateTokens(message.textPreview),
82
+ }));
83
+ const trimmed = trimMessagesToTranscriptBudget(rawMessages, remainingTokens);
84
+ let kept = trimmed.filter((message) => {
85
+ const source = rawMessages[Number(message.id)];
86
+ return source?.textPreview === message.textPreview;
87
+ });
88
+ while (true) {
89
+ const elidedCount = tailMessages.length - kept.length;
90
+ const elision = elidedCount > 0 ? `[earlier transcript elided: ${elidedCount} messages]\n\n` : "";
91
+ const body = kept.map((message) => message.textPreview).join("\n\n");
92
+ const section = `${TAIL_HEADING}\n\n${elision}${body}`.trimEnd();
93
+ const candidate = `${existing}\n\n${section}`;
94
+ if (estimateTokens(candidate) <= budgetTokens) {
95
+ return { text: candidate, truncated: elidedCount > 0 };
96
+ }
97
+ if (kept.length === 0) {
98
+ return appendPriorityContent(existing, section, budgetTokens, false);
99
+ }
100
+ kept = kept.slice(1);
101
+ }
102
+ }
103
+ //# sourceMappingURL=advisor-transcript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advisor-transcript.js","sourceRoot":"","sources":["../../../src/model-routing/advisor-transcript.ts"],"names":[],"mappings":"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"}