@bastani/pi-ai 0.9.20-alpha.2 → 0.9.20-alpha.4

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 (264) hide show
  1. package/CHANGELOG.md +34 -1
  2. package/NOTICE.md +1 -1
  3. package/README.md +28 -5
  4. package/dist/api/anthropic-messages.d.ts.map +1 -1
  5. package/dist/api/anthropic-messages.js +167 -85
  6. package/dist/api/anthropic-messages.js.map +1 -1
  7. package/dist/api/azure-openai-responses.d.ts.map +1 -1
  8. package/dist/api/azure-openai-responses.js +17 -5
  9. package/dist/api/azure-openai-responses.js.map +1 -1
  10. package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  11. package/dist/api/bedrock-converse-stream.js +15 -12
  12. package/dist/api/bedrock-converse-stream.js.map +1 -1
  13. package/dist/api/google-generative-ai.d.ts.map +1 -1
  14. package/dist/api/google-generative-ai.js +22 -80
  15. package/dist/api/google-generative-ai.js.map +1 -1
  16. package/dist/api/google-shared.d.ts +13 -4
  17. package/dist/api/google-shared.d.ts.map +1 -1
  18. package/dist/api/google-shared.js +54 -4
  19. package/dist/api/google-shared.js.map +1 -1
  20. package/dist/api/google-vertex.d.ts.map +1 -1
  21. package/dist/api/google-vertex.js +25 -65
  22. package/dist/api/google-vertex.js.map +1 -1
  23. package/dist/api/mistral-conversations.d.ts.map +1 -1
  24. package/dist/api/mistral-conversations.js +15 -11
  25. package/dist/api/mistral-conversations.js.map +1 -1
  26. package/dist/api/openai-codex-responses.d.ts.map +1 -1
  27. package/dist/api/openai-codex-responses.js +20 -22
  28. package/dist/api/openai-codex-responses.js.map +1 -1
  29. package/dist/api/openai-completions.d.ts +6 -4
  30. package/dist/api/openai-completions.d.ts.map +1 -1
  31. package/dist/api/openai-completions.js +39 -57
  32. package/dist/api/openai-completions.js.map +1 -1
  33. package/dist/api/openai-responses-shared.d.ts +7 -5
  34. package/dist/api/openai-responses-shared.d.ts.map +1 -1
  35. package/dist/api/openai-responses-shared.js +56 -56
  36. package/dist/api/openai-responses-shared.js.map +1 -1
  37. package/dist/api/openai-responses.d.ts.map +1 -1
  38. package/dist/api/openai-responses.js +14 -19
  39. package/dist/api/openai-responses.js.map +1 -1
  40. package/dist/api/pi-messages.d.ts +3 -3
  41. package/dist/api/pi-messages.d.ts.map +1 -1
  42. package/dist/api/pi-messages.js +2 -2
  43. package/dist/api/pi-messages.js.map +1 -1
  44. package/dist/api/simple-options.d.ts +3 -3
  45. package/dist/api/simple-options.d.ts.map +1 -1
  46. package/dist/api/simple-options.js.map +1 -1
  47. package/dist/api/transform-messages.d.ts.map +1 -1
  48. package/dist/api/transform-messages.js +21 -7
  49. package/dist/api/transform-messages.js.map +1 -1
  50. package/dist/auth/credential-store.d.ts.map +1 -1
  51. package/dist/auth/credential-store.js +3 -2
  52. package/dist/auth/credential-store.js.map +1 -1
  53. package/dist/auth/resolve.d.ts +4 -0
  54. package/dist/auth/resolve.d.ts.map +1 -1
  55. package/dist/auth/resolve.js +27 -8
  56. package/dist/auth/resolve.js.map +1 -1
  57. package/dist/compat.d.ts +3 -3
  58. package/dist/compat.d.ts.map +1 -1
  59. package/dist/compat.js +9 -6
  60. package/dist/compat.js.map +1 -1
  61. package/dist/env-api-keys.d.ts +2 -0
  62. package/dist/env-api-keys.d.ts.map +1 -1
  63. package/dist/env-api-keys.js +59 -43
  64. package/dist/env-api-keys.js.map +1 -1
  65. package/dist/image-models.generated.d.ts +30 -0
  66. package/dist/image-models.generated.d.ts.map +1 -1
  67. package/dist/image-models.generated.js +34 -4
  68. package/dist/image-models.generated.js.map +1 -1
  69. package/dist/index.d.ts +3 -1
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +3 -1
  72. package/dist/index.js.map +1 -1
  73. package/dist/models.d.ts +5 -4
  74. package/dist/models.d.ts.map +1 -1
  75. package/dist/models.generated.d.ts +2 -0
  76. package/dist/models.generated.d.ts.map +1 -1
  77. package/dist/models.generated.js +2 -0
  78. package/dist/models.generated.js.map +1 -1
  79. package/dist/models.js +6 -3
  80. package/dist/models.js.map +1 -1
  81. package/dist/providers/amazon-bedrock.models.d.ts +1 -2
  82. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
  83. package/dist/providers/amazon-bedrock.models.js.map +1 -1
  84. package/dist/providers/ant-ling.models.d.ts +1 -2
  85. package/dist/providers/ant-ling.models.d.ts.map +1 -1
  86. package/dist/providers/ant-ling.models.js.map +1 -1
  87. package/dist/providers/anthropic.models.d.ts +1 -2
  88. package/dist/providers/anthropic.models.d.ts.map +1 -1
  89. package/dist/providers/anthropic.models.js.map +1 -1
  90. package/dist/providers/azure-openai-responses.models.d.ts +1 -2
  91. package/dist/providers/azure-openai-responses.models.d.ts.map +1 -1
  92. package/dist/providers/azure-openai-responses.models.js.map +1 -1
  93. package/dist/providers/baseten.models.d.ts +1 -2
  94. package/dist/providers/baseten.models.d.ts.map +1 -1
  95. package/dist/providers/baseten.models.js.map +1 -1
  96. package/dist/providers/cerebras.models.d.ts +1 -2
  97. package/dist/providers/cerebras.models.d.ts.map +1 -1
  98. package/dist/providers/cerebras.models.js.map +1 -1
  99. package/dist/providers/cloudflare-ai-gateway.models.d.ts +1 -2
  100. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -1
  101. package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -1
  102. package/dist/providers/cloudflare-workers-ai.models.d.ts +1 -2
  103. package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -1
  104. package/dist/providers/cloudflare-workers-ai.models.js.map +1 -1
  105. package/dist/providers/data/.manifest.json +1 -1
  106. package/dist/providers/data/amazon-bedrock.json +1 -1
  107. package/dist/providers/data/anthropic.json +1 -1
  108. package/dist/providers/data/baseten.json +1 -1
  109. package/dist/providers/data/cerebras.json +1 -1
  110. package/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  111. package/dist/providers/data/deepseek.json +1 -1
  112. package/dist/providers/data/fireworks.json +1 -1
  113. package/dist/providers/data/github-copilot.json +1 -1
  114. package/dist/providers/data/google-vertex.json +1 -1
  115. package/dist/providers/data/google.json +1 -1
  116. package/dist/providers/data/mistral.json +1 -1
  117. package/dist/providers/data/moonshotai-cn.json +1 -1
  118. package/dist/providers/data/moonshotai.json +1 -1
  119. package/dist/providers/data/nvidia.json +1 -1
  120. package/dist/providers/data/openai-codex.json +1 -1
  121. package/dist/providers/data/openai.json +1 -1
  122. package/dist/providers/data/opencode-go.json +1 -1
  123. package/dist/providers/data/opencode.json +1 -1
  124. package/dist/providers/data/openrouter.json +1 -1
  125. package/dist/providers/data/qwen-token-plan-cn.json +1 -1
  126. package/dist/providers/data/qwen-token-plan.json +1 -1
  127. package/dist/providers/data/radius.json +1 -0
  128. package/dist/providers/data/vercel-ai-gateway.json +1 -1
  129. package/dist/providers/data/zai-coding-cn.json +1 -1
  130. package/dist/providers/data/zai.json +1 -1
  131. package/dist/providers/deepseek.models.d.ts +1 -2
  132. package/dist/providers/deepseek.models.d.ts.map +1 -1
  133. package/dist/providers/deepseek.models.js.map +1 -1
  134. package/dist/providers/faux.d.ts +2 -2
  135. package/dist/providers/faux.d.ts.map +1 -1
  136. package/dist/providers/faux.js +11 -11
  137. package/dist/providers/faux.js.map +1 -1
  138. package/dist/providers/fireworks.models.d.ts +1 -2
  139. package/dist/providers/fireworks.models.d.ts.map +1 -1
  140. package/dist/providers/fireworks.models.js.map +1 -1
  141. package/dist/providers/github-copilot.models.d.ts +1 -2
  142. package/dist/providers/github-copilot.models.d.ts.map +1 -1
  143. package/dist/providers/github-copilot.models.js.map +1 -1
  144. package/dist/providers/google-vertex.models.d.ts +1 -2
  145. package/dist/providers/google-vertex.models.d.ts.map +1 -1
  146. package/dist/providers/google-vertex.models.js.map +1 -1
  147. package/dist/providers/google.models.d.ts +1 -2
  148. package/dist/providers/google.models.d.ts.map +1 -1
  149. package/dist/providers/google.models.js.map +1 -1
  150. package/dist/providers/groq.models.d.ts +1 -2
  151. package/dist/providers/groq.models.d.ts.map +1 -1
  152. package/dist/providers/groq.models.js.map +1 -1
  153. package/dist/providers/huggingface.models.d.ts +1 -2
  154. package/dist/providers/huggingface.models.d.ts.map +1 -1
  155. package/dist/providers/huggingface.models.js.map +1 -1
  156. package/dist/providers/kimi-coding.models.d.ts +1 -2
  157. package/dist/providers/kimi-coding.models.d.ts.map +1 -1
  158. package/dist/providers/kimi-coding.models.js.map +1 -1
  159. package/dist/providers/minimax-cn.models.d.ts +1 -2
  160. package/dist/providers/minimax-cn.models.d.ts.map +1 -1
  161. package/dist/providers/minimax-cn.models.js.map +1 -1
  162. package/dist/providers/minimax.models.d.ts +1 -2
  163. package/dist/providers/minimax.models.d.ts.map +1 -1
  164. package/dist/providers/minimax.models.js.map +1 -1
  165. package/dist/providers/mistral.models.d.ts +1 -2
  166. package/dist/providers/mistral.models.d.ts.map +1 -1
  167. package/dist/providers/mistral.models.js.map +1 -1
  168. package/dist/providers/moonshotai-cn.models.d.ts +1 -2
  169. package/dist/providers/moonshotai-cn.models.d.ts.map +1 -1
  170. package/dist/providers/moonshotai-cn.models.js.map +1 -1
  171. package/dist/providers/moonshotai.models.d.ts +1 -2
  172. package/dist/providers/moonshotai.models.d.ts.map +1 -1
  173. package/dist/providers/moonshotai.models.js.map +1 -1
  174. package/dist/providers/nvidia.models.d.ts +1 -2
  175. package/dist/providers/nvidia.models.d.ts.map +1 -1
  176. package/dist/providers/nvidia.models.js.map +1 -1
  177. package/dist/providers/openai-codex.models.d.ts +1 -2
  178. package/dist/providers/openai-codex.models.d.ts.map +1 -1
  179. package/dist/providers/openai-codex.models.js.map +1 -1
  180. package/dist/providers/openai.models.d.ts +1 -2
  181. package/dist/providers/openai.models.d.ts.map +1 -1
  182. package/dist/providers/openai.models.js.map +1 -1
  183. package/dist/providers/opencode-go.models.d.ts +1 -2
  184. package/dist/providers/opencode-go.models.d.ts.map +1 -1
  185. package/dist/providers/opencode-go.models.js.map +1 -1
  186. package/dist/providers/opencode.models.d.ts +1 -2
  187. package/dist/providers/opencode.models.d.ts.map +1 -1
  188. package/dist/providers/opencode.models.js.map +1 -1
  189. package/dist/providers/openrouter.models.d.ts +1 -2
  190. package/dist/providers/openrouter.models.d.ts.map +1 -1
  191. package/dist/providers/openrouter.models.js.map +1 -1
  192. package/dist/providers/qwen-token-plan-cn.models.d.ts +1 -2
  193. package/dist/providers/qwen-token-plan-cn.models.d.ts.map +1 -1
  194. package/dist/providers/qwen-token-plan-cn.models.js.map +1 -1
  195. package/dist/providers/qwen-token-plan-individual.models.d.ts +1 -2
  196. package/dist/providers/qwen-token-plan-individual.models.d.ts.map +1 -1
  197. package/dist/providers/qwen-token-plan-individual.models.js.map +1 -1
  198. package/dist/providers/qwen-token-plan.models.d.ts +1 -2
  199. package/dist/providers/qwen-token-plan.models.d.ts.map +1 -1
  200. package/dist/providers/qwen-token-plan.models.js.map +1 -1
  201. package/dist/providers/radius.d.ts.map +1 -1
  202. package/dist/providers/radius.js +19 -5
  203. package/dist/providers/radius.js.map +1 -1
  204. package/dist/providers/radius.models.d.ts +3 -0
  205. package/dist/providers/radius.models.d.ts.map +1 -0
  206. package/dist/providers/radius.models.js +6 -0
  207. package/dist/providers/radius.models.js.map +1 -0
  208. package/dist/providers/together.models.d.ts +1 -2
  209. package/dist/providers/together.models.d.ts.map +1 -1
  210. package/dist/providers/together.models.js.map +1 -1
  211. package/dist/providers/vercel-ai-gateway.models.d.ts +1 -2
  212. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
  213. package/dist/providers/vercel-ai-gateway.models.js.map +1 -1
  214. package/dist/providers/xai.models.d.ts +1 -2
  215. package/dist/providers/xai.models.d.ts.map +1 -1
  216. package/dist/providers/xai.models.js.map +1 -1
  217. package/dist/providers/xiaomi-token-plan-ams.models.d.ts +1 -2
  218. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -1
  219. package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -1
  220. package/dist/providers/xiaomi-token-plan-cn.models.d.ts +1 -2
  221. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -1
  222. package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -1
  223. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +1 -2
  224. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -1
  225. package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -1
  226. package/dist/providers/xiaomi.models.d.ts +1 -2
  227. package/dist/providers/xiaomi.models.d.ts.map +1 -1
  228. package/dist/providers/xiaomi.models.js.map +1 -1
  229. package/dist/providers/zai-coding-cn.models.d.ts +1 -2
  230. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -1
  231. package/dist/providers/zai-coding-cn.models.js.map +1 -1
  232. package/dist/providers/zai.models.d.ts +1 -2
  233. package/dist/providers/zai.models.d.ts.map +1 -1
  234. package/dist/providers/zai.models.js.map +1 -1
  235. package/dist/types.d.ts +95 -26
  236. package/dist/types.d.ts.map +1 -1
  237. package/dist/types.js.map +1 -1
  238. package/dist/utils/diagnostics.d.ts +3 -2
  239. package/dist/utils/diagnostics.d.ts.map +1 -1
  240. package/dist/utils/diagnostics.js.map +1 -1
  241. package/dist/utils/estimate.d.ts +2 -2
  242. package/dist/utils/estimate.d.ts.map +1 -1
  243. package/dist/utils/estimate.js +8 -29
  244. package/dist/utils/estimate.js.map +1 -1
  245. package/dist/utils/overflow.d.ts +1 -0
  246. package/dist/utils/overflow.d.ts.map +1 -1
  247. package/dist/utils/overflow.js +17 -5
  248. package/dist/utils/overflow.js.map +1 -1
  249. package/dist/utils/retry.d.ts.map +1 -1
  250. package/dist/utils/retry.js +2 -0
  251. package/dist/utils/retry.js.map +1 -1
  252. package/dist/utils/text.d.ts +9 -1
  253. package/dist/utils/text.d.ts.map +1 -1
  254. package/dist/utils/text.js +26 -0
  255. package/dist/utils/text.js.map +1 -1
  256. package/dist/utils/transcript.d.ts +84 -0
  257. package/dist/utils/transcript.d.ts.map +1 -0
  258. package/dist/utils/transcript.js +204 -0
  259. package/dist/utils/transcript.js.map +1 -0
  260. package/package.json +3 -3
  261. package/dist/utils/deferred-tools.d.ts +0 -9
  262. package/dist/utils/deferred-tools.d.ts.map +0 -1
  263. package/dist/utils/deferred-tools.js +0 -36
  264. package/dist/utils/deferred-tools.js.map +0 -1
