@draht/ai 2026.6.11 → 2026.7.7-1

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 (557) hide show
  1. package/dist/api/anthropic-messages.d.ts +71 -0
  2. package/dist/api/anthropic-messages.d.ts.map +1 -0
  3. package/dist/api/anthropic-messages.js +972 -0
  4. package/dist/api/anthropic-messages.js.map +1 -0
  5. package/dist/api/anthropic-messages.lazy.d.ts +3 -0
  6. package/dist/api/anthropic-messages.lazy.d.ts.map +1 -0
  7. package/dist/api/anthropic-messages.lazy.js +3 -0
  8. package/dist/api/anthropic-messages.lazy.js.map +1 -0
  9. package/dist/api/azure-openai-responses.d.ts +15 -0
  10. package/dist/api/azure-openai-responses.d.ts.map +1 -0
  11. package/dist/api/azure-openai-responses.js +222 -0
  12. package/dist/api/azure-openai-responses.js.map +1 -0
  13. package/dist/api/azure-openai-responses.lazy.d.ts +3 -0
  14. package/dist/api/azure-openai-responses.lazy.d.ts.map +1 -0
  15. package/dist/api/azure-openai-responses.lazy.js +3 -0
  16. package/dist/api/azure-openai-responses.lazy.js.map +1 -0
  17. package/dist/api/bedrock-converse-stream.d.ts +38 -0
  18. package/dist/api/bedrock-converse-stream.d.ts.map +1 -0
  19. package/dist/api/bedrock-converse-stream.js +876 -0
  20. package/dist/api/bedrock-converse-stream.js.map +1 -0
  21. package/dist/api/bedrock-converse-stream.lazy.d.ts +9 -0
  22. package/dist/api/bedrock-converse-stream.lazy.d.ts.map +1 -0
  23. package/dist/api/bedrock-converse-stream.lazy.js +30 -0
  24. package/dist/api/bedrock-converse-stream.lazy.js.map +1 -0
  25. package/dist/{providers → api}/cloudflare.d.ts +0 -4
  26. package/dist/api/cloudflare.d.ts.map +1 -0
  27. package/dist/{providers → api}/cloudflare.js +0 -17
  28. package/dist/api/cloudflare.js.map +1 -0
  29. package/dist/api/github-copilot-headers.d.ts.map +1 -0
  30. package/dist/api/github-copilot-headers.js.map +1 -0
  31. package/dist/api/google-generative-ai.d.ts +13 -0
  32. package/dist/api/google-generative-ai.d.ts.map +1 -0
  33. package/dist/api/google-generative-ai.js +407 -0
  34. package/dist/api/google-generative-ai.js.map +1 -0
  35. package/dist/api/google-generative-ai.lazy.d.ts +3 -0
  36. package/dist/api/google-generative-ai.lazy.d.ts.map +1 -0
  37. package/dist/api/google-generative-ai.lazy.js +3 -0
  38. package/dist/api/google-generative-ai.lazy.js.map +1 -0
  39. package/dist/api/google-shared.d.ts.map +1 -0
  40. package/dist/api/google-shared.js.map +1 -0
  41. package/dist/api/google-vertex.d.ts +15 -0
  42. package/dist/api/google-vertex.d.ts.map +1 -0
  43. package/dist/api/google-vertex.js +456 -0
  44. package/dist/api/google-vertex.js.map +1 -0
  45. package/dist/api/google-vertex.lazy.d.ts +3 -0
  46. package/dist/api/google-vertex.lazy.d.ts.map +1 -0
  47. package/dist/api/google-vertex.lazy.js +3 -0
  48. package/dist/api/google-vertex.lazy.js.map +1 -0
  49. package/dist/api/lazy.d.ts +15 -0
  50. package/dist/api/lazy.d.ts.map +1 -0
  51. package/dist/api/lazy.js +59 -0
  52. package/dist/api/lazy.js.map +1 -0
  53. package/dist/api/mistral-conversations.d.ts +25 -0
  54. package/dist/api/mistral-conversations.d.ts.map +1 -0
  55. package/dist/api/mistral-conversations.js +555 -0
  56. package/dist/api/mistral-conversations.js.map +1 -0
  57. package/dist/api/mistral-conversations.lazy.d.ts +3 -0
  58. package/dist/api/mistral-conversations.lazy.d.ts.map +1 -0
  59. package/dist/api/mistral-conversations.lazy.js +3 -0
  60. package/dist/api/mistral-conversations.lazy.js.map +1 -0
  61. package/dist/{providers → api}/openai-codex-responses.d.ts +2 -2
  62. package/dist/api/openai-codex-responses.d.ts.map +1 -0
  63. package/dist/{providers → api}/openai-codex-responses.js +149 -93
  64. package/dist/api/openai-codex-responses.js.map +1 -0
  65. package/dist/api/openai-codex-responses.lazy.d.ts +3 -0
  66. package/dist/api/openai-codex-responses.lazy.d.ts.map +1 -0
  67. package/dist/api/openai-codex-responses.lazy.js +3 -0
  68. package/dist/api/openai-codex-responses.lazy.js.map +1 -0
  69. package/dist/{providers → api}/openai-completions.d.ts +2 -2
  70. package/dist/api/openai-completions.d.ts.map +1 -0
  71. package/dist/{providers → api}/openai-completions.js +155 -72
  72. package/dist/api/openai-completions.js.map +1 -0
  73. package/dist/api/openai-completions.lazy.d.ts +3 -0
  74. package/dist/api/openai-completions.lazy.d.ts.map +1 -0
  75. package/dist/api/openai-completions.lazy.js +3 -0
  76. package/dist/api/openai-completions.lazy.js.map +1 -0
  77. package/dist/api/openai-prompt-cache.d.ts.map +1 -0
  78. package/dist/api/openai-prompt-cache.js.map +1 -0
  79. package/dist/api/openai-responses-shared.d.ts.map +1 -0
  80. package/dist/{providers → api}/openai-responses-shared.js +190 -204
  81. package/dist/api/openai-responses-shared.js.map +1 -0
  82. package/dist/{providers → api}/openai-responses.d.ts +2 -2
  83. package/dist/api/openai-responses.d.ts.map +1 -0
  84. package/dist/{providers → api}/openai-responses.js +35 -41
  85. package/dist/api/openai-responses.js.map +1 -0
  86. package/dist/api/openai-responses.lazy.d.ts +3 -0
  87. package/dist/api/openai-responses.lazy.d.ts.map +1 -0
  88. package/dist/api/openai-responses.lazy.js +3 -0
  89. package/dist/api/openai-responses.lazy.js.map +1 -0
  90. package/dist/api/openrouter-images.d.ts +3 -0
  91. package/dist/api/openrouter-images.d.ts.map +1 -0
  92. package/dist/{providers/images/openrouter.js → api/openrouter-images.js} +7 -9
  93. package/dist/api/openrouter-images.js.map +1 -0
  94. package/dist/api/openrouter-images.lazy.d.ts +3 -0
  95. package/dist/api/openrouter-images.lazy.d.ts.map +1 -0
  96. package/dist/api/openrouter-images.lazy.js +4 -0
  97. package/dist/api/openrouter-images.lazy.js.map +1 -0
  98. package/dist/{providers → api}/simple-options.d.ts +3 -2
  99. package/dist/api/simple-options.d.ts.map +1 -0
  100. package/dist/{providers → api}/simple-options.js +12 -2
  101. package/dist/api/simple-options.js.map +1 -0
  102. package/dist/api/transform-messages.d.ts.map +1 -0
  103. package/dist/{providers → api}/transform-messages.js +4 -1
  104. package/dist/api/transform-messages.js.map +1 -0
  105. package/dist/auth/context.d.ts +7 -0
  106. package/dist/auth/context.d.ts.map +1 -0
  107. package/dist/auth/context.js +42 -0
  108. package/dist/auth/context.js.map +1 -0
  109. package/dist/auth/credential-store.d.ts +16 -0
  110. package/dist/auth/credential-store.d.ts.map +1 -0
  111. package/dist/auth/credential-store.js +37 -0
  112. package/dist/auth/credential-store.js.map +1 -0
  113. package/dist/auth/helpers.d.ts +20 -0
  114. package/dist/auth/helpers.d.ts.map +1 -0
  115. package/dist/auth/helpers.js +46 -0
  116. package/dist/auth/helpers.js.map +1 -0
  117. package/dist/auth/resolve.d.ts +26 -0
  118. package/dist/auth/resolve.d.ts.map +1 -0
  119. package/dist/auth/resolve.js +101 -0
  120. package/dist/auth/resolve.js.map +1 -0
  121. package/dist/auth/types.d.ts +180 -0
  122. package/dist/auth/types.d.ts.map +1 -0
  123. package/dist/auth/types.js +2 -0
  124. package/dist/auth/types.js.map +1 -0
  125. package/dist/bedrock-provider.d.ts +2 -2
  126. package/dist/bedrock-provider.d.ts.map +1 -1
  127. package/dist/bedrock-provider.js +3 -3
  128. package/dist/bedrock-provider.js.map +1 -1
  129. package/dist/compat.d.ts +65 -0
  130. package/dist/compat.d.ts.map +1 -0
  131. package/dist/compat.js +182 -0
  132. package/dist/compat.js.map +1 -0
  133. package/dist/env-api-keys.d.ts +5 -5
  134. package/dist/env-api-keys.d.ts.map +1 -1
  135. package/dist/env-api-keys.js +21 -57
  136. package/dist/env-api-keys.js.map +1 -1
  137. package/dist/image-models.generated.d.ts +64 -19
  138. package/dist/image-models.generated.d.ts.map +1 -1
  139. package/dist/image-models.generated.js +90 -45
  140. package/dist/image-models.generated.js.map +1 -1
  141. package/dist/images-models.d.ts +93 -0
  142. package/dist/images-models.d.ts.map +1 -0
  143. package/dist/images-models.js +141 -0
  144. package/dist/images-models.js.map +1 -0
  145. package/dist/index.d.ts +17 -18
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +7 -8
  148. package/dist/index.js.map +1 -1
  149. package/dist/legacy-api-aliases.d.ts +42 -0
  150. package/dist/legacy-api-aliases.d.ts.map +1 -0
  151. package/dist/legacy-api-aliases.js +49 -0
  152. package/dist/legacy-api-aliases.js.map +1 -0
  153. package/dist/models.d.ts +133 -9
  154. package/dist/models.d.ts.map +1 -1
  155. package/dist/models.generated.d.ts +3425 -669
  156. package/dist/models.generated.d.ts.map +1 -1
  157. package/dist/models.generated.js +70 -16932
  158. package/dist/models.generated.js.map +1 -1
  159. package/dist/models.js +185 -18
  160. package/dist/models.js.map +1 -1
  161. package/dist/providers/all.d.ts +21 -0
  162. package/dist/providers/all.d.ts.map +1 -0
  163. package/dist/providers/all.js +114 -0
  164. package/dist/providers/all.js.map +1 -0
  165. package/dist/providers/amazon-bedrock.d.ts +2 -37
  166. package/dist/providers/amazon-bedrock.d.ts.map +1 -1
  167. package/dist/providers/amazon-bedrock.js +35 -840
  168. package/dist/providers/amazon-bedrock.js.map +1 -1
  169. package/dist/providers/amazon-bedrock.models.d.ts +1875 -0
  170. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -0
  171. package/dist/providers/amazon-bedrock.models.js +1829 -0
  172. package/dist/providers/amazon-bedrock.models.js.map +1 -0
  173. package/dist/providers/ant-ling.d.ts +3 -0
  174. package/dist/providers/ant-ling.d.ts.map +1 -0
  175. package/dist/providers/ant-ling.js +15 -0
  176. package/dist/providers/ant-ling.js.map +1 -0
  177. package/dist/providers/ant-ling.models.d.ts +86 -0
  178. package/dist/providers/ant-ling.models.d.ts.map +1 -0
  179. package/dist/providers/ant-ling.models.js +60 -0
  180. package/dist/providers/ant-ling.models.js.map +1 -0
  181. package/dist/providers/anthropic.d.ts +2 -70
  182. package/dist/providers/anthropic.d.ts.map +1 -1
  183. package/dist/providers/anthropic.js +17 -957
  184. package/dist/providers/anthropic.js.map +1 -1
  185. package/dist/providers/anthropic.models.d.ts +274 -0
  186. package/dist/providers/anthropic.models.d.ts.map +1 -0
  187. package/dist/providers/anthropic.models.js +253 -0
  188. package/dist/providers/anthropic.models.js.map +1 -0
  189. package/dist/providers/azure-openai-responses.d.ts +2 -14
  190. package/dist/providers/azure-openai-responses.d.ts.map +1 -1
  191. package/dist/providers/azure-openai-responses.js +11 -220
  192. package/dist/providers/azure-openai-responses.js.map +1 -1
  193. package/dist/providers/azure-openai-responses.models.d.ts +804 -0
  194. package/dist/providers/azure-openai-responses.models.d.ts.map +1 -0
  195. package/dist/providers/azure-openai-responses.models.js +743 -0
  196. package/dist/providers/azure-openai-responses.models.js.map +1 -0
  197. package/dist/providers/cerebras.d.ts +3 -0
  198. package/dist/providers/cerebras.d.ts.map +1 -0
  199. package/dist/providers/cerebras.js +15 -0
  200. package/dist/providers/cerebras.js.map +1 -0
  201. package/dist/providers/cerebras.models.d.ts +66 -0
  202. package/dist/providers/cerebras.models.d.ts.map +1 -0
  203. package/dist/providers/cerebras.models.js +59 -0
  204. package/dist/providers/cerebras.models.js.map +1 -0
  205. package/dist/providers/cloudflare-ai-gateway.d.ts +3 -0
  206. package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -0
  207. package/dist/providers/cloudflare-ai-gateway.js +20 -0
  208. package/dist/providers/cloudflare-ai-gateway.js.map +1 -0
  209. package/dist/providers/cloudflare-ai-gateway.models.d.ts +786 -0
  210. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -0
  211. package/dist/providers/cloudflare-ai-gateway.models.js +684 -0
  212. package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -0
  213. package/dist/providers/cloudflare-auth.d.ts +4 -0
  214. package/dist/providers/cloudflare-auth.d.ts.map +1 -0
  215. package/dist/providers/cloudflare-auth.js +85 -0
  216. package/dist/providers/cloudflare-auth.js.map +1 -0
  217. package/dist/providers/cloudflare-workers-ai.d.ts +3 -0
  218. package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -0
  219. package/dist/providers/cloudflare-workers-ai.js +14 -0
  220. package/dist/providers/cloudflare-workers-ai.js.map +1 -0
  221. package/dist/providers/cloudflare-workers-ai.models.d.ts +302 -0
  222. package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -0
  223. package/dist/providers/cloudflare-workers-ai.models.js +239 -0
  224. package/dist/providers/cloudflare-workers-ai.models.js.map +1 -0
  225. package/dist/providers/deepseek.d.ts +3 -0
  226. package/dist/providers/deepseek.d.ts.map +1 -0
  227. package/dist/providers/deepseek.js +15 -0
  228. package/dist/providers/deepseek.js.map +1 -0
  229. package/dist/providers/deepseek.models.d.ts +63 -0
  230. package/dist/providers/deepseek.models.d.ts.map +1 -0
  231. package/dist/providers/deepseek.models.js +43 -0
  232. package/dist/providers/deepseek.models.js.map +1 -0
  233. package/dist/providers/faux.d.ts +43 -2
  234. package/dist/providers/faux.d.ts.map +1 -1
  235. package/dist/providers/faux.js +34 -7
  236. package/dist/providers/faux.js.map +1 -1
  237. package/dist/providers/fireworks.d.ts +3 -0
  238. package/dist/providers/fireworks.d.ts.map +1 -0
  239. package/dist/providers/fireworks.js +19 -0
  240. package/dist/providers/fireworks.js.map +1 -0
  241. package/dist/providers/fireworks.models.d.ts +381 -0
  242. package/dist/providers/fireworks.models.d.ts.map +1 -0
  243. package/dist/providers/fireworks.models.js +295 -0
  244. package/dist/providers/fireworks.models.js.map +1 -0
  245. package/dist/providers/github-copilot.d.ts +3 -0
  246. package/dist/providers/github-copilot.d.ts.map +1 -0
  247. package/dist/providers/github-copilot.js +25 -0
  248. package/dist/providers/github-copilot.js.map +1 -0
  249. package/dist/providers/github-copilot.models.d.ts +698 -0
  250. package/dist/providers/github-copilot.models.d.ts.map +1 -0
  251. package/dist/providers/github-copilot.models.js +483 -0
  252. package/dist/providers/github-copilot.models.js.map +1 -0
  253. package/dist/providers/google-vertex.d.ts +2 -14
  254. package/dist/providers/google-vertex.d.ts.map +1 -1
  255. package/dist/providers/google-vertex.js +30 -441
  256. package/dist/providers/google-vertex.js.map +1 -1
  257. package/dist/providers/google-vertex.models.d.ts +202 -0
  258. package/dist/providers/google-vertex.models.d.ts.map +1 -0
  259. package/dist/providers/google-vertex.models.js +182 -0
  260. package/dist/providers/google-vertex.models.js.map +1 -0
  261. package/dist/providers/google.d.ts +2 -12
  262. package/dist/providers/google.d.ts.map +1 -1
  263. package/dist/providers/google.js +12 -399
  264. package/dist/providers/google.js.map +1 -1
  265. package/dist/providers/google.models.d.ts +328 -0
  266. package/dist/providers/google.models.d.ts.map +1 -0
  267. package/dist/providers/google.models.js +288 -0
  268. package/dist/providers/google.models.js.map +1 -0
  269. package/dist/providers/groq.d.ts +3 -0
  270. package/dist/providers/groq.d.ts.map +1 -0
  271. package/dist/providers/groq.js +15 -0
  272. package/dist/providers/groq.js.map +1 -0
  273. package/dist/providers/groq.models.d.ts +128 -0
  274. package/dist/providers/groq.models.d.ts.map +1 -0
  275. package/dist/providers/groq.models.js +125 -0
  276. package/dist/providers/groq.models.js.map +1 -0
  277. package/dist/providers/huggingface.d.ts +3 -0
  278. package/dist/providers/huggingface.d.ts.map +1 -0
  279. package/dist/providers/huggingface.js +15 -0
  280. package/dist/providers/huggingface.js.map +1 -0
  281. package/dist/providers/huggingface.models.d.ts +983 -0
  282. package/dist/providers/huggingface.models.d.ts.map +1 -0
  283. package/dist/providers/huggingface.models.js +887 -0
  284. package/dist/providers/huggingface.models.js.map +1 -0
  285. package/dist/providers/images/register-builtins.d.ts.map +1 -1
  286. package/dist/providers/images/register-builtins.js +2 -2
  287. package/dist/providers/images/register-builtins.js.map +1 -1
  288. package/dist/providers/kimi-coding.d.ts +3 -0
  289. package/dist/providers/kimi-coding.d.ts.map +1 -0
  290. package/dist/providers/kimi-coding.js +15 -0
  291. package/dist/providers/kimi-coding.js.map +1 -0
  292. package/dist/providers/kimi-coding.models.d.ts +63 -0
  293. package/dist/providers/kimi-coding.models.d.ts.map +1 -0
  294. package/dist/providers/kimi-coding.models.js +59 -0
  295. package/dist/providers/kimi-coding.models.js.map +1 -0
  296. package/dist/providers/minimax-cn.d.ts +3 -0
  297. package/dist/providers/minimax-cn.d.ts.map +1 -0
  298. package/dist/providers/minimax-cn.js +15 -0
  299. package/dist/providers/minimax-cn.js.map +1 -0
  300. package/dist/providers/minimax-cn.models.d.ts +54 -0
  301. package/dist/providers/minimax-cn.models.d.ts.map +1 -0
  302. package/dist/providers/minimax-cn.models.js +56 -0
  303. package/dist/providers/minimax-cn.models.js.map +1 -0
  304. package/dist/providers/minimax.d.ts +3 -0
  305. package/dist/providers/minimax.d.ts.map +1 -0
  306. package/dist/providers/minimax.js +15 -0
  307. package/dist/providers/minimax.js.map +1 -0
  308. package/dist/providers/minimax.models.d.ts +54 -0
  309. package/dist/providers/minimax.models.d.ts.map +1 -0
  310. package/dist/providers/minimax.models.js +56 -0
  311. package/dist/providers/minimax.models.js.map +1 -0
  312. package/dist/providers/mistral.d.ts +2 -24
  313. package/dist/providers/mistral.d.ts.map +1 -1
  314. package/dist/providers/mistral.js +12 -531
  315. package/dist/providers/mistral.js.map +1 -1
  316. package/dist/providers/mistral.models.d.ts +513 -0
  317. package/dist/providers/mistral.models.d.ts.map +1 -0
  318. package/dist/providers/mistral.models.js +515 -0
  319. package/dist/providers/mistral.models.js.map +1 -0
  320. package/dist/providers/moonshotai-cn.d.ts +3 -0
  321. package/dist/providers/moonshotai-cn.d.ts.map +1 -0
  322. package/dist/providers/moonshotai-cn.js +15 -0
  323. package/dist/providers/moonshotai-cn.js.map +1 -0
  324. package/dist/providers/moonshotai-cn.models.d.ts +234 -0
  325. package/dist/providers/moonshotai-cn.models.d.ts.map +1 -0
  326. package/dist/providers/moonshotai-cn.models.js +169 -0
  327. package/dist/providers/moonshotai-cn.models.js.map +1 -0
  328. package/dist/providers/moonshotai.d.ts +3 -0
  329. package/dist/providers/moonshotai.d.ts.map +1 -0
  330. package/dist/providers/moonshotai.js +15 -0
  331. package/dist/providers/moonshotai.js.map +1 -0
  332. package/dist/providers/moonshotai.models.d.ts +234 -0
  333. package/dist/providers/moonshotai.models.d.ts.map +1 -0
  334. package/dist/providers/moonshotai.models.js +169 -0
  335. package/dist/providers/moonshotai.models.js.map +1 -0
  336. package/dist/providers/nvidia.d.ts +3 -0
  337. package/dist/providers/nvidia.d.ts.map +1 -0
  338. package/dist/providers/nvidia.js +15 -0
  339. package/dist/providers/nvidia.js.map +1 -0
  340. package/dist/providers/nvidia.models.d.ts +563 -0
  341. package/dist/providers/nvidia.models.d.ts.map +1 -0
  342. package/dist/providers/nvidia.models.js +385 -0
  343. package/dist/providers/nvidia.models.js.map +1 -0
  344. package/dist/providers/openai-codex.d.ts +3 -0
  345. package/dist/providers/openai-codex.d.ts.map +1 -0
  346. package/dist/providers/openai-codex.js +18 -0
  347. package/dist/providers/openai-codex.js.map +1 -0
  348. package/dist/providers/openai-codex.models.d.ts +87 -0
  349. package/dist/providers/openai-codex.models.d.ts.map +1 -0
  350. package/dist/providers/openai-codex.models.js +77 -0
  351. package/dist/providers/openai-codex.models.js.map +1 -0
  352. package/dist/providers/openai.d.ts +3 -0
  353. package/dist/providers/openai.d.ts.map +1 -0
  354. package/dist/providers/openai.js +15 -0
  355. package/dist/providers/openai.js.map +1 -0
  356. package/dist/providers/openai.models.d.ts +805 -0
  357. package/dist/providers/openai.models.d.ts.map +1 -0
  358. package/dist/providers/openai.models.js +743 -0
  359. package/dist/providers/openai.models.js.map +1 -0
  360. package/dist/providers/opencode-go.d.ts +3 -0
  361. package/dist/providers/opencode-go.d.ts.map +1 -0
  362. package/dist/providers/opencode-go.js +18 -0
  363. package/dist/providers/opencode-go.js.map +1 -0
  364. package/dist/providers/opencode-go.models.d.ts +309 -0
  365. package/dist/providers/opencode-go.models.d.ts.map +1 -0
  366. package/dist/providers/opencode-go.models.js +240 -0
  367. package/dist/providers/opencode-go.models.js.map +1 -0
  368. package/dist/providers/opencode.d.ts +3 -0
  369. package/dist/providers/opencode.d.ts.map +1 -0
  370. package/dist/providers/opencode.js +22 -0
  371. package/dist/providers/opencode.js.map +1 -0
  372. package/dist/providers/opencode.models.d.ts +1086 -0
  373. package/dist/providers/opencode.models.d.ts.map +1 -0
  374. package/dist/providers/opencode.models.js +906 -0
  375. package/dist/providers/opencode.models.js.map +1 -0
  376. package/dist/providers/openrouter-images.d.ts +3 -0
  377. package/dist/providers/openrouter-images.d.ts.map +1 -0
  378. package/dist/providers/openrouter-images.js +14 -0
  379. package/dist/providers/openrouter-images.js.map +1 -0
  380. package/dist/providers/openrouter.d.ts +3 -0
  381. package/dist/providers/openrouter.d.ts.map +1 -0
  382. package/dist/providers/openrouter.js +15 -0
  383. package/dist/providers/openrouter.js.map +1 -0
  384. package/dist/providers/openrouter.models.d.ts +5528 -0
  385. package/dist/providers/openrouter.models.d.ts.map +1 -0
  386. package/dist/providers/openrouter.models.js +4742 -0
  387. package/dist/providers/openrouter.models.js.map +1 -0
  388. package/dist/providers/together.d.ts +3 -0
  389. package/dist/providers/together.d.ts.map +1 -0
  390. package/dist/providers/together.js +15 -0
  391. package/dist/providers/together.js.map +1 -0
  392. package/dist/providers/together.models.d.ts +598 -0
  393. package/dist/providers/together.models.d.ts.map +1 -0
  394. package/dist/providers/together.models.js +380 -0
  395. package/dist/providers/together.models.js.map +1 -0
  396. package/dist/providers/vercel-ai-gateway.d.ts +3 -0
  397. package/dist/providers/vercel-ai-gateway.d.ts.map +1 -0
  398. package/dist/providers/vercel-ai-gateway.js +15 -0
  399. package/dist/providers/vercel-ai-gateway.js.map +1 -0
  400. package/dist/providers/vercel-ai-gateway.models.d.ts +3254 -0
  401. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -0
  402. package/dist/providers/vercel-ai-gateway.models.js +3206 -0
  403. package/dist/providers/vercel-ai-gateway.models.js.map +1 -0
  404. package/dist/providers/xai.d.ts +3 -0
  405. package/dist/providers/xai.d.ts.map +1 -0
  406. package/dist/providers/xai.js +15 -0
  407. package/dist/providers/xai.js.map +1 -0
  408. package/dist/providers/xai.models.d.ts +157 -0
  409. package/dist/providers/xai.models.d.ts.map +1 -0
  410. package/dist/providers/xai.models.js +131 -0
  411. package/dist/providers/xai.models.js.map +1 -0
  412. package/dist/providers/xiaomi-token-plan-ams.d.ts +3 -0
  413. package/dist/providers/xiaomi-token-plan-ams.d.ts.map +1 -0
  414. package/dist/providers/xiaomi-token-plan-ams.js +15 -0
  415. package/dist/providers/xiaomi-token-plan-ams.js.map +1 -0
  416. package/dist/providers/xiaomi-token-plan-ams.models.d.ts +108 -0
  417. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -0
  418. package/dist/providers/xiaomi-token-plan-ams.models.js +95 -0
  419. package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -0
  420. package/dist/providers/xiaomi-token-plan-cn.d.ts +3 -0
  421. package/dist/providers/xiaomi-token-plan-cn.d.ts.map +1 -0
  422. package/dist/providers/xiaomi-token-plan-cn.js +15 -0
  423. package/dist/providers/xiaomi-token-plan-cn.js.map +1 -0
  424. package/dist/providers/xiaomi-token-plan-cn.models.d.ts +108 -0
  425. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -0
  426. package/dist/providers/xiaomi-token-plan-cn.models.js +95 -0
  427. package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -0
  428. package/dist/providers/xiaomi-token-plan-sgp.d.ts +3 -0
  429. package/dist/providers/xiaomi-token-plan-sgp.d.ts.map +1 -0
  430. package/dist/providers/xiaomi-token-plan-sgp.js +15 -0
  431. package/dist/providers/xiaomi-token-plan-sgp.js.map +1 -0
  432. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +108 -0
  433. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -0
  434. package/dist/providers/xiaomi-token-plan-sgp.models.js +95 -0
  435. package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -0
  436. package/dist/providers/xiaomi.d.ts +3 -0
  437. package/dist/providers/xiaomi.d.ts.map +1 -0
  438. package/dist/providers/xiaomi.js +15 -0
  439. package/dist/providers/xiaomi.js.map +1 -0
  440. package/dist/providers/xiaomi.models.d.ts +129 -0
  441. package/dist/providers/xiaomi.models.d.ts.map +1 -0
  442. package/dist/providers/xiaomi.models.js +113 -0
  443. package/dist/providers/xiaomi.models.js.map +1 -0
  444. package/dist/providers/zai-coding-cn.d.ts +3 -0
  445. package/dist/providers/zai-coding-cn.d.ts.map +1 -0
  446. package/dist/providers/zai-coding-cn.js +15 -0
  447. package/dist/providers/zai-coding-cn.js.map +1 -0
  448. package/dist/providers/zai-coding-cn.models.d.ts +153 -0
  449. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -0
  450. package/dist/providers/zai-coding-cn.models.js +114 -0
  451. package/dist/providers/zai-coding-cn.models.js.map +1 -0
  452. package/dist/providers/zai.d.ts +3 -0
  453. package/dist/providers/zai.d.ts.map +1 -0
  454. package/dist/providers/zai.js +15 -0
  455. package/dist/providers/zai.js.map +1 -0
  456. package/dist/providers/zai.models.d.ts +153 -0
  457. package/dist/providers/zai.models.d.ts.map +1 -0
  458. package/dist/providers/zai.models.js +114 -0
  459. package/dist/providers/zai.models.js.map +1 -0
  460. package/dist/types.d.ts +91 -10
  461. package/dist/types.d.ts.map +1 -1
  462. package/dist/types.js.map +1 -1
  463. package/dist/utils/error-body.d.ts +25 -0
  464. package/dist/utils/error-body.d.ts.map +1 -0
  465. package/dist/utils/error-body.js +109 -0
  466. package/dist/utils/error-body.js.map +1 -0
  467. package/dist/utils/estimate.d.ts +17 -0
  468. package/dist/utils/estimate.d.ts.map +1 -0
  469. package/dist/utils/estimate.js +95 -0
  470. package/dist/utils/estimate.js.map +1 -0
  471. package/dist/utils/headers.d.ts +2 -0
  472. package/dist/utils/headers.d.ts.map +1 -1
  473. package/dist/utils/headers.js +10 -0
  474. package/dist/utils/headers.js.map +1 -1
  475. package/dist/utils/node-http-proxy.d.ts +2 -8
  476. package/dist/utils/node-http-proxy.d.ts.map +1 -1
  477. package/dist/utils/node-http-proxy.js +17 -22
  478. package/dist/utils/node-http-proxy.js.map +1 -1
  479. package/dist/utils/oauth/anthropic.d.ts +2 -0
  480. package/dist/utils/oauth/anthropic.d.ts.map +1 -1
  481. package/dist/utils/oauth/anthropic.js +33 -1
  482. package/dist/utils/oauth/anthropic.js.map +1 -1
  483. package/dist/utils/oauth/device-code.d.ts +2 -0
  484. package/dist/utils/oauth/device-code.d.ts.map +1 -1
  485. package/dist/utils/oauth/device-code.js +15 -2
  486. package/dist/utils/oauth/device-code.js.map +1 -1
  487. package/dist/utils/oauth/github-copilot.d.ts +2 -0
  488. package/dist/utils/oauth/github-copilot.d.ts.map +1 -1
  489. package/dist/utils/oauth/github-copilot.js +102 -11
  490. package/dist/utils/oauth/github-copilot.js.map +1 -1
  491. package/dist/utils/oauth/load.d.ts +5 -0
  492. package/dist/utils/oauth/load.d.ts.map +1 -0
  493. package/dist/utils/oauth/load.js +22 -0
  494. package/dist/utils/oauth/load.js.map +1 -0
  495. package/dist/utils/oauth/openai-codex.d.ts +2 -0
  496. package/dist/utils/oauth/openai-codex.d.ts.map +1 -1
  497. package/dist/utils/oauth/openai-codex.js +51 -1
  498. package/dist/utils/oauth/openai-codex.js.map +1 -1
  499. package/dist/utils/overflow.d.ts +2 -1
  500. package/dist/utils/overflow.d.ts.map +1 -1
  501. package/dist/utils/overflow.js +6 -2
  502. package/dist/utils/overflow.js.map +1 -1
  503. package/dist/utils/provider-env.d.ts +7 -0
  504. package/dist/utils/provider-env.d.ts.map +1 -0
  505. package/dist/utils/provider-env.js +44 -0
  506. package/dist/utils/provider-env.js.map +1 -0
  507. package/dist/utils/retry.d.ts +12 -0
  508. package/dist/utils/retry.d.ts.map +1 -0
  509. package/dist/utils/retry.js +87 -0
  510. package/dist/utils/retry.js.map +1 -0
  511. package/dist/utils/validation.d.ts.map +1 -1
  512. package/dist/utils/validation.js +9 -21
  513. package/dist/utils/validation.js.map +1 -1
  514. package/package.json +12 -31
  515. package/dist/api-registry.d.ts +0 -20
  516. package/dist/api-registry.d.ts.map +0 -1
  517. package/dist/api-registry.js +0 -44
  518. package/dist/api-registry.js.map +0 -1
  519. package/dist/providers/cloudflare.d.ts.map +0 -1
  520. package/dist/providers/cloudflare.js.map +0 -1
  521. package/dist/providers/github-copilot-headers.d.ts.map +0 -1
  522. package/dist/providers/github-copilot-headers.js.map +0 -1
  523. package/dist/providers/google-shared.d.ts.map +0 -1
  524. package/dist/providers/google-shared.js.map +0 -1
  525. package/dist/providers/images/openrouter.d.ts +0 -3
  526. package/dist/providers/images/openrouter.d.ts.map +0 -1
  527. package/dist/providers/images/openrouter.js.map +0 -1
  528. package/dist/providers/openai-codex-responses.d.ts.map +0 -1
  529. package/dist/providers/openai-codex-responses.js.map +0 -1
  530. package/dist/providers/openai-completions.d.ts.map +0 -1
  531. package/dist/providers/openai-completions.js.map +0 -1
  532. package/dist/providers/openai-prompt-cache.d.ts.map +0 -1
  533. package/dist/providers/openai-prompt-cache.js.map +0 -1
  534. package/dist/providers/openai-responses-shared.d.ts.map +0 -1
  535. package/dist/providers/openai-responses-shared.js.map +0 -1
  536. package/dist/providers/openai-responses.d.ts.map +0 -1
  537. package/dist/providers/openai-responses.js.map +0 -1
  538. package/dist/providers/register-builtins.d.ts +0 -35
  539. package/dist/providers/register-builtins.d.ts.map +0 -1
  540. package/dist/providers/register-builtins.js +0 -254
  541. package/dist/providers/register-builtins.js.map +0 -1
  542. package/dist/providers/simple-options.d.ts.map +0 -1
  543. package/dist/providers/simple-options.js.map +0 -1
  544. package/dist/providers/transform-messages.d.ts.map +0 -1
  545. package/dist/providers/transform-messages.js.map +0 -1
  546. package/dist/stream.d.ts +0 -8
  547. package/dist/stream.d.ts.map +0 -1
  548. package/dist/stream.js +0 -39
  549. package/dist/stream.js.map +0 -1
  550. /package/dist/{providers → api}/github-copilot-headers.d.ts +0 -0
  551. /package/dist/{providers → api}/github-copilot-headers.js +0 -0
  552. /package/dist/{providers → api}/google-shared.d.ts +0 -0
  553. /package/dist/{providers → api}/google-shared.js +0 -0
  554. /package/dist/{providers → api}/openai-prompt-cache.d.ts +0 -0
  555. /package/dist/{providers → api}/openai-prompt-cache.js +0 -0
  556. /package/dist/{providers → api}/openai-responses-shared.d.ts +0 -0
  557. /package/dist/{providers → api}/transform-messages.d.ts +0 -0
