@draht/ai 2026.7.30 → 2026.10.4-2

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 (604) hide show
  1. package/dist/api/anthropic-messages.d.ts.map +1 -1
  2. package/dist/api/anthropic-messages.js +404 -142
  3. package/dist/api/anthropic-messages.js.map +1 -1
  4. package/dist/api/azure-openai-responses.d.ts +2 -0
  5. package/dist/api/azure-openai-responses.d.ts.map +1 -1
  6. package/dist/api/azure-openai-responses.js +34 -10
  7. package/dist/api/azure-openai-responses.js.map +1 -1
  8. package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  9. package/dist/api/bedrock-converse-stream.js +210 -24
  10. package/dist/api/bedrock-converse-stream.js.map +1 -1
  11. package/dist/api/cloudflare-ai-binding.d.ts +77 -0
  12. package/dist/api/cloudflare-ai-binding.d.ts.map +1 -0
  13. package/dist/api/cloudflare-ai-binding.js +72 -0
  14. package/dist/api/cloudflare-ai-binding.js.map +1 -0
  15. package/dist/api/cloudflare-workers-ai-system-one.d.ts +4 -0
  16. package/dist/api/cloudflare-workers-ai-system-one.d.ts.map +1 -0
  17. package/dist/api/cloudflare-workers-ai-system-one.js +43 -0
  18. package/dist/api/cloudflare-workers-ai-system-one.js.map +1 -0
  19. package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts +3 -0
  20. package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts.map +1 -0
  21. package/dist/api/cloudflare-workers-ai-system-one.lazy.js +4 -0
  22. package/dist/api/cloudflare-workers-ai-system-one.lazy.js.map +1 -0
  23. package/dist/api/cloudflare.d.ts +2 -0
  24. package/dist/api/cloudflare.d.ts.map +1 -1
  25. package/dist/api/cloudflare.js +2 -0
  26. package/dist/api/cloudflare.js.map +1 -1
  27. package/dist/api/constrained-sampling.d.ts +10 -1
  28. package/dist/api/constrained-sampling.d.ts.map +1 -1
  29. package/dist/api/constrained-sampling.js +137 -4
  30. package/dist/api/constrained-sampling.js.map +1 -1
  31. package/dist/api/google-generative-ai.d.ts +2 -2
  32. package/dist/api/google-generative-ai.d.ts.map +1 -1
  33. package/dist/api/google-generative-ai.js +39 -82
  34. package/dist/api/google-generative-ai.js.map +1 -1
  35. package/dist/api/google-shared.d.ts +27 -5
  36. package/dist/api/google-shared.d.ts.map +1 -1
  37. package/dist/api/google-shared.js +126 -18
  38. package/dist/api/google-shared.js.map +1 -1
  39. package/dist/api/google-vertex.d.ts +2 -2
  40. package/dist/api/google-vertex.d.ts.map +1 -1
  41. package/dist/api/google-vertex.js +42 -73
  42. package/dist/api/google-vertex.js.map +1 -1
  43. package/dist/api/lazy.d.ts +5 -1
  44. package/dist/api/lazy.d.ts.map +1 -1
  45. package/dist/api/lazy.js +19 -7
  46. package/dist/api/lazy.js.map +1 -1
  47. package/dist/api/llama-cpp-classify.d.ts +33 -0
  48. package/dist/api/llama-cpp-classify.d.ts.map +1 -0
  49. package/dist/api/llama-cpp-classify.js +365 -0
  50. package/dist/api/llama-cpp-classify.js.map +1 -0
  51. package/dist/api/llama-cpp-classify.lazy.d.ts +3 -0
  52. package/dist/api/llama-cpp-classify.lazy.d.ts.map +1 -0
  53. package/dist/api/llama-cpp-classify.lazy.js +4 -0
  54. package/dist/api/llama-cpp-classify.lazy.js.map +1 -0
  55. package/dist/api/mistral-conversations.d.ts +2 -2
  56. package/dist/api/mistral-conversations.d.ts.map +1 -1
  57. package/dist/api/mistral-conversations.js +250 -69
  58. package/dist/api/mistral-conversations.js.map +1 -1
  59. package/dist/api/openai-codex-responses.d.ts.map +1 -1
  60. package/dist/api/openai-codex-responses.js +107 -55
  61. package/dist/api/openai-codex-responses.js.map +1 -1
  62. package/dist/api/openai-completions.d.ts +11 -4
  63. package/dist/api/openai-completions.d.ts.map +1 -1
  64. package/dist/api/openai-completions.js +241 -129
  65. package/dist/api/openai-completions.js.map +1 -1
  66. package/dist/api/openai-responses-shared.d.ts +8 -4
  67. package/dist/api/openai-responses-shared.d.ts.map +1 -1
  68. package/dist/api/openai-responses-shared.js +109 -58
  69. package/dist/api/openai-responses-shared.js.map +1 -1
  70. package/dist/api/openai-responses.d.ts.map +1 -1
  71. package/dist/api/openai-responses.js +62 -24
  72. package/dist/api/openai-responses.js.map +1 -1
  73. package/dist/api/openrouter-images.d.ts +2 -1
  74. package/dist/api/openrouter-images.d.ts.map +1 -1
  75. package/dist/api/openrouter-images.js +1 -0
  76. package/dist/api/openrouter-images.js.map +1 -1
  77. package/dist/api/openrouter-images.lazy.d.ts.map +1 -1
  78. package/dist/api/openrouter-images.lazy.js.map +1 -1
  79. package/dist/api/pi-messages.d.ts +5 -3
  80. package/dist/api/pi-messages.d.ts.map +1 -1
  81. package/dist/api/pi-messages.js +13 -4
  82. package/dist/api/pi-messages.js.map +1 -1
  83. package/dist/api/simple-options.d.ts +9 -3
  84. package/dist/api/simple-options.d.ts.map +1 -1
  85. package/dist/api/simple-options.js +22 -11
  86. package/dist/api/simple-options.js.map +1 -1
  87. package/dist/api/system-one-shared.d.ts +23 -0
  88. package/dist/api/system-one-shared.d.ts.map +1 -0
  89. package/dist/api/system-one-shared.js +183 -0
  90. package/dist/api/system-one-shared.js.map +1 -0
  91. package/dist/api/transform-messages.d.ts.map +1 -1
  92. package/dist/api/transform-messages.js +21 -7
  93. package/dist/api/transform-messages.js.map +1 -1
  94. package/dist/api/typesafe-system-one.d.ts +4 -0
  95. package/dist/api/typesafe-system-one.d.ts.map +1 -0
  96. package/dist/api/typesafe-system-one.js +19 -0
  97. package/dist/api/typesafe-system-one.js.map +1 -0
  98. package/dist/api/typesafe-system-one.lazy.d.ts +3 -0
  99. package/dist/api/typesafe-system-one.lazy.d.ts.map +1 -0
  100. package/dist/api/typesafe-system-one.lazy.js +4 -0
  101. package/dist/api/typesafe-system-one.lazy.js.map +1 -0
  102. package/dist/auth/credential-store.d.ts +6 -6
  103. package/dist/auth/credential-store.d.ts.map +1 -1
  104. package/dist/auth/credential-store.js +24 -15
  105. package/dist/auth/credential-store.js.map +1 -1
  106. package/dist/auth/helpers.d.ts +1 -0
  107. package/dist/auth/helpers.d.ts.map +1 -1
  108. package/dist/auth/helpers.js +8 -3
  109. package/dist/auth/helpers.js.map +1 -1
  110. package/dist/auth/oauth/anthropic.d.ts.map +1 -1
  111. package/dist/auth/oauth/anthropic.js +28 -131
  112. package/dist/auth/oauth/anthropic.js.map +1 -1
  113. package/dist/auth/oauth/callback-server.d.ts +55 -0
  114. package/dist/auth/oauth/callback-server.d.ts.map +1 -0
  115. package/dist/auth/oauth/callback-server.js +146 -0
  116. package/dist/auth/oauth/callback-server.js.map +1 -0
  117. package/dist/auth/oauth/device-code.d.ts +2 -1
  118. package/dist/auth/oauth/device-code.d.ts.map +1 -1
  119. package/dist/auth/oauth/device-code.js +5 -5
  120. package/dist/auth/oauth/device-code.js.map +1 -1
  121. package/dist/auth/oauth/github-copilot.d.ts.map +1 -1
  122. package/dist/auth/oauth/github-copilot.js +121 -41
  123. package/dist/auth/oauth/github-copilot.js.map +1 -1
  124. package/dist/auth/oauth/google-antigravity.d.ts +3 -3
  125. package/dist/auth/oauth/google-antigravity.d.ts.map +1 -1
  126. package/dist/auth/oauth/google-antigravity.js +17 -9
  127. package/dist/auth/oauth/google-antigravity.js.map +1 -1
  128. package/dist/auth/oauth/google-gemini-cli.d.ts +3 -3
  129. package/dist/auth/oauth/google-gemini-cli.d.ts.map +1 -1
  130. package/dist/auth/oauth/google-gemini-cli.js +18 -10
  131. package/dist/auth/oauth/google-gemini-cli.js.map +1 -1
  132. package/dist/auth/oauth/kimi-coding.d.ts.map +1 -1
  133. package/dist/auth/oauth/kimi-coding.js +5 -6
  134. package/dist/auth/oauth/kimi-coding.js.map +1 -1
  135. package/dist/auth/oauth/load.d.ts +4 -0
  136. package/dist/auth/oauth/load.d.ts.map +1 -1
  137. package/dist/auth/oauth/load.js +10 -0
  138. package/dist/auth/oauth/load.js.map +1 -1
  139. package/dist/auth/oauth/meta.d.ts +17 -0
  140. package/dist/auth/oauth/meta.d.ts.map +1 -0
  141. package/dist/auth/oauth/meta.js +190 -0
  142. package/dist/auth/oauth/meta.js.map +1 -0
  143. package/dist/auth/oauth/openai-chatgpt.d.ts +9 -0
  144. package/dist/auth/oauth/openai-chatgpt.d.ts.map +1 -0
  145. package/dist/auth/oauth/openai-chatgpt.js +266 -0
  146. package/dist/auth/oauth/openai-chatgpt.js.map +1 -0
  147. package/dist/auth/oauth/openai-codex.d.ts +1 -1
  148. package/dist/auth/oauth/openai-codex.d.ts.map +1 -1
  149. package/dist/auth/oauth/openai-codex.js +33 -130
  150. package/dist/auth/oauth/openai-codex.js.map +1 -1
  151. package/dist/auth/oauth/openrouter.d.ts +1 -1
  152. package/dist/auth/oauth/openrouter.d.ts.map +1 -1
  153. package/dist/auth/oauth/openrouter.js +26 -145
  154. package/dist/auth/oauth/openrouter.js.map +1 -1
  155. package/dist/auth/oauth/radius.d.ts +1 -1
  156. package/dist/auth/oauth/radius.d.ts.map +1 -1
  157. package/dist/auth/oauth/radius.js +28 -93
  158. package/dist/auth/oauth/radius.js.map +1 -1
  159. package/dist/auth/oauth/xai.d.ts.map +1 -1
  160. package/dist/auth/oauth/xai.js +13 -12
  161. package/dist/auth/oauth/xai.js.map +1 -1
  162. package/dist/auth/resolve.d.ts +3 -8
  163. package/dist/auth/resolve.d.ts.map +1 -1
  164. package/dist/auth/resolve.js +27 -31
  165. package/dist/auth/resolve.js.map +1 -1
  166. package/dist/auth/types.d.ts +29 -8
  167. package/dist/auth/types.d.ts.map +1 -1
  168. package/dist/auth/types.js.map +1 -1
  169. package/dist/bun-oauth.d.ts.map +1 -1
  170. package/dist/bun-oauth.js +4 -0
  171. package/dist/bun-oauth.js.map +1 -1
  172. package/dist/cli.js +4 -1
  173. package/dist/cli.js.map +1 -1
  174. package/dist/compat.d.ts +3 -3
  175. package/dist/compat.d.ts.map +1 -1
  176. package/dist/compat.js +9 -6
  177. package/dist/compat.js.map +1 -1
  178. package/dist/env-api-keys.d.ts +5 -0
  179. package/dist/env-api-keys.d.ts.map +1 -1
  180. package/dist/env-api-keys.js +9 -1
  181. package/dist/env-api-keys.js.map +1 -1
  182. package/dist/image-models.d.ts +19 -8
  183. package/dist/image-models.d.ts.map +1 -1
  184. package/dist/image-models.js +14 -13
  185. package/dist/image-models.js.map +1 -1
  186. package/dist/images-api-registry.d.ts +7 -7
  187. package/dist/images-api-registry.d.ts.map +1 -1
  188. package/dist/images-api-registry.js.map +1 -1
  189. package/dist/images.d.ts +7 -2
  190. package/dist/images.d.ts.map +1 -1
  191. package/dist/images.js +5 -0
  192. package/dist/images.js.map +1 -1
  193. package/dist/index.d.ts +4 -3
  194. package/dist/index.d.ts.map +1 -1
  195. package/dist/index.js +3 -2
  196. package/dist/index.js.map +1 -1
  197. package/dist/model-catalog.d.ts +25 -9
  198. package/dist/model-catalog.d.ts.map +1 -1
  199. package/dist/model-catalog.js +14 -2
  200. package/dist/model-catalog.js.map +1 -1
  201. package/dist/models-store.d.ts +12 -14
  202. package/dist/models-store.d.ts.map +1 -1
  203. package/dist/models-store.js +7 -6
  204. package/dist/models-store.js.map +1 -1
  205. package/dist/models.d.ts +138 -47
  206. package/dist/models.d.ts.map +1 -1
  207. package/dist/models.generated.d.ts +135 -37
  208. package/dist/models.generated.d.ts.map +1 -1
  209. package/dist/models.generated.js +135 -37
  210. package/dist/models.generated.js.map +1 -1
  211. package/dist/models.js +391 -99
  212. package/dist/models.js.map +1 -1
  213. package/dist/providers/all.d.ts +19 -13
  214. package/dist/providers/all.d.ts.map +1 -1
  215. package/dist/providers/all.js +31 -21
  216. package/dist/providers/all.js.map +1 -1
  217. package/dist/providers/amazon-bedrock.d.ts.map +1 -1
  218. package/dist/providers/amazon-bedrock.js +15 -7
  219. package/dist/providers/amazon-bedrock.js.map +1 -1
  220. package/dist/providers/amazon-bedrock.models.d.ts +4 -2
  221. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
  222. package/dist/providers/amazon-bedrock.models.js +4 -2
  223. package/dist/providers/amazon-bedrock.models.js.map +1 -1
  224. package/dist/providers/ant-ling.models.d.ts +4 -2
  225. package/dist/providers/ant-ling.models.d.ts.map +1 -1
  226. package/dist/providers/ant-ling.models.js +4 -2
  227. package/dist/providers/ant-ling.models.js.map +1 -1
  228. package/dist/providers/anthropic.d.ts.map +1 -1
  229. package/dist/providers/anthropic.js +39 -8
  230. package/dist/providers/anthropic.js.map +1 -1
  231. package/dist/providers/anthropic.models.d.ts +4 -2
  232. package/dist/providers/anthropic.models.d.ts.map +1 -1
  233. package/dist/providers/anthropic.models.js +4 -2
  234. package/dist/providers/anthropic.models.js.map +1 -1
  235. package/dist/providers/azure-openai-responses.models.d.ts +4 -2
  236. package/dist/providers/azure-openai-responses.models.d.ts.map +1 -1
  237. package/dist/providers/azure-openai-responses.models.js +4 -2
  238. package/dist/providers/azure-openai-responses.models.js.map +1 -1
  239. package/dist/providers/baseten.d.ts +3 -0
  240. package/dist/providers/baseten.d.ts.map +1 -0
  241. package/dist/providers/baseten.js +15 -0
  242. package/dist/providers/baseten.js.map +1 -0
  243. package/dist/providers/baseten.models.d.ts +6 -0
  244. package/dist/providers/baseten.models.d.ts.map +1 -0
  245. package/dist/providers/baseten.models.js +8 -0
  246. package/dist/providers/baseten.models.js.map +1 -0
  247. package/dist/providers/cerebras.models.d.ts +4 -2
  248. package/dist/providers/cerebras.models.d.ts.map +1 -1
  249. package/dist/providers/cerebras.models.js +4 -2
  250. package/dist/providers/cerebras.models.js.map +1 -1
  251. package/dist/providers/cloudflare-ai-gateway.d.ts +3 -1
  252. package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -1
  253. package/dist/providers/cloudflare-ai-gateway.js +4 -0
  254. package/dist/providers/cloudflare-ai-gateway.js.map +1 -1
  255. package/dist/providers/cloudflare-ai-gateway.models.d.ts +4 -2
  256. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -1
  257. package/dist/providers/cloudflare-ai-gateway.models.js +4 -2
  258. package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -1
  259. package/dist/providers/cloudflare-auth.d.ts.map +1 -1
  260. package/dist/providers/cloudflare-auth.js +15 -10
  261. package/dist/providers/cloudflare-auth.js.map +1 -1
  262. package/dist/providers/cloudflare-stream.d.ts +6 -2
  263. package/dist/providers/cloudflare-stream.d.ts.map +1 -1
  264. package/dist/providers/cloudflare-stream.js +6 -0
  265. package/dist/providers/cloudflare-stream.js.map +1 -1
  266. package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -1
  267. package/dist/providers/cloudflare-workers-ai.js +10 -3
  268. package/dist/providers/cloudflare-workers-ai.js.map +1 -1
  269. package/dist/providers/cloudflare-workers-ai.models.d.ts +4 -2
  270. package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -1
  271. package/dist/providers/cloudflare-workers-ai.models.js +4 -2
  272. package/dist/providers/cloudflare-workers-ai.models.js.map +1 -1
  273. package/dist/providers/data/.manifest.json +1 -1
  274. package/dist/providers/data/amazon-bedrock.json +1 -1
  275. package/dist/providers/data/ant-ling.json +1 -1
  276. package/dist/providers/data/anthropic.json +1 -1
  277. package/dist/providers/data/azure-openai-responses.json +1 -1
  278. package/dist/providers/data/baseten.json +1 -0
  279. package/dist/providers/data/cerebras.json +1 -1
  280. package/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  281. package/dist/providers/data/cloudflare-workers-ai.json +1 -1
  282. package/dist/providers/data/deepseek.json +1 -1
  283. package/dist/providers/data/fireworks.json +1 -1
  284. package/dist/providers/data/github-copilot.json +1 -1
  285. package/dist/providers/data/google-vertex.json +1 -1
  286. package/dist/providers/data/google.json +1 -1
  287. package/dist/providers/data/groq.json +1 -1
  288. package/dist/providers/data/huggingface.json +1 -1
  289. package/dist/providers/data/kimi-coding.json +1 -1
  290. package/dist/providers/data/meta.json +1 -0
  291. package/dist/providers/data/minimax-cn.json +1 -1
  292. package/dist/providers/data/minimax.json +1 -1
  293. package/dist/providers/data/mistral.json +1 -1
  294. package/dist/providers/data/moonshotai-cn.json +1 -1
  295. package/dist/providers/data/moonshotai.json +1 -1
  296. package/dist/providers/data/nvidia.json +1 -1
  297. package/dist/providers/data/openai-codex.json +1 -1
  298. package/dist/providers/data/openai.json +1 -1
  299. package/dist/providers/data/opencode-go.json +1 -1
  300. package/dist/providers/data/opencode.json +1 -1
  301. package/dist/providers/data/openrouter.json +1 -1
  302. package/dist/providers/data/qwen-token-plan-cn.json +1 -1
  303. package/dist/providers/data/qwen-token-plan-individual.json +1 -0
  304. package/dist/providers/data/qwen-token-plan.json +1 -1
  305. package/dist/providers/data/radius.json +1 -0
  306. package/dist/providers/data/together.json +1 -1
  307. package/dist/providers/data/typesafe.json +1 -0
  308. package/dist/providers/data/vercel-ai-gateway.json +1 -1
  309. package/dist/providers/data/xai.json +1 -1
  310. package/dist/providers/data/xiaomi-token-plan-ams.json +1 -1
  311. package/dist/providers/data/xiaomi-token-plan-cn.json +1 -1
  312. package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -1
  313. package/dist/providers/data/xiaomi.json +1 -1
  314. package/dist/providers/data/zai-coding-cn.json +1 -1
  315. package/dist/providers/data/zai.json +1 -1
  316. package/dist/providers/deepseek.models.d.ts +4 -2
  317. package/dist/providers/deepseek.models.d.ts.map +1 -1
  318. package/dist/providers/deepseek.models.js +4 -2
  319. package/dist/providers/deepseek.models.js.map +1 -1
  320. package/dist/providers/faux.d.ts +19 -13
  321. package/dist/providers/faux.d.ts.map +1 -1
  322. package/dist/providers/faux.js +109 -18
  323. package/dist/providers/faux.js.map +1 -1
  324. package/dist/providers/fireworks.models.d.ts +4 -2
  325. package/dist/providers/fireworks.models.d.ts.map +1 -1
  326. package/dist/providers/fireworks.models.js +4 -2
  327. package/dist/providers/fireworks.models.js.map +1 -1
  328. package/dist/providers/github-copilot.js +1 -1
  329. package/dist/providers/github-copilot.js.map +1 -1
  330. package/dist/providers/github-copilot.models.d.ts +4 -2
  331. package/dist/providers/github-copilot.models.d.ts.map +1 -1
  332. package/dist/providers/github-copilot.models.js +4 -2
  333. package/dist/providers/github-copilot.models.js.map +1 -1
  334. package/dist/providers/google-vertex.d.ts.map +1 -1
  335. package/dist/providers/google-vertex.js +15 -7
  336. package/dist/providers/google-vertex.js.map +1 -1
  337. package/dist/providers/google-vertex.models.d.ts +4 -2
  338. package/dist/providers/google-vertex.models.d.ts.map +1 -1
  339. package/dist/providers/google-vertex.models.js +4 -2
  340. package/dist/providers/google-vertex.models.js.map +1 -1
  341. package/dist/providers/google.models.d.ts +4 -2
  342. package/dist/providers/google.models.d.ts.map +1 -1
  343. package/dist/providers/google.models.js +4 -2
  344. package/dist/providers/google.models.js.map +1 -1
  345. package/dist/providers/groq.models.d.ts +4 -2
  346. package/dist/providers/groq.models.d.ts.map +1 -1
  347. package/dist/providers/groq.models.js +4 -2
  348. package/dist/providers/groq.models.js.map +1 -1
  349. package/dist/providers/huggingface.models.d.ts +4 -2
  350. package/dist/providers/huggingface.models.d.ts.map +1 -1
  351. package/dist/providers/huggingface.models.js +4 -2
  352. package/dist/providers/huggingface.models.js.map +1 -1
  353. package/dist/providers/images/register-builtins.d.ts +1 -1
  354. package/dist/providers/images/register-builtins.d.ts.map +1 -1
  355. package/dist/providers/images/register-builtins.js.map +1 -1
  356. package/dist/providers/kimi-coding.d.ts.map +1 -1
  357. package/dist/providers/kimi-coding.js +1 -0
  358. package/dist/providers/kimi-coding.js.map +1 -1
  359. package/dist/providers/kimi-coding.models.d.ts +4 -2
  360. package/dist/providers/kimi-coding.models.d.ts.map +1 -1
  361. package/dist/providers/kimi-coding.models.js +4 -2
  362. package/dist/providers/kimi-coding.models.js.map +1 -1
  363. package/dist/providers/meta.d.ts +3 -0
  364. package/dist/providers/meta.d.ts.map +1 -0
  365. package/dist/providers/meta.js +24 -0
  366. package/dist/providers/meta.js.map +1 -0
  367. package/dist/providers/meta.models.d.ts +6 -0
  368. package/dist/providers/meta.models.d.ts.map +1 -0
  369. package/dist/providers/meta.models.js +8 -0
  370. package/dist/providers/meta.models.js.map +1 -0
  371. package/dist/providers/minimax-cn.models.d.ts +4 -2
  372. package/dist/providers/minimax-cn.models.d.ts.map +1 -1
  373. package/dist/providers/minimax-cn.models.js +4 -2
  374. package/dist/providers/minimax-cn.models.js.map +1 -1
  375. package/dist/providers/minimax.models.d.ts +4 -2
  376. package/dist/providers/minimax.models.d.ts.map +1 -1
  377. package/dist/providers/minimax.models.js +4 -2
  378. package/dist/providers/minimax.models.js.map +1 -1
  379. package/dist/providers/mistral.models.d.ts +4 -2
  380. package/dist/providers/mistral.models.d.ts.map +1 -1
  381. package/dist/providers/mistral.models.js +4 -2
  382. package/dist/providers/mistral.models.js.map +1 -1
  383. package/dist/providers/moonshotai-cn.models.d.ts +4 -2
  384. package/dist/providers/moonshotai-cn.models.d.ts.map +1 -1
  385. package/dist/providers/moonshotai-cn.models.js +4 -2
  386. package/dist/providers/moonshotai-cn.models.js.map +1 -1
  387. package/dist/providers/moonshotai.models.d.ts +4 -2
  388. package/dist/providers/moonshotai.models.d.ts.map +1 -1
  389. package/dist/providers/moonshotai.models.js +4 -2
  390. package/dist/providers/moonshotai.models.js.map +1 -1
  391. package/dist/providers/nvidia.models.d.ts +4 -2
  392. package/dist/providers/nvidia.models.d.ts.map +1 -1
  393. package/dist/providers/nvidia.models.js +4 -2
  394. package/dist/providers/nvidia.models.js.map +1 -1
  395. package/dist/providers/openai-codex.d.ts.map +1 -1
  396. package/dist/providers/openai-codex.js +6 -2
  397. package/dist/providers/openai-codex.js.map +1 -1
  398. package/dist/providers/openai-codex.models.d.ts +4 -2
  399. package/dist/providers/openai-codex.models.d.ts.map +1 -1
  400. package/dist/providers/openai-codex.models.js +4 -2
  401. package/dist/providers/openai-codex.models.js.map +1 -1
  402. package/dist/providers/openai.d.ts.map +1 -1
  403. package/dist/providers/openai.js +11 -2
  404. package/dist/providers/openai.js.map +1 -1
  405. package/dist/providers/openai.models.d.ts +4 -2
  406. package/dist/providers/openai.models.d.ts.map +1 -1
  407. package/dist/providers/openai.models.js +4 -2
  408. package/dist/providers/openai.models.js.map +1 -1
  409. package/dist/providers/opencode-go.d.ts.map +1 -1
  410. package/dist/providers/opencode-go.js +4 -3
  411. package/dist/providers/opencode-go.js.map +1 -1
  412. package/dist/providers/opencode-go.models.d.ts +4 -2
  413. package/dist/providers/opencode-go.models.d.ts.map +1 -1
  414. package/dist/providers/opencode-go.models.js +4 -2
  415. package/dist/providers/opencode-go.models.js.map +1 -1
  416. package/dist/providers/opencode-headers.d.ts +4 -0
  417. package/dist/providers/opencode-headers.d.ts.map +1 -0
  418. package/dist/providers/opencode-headers.js +22 -0
  419. package/dist/providers/opencode-headers.js.map +1 -0
  420. package/dist/providers/opencode.d.ts +3 -1
  421. package/dist/providers/opencode.d.ts.map +1 -1
  422. package/dist/providers/opencode.js +10 -6
  423. package/dist/providers/opencode.js.map +1 -1
  424. package/dist/providers/opencode.models.d.ts +4 -2
  425. package/dist/providers/opencode.models.d.ts.map +1 -1
  426. package/dist/providers/opencode.models.js +4 -2
  427. package/dist/providers/opencode.models.js.map +1 -1
  428. package/dist/providers/openrouter.d.ts +1 -1
  429. package/dist/providers/openrouter.d.ts.map +1 -1
  430. package/dist/providers/openrouter.js +16 -3
  431. package/dist/providers/openrouter.js.map +1 -1
  432. package/dist/providers/openrouter.models.d.ts +4 -2
  433. package/dist/providers/openrouter.models.d.ts.map +1 -1
  434. package/dist/providers/openrouter.models.js +4 -2
  435. package/dist/providers/openrouter.models.js.map +1 -1
  436. package/dist/providers/qwen-token-plan-cn.models.d.ts +4 -2
  437. package/dist/providers/qwen-token-plan-cn.models.d.ts.map +1 -1
  438. package/dist/providers/qwen-token-plan-cn.models.js +4 -2
  439. package/dist/providers/qwen-token-plan-cn.models.js.map +1 -1
  440. package/dist/providers/qwen-token-plan-individual.d.ts +3 -0
  441. package/dist/providers/qwen-token-plan-individual.d.ts.map +1 -0
  442. package/dist/providers/qwen-token-plan-individual.js +15 -0
  443. package/dist/providers/qwen-token-plan-individual.js.map +1 -0
  444. package/dist/providers/qwen-token-plan-individual.models.d.ts +6 -0
  445. package/dist/providers/qwen-token-plan-individual.models.d.ts.map +1 -0
  446. package/dist/providers/qwen-token-plan-individual.models.js +8 -0
  447. package/dist/providers/qwen-token-plan-individual.models.js.map +1 -0
  448. package/dist/providers/qwen-token-plan.models.d.ts +4 -2
  449. package/dist/providers/qwen-token-plan.models.d.ts.map +1 -1
  450. package/dist/providers/qwen-token-plan.models.js +4 -2
  451. package/dist/providers/qwen-token-plan.models.js.map +1 -1
  452. package/dist/providers/radius.d.ts.map +1 -1
  453. package/dist/providers/radius.js +53 -29
  454. package/dist/providers/radius.js.map +1 -1
  455. package/dist/providers/radius.models.d.ts +6 -0
  456. package/dist/providers/radius.models.d.ts.map +1 -0
  457. package/dist/providers/radius.models.js +8 -0
  458. package/dist/providers/radius.models.js.map +1 -0
  459. package/dist/providers/together.models.d.ts +4 -2
  460. package/dist/providers/together.models.d.ts.map +1 -1
  461. package/dist/providers/together.models.js +4 -2
  462. package/dist/providers/together.models.js.map +1 -1
  463. package/dist/providers/typesafe.d.ts +3 -0
  464. package/dist/providers/typesafe.d.ts.map +1 -0
  465. package/dist/providers/typesafe.js +18 -0
  466. package/dist/providers/typesafe.js.map +1 -0
  467. package/dist/providers/typesafe.models.d.ts +6 -0
  468. package/dist/providers/typesafe.models.d.ts.map +1 -0
  469. package/dist/providers/typesafe.models.js +8 -0
  470. package/dist/providers/typesafe.models.js.map +1 -0
  471. package/dist/providers/vercel-ai-gateway.d.ts.map +1 -1
  472. package/dist/providers/vercel-ai-gateway.js +5 -2
  473. package/dist/providers/vercel-ai-gateway.js.map +1 -1
  474. package/dist/providers/vercel-ai-gateway.models.d.ts +4 -2
  475. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
  476. package/dist/providers/vercel-ai-gateway.models.js +4 -2
  477. package/dist/providers/vercel-ai-gateway.models.js.map +1 -1
  478. package/dist/providers/xai.d.ts +1 -1
  479. package/dist/providers/xai.d.ts.map +1 -1
  480. package/dist/providers/xai.js +2 -5
  481. package/dist/providers/xai.js.map +1 -1
  482. package/dist/providers/xai.models.d.ts +4 -2
  483. package/dist/providers/xai.models.d.ts.map +1 -1
  484. package/dist/providers/xai.models.js +4 -2
  485. package/dist/providers/xai.models.js.map +1 -1
  486. package/dist/providers/xiaomi-token-plan-ams.models.d.ts +4 -2
  487. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -1
  488. package/dist/providers/xiaomi-token-plan-ams.models.js +4 -2
  489. package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -1
  490. package/dist/providers/xiaomi-token-plan-cn.models.d.ts +4 -2
  491. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -1
  492. package/dist/providers/xiaomi-token-plan-cn.models.js +4 -2
  493. package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -1
  494. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +4 -2
  495. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -1
  496. package/dist/providers/xiaomi-token-plan-sgp.models.js +4 -2
  497. package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -1
  498. package/dist/providers/xiaomi.models.d.ts +4 -2
  499. package/dist/providers/xiaomi.models.d.ts.map +1 -1
  500. package/dist/providers/xiaomi.models.js +4 -2
  501. package/dist/providers/xiaomi.models.js.map +1 -1
  502. package/dist/providers/zai-coding-cn.models.d.ts +4 -2
  503. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -1
  504. package/dist/providers/zai-coding-cn.models.js +4 -2
  505. package/dist/providers/zai-coding-cn.models.js.map +1 -1
  506. package/dist/providers/zai.models.d.ts +4 -2
  507. package/dist/providers/zai.models.d.ts.map +1 -1
  508. package/dist/providers/zai.models.js +4 -2
  509. package/dist/providers/zai.models.js.map +1 -1
  510. package/dist/types.d.ts +411 -127
  511. package/dist/types.d.ts.map +1 -1
  512. package/dist/types.js.map +1 -1
  513. package/dist/utils/abort.d.ts +8 -0
  514. package/dist/utils/abort.d.ts.map +1 -0
  515. package/dist/utils/abort.js +49 -0
  516. package/dist/utils/abort.js.map +1 -0
  517. package/dist/utils/assistant-message-frame.d.ts +77 -0
  518. package/dist/utils/assistant-message-frame.d.ts.map +1 -0
  519. package/dist/utils/assistant-message-frame.js +425 -0
  520. package/dist/utils/assistant-message-frame.js.map +1 -0
  521. package/dist/utils/diagnostics.d.ts +3 -2
  522. package/dist/utils/diagnostics.d.ts.map +1 -1
  523. package/dist/utils/diagnostics.js.map +1 -1
  524. package/dist/utils/draht-user-agent.d.ts +2 -0
  525. package/dist/utils/draht-user-agent.d.ts.map +1 -0
  526. package/dist/utils/draht-user-agent.js +12 -0
  527. package/dist/utils/draht-user-agent.js.map +1 -0
  528. package/dist/utils/error-body.d.ts.map +1 -1
  529. package/dist/utils/error-body.js +23 -4
  530. package/dist/utils/error-body.js.map +1 -1
  531. package/dist/utils/estimate.d.ts +2 -2
  532. package/dist/utils/estimate.d.ts.map +1 -1
  533. package/dist/utils/estimate.js +8 -29
  534. package/dist/utils/estimate.js.map +1 -1
  535. package/dist/utils/event-stream.d.ts.map +1 -1
  536. package/dist/utils/event-stream.js +30 -8
  537. package/dist/utils/event-stream.js.map +1 -1
  538. package/dist/utils/headers.d.ts +1 -1
  539. package/dist/utils/headers.d.ts.map +1 -1
  540. package/dist/utils/headers.js +10 -8
  541. package/dist/utils/headers.js.map +1 -1
  542. package/dist/utils/model-operations.d.ts +11 -0
  543. package/dist/utils/model-operations.d.ts.map +1 -0
  544. package/dist/utils/model-operations.js +47 -0
  545. package/dist/utils/model-operations.js.map +1 -0
  546. package/dist/utils/models-error.d.ts +8 -0
  547. package/dist/utils/models-error.d.ts.map +1 -0
  548. package/dist/utils/models-error.js +19 -0
  549. package/dist/utils/models-error.js.map +1 -0
  550. package/dist/utils/node-http-proxy.d.ts.map +1 -1
  551. package/dist/utils/node-http-proxy.js +53 -12
  552. package/dist/utils/node-http-proxy.js.map +1 -1
  553. package/dist/utils/oauth-page.d.ts.map +1 -0
  554. package/dist/utils/oauth-page.js.map +1 -0
  555. package/dist/utils/overflow.d.ts +11 -1
  556. package/dist/utils/overflow.d.ts.map +1 -1
  557. package/dist/utils/overflow.js +24 -6
  558. package/dist/utils/overflow.js.map +1 -1
  559. package/dist/utils/provider-retry.js +3 -2
  560. package/dist/utils/provider-retry.js.map +1 -1
  561. package/dist/utils/retry.d.ts +6 -1
  562. package/dist/utils/retry.d.ts.map +1 -1
  563. package/dist/utils/retry.js +19 -2
  564. package/dist/utils/retry.js.map +1 -1
  565. package/dist/utils/sleep.d.ts +2 -0
  566. package/dist/utils/sleep.d.ts.map +1 -0
  567. package/dist/utils/sleep.js +15 -0
  568. package/dist/utils/sleep.js.map +1 -0
  569. package/dist/utils/text.d.ts +9 -1
  570. package/dist/utils/text.d.ts.map +1 -1
  571. package/dist/utils/text.js +26 -0
  572. package/dist/utils/text.js.map +1 -1
  573. package/dist/utils/transcript.d.ts +84 -0
  574. package/dist/utils/transcript.d.ts.map +1 -0
  575. package/dist/utils/transcript.js +204 -0
  576. package/dist/utils/transcript.js.map +1 -0
  577. package/dist/utils/uuid.d.ts +2 -2
  578. package/dist/utils/uuid.d.ts.map +1 -1
  579. package/dist/utils/uuid.js +35 -40
  580. package/dist/utils/uuid.js.map +1 -1
  581. package/dist/utils/validation.d.ts.map +1 -1
  582. package/dist/utils/validation.js +40 -0
  583. package/dist/utils/validation.js.map +1 -1
  584. package/package.json +19 -13
  585. package/dist/auth/oauth/oauth-page.d.ts.map +0 -1
  586. package/dist/auth/oauth/oauth-page.js.map +0 -1
  587. package/dist/image-models.generated.d.ts +0 -605
  588. package/dist/image-models.generated.d.ts.map +0 -1
  589. package/dist/image-models.generated.js +0 -607
  590. package/dist/image-models.generated.js.map +0 -1
  591. package/dist/images-models.d.ts +0 -95
  592. package/dist/images-models.d.ts.map +0 -1
  593. package/dist/images-models.js +0 -140
  594. package/dist/images-models.js.map +0 -1
  595. package/dist/providers/openrouter-images.d.ts +0 -3
  596. package/dist/providers/openrouter-images.d.ts.map +0 -1
  597. package/dist/providers/openrouter-images.js +0 -22
  598. package/dist/providers/openrouter-images.js.map +0 -1
  599. package/dist/utils/deferred-tools.d.ts +0 -9
  600. package/dist/utils/deferred-tools.d.ts.map +0 -1
  601. package/dist/utils/deferred-tools.js +0 -36
  602. package/dist/utils/deferred-tools.js.map +0 -1
  603. /package/dist/{auth/oauth → utils}/oauth-page.d.ts +0 -0
  604. /package/dist/{auth/oauth → utils}/oauth-page.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-go.models.d.ts","sourceRoot":"","sources":["../../src/providers/opencode-go.models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,MAAM,MAAM,yBAAyB,CAAuB;AAEnE,eAAO,MAAM,kBAAkB,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,aAAa,CAGzE,CAAC"}