@@ -1,4 +1,3 @@
1
- import values from "./data/together.json";
2
1
  import { type ModelCatalog } from "../model-catalog.ts";
3
- export declare const TOGETHER_MODELS: ModelCatalog<typeof values, "together">;
2
+ export declare const TOGETHER_MODELS: ModelCatalog<typeof import("./data/together.json", { with: { type: "json" } }), "together">;
4
3
  //# sourceMappingURL=together.models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"together.models.d.ts","sourceRoot":"","sources":["../../src/providers/together.models.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,sBAAsB,CAAuB;AAChE,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,UAAU,CAC5B,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/together.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const TOGETHER_MODELS: ModelCatalog<typeof values, \"together\"> =\n\tflattenModelCatalog(\"together\", values);\n"]}
1
+ {"version":3,"file":"together.models.d.ts","sourceRoot":"","sources":["../../src/providers/together.models.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,cAAc,sBAAsB,EAAU,UAAE,IAAI,EAAE,MAAM,IAAE,CAAG,EAAE,UAAU,CAChF,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/together.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const TOGETHER_MODELS: ModelCatalog<typeof import(\"./data/together.json\", { with: { type: \"json\" } }), \"together\"> =\n\tflattenModelCatalog(\"together\", values);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"together.models.js","sourceRoot":"","sources":["../../src/providers/together.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,sBAAsB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,eAAe,GAC3B,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/together.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const TOGETHER_MODELS: ModelCatalog<typeof values, \"together\"> =\n\tflattenModelCatalog(\"together\", values);\n"]}
1
+ {"version":3,"file":"together.models.js","sourceRoot":"","sources":["../../src/providers/together.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,sBAAsB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,eAAe,GAC3B,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/together.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const TOGETHER_MODELS: ModelCatalog<typeof import(\"./data/together.json\", { with: { type: \"json\" } }), \"together\"> =\n\tflattenModelCatalog(\"together\", values);\n"]}
@@ -1,4 +1,3 @@
1
- import values from "./data/vercel-ai-gateway.json";
2
1
  import { type ModelCatalog } from "../model-catalog.ts";