@@ -0,0 +1,253 @@
1
+ // This file is auto-generated by scripts/generate-models.ts
2
+ // Do not edit manually - run 'npm run generate-models' to update
3
+ export const ANTHROPIC_MODELS = {
4
+ "claude-fable-5": {
5
+ id: "claude-fable-5",
6
+ name: "Claude Fable 5",
7
+ api: "anthropic-messages",
8
+ provider: "anthropic",
9
+ baseUrl: "https://api.anthropic.com",
10
+ compat: { "forceAdaptiveThinking": true },
11
+ reasoning: true,
12
+ thinkingLevelMap: { "off": null, "xhigh": "xhigh" },
13
+ input: ["text", "image"],
14
+ cost: {
15
+ input: 10,
16
+ output: 50,
17
+ cacheRead: 1,
18
+ cacheWrite: 12.5,
19
+ },
20
+ contextWindow: 1000000,
21
+ maxTokens: 128000,
22
+ },
23
+ "claude-haiku-4-5": {
24
+ id: "claude-haiku-4-5",
25
+ name: "Claude Haiku 4.5 (latest)",
26
+ api: "anthropic-messages",
27
+ provider: "anthropic",
28
+ baseUrl: "https://api.anthropic.com",
29
+ reasoning: true,
30
+ input: ["text", "image"],
31
+ cost: {
32
+ input: 1,
33
+ output: 5,
34
+ cacheRead: 0.1,
35
+ cacheWrite: 1.25,
36
+ },
37
+ contextWindow: 200000,
38
+ maxTokens: 64000,
39
+ },
40
+ "claude-haiku-4-5-20251001": {
41
+ id: "claude-haiku-4-5-20251001",
42
+ name: "Claude Haiku 4.5",
43
+ api: "anthropic-messages",
44
+ provider: "anthropic",
45
+ baseUrl: "https://api.anthropic.com",
46
+ reasoning: true,
47
+ input: ["text", "image"],
48
+ cost: {
49
+ input: 1,
50
+ output: 5,
51
+ cacheRead: 0.1,
52
+ cacheWrite: 1.25,
53
+ },
54
+ contextWindow: 200000,
55
+ maxTokens: 64000,
56
+ },
57
+ "claude-opus-4-1": {
58
+ id: "claude-opus-4-1",
59
+ name: "Claude Opus 4.1 (latest)",
60
+ api: "anthropic-messages",
61
+ provider: "anthropic",
62
+ baseUrl: "https://api.anthropic.com",
63
+ reasoning: true,
64
+ input: ["text", "image"],
65
+ cost: {
66
+ input: 15,
67
+ output: 75,
68
+ cacheRead: 1.5,
69
+ cacheWrite: 18.75,
70
+ },
71
+ contextWindow: 200000,
72
+ maxTokens: 32000,
73
+ },
74
+ "claude-opus-4-1-20250805": {
75
+ id: "claude-opus-4-1-20250805",
76
+ name: "Claude Opus 4.1",
77
+ api: "anthropic-messages",
78
+ provider: "anthropic",
79
+ baseUrl: "https://api.anthropic.com",
80
+ reasoning: true,
81
+ input: ["text", "image"],
82
+ cost: {
83
+ input: 15,
84
+ output: 75,
85
+ cacheRead: 1.5,
86
+ cacheWrite: 18.75,
87
+ },
88
+ contextWindow: 200000,
89
+ maxTokens: 32000,
90
+ },
91
+ "claude-opus-4-5": {
92
+ id: "claude-opus-4-5",
93
+ name: "Claude Opus 4.5 (latest)",
94
+ api: "anthropic-messages",
95
+ provider: "anthropic",
96
+ baseUrl: "https://api.anthropic.com",
97
+ reasoning: true,
98
+ input: ["text", "image"],
99
+ cost: {
100
+ input: 5,
101
+ output: 25,
102
+ cacheRead: 0.5,
103
+ cacheWrite: 6.25,
104
+ },
105
+ contextWindow: 200000,
106
+ maxTokens: 64000,
107
+ },
108
+ "claude-opus-4-5-20251101": {
109
+ id: "claude-opus-4-5-20251101",
110
+ name: "Claude Opus 4.5",
111
+ api: "anthropic-messages",
112
+ provider: "anthropic",
113
+ baseUrl: "https://api.anthropic.com",
114
+ reasoning: true,
115
+ input: ["text", "image"],
116
+ cost: {
117
+ input: 5,
118
+ output: 25,
119
+ cacheRead: 0.5,
120
+ cacheWrite: 6.25,
121
+ },
122
+ contextWindow: 200000,
123
+ maxTokens: 64000,
124
+ },
125
+ "claude-opus-4-6": {
126
+ id: "claude-opus-4-6",
127
+ name: "Claude Opus 4.6",
128
+ api: "anthropic-messages",
129
+ provider: "anthropic",
130
+ baseUrl: "https://api.anthropic.com",
131
+ compat: { "forceAdaptiveThinking": true },
132
+ reasoning: true,
133
+ thinkingLevelMap: { "xhigh": "max" },
134
+ input: ["text", "image"],
135
+ cost: {
136
+ input: 5,
137
+ output: 25,
138
+ cacheRead: 0.5,
139
+ cacheWrite: 6.25,
140
+ },
141
+ contextWindow: 1000000,
142
+ maxTokens: 128000,
143
+ },
144
+ "claude-opus-4-7": {
145
+ id: "claude-opus-4-7",
146
+ name: "Claude Opus 4.7",
147
+ api: "anthropic-messages",
148
+ provider: "anthropic",
149
+ baseUrl: "https://api.anthropic.com",
150
+ compat: { "forceAdaptiveThinking": true, "supportsTemperature": false },
151
+ reasoning: true,
152
+ thinkingLevelMap: { "xhigh": "xhigh" },
153
+ input: ["text", "image"],
154
+ cost: {
155
+ input: 5,
156
+ output: 25,
157
+ cacheRead: 0.5,
158
+ cacheWrite: 6.25,
159
+ },
160
+ contextWindow: 1000000,
161
+ maxTokens: 128000,
162
+ },
163
+ "claude-opus-4-8": {
164
+ id: "claude-opus-4-8",
165
+ name: "Claude Opus 4.8",
166
+ api: "anthropic-messages",
167
+ provider: "anthropic",
168
+ baseUrl: "https://api.anthropic.com",
169
+ compat: { "forceAdaptiveThinking": true, "supportsTemperature": false },
170
+ reasoning: true,
171
+ thinkingLevelMap: { "xhigh": "xhigh" },
172
+ input: ["text", "image"],
173
+ cost: {
174
+ input: 5,
175
+ output: 25,
176
+ cacheRead: 0.5,
177
+ cacheWrite: 6.25,
178
+ },
179
+ contextWindow: 1000000,
180
+ maxTokens: 128000,
181
+ },
182
+ "claude-sonnet-4-5": {
183
+ id: "claude-sonnet-4-5",
184
+ name: "Claude Sonnet 4.5 (latest)",
185
+ api: "anthropic-messages",
186
+ provider: "anthropic",
187
+ baseUrl: "https://api.anthropic.com",
188
+ reasoning: true,
189
+ input: ["text", "image"],
190
+ cost: {
191
+ input: 3,
192
+ output: 15,
193
+ cacheRead: 0.3,
194
+ cacheWrite: 3.75,
195
+ },
196
+ contextWindow: 1000000,
197
+ maxTokens: 64000,
198
+ },
199
+ "claude-sonnet-4-5-20250929": {
200
+ id: "claude-sonnet-4-5-20250929",
201
+ name: "Claude Sonnet 4.5",
202
+ api: "anthropic-messages",
203
+ provider: "anthropic",
204
+ baseUrl: "https://api.anthropic.com",
205
+ reasoning: true,
206
+ input: ["text", "image"],
207
+ cost: {
208
+ input: 3,
209
+ output: 15,
210
+ cacheRead: 0.3,
211
+ cacheWrite: 3.75,
212
+ },
213
+ contextWindow: 1000000,
214
+ maxTokens: 64000,
215
+ },
216
+ "claude-sonnet-4-6": {
217
+ id: "claude-sonnet-4-6",
218
+ name: "Claude Sonnet 4.6",
219
+ api: "anthropic-messages",
220
+ provider: "anthropic",
221
+ baseUrl: "https://api.anthropic.com",
222
+ compat: { "forceAdaptiveThinking": true },
223
+ reasoning: true,
224
+ input: ["text", "image"],
225
+ cost: {
226
+ input: 3,
227
+ output: 15,
228
+ cacheRead: 0.3,
229
+ cacheWrite: 3.75,
230
+ },
231
+ contextWindow: 1000000,
232
+ maxTokens: 128000,
233
+ },
234
+ "claude-sonnet-5": {
235
+ id: "claude-sonnet-5",
236
+ name: "Claude Sonnet 5",
237
+ api: "anthropic-messages",
238
+ provider: "anthropic",
239
+ baseUrl: "https://api.anthropic.com",
240
+ compat: { "forceAdaptiveThinking": true },
241
+ reasoning: true,
242
+ input: ["text", "image"],
243
+ cost: {
244
+ input: 2,
245
+ output: 10,
246
+ cacheRead: 0.2,
247
+ cacheWrite: 2.5,
248
+ },
249
+ contextWindow: 1000000,
250
+ maxTokens: 128000,
251
+ },
252
+ };
253
+ //# sourceMappingURL=anthropic.models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.models.js","sourceRoot":"","sources":["../../src/providers/anthropic.models.ts"],"names":[],"mappings":"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","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 type { Model } from \"../types.ts\";\n\nexport const ANTHROPIC_MODELS = {\n\t\"claude-fable-5\": {\n\t\tid: \"claude-fable-5\",\n\t\tname: \"Claude Fable 5\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\tcompat: {\"forceAdaptiveThinking\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"off\":null,\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 10,\n\t\t\toutput: 50,\n\t\t\tcacheRead: 1,\n\t\t\tcacheWrite: 12.5,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-haiku-4-5\": {\n\t\tid: \"claude-haiku-4-5\",\n\t\tname: \"Claude Haiku 4.5 (latest)\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1,\n\t\t\toutput: 5,\n\t\t\tcacheRead: 0.1,\n\t\t\tcacheWrite: 1.25,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-haiku-4-5-20251001\": {\n\t\tid: \"claude-haiku-4-5-20251001\",\n\t\tname: \"Claude Haiku 4.5\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 1,\n\t\t\toutput: 5,\n\t\t\tcacheRead: 0.1,\n\t\t\tcacheWrite: 1.25,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4-1\": {\n\t\tid: \"claude-opus-4-1\",\n\t\tname: \"Claude Opus 4.1 (latest)\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 15,\n\t\t\toutput: 75,\n\t\t\tcacheRead: 1.5,\n\t\t\tcacheWrite: 18.75,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 32000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4-1-20250805\": {\n\t\tid: \"claude-opus-4-1-20250805\",\n\t\tname: \"Claude Opus 4.1\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 15,\n\t\t\toutput: 75,\n\t\t\tcacheRead: 1.5,\n\t\t\tcacheWrite: 18.75,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 32000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4-5\": {\n\t\tid: \"claude-opus-4-5\",\n\t\tname: \"Claude Opus 4.5 (latest)\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 25,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4-5-20251101\": {\n\t\tid: \"claude-opus-4-5-20251101\",\n\t\tname: \"Claude Opus 4.5\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 25,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t},\n\t\tcontextWindow: 200000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4-6\": {\n\t\tid: \"claude-opus-4-6\",\n\t\tname: \"Claude Opus 4.6\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\tcompat: {\"forceAdaptiveThinking\":true},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"max\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 25,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4-7\": {\n\t\tid: \"claude-opus-4-7\",\n\t\tname: \"Claude Opus 4.7\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\tcompat: {\"forceAdaptiveThinking\":true,\"supportsTemperature\":false},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 25,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-opus-4-8\": {\n\t\tid: \"claude-opus-4-8\",\n\t\tname: \"Claude Opus 4.8\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\tcompat: {\"forceAdaptiveThinking\":true,\"supportsTemperature\":false},\n\t\treasoning: true,\n\t\tthinkingLevelMap: {\"xhigh\":\"xhigh\"},\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 5,\n\t\t\toutput: 25,\n\t\t\tcacheRead: 0.5,\n\t\t\tcacheWrite: 6.25,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-sonnet-4-5\": {\n\t\tid: \"claude-sonnet-4-5\",\n\t\tname: \"Claude Sonnet 4.5 (latest)\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 3,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.3,\n\t\t\tcacheWrite: 3.75,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-sonnet-4-5-20250929\": {\n\t\tid: \"claude-sonnet-4-5-20250929\",\n\t\tname: \"Claude Sonnet 4.5\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 3,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.3,\n\t\t\tcacheWrite: 3.75,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 64000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-sonnet-4-6\": {\n\t\tid: \"claude-sonnet-4-6\",\n\t\tname: \"Claude Sonnet 4.6\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\tcompat: {\"forceAdaptiveThinking\":true},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 3,\n\t\t\toutput: 15,\n\t\t\tcacheRead: 0.3,\n\t\t\tcacheWrite: 3.75,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"anthropic-messages\">,\n\t\"claude-sonnet-5\": {\n\t\tid: \"claude-sonnet-5\",\n\t\tname: \"Claude Sonnet 5\",\n\t\tapi: \"anthropic-messages\",\n\t\tprovider: \"anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\tcompat: {\"forceAdaptiveThinking\":true},\n\t\treasoning: true,\n\t\tinput: [\"text\", \"image\"],\n\t\tcost: {\n\t\t\tinput: 2,\n\t\t\toutput: 10,\n\t\t\tcacheRead: 0.2,\n\t\t\tcacheWrite: 2.5,\n\t\t},\n\t\tcontextWindow: 1000000,\n\t\tmaxTokens: 128000,\n\t} satisfies Model<\"anthropic-messages\">,\n} as const;\n"]}
@@ -1,15 +1,3 @@
1
- import type { SimpleStreamOptions, StreamFunction, StreamOptions } from "../types.ts";
2
- export interface AzureOpenAIResponsesOptions extends StreamOptions {
3
- reasoningEffort?: "minimal" | "low" | "medium" | "high" | "xhigh";
4
- reasoningSummary?: "auto" | "detailed" | "concise" | null;
5
- azureApiVersion?: string;
6
- azureResourceName?: string;
7
- azureBaseUrl?: string;
8
- azureDeploymentName?: string;
9
- }
10
- /**
11
- * Generate function for Azure OpenAI Responses API
12
- */
13
- export declare const streamAzureOpenAIResponses: StreamFunction<"azure-openai-responses", AzureOpenAIResponsesOptions>;
14
- export declare const streamSimpleAzureOpenAIResponses: StreamFunction<"azure-openai-responses", SimpleStreamOptions>;
1
+ import { type Provider } from "../models.ts";
2
+ export declare function azureOpenAIResponsesProvider(): Provider<"azure-openai-responses">;
15
3
  //# sourceMappingURL=azure-openai-responses.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"azure-openai-responses.d.ts","sourceRoot":"","sources":["../../src/providers/azure-openai-responses.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAKX,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,MAAM,aAAa,CAAC;AAgDrB,MAAM,WAAW,2BAA4B,SAAQ,aAAa;IACjE,eAAe,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAClE,gBAAgB,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,cAAc,CAAC,wBAAwB,EAAE,2BAA2B,CA4E5G,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,cAAc,CAAC,wBAAwB,EAAE,mBAAmB,CAmB1G,CAAC","sourcesContent":["import { AzureOpenAI } from \"openai\";\nimport type { ResponseCreateParamsStreaming } from \"openai/resources/responses/responses.js\";\nimport { clampThinkingLevel } from \"../models.ts\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tContext,\n\tModel,\n\tSimpleStreamOptions,\n\tStreamFunction,\n\tStreamOptions,\n} from \"../types.ts\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.ts\";\nimport { headersToRecord } from \"../utils/headers.ts\";\nimport { clampOpenAIPromptCacheKey } from \"./openai-prompt-cache.ts\";\nimport { convertResponsesMessages, convertResponsesTools, processResponsesStream } from \"./openai-responses-shared.ts\";\nimport { buildBaseOptions, clampToXhigh } from \"./simple-options.ts\";\n\nconst DEFAULT_AZURE_API_VERSION = \"v1\";\nconst AZURE_TOOL_CALL_PROVIDERS = new Set([\"openai\", \"openai-codex\", \"opencode\", \"azure-openai-responses\"]);\n\nfunction parseDeploymentNameMap(value: string | undefined): Map<string, string> {\n\tconst map = new Map<string, string>();\n\tif (!value) return map;\n\tfor (const entry of value.split(\",\")) {\n\t\tconst trimmed = entry.trim();\n\t\tif (!trimmed) continue;\n\t\tconst [modelId, deploymentName] = trimmed.split(\"=\", 2);\n\t\tif (!modelId || !deploymentName) continue;\n\t\tmap.set(modelId.trim(), deploymentName.trim());\n\t}\n\treturn map;\n}\n\nfunction resolveDeploymentName(model: Model<\"azure-openai-responses\">, options?: AzureOpenAIResponsesOptions): string {\n\tif (options?.azureDeploymentName) {\n\t\treturn options.azureDeploymentName;\n\t}\n\tconst mappedDeployment = parseDeploymentNameMap(process.env.AZURE_OPENAI_DEPLOYMENT_NAME_MAP).get(model.id);\n\treturn mappedDeployment || model.id;\n}\n\nfunction formatAzureOpenAIError(error: unknown): string {\n\tif (error instanceof Error) {\n\t\tconst status = (error as Error & { status?: unknown }).status;\n\t\tconst statusCode = typeof status === \"number\" ? status : undefined;\n\t\tif (statusCode !== undefined) {\n\t\t\treturn `Azure OpenAI API error (${statusCode}): ${error.message}`;\n\t\t}\n\t\treturn error.message;\n\t}\n\ttry {\n\t\treturn JSON.stringify(error);\n\t} catch {\n\t\treturn String(error);\n\t}\n}\n\n// Azure OpenAI Responses-specific options\nexport interface AzureOpenAIResponsesOptions extends StreamOptions {\n\treasoningEffort?: \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\treasoningSummary?: \"auto\" | \"detailed\" | \"concise\" | null;\n\tazureApiVersion?: string;\n\tazureResourceName?: string;\n\tazureBaseUrl?: string;\n\tazureDeploymentName?: string;\n}\n\n/**\n * Generate function for Azure OpenAI Responses API\n */\nexport const streamAzureOpenAIResponses: StreamFunction<\"azure-openai-responses\", AzureOpenAIResponsesOptions> = (\n\tmodel: Model<\"azure-openai-responses\">,\n\tcontext: Context,\n\toptions?: AzureOpenAIResponsesOptions,\n): AssistantMessageEventStream => {\n\tconst stream = new AssistantMessageEventStream();\n\n\t// Start async processing\n\t(async () => {\n\t\tconst deploymentName = resolveDeploymentName(model, options);\n\n\t\tconst output: AssistantMessage = {\n\t\t\trole: \"assistant\",\n\t\t\tcontent: [],\n\t\t\tapi: \"azure-openai-responses\" as Api,\n\t\t\tprovider: model.provider,\n\t\t\tmodel: model.id,\n\t\t\tusage: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t\ttotalTokens: 0,\n\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t},\n\t\t\tstopReason: \"stop\",\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\n\t\ttry {\n\t\t\t// Create Azure OpenAI client\n\t\t\tconst apiKey = options?.apiKey;\n\t\t\tif (!apiKey) {\n\t\t\t\tthrow new Error(`No API key for provider: ${model.provider}`);\n\t\t\t}\n\t\t\tconst client = createClient(model, apiKey, options);\n\t\t\tlet params = buildParams(model, context, options, deploymentName);\n\t\t\tconst nextParams = await options?.onPayload?.(params, model);\n\t\t\tif (nextParams !== undefined) {\n\t\t\t\tparams = nextParams as ResponseCreateParamsStreaming;\n\t\t\t}\n\t\t\tconst requestOptions = {\n\t\t\t\t...(options?.signal ? { signal: options.signal } : {}),\n\t\t\t\t...(options?.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),\n\t\t\t\tmaxRetries: options?.maxRetries ?? 0,\n\t\t\t};\n\t\t\tconst { data: openaiStream, response } = await client.responses.create(params, requestOptions).withResponse();\n\t\t\tawait options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);\n\t\t\tstream.push({ type: \"start\", partial: output });\n\n\t\t\tawait processResponsesStream(openaiStream, output, stream, model);\n\n\t\t\tif (options?.signal?.aborted) {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\n\t\t\tif (output.stopReason === \"aborted\" || output.stopReason === \"error\") {\n\t\t\t\tthrow new Error(\"An unknown error occurred\");\n\t\t\t}\n\n\t\t\tstream.push({ type: \"done\", reason: output.stopReason, message: output });\n\t\t\tstream.end();\n\t\t} catch (error) {\n\t\t\tfor (const block of output.content) {\n\t\t\t\tdelete (block as { index?: number }).index;\n\t\t\t\t// partialJson is only a streaming scratch buffer; never persist it.\n\t\t\t\tdelete (block as { partialJson?: string }).partialJson;\n\t\t\t}\n\t\t\toutput.stopReason = options?.signal?.aborted ? \"aborted\" : \"error\";\n\t\t\toutput.errorMessage = formatAzureOpenAIError(error);\n\t\t\tstream.push({ type: \"error\", reason: output.stopReason, error: output });\n\t\t\tstream.end();\n\t\t}\n\t})();\n\n\treturn stream;\n};\n\nexport const streamSimpleAzureOpenAIResponses: StreamFunction<\"azure-openai-responses\", SimpleStreamOptions> = (\n\tmodel: Model<\"azure-openai-responses\">,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream => {\n\tconst apiKey = options?.apiKey;\n\tif (!apiKey) {\n\t\tthrow new Error(`No API key for provider: ${model.provider}`);\n\t}\n\n\tconst base = buildBaseOptions(model, options, apiKey);\n\tconst rawLevel = options?.reasoning ? clampThinkingLevel(model, options.reasoning) : undefined;\n\tconst clampedReasoning = rawLevel === \"off\" ? rawLevel : clampToXhigh(rawLevel);\n\tconst reasoningEffort = clampedReasoning === \"off\" ? undefined : clampedReasoning;\n\n\treturn streamAzureOpenAIResponses(model, context, {\n\t\t...base,\n\t\treasoningEffort,\n\t} satisfies AzureOpenAIResponsesOptions);\n};\n\nfunction normalizeAzureBaseUrl(baseUrl: string): string {\n\tconst trimmed = baseUrl.trim().replace(/\\/+$/, \"\");\n\tlet url: URL;\n\ttry {\n\t\turl = new URL(trimmed);\n\t} catch {\n\t\tthrow new Error(`Invalid Azure OpenAI base URL: ${baseUrl}`);\n\t}\n\n\tconst isAzureHost =\n\t\turl.hostname.endsWith(\".openai.azure.com\") || url.hostname.endsWith(\".cognitiveservices.azure.com\");\n\tconst normalizedPath = url.pathname.replace(/\\/+$/, \"\");\n\n\t// Ensure Azure hosts have /openai/v1 as base path so the AzureOpenAI SDK\n\t// can append /deployments/<model>/... and ?api-version=v1 correctly.\n\tif (isAzureHost && (normalizedPath === \"\" || normalizedPath === \"/\" || normalizedPath === \"/openai\")) {\n\t\turl.pathname = \"/openai/v1\";\n\t\turl.search = \"\";\n\t}\n\n\treturn url.toString().replace(/\\/+$/, \"\");\n}\n\nfunction buildDefaultBaseUrl(resourceName: string): string {\n\treturn `https://${resourceName}.openai.azure.com/openai/v1`;\n}\n\nfunction resolveAzureConfig(\n\tmodel: Model<\"azure-openai-responses\">,\n\toptions?: AzureOpenAIResponsesOptions,\n): { baseUrl: string; apiVersion: string } {\n\tconst apiVersion = options?.azureApiVersion || process.env.AZURE_OPENAI_API_VERSION || DEFAULT_AZURE_API_VERSION;\n\n\tconst baseUrl = options?.azureBaseUrl?.trim() || process.env.AZURE_OPENAI_BASE_URL?.trim() || undefined;\n\tconst resourceName = options?.azureResourceName || process.env.AZURE_OPENAI_RESOURCE_NAME;\n\n\tlet resolvedBaseUrl = baseUrl;\n\n\tif (!resolvedBaseUrl && resourceName) {\n\t\tresolvedBaseUrl = buildDefaultBaseUrl(resourceName);\n\t}\n\n\tif (!resolvedBaseUrl && model.baseUrl) {\n\t\tresolvedBaseUrl = model.baseUrl;\n\t}\n\n\tif (!resolvedBaseUrl) {\n\t\tthrow new Error(\n\t\t\t\"Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL or AZURE_OPENAI_RESOURCE_NAME, or pass azureBaseUrl, azureResourceName, or model.baseUrl.\",\n\t\t);\n\t}\n\n\treturn {\n\t\tbaseUrl: normalizeAzureBaseUrl(resolvedBaseUrl),\n\t\tapiVersion,\n\t};\n}\n\nfunction createClient(model: Model<\"azure-openai-responses\">, apiKey: string, options?: AzureOpenAIResponsesOptions) {\n\tconst headers = { ...model.headers };\n\n\tif (options?.headers) {\n\t\tObject.assign(headers, options.headers);\n\t}\n\n\tconst { baseUrl, apiVersion } = resolveAzureConfig(model, options);\n\n\treturn new AzureOpenAI({\n\t\tapiKey,\n\t\tapiVersion,\n\t\tdangerouslyAllowBrowser: true,\n\t\tdefaultHeaders: headers,\n\t\tbaseURL: baseUrl,\n\t});\n}\n\nfunction buildParams(\n\tmodel: Model<\"azure-openai-responses\">,\n\tcontext: Context,\n\toptions: AzureOpenAIResponsesOptions | undefined,\n\tdeploymentName: string,\n) {\n\tconst messages = convertResponsesMessages(model, context, AZURE_TOOL_CALL_PROVIDERS);\n\n\tconst params: ResponseCreateParamsStreaming = {\n\t\tmodel: deploymentName,\n\t\tinput: messages,\n\t\tstream: true,\n\t\tprompt_cache_key: clampOpenAIPromptCacheKey(options?.sessionId),\n\t\tstore: false,\n\t};\n\n\tif (options?.maxTokens) {\n\t\tparams.max_output_tokens = options?.maxTokens;\n\t}\n\n\tif (options?.temperature !== undefined) {\n\t\tparams.temperature = options?.temperature;\n\t}\n\n\tif (context.tools && context.tools.length > 0) {\n\t\tparams.tools = convertResponsesTools(context.tools);\n\t}\n\n\tif (model.reasoning) {\n\t\tif (options?.reasoningEffort || options?.reasoningSummary) {\n\t\t\tconst effort = options?.reasoningEffort\n\t\t\t\t? (model.thinkingLevelMap?.[options.reasoningEffort] ?? options.reasoningEffort)\n\t\t\t\t: \"medium\";\n\t\t\tparams.reasoning = {\n\t\t\t\teffort: effort as NonNullable<typeof params.reasoning>[\"effort\"],\n\t\t\t\tsummary: options?.reasoningSummary || \"auto\",\n\t\t\t};\n\t\t\tparams.include = [\"reasoning.encrypted_content\"];\n\t\t} else if (model.thinkingLevelMap?.off !== null) {\n\t\t\tparams.reasoning = {\n\t\t\t\teffort: (model.thinkingLevelMap?.off ?? \"none\") as NonNullable<typeof params.reasoning>[\"effort\"],\n\t\t\t};\n\t\t}\n\t}\n\n\treturn params;\n}\n"]}