1
+ {"version":3,"file":"opencode-go.models.d.ts","sourceRoot":"","sources":["../../src/providers/opencode-go.models.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAI3B,KAAK,iBAAiB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,yBAAyB,CAAuB;AAEnE,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,CAAC,OAAO,MAAM,EAAE,aAAa,CAG7E,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,iBAAiB,CAAC,OAAO,MAAM,EAAE,aAAa,CAGpF,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,sBAAsB,CAAC,OAAO,MAAM,EAAE,aAAa,CAC1C,CAAC"}
@@ -1,6 +1,8 @@
1
1
  // This file is auto-generated by scripts/generate-models.ts
2
2
  // Do not edit manually - run 'npm run generate-models' to update
3
- import { flattenModelCatalog } from "../model-catalog.js";
3
+ import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, } from "../model-catalog.js";
4
4
  import values from "./data/opencode-go.json" with { type: "json" };
5
- export const OPENCODE_GO_MODELS = flattenModelCatalog("opencode-go", values);
5
+ export const OPENCODE_GO_MODELS = flattenChatModelCatalog("opencode-go", values);
6
+ export const OPENCODE_GO_IMAGE_MODELS = flattenImageModelCatalog("opencode-go", values);
7
+ export const OPENCODE_GO_CLASSIFIER_MODELS = flattenClassifierModelCatalog("opencode-go", values);
6
8
  //# sourceMappingURL=opencode-go.models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-go.models.js","sourceRoot":"","sources":["../../src/providers/opencode-go.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,MAAM,MAAM,yBAAyB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEnE,MAAM,CAAC,MAAM,kBAAkB,GAA+C,mBAAmB,CAChG,aAAa,EACb,MAAM,CACN,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 { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\nimport values from \"./data/opencode-go.json\" with { type: \"json\" };\n\nexport const OPENCODE_GO_MODELS: ModelCatalog<typeof values, \"opencode-go\"> = flattenModelCatalog(\n\t\"opencode-go\",\n\tvalues,\n);\n"]}
