@draht/ai 2026.9.5-1 → 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 (598) hide show
  1. package/dist/api/anthropic-messages.d.ts.map +1 -1
  2. package/dist/api/anthropic-messages.js +392 -137
  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 -11
  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 +194 -22
  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.map +1 -1
  32. package/dist/api/google-generative-ai.js +26 -73
  33. package/dist/api/google-generative-ai.js.map +1 -1
  34. package/dist/api/google-shared.d.ts +14 -5
  35. package/dist/api/google-shared.d.ts.map +1 -1
  36. package/dist/api/google-shared.js +68 -13
  37. package/dist/api/google-shared.js.map +1 -1
  38. package/dist/api/google-vertex.d.ts.map +1 -1
  39. package/dist/api/google-vertex.js +30 -65
  40. package/dist/api/google-vertex.js.map +1 -1
  41. package/dist/api/lazy.d.ts +5 -1
  42. package/dist/api/lazy.d.ts.map +1 -1
  43. package/dist/api/lazy.js +19 -7
  44. package/dist/api/lazy.js.map +1 -1
  45. package/dist/api/llama-cpp-classify.d.ts +33 -0
  46. package/dist/api/llama-cpp-classify.d.ts.map +1 -0
  47. package/dist/api/llama-cpp-classify.js +365 -0
  48. package/dist/api/llama-cpp-classify.js.map +1 -0
  49. package/dist/api/llama-cpp-classify.lazy.d.ts +3 -0
  50. package/dist/api/llama-cpp-classify.lazy.d.ts.map +1 -0
  51. package/dist/api/llama-cpp-classify.lazy.js +4 -0
  52. package/dist/api/llama-cpp-classify.lazy.js.map +1 -0
  53. package/dist/api/mistral-conversations.d.ts +2 -2
  54. package/dist/api/mistral-conversations.d.ts.map +1 -1
  55. package/dist/api/mistral-conversations.js +246 -69
  56. package/dist/api/mistral-conversations.js.map +1 -1
  57. package/dist/api/openai-codex-responses.d.ts.map +1 -1
  58. package/dist/api/openai-codex-responses.js +58 -24
  59. package/dist/api/openai-codex-responses.js.map +1 -1
  60. package/dist/api/openai-completions.d.ts +11 -4
  61. package/dist/api/openai-completions.d.ts.map +1 -1
  62. package/dist/api/openai-completions.js +232 -126
  63. package/dist/api/openai-completions.js.map +1 -1
  64. package/dist/api/openai-responses-shared.d.ts +8 -4
  65. package/dist/api/openai-responses-shared.d.ts.map +1 -1
  66. package/dist/api/openai-responses-shared.js +109 -58
  67. package/dist/api/openai-responses-shared.js.map +1 -1
  68. package/dist/api/openai-responses.d.ts.map +1 -1
  69. package/dist/api/openai-responses.js +58 -24
  70. package/dist/api/openai-responses.js.map +1 -1
  71. package/dist/api/openrouter-images.d.ts +2 -1
  72. package/dist/api/openrouter-images.d.ts.map +1 -1
  73. package/dist/api/openrouter-images.js +1 -0
  74. package/dist/api/openrouter-images.js.map +1 -1
  75. package/dist/api/openrouter-images.lazy.d.ts.map +1 -1
  76. package/dist/api/openrouter-images.lazy.js.map +1 -1
  77. package/dist/api/pi-messages.d.ts +5 -3
  78. package/dist/api/pi-messages.d.ts.map +1 -1
  79. package/dist/api/pi-messages.js +12 -3
  80. package/dist/api/pi-messages.js.map +1 -1
  81. package/dist/api/simple-options.d.ts +9 -3
  82. package/dist/api/simple-options.d.ts.map +1 -1
  83. package/dist/api/simple-options.js +22 -11
  84. package/dist/api/simple-options.js.map +1 -1
  85. package/dist/api/system-one-shared.d.ts +23 -0
  86. package/dist/api/system-one-shared.d.ts.map +1 -0
  87. package/dist/api/system-one-shared.js +183 -0
  88. package/dist/api/system-one-shared.js.map +1 -0
  89. package/dist/api/transform-messages.d.ts.map +1 -1
  90. package/dist/api/transform-messages.js +21 -7
  91. package/dist/api/transform-messages.js.map +1 -1
  92. package/dist/api/typesafe-system-one.d.ts +4 -0
  93. package/dist/api/typesafe-system-one.d.ts.map +1 -0
  94. package/dist/api/typesafe-system-one.js +19 -0
  95. package/dist/api/typesafe-system-one.js.map +1 -0
  96. package/dist/api/typesafe-system-one.lazy.d.ts +3 -0
  97. package/dist/api/typesafe-system-one.lazy.d.ts.map +1 -0
  98. package/dist/api/typesafe-system-one.lazy.js +4 -0
  99. package/dist/api/typesafe-system-one.lazy.js.map +1 -0
  100. package/dist/auth/credential-store.d.ts +6 -6
  101. package/dist/auth/credential-store.d.ts.map +1 -1
  102. package/dist/auth/credential-store.js +24 -15
  103. package/dist/auth/credential-store.js.map +1 -1
  104. package/dist/auth/helpers.d.ts +1 -0
  105. package/dist/auth/helpers.d.ts.map +1 -1
  106. package/dist/auth/helpers.js +8 -3
  107. package/dist/auth/helpers.js.map +1 -1
  108. package/dist/auth/oauth/anthropic.d.ts.map +1 -1
  109. package/dist/auth/oauth/anthropic.js +28 -131
  110. package/dist/auth/oauth/anthropic.js.map +1 -1
  111. package/dist/auth/oauth/callback-server.d.ts +55 -0
  112. package/dist/auth/oauth/callback-server.d.ts.map +1 -0
  113. package/dist/auth/oauth/callback-server.js +146 -0
  114. package/dist/auth/oauth/callback-server.js.map +1 -0
  115. package/dist/auth/oauth/device-code.d.ts +2 -1
  116. package/dist/auth/oauth/device-code.d.ts.map +1 -1
  117. package/dist/auth/oauth/device-code.js +5 -5
  118. package/dist/auth/oauth/device-code.js.map +1 -1
  119. package/dist/auth/oauth/github-copilot.d.ts.map +1 -1
  120. package/dist/auth/oauth/github-copilot.js +13 -9
  121. package/dist/auth/oauth/github-copilot.js.map +1 -1
  122. package/dist/auth/oauth/google-antigravity.d.ts +3 -3
  123. package/dist/auth/oauth/google-antigravity.d.ts.map +1 -1
  124. package/dist/auth/oauth/google-antigravity.js +17 -9
  125. package/dist/auth/oauth/google-antigravity.js.map +1 -1
  126. package/dist/auth/oauth/google-gemini-cli.d.ts +3 -3
  127. package/dist/auth/oauth/google-gemini-cli.d.ts.map +1 -1
  128. package/dist/auth/oauth/google-gemini-cli.js +18 -10
  129. package/dist/auth/oauth/google-gemini-cli.js.map +1 -1
  130. package/dist/auth/oauth/kimi-coding.d.ts.map +1 -1
  131. package/dist/auth/oauth/kimi-coding.js +5 -6
  132. package/dist/auth/oauth/kimi-coding.js.map +1 -1
  133. package/dist/auth/oauth/load.d.ts +4 -0
  134. package/dist/auth/oauth/load.d.ts.map +1 -1
  135. package/dist/auth/oauth/load.js +10 -0
  136. package/dist/auth/oauth/load.js.map +1 -1
  137. package/dist/auth/oauth/meta.d.ts +17 -0
  138. package/dist/auth/oauth/meta.d.ts.map +1 -0
  139. package/dist/auth/oauth/meta.js +190 -0
  140. package/dist/auth/oauth/meta.js.map +1 -0
  141. package/dist/auth/oauth/openai-chatgpt.d.ts +9 -0
  142. package/dist/auth/oauth/openai-chatgpt.d.ts.map +1 -0
  143. package/dist/auth/oauth/openai-chatgpt.js +266 -0
  144. package/dist/auth/oauth/openai-chatgpt.js.map +1 -0
  145. package/dist/auth/oauth/openai-codex.d.ts +1 -1
  146. package/dist/auth/oauth/openai-codex.d.ts.map +1 -1
  147. package/dist/auth/oauth/openai-codex.js +33 -130
  148. package/dist/auth/oauth/openai-codex.js.map +1 -1
  149. package/dist/auth/oauth/openrouter.d.ts +1 -1
  150. package/dist/auth/oauth/openrouter.d.ts.map +1 -1
  151. package/dist/auth/oauth/openrouter.js +26 -145
  152. package/dist/auth/oauth/openrouter.js.map +1 -1
  153. package/dist/auth/oauth/radius.d.ts +1 -1
  154. package/dist/auth/oauth/radius.d.ts.map +1 -1
  155. package/dist/auth/oauth/radius.js +28 -93
  156. package/dist/auth/oauth/radius.js.map +1 -1
  157. package/dist/auth/oauth/xai.d.ts.map +1 -1
  158. package/dist/auth/oauth/xai.js +13 -12
  159. package/dist/auth/oauth/xai.js.map +1 -1
  160. package/dist/auth/resolve.d.ts +3 -8
  161. package/dist/auth/resolve.d.ts.map +1 -1
  162. package/dist/auth/resolve.js +26 -31
  163. package/dist/auth/resolve.js.map +1 -1
  164. package/dist/auth/types.d.ts +29 -8
  165. package/dist/auth/types.d.ts.map +1 -1
  166. package/dist/auth/types.js.map +1 -1
  167. package/dist/bun-oauth.d.ts.map +1 -1
  168. package/dist/bun-oauth.js +4 -0
  169. package/dist/bun-oauth.js.map +1 -1
  170. package/dist/cli.js +4 -1
  171. package/dist/cli.js.map +1 -1
  172. package/dist/compat.d.ts +3 -3
  173. package/dist/compat.d.ts.map +1 -1
  174. package/dist/compat.js +9 -6
  175. package/dist/compat.js.map +1 -1
  176. package/dist/env-api-keys.d.ts +5 -0
  177. package/dist/env-api-keys.d.ts.map +1 -1
  178. package/dist/env-api-keys.js +9 -1
  179. package/dist/env-api-keys.js.map +1 -1
  180. package/dist/image-models.d.ts +19 -8
  181. package/dist/image-models.d.ts.map +1 -1
  182. package/dist/image-models.js +14 -13
  183. package/dist/image-models.js.map +1 -1
  184. package/dist/images-api-registry.d.ts +7 -7
  185. package/dist/images-api-registry.d.ts.map +1 -1
  186. package/dist/images-api-registry.js.map +1 -1
  187. package/dist/images.d.ts +7 -2
  188. package/dist/images.d.ts.map +1 -1
  189. package/dist/images.js +5 -0
  190. package/dist/images.js.map +1 -1
  191. package/dist/index.d.ts +3 -2
  192. package/dist/index.d.ts.map +1 -1
  193. package/dist/index.js +3 -2
  194. package/dist/index.js.map +1 -1
  195. package/dist/model-catalog.d.ts +25 -9
  196. package/dist/model-catalog.d.ts.map +1 -1
  197. package/dist/model-catalog.js +14 -2
  198. package/dist/model-catalog.js.map +1 -1
  199. package/dist/models-store.d.ts +12 -14
  200. package/dist/models-store.d.ts.map +1 -1
  201. package/dist/models-store.js +7 -6
  202. package/dist/models-store.js.map +1 -1
  203. package/dist/models.d.ts +138 -47
  204. package/dist/models.d.ts.map +1 -1
  205. package/dist/models.generated.d.ts +135 -37
  206. package/dist/models.generated.d.ts.map +1 -1
  207. package/dist/models.generated.js +135 -37
  208. package/dist/models.generated.js.map +1 -1
  209. package/dist/models.js +391 -99
  210. package/dist/models.js.map +1 -1
  211. package/dist/providers/all.d.ts +19 -13
  212. package/dist/providers/all.d.ts.map +1 -1
  213. package/dist/providers/all.js +31 -21
  214. package/dist/providers/all.js.map +1 -1
  215. package/dist/providers/amazon-bedrock.d.ts.map +1 -1
  216. package/dist/providers/amazon-bedrock.js +15 -7
  217. package/dist/providers/amazon-bedrock.js.map +1 -1
  218. package/dist/providers/amazon-bedrock.models.d.ts +4 -2
  219. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
  220. package/dist/providers/amazon-bedrock.models.js +4 -2
  221. package/dist/providers/amazon-bedrock.models.js.map +1 -1
  222. package/dist/providers/ant-ling.models.d.ts +4 -2
  223. package/dist/providers/ant-ling.models.d.ts.map +1 -1
  224. package/dist/providers/ant-ling.models.js +4 -2
  225. package/dist/providers/ant-ling.models.js.map +1 -1
  226. package/dist/providers/anthropic.d.ts.map +1 -1
  227. package/dist/providers/anthropic.js +39 -8
  228. package/dist/providers/anthropic.js.map +1 -1
  229. package/dist/providers/anthropic.models.d.ts +4 -2
  230. package/dist/providers/anthropic.models.d.ts.map +1 -1
  231. package/dist/providers/anthropic.models.js +4 -2
  232. package/dist/providers/anthropic.models.js.map +1 -1
  233. package/dist/providers/azure-openai-responses.models.d.ts +4 -2
  234. package/dist/providers/azure-openai-responses.models.d.ts.map +1 -1
  235. package/dist/providers/azure-openai-responses.models.js +4 -2
  236. package/dist/providers/azure-openai-responses.models.js.map +1 -1
  237. package/dist/providers/baseten.d.ts +3 -0
  238. package/dist/providers/baseten.d.ts.map +1 -0
  239. package/dist/providers/baseten.js +15 -0
  240. package/dist/providers/baseten.js.map +1 -0
  241. package/dist/providers/baseten.models.d.ts +6 -0
  242. package/dist/providers/baseten.models.d.ts.map +1 -0
  243. package/dist/providers/baseten.models.js +8 -0
  244. package/dist/providers/baseten.models.js.map +1 -0
  245. package/dist/providers/cerebras.models.d.ts +4 -2
  246. package/dist/providers/cerebras.models.d.ts.map +1 -1
  247. package/dist/providers/cerebras.models.js +4 -2
  248. package/dist/providers/cerebras.models.js.map +1 -1
  249. package/dist/providers/cloudflare-ai-gateway.d.ts +3 -1
  250. package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -1
  251. package/dist/providers/cloudflare-ai-gateway.js +4 -0
  252. package/dist/providers/cloudflare-ai-gateway.js.map +1 -1
  253. package/dist/providers/cloudflare-ai-gateway.models.d.ts +4 -2
  254. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -1
  255. package/dist/providers/cloudflare-ai-gateway.models.js +4 -2
  256. package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -1
  257. package/dist/providers/cloudflare-auth.d.ts.map +1 -1
  258. package/dist/providers/cloudflare-auth.js +15 -10
  259. package/dist/providers/cloudflare-auth.js.map +1 -1
  260. package/dist/providers/cloudflare-stream.d.ts +6 -2
  261. package/dist/providers/cloudflare-stream.d.ts.map +1 -1
  262. package/dist/providers/cloudflare-stream.js +6 -0
  263. package/dist/providers/cloudflare-stream.js.map +1 -1
  264. package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -1
  265. package/dist/providers/cloudflare-workers-ai.js +10 -3
  266. package/dist/providers/cloudflare-workers-ai.js.map +1 -1
  267. package/dist/providers/cloudflare-workers-ai.models.d.ts +4 -2
  268. package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -1
  269. package/dist/providers/cloudflare-workers-ai.models.js +4 -2
  270. package/dist/providers/cloudflare-workers-ai.models.js.map +1 -1
  271. package/dist/providers/data/.manifest.json +1 -1
  272. package/dist/providers/data/amazon-bedrock.json +1 -1
  273. package/dist/providers/data/ant-ling.json +1 -1
  274. package/dist/providers/data/anthropic.json +1 -1
  275. package/dist/providers/data/azure-openai-responses.json +1 -1
  276. package/dist/providers/data/baseten.json +1 -0
  277. package/dist/providers/data/cerebras.json +1 -1
  278. package/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  279. package/dist/providers/data/cloudflare-workers-ai.json +1 -1
  280. package/dist/providers/data/deepseek.json +1 -1
  281. package/dist/providers/data/fireworks.json +1 -1
  282. package/dist/providers/data/github-copilot.json +1 -1
  283. package/dist/providers/data/google-vertex.json +1 -1
  284. package/dist/providers/data/google.json +1 -1
  285. package/dist/providers/data/groq.json +1 -1
  286. package/dist/providers/data/huggingface.json +1 -1
  287. package/dist/providers/data/kimi-coding.json +1 -1
  288. package/dist/providers/data/meta.json +1 -0
  289. package/dist/providers/data/minimax-cn.json +1 -1
  290. package/dist/providers/data/minimax.json +1 -1
  291. package/dist/providers/data/mistral.json +1 -1
  292. package/dist/providers/data/moonshotai-cn.json +1 -1
  293. package/dist/providers/data/moonshotai.json +1 -1
  294. package/dist/providers/data/nvidia.json +1 -1
  295. package/dist/providers/data/openai-codex.json +1 -1
  296. package/dist/providers/data/openai.json +1 -1
  297. package/dist/providers/data/opencode-go.json +1 -1
  298. package/dist/providers/data/opencode.json +1 -1
  299. package/dist/providers/data/openrouter.json +1 -1
  300. package/dist/providers/data/qwen-token-plan-cn.json +1 -1
  301. package/dist/providers/data/qwen-token-plan-individual.json +1 -0
  302. package/dist/providers/data/qwen-token-plan.json +1 -1
  303. package/dist/providers/data/radius.json +1 -0
  304. package/dist/providers/data/together.json +1 -1
  305. package/dist/providers/data/typesafe.json +1 -0
  306. package/dist/providers/data/vercel-ai-gateway.json +1 -1
  307. package/dist/providers/data/xai.json +1 -1
  308. package/dist/providers/data/xiaomi-token-plan-ams.json +1 -1
  309. package/dist/providers/data/xiaomi-token-plan-cn.json +1 -1
  310. package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -1
  311. package/dist/providers/data/xiaomi.json +1 -1
  312. package/dist/providers/data/zai-coding-cn.json +1 -1
  313. package/dist/providers/data/zai.json +1 -1
  314. package/dist/providers/deepseek.models.d.ts +4 -2
  315. package/dist/providers/deepseek.models.d.ts.map +1 -1
  316. package/dist/providers/deepseek.models.js +4 -2
  317. package/dist/providers/deepseek.models.js.map +1 -1
  318. package/dist/providers/faux.d.ts +19 -13
  319. package/dist/providers/faux.d.ts.map +1 -1
  320. package/dist/providers/faux.js +109 -18
  321. package/dist/providers/faux.js.map +1 -1
  322. package/dist/providers/fireworks.models.d.ts +4 -2
  323. package/dist/providers/fireworks.models.d.ts.map +1 -1
  324. package/dist/providers/fireworks.models.js +4 -2
  325. package/dist/providers/fireworks.models.js.map +1 -1
  326. package/dist/providers/github-copilot.js +1 -1
  327. package/dist/providers/github-copilot.js.map +1 -1
  328. package/dist/providers/github-copilot.models.d.ts +4 -2
  329. package/dist/providers/github-copilot.models.d.ts.map +1 -1
  330. package/dist/providers/github-copilot.models.js +4 -2
  331. package/dist/providers/github-copilot.models.js.map +1 -1
  332. package/dist/providers/google-vertex.d.ts.map +1 -1
  333. package/dist/providers/google-vertex.js +15 -7
  334. package/dist/providers/google-vertex.js.map +1 -1
  335. package/dist/providers/google-vertex.models.d.ts +4 -2
  336. package/dist/providers/google-vertex.models.d.ts.map +1 -1
  337. package/dist/providers/google-vertex.models.js +4 -2
  338. package/dist/providers/google-vertex.models.js.map +1 -1
  339. package/dist/providers/google.models.d.ts +4 -2
  340. package/dist/providers/google.models.d.ts.map +1 -1
  341. package/dist/providers/google.models.js +4 -2
  342. package/dist/providers/google.models.js.map +1 -1
  343. package/dist/providers/groq.models.d.ts +4 -2
  344. package/dist/providers/groq.models.d.ts.map +1 -1
  345. package/dist/providers/groq.models.js +4 -2
  346. package/dist/providers/groq.models.js.map +1 -1
  347. package/dist/providers/huggingface.models.d.ts +4 -2
  348. package/dist/providers/huggingface.models.d.ts.map +1 -1
  349. package/dist/providers/huggingface.models.js +4 -2
  350. package/dist/providers/huggingface.models.js.map +1 -1
  351. package/dist/providers/images/register-builtins.d.ts +1 -1
  352. package/dist/providers/images/register-builtins.d.ts.map +1 -1
  353. package/dist/providers/images/register-builtins.js.map +1 -1
  354. package/dist/providers/kimi-coding.d.ts.map +1 -1
  355. package/dist/providers/kimi-coding.js +1 -0
  356. package/dist/providers/kimi-coding.js.map +1 -1
  357. package/dist/providers/kimi-coding.models.d.ts +4 -2
  358. package/dist/providers/kimi-coding.models.d.ts.map +1 -1
  359. package/dist/providers/kimi-coding.models.js +4 -2
  360. package/dist/providers/kimi-coding.models.js.map +1 -1
  361. package/dist/providers/meta.d.ts +3 -0
  362. package/dist/providers/meta.d.ts.map +1 -0
  363. package/dist/providers/meta.js +24 -0
  364. package/dist/providers/meta.js.map +1 -0
  365. package/dist/providers/meta.models.d.ts +6 -0
  366. package/dist/providers/meta.models.d.ts.map +1 -0
  367. package/dist/providers/meta.models.js +8 -0
  368. package/dist/providers/meta.models.js.map +1 -0
  369. package/dist/providers/minimax-cn.models.d.ts +4 -2
  370. package/dist/providers/minimax-cn.models.d.ts.map +1 -1
  371. package/dist/providers/minimax-cn.models.js +4 -2
  372. package/dist/providers/minimax-cn.models.js.map +1 -1
  373. package/dist/providers/minimax.models.d.ts +4 -2
  374. package/dist/providers/minimax.models.d.ts.map +1 -1
  375. package/dist/providers/minimax.models.js +4 -2
  376. package/dist/providers/minimax.models.js.map +1 -1
  377. package/dist/providers/mistral.models.d.ts +4 -2
  378. package/dist/providers/mistral.models.d.ts.map +1 -1
  379. package/dist/providers/mistral.models.js +4 -2
  380. package/dist/providers/mistral.models.js.map +1 -1
  381. package/dist/providers/moonshotai-cn.models.d.ts +4 -2
  382. package/dist/providers/moonshotai-cn.models.d.ts.map +1 -1
  383. package/dist/providers/moonshotai-cn.models.js +4 -2
  384. package/dist/providers/moonshotai-cn.models.js.map +1 -1
  385. package/dist/providers/moonshotai.models.d.ts +4 -2
  386. package/dist/providers/moonshotai.models.d.ts.map +1 -1
  387. package/dist/providers/moonshotai.models.js +4 -2
  388. package/dist/providers/moonshotai.models.js.map +1 -1
  389. package/dist/providers/nvidia.models.d.ts +4 -2
  390. package/dist/providers/nvidia.models.d.ts.map +1 -1
  391. package/dist/providers/nvidia.models.js +4 -2
  392. package/dist/providers/nvidia.models.js.map +1 -1
  393. package/dist/providers/openai-codex.d.ts.map +1 -1
  394. package/dist/providers/openai-codex.js +6 -2
  395. package/dist/providers/openai-codex.js.map +1 -1
  396. package/dist/providers/openai-codex.models.d.ts +4 -2
  397. package/dist/providers/openai-codex.models.d.ts.map +1 -1
  398. package/dist/providers/openai-codex.models.js +4 -2
  399. package/dist/providers/openai-codex.models.js.map +1 -1
  400. package/dist/providers/openai.d.ts.map +1 -1
  401. package/dist/providers/openai.js +11 -2
  402. package/dist/providers/openai.js.map +1 -1
  403. package/dist/providers/openai.models.d.ts +4 -2
  404. package/dist/providers/openai.models.d.ts.map +1 -1
  405. package/dist/providers/openai.models.js +4 -2
  406. package/dist/providers/openai.models.js.map +1 -1
  407. package/dist/providers/opencode-go.d.ts.map +1 -1
  408. package/dist/providers/opencode-go.js +4 -3
  409. package/dist/providers/opencode-go.js.map +1 -1
  410. package/dist/providers/opencode-go.models.d.ts +4 -2
  411. package/dist/providers/opencode-go.models.d.ts.map +1 -1
  412. package/dist/providers/opencode-go.models.js +4 -2
  413. package/dist/providers/opencode-go.models.js.map +1 -1
  414. package/dist/providers/opencode-headers.d.ts +4 -0
  415. package/dist/providers/opencode-headers.d.ts.map +1 -0
  416. package/dist/providers/opencode-headers.js +22 -0
  417. package/dist/providers/opencode-headers.js.map +1 -0
  418. package/dist/providers/opencode.d.ts +3 -1
  419. package/dist/providers/opencode.d.ts.map +1 -1
  420. package/dist/providers/opencode.js +10 -6
  421. package/dist/providers/opencode.js.map +1 -1
  422. package/dist/providers/opencode.models.d.ts +4 -2
  423. package/dist/providers/opencode.models.d.ts.map +1 -1
  424. package/dist/providers/opencode.models.js +4 -2
  425. package/dist/providers/opencode.models.js.map +1 -1
  426. package/dist/providers/openrouter.d.ts +1 -1
  427. package/dist/providers/openrouter.d.ts.map +1 -1
  428. package/dist/providers/openrouter.js +16 -3
  429. package/dist/providers/openrouter.js.map +1 -1
  430. package/dist/providers/openrouter.models.d.ts +4 -2
  431. package/dist/providers/openrouter.models.d.ts.map +1 -1
  432. package/dist/providers/openrouter.models.js +4 -2
  433. package/dist/providers/openrouter.models.js.map +1 -1
  434. package/dist/providers/qwen-token-plan-cn.models.d.ts +4 -2
  435. package/dist/providers/qwen-token-plan-cn.models.d.ts.map +1 -1
  436. package/dist/providers/qwen-token-plan-cn.models.js +4 -2
  437. package/dist/providers/qwen-token-plan-cn.models.js.map +1 -1
  438. package/dist/providers/qwen-token-plan-individual.d.ts +3 -0
  439. package/dist/providers/qwen-token-plan-individual.d.ts.map +1 -0
  440. package/dist/providers/qwen-token-plan-individual.js +15 -0
  441. package/dist/providers/qwen-token-plan-individual.js.map +1 -0
  442. package/dist/providers/qwen-token-plan-individual.models.d.ts +6 -0
  443. package/dist/providers/qwen-token-plan-individual.models.d.ts.map +1 -0
  444. package/dist/providers/qwen-token-plan-individual.models.js +8 -0
  445. package/dist/providers/qwen-token-plan-individual.models.js.map +1 -0
  446. package/dist/providers/qwen-token-plan.models.d.ts +4 -2
  447. package/dist/providers/qwen-token-plan.models.d.ts.map +1 -1
  448. package/dist/providers/qwen-token-plan.models.js +4 -2
  449. package/dist/providers/qwen-token-plan.models.js.map +1 -1
  450. package/dist/providers/radius.d.ts.map +1 -1
  451. package/dist/providers/radius.js +53 -29
  452. package/dist/providers/radius.js.map +1 -1
  453. package/dist/providers/radius.models.d.ts +6 -0
  454. package/dist/providers/radius.models.d.ts.map +1 -0
  455. package/dist/providers/radius.models.js +8 -0
  456. package/dist/providers/radius.models.js.map +1 -0
  457. package/dist/providers/together.models.d.ts +4 -2
  458. package/dist/providers/together.models.d.ts.map +1 -1
  459. package/dist/providers/together.models.js +4 -2
  460. package/dist/providers/together.models.js.map +1 -1
  461. package/dist/providers/typesafe.d.ts +3 -0
  462. package/dist/providers/typesafe.d.ts.map +1 -0
  463. package/dist/providers/typesafe.js +18 -0
  464. package/dist/providers/typesafe.js.map +1 -0
  465. package/dist/providers/typesafe.models.d.ts +6 -0
  466. package/dist/providers/typesafe.models.d.ts.map +1 -0
  467. package/dist/providers/typesafe.models.js +8 -0
  468. package/dist/providers/typesafe.models.js.map +1 -0
  469. package/dist/providers/vercel-ai-gateway.d.ts.map +1 -1
  470. package/dist/providers/vercel-ai-gateway.js +5 -2
  471. package/dist/providers/vercel-ai-gateway.js.map +1 -1
  472. package/dist/providers/vercel-ai-gateway.models.d.ts +4 -2
  473. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
  474. package/dist/providers/vercel-ai-gateway.models.js +4 -2
  475. package/dist/providers/vercel-ai-gateway.models.js.map +1 -1
  476. package/dist/providers/xai.d.ts.map +1 -1
  477. package/dist/providers/xai.js +1 -0
  478. package/dist/providers/xai.js.map +1 -1
  479. package/dist/providers/xai.models.d.ts +4 -2
  480. package/dist/providers/xai.models.d.ts.map +1 -1
  481. package/dist/providers/xai.models.js +4 -2
  482. package/dist/providers/xai.models.js.map +1 -1
  483. package/dist/providers/xiaomi-token-plan-ams.models.d.ts +4 -2
  484. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -1
  485. package/dist/providers/xiaomi-token-plan-ams.models.js +4 -2
  486. package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -1
  487. package/dist/providers/xiaomi-token-plan-cn.models.d.ts +4 -2
  488. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -1
  489. package/dist/providers/xiaomi-token-plan-cn.models.js +4 -2
  490. package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -1
  491. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +4 -2
  492. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -1
  493. package/dist/providers/xiaomi-token-plan-sgp.models.js +4 -2
  494. package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -1
  495. package/dist/providers/xiaomi.models.d.ts +4 -2
  496. package/dist/providers/xiaomi.models.d.ts.map +1 -1
  497. package/dist/providers/xiaomi.models.js +4 -2
  498. package/dist/providers/xiaomi.models.js.map +1 -1
  499. package/dist/providers/zai-coding-cn.models.d.ts +4 -2
  500. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -1
  501. package/dist/providers/zai-coding-cn.models.js +4 -2
  502. package/dist/providers/zai-coding-cn.models.js.map +1 -1
  503. package/dist/providers/zai.models.d.ts +4 -2
  504. package/dist/providers/zai.models.d.ts.map +1 -1
  505. package/dist/providers/zai.models.js +4 -2
  506. package/dist/providers/zai.models.js.map +1 -1
  507. package/dist/types.d.ts +409 -128
  508. package/dist/types.d.ts.map +1 -1
  509. package/dist/types.js.map +1 -1
  510. package/dist/utils/abort.d.ts +8 -0
  511. package/dist/utils/abort.d.ts.map +1 -0
  512. package/dist/utils/abort.js +49 -0
  513. package/dist/utils/abort.js.map +1 -0
  514. package/dist/utils/assistant-message-frame.d.ts +77 -0
  515. package/dist/utils/assistant-message-frame.d.ts.map +1 -0
  516. package/dist/utils/assistant-message-frame.js +425 -0
  517. package/dist/utils/assistant-message-frame.js.map +1 -0
  518. package/dist/utils/diagnostics.d.ts +3 -2
  519. package/dist/utils/diagnostics.d.ts.map +1 -1
  520. package/dist/utils/diagnostics.js.map +1 -1
  521. package/dist/utils/draht-user-agent.d.ts +2 -0
  522. package/dist/utils/draht-user-agent.d.ts.map +1 -0
  523. package/dist/utils/{pi-user-agent.js → draht-user-agent.js} +3 -3
  524. package/dist/utils/draht-user-agent.js.map +1 -0
  525. package/dist/utils/estimate.d.ts +2 -2
  526. package/dist/utils/estimate.d.ts.map +1 -1
  527. package/dist/utils/estimate.js +8 -29
  528. package/dist/utils/estimate.js.map +1 -1
  529. package/dist/utils/event-stream.d.ts.map +1 -1
  530. package/dist/utils/event-stream.js +30 -8
  531. package/dist/utils/event-stream.js.map +1 -1
  532. package/dist/utils/headers.d.ts +1 -1
  533. package/dist/utils/headers.d.ts.map +1 -1
  534. package/dist/utils/headers.js +10 -8
  535. package/dist/utils/headers.js.map +1 -1
  536. package/dist/utils/model-operations.d.ts +11 -0
  537. package/dist/utils/model-operations.d.ts.map +1 -0
  538. package/dist/utils/model-operations.js +47 -0
  539. package/dist/utils/model-operations.js.map +1 -0
  540. package/dist/utils/models-error.d.ts +8 -0
  541. package/dist/utils/models-error.d.ts.map +1 -0
  542. package/dist/utils/models-error.js +19 -0
  543. package/dist/utils/models-error.js.map +1 -0
  544. package/dist/utils/oauth-page.d.ts.map +1 -0
  545. package/dist/utils/oauth-page.js.map +1 -0
  546. package/dist/utils/overflow.d.ts +11 -1
  547. package/dist/utils/overflow.d.ts.map +1 -1
  548. package/dist/utils/overflow.js +24 -6
  549. package/dist/utils/overflow.js.map +1 -1
  550. package/dist/utils/provider-retry.js +3 -2
  551. package/dist/utils/provider-retry.js.map +1 -1
  552. package/dist/utils/retry.d.ts +6 -1
  553. package/dist/utils/retry.d.ts.map +1 -1
  554. package/dist/utils/retry.js +18 -2
  555. package/dist/utils/retry.js.map +1 -1
  556. package/dist/utils/sleep.d.ts +1 -1
  557. package/dist/utils/sleep.d.ts.map +1 -1
  558. package/dist/utils/sleep.js +4 -4
  559. package/dist/utils/sleep.js.map +1 -1
  560. package/dist/utils/text.d.ts +9 -1
  561. package/dist/utils/text.d.ts.map +1 -1
  562. package/dist/utils/text.js +26 -0
  563. package/dist/utils/text.js.map +1 -1
  564. package/dist/utils/transcript.d.ts +84 -0
  565. package/dist/utils/transcript.d.ts.map +1 -0
  566. package/dist/utils/transcript.js +204 -0
  567. package/dist/utils/transcript.js.map +1 -0
  568. package/dist/utils/uuid.d.ts +2 -2
  569. package/dist/utils/uuid.d.ts.map +1 -1
  570. package/dist/utils/uuid.js +35 -40
  571. package/dist/utils/uuid.js.map +1 -1
  572. package/dist/utils/validation.d.ts.map +1 -1
  573. package/dist/utils/validation.js +34 -0
  574. package/dist/utils/validation.js.map +1 -1
  575. package/package.json +19 -13
  576. package/dist/auth/oauth/oauth-page.d.ts.map +0 -1
  577. package/dist/auth/oauth/oauth-page.js.map +0 -1
  578. package/dist/image-models.generated.d.ts +0 -605
  579. package/dist/image-models.generated.d.ts.map +0 -1
  580. package/dist/image-models.generated.js +0 -607
  581. package/dist/image-models.generated.js.map +0 -1
  582. package/dist/images-models.d.ts +0 -95
  583. package/dist/images-models.d.ts.map +0 -1
  584. package/dist/images-models.js +0 -140
  585. package/dist/images-models.js.map +0 -1
  586. package/dist/providers/openrouter-images.d.ts +0 -3
  587. package/dist/providers/openrouter-images.d.ts.map +0 -1
  588. package/dist/providers/openrouter-images.js +0 -22
  589. package/dist/providers/openrouter-images.js.map +0 -1
  590. package/dist/utils/deferred-tools.d.ts +0 -9
  591. package/dist/utils/deferred-tools.d.ts.map +0 -1
  592. package/dist/utils/deferred-tools.js +0 -36
  593. package/dist/utils/deferred-tools.js.map +0 -1
  594. package/dist/utils/pi-user-agent.d.ts +0 -2
  595. package/dist/utils/pi-user-agent.d.ts.map +0 -1
  596. package/dist/utils/pi-user-agent.js.map +0 -1
  597. /package/dist/{auth/oauth → utils}/oauth-page.d.ts +0 -0
  598. /package/dist/{auth/oauth → utils}/oauth-page.js +0 -0