3
- export declare const VERCEL_AI_GATEWAY_MODELS: ModelCatalog<typeof values, "vercel-ai-gateway">;
2
+ export declare const VERCEL_AI_GATEWAY_MODELS: ModelCatalog<typeof import("./data/vercel-ai-gateway.json", { with: { type: "json" } }), "vercel-ai-gateway">;
4
3
  //# sourceMappingURL=vercel-ai-gateway.models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vercel-ai-gateway.models.d.ts","sourceRoot":"","sources":["../../src/providers/vercel-ai-gateway.models.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,+BAA+B,CAAuB;AACzE,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,mBAAmB,CACrC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/vercel-ai-gateway.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const VERCEL_AI_GATEWAY_MODELS: ModelCatalog<typeof values, \"vercel-ai-gateway\"> =\n\tflattenModelCatalog(\"vercel-ai-gateway\", values);\n"]}
1
+ {"version":3,"file":"vercel-ai-gateway.models.d.ts","sourceRoot":"","sources":["../../src/providers/vercel-ai-gateway.models.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,cAAc,+BAA+B,EAAU,UAAE,IAAI,EAAE,MAAM,IAAE,CAAG,EAAE,mBAAmB,CAClG,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/vercel-ai-gateway.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const VERCEL_AI_GATEWAY_MODELS: ModelCatalog<typeof import(\"./data/vercel-ai-gateway.json\", { with: { type: \"json\" } }), \"vercel-ai-gateway\"> =\n\tflattenModelCatalog(\"vercel-ai-gateway\", values);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"vercel-ai-gateway.models.js","sourceRoot":"","sources":["../../src/providers/vercel-ai-gateway.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,+BAA+B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,wBAAwB,GACpC,mBAAmB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/vercel-ai-gateway.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const VERCEL_AI_GATEWAY_MODELS: ModelCatalog<typeof values, \"vercel-ai-gateway\"> =\n\tflattenModelCatalog(\"vercel-ai-gateway\", values);\n"]}
1
+ {"version":3,"file":"vercel-ai-gateway.models.js","sourceRoot":"","sources":["../../src/providers/vercel-ai-gateway.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,+BAA+B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,wBAAwB,GACpC,mBAAmB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/vercel-ai-gateway.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const VERCEL_AI_GATEWAY_MODELS: ModelCatalog<typeof import(\"./data/vercel-ai-gateway.json\", { with: { type: \"json\" } }), \"vercel-ai-gateway\"> =\n\tflattenModelCatalog(\"vercel-ai-gateway\", values);\n"]}
@@ -1,4 +1,3 @@
1
- import values from "./data/xai.json";
2
1
  import { type ModelCatalog } from "../model-catalog.ts";