1
+ {"version":3,"file":"opencode-go.models.js","sourceRoot":"","sources":["../../src/providers/opencode-go.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,EAGN,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,GAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,yBAAyB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEnE,MAAM,CAAC,MAAM,kBAAkB,GAAmD,uBAAuB,CACxG,aAAa,EACb,MAAM,CACN,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAoD,wBAAwB,CAChH,aAAa,EACb,MAAM,CACN,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GACzC,6BAA6B,CAAC,aAAa,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 {\n\ttype ChatModelCatalog,\n\ttype ClassifierModelCatalog,\n\tflattenChatModelCatalog,\n\tflattenClassifierModelCatalog,\n\tflattenImageModelCatalog,\n\ttype ImageModelCatalog,\n} from \"../model-catalog.ts\";\nimport values from \"./data/opencode-go.json\" with { type: \"json\" };\n\nexport const OPENCODE_GO_MODELS: ChatModelCatalog<typeof values, \"opencode-go\"> = flattenChatModelCatalog(\n\t\"opencode-go\",\n\tvalues,\n);\n\nexport const OPENCODE_GO_IMAGE_MODELS: ImageModelCatalog<typeof values, \"opencode-go\"> = flattenImageModelCatalog(\n\t\"opencode-go\",\n\tvalues,\n);\n\nexport const OPENCODE_GO_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"opencode-go\"> =\n\tflattenClassifierModelCatalog(\"opencode-go\", values);\n"]}
@@ -0,0 +1,4 @@
1
+ import type { ProviderStreams } from "../types.ts";
2
+ /** Adds OpenCode's required per-conversation routing header before API dispatch. */
3
+ export declare function withOpenCodeSessionHeader(streams: ProviderStreams): ProviderStreams;
4
+ //# sourceMappingURL=opencode-headers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-headers.d.ts","sourceRoot":"","sources":["../../src/providers/opencode-headers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,eAAe,EAAiB,MAAM,aAAa,CAAC;AAiBnF,oFAAoF;AACpF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAMnF"}
@@ -0,0 +1,22 @@
1
+ const OPENCODE_SESSION_HEADER = "x-opencode-session";
2
+ function hasHeader(headers, name) {
3
+ const expected = name.toLowerCase();
4
+ return Object.keys(headers ?? {}).some((key) => key.toLowerCase() === expected);
5
+ }
6
+ function withSessionHeader(options) {
7
+ if (!options?.sessionId || hasHeader(options.headers, OPENCODE_SESSION_HEADER))
8
+ return options;
9
+ return {
10
+ ...options,
11
+ headers: { ...options.headers, [OPENCODE_SESSION_HEADER]: options.sessionId },
12
+ };
13
+ }
14
+ /** Adds OpenCode's required per-conversation routing header before API dispatch. */
15
+ export function withOpenCodeSessionHeader(streams) {
16
+ return {
17
+ ...streams,
18
+ stream: (model, context, options) => streams.stream(model, context, withSessionHeader(options)),
19
+ streamSimple: (model, context, options) => streams.streamSimple(model, context, withSessionHeader(options)),
20
+ };
21
+ }
22
+ //# sourceMappingURL=opencode-headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-headers.js","sourceRoot":"","sources":["../../src/providers/opencode-headers.ts"],"names":[],"mappings":"AAEA,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAErD,SAAS,SAAS,CAAC,OAAoC,EAAE,IAAY;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,iBAAiB,CAAiC,OAA6B;IACvF,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,uBAAuB,CAAC;QAAE,OAAO,OAAO,CAAC;IAC/F,OAAO;QACN,GAAG,OAAO;QACV,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE;KAC7E,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,yBAAyB,CAAC,OAAwB;IACjE,OAAO;QACN,GAAG,OAAO;QACV,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC/F,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;KAC3G,CAAC;AACH,CAAC","sourcesContent":["import type { ProviderHeaders, ProviderStreams, StreamOptions } from \"../types.ts\";\n\nconst OPENCODE_SESSION_HEADER = \"x-opencode-session\";\n\nfunction hasHeader(headers: ProviderHeaders | undefined, name: string): boolean {\n\tconst expected = name.toLowerCase();\n\treturn Object.keys(headers ?? {}).some((key) => key.toLowerCase() === expected);\n}\n\nfunction withSessionHeader<TOptions extends StreamOptions>(options: TOptions | undefined): TOptions | undefined {\n\tif (!options?.sessionId || hasHeader(options.headers, OPENCODE_SESSION_HEADER)) return options;\n\treturn {\n\t\t...options,\n\t\theaders: { ...options.headers, [OPENCODE_SESSION_HEADER]: options.sessionId },\n\t};\n}\n\n/** Adds OpenCode's required per-conversation routing header before API dispatch. */\nexport function withOpenCodeSessionHeader(streams: ProviderStreams): ProviderStreams {\n\treturn {\n\t\t...streams,\n\t\tstream: (model, context, options) => streams.stream(model, context, withSessionHeader(options)),\n\t\tstreamSimple: (model, context, options) => streams.streamSimple(model, context, withSessionHeader(options)),\n\t};\n}\n"]}
@@ -1,3 +1,5 @@
1
1
  import { type Provider } from "../models.ts";
