@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,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":"AAGA,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAChD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AACtD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAItD,KAAK,UAAU,YAAY,CAC1B,IAAY,EACZ,GAAgB,EAChB,UAAwC;IAExC,0EAA0E;IAC1E,0EAA0E;IAC1E,mCAAmC;IACnC,MAAM,cAAc,GAAG,UAAU;QAChC,CAAC,CAAC,IAAI,KAAK,kBAAkB;YAC5B,CAAC,CAAC,UAAU,CAAC,GAAG;YAChB,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACzB,CAAC,CAAC,SAAS,CAAC;IACb,OAAO,cAAc,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,oBAAoB,CAClC,IAAwB,EACxB,GAAgB,EAChB,UAAwC;IAExC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,kBAAkB,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,qBAAqB,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,qBAAqB,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEjH,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAErF,OAAO;QACN,MAAM;QACN,GAAG,EAAE;YACJ,qBAAqB,EAAE,SAAS;YAChC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D;QACD,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB;KAC7D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB;IACtC,OAAO;QACN,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;YAC5B,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAC9F,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;YACrG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,qBAAqB,EAAE,SAAS,EAAE,EAAE,CAAC;QAC5E,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE;YACtC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,YAAY,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC3E,IAAI,CAAC,QAAQ;gBAAE,OAAO,SAAS,CAAC;YAChC,OAAO;gBACN,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;gBACjC,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;aACvB,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB;IACtC,OAAO;QACN,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;YAC5B,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAC9F,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;YACrG,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAC;YACxG,OAAO;gBACN,IAAI,EAAE,SAAS;gBACf,GAAG;gBACH,GAAG,EAAE,EAAE,qBAAqB,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE;aAC3E,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE;YACtC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,YAAY,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;YAC3E,IAAI,CAAC,QAAQ;gBAAE,OAAO,SAAS,CAAC;YAChC,OAAO;gBACN,IAAI,EAAE;oBACL,OAAO,EAAE;wBACR,sBAAsB,EAAE,UAAU,QAAQ,CAAC,MAAM,EAAE;wBACnD,aAAa,EAAE,IAAI;wBACnB,WAAW,EAAE,IAAI;qBACjB;iBACD;gBACD,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;aACvB,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC","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-07-30T08:42:23.894Z","structureHash":"5d82f5b1946bdf6d01733aa2a4e4410849c6d44a2ad3038171078c17aed367ce","files":{"amazon-bedrock.json":"1aabd3227d32b332727eec7638cebdbd1323d2e7eedbf9b174226c5d38196df9","ant-ling.json":"4979fe79d99ed97382d7ce40170c6132e932e77906de1eb54464c042e7d63633","anthropic.json":"fea1226a62396c8d4a3d9c3b7f65d4dc527ac025d05719880418d3a2b0665a69","azure-openai-responses.json":"2d13ecc23826b5be73f3628fca5f70cc2c5c15ff609b41e4acba8167cd40934b","cerebras.json":"3fd3e19b83ab4be07d27817e25e5be0ffe4158b1394f0311d6a22d9f03847728","cloudflare-ai-gateway.json":"692b375a3bcb11743a9c1899442caecc3861163d9424356d3d073d9fa5c04091","cloudflare-workers-ai.json":"03b19d69433c843512e953390d51d4578e9b91f19098a9b14ff820c001623598","deepseek.json":"0dcc807a4e5827b488c6ceac87884ff6e735e01cf4f2ddfec9dd812e6fde041b","fireworks.json":"befd3127f292d32e62306da05469e93e10d8b0e6572dbc2df991e3f9671e12f2","github-copilot.json":"3b30436a39d6be22dc8f809e8a7e25e85d2c91a5c9f180692ebf71be70163c60","google-vertex.json":"99d0b89ac9d8dc460ed922236abffbe88c9381af4d35046d2ad3a8f08fa2560c","google.json":"bcf8a8d59ccbb75bc6fb4a261a37ac4b7c806f40ee7313b4411178964be5fa37","groq.json":"868c90a897f75f866e09a585f6aee5cb991e40a9c3281497b5842a23de7d9add","huggingface.json":"d1952ba962c983a9f52a50323cf2475081a69b26b79467b3a9a9a06f8ab68899","kimi-coding.json":"ba42a26a69e5cb2122c0b384ba572efae93f42239ad86f26c2b7320a14aa75a1","minimax-cn.json":"8ccd71ff838f4b78bb88809babb0dc32a4fcfaec2bc4f4083841000428df4f77","minimax.json":"253edd4c910a41c8bb252400ba099f3a4de0a8900ce154319288ab091b372987","mistral.json":"44531201e872713923b7544a1f75a048d31fa25292e3e1f9f896f608a52e412d","moonshotai-cn.json":"1e6146ff3477883636448c0f44222f0a52b3c4562ef8f4eecf7e941cdd59d12e","moonshotai.json":"d8d5209873058ddccd37c1f026833e2ea3f9476c3dc9628b4a940d407acc0b2e","nvidia.json":"33c498ab62940fe9ca659826c35cc922a77938a5f7edbe4443c10d9133323e87","openai-codex.json":"c3313710bc6910e6bbcb06d5867247e97ec3fa6c2af9bc780f8a3eefb03e32e1","openai.json":"8e3852ef3567b23d2ab03b0f52f1caeb77e6e776f248e6111f851ccbe0fca8b6","opencode-go.json":"57a677764bc885c83fbbba46ad5d418baabe012a062424a0f6d8d488352102ce","opencode.json":"d4df3d4d4f8ef5970fbdfd02cdd5a643bddd5a1664307bb45da3503615a3e08e","openrouter.json":"53ca452e62d8076615a5ef2ec3c3706e2cc72ebd85dd72c317f52f54047d21fb","qwen-token-plan-cn.json":"9c5d76e655f9e74818c4bd137b4385252b92a0615f42da7ffabb4d61a4dc2f1a","qwen-token-plan.json":"4f89469fe53236f97c789b019d426e180f3a944b65c833c8b9a5415c2557ff24","together.json":"7192caa28dc8b59bca1d62d291708903413aac63e44d7b76362294171f2df018","vercel-ai-gateway.json":"a0f3afb539344bf832ff9676bd7b2ea9cd87924e739913dfb73688e3d10738fe","xai.json":"4cbdbfbbf915246369b9bacbc6f1feeb56accdac9f3444456343f750547f2f38","xiaomi-token-plan-ams.json":"7ce8ed244672c45737d286ff3ca9c3a2686a5d4b2f0c5f71ab9348c14b14daf3","xiaomi-token-plan-cn.json":"684892b5fe6fa371d6040d2011c0fa33facd650d2eaf19f5dbee8efb33016200","xiaomi-token-plan-sgp.json":"b19e79b82ac4fdcb080e6d220106797504c885ed70b27fc2b3c1aa4810f32963","xiaomi.json":"810368d3828c8bb9498012a0d48639030c0c216b8c13e79da02daa515aa23448","zai-coding-cn.json":"7408bc46d80b2199987f54f0df41126ef16e0621d7c0f90aaa1d70df3abb590b","zai.json":"602457a21f65879fc5273deaf89243e9b00c0c29c5503ae97ed4d2fb4548ed2b"}}
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"}}