3
- export declare const XAI_MODELS: ModelCatalog<typeof values, "xai">;
2
+ export declare const XAI_MODELS: ModelCatalog<typeof import("./data/xai.json", { with: { type: "json" } }), "xai">;
4
3
  //# sourceMappingURL=xai.models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xai.models.d.ts","sourceRoot":"","sources":["../../src/providers/xai.models.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,iBAAiB,CAAuB;AAC3D,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,KAAK,CACvB,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xai.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XAI_MODELS: ModelCatalog<typeof values, \"xai\"> =\n\tflattenModelCatalog(\"xai\", values);\n"]}
1
+ {"version":3,"file":"xai.models.d.ts","sourceRoot":"","sources":["../../src/providers/xai.models.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,cAAc,iBAAiB,EAAU,UAAE,IAAI,EAAE,MAAM,IAAE,CAAG,EAAE,KAAK,CACtE,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xai.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XAI_MODELS: ModelCatalog<typeof import(\"./data/xai.json\", { with: { type: \"json\" } }), \"xai\"> =\n\tflattenModelCatalog(\"xai\", values);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"xai.models.js","sourceRoot":"","sources":["../../src/providers/xai.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,UAAU,GACtB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xai.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XAI_MODELS: ModelCatalog<typeof values, \"xai\"> =\n\tflattenModelCatalog(\"xai\", values);\n"]}
1
+ {"version":3,"file":"xai.models.js","sourceRoot":"","sources":["../../src/providers/xai.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,UAAU,GACtB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xai.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XAI_MODELS: ModelCatalog<typeof import(\"./data/xai.json\", { with: { type: \"json\" } }), \"xai\"> =\n\tflattenModelCatalog(\"xai\", values);\n"]}
@@ -1,4 +1,3 @@
1
- import values from "./data/xiaomi-token-plan-ams.json";
2
1
  import { type ModelCatalog } from "../model-catalog.ts";
3
- export declare const XIAOMI_TOKEN_PLAN_AMS_MODELS: ModelCatalog<typeof values, "xiaomi-token-plan-ams">;
2
+ export declare const XIAOMI_TOKEN_PLAN_AMS_MODELS: ModelCatalog<typeof import("./data/xiaomi-token-plan-ams.json", { with: { type: "json" } }), "xiaomi-token-plan-ams">;
4
3
  //# sourceMappingURL=xiaomi-token-plan-ams.models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xiaomi-token-plan-ams.models.d.ts","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-ams.models.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,mCAAmC,CAAuB;AAC7E,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,4BAA4B,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,uBAAuB,CACzC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-ams.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_AMS_MODELS: ModelCatalog<typeof values, \"xiaomi-token-plan-ams\"> =\n\tflattenModelCatalog(\"xiaomi-token-plan-ams\", values);\n"]}
1
+ {"version":3,"file":"xiaomi-token-plan-ams.models.d.ts","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-ams.models.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,4BAA4B,EAAE,YAAY,CAAC,cAAc,mCAAmC,EAAU,UAAE,IAAI,EAAE,MAAM,IAAE,CAAG,EAAE,uBAAuB,CAC1G,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-ams.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_AMS_MODELS: ModelCatalog<typeof import(\"./data/xiaomi-token-plan-ams.json\", { with: { type: \"json\" } }), \"xiaomi-token-plan-ams\"> =\n\tflattenModelCatalog(\"xiaomi-token-plan-ams\", values);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"xiaomi-token-plan-ams.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-ams.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,mCAAmC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,4BAA4B,GACxC,mBAAmB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-ams.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_AMS_MODELS: ModelCatalog<typeof values, \"xiaomi-token-plan-ams\"> =\n\tflattenModelCatalog(\"xiaomi-token-plan-ams\", values);\n"]}
1
+ {"version":3,"file":"xiaomi-token-plan-ams.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-ams.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,mCAAmC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,4BAA4B,GACxC,mBAAmB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-ams.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_AMS_MODELS: ModelCatalog<typeof import(\"./data/xiaomi-token-plan-ams.json\", { with: { type: \"json\" } }), \"xiaomi-token-plan-ams\"> =\n\tflattenModelCatalog(\"xiaomi-token-plan-ams\", values);\n"]}
@@ -1,4 +1,3 @@
1
- import values from "./data/xiaomi-token-plan-cn.json";
2
1
  import { type ModelCatalog } from "../model-catalog.ts";
3
- export declare const XIAOMI_TOKEN_PLAN_CN_MODELS: ModelCatalog<typeof values, "xiaomi-token-plan-cn">;
2
+ export declare const XIAOMI_TOKEN_PLAN_CN_MODELS: ModelCatalog<typeof import("./data/xiaomi-token-plan-cn.json", { with: { type: "json" } }), "xiaomi-token-plan-cn">;
4
3
  //# sourceMappingURL=xiaomi-token-plan-cn.models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xiaomi-token-plan-cn.models.d.ts","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-cn.models.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,kCAAkC,CAAuB;AAC5E,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,2BAA2B,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,sBAAsB,CACxC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-cn.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_CN_MODELS: ModelCatalog<typeof values, \"xiaomi-token-plan-cn\"> =\n\tflattenModelCatalog(\"xiaomi-token-plan-cn\", values);\n"]}
1
+ {"version":3,"file":"xiaomi-token-plan-cn.models.d.ts","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-cn.models.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,2BAA2B,EAAE,YAAY,CAAC,cAAc,kCAAkC,EAAU,UAAE,IAAI,EAAE,MAAM,IAAE,CAAG,EAAE,sBAAsB,CACxG,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-cn.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_CN_MODELS: ModelCatalog<typeof import(\"./data/xiaomi-token-plan-cn.json\", { with: { type: \"json\" } }), \"xiaomi-token-plan-cn\"> =\n\tflattenModelCatalog(\"xiaomi-token-plan-cn\", values);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"xiaomi-token-plan-cn.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-cn.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,kCAAkC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,2BAA2B,GACvC,mBAAmB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-cn.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_CN_MODELS: ModelCatalog<typeof values, \"xiaomi-token-plan-cn\"> =\n\tflattenModelCatalog(\"xiaomi-token-plan-cn\", values);\n"]}
1
+ {"version":3,"file":"xiaomi-token-plan-cn.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-cn.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,kCAAkC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,2BAA2B,GACvC,mBAAmB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-cn.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_CN_MODELS: ModelCatalog<typeof import(\"./data/xiaomi-token-plan-cn.json\", { with: { type: \"json\" } }), \"xiaomi-token-plan-cn\"> =\n\tflattenModelCatalog(\"xiaomi-token-plan-cn\", values);\n"]}
@@ -1,4 +1,3 @@
1
- import values from "./data/xiaomi-token-plan-sgp.json";
2
1
  import { type ModelCatalog } from "../model-catalog.ts";