2
- export declare function opencodeProvider(): Provider<"anthropic-messages" | "google-generative-ai" | "openai-completions" | "openai-responses">;
2
+ type OpenCodeApi = "anthropic-messages" | "google-generative-ai" | "openai-completions" | "openai-responses";
3
+ export declare function opencodeProvider(): Provider<OpenCodeApi>;
4
+ export {};
3
5
  //# sourceMappingURL=opencode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/providers/opencode.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7D,wBAAgB,gBAAgB,IAAI,QAAQ,CAC3C,oBAAoB,GAAG,sBAAsB,GAAG,oBAAoB,GAAG,kBAAkB,CACzF,CAaA"}
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/providers/opencode.ts"],"names":[],"mappings":"AAMA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAI7D,KAAK,WAAW,GAAG,oBAAoB,GAAG,sBAAsB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAE7G,wBAAgB,gBAAgB,IAAI,QAAQ,CAAC,WAAW,CAAC,CAexD"}
@@ -2,21 +2,25 @@ import { anthropicMessagesApi } from "../api/anthropic-messages.lazy.js";
2
2
  import { googleGenerativeAIApi } from "../api/google-generative-ai.lazy.js";
3
3
  import { openAICompletionsApi } from "../api/openai-completions.lazy.js";
4
4
  import { openAIResponsesApi } from "../api/openai-responses.lazy.js";
5
+ import { typesafeSystemOneApi } from "../api/typesafe-system-one.lazy.js";
5
6
  import { envApiKeyAuth } from "../auth/helpers.js";
6
7
  import { createProvider } from "../models.js";
7
- import { OPENCODE_MODELS } from "./opencode.models.js";
8
+ import { OPENCODE_CLASSIFIER_MODELS, OPENCODE_MODELS } from "./opencode.models.js";
9
+ import { withOpenCodeSessionHeader } from "./opencode-headers.js";
8
10
  export function opencodeProvider() {
9
11
  return createProvider({
10
12
  id: "opencode",
11
13
  name: "OpenCode Zen",
12
14
  auth: { apiKey: envApiKeyAuth("OpenCode API key", ["OPENCODE_API_KEY"]) },
13
- models: Object.values(OPENCODE_MODELS),
15
+ models: [...Object.values(OPENCODE_MODELS), ...Object.values(OPENCODE_CLASSIFIER_MODELS)],
14
16
  api: {
15
- "anthropic-messages": anthropicMessagesApi(),
16
- "google-generative-ai": googleGenerativeAIApi(),
17
- "openai-completions": openAICompletionsApi(),
18
- "openai-responses": openAIResponsesApi(),
17
+ "anthropic-messages": withOpenCodeSessionHeader(anthropicMessagesApi()),
18
+ "google-generative-ai": withOpenCodeSessionHeader(googleGenerativeAIApi()),
19
+ "openai-completions": withOpenCodeSessionHeader(openAICompletionsApi()),
20
+ "openai-responses": withOpenCodeSessionHeader(openAIResponsesApi()),
19
21
  },
22
+ // OpenCode Zen serves TypeSafe's System One protocol at /zen/v1/systemone.
23
+ classifiers: { "typesafe-system-one": typesafeSystemOneApi() },
20
24
  });
21
25
  }