@@ -1,7 +1,7 @@
1
1
  const CLOUDFLARE_API_KEY = "CLOUDFLARE_API_KEY";
2
2
  const CLOUDFLARE_ACCOUNT_ID = "CLOUDFLARE_ACCOUNT_ID";
3
3
  const CLOUDFLARE_GATEWAY_ID = "CLOUDFLARE_GATEWAY_ID";
4
- async function resolveValue(name, ctx, credential) {
4
+ async function resolveValue(name, ctx, credential, signal) {
5
5
  // Per-field merge: prefer the credential value, fall back to ambient env.
6
6
  // A credential carrying only the API key must still pick up the account /
7
7
  // gateway id from the environment.
@@ -10,12 +10,17 @@ async function resolveValue(name, ctx, credential) {
10
10
  ? credential.key
11
11
  : credential.env?.[name]
12
12
  : undefined;
13
- return fromCredential ?? (await ctx.env(name));
13
+ if (fromCredential !== undefined)
14
+ return fromCredential;
15
+ signal.throwIfAborted();
16
+ const value = await ctx.env(name);
17
+ signal.throwIfAborted();
18
+ return value;
14
19
  }
15
- async function resolveCloudflareEnv(kind, ctx, credential) {
16
- const apiKey = await resolveValue(CLOUDFLARE_API_KEY, ctx, credential);
17
- const accountId = await resolveValue(CLOUDFLARE_ACCOUNT_ID, ctx, credential);
18
- const gatewayId = kind === "ai-gateway" ? await resolveValue(CLOUDFLARE_GATEWAY_ID, ctx, credential) : undefined;
20
+ async function resolveCloudflareEnv(kind, ctx, credential, signal) {
21
+ const apiKey = await resolveValue(CLOUDFLARE_API_KEY, ctx, credential, signal);
22
+ const accountId = await resolveValue(CLOUDFLARE_ACCOUNT_ID, ctx, credential, signal);
23
+ const gatewayId = kind === "ai-gateway" ? await resolveValue(CLOUDFLARE_GATEWAY_ID, ctx, credential, signal) : undefined;
19
24
  if (!apiKey || !accountId || (kind === "ai-gateway" && !gatewayId))
20
25
  return undefined;
21
26
  return {
@@ -35,8 +40,8 @@ export function cloudflareWorkersAIAuth() {
35
40
  const accountId = await interaction.prompt({ type: "text", message: "Enter Cloudflare account ID" });
36
41
  return { type: "api_key", key, env: { CLOUDFLARE_ACCOUNT_ID: accountId } };
37
42
  },
38
- resolve: async ({ ctx, credential }) => {
39
- const resolved = await resolveCloudflareEnv("workers-ai", ctx, credential);
43
+ resolve: async ({ ctx, credential, signal }) => {
44
+ const resolved = await resolveCloudflareEnv("workers-ai", ctx, credential, signal);
40
45
  if (!resolved)
41
46
  return undefined;
42
47
  return {
@@ -60,8 +65,8 @@ export function cloudflareAIGatewayAuth() {
60
65
  env: { CLOUDFLARE_ACCOUNT_ID: accountId, CLOUDFLARE_GATEWAY_ID: gatewayId },
61
66
  };
62
67
  },
63
- resolve: async ({ ctx, credential }) => {
64
- const resolved = await resolveCloudflareEnv("ai-gateway", ctx, credential);
68
+ resolve: async ({ ctx, credential, signal }) => {
69
+ const resolved = await resolveCloudflareEnv("ai-gateway", ctx, credential, signal);
65
70
  if (!resolved)
66
71
  return undefined;
67
72
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-auth.js","sourceRoot":"","sources":["../../src/providers/cloudflare-auth.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ApiKeyAuth, ApiKeyCredential, AuthContext } from \"../auth/types.ts\";\nimport type { ProviderEnv } from \"../types.ts\";\n\nconst CLOUDFLARE_API_KEY = \"CLOUDFLARE_API_KEY\";\nconst CLOUDFLARE_ACCOUNT_ID = \"CLOUDFLARE_ACCOUNT_ID\";\nconst CLOUDFLARE_GATEWAY_ID = \"CLOUDFLARE_GATEWAY_ID\";\n\ntype CloudflareAuthKind = \"workers-ai\" | \"ai-gateway\";\n\nasync function resolveValue(\n\tname: string,\n\tctx: AuthContext,\n\tcredential: ApiKeyCredential | undefined,\n): Promise<string | undefined> {\n\t// Per-field merge: prefer the credential value, fall back to ambient env.\n\t// A credential carrying only the API key must still pick up the account /\n\t// gateway id from the environment.\n\tconst fromCredential = credential\n\t\t? name === CLOUDFLARE_API_KEY\n\t\t\t? credential.key\n\t\t\t: credential.env?.[name]\n\t\t: undefined;\n\treturn fromCredential ?? (await ctx.env(name));\n}\n\nasync function resolveCloudflareEnv(\n\tkind: CloudflareAuthKind,\n\tctx: AuthContext,\n\tcredential: ApiKeyCredential | undefined,\n): Promise<{ apiKey: string; env: ProviderEnv; source: string } | undefined> {\n\tconst apiKey = await resolveValue(CLOUDFLARE_API_KEY, ctx, credential);\n\tconst accountId = await resolveValue(CLOUDFLARE_ACCOUNT_ID, ctx, credential);\n\tconst gatewayId = kind === \"ai-gateway\" ? await resolveValue(CLOUDFLARE_GATEWAY_ID, ctx, credential) : undefined;\n\n\tif (!apiKey || !accountId || (kind === \"ai-gateway\" && !gatewayId)) return undefined;\n\n\treturn {\n\t\tapiKey,\n\t\tenv: {\n\t\t\tCLOUDFLARE_ACCOUNT_ID: accountId,\n\t\t\t...(gatewayId ? { CLOUDFLARE_GATEWAY_ID: gatewayId } : {}),\n\t\t},\n\t\tsource: credential ? \"stored credential\" : CLOUDFLARE_API_KEY,\n\t};\n}\n\nexport function cloudflareWorkersAIAuth(): ApiKeyAuth {\n\treturn {\n\t\tname: \"Cloudflare API key\",\n\t\tlogin: async (interaction) => {\n\t\t\tconst key = await interaction.prompt({ type: \"secret\", message: \"Enter Cloudflare API key\" });\n\t\t\tconst accountId = await interaction.prompt({ type: \"text\", message: \"Enter Cloudflare account ID\" });\n\t\t\treturn { type: \"api_key\", key, env: { CLOUDFLARE_ACCOUNT_ID: accountId } };\n\t\t},\n\t\tresolve: async ({ ctx, credential }) => {\n\t\t\tconst resolved = await resolveCloudflareEnv(\"workers-ai\", ctx, credential);\n\t\t\tif (!resolved) return undefined;\n\t\t\treturn {\n\t\t\t\tauth: { apiKey: resolved.apiKey },\n\t\t\t\tenv: resolved.env,\n\t\t\t\tsource: resolved.source,\n\t\t\t};\n\t\t},\n\t};\n}\n\nexport function cloudflareAIGatewayAuth(): ApiKeyAuth {\n\treturn {\n\t\tname: \"Cloudflare API key\",\n\t\tlogin: async (interaction) => {\n\t\t\tconst key = await interaction.prompt({ type: \"secret\", message: \"Enter Cloudflare API key\" });\n\t\t\tconst accountId = await interaction.prompt({ type: \"text\", message: \"Enter Cloudflare account ID\" });\n\t\t\tconst gatewayId = await interaction.prompt({ type: \"text\", message: \"Enter Cloudflare AI Gateway ID\" });\n\t\t\treturn {\n\t\t\t\ttype: \"api_key\",\n\t\t\t\tkey,\n\t\t\t\tenv: { CLOUDFLARE_ACCOUNT_ID: accountId, CLOUDFLARE_GATEWAY_ID: gatewayId },\n\t\t\t};\n\t\t},\n\t\tresolve: async ({ ctx, credential }) => {\n\t\t\tconst resolved = await resolveCloudflareEnv(\"ai-gateway\", ctx, credential);\n\t\t\tif (!resolved) return undefined;\n\t\t\treturn {\n\t\t\t\tauth: {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"cf-aig-authorization\": `Bearer ${resolved.apiKey}`,\n\t\t\t\t\t\tAuthorization: null,\n\t\t\t\t\t\t\"x-api-key\": null,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tenv: resolved.env,\n\t\t\t\tsource: resolved.source,\n\t\t\t};\n\t\t},\n\t};\n}\n"]}
1
+ {"version":3,"file":"cloudflare-auth.js","sourceRoot":"","sources":["../../src/providers/cloudflare-auth.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ApiKeyAuth, ApiKeyCredential, AuthContext } from \"../auth/types.ts\";\nimport type { ProviderEnv } from \"../types.ts\";\n\nconst CLOUDFLARE_API_KEY = \"CLOUDFLARE_API_KEY\";\nconst CLOUDFLARE_ACCOUNT_ID = \"CLOUDFLARE_ACCOUNT_ID\";\nconst CLOUDFLARE_GATEWAY_ID = \"CLOUDFLARE_GATEWAY_ID\";\n\ntype CloudflareAuthKind = \"workers-ai\" | \"ai-gateway\";\n\nasync function resolveValue(\n\tname: string,\n\tctx: AuthContext,\n\tcredential: ApiKeyCredential | undefined,\n\tsignal: AbortSignal,\n): Promise<string | undefined> {\n\t// Per-field merge: prefer the credential value, fall back to ambient env.\n\t// A credential carrying only the API key must still pick up the account /\n\t// gateway id from the environment.\n\tconst fromCredential = credential\n\t\t? name === CLOUDFLARE_API_KEY\n\t\t\t? credential.key\n\t\t\t: credential.env?.[name]\n\t\t: undefined;\n\tif (fromCredential !== undefined) return fromCredential;\n\tsignal.throwIfAborted();\n\tconst value = await ctx.env(name);\n\tsignal.throwIfAborted();\n\treturn value;\n}\n\nasync function resolveCloudflareEnv(\n\tkind: CloudflareAuthKind,\n\tctx: AuthContext,\n\tcredential: ApiKeyCredential | undefined,\n\tsignal: AbortSignal,\n): Promise<{ apiKey: string; env: ProviderEnv; source: string } | undefined> {\n\tconst apiKey = await resolveValue(CLOUDFLARE_API_KEY, ctx, credential, signal);\n\tconst accountId = await resolveValue(CLOUDFLARE_ACCOUNT_ID, ctx, credential, signal);\n\tconst gatewayId =\n\t\tkind === \"ai-gateway\" ? await resolveValue(CLOUDFLARE_GATEWAY_ID, ctx, credential, signal) : undefined;\n\n\tif (!apiKey || !accountId || (kind === \"ai-gateway\" && !gatewayId)) return undefined;\n\n\treturn {\n\t\tapiKey,\n\t\tenv: {\n\t\t\tCLOUDFLARE_ACCOUNT_ID: accountId,\n\t\t\t...(gatewayId ? { CLOUDFLARE_GATEWAY_ID: gatewayId } : {}),\n\t\t},\n\t\tsource: credential ? \"stored credential\" : CLOUDFLARE_API_KEY,\n\t};\n}\n\nexport function cloudflareWorkersAIAuth(): ApiKeyAuth {\n\treturn {\n\t\tname: \"Cloudflare API key\",\n\t\tlogin: async (interaction) => {\n\t\t\tconst key = await interaction.prompt({ type: \"secret\", message: \"Enter Cloudflare API key\" });\n\t\t\tconst accountId = await interaction.prompt({ type: \"text\", message: \"Enter Cloudflare account ID\" });\n\t\t\treturn { type: \"api_key\", key, env: { CLOUDFLARE_ACCOUNT_ID: accountId } };\n\t\t},\n\t\tresolve: async ({ ctx, credential, signal }) => {\n\t\t\tconst resolved = await resolveCloudflareEnv(\"workers-ai\", ctx, credential, signal);\n\t\t\tif (!resolved) return undefined;\n\t\t\treturn {\n\t\t\t\tauth: { apiKey: resolved.apiKey },\n\t\t\t\tenv: resolved.env,\n\t\t\t\tsource: resolved.source,\n\t\t\t};\n\t\t},\n\t};\n}\n\nexport function cloudflareAIGatewayAuth(): ApiKeyAuth {\n\treturn {\n\t\tname: \"Cloudflare API key\",\n\t\tlogin: async (interaction) => {\n\t\t\tconst key = await interaction.prompt({ type: \"secret\", message: \"Enter Cloudflare API key\" });\n\t\t\tconst accountId = await interaction.prompt({ type: \"text\", message: \"Enter Cloudflare account ID\" });\n\t\t\tconst gatewayId = await interaction.prompt({ type: \"text\", message: \"Enter Cloudflare AI Gateway ID\" });\n\t\t\treturn {\n\t\t\t\ttype: \"api_key\",\n\t\t\t\tkey,\n\t\t\t\tenv: { CLOUDFLARE_ACCOUNT_ID: accountId, CLOUDFLARE_GATEWAY_ID: gatewayId },\n\t\t\t};\n\t\t},\n\t\tresolve: async ({ ctx, credential, signal }) => {\n\t\t\tconst resolved = await resolveCloudflareEnv(\"ai-gateway\", ctx, credential, signal);\n\t\t\tif (!resolved) return undefined;\n\t\t\treturn {\n\t\t\t\tauth: {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"cf-aig-authorization\": `Bearer ${resolved.apiKey}`,\n\t\t\t\t\t\tAuthorization: null,\n\t\t\t\t\t\t\"x-api-key\": null,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tenv: resolved.env,\n\t\t\t\tsource: resolved.source,\n\t\t\t};\n\t\t},\n\t};\n}\n"]}
@@ -1,8 +1,12 @@
1
- import type { Api, Model, ProviderEnv, ProviderStreams } from "../types.ts";
2
- export declare function resolveCloudflareModel<TApi extends Api>(model: Model<TApi>, env: ProviderEnv | undefined): Model<TApi>;
1
+ import type { ProviderClassifier, ProviderEnv, ProviderStreams } from "../types.ts";
2
+ export declare function resolveCloudflareModel<TModel extends {
3
+ baseUrl: string;
4
+ }>(model: TModel, env: ProviderEnv | undefined): TModel;
3
5
  /**
4
6
  * Wrap an API implementation so Cloudflare account/gateway endpoint
5
7
  * placeholders materialize from the resolved provider env before dispatch.
6
8
  */
7
9
  export declare function cloudflareStreams(streams: ProviderStreams): ProviderStreams;
10
+ /** Classifier counterpart of {@link cloudflareStreams}. */
11
+ export declare function cloudflareClassifier(classifier: ProviderClassifier): ProviderClassifier;
8
12
  //# sourceMappingURL=cloudflare-stream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-stream.d.ts","sourceRoot":"","sources":["../../src/providers/cloudflare-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAK5E,wBAAgB,sBAAsB,CAAC,IAAI,SAAS,GAAG,EACtD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,GAAG,EAAE,WAAW,GAAG,SAAS,GAC1B,KAAK,CAAC,IAAI,CAAC,CAMb;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAO3E"}
1
+ {"version":3,"file":"cloudflare-stream.d.ts","sourceRoot":"","sources":["../../src/providers/cloudflare-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAKpF,wBAAgB,sBAAsB,CAAC,MAAM,SAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EACxE,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,WAAW,GAAG,SAAS,GAC1B,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAO3E;AAED,2DAA2D;AAC3D,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,kBAAkB,GAAG,kBAAkB,CAKvF"}
@@ -18,4 +18,10 @@ export function cloudflareStreams(streams) {
18
18
  streamSimple: (model, context, options) => streams.streamSimple(resolveCloudflareModel(model, options?.env), context, options),
19
19
  };
20
20
  }
21
+ /** Classifier counterpart of {@link cloudflareStreams}. */
22
+ export function cloudflareClassifier(classifier) {
23
+ return {
24
+ classify: (model, context, options) => classifier.classify(resolveCloudflareModel(model, options?.env), context, options),
25
+ };
26
+ }
21
27
  //# sourceMappingURL=cloudflare-stream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-stream.js","sourceRoot":"","sources":["../../src/providers/cloudflare-stream.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AACtD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAEtD,MAAM,UAAU,sBAAsB,CACrC,KAAkB,EAClB,GAA4B;IAE5B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;SAC3B,UAAU,CAAC,IAAI,qBAAqB,GAAG,EAAE,GAAG,CAAC,qBAAqB,CAAC,IAAI,IAAI,qBAAqB,GAAG,CAAC;SACpG,UAAU,CAAC,IAAI,qBAAqB,GAAG,EAAE,GAAG,CAAC,qBAAqB,CAAC,IAAI,IAAI,qBAAqB,GAAG,CAAC,CAAC;IACvG,OAAO,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAwB;IACzD,OAAO;QACN,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CACnC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;QAC9E,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CACzC,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;KACpF,CAAC;AACH,CAAC","sourcesContent":["import type { Api, Model, ProviderEnv, ProviderStreams } from \"../types.ts\";\n\nconst CLOUDFLARE_ACCOUNT_ID = \"CLOUDFLARE_ACCOUNT_ID\";\nconst CLOUDFLARE_GATEWAY_ID = \"CLOUDFLARE_GATEWAY_ID\";\n\nexport function resolveCloudflareModel<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tenv: ProviderEnv | undefined,\n): Model<TApi> {\n\tif (!env) return model;\n\tconst baseUrl = model.baseUrl\n\t\t.replaceAll(`{${CLOUDFLARE_ACCOUNT_ID}}`, env[CLOUDFLARE_ACCOUNT_ID] ?? `{${CLOUDFLARE_ACCOUNT_ID}}`)\n\t\t.replaceAll(`{${CLOUDFLARE_GATEWAY_ID}}`, env[CLOUDFLARE_GATEWAY_ID] ?? `{${CLOUDFLARE_GATEWAY_ID}}`);\n\treturn baseUrl === model.baseUrl ? model : { ...model, baseUrl };\n}\n\n/**\n * Wrap an API implementation so Cloudflare account/gateway endpoint\n * placeholders materialize from the resolved provider env before dispatch.\n */\nexport function cloudflareStreams(streams: ProviderStreams): ProviderStreams {\n\treturn {\n\t\tstream: (model, context, options) =>\n\t\t\tstreams.stream(resolveCloudflareModel(model, options?.env), context, options),\n\t\tstreamSimple: (model, context, options) =>\n\t\t\tstreams.streamSimple(resolveCloudflareModel(model, options?.env), context, options),\n\t};\n}\n"]}
1
+ {"version":3,"file":"cloudflare-stream.js","sourceRoot":"","sources":["../../src/providers/cloudflare-stream.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AACtD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAEtD,MAAM,UAAU,sBAAsB,CACrC,KAAa,EACb,GAA4B;IAE5B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;SAC3B,UAAU,CAAC,IAAI,qBAAqB,GAAG,EAAE,GAAG,CAAC,qBAAqB,CAAC,IAAI,IAAI,qBAAqB,GAAG,CAAC;SACpG,UAAU,CAAC,IAAI,qBAAqB,GAAG,EAAE,GAAG,CAAC,qBAAqB,CAAC,IAAI,IAAI,qBAAqB,GAAG,CAAC,CAAC;IACvG,OAAO,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAwB;IACzD,OAAO;QACN,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CACnC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;QAC9E,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CACzC,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;KACpF,CAAC;AACH,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,oBAAoB,CAAC,UAA8B;IAClE,OAAO;QACN,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CACrC,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;KACnF,CAAC;AACH,CAAC","sourcesContent":["import type { ProviderClassifier, ProviderEnv, ProviderStreams } from \"../types.ts\";\n\nconst CLOUDFLARE_ACCOUNT_ID = \"CLOUDFLARE_ACCOUNT_ID\";\nconst CLOUDFLARE_GATEWAY_ID = \"CLOUDFLARE_GATEWAY_ID\";\n\nexport function resolveCloudflareModel<TModel extends { baseUrl: string }>(\n\tmodel: TModel,\n\tenv: ProviderEnv | undefined,\n): TModel {\n\tif (!env) return model;\n\tconst baseUrl = model.baseUrl\n\t\t.replaceAll(`{${CLOUDFLARE_ACCOUNT_ID}}`, env[CLOUDFLARE_ACCOUNT_ID] ?? `{${CLOUDFLARE_ACCOUNT_ID}}`)\n\t\t.replaceAll(`{${CLOUDFLARE_GATEWAY_ID}}`, env[CLOUDFLARE_GATEWAY_ID] ?? `{${CLOUDFLARE_GATEWAY_ID}}`);\n\treturn baseUrl === model.baseUrl ? model : { ...model, baseUrl };\n}\n\n/**\n * Wrap an API implementation so Cloudflare account/gateway endpoint\n * placeholders materialize from the resolved provider env before dispatch.\n */\nexport function cloudflareStreams(streams: ProviderStreams): ProviderStreams {\n\treturn {\n\t\tstream: (model, context, options) =>\n\t\t\tstreams.stream(resolveCloudflareModel(model, options?.env), context, options),\n\t\tstreamSimple: (model, context, options) =>\n\t\t\tstreams.streamSimple(resolveCloudflareModel(model, options?.env), context, options),\n\t};\n}\n\n/** Classifier counterpart of {@link cloudflareStreams}. */\nexport function cloudflareClassifier(classifier: ProviderClassifier): ProviderClassifier {\n\treturn {\n\t\tclassify: (model, context, options) =>\n\t\t\tclassifier.classify(resolveCloudflareModel(model, options?.env), context, options),\n\t};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-workers-ai.d.ts","sourceRoot":"","sources":["../../src/providers/cloudflare-workers-ai.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7D,wBAAgB,2BAA2B,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAQ5E"}
1
+ {"version":3,"file":"cloudflare-workers-ai.d.ts","sourceRoot":"","sources":["../../src/providers/cloudflare-workers-ai.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAQ7D,wBAAgB,2BAA2B,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAc5E"}
@@ -1,15 +1,22 @@
1
+ import { cloudflareWorkersAISystemOneApi } from "../api/cloudflare-workers-ai-system-one.lazy.js";
1
2
  import { openAICompletionsApi } from "../api/openai-completions.lazy.js";
2
3
  import { createProvider } from "../models.js";
3
4
  import { cloudflareWorkersAIAuth } from "./cloudflare-auth.js";
4
- import { cloudflareStreams } from "./cloudflare-stream.js";
5
- import { CLOUDFLARE_WORKERS_AI_MODELS } from "./cloudflare-workers-ai.models.js";
5
+ import { cloudflareClassifier, cloudflareStreams } from "./cloudflare-stream.js";
6
+ import { CLOUDFLARE_WORKERS_AI_CLASSIFIER_MODELS, CLOUDFLARE_WORKERS_AI_MODELS, } from "./cloudflare-workers-ai.models.js";
6
7
  export function cloudflareWorkersAIProvider() {
7
8
  return createProvider({
8
9
  id: "cloudflare-workers-ai",
9
10
  name: "Cloudflare Workers AI",
10
11
  auth: { apiKey: cloudflareWorkersAIAuth() },
11
- models: Object.values(CLOUDFLARE_WORKERS_AI_MODELS),
12
+ models: [
13
+ ...Object.values(CLOUDFLARE_WORKERS_AI_MODELS),
14
+ ...Object.values(CLOUDFLARE_WORKERS_AI_CLASSIFIER_MODELS),
15
+ ],
12
16
  api: cloudflareStreams(openAICompletionsApi()),
17
+ classifiers: {
18
+ "cloudflare-workers-ai-system-one": cloudflareClassifier(cloudflareWorkersAISystemOneApi()),
19
+ },
13
20
  });
14
21
  }
15
22
  //# sourceMappingURL=cloudflare-workers-ai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-workers-ai.js","sourceRoot":"","sources":["../../src/providers/cloudflare-workers-ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF,MAAM,UAAU,2BAA2B;IAC1C,OAAO,cAAc,CAAC;QACrB,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,EAAE;QAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC;QACnD,GAAG,EAAE,iBAAiB,CAAC,oBAAoB,EAAE,CAAC;KAC9C,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { cloudflareWorkersAIAuth } from \"./cloudflare-auth.ts\";\nimport { cloudflareStreams } from \"./cloudflare-stream.ts\";\nimport { CLOUDFLARE_WORKERS_AI_MODELS } from \"./cloudflare-workers-ai.models.ts\";\n\nexport function cloudflareWorkersAIProvider(): Provider<\"openai-completions\"> {\n\treturn createProvider({\n\t\tid: \"cloudflare-workers-ai\",\n\t\tname: \"Cloudflare Workers AI\",\n\t\tauth: { apiKey: cloudflareWorkersAIAuth() },\n\t\tmodels: Object.values(CLOUDFLARE_WORKERS_AI_MODELS),\n\t\tapi: cloudflareStreams(openAICompletionsApi()),\n\t});\n}\n"]}
1
+ {"version":3,"file":"cloudflare-workers-ai.js","sourceRoot":"","sources":["../../src/providers/cloudflare-workers-ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EACN,uCAAuC,EACvC,4BAA4B,GAC5B,MAAM,mCAAmC,CAAC;AAE3C,MAAM,UAAU,2BAA2B;IAC1C,OAAO,cAAc,CAAuB;QAC3C,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,EAAE;QAC3C,MAAM,EAAE;YACP,GAAG,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC;YAC9C,GAAG,MAAM,CAAC,MAAM,CAAC,uCAAuC,CAAC;SACzD;QACD,GAAG,EAAE,iBAAiB,CAAC,oBAAoB,EAAE,CAAC;QAC9C,WAAW,EAAE;YACZ,kCAAkC,EAAE,oBAAoB,CAAC,+BAA+B,EAAE,CAAC;SAC3F;KACD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { cloudflareWorkersAISystemOneApi } from \"../api/cloudflare-workers-ai-system-one.lazy.ts\";\nimport { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { cloudflareWorkersAIAuth } from \"./cloudflare-auth.ts\";\nimport { cloudflareClassifier, cloudflareStreams } from \"./cloudflare-stream.ts\";\nimport {\n\tCLOUDFLARE_WORKERS_AI_CLASSIFIER_MODELS,\n\tCLOUDFLARE_WORKERS_AI_MODELS,\n} from \"./cloudflare-workers-ai.models.ts\";\n\nexport function cloudflareWorkersAIProvider(): Provider<\"openai-completions\"> {\n\treturn createProvider<\"openai-completions\">({\n\t\tid: \"cloudflare-workers-ai\",\n\t\tname: \"Cloudflare Workers AI\",\n\t\tauth: { apiKey: cloudflareWorkersAIAuth() },\n\t\tmodels: [\n\t\t\t...Object.values(CLOUDFLARE_WORKERS_AI_MODELS),\n\t\t\t...Object.values(CLOUDFLARE_WORKERS_AI_CLASSIFIER_MODELS),\n\t\t],\n\t\tapi: cloudflareStreams(openAICompletionsApi()),\n\t\tclassifiers: {\n\t\t\t\"cloudflare-workers-ai-system-one\": cloudflareClassifier(cloudflareWorkersAISystemOneApi()),\n\t\t},\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/cloudflare-workers-ai.json";
3
- export declare const CLOUDFLARE_WORKERS_AI_MODELS: ModelCatalog<typeof values, "cloudflare-workers-ai">;
3
+ export declare const CLOUDFLARE_WORKERS_AI_MODELS: ChatModelCatalog<typeof values, "cloudflare-workers-ai">;
4
+ export declare const CLOUDFLARE_WORKERS_AI_IMAGE_MODELS: ImageModelCatalog<typeof values, "cloudflare-workers-ai">;
5
+ export declare const CLOUDFLARE_WORKERS_AI_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, "cloudflare-workers-ai">;
4
6
  //# sourceMappingURL=cloudflare-workers-ai.models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-workers-ai.models.d.ts","sourceRoot":"","sources":["../../src/providers/cloudflare-workers-ai.models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,MAAM,MAAM,mCAAmC,CAAuB;AAE7E,eAAO,MAAM,4BAA4B,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,uBAAuB,CAG7F,CAAC"}
1
+ {"version":3,"file":"cloudflare-workers-ai.models.d.ts","sourceRoot":"","sources":["../../src/providers/cloudflare-workers-ai.models.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAI3B,KAAK,iBAAiB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,mCAAmC,CAAuB;AAE7E,eAAO,MAAM,4BAA4B,EAAE,gBAAgB,CAAC,OAAO,MAAM,EAAE,uBAAuB,CACzC,CAAC;AAE1D,eAAO,MAAM,kCAAkC,EAAE,iBAAiB,CAAC,OAAO,MAAM,EAAE,uBAAuB,CAC/C,CAAC;AAE3D,eAAO,MAAM,uCAAuC,EAAE,sBAAsB,CAAC,OAAO,MAAM,EAAE,uBAAuB,CACpD,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/cloudflare-workers-ai.json" with { type: "json" };
5
- export const CLOUDFLARE_WORKERS_AI_MODELS = flattenModelCatalog("cloudflare-workers-ai", values);
5
+ export const CLOUDFLARE_WORKERS_AI_MODELS = flattenChatModelCatalog("cloudflare-workers-ai", values);
6
+ export const CLOUDFLARE_WORKERS_AI_IMAGE_MODELS = flattenImageModelCatalog("cloudflare-workers-ai", values);
7
+ export const CLOUDFLARE_WORKERS_AI_CLASSIFIER_MODELS = flattenClassifierModelCatalog("cloudflare-workers-ai", values);
6
8
  //# sourceMappingURL=cloudflare-workers-ai.models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-workers-ai.models.js","sourceRoot":"","sources":["../../src/providers/cloudflare-workers-ai.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,MAAM,MAAM,mCAAmC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAE7E,MAAM,CAAC,MAAM,4BAA4B,GAAyD,mBAAmB,CACpH,uBAAuB,EACvB,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/cloudflare-workers-ai.json\" with { type: \"json\" };\n\nexport const CLOUDFLARE_WORKERS_AI_MODELS: ModelCatalog<typeof values, \"cloudflare-workers-ai\"> = flattenModelCatalog(\n\t\"cloudflare-workers-ai\",\n\tvalues,\n);\n"]}
1
+ {"version":3,"file":"cloudflare-workers-ai.models.js","sourceRoot":"","sources":["../../src/providers/cloudflare-workers-ai.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,EAGN,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,GAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,MAAM,MAAM,mCAAmC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAE7E,MAAM,CAAC,MAAM,4BAA4B,GACxC,uBAAuB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,kCAAkC,GAC9C,wBAAwB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,uCAAuC,GACnD,6BAA6B,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport {\n\ttype ChatModelCatalog,\n\ttype ClassifierModelCatalog,\n\tflattenChatModelCatalog,\n\tflattenClassifierModelCatalog,\n\tflattenImageModelCatalog,\n\ttype ImageModelCatalog,\n} from \"../model-catalog.ts\";\nimport values from \"./data/cloudflare-workers-ai.json\" with { type: \"json\" };\n\nexport const CLOUDFLARE_WORKERS_AI_MODELS: ChatModelCatalog<typeof values, \"cloudflare-workers-ai\"> =\n\tflattenChatModelCatalog(\"cloudflare-workers-ai\", values);\n\nexport const CLOUDFLARE_WORKERS_AI_IMAGE_MODELS: ImageModelCatalog<typeof values, \"cloudflare-workers-ai\"> =\n\tflattenImageModelCatalog(\"cloudflare-workers-ai\", values);\n\nexport const CLOUDFLARE_WORKERS_AI_CLASSIFIER_MODELS: ClassifierModelCatalog<typeof values, \"cloudflare-workers-ai\"> =\n\tflattenClassifierModelCatalog(\"cloudflare-workers-ai\", values);\n"]}
@@ -1 +1 @@
1
- {"schemaVersion":3,"generatedAt":"2026-08-22T11:58:23.102Z","structureHash":"02b38ab9091a465a4b3a6ab41a38fae280fc4c508077e2932f858828bc245092","files":{"amazon-bedrock.json":"71441520503c82d14c788a16fdbd5314adc5b7b34abd65a3f260b96f493c2e90","ant-ling.json":"4979fe79d99ed97382d7ce40170c6132e932e77906de1eb54464c042e7d63633","anthropic.json":"e22c277e3a1ffddc3d2701b72787c9e0bd67b835de6b4cb806677b6b6a89a2f7","azure-openai-responses.json":"5315b6a2299fefbdbb6cc13a720544077c9498132ad5e3a7d76a8c1daa8e9335","cerebras.json":"38272a7525d6680c71bb4bb3c4085e871768b400832e2013b0e7fd92f8fd4f05","cloudflare-ai-gateway.json":"244af2cfdfaf75c4135ce4c7865220057647c2d8744b52af1d55392879df8d28","cloudflare-workers-ai.json":"89e63a18886ecedd1d995cc90e4bfe06f73e2a79117b2f54f58fe60cdcf63df5","deepseek.json":"e2dcfe5499ed6ecc1f6c78abec09b948fbf61e0e44b04f6d398d5bfb5021ee77","fireworks.json":"2c85d89cd04288b15ff8a23af5eba72779cae9221f4bcfed1720ce6d41629fcc","github-copilot.json":"d235f33b932953739618c54a365e65eebfacedd10b24ec130abf8d73769de12c","google-vertex.json":"fb7586fc955da7b7d7d11d641954f496fbbb42cf3e4cbba66d7116ea3b37d5ed","google.json":"b5572904165d37ab594eafc3ab7f29774e35747b5dd211144ec01532db9217c1","groq.json":"f1eb899453e70b5e4479fe6eb78869ee99121fa6d4a019a5a05ab42d2ada8992","huggingface.json":"b2f15353177738beb5c0865ffcd92cc470e1c8ba6b6a4d2707cda12212a6043b","kimi-coding.json":"5e28e32e5b16df506a3a1c620ed7870fa7e5e57d8ede4a2aa44dbb24ecf1ba2f","minimax-cn.json":"8ccd71ff838f4b78bb88809babb0dc32a4fcfaec2bc4f4083841000428df4f77","minimax.json":"253edd4c910a41c8bb252400ba099f3a4de0a8900ce154319288ab091b372987","mistral.json":"4f9d84bf1ba10cb14ff2c9e23e77d63441756ef3500375dd4ad10094614b215b","moonshotai-cn.json":"1e6146ff3477883636448c0f44222f0a52b3c4562ef8f4eecf7e941cdd59d12e","moonshotai.json":"d8d5209873058ddccd37c1f026833e2ea3f9476c3dc9628b4a940d407acc0b2e","nvidia.json":"e097a069be14c0840da2e906c48c551130f0d344e2b5fd5694d85f9559126de5","openai-codex.json":"4a73818291987693fcb53e9e61b4be3429ffd78b3f64ea877a34c5f9928c89e1","openai.json":"60a1af0fd4c407733079283bb485ab1d8d592abf25f13632d83ba40425e11177","opencode-go.json":"7e3e940e190929c9cf9eec09418fec7bbb442167b01608ffe55f6fee78be84d2","opencode.json":"9d7fb901d5796f443e465f843f538840f72d4924e5fa1f051782a34b0d700417","openrouter.json":"5815e1a1c7a3b3f92cffb373f11d695acd2a3a996fa534c8dab8ab1fff75c304","qwen-token-plan-cn.json":"700cb41cdee4c0ae2a5159eb3ab43f4cedc9d43e87c6fd1bcd410d71431f9856","qwen-token-plan.json":"f85715f7f2023a162c47d1a84ba73747e2580d0a9aa33799b3232ce19527c1ab","together.json":"f7c9ba0441c1cbb8af41aaea3cfaa12559e1235a7335898e705d5918dc308c97","vercel-ai-gateway.json":"0460a385647ccbdba932d6b615c72acafbe44b95a5268f0d346ff3963b3a4318","xai.json":"9668b607ac69237089e84efa3f0590dc1e28d8e24c9d1afa3a2b7cf72efa30e0","xiaomi-token-plan-ams.json":"a36446cb9e3cb4f7054617676fd711092245a74f703ba89573f21d2673b85fa8","xiaomi-token-plan-cn.json":"c295dadf4097b5d86af15e924fb2a1a6342bae9e0a9a5839c9fca216308c51e5","xiaomi-token-plan-sgp.json":"93d359575c2348c97d79a2b14e1e9437199bd4aee948d58611b3fbab75cd9fb3","xiaomi.json":"f06f1011d606d22311b1f4c50eb36d38b8cd99abf5760faee657d5559e87452b","zai-coding-cn.json":"4540512cd4c6e4c2a279f87c4ea2c20fe5200ae05f3b2eda787337f3cb6033d5","zai.json":"83179b09ddf00c5f7e41a22c662744897396406c16f80ee39d9387aa3e03a680"}}
1
+ {"schemaVersion":6,"generatedAt":"2026-10-01T10:06:30.139Z","structureHash":"14f1031aee17563dbcbdd326c446a0f8b23f2a15758f769ae11aa508654cf2e3","files":{"amazon-bedrock.json":"b962444f8daad1e3022d3e4bd59af8e8802d6012615397015c825996219e4af5","ant-ling.json":"628feab3ef6c7d80ce96f75999804e1d9f05fec3851e5302e30fff3b69db90f6","anthropic.json":"3ff00b68990382e42626ebd1b65dcc28ae3cad9e6faa8920331ba92f067f1b3a","azure-openai-responses.json":"adeb2cf9d944d84f81b0d633c2e4e6bfa548a806c431902bd037c5f36500be21","baseten.json":"b04d1423d6958bec857ffccc36726f091ec1a8f3a09cf0836b64cc94b0ee697d","cerebras.json":"3eccb58c5de3d0dc7ba49dc6e477ba29f00cb3150ce0a35cc90d59e6b5ab368e","cloudflare-ai-gateway.json":"52decade622d1d25f1af90385b1aec7331dad00d56e010a5e4d15118efae67ce","cloudflare-workers-ai.json":"b9f76cc83756a05920a8a7046c515919a1de918331b860a211f309bb716c4bb0","deepseek.json":"10a296fb3e898f7715c80890c8af0af4f5fd58f22dbcd6612fdc5d762157ccdc","fireworks.json":"d6144ba451bd7a0617669527bec1898f97a633f7d7ea5035d8e03234550340c0","github-copilot.json":"573f05c2dfc0c8158e252dd286d6b174cd323f965284d7ae157439d8e3dea92c","google-vertex.json":"40090c680538bc867f2624d986a449f361be4dfa6ba96d7a27402050f036e009","google.json":"c0f5a633e5e5a5044432db3e537f4bc674d4de18df09325c6349547fcc13cabe","groq.json":"910952ad9dad07856983459d63fce0148dba1203edd7b10d801a77c5824f3405","huggingface.json":"1b8604bd31a5e05fe43a40ec1ec6dfc1a51a28b0b020151ef057fab43f57c923","kimi-coding.json":"582250b920454d98940da3e7e99d30b807edbea28f2eb8ac15f658d2ef41e8fc","meta.json":"0c7e9a370a7005c5a89dc94f0f93bc67b8935c3f802de324f11af6ff56fff429","minimax-cn.json":"f962c20ee6a6a342820f778e9dc363a18a524bf11998f6e2c57f2989915d62e5","minimax.json":"17a432f80d0ea6dd26eade80a4314250d3a855678601728a5f70dd8fa0d21dd2","mistral.json":"10f33bff9adf1248f7e6848e5890c265399f1f94e5b42cfdc28c109d547af98d","moonshotai-cn.json":"79c9585dc84ee525ebaebbc78b3c55f3d369ec884d4f943488f1e0b14e3587f5","moonshotai.json":"1da2c4e34f22aef17a07c974d85bdee8e1b68b6dc712e3769c935b3f1e7dadca","nvidia.json":"3b4e7b799bf3eaacd1af0491eef77fe33147ea7f72a3a9fa54d77af0e7eacf4c","openai-codex.json":"3cc35a7e122e5c77ee8ec30a9a3bd8bd59629997e85ba2cb3f9e0ed62e9a09c0","openai.json":"87faafcdd168c9b6fdaef521137834a207437daf0d71641fd0a2f3dddf4d1ecb","opencode-go.json":"d05b3eb87b81c6e5a94801484e668e660fe60c68f06a972b716d581c3bbd7c25","opencode.json":"50ea65154b6f3ec63fa03a99b663b00e194d22b54195a25ba3dd1306db659e26","openrouter.json":"29c6ead4ce7959d1201f6f72b7240575e1302f414f885dde413f7fb432fede18","qwen-token-plan-cn.json":"2469a4091c474ec3db0a49a9962d8d2726c074ad9065b96bc4e0c87861c4c6c5","qwen-token-plan-individual.json":"0fb7cf64faf39d1a3b0a884210a86c87084b805eda15644f5f39293287b959dd","qwen-token-plan.json":"eff10620cb577142de4ec02698d5961a71fda2fe4f6ae7ea9432bad9d6844176","radius.json":"c8e24a65119360946749c6d5e45782d84ab2794df661b369bb27c2bff3b72e67","together.json":"94ec3839972061405885d64f5fdbde48eb1f29a159be5e607e9770befd54e28e","typesafe.json":"a4429a2f696d5cc5273969af61a7310bda07d6bdcd27bf9ac9c76c534cc43716","vercel-ai-gateway.json":"207144d2dcba7b538f06bc5d99ec8ab81c171276306267bd55fa94a713246927","xai.json":"879c49b78b663a52a220ac4ee013e726b10c4f50aaa03bc58ee53a4b54c76928","xiaomi-token-plan-ams.json":"ca65178f4525d9705bc8d085ed136cecbe149c4080e857ea6a64ae643d2ac00a","xiaomi-token-plan-cn.json":"b065326926681c2262084e59c1c19ebdaf146c07107b5242c76b456becf74db0","xiaomi-token-plan-sgp.json":"92c3d6d707f81fd9cd2b6d1fb57dc431d90ba51e10fe49d97bc8806035c23492","xiaomi.json":"b81d01a374f7b558728c78d81f4168efa9c8996e6e2b5618409a8094b083c759","zai-coding-cn.json":"ee5ee705fb6e413a6088db5e3616c27fce802a8ece6c355f1db35490d787f610","zai.json":"58e6642fdfb736f0b9a4a277c760c536a3cea66a030abbfb2615f7b2851d5c6f"}}