3
- export declare const XIAOMI_TOKEN_PLAN_SGP_MODELS: ModelCatalog<typeof values, "xiaomi-token-plan-sgp">;
2
+ export declare const XIAOMI_TOKEN_PLAN_SGP_MODELS: ModelCatalog<typeof import("./data/xiaomi-token-plan-sgp.json", { with: { type: "json" } }), "xiaomi-token-plan-sgp">;
4
3
  //# sourceMappingURL=xiaomi-token-plan-sgp.models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xiaomi-token-plan-sgp.models.d.ts","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-sgp.models.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,mCAAmC,CAAuB;AAC7E,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,4BAA4B,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,uBAAuB,CACzC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-sgp.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_SGP_MODELS: ModelCatalog<typeof values, \"xiaomi-token-plan-sgp\"> =\n\tflattenModelCatalog(\"xiaomi-token-plan-sgp\", values);\n"]}
1
+ {"version":3,"file":"xiaomi-token-plan-sgp.models.d.ts","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-sgp.models.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,4BAA4B,EAAE,YAAY,CAAC,cAAc,mCAAmC,EAAU,UAAE,IAAI,EAAE,MAAM,IAAE,CAAG,EAAE,uBAAuB,CAC1G,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-sgp.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_SGP_MODELS: ModelCatalog<typeof import(\"./data/xiaomi-token-plan-sgp.json\", { with: { type: \"json\" } }), \"xiaomi-token-plan-sgp\"> =\n\tflattenModelCatalog(\"xiaomi-token-plan-sgp\", values);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"xiaomi-token-plan-sgp.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-sgp.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,mCAAmC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,4BAA4B,GACxC,mBAAmB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-sgp.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_SGP_MODELS: ModelCatalog<typeof values, \"xiaomi-token-plan-sgp\"> =\n\tflattenModelCatalog(\"xiaomi-token-plan-sgp\", values);\n"]}
1
+ {"version":3,"file":"xiaomi-token-plan-sgp.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi-token-plan-sgp.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,mCAAmC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,4BAA4B,GACxC,mBAAmB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi-token-plan-sgp.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_TOKEN_PLAN_SGP_MODELS: ModelCatalog<typeof import(\"./data/xiaomi-token-plan-sgp.json\", { with: { type: \"json\" } }), \"xiaomi-token-plan-sgp\"> =\n\tflattenModelCatalog(\"xiaomi-token-plan-sgp\", values);\n"]}
@@ -1,4 +1,3 @@
1
- import values from "./data/xiaomi.json";
2
1
  import { type ModelCatalog } from "../model-catalog.ts";
3
- export declare const XIAOMI_MODELS: ModelCatalog<typeof values, "xiaomi">;
2
+ export declare const XIAOMI_MODELS: ModelCatalog<typeof import("./data/xiaomi.json", { with: { type: "json" } }), "xiaomi">;
4
3
  //# sourceMappingURL=xiaomi.models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xiaomi.models.d.ts","sourceRoot":"","sources":["../../src/providers/xiaomi.models.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,oBAAoB,CAAuB;AAC9D,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,QAAQ,CAC1B,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_MODELS: ModelCatalog<typeof values, \"xiaomi\"> =\n\tflattenModelCatalog(\"xiaomi\", values);\n"]}
1
+ {"version":3,"file":"xiaomi.models.d.ts","sourceRoot":"","sources":["../../src/providers/xiaomi.models.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,cAAc,oBAAoB,EAAU,UAAE,IAAI,EAAE,MAAM,IAAE,CAAG,EAAE,QAAQ,CAC5E,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_MODELS: ModelCatalog<typeof import(\"./data/xiaomi.json\", { with: { type: \"json\" } }), \"xiaomi\"> =\n\tflattenModelCatalog(\"xiaomi\", values);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"xiaomi.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,aAAa,GACzB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_MODELS: ModelCatalog<typeof values, \"xiaomi\"> =\n\tflattenModelCatalog(\"xiaomi\", values);\n"]}
1
+ {"version":3,"file":"xiaomi.models.js","sourceRoot":"","sources":["../../src/providers/xiaomi.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,aAAa,GACzB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/xiaomi.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const XIAOMI_MODELS: ModelCatalog<typeof import(\"./data/xiaomi.json\", { with: { type: \"json\" } }), \"xiaomi\"> =\n\tflattenModelCatalog(\"xiaomi\", values);\n"]}
@@ -1,4 +1,3 @@
1
- import values from "./data/zai-coding-cn.json";
2
1
  import { type ModelCatalog } from "../model-catalog.ts";
3
- export declare const ZAI_CODING_CN_MODELS: ModelCatalog<typeof values, "zai-coding-cn">;
2
+ export declare const ZAI_CODING_CN_MODELS: ModelCatalog<typeof import("./data/zai-coding-cn.json", { with: { type: "json" } }), "zai-coding-cn">;
4
3
  //# sourceMappingURL=zai-coding-cn.models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"zai-coding-cn.models.d.ts","sourceRoot":"","sources":["../../src/providers/zai-coding-cn.models.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,2BAA2B,CAAuB;AACrE,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,oBAAoB,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,eAAe,CACjC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/zai-coding-cn.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const ZAI_CODING_CN_MODELS: ModelCatalog<typeof values, \"zai-coding-cn\"> =\n\tflattenModelCatalog(\"zai-coding-cn\", values);\n"]}
1
+ {"version":3,"file":"zai-coding-cn.models.d.ts","sourceRoot":"","sources":["../../src/providers/zai-coding-cn.models.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,oBAAoB,EAAE,YAAY,CAAC,cAAc,2BAA2B,EAAU,UAAE,IAAI,EAAE,MAAM,IAAE,CAAG,EAAE,eAAe,CAC1F,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/zai-coding-cn.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const ZAI_CODING_CN_MODELS: ModelCatalog<typeof import(\"./data/zai-coding-cn.json\", { with: { type: \"json\" } }), \"zai-coding-cn\"> =\n\tflattenModelCatalog(\"zai-coding-cn\", values);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"zai-coding-cn.models.js","sourceRoot":"","sources":["../../src/providers/zai-coding-cn.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,2BAA2B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,oBAAoB,GAChC,mBAAmB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/zai-coding-cn.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const ZAI_CODING_CN_MODELS: ModelCatalog<typeof values, \"zai-coding-cn\"> =\n\tflattenModelCatalog(\"zai-coding-cn\", values);\n"]}
1
+ {"version":3,"file":"zai-coding-cn.models.js","sourceRoot":"","sources":["../../src/providers/zai-coding-cn.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,2BAA2B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,oBAAoB,GAChC,mBAAmB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/zai-coding-cn.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const ZAI_CODING_CN_MODELS: ModelCatalog<typeof import(\"./data/zai-coding-cn.json\", { with: { type: \"json\" } }), \"zai-coding-cn\"> =\n\tflattenModelCatalog(\"zai-coding-cn\", values);\n"]}
@@ -1,4 +1,3 @@
1
- import values from "./data/zai.json";
2
1
  import { type ModelCatalog } from "../model-catalog.ts";