22
26
  //# sourceMappingURL=opencode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/providers/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,UAAU,gBAAgB;IAG/B,OAAO,cAAc,CAAC;QACrB,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE;QACzE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QACtC,GAAG,EAAE;YACJ,oBAAoB,EAAE,oBAAoB,EAAE;YAC5C,sBAAsB,EAAE,qBAAqB,EAAE;YAC/C,oBAAoB,EAAE,oBAAoB,EAAE;YAC5C,kBAAkB,EAAE,kBAAkB,EAAE;SACxC;KACD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { anthropicMessagesApi } from \"../api/anthropic-messages.lazy.ts\";\nimport { googleGenerativeAIApi } from \"../api/google-generative-ai.lazy.ts\";\nimport { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { openAIResponsesApi } from \"../api/openai-responses.lazy.ts\";\nimport { envApiKeyAuth } from \"../auth/helpers.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { OPENCODE_MODELS } from \"./opencode.models.ts\";\n\nexport function opencodeProvider(): Provider<\n\t\"anthropic-messages\" | \"google-generative-ai\" | \"openai-completions\" | \"openai-responses\"\n> {\n\treturn createProvider({\n\t\tid: \"opencode\",\n\t\tname: \"OpenCode Zen\",\n\t\tauth: { apiKey: envApiKeyAuth(\"OpenCode API key\", [\"OPENCODE_API_KEY\"]) },\n\t\tmodels: Object.values(OPENCODE_MODELS),\n\t\tapi: {\n\t\t\t\"anthropic-messages\": anthropicMessagesApi(),\n\t\t\t\"google-generative-ai\": googleGenerativeAIApi(),\n\t\t\t\"openai-completions\": openAICompletionsApi(),\n\t\t\t\"openai-responses\": openAIResponsesApi(),\n\t\t},\n\t});\n}\n"]}
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/providers/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAIlE,MAAM,UAAU,gBAAgB;IAC/B,OAAO,cAAc,CAAc;QAClC,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE;QACzE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;QACzF,GAAG,EAAE;YACJ,oBAAoB,EAAE,yBAAyB,CAAC,oBAAoB,EAAE,CAAC;YACvE,sBAAsB,EAAE,yBAAyB,CAAC,qBAAqB,EAAE,CAAC;YAC1E,oBAAoB,EAAE,yBAAyB,CAAC,oBAAoB,EAAE,CAAC;YACvE,kBAAkB,EAAE,yBAAyB,CAAC,kBAAkB,EAAE,CAAC;SACnE;QACD,2EAA2E;QAC3E,WAAW,EAAE,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,EAAE;KAC9D,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { anthropicMessagesApi } from \"../api/anthropic-messages.lazy.ts\";\nimport { googleGenerativeAIApi } from \"../api/google-generative-ai.lazy.ts\";\nimport { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { openAIResponsesApi } from \"../api/openai-responses.lazy.ts\";\nimport { typesafeSystemOneApi } from \"../api/typesafe-system-one.lazy.ts\";\nimport { envApiKeyAuth } from \"../auth/helpers.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { OPENCODE_CLASSIFIER_MODELS, OPENCODE_MODELS } from \"./opencode.models.ts\";\nimport { withOpenCodeSessionHeader } from \"./opencode-headers.ts\";\n\ntype OpenCodeApi = \"anthropic-messages\" | \"google-generative-ai\" | \"openai-completions\" | \"openai-responses\";\n\nexport function opencodeProvider(): Provider<OpenCodeApi> {\n\treturn createProvider<OpenCodeApi>({\n\t\tid: \"opencode\",\n\t\tname: \"OpenCode Zen\",\n\t\tauth: { apiKey: envApiKeyAuth(\"OpenCode API key\", [\"OPENCODE_API_KEY\"]) },\n\t\tmodels: [...Object.values(OPENCODE_MODELS), ...Object.values(OPENCODE_CLASSIFIER_MODELS)],\n\t\tapi: {\n\t\t\t\"anthropic-messages\": withOpenCodeSessionHeader(anthropicMessagesApi()),\n\t\t\t\"google-generative-ai\": withOpenCodeSessionHeader(googleGenerativeAIApi()),\n\t\t\t\"openai-completions\": withOpenCodeSessionHeader(openAICompletionsApi()),\n\t\t\t\"openai-responses\": withOpenCodeSessionHeader(openAIResponsesApi()),\n\t\t},\n\t\t// OpenCode Zen serves TypeSafe's System One protocol at /zen/v1/systemone.\n\t\tclassifiers: { \"typesafe-system-one\": typesafeSystemOneApi() },\n\t});\n}\n"]}
@@ -1,4 +1,6 @@
1
- import { type ModelCatalog } from "../model-catalog.ts";
1
+ import { type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from "../model-catalog.ts";
2
2
  import values from "./data/opencode.json";
3
- export declare const OPENCODE_MODELS: ModelCatalog<typeof values, "opencode">;
3
+ export declare const OPENCODE_MODELS: ChatModelCatalog<typeof values, "opencode">;
4
+ export declare const OPENCODE_IMAGE_MODELS: ImageModelCatalog<typeof values, "opencode">;
5
+ export declare const OPENCODE_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, "opencode">;
4
6
  //# sourceMappingURL=opencode.models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.models.d.ts","sourceRoot":"","sources":["../../src/providers/opencode.models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,MAAM,MAAM,sBAAsB,CAAuB;AAEhE,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,UAAU,CAA2C,CAAC"}
1
+ {"version":3,"file":"opencode.models.d.ts","sourceRoot":"","sources":["../../src/providers/opencode.models.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAI3B,KAAK,iBAAiB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,sBAAsB,CAAuB;AAEhE,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,OAAO,MAAM,EAAE,UAAU,CAA+C,CAAC;AAExH,eAAO,MAAM,qBAAqB,EAAE,iBAAiB,CAAC,OAAO,MAAM,EAAE,UAAU,CAG9E,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,sBAAsB,CAAC,OAAO,MAAM,EAAE,UAAU,CACvC,CAAC"}
@@ -1,6 +1,8 @@
1
1
  // This file is auto-generated by scripts/generate-models.ts
2
2
  // Do not edit manually - run 'npm run generate-models' to update
3
- import { flattenModelCatalog } from "../model-catalog.js";
3
+ import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, } from "../model-catalog.js";
4
4
  import values from "./data/opencode.json" with { type: "json" };
5
- export const OPENCODE_MODELS = flattenModelCatalog("opencode", values);
5
+ export const OPENCODE_MODELS = flattenChatModelCatalog("opencode", values);
6
+ export const OPENCODE_IMAGE_MODELS = flattenImageModelCatalog("opencode", values);
7
+ export const OPENCODE_CLASSIFIER_MODELS = flattenClassifierModelCatalog("opencode", values);
6
8
  //# sourceMappingURL=opencode.models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.models.js","sourceRoot":"","sources":["../../src/providers/opencode.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,MAAM,MAAM,sBAAsB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEhE,MAAM,CAAC,MAAM,eAAe,GAA4C,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 { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\nimport values from \"./data/opencode.json\" with { type: \"json\" };\n\nexport const OPENCODE_MODELS: ModelCatalog<typeof values, \"opencode\"> = flattenModelCatalog(\"opencode\", values);\n"]}
1
+ {"version":3,"file":"opencode.models.js","sourceRoot":"","sources":["../../src/providers/opencode.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,EAGN,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,GAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,sBAAsB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEhE,MAAM,CAAC,MAAM,eAAe,GAAgD,uBAAuB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAExH,MAAM,CAAC,MAAM,qBAAqB,GAAiD,wBAAwB,CAC1G,UAAU,EACV,MAAM,CACN,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GACtC,6BAA6B,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 {\n\ttype ChatModelCatalog,\n\ttype ClassifierModelCatalog,\n\tflattenChatModelCatalog,\n\tflattenClassifierModelCatalog,\n\tflattenImageModelCatalog,\n\ttype ImageModelCatalog,\n} from \"../model-catalog.ts\";\nimport values from \"./data/opencode.json\" with { type: \"json\" };\n\nexport const OPENCODE_MODELS: ChatModelCatalog<typeof values, \"opencode\"> = flattenChatModelCatalog(\"opencode\", values);\n\nexport const OPENCODE_IMAGE_MODELS: ImageModelCatalog<typeof values, \"opencode\"> = flattenImageModelCatalog(\n\t\"opencode\",\n\tvalues,\n);\n\nexport const OPENCODE_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"opencode\"> =\n\tflattenClassifierModelCatalog(\"opencode\", values);\n"]}
@@ -1,3 +1,3 @@
1
1
  import { type Provider } from "../models.ts";
2
- export declare function openrouterProvider(): Provider<"openai-completions">;
2
+ export declare function openrouterProvider(): Provider<"anthropic-messages" | "openai-completions">;
3
3
  //# sourceMappingURL=openrouter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../src/providers/openrouter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7D,wBAAgB,kBAAkB,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAgBnE"}
1
+ {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../src/providers/openrouter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7D,wBAAgB,kBAAkB,IAAI,QAAQ,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,CA0B1F"}
@@ -1,8 +1,11 @@
1
+ import { anthropicMessagesApi } from "../api/anthropic-messages.lazy.js";
1
2
  import { openAICompletionsApi } from "../api/openai-completions.lazy.js";
3
+ import { openrouterImagesApi } from "../api/openrouter-images.lazy.js";
4
+ import { typesafeSystemOneApi } from "../api/typesafe-system-one.lazy.js";
2
5
  import { envApiKeyAuth, lazyOAuth } from "../auth/helpers.js";
3
6
  import { loadOpenRouterOAuth } from "../auth/oauth/load.js";
4
7
  import { createProvider } from "../models.js";
5
- import { OPENROUTER_MODELS } from "./openrouter.models.js";
8
+ import { OPENROUTER_CLASSIFIER_MODELS, OPENROUTER_IMAGE_MODELS, OPENROUTER_MODELS } from "./openrouter.models.js";
6
9
  export function openrouterProvider() {
7
10
  return createProvider({
8
11
  id: "openrouter",
@@ -16,8 +19,18 @@ export function openrouterProvider() {
16
19
  load: loadOpenRouterOAuth,
17
20
  }),
18
21
  },
19
- models: Object.values(OPENROUTER_MODELS),
20
- api: openAICompletionsApi(),
22
+ models: [
23
+ ...Object.values(OPENROUTER_MODELS),
24
+ ...Object.values(OPENROUTER_IMAGE_MODELS),
25
+ ...Object.values(OPENROUTER_CLASSIFIER_MODELS),
26
+ ],
27
+ api: {
28
+ "anthropic-messages": anthropicMessagesApi(),
29
+ "openai-completions": openAICompletionsApi(),
30
+ },
31
+ images: { "openrouter-images": openrouterImagesApi() },
32
+ // OpenRouter serves TypeSafe's System One protocol at /api/v1/systemone.
33
+ classifiers: { "typesafe-system-one": typesafeSystemOneApi() },
21
34
  });
22
35
  }
23
36
  //# sourceMappingURL=openrouter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../src/providers/openrouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,UAAU,kBAAkB;IACjC,OAAO,cAAc,CAAC;QACrB,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,8BAA8B;QACvC,IAAI,EAAE;YACL,MAAM,EAAE,aAAa,CAAC,oBAAoB,EAAE,CAAC,oBAAoB,CAAC,CAAC;YACnE,KAAK,EAAE,SAAS,CAAC;gBAChB,IAAI,EAAE,kBAAkB;gBACxB,UAAU,EAAE,yBAAyB;gBACrC,IAAI,EAAE,mBAAmB;aACzB,CAAC;SACF;QACD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACxC,GAAG,EAAE,oBAAoB,EAAE;KAC3B,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { envApiKeyAuth, lazyOAuth } from \"../auth/helpers.ts\";\nimport { loadOpenRouterOAuth } from \"../auth/oauth/load.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { OPENROUTER_MODELS } from \"./openrouter.models.ts\";\n\nexport function openrouterProvider(): Provider<\"openai-completions\"> {\n\treturn createProvider({\n\t\tid: \"openrouter\",\n\t\tname: \"OpenRouter\",\n\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\tauth: {\n\t\t\tapiKey: envApiKeyAuth(\"OpenRouter API key\", [\"OPENROUTER_API_KEY\"]),\n\t\t\toauth: lazyOAuth({\n\t\t\t\tname: \"OpenRouter OAuth\",\n\t\t\t\tloginLabel: \"Sign in with OpenRouter\",\n\t\t\t\tload: loadOpenRouterOAuth,\n\t\t\t}),\n\t\t},\n\t\tmodels: Object.values(OPENROUTER_MODELS),\n\t\tapi: openAICompletionsApi(),\n\t});\n}\n"]}