1
+ {"version":3,"file":"azure-openai-responses.d.ts","sourceRoot":"","sources":["../../src/providers/azure-openai-responses.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7D,wBAAgB,4BAA4B,IAAI,QAAQ,CAAC,wBAAwB,CAAC,CAQjF","sourcesContent":["import { azureOpenAIResponsesApi } from \"../api/azure-openai-responses.lazy.ts\";\nimport { envApiKeyAuth } from \"../auth/helpers.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { AZURE_OPENAI_RESPONSES_MODELS } from \"./azure-openai-responses.models.ts\";\n\nexport function azureOpenAIResponsesProvider(): Provider<\"azure-openai-responses\"> {\n\treturn createProvider({\n\t\tid: \"azure-openai-responses\",\n\t\tname: \"Azure OpenAI\",\n\t\tauth: { apiKey: envApiKeyAuth(\"Azure OpenAI API key\", [\"AZURE_OPENAI_API_KEY\"]) },\n\t\tmodels: Object.values(AZURE_OPENAI_RESPONSES_MODELS),\n\t\tapi: azureOpenAIResponsesApi(),\n\t});\n}\n"]}
@@ -1,223 +1,14 @@
1
- import { AzureOpenAI } from "openai";
2
- import { clampThinkingLevel } from "../models.js";
3
- import { AssistantMessageEventStream } from "../utils/event-stream.js";
4
- import { headersToRecord } from "../utils/headers.js";
5
- import { clampOpenAIPromptCacheKey } from "./openai-prompt-cache.js";
6
- import { convertResponsesMessages, convertResponsesTools, processResponsesStream } from "./openai-responses-shared.js";
7
- import { buildBaseOptions, clampToXhigh } from "./simple-options.js";
8
- const DEFAULT_AZURE_API_VERSION = "v1";
9
- const AZURE_TOOL_CALL_PROVIDERS = new Set(["openai", "openai-codex", "opencode", "azure-openai-responses"]);
10
- function parseDeploymentNameMap(value) {
11
- const map = new Map();
12
- if (!value)
13
- return map;
14
- for (const entry of value.split(",")) {
15
- const trimmed = entry.trim();
16
- if (!trimmed)
17
- continue;
18
- const [modelId, deploymentName] = trimmed.split("=", 2);
19
- if (!modelId || !deploymentName)
20
- continue;
21
- map.set(modelId.trim(), deploymentName.trim());
22
- }
23
- return map;
24
- }
25
- function resolveDeploymentName(model, options) {
26
- if (options?.azureDeploymentName) {
27
- return options.azureDeploymentName;
28
- }
29
- const mappedDeployment = parseDeploymentNameMap(process.env.AZURE_OPENAI_DEPLOYMENT_NAME_MAP).get(model.id);
30
- return mappedDeployment || model.id;
31
- }
32
- function formatAzureOpenAIError(error) {
33
- if (error instanceof Error) {
34
- const status = error.status;
35
- const statusCode = typeof status === "number" ? status : undefined;
36
- if (statusCode !== undefined) {
37
- return `Azure OpenAI API error (${statusCode}): ${error.message}`;
38
- }
39
- return error.message;
40
- }
41
- try {
42
- return JSON.stringify(error);
43
- }
44
- catch {
45
- return String(error);
46
- }
47
- }
48
- /**
49
- * Generate function for Azure OpenAI Responses API
50
- */
51
- export const streamAzureOpenAIResponses = (model, context, options) => {
52
- const stream = new AssistantMessageEventStream();
53
- // Start async processing
54
- (async () => {
55
- const deploymentName = resolveDeploymentName(model, options);
56
- const output = {
57
- role: "assistant",
58
- content: [],
59
- api: "azure-openai-responses",
60
- provider: model.provider,
61
- model: model.id,
62
- usage: {
63
- input: 0,
64
- output: 0,
65
- cacheRead: 0,
66
- cacheWrite: 0,
67
- totalTokens: 0,
68
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
69
- },
70
- stopReason: "stop",
71
- timestamp: Date.now(),
72
- };
73
- try {
74
- // Create Azure OpenAI client
75
- const apiKey = options?.apiKey;
76
- if (!apiKey) {
77
- throw new Error(`No API key for provider: ${model.provider}`);
78
- }
79
- const client = createClient(model, apiKey, options);
80
- let params = buildParams(model, context, options, deploymentName);
81
- const nextParams = await options?.onPayload?.(params, model);
82
- if (nextParams !== undefined) {
83
- params = nextParams;
84
- }
85
- const requestOptions = {
86
- ...(options?.signal ? { signal: options.signal } : {}),
87
- ...(options?.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),
88
- maxRetries: options?.maxRetries ?? 0,
89
- };
90
- const { data: openaiStream, response } = await client.responses.create(params, requestOptions).withResponse();
91
- await options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);
92
- stream.push({ type: "start", partial: output });
93
- await processResponsesStream(openaiStream, output, stream, model);
94
- if (options?.signal?.aborted) {
95
- throw new Error("Request was aborted");
96
- }
97
- if (output.stopReason === "aborted" || output.stopReason === "error") {
98
- throw new Error("An unknown error occurred");
99
- }
100
- stream.push({ type: "done", reason: output.stopReason, message: output });
101
- stream.end();
102
- }
103
- catch (error) {
104
- for (const block of output.content) {
105
- delete block.index;
106
- // partialJson is only a streaming scratch buffer; never persist it.
107
- delete block.partialJson;
108
- }
109
- output.stopReason = options?.signal?.aborted ? "aborted" : "error";
110
- output.errorMessage = formatAzureOpenAIError(error);
111
- stream.push({ type: "error", reason: output.stopReason, error: output });
112
- stream.end();
113
- }
114
- })();
115
- return stream;
116
- };
117
- export const streamSimpleAzureOpenAIResponses = (model, context, options) => {
118
- const apiKey = options?.apiKey;
119
- if (!apiKey) {
120
- throw new Error(`No API key for provider: ${model.provider}`);
121
- }
122
- const base = buildBaseOptions(model, options, apiKey);
123
- const rawLevel = options?.reasoning ? clampThinkingLevel(model, options.reasoning) : undefined;
124
- const clampedReasoning = rawLevel === "off" ? rawLevel : clampToXhigh(rawLevel);
125
- const reasoningEffort = clampedReasoning === "off" ? undefined : clampedReasoning;
126
- return streamAzureOpenAIResponses(model, context, {
127
- ...base,
128
- reasoningEffort,
129
- });
130
- };
131
- function normalizeAzureBaseUrl(baseUrl) {
132
- const trimmed = baseUrl.trim().replace(/\/+$/, "");
133
- let url;
134
- try {
135
- url = new URL(trimmed);
136
- }
137
- catch {
138
- throw new Error(`Invalid Azure OpenAI base URL: ${baseUrl}`);
139
- }
140
- const isAzureHost = url.hostname.endsWith(".openai.azure.com") || url.hostname.endsWith(".cognitiveservices.azure.com");
141
- const normalizedPath = url.pathname.replace(/\/+$/, "");
142
- // Ensure Azure hosts have /openai/v1 as base path so the AzureOpenAI SDK
143
- // can append /deployments/<model>/... and ?api-version=v1 correctly.
144
- if (isAzureHost && (normalizedPath === "" || normalizedPath === "/" || normalizedPath === "/openai")) {
145
- url.pathname = "/openai/v1";
146
- url.search = "";
147
- }
148
- return url.toString().replace(/\/+$/, "");
149
- }
150
- function buildDefaultBaseUrl(resourceName) {
151
- return `https://${resourceName}.openai.azure.com/openai/v1`;
152
- }
153
- function resolveAzureConfig(model, options) {
154
- const apiVersion = options?.azureApiVersion || process.env.AZURE_OPENAI_API_VERSION || DEFAULT_AZURE_API_VERSION;
155
- const baseUrl = options?.azureBaseUrl?.trim() || process.env.AZURE_OPENAI_BASE_URL?.trim() || undefined;
156
- const resourceName = options?.azureResourceName || process.env.AZURE_OPENAI_RESOURCE_NAME;
157
- let resolvedBaseUrl = baseUrl;
158
- if (!resolvedBaseUrl && resourceName) {
159
- resolvedBaseUrl = buildDefaultBaseUrl(resourceName);
160
- }
161
- if (!resolvedBaseUrl && model.baseUrl) {
162
- resolvedBaseUrl = model.baseUrl;
163
- }
164
- if (!resolvedBaseUrl) {
165
- throw new Error("Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL or AZURE_OPENAI_RESOURCE_NAME, or pass azureBaseUrl, azureResourceName, or model.baseUrl.");
166
- }
167
- return {
168
- baseUrl: normalizeAzureBaseUrl(resolvedBaseUrl),
169
- apiVersion,
170
- };
171
- }
172
- function createClient(model, apiKey, options) {
173
- const headers = { ...model.headers };
174
- if (options?.headers) {
175
- Object.assign(headers, options.headers);
176
- }
177
- const { baseUrl, apiVersion } = resolveAzureConfig(model, options);
178
- return new AzureOpenAI({
179
- apiKey,
180
- apiVersion,
181
- dangerouslyAllowBrowser: true,
182
- defaultHeaders: headers,
183
- baseURL: baseUrl,
1
+ import { azureOpenAIResponsesApi } from "../api/azure-openai-responses.lazy.js";
2
+ import { envApiKeyAuth } from "../auth/helpers.js";
3
+ import { createProvider } from "../models.js";
4
+ import { AZURE_OPENAI_RESPONSES_MODELS } from "./azure-openai-responses.models.js";
5
+ export function azureOpenAIResponsesProvider() {
6
+ return createProvider({
7
+ id: "azure-openai-responses",
8
+ name: "Azure OpenAI",
9
+ auth: { apiKey: envApiKeyAuth("Azure OpenAI API key", ["AZURE_OPENAI_API_KEY"]) },
10
+ models: Object.values(AZURE_OPENAI_RESPONSES_MODELS),
11
+ api: azureOpenAIResponsesApi(),
184
12
  });
185
13
  }
186
- function buildParams(model, context, options, deploymentName) {
187
- const messages = convertResponsesMessages(model, context, AZURE_TOOL_CALL_PROVIDERS);
188
- const params = {
189
- model: deploymentName,
190
- input: messages,
191
- stream: true,
192
- prompt_cache_key: clampOpenAIPromptCacheKey(options?.sessionId),
193
- store: false,
194
- };
195
- if (options?.maxTokens) {
196
- params.max_output_tokens = options?.maxTokens;
197
- }
198
- if (options?.temperature !== undefined) {
199
- params.temperature = options?.temperature;
200
- }
201
- if (context.tools && context.tools.length > 0) {
202
- params.tools = convertResponsesTools(context.tools);
203
- }
204
- if (model.reasoning) {
205
- if (options?.reasoningEffort || options?.reasoningSummary) {
206
- const effort = options?.reasoningEffort
207
- ? (model.thinkingLevelMap?.[options.reasoningEffort] ?? options.reasoningEffort)
208
- : "medium";
209
- params.reasoning = {
210
- effort: effort,
211
- summary: options?.reasoningSummary || "auto",
212
- };
213
- params.include = ["reasoning.encrypted_content"];
214
- }
215
- else if (model.thinkingLevelMap?.off !== null) {
216
- params.reasoning = {
217
- effort: (model.thinkingLevelMap?.off ?? "none"),
218
- };
219
- }
220
- }
221
- return params;
222
- }
223
14
  //# sourceMappingURL=azure-openai-responses.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"azure-openai-responses.js","sourceRoot":"","sources":["../../src/providers/azure-openai-responses.ts"],"names":[],"mappings":"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","sourcesContent":["import { AzureOpenAI } from \"openai\";\nimport type { ResponseCreateParamsStreaming } from \"openai/resources/responses/responses.js\";\nimport { clampThinkingLevel } from \"../models.ts\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tContext,\n\tModel,\n\tSimpleStreamOptions,\n\tStreamFunction,\n\tStreamOptions,\n} from \"../types.ts\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.ts\";\nimport { headersToRecord } from \"../utils/headers.ts\";\nimport { clampOpenAIPromptCacheKey } from \"./openai-prompt-cache.ts\";\nimport { convertResponsesMessages, convertResponsesTools, processResponsesStream } from \"./openai-responses-shared.ts\";\nimport { buildBaseOptions, clampToXhigh } from \"./simple-options.ts\";\n\nconst DEFAULT_AZURE_API_VERSION = \"v1\";\nconst AZURE_TOOL_CALL_PROVIDERS = new Set([\"openai\", \"openai-codex\", \"opencode\", \"azure-openai-responses\"]);\n\nfunction parseDeploymentNameMap(value: string | undefined): Map<string, string> {\n\tconst map = new Map<string, string>();\n\tif (!value) return map;\n\tfor (const entry of value.split(\",\")) {\n\t\tconst trimmed = entry.trim();\n\t\tif (!trimmed) continue;\n\t\tconst [modelId, deploymentName] = trimmed.split(\"=\", 2);\n\t\tif (!modelId || !deploymentName) continue;\n\t\tmap.set(modelId.trim(), deploymentName.trim());\n\t}\n\treturn map;\n}\n\nfunction resolveDeploymentName(model: Model<\"azure-openai-responses\">, options?: AzureOpenAIResponsesOptions): string {\n\tif (options?.azureDeploymentName) {\n\t\treturn options.azureDeploymentName;\n\t}\n\tconst mappedDeployment = parseDeploymentNameMap(process.env.AZURE_OPENAI_DEPLOYMENT_NAME_MAP).get(model.id);\n\treturn mappedDeployment || model.id;\n}\n\nfunction formatAzureOpenAIError(error: unknown): string {\n\tif (error instanceof Error) {\n\t\tconst status = (error as Error & { status?: unknown }).status;\n\t\tconst statusCode = typeof status === \"number\" ? status : undefined;\n\t\tif (statusCode !== undefined) {\n\t\t\treturn `Azure OpenAI API error (${statusCode}): ${error.message}`;\n\t\t}\n\t\treturn error.message;\n\t}\n\ttry {\n\t\treturn JSON.stringify(error);\n\t} catch {\n\t\treturn String(error);\n\t}\n}\n\n// Azure OpenAI Responses-specific options\nexport interface AzureOpenAIResponsesOptions extends StreamOptions {\n\treasoningEffort?: \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\treasoningSummary?: \"auto\" | \"detailed\" | \"concise\" | null;\n\tazureApiVersion?: string;\n\tazureResourceName?: string;\n\tazureBaseUrl?: string;\n\tazureDeploymentName?: string;\n}\n\n/**\n * Generate function for Azure OpenAI Responses API\n */\nexport const streamAzureOpenAIResponses: StreamFunction<\"azure-openai-responses\", AzureOpenAIResponsesOptions> = (\n\tmodel: Model<\"azure-openai-responses\">,\n\tcontext: Context,\n\toptions?: AzureOpenAIResponsesOptions,\n): AssistantMessageEventStream => {\n\tconst stream = new AssistantMessageEventStream();\n\n\t// Start async processing\n\t(async () => {\n\t\tconst deploymentName = resolveDeploymentName(model, options);\n\n\t\tconst output: AssistantMessage = {\n\t\t\trole: \"assistant\",\n\t\t\tcontent: [],\n\t\t\tapi: \"azure-openai-responses\" as Api,\n\t\t\tprovider: model.provider,\n\t\t\tmodel: model.id,\n\t\t\tusage: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t\ttotalTokens: 0,\n\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t},\n\t\t\tstopReason: \"stop\",\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\n\t\ttry {\n\t\t\t// Create Azure OpenAI client\n\t\t\tconst apiKey = options?.apiKey;\n\t\t\tif (!apiKey) {\n\t\t\t\tthrow new Error(`No API key for provider: ${model.provider}`);\n\t\t\t}\n\t\t\tconst client = createClient(model, apiKey, options);\n\t\t\tlet params = buildParams(model, context, options, deploymentName);\n\t\t\tconst nextParams = await options?.onPayload?.(params, model);\n\t\t\tif (nextParams !== undefined) {\n\t\t\t\tparams = nextParams as ResponseCreateParamsStreaming;\n\t\t\t}\n\t\t\tconst requestOptions = {\n\t\t\t\t...(options?.signal ? { signal: options.signal } : {}),\n\t\t\t\t...(options?.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),\n\t\t\t\tmaxRetries: options?.maxRetries ?? 0,\n\t\t\t};\n\t\t\tconst { data: openaiStream, response } = await client.responses.create(params, requestOptions).withResponse();\n\t\t\tawait options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);\n\t\t\tstream.push({ type: \"start\", partial: output });\n\n\t\t\tawait processResponsesStream(openaiStream, output, stream, model);\n\n\t\t\tif (options?.signal?.aborted) {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\n\t\t\tif (output.stopReason === \"aborted\" || output.stopReason === \"error\") {\n\t\t\t\tthrow new Error(\"An unknown error occurred\");\n\t\t\t}\n\n\t\t\tstream.push({ type: \"done\", reason: output.stopReason, message: output });\n\t\t\tstream.end();\n\t\t} catch (error) {\n\t\t\tfor (const block of output.content) {\n\t\t\t\tdelete (block as { index?: number }).index;\n\t\t\t\t// partialJson is only a streaming scratch buffer; never persist it.\n\t\t\t\tdelete (block as { partialJson?: string }).partialJson;\n\t\t\t}\n\t\t\toutput.stopReason = options?.signal?.aborted ? \"aborted\" : \"error\";\n\t\t\toutput.errorMessage = formatAzureOpenAIError(error);\n\t\t\tstream.push({ type: \"error\", reason: output.stopReason, error: output });\n\t\t\tstream.end();\n\t\t}\n\t})();\n\n\treturn stream;\n};\n\nexport const streamSimpleAzureOpenAIResponses: StreamFunction<\"azure-openai-responses\", SimpleStreamOptions> = (\n\tmodel: Model<\"azure-openai-responses\">,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream => {\n\tconst apiKey = options?.apiKey;\n\tif (!apiKey) {\n\t\tthrow new Error(`No API key for provider: ${model.provider}`);\n\t}\n\n\tconst base = buildBaseOptions(model, options, apiKey);\n\tconst rawLevel = options?.reasoning ? clampThinkingLevel(model, options.reasoning) : undefined;\n\tconst clampedReasoning = rawLevel === \"off\" ? rawLevel : clampToXhigh(rawLevel);\n\tconst reasoningEffort = clampedReasoning === \"off\" ? undefined : clampedReasoning;\n\n\treturn streamAzureOpenAIResponses(model, context, {\n\t\t...base,\n\t\treasoningEffort,\n\t} satisfies AzureOpenAIResponsesOptions);\n};\n\nfunction normalizeAzureBaseUrl(baseUrl: string): string {\n\tconst trimmed = baseUrl.trim().replace(/\\/+$/, \"\");\n\tlet url: URL;\n\ttry {\n\t\turl = new URL(trimmed);\n\t} catch {\n\t\tthrow new Error(`Invalid Azure OpenAI base URL: ${baseUrl}`);\n\t}\n\n\tconst isAzureHost =\n\t\turl.hostname.endsWith(\".openai.azure.com\") || url.hostname.endsWith(\".cognitiveservices.azure.com\");\n\tconst normalizedPath = url.pathname.replace(/\\/+$/, \"\");\n\n\t// Ensure Azure hosts have /openai/v1 as base path so the AzureOpenAI SDK\n\t// can append /deployments/<model>/... and ?api-version=v1 correctly.\n\tif (isAzureHost && (normalizedPath === \"\" || normalizedPath === \"/\" || normalizedPath === \"/openai\")) {\n\t\turl.pathname = \"/openai/v1\";\n\t\turl.search = \"\";\n\t}\n\n\treturn url.toString().replace(/\\/+$/, \"\");\n}\n\nfunction buildDefaultBaseUrl(resourceName: string): string {\n\treturn `https://${resourceName}.openai.azure.com/openai/v1`;\n}\n\nfunction resolveAzureConfig(\n\tmodel: Model<\"azure-openai-responses\">,\n\toptions?: AzureOpenAIResponsesOptions,\n): { baseUrl: string; apiVersion: string } {\n\tconst apiVersion = options?.azureApiVersion || process.env.AZURE_OPENAI_API_VERSION || DEFAULT_AZURE_API_VERSION;\n\n\tconst baseUrl = options?.azureBaseUrl?.trim() || process.env.AZURE_OPENAI_BASE_URL?.trim() || undefined;\n\tconst resourceName = options?.azureResourceName || process.env.AZURE_OPENAI_RESOURCE_NAME;\n\n\tlet resolvedBaseUrl = baseUrl;\n\n\tif (!resolvedBaseUrl && resourceName) {\n\t\tresolvedBaseUrl = buildDefaultBaseUrl(resourceName);\n\t}\n\n\tif (!resolvedBaseUrl && model.baseUrl) {\n\t\tresolvedBaseUrl = model.baseUrl;\n\t}\n\n\tif (!resolvedBaseUrl) {\n\t\tthrow new Error(\n\t\t\t\"Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL or AZURE_OPENAI_RESOURCE_NAME, or pass azureBaseUrl, azureResourceName, or model.baseUrl.\",\n\t\t);\n\t}\n\n\treturn {\n\t\tbaseUrl: normalizeAzureBaseUrl(resolvedBaseUrl),\n\t\tapiVersion,\n\t};\n}\n\nfunction createClient(model: Model<\"azure-openai-responses\">, apiKey: string, options?: AzureOpenAIResponsesOptions) {\n\tconst headers = { ...model.headers };\n\n\tif (options?.headers) {\n\t\tObject.assign(headers, options.headers);\n\t}\n\n\tconst { baseUrl, apiVersion } = resolveAzureConfig(model, options);\n\n\treturn new AzureOpenAI({\n\t\tapiKey,\n\t\tapiVersion,\n\t\tdangerouslyAllowBrowser: true,\n\t\tdefaultHeaders: headers,\n\t\tbaseURL: baseUrl,\n\t});\n}\n\nfunction buildParams(\n\tmodel: Model<\"azure-openai-responses\">,\n\tcontext: Context,\n\toptions: AzureOpenAIResponsesOptions | undefined,\n\tdeploymentName: string,\n) {\n\tconst messages = convertResponsesMessages(model, context, AZURE_TOOL_CALL_PROVIDERS);\n\n\tconst params: ResponseCreateParamsStreaming = {\n\t\tmodel: deploymentName,\n\t\tinput: messages,\n\t\tstream: true,\n\t\tprompt_cache_key: clampOpenAIPromptCacheKey(options?.sessionId),\n\t\tstore: false,\n\t};\n\n\tif (options?.maxTokens) {\n\t\tparams.max_output_tokens = options?.maxTokens;\n\t}\n\n\tif (options?.temperature !== undefined) {\n\t\tparams.temperature = options?.temperature;\n\t}\n\n\tif (context.tools && context.tools.length > 0) {\n\t\tparams.tools = convertResponsesTools(context.tools);\n\t}\n\n\tif (model.reasoning) {\n\t\tif (options?.reasoningEffort || options?.reasoningSummary) {\n\t\t\tconst effort = options?.reasoningEffort\n\t\t\t\t? (model.thinkingLevelMap?.[options.reasoningEffort] ?? options.reasoningEffort)\n\t\t\t\t: \"medium\";\n\t\t\tparams.reasoning = {\n\t\t\t\teffort: effort as NonNullable<typeof params.reasoning>[\"effort\"],\n\t\t\t\tsummary: options?.reasoningSummary || \"auto\",\n\t\t\t};\n\t\t\tparams.include = [\"reasoning.encrypted_content\"];\n\t\t} else if (model.thinkingLevelMap?.off !== null) {\n\t\t\tparams.reasoning = {\n\t\t\t\teffort: (model.thinkingLevelMap?.off ?? \"none\") as NonNullable<typeof params.reasoning>[\"effort\"],\n\t\t\t};\n\t\t}\n\t}\n\n\treturn params;\n}\n"]}
1
+ {"version":3,"file":"azure-openai-responses.js","sourceRoot":"","sources":["../../src/providers/azure-openai-responses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,MAAM,UAAU,4BAA4B,GAAuC;IAClF,OAAO,cAAc,CAAC;QACrB,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,sBAAsB,EAAE,CAAC,sBAAsB,CAAC,CAAC,EAAE;QACjF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,6BAA6B,CAAC;QACpD,GAAG,EAAE,uBAAuB,EAAE;KAC9B,CAAC,CAAC;AAAA,CACH","sourcesContent":["import { azureOpenAIResponsesApi } from \"../api/azure-openai-responses.lazy.ts\";\nimport { envApiKeyAuth } from \"../auth/helpers.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { AZURE_OPENAI_RESPONSES_MODELS } from \"./azure-openai-responses.models.ts\";\n\nexport function azureOpenAIResponsesProvider(): Provider<\"azure-openai-responses\"> {\n\treturn createProvider({\n\t\tid: \"azure-openai-responses\",\n\t\tname: \"Azure OpenAI\",\n\t\tauth: { apiKey: envApiKeyAuth(\"Azure OpenAI API key\", [\"AZURE_OPENAI_API_KEY\"]) },\n\t\tmodels: Object.values(AZURE_OPENAI_RESPONSES_MODELS),\n\t\tapi: azureOpenAIResponsesApi(),\n\t});\n}\n"]}