3
- export declare const ZAI_MODELS: ModelCatalog<typeof values, "zai">;
2
+ export declare const ZAI_MODELS: ModelCatalog<typeof import("./data/zai.json", { with: { type: "json" } }), "zai">;
4
3
  //# sourceMappingURL=zai.models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"zai.models.d.ts","sourceRoot":"","sources":["../../src/providers/zai.models.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,iBAAiB,CAAuB;AAC3D,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,KAAK,CACvB,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/zai.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const ZAI_MODELS: ModelCatalog<typeof values, \"zai\"> =\n\tflattenModelCatalog(\"zai\", values);\n"]}
1
+ {"version":3,"file":"zai.models.d.ts","sourceRoot":"","sources":["../../src/providers/zai.models.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,cAAc,iBAAiB,EAAU,UAAE,IAAI,EAAE,MAAM,IAAE,CAAG,EAAE,KAAK,CACtE,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/zai.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const ZAI_MODELS: ModelCatalog<typeof import(\"./data/zai.json\", { with: { type: \"json\" } }), \"zai\"> =\n\tflattenModelCatalog(\"zai\", values);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"zai.models.js","sourceRoot":"","sources":["../../src/providers/zai.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,UAAU,GACtB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/zai.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const ZAI_MODELS: ModelCatalog<typeof values, \"zai\"> =\n\tflattenModelCatalog(\"zai\", values);\n"]}
1
+ {"version":3,"file":"zai.models.js","sourceRoot":"","sources":["../../src/providers/zai.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,UAAU,GACtB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/zai.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const ZAI_MODELS: ModelCatalog<typeof import(\"./data/zai.json\", { with: { type: \"json\" } }), \"zai\"> =\n\tflattenModelCatalog(\"zai\", values);\n"]}
package/dist/types.d.ts CHANGED
@@ -38,6 +38,11 @@ export interface ThinkingBudgets {
38
38
  high?: number;
39
39
  }
40
40
  export type CacheRetention = "none" | "short" | "long";
41
+ /**
42
+ * Best-effort prompt cache lifetime in seconds for each retention tier a request can ask for.
43
+ * A missing tier means the lifetime is unknown; pi does not warm such caches.
44
+ */
45
+ export type ModelPromptCache = Partial<Record<Exclude<CacheRetention, "none">, number>>;
41
46
  export type Transport = "sse" | "websocket" | "websocket-cached" | "auto";
42
47
  /** Provider-scoped environment overrides. Values take precedence over process.env. */
43
48
  export type ProviderEnv = Record<string, string>;
@@ -202,8 +207,8 @@ export type ApiStreamOptions<TApi extends Api> = TApi extends keyof ApiOptionsMa
202
207
  * `Provider.stream()` via `ApiStreamOptions`.
203
208
  */