1
+ {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../src/providers/openrouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAElH,MAAM,UAAU,kBAAkB;IACjC,OAAO,cAAc,CAA8C;QAClE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,8BAA8B;QACvC,IAAI,EAAE;YACL,MAAM,EAAE,aAAa,CAAC,oBAAoB,EAAE,CAAC,oBAAoB,CAAC,CAAC;YACnE,KAAK,EAAE,SAAS,CAAC;gBAChB,IAAI,EAAE,kBAAkB;gBACxB,UAAU,EAAE,yBAAyB;gBACrC,IAAI,EAAE,mBAAmB;aACzB,CAAC;SACF;QACD,MAAM,EAAE;YACP,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACnC,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC;YACzC,GAAG,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC;SAC9C;QACD,GAAG,EAAE;YACJ,oBAAoB,EAAE,oBAAoB,EAAE;YAC5C,oBAAoB,EAAE,oBAAoB,EAAE;SAC5C;QACD,MAAM,EAAE,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,EAAE;QACtD,yEAAyE;QACzE,WAAW,EAAE,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,EAAE;KAC9D,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { anthropicMessagesApi } from \"../api/anthropic-messages.lazy.ts\";\nimport { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { openrouterImagesApi } from \"../api/openrouter-images.lazy.ts\";\nimport { typesafeSystemOneApi } from \"../api/typesafe-system-one.lazy.ts\";\nimport { envApiKeyAuth, lazyOAuth } from \"../auth/helpers.ts\";\nimport { loadOpenRouterOAuth } from \"../auth/oauth/load.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { OPENROUTER_CLASSIFIER_MODELS, OPENROUTER_IMAGE_MODELS, OPENROUTER_MODELS } from \"./openrouter.models.ts\";\n\nexport function openrouterProvider(): Provider<\"anthropic-messages\" | \"openai-completions\"> {\n\treturn createProvider<\"anthropic-messages\" | \"openai-completions\">({\n\t\tid: \"openrouter\",\n\t\tname: \"OpenRouter\",\n\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\tauth: {\n\t\t\tapiKey: envApiKeyAuth(\"OpenRouter API key\", [\"OPENROUTER_API_KEY\"]),\n\t\t\toauth: lazyOAuth({\n\t\t\t\tname: \"OpenRouter OAuth\",\n\t\t\t\tloginLabel: \"Sign in with OpenRouter\",\n\t\t\t\tload: loadOpenRouterOAuth,\n\t\t\t}),\n\t\t},\n\t\tmodels: [\n\t\t\t...Object.values(OPENROUTER_MODELS),\n\t\t\t...Object.values(OPENROUTER_IMAGE_MODELS),\n\t\t\t...Object.values(OPENROUTER_CLASSIFIER_MODELS),\n\t\t],\n\t\tapi: {\n\t\t\t\"anthropic-messages\": anthropicMessagesApi(),\n\t\t\t\"openai-completions\": openAICompletionsApi(),\n\t\t},\n\t\timages: { \"openrouter-images\": openrouterImagesApi() },\n\t\t// OpenRouter serves TypeSafe's System One protocol at /api/v1/systemone.\n\t\tclassifiers: { \"typesafe-system-one\": typesafeSystemOneApi() },\n\t});\n}\n"]}
@@ -1,4 +1,6 @@
1
- import { type ModelCatalog } from "../model-catalog.ts";
1
+ import { type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from "../model-catalog.ts";
2
2
  import values from "./data/openrouter.json";
3
- export declare const OPENROUTER_MODELS: ModelCatalog<typeof values, "openrouter">;
3
+ export declare const OPENROUTER_MODELS: ChatModelCatalog<typeof values, "openrouter">;
4
+ export declare const OPENROUTER_IMAGE_MODELS: ImageModelCatalog<typeof values, "openrouter">;
5
+ export declare const OPENROUTER_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, "openrouter">;
4
6
  //# sourceMappingURL=openrouter.models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.models.d.ts","sourceRoot":"","sources":["../../src/providers/openrouter.models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,MAAM,MAAM,wBAAwB,CAAuB;AAElE,eAAO,MAAM,iBAAiB,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,YAAY,CAA6C,CAAC"}
1
+ {"version":3,"file":"openrouter.models.d.ts","sourceRoot":"","sources":["../../src/providers/openrouter.models.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAI3B,KAAK,iBAAiB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,wBAAwB,CAAuB;AAElE,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,OAAO,MAAM,EAAE,YAAY,CAG3E,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,iBAAiB,CAAC,OAAO,MAAM,EAAE,YAAY,CAGlF,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,sBAAsB,CAAC,OAAO,MAAM,EAAE,YAAY,CACzC,CAAC"}
@@ -1,6 +1,8 @@
1
1
  // This file is auto-generated by scripts/generate-models.ts
2
2
  // Do not edit manually - run 'npm run generate-models' to update
3
- import { flattenModelCatalog } from "../model-catalog.js";
3
+ import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, } from "../model-catalog.js";
4
4
  import values from "./data/openrouter.json" with { type: "json" };
5
- export const OPENROUTER_MODELS = flattenModelCatalog("openrouter", values);
5
+ export const OPENROUTER_MODELS = flattenChatModelCatalog("openrouter", values);
6
+ export const OPENROUTER_IMAGE_MODELS = flattenImageModelCatalog("openrouter", values);
7
+ export const OPENROUTER_CLASSIFIER_MODELS = flattenClassifierModelCatalog("openrouter", values);
6
8
  //# sourceMappingURL=openrouter.models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.models.js","sourceRoot":"","sources":["../../src/providers/openrouter.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,MAAM,MAAM,wBAAwB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAElE,MAAM,CAAC,MAAM,iBAAiB,GAA8C,mBAAmB,CAAC,YAAY,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 { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\nimport values from \"./data/openrouter.json\" with { type: \"json\" };\n\nexport const OPENROUTER_MODELS: ModelCatalog<typeof values, \"openrouter\"> = flattenModelCatalog(\"openrouter\", values);\n"]}
1
+ {"version":3,"file":"openrouter.models.js","sourceRoot":"","sources":["../../src/providers/openrouter.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,EAGN,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,GAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,wBAAwB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAElE,MAAM,CAAC,MAAM,iBAAiB,GAAkD,uBAAuB,CACtG,YAAY,EACZ,MAAM,CACN,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAmD,wBAAwB,CAC9G,YAAY,EACZ,MAAM,CACN,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GACxC,6BAA6B,CAAC,YAAY,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 {\n\ttype ChatModelCatalog,\n\ttype ClassifierModelCatalog,\n\tflattenChatModelCatalog,\n\tflattenClassifierModelCatalog,\n\tflattenImageModelCatalog,\n\ttype ImageModelCatalog,\n} from \"../model-catalog.ts\";\nimport values from \"./data/openrouter.json\" with { type: \"json\" };\n\nexport const OPENROUTER_MODELS: ChatModelCatalog<typeof values, \"openrouter\"> = flattenChatModelCatalog(\n\t\"openrouter\",\n\tvalues,\n);\n\nexport const OPENROUTER_IMAGE_MODELS: ImageModelCatalog<typeof values, \"openrouter\"> = flattenImageModelCatalog(\n\t\"openrouter\",\n\tvalues,\n);\n\nexport const OPENROUTER_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"openrouter\"> =\n\tflattenClassifierModelCatalog(\"openrouter\", values);\n"]}
@@ -1,4 +1,6 @@
1
- import { type ModelCatalog } from "../model-catalog.ts";
1
+ import { type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from "../model-catalog.ts";
2
2
  import values from "./data/qwen-token-plan-cn.json";
3
- export declare const QWEN_TOKEN_PLAN_CN_MODELS: ModelCatalog<typeof values, "qwen-token-plan-cn">;
3
+ export declare const QWEN_TOKEN_PLAN_CN_MODELS: ChatModelCatalog<typeof values, "qwen-token-plan-cn">;
4
+ export declare const QWEN_TOKEN_PLAN_CN_IMAGE_MODELS: ImageModelCatalog<typeof values, "qwen-token-plan-cn">;
5
+ export declare const QWEN_TOKEN_PLAN_CN_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, "qwen-token-plan-cn">;
4
6
  //# sourceMappingURL=qwen-token-plan-cn.models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"qwen-token-plan-cn.models.d.ts","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-cn.models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,MAAM,MAAM,gCAAgC,CAAuB;AAE1E,eAAO,MAAM,yBAAyB,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,oBAAoB,CAGvF,CAAC"}
1
+ {"version":3,"file":"qwen-token-plan-cn.models.d.ts","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-cn.models.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAI3B,KAAK,iBAAiB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,gCAAgC,CAAuB;AAE1E,eAAO,MAAM,yBAAyB,EAAE,gBAAgB,CAAC,OAAO,MAAM,EAAE,oBAAoB,CAG3F,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,iBAAiB,CAAC,OAAO,MAAM,EAAE,oBAAoB,CAC5C,CAAC;AAExD,eAAO,MAAM,oCAAoC,EAAE,sBAAsB,CAAC,OAAO,MAAM,EAAE,oBAAoB,CACjD,CAAC"}
@@ -1,6 +1,8 @@
1
1
  // This file is auto-generated by scripts/generate-models.ts
2
2
  // Do not edit manually - run 'npm run generate-models' to update
3
- import { flattenModelCatalog } from "../model-catalog.js";
3
+ import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, } from "../model-catalog.js";
4
4
  import values from "./data/qwen-token-plan-cn.json" with { type: "json" };
5
- export const QWEN_TOKEN_PLAN_CN_MODELS = flattenModelCatalog("qwen-token-plan-cn", values);
5
+ export const QWEN_TOKEN_PLAN_CN_MODELS = flattenChatModelCatalog("qwen-token-plan-cn", values);
6
+ export const QWEN_TOKEN_PLAN_CN_IMAGE_MODELS = flattenImageModelCatalog("qwen-token-plan-cn", values);
7
+ export const QWEN_TOKEN_PLAN_CN_CLASSIFIER_MODELS = flattenClassifierModelCatalog("qwen-token-plan-cn", values);
6
8
  //# sourceMappingURL=qwen-token-plan-cn.models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"qwen-token-plan-cn.models.js","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-cn.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,MAAM,MAAM,gCAAgC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAE1E,MAAM,CAAC,MAAM,yBAAyB,GAAsD,mBAAmB,CAC9G,oBAAoB,EACpB,MAAM,CACN,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 { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\nimport values from \"./data/qwen-token-plan-cn.json\" with { type: \"json\" };\n\nexport const QWEN_TOKEN_PLAN_CN_MODELS: ModelCatalog<typeof values, \"qwen-token-plan-cn\"> = flattenModelCatalog(\n\t\"qwen-token-plan-cn\",\n\tvalues,\n);\n"]}
1
+ {"version":3,"file":"qwen-token-plan-cn.models.js","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-cn.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,EAGN,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,GAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,gCAAgC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAE1E,MAAM,CAAC,MAAM,yBAAyB,GAA0D,uBAAuB,CACtH,oBAAoB,EACpB,MAAM,CACN,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAC3C,wBAAwB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,oCAAoC,GAChD,6BAA6B,CAAC,oBAAoB,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 {\n\ttype ChatModelCatalog,\n\ttype ClassifierModelCatalog,\n\tflattenChatModelCatalog,\n\tflattenClassifierModelCatalog,\n\tflattenImageModelCatalog,\n\ttype ImageModelCatalog,\n} from \"../model-catalog.ts\";\nimport values from \"./data/qwen-token-plan-cn.json\" with { type: \"json\" };\n\nexport const QWEN_TOKEN_PLAN_CN_MODELS: ChatModelCatalog<typeof values, \"qwen-token-plan-cn\"> = flattenChatModelCatalog(\n\t\"qwen-token-plan-cn\",\n\tvalues,\n);\n\nexport const QWEN_TOKEN_PLAN_CN_IMAGE_MODELS: ImageModelCatalog<typeof values, \"qwen-token-plan-cn\"> =\n\tflattenImageModelCatalog(\"qwen-token-plan-cn\", values);\n\nexport const QWEN_TOKEN_PLAN_CN_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"qwen-token-plan-cn\"> =\n\tflattenClassifierModelCatalog(\"qwen-token-plan-cn\", values);\n"]}
@@ -0,0 +1,3 @@
1
+ import { type Provider } from "../models.ts";
2
+ export declare function qwenTokenPlanIndividualProvider(): Provider<"openai-completions">;
3
+ //# sourceMappingURL=qwen-token-plan-individual.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwen-token-plan-individual.d.ts","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-individual.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7D,wBAAgB,+BAA+B,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAShF"}
@@ -0,0 +1,15 @@
1
+ import { openAICompletionsApi } from "../api/openai-completions.lazy.js";
2
+ import { envApiKeyAuth } from "../auth/helpers.js";
3
+ import { createProvider } from "../models.js";
4
+ import { QWEN_TOKEN_PLAN_INDIVIDUAL_MODELS } from "./qwen-token-plan-individual.models.js";
5
+ export function qwenTokenPlanIndividualProvider() {
6
+ return createProvider({
7
+ id: "qwen-token-plan-individual",
8
+ name: "Qwen Token Plan Individual",
9
+ baseUrl: "https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
10
+ auth: { apiKey: envApiKeyAuth("Qwen Token Plan Individual API key", ["QWEN_TOKEN_PLAN_API_KEY"]) },
11
+ models: Object.values(QWEN_TOKEN_PLAN_INDIVIDUAL_MODELS),
12
+ api: openAICompletionsApi(),
13
+ });
14
+ }
15
+ //# sourceMappingURL=qwen-token-plan-individual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwen-token-plan-individual.js","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-individual.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAE3F,MAAM,UAAU,+BAA+B;IAC9C,OAAO,cAAc,CAAC;QACrB,EAAE,EAAE,4BAA4B;QAChC,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,wEAAwE;QACjF,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,oCAAoC,EAAE,CAAC,yBAAyB,CAAC,CAAC,EAAE;QAClG,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,iCAAiC,CAAC;QACxD,GAAG,EAAE,oBAAoB,EAAE;KAC3B,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { envApiKeyAuth } from \"../auth/helpers.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { QWEN_TOKEN_PLAN_INDIVIDUAL_MODELS } from \"./qwen-token-plan-individual.models.ts\";\n\nexport function qwenTokenPlanIndividualProvider(): Provider<\"openai-completions\"> {\n\treturn createProvider({\n\t\tid: \"qwen-token-plan-individual\",\n\t\tname: \"Qwen Token Plan Individual\",\n\t\tbaseUrl: \"https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1\",\n\t\tauth: { apiKey: envApiKeyAuth(\"Qwen Token Plan Individual API key\", [\"QWEN_TOKEN_PLAN_API_KEY\"]) },\n\t\tmodels: Object.values(QWEN_TOKEN_PLAN_INDIVIDUAL_MODELS),\n\t\tapi: openAICompletionsApi(),\n\t});\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from "../model-catalog.ts";
2
+ import values from "./data/qwen-token-plan-individual.json";
3
+ export declare const QWEN_TOKEN_PLAN_INDIVIDUAL_MODELS: ChatModelCatalog<typeof values, "qwen-token-plan-individual">;
4
+ export declare const QWEN_TOKEN_PLAN_INDIVIDUAL_IMAGE_MODELS: ImageModelCatalog<typeof values, "qwen-token-plan-individual">;
5
+ export declare const QWEN_TOKEN_PLAN_INDIVIDUAL_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, "qwen-token-plan-individual">;
6
+ //# sourceMappingURL=qwen-token-plan-individual.models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwen-token-plan-individual.models.d.ts","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-individual.models.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAI3B,KAAK,iBAAiB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,wCAAwC,CAAuB;AAElF,eAAO,MAAM,iCAAiC,EAAE,gBAAgB,CAAC,OAAO,MAAM,EAAE,4BAA4B,CAC9C,CAAC;AAE/D,eAAO,MAAM,uCAAuC,EAAE,iBAAiB,CAAC,OAAO,MAAM,EAAE,4BAA4B,CACpD,CAAC;AAEhE,eAAO,MAAM,4CAA4C,EAAE,sBAAsB,CAChF,OAAO,MAAM,EACb,4BAA4B,CAC0C,CAAC"}
@@ -0,0 +1,8 @@
1
+ // This file is auto-generated by scripts/generate-models.ts
2
+ // Do not edit manually - run 'npm run generate-models' to update
3
+ import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, } from "../model-catalog.js";
4
+ import values from "./data/qwen-token-plan-individual.json" with { type: "json" };
5
+ export const QWEN_TOKEN_PLAN_INDIVIDUAL_MODELS = flattenChatModelCatalog("qwen-token-plan-individual", values);
6
+ export const QWEN_TOKEN_PLAN_INDIVIDUAL_IMAGE_MODELS = flattenImageModelCatalog("qwen-token-plan-individual", values);
7
+ export const QWEN_TOKEN_PLAN_INDIVIDUAL_CLASSIFIER_MODELS = flattenClassifierModelCatalog("qwen-token-plan-individual", values);
8
+ //# sourceMappingURL=qwen-token-plan-individual.models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwen-token-plan-individual.models.js","sourceRoot":"","sources":["../../src/providers/qwen-token-plan-individual.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,EAGN,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,GAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,wCAAwC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAElF,MAAM,CAAC,MAAM,iCAAiC,GAC7C,uBAAuB,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,uCAAuC,GACnD,wBAAwB,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,4CAA4C,GAGrD,6BAA6B,CAAC,4BAA4B,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 {\n\ttype ChatModelCatalog,\n\ttype ClassifierModelCatalog,\n\tflattenChatModelCatalog,\n\tflattenClassifierModelCatalog,\n\tflattenImageModelCatalog,\n\ttype ImageModelCatalog,\n} from \"../model-catalog.ts\";\nimport values from \"./data/qwen-token-plan-individual.json\" with { type: \"json\" };\n\nexport const QWEN_TOKEN_PLAN_INDIVIDUAL_MODELS: ChatModelCatalog<typeof values, \"qwen-token-plan-individual\"> =\n\tflattenChatModelCatalog(\"qwen-token-plan-individual\", values);\n\nexport const QWEN_TOKEN_PLAN_INDIVIDUAL_IMAGE_MODELS: ImageModelCatalog<typeof values, \"qwen-token-plan-individual\"> =\n\tflattenImageModelCatalog(\"qwen-token-plan-individual\", values);\n\nexport const QWEN_TOKEN_PLAN_INDIVIDUAL_CLASSIFIER_MODELS: ClassifierModelCatalog<\n\ttypeof values,\n\t\"qwen-token-plan-individual\"\n> = flattenClassifierModelCatalog(\"qwen-token-plan-individual\", values);\n"]}
@@ -1,4 +1,6 @@
1
- import { type ModelCatalog } from "../model-catalog.ts";
1
+ import { type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from "../model-catalog.ts";
2
2
  import values from "./data/qwen-token-plan.json";
3
- export declare const QWEN_TOKEN_PLAN_MODELS: ModelCatalog<typeof values, "qwen-token-plan">;
3
+ export declare const QWEN_TOKEN_PLAN_MODELS: ChatModelCatalog<typeof values, "qwen-token-plan">;
4
+ export declare const QWEN_TOKEN_PLAN_IMAGE_MODELS: ImageModelCatalog<typeof values, "qwen-token-plan">;
5
+ export declare const QWEN_TOKEN_PLAN_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, "qwen-token-plan">;
4
6
  //# sourceMappingURL=qwen-token-plan.models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"qwen-token-plan.models.d.ts","sourceRoot":"","sources":["../../src/providers/qwen-token-plan.models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,MAAM,MAAM,6BAA6B,CAAuB;AAEvE,eAAO,MAAM,sBAAsB,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,iBAAiB,CAGjF,CAAC"}
1
+ {"version":3,"file":"qwen-token-plan.models.d.ts","sourceRoot":"","sources":["../../src/providers/qwen-token-plan.models.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAI3B,KAAK,iBAAiB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,6BAA6B,CAAuB;AAEvE,eAAO,MAAM,sBAAsB,EAAE,gBAAgB,CAAC,OAAO,MAAM,EAAE,iBAAiB,CAGrF,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,iBAAiB,CAAC,OAAO,MAAM,EAAE,iBAAiB,CACzC,CAAC;AAErD,eAAO,MAAM,iCAAiC,EAAE,sBAAsB,CAAC,OAAO,MAAM,EAAE,iBAAiB,CAC9C,CAAC"}
@@ -1,6 +1,8 @@
1
1
  // This file is auto-generated by scripts/generate-models.ts
2
2
  // Do not edit manually - run 'npm run generate-models' to update
3
- import { flattenModelCatalog } from "../model-catalog.js";
3
+ import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, } from "../model-catalog.js";
4
4
  import values from "./data/qwen-token-plan.json" with { type: "json" };
5
- export const QWEN_TOKEN_PLAN_MODELS = flattenModelCatalog("qwen-token-plan", values);
5
+ export const QWEN_TOKEN_PLAN_MODELS = flattenChatModelCatalog("qwen-token-plan", values);
6
+ export const QWEN_TOKEN_PLAN_IMAGE_MODELS = flattenImageModelCatalog("qwen-token-plan", values);
7
+ export const QWEN_TOKEN_PLAN_CLASSIFIER_MODELS = flattenClassifierModelCatalog("qwen-token-plan", values);
6
8
  //# sourceMappingURL=qwen-token-plan.models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"qwen-token-plan.models.js","sourceRoot":"","sources":["../../src/providers/qwen-token-plan.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,MAAM,MAAM,6BAA6B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEvE,MAAM,CAAC,MAAM,sBAAsB,GAAmD,mBAAmB,CACxG,iBAAiB,EACjB,MAAM,CACN,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 { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\nimport values from \"./data/qwen-token-plan.json\" with { type: \"json\" };\n\nexport const QWEN_TOKEN_PLAN_MODELS: ModelCatalog<typeof values, \"qwen-token-plan\"> = flattenModelCatalog(\n\t\"qwen-token-plan\",\n\tvalues,\n);\n"]}
1
+ {"version":3,"file":"qwen-token-plan.models.js","sourceRoot":"","sources":["../../src/providers/qwen-token-plan.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,EAGN,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,GAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,6BAA6B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEvE,MAAM,CAAC,MAAM,sBAAsB,GAAuD,uBAAuB,CAChH,iBAAiB,EACjB,MAAM,CACN,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GACxC,wBAAwB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,iCAAiC,GAC7C,6BAA6B,CAAC,iBAAiB,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 {\n\ttype ChatModelCatalog,\n\ttype ClassifierModelCatalog,\n\tflattenChatModelCatalog,\n\tflattenClassifierModelCatalog,\n\tflattenImageModelCatalog,\n\ttype ImageModelCatalog,\n} from \"../model-catalog.ts\";\nimport values from \"./data/qwen-token-plan.json\" with { type: \"json\" };\n\nexport const QWEN_TOKEN_PLAN_MODELS: ChatModelCatalog<typeof values, \"qwen-token-plan\"> = flattenChatModelCatalog(\n\t\"qwen-token-plan\",\n\tvalues,\n);\n\nexport const QWEN_TOKEN_PLAN_IMAGE_MODELS: ImageModelCatalog<typeof values, \"qwen-token-plan\"> =\n\tflattenImageModelCatalog(\"qwen-token-plan\", values);\n\nexport const QWEN_TOKEN_PLAN_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"qwen-token-plan\"> =\n\tflattenClassifierModelCatalog(\"qwen-token-plan\", values);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"radius.d.ts","sourceRoot":"","sources":["../../src/providers/radius.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAS7C,MAAM,WAAW,qBAAqB;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,QAAQ,CAAC,aAAa,CAAC,CA+C3F"}
1
+ {"version":3,"file":"radius.d.ts","sourceRoot":"","sources":["../../src/providers/radius.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAW7C,MAAM,WAAW,qBAAqB;IACrC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,QAAQ,CAAC,aAAa,CAAC,CA0E3F"}
@@ -1,14 +1,17 @@
1
1
  import { piMessagesApi } from "../api/pi-messages.lazy.js";
2
2
  import { envApiKeyAuth, lazyOAuth } from "../auth/helpers.js";
3
3
  import { loadRadiusOAuth } from "../auth/oauth/load.js";
4
+ import { RADIUS_MODELS } from "./radius.models.js";
4
5
  import { DEFAULT_RADIUS_GATEWAY, getRadiusModels, getRadiusModelsFromConfig, loadRadiusGatewayConfig, normalizeRadiusGatewayUrl, } from "./radius-config.js";
5
6
  /** Radius gateway provider with a persisted, dynamically refreshed catalog. */
6
7
  export function radiusProvider(options = {}) {
7
8
  const id = options.id ?? "radius";
8
9
  const name = options.name ?? "Radius";
9
10
  const gateway = normalizeRadiusGatewayUrl(options.gateway ?? DEFAULT_RADIUS_GATEWAY);
10
- let models = getRadiusModels(id, undefined);
11
- let inflightRefresh;
11
+ const baselineModels = gateway === normalizeRadiusGatewayUrl(DEFAULT_RADIUS_GATEWAY)
12
+ ? Object.values(RADIUS_MODELS).map((model) => ({ ...model, provider: id }))
13
+ : [];
14
+ let dynamicModels = getRadiusModels(id, undefined);
12
15
  const streams = piMessagesApi();
13
16
  return {
14
17
  id,
@@ -17,35 +20,56 @@ export function radiusProvider(options = {}) {
17
20
  apiKey: envApiKeyAuth("Radius API key", ["RADIUS_API_KEY"]),
18
21
  oauth: lazyOAuth({ name, load: () => loadRadiusOAuth({ name, gateway }) }),
19
22
  },
20
- getModels: () => models,
21
- refreshModels: (context) => {
22
- inflightRefresh ??= (async () => {
23
- try {
24
- const stored = await context.store.read();
25
- if (stored)
26
- models = stored.models.filter((model) => model.provider === id);
27
- // Import catalogs cached by the pre-ModelsStore Radius implementation.
28
- if (!stored && context.credential?.type === "oauth") {
29
- const legacy = getRadiusModels(id, context.credential);
30
- if (legacy.length > 0) {
31
- models = legacy;
32
- await context.store.write({ models: legacy, checkedAt: Date.now() });
33
- }
34
- }
35
- if (!context.allowNetwork || context.signal?.aborted)
36
- return;
37
- const apiKey = context.credential?.type === "oauth" ? context.credential.access : context.credential?.key;
38
- const config = await loadRadiusGatewayConfig(gateway, apiKey, context.signal);
39
- if (context.signal?.aborted)
40
- return;
41
- models = getRadiusModelsFromConfig(id, config);
42
- await context.store.write({ models, checkedAt: Date.now() });
23
+ getModels: () => {
24
+ const merged = [...baselineModels];
25
+ for (const model of dynamicModels) {
26
+ const index = merged.findIndex((entry) => entry.id === model.id);
27
+ if (index >= 0)
28
+ merged[index] = model;
29
+ else
30
+ merged.push(model);
31
+ }
32
+ return merged;
33
+ },
34
+ refreshModels: async (context) => {
35
+ const stored = context.stored;
36
+ if (stored) {
37
+ const restored = stored.models.filter((model) => model.provider === id);
38
+ if (!(await context.publish({
39
+ update: () => {
40
+ dynamicModels = restored;
41
+ },
42
+ }))) {
43
+ return;
43
44
  }
44
- finally {
45
- inflightRefresh = undefined;
45
+ }
46
+ // Import catalogs cached by the pre-ModelsStore Radius implementation.
47
+ if (!stored && context.credential?.type === "oauth") {
48
+ const legacy = getRadiusModels(id, context.credential);
49
+ if (legacy.length > 0) {
50
+ if (!(await context.publish({
51
+ persist: { models: legacy, checkedAt: Date.now() },
52
+ update: () => {
53
+ dynamicModels = legacy;
54
+ },
55
+ }))) {
56
+ return;
57
+ }
46
58
  }
47
- })();
48
- return inflightRefresh;
59
+ }
60
+ if (!context.allowNetwork || context.signal.aborted)
61
+ return;
62
+ const apiKey = context.credential?.type === "oauth" ? context.credential.access : context.credential?.key;
63
+ const config = await loadRadiusGatewayConfig(gateway, apiKey, context.signal);
64
+ if (context.signal.aborted)
65
+ return;
66
+ const refreshed = getRadiusModelsFromConfig(id, config);
67
+ await context.publish({
68
+ persist: { models: refreshed, checkedAt: Date.now() },
69
+ update: () => {
70
+ dynamicModels = refreshed;
71
+ },
72
+ });
49
73
  },
50
74
  stream: (model, context, streamOptions) => streams.stream(model, context, streamOptions),
51
75
  streamSimple: (model, context, streamOptions) => streams.streamSimple(model, context, streamOptions),
@@ -1 +1 @@
1
- {"version":3,"file":"radius.js","sourceRoot":"","sources":["../../src/providers/radius.ts"],"names":[],"mappings":"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","sourcesContent":["import { piMessagesApi } from \"../api/pi-messages.lazy.ts\";\nimport { envApiKeyAuth, lazyOAuth } from \"../auth/helpers.ts\";\nimport { loadRadiusOAuth } from \"../auth/oauth/load.ts\";\nimport type { Provider } from \"../models.ts\";\nimport {\n\tDEFAULT_RADIUS_GATEWAY,\n\tgetRadiusModels,\n\tgetRadiusModelsFromConfig,\n\tloadRadiusGatewayConfig,\n\tnormalizeRadiusGatewayUrl,\n} from \"./radius-config.ts\";\n\nexport interface RadiusProviderOptions {\n\tid?: string;\n\tname?: string;\n\tgateway?: string;\n}\n\n/** Radius gateway provider with a persisted, dynamically refreshed catalog. */\nexport function radiusProvider(options: RadiusProviderOptions = {}): Provider<\"pi-messages\"> {\n\tconst id = options.id ?? \"radius\";\n\tconst name = options.name ?? \"Radius\";\n\tconst gateway = normalizeRadiusGatewayUrl(options.gateway ?? DEFAULT_RADIUS_GATEWAY);\n\tlet models = getRadiusModels(id, undefined);\n\tlet inflightRefresh: Promise<void> | undefined;\n\tconst streams = piMessagesApi();\n\n\treturn {\n\t\tid,\n\t\tname,\n\t\tauth: {\n\t\t\tapiKey: envApiKeyAuth(\"Radius API key\", [\"RADIUS_API_KEY\"]),\n\t\t\toauth: lazyOAuth({ name, load: () => loadRadiusOAuth({ name, gateway }) }),\n\t\t},\n\t\tgetModels: () => models,\n\t\trefreshModels: (context) => {\n\t\t\tinflightRefresh ??= (async () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst stored = await context.store.read();\n\t\t\t\t\tif (stored) models = stored.models.filter((model) => model.provider === id) as typeof models;\n\n\t\t\t\t\t// Import catalogs cached by the pre-ModelsStore Radius implementation.\n\t\t\t\t\tif (!stored && context.credential?.type === \"oauth\") {\n\t\t\t\t\t\tconst legacy = getRadiusModels(id, context.credential);\n\t\t\t\t\t\tif (legacy.length > 0) {\n\t\t\t\t\t\t\tmodels = legacy;\n\t\t\t\t\t\t\tawait context.store.write({ models: legacy, checkedAt: Date.now() });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!context.allowNetwork || context.signal?.aborted) return;\n\t\t\t\t\tconst apiKey =\n\t\t\t\t\t\tcontext.credential?.type === \"oauth\" ? context.credential.access : context.credential?.key;\n\t\t\t\t\tconst config = await loadRadiusGatewayConfig(gateway, apiKey, context.signal);\n\t\t\t\t\tif (context.signal?.aborted) return;\n\t\t\t\t\tmodels = getRadiusModelsFromConfig(id, config);\n\t\t\t\t\tawait context.store.write({ models, checkedAt: Date.now() });\n\t\t\t\t} finally {\n\t\t\t\t\tinflightRefresh = undefined;\n\t\t\t\t}\n\t\t\t})();\n\t\t\treturn inflightRefresh;\n\t\t},\n\t\tstream: (model, context, streamOptions) => streams.stream(model, context, streamOptions),\n\t\tstreamSimple: (model, context, streamOptions) => streams.streamSimple(model, context, streamOptions),\n\t};\n}\n"]}
1
+ {"version":3,"file":"radius.js","sourceRoot":"","sources":["../../src/providers/radius.ts"],"names":[],"mappings":"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","sourcesContent":["import { piMessagesApi } from \"../api/pi-messages.lazy.ts\";\nimport { envApiKeyAuth, lazyOAuth } from \"../auth/helpers.ts\";\nimport { loadRadiusOAuth } from \"../auth/oauth/load.ts\";\nimport type { Provider } from \"../models.ts\";\nimport type { Model } from \"../types.ts\";\nimport { RADIUS_MODELS } from \"./radius.models.ts\";\nimport {\n\tDEFAULT_RADIUS_GATEWAY,\n\tgetRadiusModels,\n\tgetRadiusModelsFromConfig,\n\tloadRadiusGatewayConfig,\n\tnormalizeRadiusGatewayUrl,\n} from \"./radius-config.ts\";\n\nexport interface RadiusProviderOptions {\n\tid?: string;\n\tname?: string;\n\tgateway?: string;\n}\n\n/** Radius gateway provider with a persisted, dynamically refreshed catalog. */\nexport function radiusProvider(options: RadiusProviderOptions = {}): Provider<\"pi-messages\"> {\n\tconst id = options.id ?? \"radius\";\n\tconst name = options.name ?? \"Radius\";\n\tconst gateway = normalizeRadiusGatewayUrl(options.gateway ?? DEFAULT_RADIUS_GATEWAY);\n\tconst baselineModels: Model<\"pi-messages\">[] =\n\t\tgateway === normalizeRadiusGatewayUrl(DEFAULT_RADIUS_GATEWAY)\n\t\t\t? Object.values(RADIUS_MODELS).map((model) => ({ ...model, provider: id }))\n\t\t\t: [];\n\tlet dynamicModels = getRadiusModels(id, undefined);\n\tconst streams = piMessagesApi();\n\n\treturn {\n\t\tid,\n\t\tname,\n\t\tauth: {\n\t\t\tapiKey: envApiKeyAuth(\"Radius API key\", [\"RADIUS_API_KEY\"]),\n\t\t\toauth: lazyOAuth({ name, load: () => loadRadiusOAuth({ name, gateway }) }),\n\t\t},\n\t\tgetModels: () => {\n\t\t\tconst merged = [...baselineModels];\n\t\t\tfor (const model of dynamicModels) {\n\t\t\t\tconst index = merged.findIndex((entry) => entry.id === model.id);\n\t\t\t\tif (index >= 0) merged[index] = model;\n\t\t\t\telse merged.push(model);\n\t\t\t}\n\t\t\treturn merged;\n\t\t},\n\t\trefreshModels: async (context) => {\n\t\t\tconst stored = context.stored;\n\t\t\tif (stored) {\n\t\t\t\tconst restored = stored.models.filter((model) => model.provider === id) as typeof dynamicModels;\n\t\t\t\tif (\n\t\t\t\t\t!(await context.publish({\n\t\t\t\t\t\tupdate: () => {\n\t\t\t\t\t\t\tdynamicModels = restored;\n\t\t\t\t\t\t},\n\t\t\t\t\t}))\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Import catalogs cached by the pre-ModelsStore Radius implementation.\n\t\t\tif (!stored && context.credential?.type === \"oauth\") {\n\t\t\t\tconst legacy = getRadiusModels(id, context.credential);\n\t\t\t\tif (legacy.length > 0) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(await context.publish({\n\t\t\t\t\t\t\tpersist: { models: legacy, checkedAt: Date.now() },\n\t\t\t\t\t\t\tupdate: () => {\n\t\t\t\t\t\t\t\tdynamicModels = legacy;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}))\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!context.allowNetwork || context.signal.aborted) return;\n\t\t\tconst apiKey = context.credential?.type === \"oauth\" ? context.credential.access : context.credential?.key;\n\t\t\tconst config = await loadRadiusGatewayConfig(gateway, apiKey, context.signal);\n\t\t\tif (context.signal.aborted) return;\n\t\t\tconst refreshed = getRadiusModelsFromConfig(id, config);\n\t\t\tawait context.publish({\n\t\t\t\tpersist: { models: refreshed, checkedAt: Date.now() },\n\t\t\t\tupdate: () => {\n\t\t\t\t\tdynamicModels = refreshed;\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tstream: (model, context, streamOptions) => streams.stream(model, context, streamOptions),\n\t\tstreamSimple: (model, context, streamOptions) => streams.streamSimple(model, context, streamOptions),\n\t};\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { type ChatModelCatalog, type ClassifierModelCatalog, type ImageModelCatalog } from "../model-catalog.ts";
2
+ import values from "./data/radius.json";
3
+ export declare const RADIUS_MODELS: ChatModelCatalog<typeof values, "radius">;
4
+ export declare const RADIUS_IMAGE_MODELS: ImageModelCatalog<typeof values, "radius">;
5
+ export declare const RADIUS_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, "radius">;
6
+ //# sourceMappingURL=radius.models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radius.models.d.ts","sourceRoot":"","sources":["../../src/providers/radius.models.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAI3B,KAAK,iBAAiB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,oBAAoB,CAAuB;AAE9D,eAAO,MAAM,aAAa,EAAE,gBAAgB,CAAC,OAAO,MAAM,EAAE,QAAQ,CAA6C,CAAC;AAElH,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,CAAC,OAAO,MAAM,EAAE,QAAQ,CAG1E,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,sBAAsB,CAAC,OAAO,MAAM,EAAE,QAAQ,CAGpF,CAAC"}
@@ -0,0 +1,8 @@
1
+ // This file is auto-generated by scripts/generate-models.ts
2
+ // Do not edit manually - run 'npm run generate-models' to update
3
+ import { flattenChatModelCatalog, flattenClassifierModelCatalog, flattenImageModelCatalog, } from "../model-catalog.js";
4
+ import values from "./data/radius.json" with { type: "json" };
5
+ export const RADIUS_MODELS = flattenChatModelCatalog("radius", values);
6
+ export const RADIUS_IMAGE_MODELS = flattenImageModelCatalog("radius", values);
7
+ export const RADIUS_CLASSIFIER_MODELS = flattenClassifierModelCatalog("radius", values);
8
+ //# sourceMappingURL=radius.models.js.map