204
209
  export interface ProviderStreams {
205
- stream(model: Model<Api>, context: Context, options?: StreamOptions): AssistantMessageEventStream;
206
- streamSimple(model: Model<Api>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream;
210
+ stream(model: Model<Api>, context: TranscriptContext, options?: StreamOptions): AssistantMessageEventStream;
211
+ streamSimple(model: Model<Api>, context: TranscriptContext, options?: SimpleStreamOptions): AssistantMessageEventStream;
207
212
  fetchDeferred?(model: Model<Api>, handle: DeferredHandle, options?: DeferredFetchOptions): AssistantMessageEventStream;
208
213
  cancelDeferred?(model: Model<Api>, handle: DeferredHandle, options?: DeferredCancelOptions): Promise<void>;
209
214
  }
@@ -240,7 +245,7 @@ export interface SimpleStreamOptions extends StreamOptions {
240
245
  /** Custom token budgets for thinking levels (token-based providers only) */
241
246
  thinkingBudgets?: ThinkingBudgets;
242
247
  }
243
- export type StreamFunction<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> = (model: Model<TApi>, context: Context, options?: TOptions) => AssistantMessageEventStream;
248
+ export type StreamFunction<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> = (model: Model<TApi>, context: TranscriptContext, options?: TOptions) => AssistantMessageEventStream;
244
249
  export type ImagesFunction<TApi extends ImagesApi = ImagesApi, TOptions extends ImagesOptions = ImagesOptions> = (model: ImagesModel<TApi>, context: ImagesContext, options?: TOptions) => Promise<AssistantImages>;
245
250
  export interface TextSignatureV1 {
246
251
  v: 1;
@@ -319,7 +324,7 @@ export interface ToolCall {
319
324
  type: "toolCall";
320
325
  id: string;
321
326
  name: string;
322
- arguments: Record<string, any>;
327
+ arguments: JsonObject;
323
328
  thoughtSignature?: string;
324
329
  /** OpenAI Responses namespace for calls to dynamically loaded or namespaced tools. */
325
330
  namespace?: string;
@@ -329,7 +334,7 @@ export interface Usage {
329
334
  output: number;
330
335
  cacheRead: number;
331
336
  cacheWrite: number;
332
- /** Subset of `cacheWrite` written with 1h retention. Only Anthropic reports this split. */
337
+ /** Subset of `cacheWrite` written with 1h retention. Anthropic and Bedrock report this split. */
333
338
  cacheWrite1h?: number;
334
339
  /**
335
340
  * Reasoning/thinking tokens, when the provider reports them. This is a subset of
@@ -347,9 +352,23 @@ export interface Usage {
347
352
  };
348
353
  }
349
354
  export type StopReason = "pending" | "stop" | "length" | "toolUse" | "error" | "aborted" | "deferred";
350
- export type JsonValue = string | number | boolean | null | JsonValue[] | {
355
+ export type JsonValue = null | boolean | number | string | readonly JsonValue[] | JsonObject;
356
+ export type JsonObject = {
351
357
  [key: string]: JsonValue;
352
358
  };
359
+ type IsAny<T> = 0 extends 1 & T ? true : false;
360
+ type IsExactlyJsonValue<T> = [T] extends [JsonValue] ? ([JsonValue] extends [T] ? true : false) : false;
361
+ type IsJsonProperty<T> = IsAny<T> extends true ? false : unknown extends T ? false : [Exclude<T, undefined>] extends [never] ? true : IsJsonCompatible<Exclude<T, undefined>>;
362
+ type InvalidJsonKeys<T extends object> = {
363
+ [TKey in keyof T]-?: TKey extends string | number ? (IsJsonProperty<T[TKey]> extends true ? never : TKey) : TKey;
364
+ }[keyof T];
365
+ type IsJsonCompatible<T> = IsAny<T> extends true ? false : unknown extends T ? false : IsExactlyJsonValue<T> extends true ? true : T extends null | boolean | number | string ? true : T extends undefined ? false : T extends readonly (infer TItem)[] ? IsJsonCompatible<TItem> : T extends (...args: never[]) => unknown ? false : T extends object ? [InvalidJsonKeys<T>] extends [never] ? true : false : false;
366
+ /** The JSON representation of a typed in-memory value. Optional object properties remain optional. */
367
+ export type JsonRepresentation<T> = IsAny<T> extends true ? JsonValue : unknown extends T ? JsonValue : [T] extends [JsonValue] ? T : T extends readonly unknown[] ? {
368
+ [TKey in keyof T]: JsonRepresentation<Exclude<T[TKey], undefined>>;
369
+ } : T extends object ? {
370
+ [TKey in keyof T]: JsonRepresentation<Exclude<T[TKey], undefined>>;
371
+ } : never;
353
372
  export interface DeferredHandle {
354
373
  provider: string;
355
374
  modelId: string;
@@ -361,6 +380,33 @@ export interface DeferredHandle {
361
380
  /** Provider conversion data required to reconstruct the final assistant message. */
362
381
  data?: JsonValue;
363
382
  }
383
+ /**
384
+ * System instructions and tool declarations at one point in the transcript.
385
+ *
386
+ * The leading system message is the system prompt. Later system messages change it:
387
+ * `content` adds instructions from that point on, `sections` replace or remove named
388
+ * prompt sections, and `toolsAdded`/`toolsRemoved` change the tool set. Replaying
389
+ * every system message in order yields the current prompt and tools. Providers that
390
+ * accept system messages mid-conversation send each one in place; other providers
391
+ * rebuild the leading system message from the replayed state.
392
+ */
393
+ export interface SystemMessage {
394
+ role: "system";
395
+ /** Instruction text. On the leading message this is the base prompt; later, additional instructions. */
396
+ content: string | TextContent[];
397
+ /**
398
+ * Named, ordered prompt sections rendered verbatim after `content`. The leading message
399
+ * declares them; later messages replace sections by name, and `null` removes one. Keep
400
+ * each section self-delimiting (a tag, a heading) so the model can relate an update to
401
+ * the original. Avoid integer-like names; JSON objects reorder those.
402
+ */
403
+ sections?: Record<string, string | null>;
404
+ /** Complete definitions of tools that become available at this point. */
405
+ toolsAdded?: Tool[];
406
+ /** Tools that stop being available at this point. */
407
+ toolsRemoved?: ToolReference[];
408
+ timestamp: number;
409
+ }
364
410
  export interface UserMessage {
365
411
  role: "user";
366
412
  content: string | (TextContent | ImageContent | DocumentContent)[];
@@ -389,24 +435,18 @@ export interface AssistantMessage {
389
435
  endTurn?: boolean;
390
436
  timestamp: number;
391
437
  }
392
- export interface ToolResultMessage<TDetails = any> {
438
+ export type ToolResultMessage<TDetails = JsonValue> = IsJsonCompatible<TDetails> extends true ? {
393
439
  role: "toolResult";
394
440
  toolCallId: string;
395
441
  toolName: string;
396
442
  content: (TextContent | ImageContent)[];
397
- details?: TDetails;
443
+ details?: JsonRepresentation<TDetails>;
398
444
  /** Usage from the tool execution itself, if available. Not part of main LLM context accounting. */
399
445
  usage?: Usage;
400
- /**
401
- * Names from `Context.tools` that became available after this result.
402
- * Providers with native deferred tool loading use this as the load point;
403
- * other providers ignore it and use `Context.tools` normally.
404
- */
405
- addedToolNames?: string[];
406
446
  isError: boolean;
407
447
  timestamp: number;
408
- }
409
- export type Message = UserMessage | AssistantMessage | ToolResultMessage;
448
+ } : never;
449
+ export type Message = SystemMessage | UserMessage | AssistantMessage | ToolResultMessage;
410
450
  export type ImagesInputContent = TextContent | ImageContent;
411
451
  export type ImagesOutputContent = TextContent | ImageContent;
412
452
  export interface ImagesContext {
@@ -448,11 +488,31 @@ export interface Tool<TParameters extends TSchema = TSchema> {
448
488
  parameters: TParameters;
449
489
  constrainedSampling?: false | ConstrainedSamplingConfig;
450
490
  }
491
+ export interface ToolReference {
492
+ name: string;
493
+ }
494
+ /**
495
+ * Request input accepted by the public stream entry points (`Models.stream()`,
496
+ * `streamSimple()`, ...). `systemPrompt` and `tools` are shorthand for a leading
497
+ * system message; `normalizeContext()` folds them into one before the request
498
+ * reaches a provider.
499
+ */
451
500
  export interface Context {
452
501
  systemPrompt?: string;
453
502
  messages: Message[];
454
503
  tools?: Tool[];
455
504
  }
505
+ declare const transcriptContextBrand: unique symbol;
506
+ /**
507
+ * Normalized request context passed to providers and API implementations. The
508
+ * prompt and tool declarations are carried by the transcript's system messages.
509
+ * Only `normalizeContext()` produces this type, so a raw `Context` cannot reach
510
+ * provider code by accident.
511
+ */
512
+ export type TranscriptContext = {
513
+ messages: Message[];
514
+ readonly [transcriptContextBrand]: true;
515
+ };
456
516
  /**
457
517
  * Event protocol for AssistantMessageEventStream.
458
518
  *
@@ -586,14 +646,16 @@ export interface OpenAICompletionsCompat {
586
646
  supportsThinkingTokenBudget?: boolean;
587
647
  /** Whether the provider supports OpenAI custom tools with Lark/regex grammar formats. When false, grammar-constrained tools fall back to normal function tools. Default: false; the generated model catalog enables it for capable models. */
588
648
  supportsOpenAIGrammarTools?: boolean;
649
+ /** Whether the exact model accepts system or developer messages after the conversation has started. When false, later system messages are folded into the leading system message. Default: false; the generated model catalog enables it for verified models. */
650
+ supportsMidConvoSystemMessages?: boolean;
651
+ /** Whether system messages can introduce additional tools mid-conversation. Requires `supportsMidConvoSystemMessages`. Default: false; the generated model catalog enables it for capable models. */
652
+ supportsMidConvoToolAdditions?: boolean;
589
653
  /** Whether the provider supports the `strict` field in tool definitions. Default: true. */
590
654
  supportsStrictMode?: boolean;
591
655
  /** Cache control convention for prompt caching. "anthropic" applies Anthropic-style `cache_control` markers to the system prompt, last tool definition, and last user, assistant, or tool-result text content. */
592
656
  cacheControlFormat?: "anthropic";
593
657
  /** Whether to send session-affinity data from `options.sessionId`. Default: true for OpenRouter endpoints, false otherwise. */
594
658
  sendSessionAffinityHeaders?: boolean;
595
- /** Provider-specific deferred tool serialization mode. */
596
- deferredToolsMode?: "kimi";
597
659
  /** Session-affinity header format: `openai` sends `session_id`, `x-client-request-id`, and `x-session-affinity`; `openai-nosession` sends `x-client-request-id` and `x-session-affinity`; `openrouter` sends `x-session-id`. Does not affect the `prompt_cache_key` body param, which is governed by cache retention. Default: auto-detected. */
598
660
  sessionAffinityFormat?: SessionAffinityFormat;
599
661
  /** Whether the provider supports long prompt cache retention (`prompt_cache_retention: "24h"` or Anthropic-style `cache_control.ttl: "1h"`, depending on format). Default: true. */
@@ -610,6 +672,8 @@ export interface OpenAICompletionsCompat {
610
672
  export interface OpenAIResponsesCompat {
611
673
  /** Whether the provider supports the `developer` role (vs `system`). Default: true. */
612
674
  supportsDeveloperRole?: boolean;
675
+ /** Whether the exact model accepts developer or system messages after the conversation has started. When false, later system messages are folded into the leading system message. Default: false; the generated model catalog enables it for verified models. */
676
+ supportsMidConvoSystemMessages?: boolean;
613
677
  /** Session-affinity header format: `openai` sends `session_id` and `x-client-request-id`; `openai-nosession` sends `x-client-request-id`; `openrouter` sends `x-session-id`. Does not affect the `prompt_cache_key` body param, which is governed by cache retention. Default: auto-detected. */
614
678
  sessionAffinityFormat?: SessionAffinityFormat;
615
679
  /** Whether the provider supports long prompt cache retention. This uses `prompt_cache_options.ttl: "30m"` on GPT-5.6+ and `prompt_cache_retention: "24h"` on earlier models. Default: true. */
@@ -620,7 +684,7 @@ export interface OpenAIResponsesCompat {
620
684
  supportsOpenAIGrammarTools?: boolean;
621
685
  /** Whether the model supports message-anchored `additional_tools` input items. Default: false. */
622
686
  supportsAdditionalTools?: boolean;
623
- /** Whether the model supports client-executed tool search for deferred tools. Default: false. */
687
+ /** Whether the model supports client-executed tool search for transcript-anchored additions. Default: false. */
624
688
  supportsToolSearch?: boolean;
625
689
  /** Whether the model accepts `prompt_cache_options` (OpenAI GPT-5.6+ prompt caching). Older OpenAI models reject the parameter. Default: false. */
626
690
  supportsExplicitPromptCacheMode?: boolean;
@@ -679,6 +743,10 @@ export interface AnthropicMessagesCompat {
679
743
  supportsStrictTools?: boolean;
680
744
  /** Whether the exact model transport supports effort-only system messages and thinking binding controls. Default: false. */
681
745
  supportsMidConvoEffort?: boolean;
746
+ /** Whether the exact model accepts system-role messages inside the conversation. When false, later system messages are folded into the top-level system prompt. Default: false. */
747
+ supportsMidConvoSystemMessages?: boolean;
748
+ /** Whether the exact model accepts mid-conversation `tool_addition` and `tool_removal` blocks. Requires `supportsMidConvoSystemMessages`. Default: false. */
749
+ supportsMidConvoToolChanges?: boolean;
682
750
  /**
683
751
  * Models Anthropic accepts in `fallbacks` for server-side refusal fallback,
684
752
  * with local pricing metadata for returned fallback responses. When absent or
@@ -686,12 +754,6 @@ export interface AnthropicMessagesCompat {
686
754
  * with no permitted fallback targets.
687
755
  */
688
756
  allowedFallbackModels?: AnthropicAllowedFallbackModel[];
689
- /**
690
- * Whether the provider supports deferred tools loaded by `tool_reference`
691
- * blocks in tool results. Default: true for first-party Anthropic models
692
- * except Haiku and models older than Claude 4.5; false for other providers.
693
- */
694
- supportsToolReferences?: boolean;
695
757
  /**
696
758
  * Whether the model runs Anthropic's preserved-thinking *conversation* check, which
697
759
  * rejects a request whose `system` prompt, `tools`, or earlier messages changed since a
@@ -746,6 +808,11 @@ export interface BedrockCompat {
746
808
  */
747
809
  supportsTemperature?: boolean;
748
810
  }
811
+ /** Compatibility settings for the Mistral chat API. */
812
+ export interface MistralConversationsCompat {
813
+ /** Whether the exact model accepts system messages after the conversation has started. When false, later system messages are folded into the leading system message. Default: false. */
814
+ supportsMidConvoSystemMessages?: boolean;
815
+ }
749
816
  /**
750
817
  * OpenRouter provider routing preferences.
751
818
  * Controls which upstream providers OpenRouter routes requests to.
@@ -873,6 +940,8 @@ export interface Model<TApi extends Api> {
873
940
  */
874
941
  input: ("text" | "image" | "pdf")[];
875
942
  cost: ModelCost;
943
+ /** Prompt cache lifetimes per retention tier. Unset when the provider's cache behavior is unknown. */
944
+ promptCache?: ModelPromptCache;
876
945
  contextWindow: number;
877
946
  maxTokens: number;
878
947
  /** Default sampling parameters for this model. See {@link StreamOptions.samplingParams}; per-request keys override these. */
@@ -884,7 +953,7 @@ export interface Model<TApi extends Api> {
884
953
  */
885
954
  fastRoute?: ModelFastRoute;
886
955
  /** Compatibility overrides for OpenAI-compatible APIs. If not set, auto-detected from baseUrl. */
887
- compat?: TApi extends "openai-completions" ? OpenAICompletionsCompat : TApi extends "openai-responses" | "azure-openai-responses" | "openai-codex-responses" ? OpenAIResponsesCompat : TApi extends "anthropic-messages" ? AnthropicMessagesCompat : TApi extends "bedrock-converse-stream" ? BedrockCompat : never;
956
+ compat?: TApi extends "openai-completions" ? OpenAICompletionsCompat : TApi extends "openai-responses" | "azure-openai-responses" | "openai-codex-responses" ? OpenAIResponsesCompat : TApi extends "anthropic-messages" ? AnthropicMessagesCompat : TApi extends "bedrock-converse-stream" ? BedrockCompat : TApi extends "mistral-conversations" ? MistralConversationsCompat : never;
888
957
  }
889
958
  export interface ImagesModel<TApi extends ImagesApi> extends Omit<Model<Api>, "api" | "provider" | "reasoning" | "contextWindow" | "maxTokens" | "compat"> {
890
959
  api: TApi;