@bastani/pi-ai 0.9.14

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 (745) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE +22 -0
  3. package/NOTICE.md +16 -0
  4. package/README.md +1672 -0
  5. package/dist/api/anthropic-messages.d.ts +71 -0
  6. package/dist/api/anthropic-messages.d.ts.map +1 -0
  7. package/dist/api/anthropic-messages.js +1060 -0
  8. package/dist/api/anthropic-messages.js.map +1 -0
  9. package/dist/api/anthropic-messages.lazy.d.ts +3 -0
  10. package/dist/api/anthropic-messages.lazy.d.ts.map +1 -0
  11. package/dist/api/anthropic-messages.lazy.js +3 -0
  12. package/dist/api/anthropic-messages.lazy.js.map +1 -0
  13. package/dist/api/azure-openai-responses.d.ts +15 -0
  14. package/dist/api/azure-openai-responses.d.ts.map +1 -0
  15. package/dist/api/azure-openai-responses.js +242 -0
  16. package/dist/api/azure-openai-responses.js.map +1 -0
  17. package/dist/api/azure-openai-responses.lazy.d.ts +3 -0
  18. package/dist/api/azure-openai-responses.lazy.d.ts.map +1 -0
  19. package/dist/api/azure-openai-responses.lazy.js +3 -0
  20. package/dist/api/azure-openai-responses.lazy.js.map +1 -0
  21. package/dist/api/bedrock-converse-stream.d.ts +38 -0
  22. package/dist/api/bedrock-converse-stream.d.ts.map +1 -0
  23. package/dist/api/bedrock-converse-stream.js +967 -0
  24. package/dist/api/bedrock-converse-stream.js.map +1 -0
  25. package/dist/api/bedrock-converse-stream.lazy.d.ts +9 -0
  26. package/dist/api/bedrock-converse-stream.lazy.d.ts.map +1 -0
  27. package/dist/api/bedrock-converse-stream.lazy.js +30 -0
  28. package/dist/api/bedrock-converse-stream.lazy.js.map +1 -0
  29. package/dist/api/cloudflare-gateway-binding.d.ts +69 -0
  30. package/dist/api/cloudflare-gateway-binding.d.ts.map +1 -0
  31. package/dist/api/cloudflare-gateway-binding.js +159 -0
  32. package/dist/api/cloudflare-gateway-binding.js.map +1 -0
  33. package/dist/api/cloudflare.d.ts +9 -0
  34. package/dist/api/cloudflare.d.ts.map +1 -0
  35. package/dist/api/cloudflare.js +9 -0
  36. package/dist/api/cloudflare.js.map +1 -0
  37. package/dist/api/constrained-sampling.d.ts +20 -0
  38. package/dist/api/constrained-sampling.d.ts.map +1 -0
  39. package/dist/api/constrained-sampling.js +222 -0
  40. package/dist/api/constrained-sampling.js.map +1 -0
  41. package/dist/api/github-copilot-headers.d.ts +8 -0
  42. package/dist/api/github-copilot-headers.d.ts.map +1 -0
  43. package/dist/api/github-copilot-headers.js +29 -0
  44. package/dist/api/github-copilot-headers.js.map +1 -0
  45. package/dist/api/google-generative-ai.d.ts +13 -0
  46. package/dist/api/google-generative-ai.d.ts.map +1 -0
  47. package/dist/api/google-generative-ai.js +417 -0
  48. package/dist/api/google-generative-ai.js.map +1 -0
  49. package/dist/api/google-generative-ai.lazy.d.ts +3 -0
  50. package/dist/api/google-generative-ai.lazy.d.ts.map +1 -0
  51. package/dist/api/google-generative-ai.lazy.js +3 -0
  52. package/dist/api/google-generative-ai.lazy.js.map +1 -0
  53. package/dist/api/google-shared.d.ts +81 -0
  54. package/dist/api/google-shared.d.ts.map +1 -0
  55. package/dist/api/google-shared.js +384 -0
  56. package/dist/api/google-shared.js.map +1 -0
  57. package/dist/api/google-vertex.d.ts +15 -0
  58. package/dist/api/google-vertex.d.ts.map +1 -0
  59. package/dist/api/google-vertex.js +466 -0
  60. package/dist/api/google-vertex.js.map +1 -0
  61. package/dist/api/google-vertex.lazy.d.ts +3 -0
  62. package/dist/api/google-vertex.lazy.d.ts.map +1 -0
  63. package/dist/api/google-vertex.lazy.js +3 -0
  64. package/dist/api/google-vertex.lazy.js.map +1 -0
  65. package/dist/api/lazy.d.ts +19 -0
  66. package/dist/api/lazy.d.ts.map +1 -0
  67. package/dist/api/lazy.js +70 -0
  68. package/dist/api/lazy.js.map +1 -0
  69. package/dist/api/mistral-conversations.d.ts +25 -0
  70. package/dist/api/mistral-conversations.d.ts.map +1 -0
  71. package/dist/api/mistral-conversations.js +736 -0
  72. package/dist/api/mistral-conversations.js.map +1 -0
  73. package/dist/api/mistral-conversations.lazy.d.ts +3 -0
  74. package/dist/api/mistral-conversations.lazy.d.ts.map +1 -0
  75. package/dist/api/mistral-conversations.lazy.js +3 -0
  76. package/dist/api/mistral-conversations.lazy.js.map +1 -0
  77. package/dist/api/openai-codex-responses.d.ts +31 -0
  78. package/dist/api/openai-codex-responses.d.ts.map +1 -0
  79. package/dist/api/openai-codex-responses.js +1294 -0
  80. package/dist/api/openai-codex-responses.js.map +1 -0
  81. package/dist/api/openai-codex-responses.lazy.d.ts +3 -0
  82. package/dist/api/openai-codex-responses.lazy.d.ts.map +1 -0
  83. package/dist/api/openai-codex-responses.lazy.js +3 -0
  84. package/dist/api/openai-codex-responses.lazy.js.map +1 -0
  85. package/dist/api/openai-completions.d.ts +22 -0
  86. package/dist/api/openai-completions.d.ts.map +1 -0
  87. package/dist/api/openai-completions.js +1279 -0
  88. package/dist/api/openai-completions.js.map +1 -0
  89. package/dist/api/openai-completions.lazy.d.ts +3 -0
  90. package/dist/api/openai-completions.lazy.d.ts.map +1 -0
  91. package/dist/api/openai-completions.lazy.js +3 -0
  92. package/dist/api/openai-completions.lazy.js.map +1 -0
  93. package/dist/api/openai-prompt-cache.d.ts +3 -0
  94. package/dist/api/openai-prompt-cache.d.ts.map +1 -0
  95. package/dist/api/openai-prompt-cache.js +10 -0
  96. package/dist/api/openai-prompt-cache.js.map +1 -0
  97. package/dist/api/openai-responses-shared.d.ts +26 -0
  98. package/dist/api/openai-responses-shared.d.ts.map +1 -0
  99. package/dist/api/openai-responses-shared.js +686 -0
  100. package/dist/api/openai-responses-shared.js.map +1 -0
  101. package/dist/api/openai-responses.d.ts +14 -0
  102. package/dist/api/openai-responses.d.ts.map +1 -0
  103. package/dist/api/openai-responses.js +283 -0
  104. package/dist/api/openai-responses.js.map +1 -0
  105. package/dist/api/openai-responses.lazy.d.ts +3 -0
  106. package/dist/api/openai-responses.lazy.d.ts.map +1 -0
  107. package/dist/api/openai-responses.lazy.js +3 -0
  108. package/dist/api/openai-responses.lazy.js.map +1 -0
  109. package/dist/api/openrouter-images.d.ts +3 -0
  110. package/dist/api/openrouter-images.d.ts.map +1 -0
  111. package/dist/api/openrouter-images.js +132 -0
  112. package/dist/api/openrouter-images.js.map +1 -0
  113. package/dist/api/openrouter-images.lazy.d.ts +3 -0
  114. package/dist/api/openrouter-images.lazy.d.ts.map +1 -0
  115. package/dist/api/openrouter-images.lazy.js +4 -0
  116. package/dist/api/openrouter-images.lazy.js.map +1 -0
  117. package/dist/api/pi-messages.d.ts +97 -0
  118. package/dist/api/pi-messages.d.ts.map +1 -0
  119. package/dist/api/pi-messages.js +307 -0
  120. package/dist/api/pi-messages.js.map +1 -0
  121. package/dist/api/pi-messages.lazy.d.ts +3 -0
  122. package/dist/api/pi-messages.lazy.d.ts.map +1 -0
  123. package/dist/api/pi-messages.lazy.js +3 -0
  124. package/dist/api/pi-messages.lazy.js.map +1 -0
  125. package/dist/api/simple-options.d.ts +11 -0
  126. package/dist/api/simple-options.d.ts.map +1 -0
  127. package/dist/api/simple-options.js +59 -0
  128. package/dist/api/simple-options.js.map +1 -0
  129. package/dist/api/transform-messages.d.ts +8 -0
  130. package/dist/api/transform-messages.d.ts.map +1 -0
  131. package/dist/api/transform-messages.js +187 -0
  132. package/dist/api/transform-messages.js.map +1 -0
  133. package/dist/auth/context.d.ts +7 -0
  134. package/dist/auth/context.d.ts.map +1 -0
  135. package/dist/auth/context.js +42 -0
  136. package/dist/auth/context.js.map +1 -0
  137. package/dist/auth/credential-store.d.ts +17 -0
  138. package/dist/auth/credential-store.d.ts.map +1 -0
  139. package/dist/auth/credential-store.js +51 -0
  140. package/dist/auth/credential-store.js.map +1 -0
  141. package/dist/auth/helpers.d.ts +22 -0
  142. package/dist/auth/helpers.d.ts.map +1 -0
  143. package/dist/auth/helpers.js +53 -0
  144. package/dist/auth/helpers.js.map +1 -0
  145. package/dist/auth/oauth/anthropic.d.ts +9 -0
  146. package/dist/auth/oauth/anthropic.d.ts.map +1 -0
  147. package/dist/auth/oauth/anthropic.js +308 -0
  148. package/dist/auth/oauth/anthropic.js.map +1 -0
  149. package/dist/auth/oauth/device-code.d.ts +23 -0
  150. package/dist/auth/oauth/device-code.d.ts.map +1 -0
  151. package/dist/auth/oauth/device-code.js +69 -0
  152. package/dist/auth/oauth/device-code.js.map +1 -0
  153. package/dist/auth/oauth/github-copilot.d.ts +6 -0
  154. package/dist/auth/oauth/github-copilot.d.ts.map +1 -0
  155. package/dist/auth/oauth/github-copilot.js +328 -0
  156. package/dist/auth/oauth/github-copilot.js.map +1 -0
  157. package/dist/auth/oauth/kimi-coding.d.ts +10 -0
  158. package/dist/auth/oauth/kimi-coding.d.ts.map +1 -0
  159. package/dist/auth/oauth/kimi-coding.js +261 -0
  160. package/dist/auth/oauth/kimi-coding.js.map +1 -0
  161. package/dist/auth/oauth/load.d.ts +27 -0
  162. package/dist/auth/oauth/load.d.ts.map +1 -0
  163. package/dist/auth/oauth/load.js +59 -0
  164. package/dist/auth/oauth/load.js.map +1 -0
  165. package/dist/auth/oauth/oauth-page.d.ts +3 -0
  166. package/dist/auth/oauth/oauth-page.d.ts.map +1 -0
  167. package/dist/auth/oauth/oauth-page.js +105 -0
  168. package/dist/auth/oauth/oauth-page.js.map +1 -0
  169. package/dist/auth/oauth/openai-codex.d.ts +9 -0
  170. package/dist/auth/oauth/openai-codex.d.ts.map +1 -0
  171. package/dist/auth/oauth/openai-codex.js +450 -0
  172. package/dist/auth/oauth/openai-codex.js.map +1 -0
  173. package/dist/auth/oauth/openrouter.d.ts +15 -0
  174. package/dist/auth/oauth/openrouter.d.ts.map +1 -0
  175. package/dist/auth/oauth/openrouter.js +277 -0
  176. package/dist/auth/oauth/openrouter.js.map +1 -0
  177. package/dist/auth/oauth/pkce.d.ts +13 -0
  178. package/dist/auth/oauth/pkce.d.ts.map +1 -0
  179. package/dist/auth/oauth/pkce.js +31 -0
  180. package/dist/auth/oauth/pkce.js.map +1 -0
  181. package/dist/auth/oauth/radius.d.ts +17 -0
  182. package/dist/auth/oauth/radius.d.ts.map +1 -0
  183. package/dist/auth/oauth/radius.js +321 -0
  184. package/dist/auth/oauth/radius.js.map +1 -0
  185. package/dist/auth/oauth/xai.d.ts +6 -0
  186. package/dist/auth/oauth/xai.d.ts.map +1 -0
  187. package/dist/auth/oauth/xai.js +190 -0
  188. package/dist/auth/oauth/xai.js.map +1 -0
  189. package/dist/auth/resolve.d.ts +27 -0
  190. package/dist/auth/resolve.d.ts.map +1 -0
  191. package/dist/auth/resolve.js +132 -0
  192. package/dist/auth/resolve.js.map +1 -0
  193. package/dist/auth/types.d.ts +231 -0
  194. package/dist/auth/types.d.ts.map +1 -0
  195. package/dist/auth/types.js +2 -0
  196. package/dist/auth/types.js.map +1 -0
  197. package/dist/bedrock-provider.d.ts +5 -0
  198. package/dist/bedrock-provider.d.ts.map +1 -0
  199. package/dist/bedrock-provider.js +6 -0
  200. package/dist/bedrock-provider.js.map +1 -0
  201. package/dist/bun-oauth.d.ts +3 -0
  202. package/dist/bun-oauth.d.ts.map +1 -0
  203. package/dist/bun-oauth.js +21 -0
  204. package/dist/bun-oauth.js.map +1 -0
  205. package/dist/cli.d.ts +3 -0
  206. package/dist/cli.d.ts.map +1 -0
  207. package/dist/cli.js +113 -0
  208. package/dist/cli.js.map +1 -0
  209. package/dist/compat/extension-oauth-types.d.ts +39 -0
  210. package/dist/compat/extension-oauth-types.d.ts.map +1 -0
  211. package/dist/compat/extension-oauth-types.js +2 -0
  212. package/dist/compat/extension-oauth-types.js.map +1 -0
  213. package/dist/compat.d.ts +67 -0
  214. package/dist/compat.d.ts.map +1 -0
  215. package/dist/compat.js +199 -0
  216. package/dist/compat.js.map +1 -0
  217. package/dist/env-api-keys.d.ts +21 -0
  218. package/dist/env-api-keys.d.ts.map +1 -0
  219. package/dist/env-api-keys.js +156 -0
  220. package/dist/env-api-keys.js.map +1 -0
  221. package/dist/image-models.d.ts +10 -0
  222. package/dist/image-models.d.ts.map +1 -0
  223. package/dist/image-models.generated.d.ts +680 -0
  224. package/dist/image-models.generated.d.ts.map +1 -0
  225. package/dist/image-models.generated.js +682 -0
  226. package/dist/image-models.generated.js.map +1 -0
  227. package/dist/image-models.js +23 -0
  228. package/dist/image-models.js.map +1 -0
  229. package/dist/images-api-registry.d.ts +14 -0
  230. package/dist/images-api-registry.d.ts.map +1 -0
  231. package/dist/images-api-registry.js +22 -0
  232. package/dist/images-api-registry.js.map +1 -0
  233. package/dist/images-models.d.ts +95 -0
  234. package/dist/images-models.d.ts.map +1 -0
  235. package/dist/images-models.js +143 -0
  236. package/dist/images-models.js.map +1 -0
  237. package/dist/images.d.ts +4 -0
  238. package/dist/images.d.ts.map +1 -0
  239. package/dist/images.js +14 -0
  240. package/dist/images.js.map +1 -0
  241. package/dist/index.d.ts +35 -0
  242. package/dist/index.d.ts.map +1 -0
  243. package/dist/index.js +22 -0
  244. package/dist/index.js.map +1 -0
  245. package/dist/legacy-api-aliases.d.ts +42 -0
  246. package/dist/legacy-api-aliases.d.ts.map +1 -0
  247. package/dist/legacy-api-aliases.js +49 -0
  248. package/dist/legacy-api-aliases.js.map +1 -0
  249. package/dist/model-catalog.d.ts +17 -0
  250. package/dist/model-catalog.d.ts.map +1 -0
  251. package/dist/model-catalog.js +4 -0
  252. package/dist/model-catalog.js.map +1 -0
  253. package/dist/models-store.d.ts +29 -0
  254. package/dist/models-store.d.ts.map +1 -0
  255. package/dist/models-store.js +17 -0
  256. package/dist/models-store.js.map +1 -0
  257. package/dist/models.d.ts +200 -0
  258. package/dist/models.d.ts.map +1 -0
  259. package/dist/models.generated.d.ts +81 -0
  260. package/dist/models.generated.d.ts.map +1 -0
  261. package/dist/models.generated.js +83 -0
  262. package/dist/models.generated.js.map +1 -0
  263. package/dist/models.js +588 -0
  264. package/dist/models.js.map +1 -0
  265. package/dist/oauth.d.ts +3 -0
  266. package/dist/oauth.d.ts.map +1 -0
  267. package/dist/oauth.js +2 -0
  268. package/dist/oauth.js.map +1 -0
  269. package/dist/providers/all.d.ts +28 -0
  270. package/dist/providers/all.d.ts.map +1 -0
  271. package/dist/providers/all.js +131 -0
  272. package/dist/providers/all.js.map +1 -0
  273. package/dist/providers/amazon-bedrock.d.ts +3 -0
  274. package/dist/providers/amazon-bedrock.d.ts.map +1 -0
  275. package/dist/providers/amazon-bedrock.js +93 -0
  276. package/dist/providers/amazon-bedrock.js.map +1 -0
  277. package/dist/providers/amazon-bedrock.models.d.ts +4 -0
  278. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -0
  279. package/dist/providers/amazon-bedrock.models.js +6 -0
  280. package/dist/providers/amazon-bedrock.models.js.map +1 -0
  281. package/dist/providers/ant-ling.d.ts +3 -0
  282. package/dist/providers/ant-ling.d.ts.map +1 -0
  283. package/dist/providers/ant-ling.js +15 -0
  284. package/dist/providers/ant-ling.js.map +1 -0
  285. package/dist/providers/ant-ling.models.d.ts +4 -0
  286. package/dist/providers/ant-ling.models.d.ts.map +1 -0
  287. package/dist/providers/ant-ling.models.js +6 -0
  288. package/dist/providers/ant-ling.models.js.map +1 -0
  289. package/dist/providers/anthropic.d.ts +3 -0
  290. package/dist/providers/anthropic.d.ts.map +1 -0
  291. package/dist/providers/anthropic.js +56 -0
  292. package/dist/providers/anthropic.js.map +1 -0
  293. package/dist/providers/anthropic.models.d.ts +4 -0
  294. package/dist/providers/anthropic.models.d.ts.map +1 -0
  295. package/dist/providers/anthropic.models.js +6 -0
  296. package/dist/providers/anthropic.models.js.map +1 -0
  297. package/dist/providers/azure-openai-responses.d.ts +3 -0
  298. package/dist/providers/azure-openai-responses.d.ts.map +1 -0
  299. package/dist/providers/azure-openai-responses.js +14 -0
  300. package/dist/providers/azure-openai-responses.js.map +1 -0
  301. package/dist/providers/azure-openai-responses.models.d.ts +4 -0
  302. package/dist/providers/azure-openai-responses.models.d.ts.map +1 -0
  303. package/dist/providers/azure-openai-responses.models.js +6 -0
  304. package/dist/providers/azure-openai-responses.models.js.map +1 -0
  305. package/dist/providers/baseten.d.ts +3 -0
  306. package/dist/providers/baseten.d.ts.map +1 -0
  307. package/dist/providers/baseten.js +15 -0
  308. package/dist/providers/baseten.js.map +1 -0
  309. package/dist/providers/baseten.models.d.ts +4 -0
  310. package/dist/providers/baseten.models.d.ts.map +1 -0
  311. package/dist/providers/baseten.models.js +6 -0
  312. package/dist/providers/baseten.models.js.map +1 -0
  313. package/dist/providers/cerebras.d.ts +3 -0
  314. package/dist/providers/cerebras.d.ts.map +1 -0
  315. package/dist/providers/cerebras.js +15 -0
  316. package/dist/providers/cerebras.js.map +1 -0
  317. package/dist/providers/cerebras.models.d.ts +4 -0
  318. package/dist/providers/cerebras.models.d.ts.map +1 -0
  319. package/dist/providers/cerebras.models.js +6 -0
  320. package/dist/providers/cerebras.models.js.map +1 -0
  321. package/dist/providers/cloudflare-ai-gateway.d.ts +3 -0
  322. package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -0
  323. package/dist/providers/cloudflare-ai-gateway.js +21 -0
  324. package/dist/providers/cloudflare-ai-gateway.js.map +1 -0
  325. package/dist/providers/cloudflare-ai-gateway.models.d.ts +4 -0
  326. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -0
  327. package/dist/providers/cloudflare-ai-gateway.models.js +6 -0
  328. package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -0
  329. package/dist/providers/cloudflare-auth.d.ts +4 -0
  330. package/dist/providers/cloudflare-auth.d.ts.map +1 -0
  331. package/dist/providers/cloudflare-auth.js +86 -0
  332. package/dist/providers/cloudflare-auth.js.map +1 -0
  333. package/dist/providers/cloudflare-stream.d.ts +8 -0
  334. package/dist/providers/cloudflare-stream.d.ts.map +1 -0
  335. package/dist/providers/cloudflare-stream.js +21 -0
  336. package/dist/providers/cloudflare-stream.js.map +1 -0
  337. package/dist/providers/cloudflare-workers-ai.d.ts +3 -0
  338. package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -0
  339. package/dist/providers/cloudflare-workers-ai.js +15 -0
  340. package/dist/providers/cloudflare-workers-ai.js.map +1 -0
  341. package/dist/providers/cloudflare-workers-ai.models.d.ts +4 -0
  342. package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -0
  343. package/dist/providers/cloudflare-workers-ai.models.js +6 -0
  344. package/dist/providers/cloudflare-workers-ai.models.js.map +1 -0
  345. package/dist/providers/data/.manifest.json +1 -0
  346. package/dist/providers/data/amazon-bedrock.json +1 -0
  347. package/dist/providers/data/ant-ling.json +1 -0
  348. package/dist/providers/data/anthropic.json +1 -0
  349. package/dist/providers/data/azure-openai-responses.json +1 -0
  350. package/dist/providers/data/baseten.json +1 -0
  351. package/dist/providers/data/cerebras.json +1 -0
  352. package/dist/providers/data/cloudflare-ai-gateway.json +1 -0
  353. package/dist/providers/data/cloudflare-workers-ai.json +1 -0
  354. package/dist/providers/data/deepseek.json +1 -0
  355. package/dist/providers/data/fireworks.json +1 -0
  356. package/dist/providers/data/github-copilot.json +1 -0
  357. package/dist/providers/data/google-vertex.json +1 -0
  358. package/dist/providers/data/google.json +1 -0
  359. package/dist/providers/data/groq.json +1 -0
  360. package/dist/providers/data/huggingface.json +1 -0
  361. package/dist/providers/data/kimi-coding.json +1 -0
  362. package/dist/providers/data/minimax-cn.json +1 -0
  363. package/dist/providers/data/minimax.json +1 -0
  364. package/dist/providers/data/mistral.json +1 -0
  365. package/dist/providers/data/moonshotai-cn.json +1 -0
  366. package/dist/providers/data/moonshotai.json +1 -0
  367. package/dist/providers/data/nvidia.json +1 -0
  368. package/dist/providers/data/openai-codex.json +1 -0
  369. package/dist/providers/data/openai.json +1 -0
  370. package/dist/providers/data/opencode-go.json +1 -0
  371. package/dist/providers/data/opencode.json +1 -0
  372. package/dist/providers/data/openrouter.json +1 -0
  373. package/dist/providers/data/qwen-token-plan-cn.json +1 -0
  374. package/dist/providers/data/qwen-token-plan-individual.json +1 -0
  375. package/dist/providers/data/qwen-token-plan.json +1 -0
  376. package/dist/providers/data/together.json +1 -0
  377. package/dist/providers/data/vercel-ai-gateway.json +1 -0
  378. package/dist/providers/data/xai.json +1 -0
  379. package/dist/providers/data/xiaomi-token-plan-ams.json +1 -0
  380. package/dist/providers/data/xiaomi-token-plan-cn.json +1 -0
  381. package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -0
  382. package/dist/providers/data/xiaomi.json +1 -0
  383. package/dist/providers/data/zai-coding-cn.json +1 -0
  384. package/dist/providers/data/zai.json +1 -0
  385. package/dist/providers/deepseek.d.ts +3 -0
  386. package/dist/providers/deepseek.d.ts.map +1 -0
  387. package/dist/providers/deepseek.js +15 -0
  388. package/dist/providers/deepseek.js.map +1 -0
  389. package/dist/providers/deepseek.models.d.ts +4 -0
  390. package/dist/providers/deepseek.models.d.ts.map +1 -0
  391. package/dist/providers/deepseek.models.js +6 -0
  392. package/dist/providers/deepseek.models.js.map +1 -0
  393. package/dist/providers/faux.d.ts +102 -0
  394. package/dist/providers/faux.d.ts.map +1 -0
  395. package/dist/providers/faux.js +488 -0
  396. package/dist/providers/faux.js.map +1 -0
  397. package/dist/providers/fireworks.d.ts +3 -0
  398. package/dist/providers/fireworks.d.ts.map +1 -0
  399. package/dist/providers/fireworks.js +19 -0
  400. package/dist/providers/fireworks.js.map +1 -0
  401. package/dist/providers/fireworks.models.d.ts +4 -0
  402. package/dist/providers/fireworks.models.d.ts.map +1 -0
  403. package/dist/providers/fireworks.models.js +6 -0
  404. package/dist/providers/fireworks.models.js.map +1 -0
  405. package/dist/providers/github-copilot.d.ts +3 -0
  406. package/dist/providers/github-copilot.d.ts.map +1 -0
  407. package/dist/providers/github-copilot.js +35 -0
  408. package/dist/providers/github-copilot.js.map +1 -0
  409. package/dist/providers/github-copilot.models.d.ts +4 -0
  410. package/dist/providers/github-copilot.models.d.ts.map +1 -0
  411. package/dist/providers/github-copilot.models.js +6 -0
  412. package/dist/providers/github-copilot.models.js.map +1 -0
  413. package/dist/providers/google-vertex.d.ts +3 -0
  414. package/dist/providers/google-vertex.d.ts.map +1 -0
  415. package/dist/providers/google-vertex.js +94 -0
  416. package/dist/providers/google-vertex.js.map +1 -0
  417. package/dist/providers/google-vertex.models.d.ts +4 -0
  418. package/dist/providers/google-vertex.models.d.ts.map +1 -0
  419. package/dist/providers/google-vertex.models.js +6 -0
  420. package/dist/providers/google-vertex.models.js.map +1 -0
  421. package/dist/providers/google.d.ts +3 -0
  422. package/dist/providers/google.d.ts.map +1 -0
  423. package/dist/providers/google.js +15 -0
  424. package/dist/providers/google.js.map +1 -0
  425. package/dist/providers/google.models.d.ts +4 -0
  426. package/dist/providers/google.models.d.ts.map +1 -0
  427. package/dist/providers/google.models.js +6 -0
  428. package/dist/providers/google.models.js.map +1 -0
  429. package/dist/providers/groq.d.ts +3 -0
  430. package/dist/providers/groq.d.ts.map +1 -0
  431. package/dist/providers/groq.js +15 -0
  432. package/dist/providers/groq.js.map +1 -0
  433. package/dist/providers/groq.models.d.ts +4 -0
  434. package/dist/providers/groq.models.d.ts.map +1 -0
  435. package/dist/providers/groq.models.js +6 -0
  436. package/dist/providers/groq.models.js.map +1 -0
  437. package/dist/providers/huggingface.d.ts +3 -0
  438. package/dist/providers/huggingface.d.ts.map +1 -0
  439. package/dist/providers/huggingface.js +15 -0
  440. package/dist/providers/huggingface.js.map +1 -0
  441. package/dist/providers/huggingface.models.d.ts +4 -0
  442. package/dist/providers/huggingface.models.d.ts.map +1 -0
  443. package/dist/providers/huggingface.models.js +6 -0
  444. package/dist/providers/huggingface.models.js.map +1 -0
  445. package/dist/providers/images/register-builtins.d.ts +4 -0
  446. package/dist/providers/images/register-builtins.d.ts.map +1 -0
  447. package/dist/providers/images/register-builtins.js +34 -0
  448. package/dist/providers/images/register-builtins.js.map +1 -0
  449. package/dist/providers/kimi-coding.d.ts +3 -0
  450. package/dist/providers/kimi-coding.d.ts.map +1 -0
  451. package/dist/providers/kimi-coding.js +24 -0
  452. package/dist/providers/kimi-coding.js.map +1 -0
  453. package/dist/providers/kimi-coding.models.d.ts +4 -0
  454. package/dist/providers/kimi-coding.models.d.ts.map +1 -0
  455. package/dist/providers/kimi-coding.models.js +6 -0
  456. package/dist/providers/kimi-coding.models.js.map +1 -0
  457. package/dist/providers/minimax-cn.d.ts +3 -0
  458. package/dist/providers/minimax-cn.d.ts.map +1 -0
  459. package/dist/providers/minimax-cn.js +15 -0
  460. package/dist/providers/minimax-cn.js.map +1 -0
  461. package/dist/providers/minimax-cn.models.d.ts +4 -0
  462. package/dist/providers/minimax-cn.models.d.ts.map +1 -0
  463. package/dist/providers/minimax-cn.models.js +6 -0
  464. package/dist/providers/minimax-cn.models.js.map +1 -0
  465. package/dist/providers/minimax.d.ts +3 -0
  466. package/dist/providers/minimax.d.ts.map +1 -0
  467. package/dist/providers/minimax.js +15 -0
  468. package/dist/providers/minimax.js.map +1 -0
  469. package/dist/providers/minimax.models.d.ts +4 -0
  470. package/dist/providers/minimax.models.d.ts.map +1 -0
  471. package/dist/providers/minimax.models.js +6 -0
  472. package/dist/providers/minimax.models.js.map +1 -0
  473. package/dist/providers/mistral.d.ts +3 -0
  474. package/dist/providers/mistral.d.ts.map +1 -0
  475. package/dist/providers/mistral.js +15 -0
  476. package/dist/providers/mistral.js.map +1 -0
  477. package/dist/providers/mistral.models.d.ts +4 -0
  478. package/dist/providers/mistral.models.d.ts.map +1 -0
  479. package/dist/providers/mistral.models.js +6 -0
  480. package/dist/providers/mistral.models.js.map +1 -0
  481. package/dist/providers/moonshotai-cn.d.ts +3 -0
  482. package/dist/providers/moonshotai-cn.d.ts.map +1 -0
  483. package/dist/providers/moonshotai-cn.js +15 -0
  484. package/dist/providers/moonshotai-cn.js.map +1 -0
  485. package/dist/providers/moonshotai-cn.models.d.ts +4 -0
  486. package/dist/providers/moonshotai-cn.models.d.ts.map +1 -0
  487. package/dist/providers/moonshotai-cn.models.js +6 -0
  488. package/dist/providers/moonshotai-cn.models.js.map +1 -0
  489. package/dist/providers/moonshotai.d.ts +3 -0
  490. package/dist/providers/moonshotai.d.ts.map +1 -0
  491. package/dist/providers/moonshotai.js +15 -0
  492. package/dist/providers/moonshotai.js.map +1 -0
  493. package/dist/providers/moonshotai.models.d.ts +4 -0
  494. package/dist/providers/moonshotai.models.d.ts.map +1 -0
  495. package/dist/providers/moonshotai.models.js +6 -0
  496. package/dist/providers/moonshotai.models.js.map +1 -0
  497. package/dist/providers/nvidia.d.ts +3 -0
  498. package/dist/providers/nvidia.d.ts.map +1 -0
  499. package/dist/providers/nvidia.js +15 -0
  500. package/dist/providers/nvidia.js.map +1 -0
  501. package/dist/providers/nvidia.models.d.ts +4 -0
  502. package/dist/providers/nvidia.models.d.ts.map +1 -0
  503. package/dist/providers/nvidia.models.js +6 -0
  504. package/dist/providers/nvidia.models.js.map +1 -0
  505. package/dist/providers/openai-codex.d.ts +3 -0
  506. package/dist/providers/openai-codex.d.ts.map +1 -0
  507. package/dist/providers/openai-codex.js +22 -0
  508. package/dist/providers/openai-codex.js.map +1 -0
  509. package/dist/providers/openai-codex.models.d.ts +4 -0
  510. package/dist/providers/openai-codex.models.d.ts.map +1 -0
  511. package/dist/providers/openai-codex.models.js +6 -0
  512. package/dist/providers/openai-codex.models.js.map +1 -0
  513. package/dist/providers/openai.d.ts +3 -0
  514. package/dist/providers/openai.d.ts.map +1 -0
  515. package/dist/providers/openai.js +15 -0
  516. package/dist/providers/openai.js.map +1 -0
  517. package/dist/providers/openai.models.d.ts +4 -0
  518. package/dist/providers/openai.models.d.ts.map +1 -0
  519. package/dist/providers/openai.models.js +6 -0
  520. package/dist/providers/openai.models.js.map +1 -0
  521. package/dist/providers/opencode-go.d.ts +3 -0
  522. package/dist/providers/opencode-go.d.ts.map +1 -0
  523. package/dist/providers/opencode-go.js +20 -0
  524. package/dist/providers/opencode-go.js.map +1 -0
  525. package/dist/providers/opencode-go.models.d.ts +4 -0
  526. package/dist/providers/opencode-go.models.d.ts.map +1 -0
  527. package/dist/providers/opencode-go.models.js +6 -0
  528. package/dist/providers/opencode-go.models.js.map +1 -0
  529. package/dist/providers/opencode.d.ts +3 -0
  530. package/dist/providers/opencode.d.ts.map +1 -0
  531. package/dist/providers/opencode.js +22 -0
  532. package/dist/providers/opencode.js.map +1 -0
  533. package/dist/providers/opencode.models.d.ts +4 -0
  534. package/dist/providers/opencode.models.d.ts.map +1 -0
  535. package/dist/providers/opencode.models.js +6 -0
  536. package/dist/providers/opencode.models.js.map +1 -0
  537. package/dist/providers/openrouter-images.d.ts +3 -0
  538. package/dist/providers/openrouter-images.d.ts.map +1 -0
  539. package/dist/providers/openrouter-images.js +22 -0
  540. package/dist/providers/openrouter-images.js.map +1 -0
  541. package/dist/providers/openrouter.d.ts +3 -0
  542. package/dist/providers/openrouter.d.ts.map +1 -0
  543. package/dist/providers/openrouter.js +23 -0
  544. package/dist/providers/openrouter.js.map +1 -0
  545. package/dist/providers/openrouter.models.d.ts +4 -0
  546. package/dist/providers/openrouter.models.d.ts.map +1 -0
  547. package/dist/providers/openrouter.models.js +6 -0
  548. package/dist/providers/openrouter.models.js.map +1 -0
  549. package/dist/providers/qwen-token-plan-cn.d.ts +3 -0
  550. package/dist/providers/qwen-token-plan-cn.d.ts.map +1 -0
  551. package/dist/providers/qwen-token-plan-cn.js +15 -0
  552. package/dist/providers/qwen-token-plan-cn.js.map +1 -0
  553. package/dist/providers/qwen-token-plan-cn.models.d.ts +4 -0
  554. package/dist/providers/qwen-token-plan-cn.models.d.ts.map +1 -0
  555. package/dist/providers/qwen-token-plan-cn.models.js +6 -0
  556. package/dist/providers/qwen-token-plan-cn.models.js.map +1 -0
  557. package/dist/providers/qwen-token-plan-individual.d.ts +3 -0
  558. package/dist/providers/qwen-token-plan-individual.d.ts.map +1 -0
  559. package/dist/providers/qwen-token-plan-individual.js +15 -0
  560. package/dist/providers/qwen-token-plan-individual.js.map +1 -0
  561. package/dist/providers/qwen-token-plan-individual.models.d.ts +4 -0
  562. package/dist/providers/qwen-token-plan-individual.models.d.ts.map +1 -0
  563. package/dist/providers/qwen-token-plan-individual.models.js +6 -0
  564. package/dist/providers/qwen-token-plan-individual.models.js.map +1 -0
  565. package/dist/providers/qwen-token-plan.d.ts +3 -0
  566. package/dist/providers/qwen-token-plan.d.ts.map +1 -0
  567. package/dist/providers/qwen-token-plan.js +15 -0
  568. package/dist/providers/qwen-token-plan.js.map +1 -0
  569. package/dist/providers/qwen-token-plan.models.d.ts +4 -0
  570. package/dist/providers/qwen-token-plan.models.d.ts.map +1 -0
  571. package/dist/providers/qwen-token-plan.models.js +6 -0
  572. package/dist/providers/qwen-token-plan.models.js.map +1 -0
  573. package/dist/providers/radius-config.d.ts +26 -0
  574. package/dist/providers/radius-config.d.ts.map +1 -0
  575. package/dist/providers/radius-config.js +63 -0
  576. package/dist/providers/radius-config.js.map +1 -0
  577. package/dist/providers/radius.d.ts +9 -0
  578. package/dist/providers/radius.d.ts.map +1 -0
  579. package/dist/providers/radius.js +64 -0
  580. package/dist/providers/radius.js.map +1 -0
  581. package/dist/providers/together.d.ts +3 -0
  582. package/dist/providers/together.d.ts.map +1 -0
  583. package/dist/providers/together.js +15 -0
  584. package/dist/providers/together.js.map +1 -0
  585. package/dist/providers/together.models.d.ts +4 -0
  586. package/dist/providers/together.models.d.ts.map +1 -0
  587. package/dist/providers/together.models.js +6 -0
  588. package/dist/providers/together.models.js.map +1 -0
  589. package/dist/providers/vercel-ai-gateway.d.ts +3 -0
  590. package/dist/providers/vercel-ai-gateway.d.ts.map +1 -0
  591. package/dist/providers/vercel-ai-gateway.js +15 -0
  592. package/dist/providers/vercel-ai-gateway.js.map +1 -0
  593. package/dist/providers/vercel-ai-gateway.models.d.ts +4 -0
  594. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -0
  595. package/dist/providers/vercel-ai-gateway.models.js +6 -0
  596. package/dist/providers/vercel-ai-gateway.models.js.map +1 -0
  597. package/dist/providers/xai.d.ts +3 -0
  598. package/dist/providers/xai.d.ts.map +1 -0
  599. package/dist/providers/xai.js +28 -0
  600. package/dist/providers/xai.js.map +1 -0
  601. package/dist/providers/xai.models.d.ts +4 -0
  602. package/dist/providers/xai.models.d.ts.map +1 -0
  603. package/dist/providers/xai.models.js +6 -0
  604. package/dist/providers/xai.models.js.map +1 -0
  605. package/dist/providers/xiaomi-token-plan-ams.d.ts +3 -0
  606. package/dist/providers/xiaomi-token-plan-ams.d.ts.map +1 -0
  607. package/dist/providers/xiaomi-token-plan-ams.js +15 -0
  608. package/dist/providers/xiaomi-token-plan-ams.js.map +1 -0
  609. package/dist/providers/xiaomi-token-plan-ams.models.d.ts +4 -0
  610. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -0
  611. package/dist/providers/xiaomi-token-plan-ams.models.js +6 -0
  612. package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -0
  613. package/dist/providers/xiaomi-token-plan-cn.d.ts +3 -0
  614. package/dist/providers/xiaomi-token-plan-cn.d.ts.map +1 -0
  615. package/dist/providers/xiaomi-token-plan-cn.js +15 -0
  616. package/dist/providers/xiaomi-token-plan-cn.js.map +1 -0
  617. package/dist/providers/xiaomi-token-plan-cn.models.d.ts +4 -0
  618. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -0
  619. package/dist/providers/xiaomi-token-plan-cn.models.js +6 -0
  620. package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -0
  621. package/dist/providers/xiaomi-token-plan-sgp.d.ts +3 -0
  622. package/dist/providers/xiaomi-token-plan-sgp.d.ts.map +1 -0
  623. package/dist/providers/xiaomi-token-plan-sgp.js +15 -0
  624. package/dist/providers/xiaomi-token-plan-sgp.js.map +1 -0
  625. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +4 -0
  626. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -0
  627. package/dist/providers/xiaomi-token-plan-sgp.models.js +6 -0
  628. package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -0
  629. package/dist/providers/xiaomi.d.ts +3 -0
  630. package/dist/providers/xiaomi.d.ts.map +1 -0
  631. package/dist/providers/xiaomi.js +15 -0
  632. package/dist/providers/xiaomi.js.map +1 -0
  633. package/dist/providers/xiaomi.models.d.ts +4 -0
  634. package/dist/providers/xiaomi.models.d.ts.map +1 -0
  635. package/dist/providers/xiaomi.models.js +6 -0
  636. package/dist/providers/xiaomi.models.js.map +1 -0
  637. package/dist/providers/zai-coding-cn.d.ts +3 -0
  638. package/dist/providers/zai-coding-cn.d.ts.map +1 -0
  639. package/dist/providers/zai-coding-cn.js +15 -0
  640. package/dist/providers/zai-coding-cn.js.map +1 -0
  641. package/dist/providers/zai-coding-cn.models.d.ts +4 -0
  642. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -0
  643. package/dist/providers/zai-coding-cn.models.js +6 -0
  644. package/dist/providers/zai-coding-cn.models.js.map +1 -0
  645. package/dist/providers/zai.d.ts +3 -0
  646. package/dist/providers/zai.d.ts.map +1 -0
  647. package/dist/providers/zai.js +15 -0
  648. package/dist/providers/zai.js.map +1 -0
  649. package/dist/providers/zai.models.d.ts +4 -0
  650. package/dist/providers/zai.models.d.ts.map +1 -0
  651. package/dist/providers/zai.models.js +6 -0
  652. package/dist/providers/zai.models.js.map +1 -0
  653. package/dist/session-resources.d.ts +4 -0
  654. package/dist/session-resources.d.ts.map +1 -0
  655. package/dist/session-resources.js +22 -0
  656. package/dist/session-resources.js.map +1 -0
  657. package/dist/types.d.ts +697 -0
  658. package/dist/types.d.ts.map +1 -0
  659. package/dist/types.js +2 -0
  660. package/dist/types.js.map +1 -0
  661. package/dist/utils/abort-signals.d.ts +6 -0
  662. package/dist/utils/abort-signals.d.ts.map +1 -0
  663. package/dist/utils/abort-signals.js +34 -0
  664. package/dist/utils/abort-signals.js.map +1 -0
  665. package/dist/utils/abort.d.ts +8 -0
  666. package/dist/utils/abort.d.ts.map +1 -0
  667. package/dist/utils/abort.js +49 -0
  668. package/dist/utils/abort.js.map +1 -0
  669. package/dist/utils/deferred-tools.d.ts +9 -0
  670. package/dist/utils/deferred-tools.d.ts.map +1 -0
  671. package/dist/utils/deferred-tools.js +36 -0
  672. package/dist/utils/deferred-tools.js.map +1 -0
  673. package/dist/utils/diagnostics.d.ts +19 -0
  674. package/dist/utils/diagnostics.d.ts.map +1 -0
  675. package/dist/utils/diagnostics.js +25 -0
  676. package/dist/utils/diagnostics.js.map +1 -0
  677. package/dist/utils/error-body.d.ts +25 -0
  678. package/dist/utils/error-body.d.ts.map +1 -0
  679. package/dist/utils/error-body.js +133 -0
  680. package/dist/utils/error-body.js.map +1 -0
  681. package/dist/utils/estimate.d.ts +17 -0
  682. package/dist/utils/estimate.d.ts.map +1 -0
  683. package/dist/utils/estimate.js +116 -0
  684. package/dist/utils/estimate.js.map +1 -0
  685. package/dist/utils/event-stream.d.ts +21 -0
  686. package/dist/utils/event-stream.d.ts.map +1 -0
  687. package/dist/utils/event-stream.js +81 -0
  688. package/dist/utils/event-stream.js.map +1 -0
  689. package/dist/utils/hash.d.ts +3 -0
  690. package/dist/utils/hash.d.ts.map +1 -0
  691. package/dist/utils/hash.js +14 -0
  692. package/dist/utils/hash.js.map +1 -0
  693. package/dist/utils/headers.d.ts +4 -0
  694. package/dist/utils/headers.d.ts.map +1 -0
  695. package/dist/utils/headers.js +18 -0
  696. package/dist/utils/headers.js.map +1 -0
  697. package/dist/utils/json-parse.d.ts +16 -0
  698. package/dist/utils/json-parse.d.ts.map +1 -0
  699. package/dist/utils/json-parse.js +113 -0
  700. package/dist/utils/json-parse.js.map +1 -0
  701. package/dist/utils/node-http-proxy.d.ts +4 -0
  702. package/dist/utils/node-http-proxy.d.ts.map +1 -0
  703. package/dist/utils/node-http-proxy.js +92 -0
  704. package/dist/utils/node-http-proxy.js.map +1 -0
  705. package/dist/utils/overflow.d.ts +68 -0
  706. package/dist/utils/overflow.d.ts.map +1 -0
  707. package/dist/utils/overflow.js +172 -0
  708. package/dist/utils/overflow.js.map +1 -0
  709. package/dist/utils/pi-user-agent.d.ts +2 -0
  710. package/dist/utils/pi-user-agent.d.ts.map +1 -0
  711. package/dist/utils/pi-user-agent.js +12 -0
  712. package/dist/utils/pi-user-agent.js.map +1 -0
  713. package/dist/utils/provider-env.d.ts +7 -0
  714. package/dist/utils/provider-env.d.ts.map +1 -0
  715. package/dist/utils/provider-env.js +44 -0
  716. package/dist/utils/provider-env.js.map +1 -0
  717. package/dist/utils/provider-retry.d.ts +16 -0
  718. package/dist/utils/provider-retry.d.ts.map +1 -0
  719. package/dist/utils/provider-retry.js +94 -0
  720. package/dist/utils/provider-retry.js.map +1 -0
  721. package/dist/utils/retry.d.ts +53 -0
  722. package/dist/utils/retry.d.ts.map +1 -0
  723. package/dist/utils/retry.js +174 -0
  724. package/dist/utils/retry.js.map +1 -0
  725. package/dist/utils/sanitize-unicode.d.ts +22 -0
  726. package/dist/utils/sanitize-unicode.d.ts.map +1 -0
  727. package/dist/utils/sanitize-unicode.js +26 -0
  728. package/dist/utils/sanitize-unicode.js.map +1 -0
  729. package/dist/utils/text.d.ts +6 -0
  730. package/dist/utils/text.d.ts.map +1 -0
  731. package/dist/utils/text.js +10 -0
  732. package/dist/utils/text.js.map +1 -0
  733. package/dist/utils/typebox-helpers.d.ts +17 -0
  734. package/dist/utils/typebox-helpers.d.ts.map +1 -0
  735. package/dist/utils/typebox-helpers.js +21 -0
  736. package/dist/utils/typebox-helpers.js.map +1 -0
  737. package/dist/utils/uuid.d.ts +3 -0
  738. package/dist/utils/uuid.d.ts.map +1 -0
  739. package/dist/utils/uuid.js +46 -0
  740. package/dist/utils/uuid.js.map +1 -0
  741. package/dist/utils/validation.d.ts +18 -0
  742. package/dist/utils/validation.d.ts.map +1 -0
  743. package/dist/utils/validation.js +309 -0
  744. package/dist/utils/validation.js.map +1 -0
  745. package/package.json +122 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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","sourcesContent":["import { lazyStream } from \"./api/lazy.ts\";\nimport { defaultProviderAuthContext as defaultAuthContext } from \"./auth/context.ts\";\nimport { InMemoryCredentialStore } from \"./auth/credential-store.ts\";\nimport { type AuthResolutionOverrides, ModelsError, resolveProviderAuth } from \"./auth/resolve.ts\";\nimport type {\n\tAuthCheck,\n\tAuthContext,\n\tAuthInteraction,\n\tAuthOperationOptions,\n\tAuthResult,\n\tAuthType,\n\tCredential,\n\tCredentialStore,\n\tProviderAuth,\n} from \"./auth/types.ts\";\nimport { InMemoryModelsStore, type ModelsStore, type ModelsStoreEntry } from \"./models-store.ts\";\nimport type {\n\tApi,\n\tApiStreamOptions,\n\tAssistantMessage,\n\tAssistantMessageEventStream,\n\tContext,\n\tDeferredCancelOptions,\n\tDeferredFetchOptions,\n\tDeferredHandle,\n\tModel,\n\tModelCostRates,\n\tModelThinkingLevel,\n\tProviderHeaders,\n\tProviderRequestOptions,\n\tProviderStreams,\n\tSimpleStreamOptions,\n\tUsage,\n} from \"./types.ts\";\nimport { operationSignal, raceWithAbortSignal } from \"./utils/abort.ts\";\n\nexport { ModelsError, type ModelsErrorCode } from \"./auth/resolve.ts\";\n\nexport interface ModelsPublication {\n\t/** Provider-selected persisted catalog. Omit to leave storage unchanged; null deletes it. */\n\tpersist?: ModelsStoreEntry | null;\n\t/** Optional synchronous update of provider-private in-memory catalog state. */\n\tupdate?: () => void;\n}\n\nexport interface RefreshModelsContext {\n\t/** Effective configured credential. OAuth credentials are refreshed before network access. */\n\tcredential?: Credential;\n\t/** Immutable provider-scoped catalog snapshot captured before this refresh phase. */\n\tstored?: Readonly<ModelsStoreEntry>;\n\t/**\n\t * Generation-checked publication. Persistence policy remains provider-owned;\n\t * the update runs synchronously only after the selected persistence mutation.\n\t */\n\tpublish(publication: ModelsPublication): Promise<boolean>;\n\t/** False during offline/cache-only initialization. */\n\tallowNetwork: boolean;\n\t/** Bypass provider freshness checks and fetch immediately when network access is allowed. */\n\tforce?: boolean;\n\t/** Always present, including when the public refresh caller omits its optional signal. */\n\tsignal: AbortSignal;\n}\n\nexport interface ModelsRefreshOptions {\n\tallowNetwork?: boolean;\n\t/** Restrict refresh to these provider IDs. Unknown and static providers are ignored. */\n\tproviders?: readonly string[];\n\t/** Bypass provider freshness checks and fetch immediately when network access is allowed. */\n\tforce?: boolean;\n\tsignal?: AbortSignal;\n}\n\nexport interface ModelsRefreshResult {\n\taborted: boolean;\n\terrors: ReadonlyMap<string, Error>;\n}\n\nexport interface ModelsRequestTransforms {\n\t/** Transform fully assembled model/auth/request headers before provider dispatch. */\n\ttransformHeaders?: (headers: ProviderHeaders) => ProviderHeaders | Promise<ProviderHeaders>;\n}\n\nexport type ModelsApiStreamOptions<TApi extends Api> = ApiStreamOptions<TApi> & ModelsRequestTransforms;\nexport type ModelsSimpleStreamOptions = SimpleStreamOptions & ModelsRequestTransforms;\nexport type ModelsDeferredFetchOptions = DeferredFetchOptions & ModelsRequestTransforms;\nexport type ModelsDeferredCancelOptions = DeferredCancelOptions & ModelsRequestTransforms;\n\n/**\n * A provider is the concrete runtime unit. It owns id/name/base metadata,\n * auth methods, model listing, and stream behavior.\n *\n * `TApi` lets concrete provider factories declare which APIs their models\n * use (e.g. `openaiProvider(): Provider<\"openai-responses\" | \"openai-completions\">`),\n * giving typed model lists to direct factory users. Inside a `Models`\n * collection providers are held as `Provider<Api>`.\n */\nexport interface Provider<TApi extends Api = Api> {\n\treadonly id: string;\n\treadonly name: string;\n\n\treadonly baseUrl?: string;\n\treadonly headers?: ProviderHeaders;\n\n\t/**\n\t * Required: at least one of `apiKey`/`oauth`. Every provider has auth\n\t * semantics — even providers with only ambient credentials (env vars, AWS\n\t * profiles, ADC files) and keyless local servers provide `apiKey` auth\n\t * whose `resolve()` reports whether the provider is configured.\n\t * `Models.getAuth()` returns undefined when the provider is unconfigured.\n\t */\n\treadonly auth: ProviderAuth;\n\n\t/**\n\t * Current known models, sync. Static providers return their catalog;\n\t * dynamic providers return the list as of the last `refreshModels()`\n\t * (empty before the first). Must not throw; `Models` treats a throwing\n\t * implementation as having no models.\n\t */\n\tgetModels(): readonly Model<TApi>[];\n\n\t/**\n\t * Dynamic providers only: restore `context.stored` and optionally fetch a newer list using\n\t * the effective credential. Implementations retain their previous list on failure, publish\n\t * persistence and synchronous state changes through `context.publish()`, and honor the\n\t * shared abort signal for blocking work.\n\t */\n\trefreshModels?(context: RefreshModelsContext): Promise<void>;\n\n\t/**\n\t * Optional provider policy for credential-specific model availability.\n\t * `getModels()` remains the complete synchronous catalog; `Models.getAvailable()`\n\t * applies this filter after confirming that provider auth is configured.\n\t */\n\tfilterModels?(models: readonly Model<TApi>[], credential: Credential | undefined): readonly Model<TApi>[];\n\n\tstream<T extends TApi>(\n\t\tmodel: Model<T>,\n\t\tcontext: Context,\n\t\toptions?: ApiStreamOptions<T>,\n\t): AssistantMessageEventStream;\n\n\tstreamSimple(model: Model<TApi>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream;\n\tfetchDeferred?(\n\t\tmodel: Model<TApi>,\n\t\thandle: DeferredHandle,\n\t\toptions?: DeferredFetchOptions,\n\t): AssistantMessageEventStream;\n\tcancelDeferred?(model: Model<TApi>, handle: DeferredHandle, options?: DeferredCancelOptions): Promise<void>;\n}\n\n/**\n * Runtime collection of providers plus auth application and stream\n * convenience. Providers own stream behavior; `Models` resolves auth and\n * delegates each request to the provider that owns the model.\n */\nexport interface Models {\n\tgetProviders(): readonly Provider[];\n\tgetProvider(id: string): Provider | undefined;\n\n\t/**\n\t * Sync read of last-known models from one provider or all providers.\n\t * Best-effort: a provider whose `getModels()` throws yields no models.\n\t */\n\tgetModels(provider?: string): readonly Model<Api>[];\n\n\t/**\n\t * Sync runtime model lookup against last-known lists. Dynamic model lists\n\t * are typed as `Model<Api>`; narrow with the `hasApi()` type guard.\n\t */\n\tgetModel(provider: string, id: string): Model<Api> | undefined;\n\n\t/**\n\t * Refresh selected configured dynamic providers concurrently (all when `providers` is omitted).\n\t * Provider errors and cancellation are returned without rejecting; static, unknown, and\n\t * unconfigured providers are skipped.\n\t */\n\trefresh(options?: ModelsRefreshOptions): Promise<ModelsRefreshResult>;\n\n\t/** Check whether a provider has complete auth configuration without refreshing OAuth. */\n\tcheckAuth(providerId: string, options?: AuthOperationOptions): Promise<AuthCheck | undefined>;\n\n\t/** Return models whose providers have complete auth configuration. */\n\tgetAvailable(providerId?: string, options?: AuthOperationOptions): Promise<readonly Model<Api>[]>;\n\n\t/**\n\t * Resolve provider-scoped auth by provider id, or provider auth plus static\n\t * model headers when passed a model. Includes a source label for status UI.\n\t * Resolves `undefined` when the provider is unknown or unconfigured.\n\t * Rejects with `ModelsError`: code \"oauth\" when a token refresh fails (the\n\t * stored credential is preserved for retry; re-login fixes it), code \"auth\"\n\t * when api-key resolution or the credential store fails. Request paths\n\t * surface rejections as stream errors.\n\t */\n\tgetAuth(providerId: string, overrides?: AuthResolutionOverrides): Promise<AuthResult | undefined>;\n\tgetAuth(model: Model<Api>, overrides?: AuthResolutionOverrides): Promise<AuthResult | undefined>;\n\n\t/** Run a provider-owned login flow and persist its returned credential. */\n\tlogin(providerId: string, type: AuthType, interaction: AuthInteraction): Promise<Credential>;\n\n\t/** Remove the stored credential for a provider. */\n\tlogout(providerId: string, options?: AuthOperationOptions): Promise<void>;\n\n\tstream<TApi extends Api>(\n\t\tmodel: Model<TApi>,\n\t\tcontext: Context,\n\t\toptions?: ModelsApiStreamOptions<TApi>,\n\t): AssistantMessageEventStream;\n\n\tcomplete<TApi extends Api>(\n\t\tmodel: Model<TApi>,\n\t\tcontext: Context,\n\t\toptions?: ModelsApiStreamOptions<TApi>,\n\t): Promise<AssistantMessage>;\n\n\tstreamSimple(model: Model<Api>, context: Context, options?: ModelsSimpleStreamOptions): AssistantMessageEventStream;\n\tcompleteSimple(model: Model<Api>, context: Context, options?: ModelsSimpleStreamOptions): Promise<AssistantMessage>;\n\tfetchDeferred(\n\t\tmodel: Model<Api>,\n\t\thandle: DeferredHandle,\n\t\toptions?: ModelsDeferredFetchOptions,\n\t): Promise<AssistantMessage>;\n\tcancelDeferred(model: Model<Api>, handle: DeferredHandle, options?: ModelsDeferredCancelOptions): Promise<void>;\n}\n\nexport interface MutableModels extends Models {\n\t/** Upsert/replace by provider.id. Provider ids are unique. */\n\tsetProvider(provider: Provider): void;\n\tdeleteProvider(id: string): void;\n\tclearProviders(): void;\n}\n\nexport interface CreateModelsOptions {\n\tcredentials?: CredentialStore;\n\tmodelsStore?: ModelsStore;\n\tauthContext?: AuthContext;\n}\n\nfunction mergeHeaders(\n\tbase: ProviderHeaders | undefined,\n\toverride: ProviderHeaders | undefined,\n): ProviderHeaders | undefined {\n\tif (!base && !override) return undefined;\n\tconst merged = { ...base };\n\tfor (const [name, value] of Object.entries(override ?? {})) {\n\t\tconst lowerName = name.toLowerCase();\n\t\tfor (const existingName of Object.keys(merged)) {\n\t\t\tif (existingName.toLowerCase() === lowerName) delete merged[existingName];\n\t\t}\n\t\tmerged[name] = value;\n\t}\n\treturn merged;\n}\n\nclass ModelsImpl implements MutableModels {\n\tprivate providers = new Map<string, Provider>();\n\tprivate credentials: CredentialStore;\n\tprivate modelsStore: ModelsStore;\n\tprivate authContext: AuthContext;\n\tprivate refreshGenerations = new Map<string, number>();\n\tprivate refreshControllers = new Map<string, AbortController>();\n\tprivate publicationChains = new Map<string, Promise<unknown>>();\n\n\tconstructor(options?: CreateModelsOptions) {\n\t\tthis.credentials = options?.credentials ?? new InMemoryCredentialStore();\n\t\tthis.modelsStore = options?.modelsStore ?? new InMemoryModelsStore();\n\t\tthis.authContext = options?.authContext ?? defaultAuthContext();\n\t}\n\n\tsetProvider(provider: Provider): void {\n\t\tthis.supersedeProviderRefresh(provider.id);\n\t\tthis.providers.set(provider.id, provider);\n\t}\n\n\tdeleteProvider(id: string): void {\n\t\tthis.supersedeProviderRefresh(id);\n\t\tthis.providers.delete(id);\n\t}\n\n\tclearProviders(): void {\n\t\tfor (const id of new Set([...this.providers.keys(), ...this.refreshControllers.keys()])) {\n\t\t\tthis.supersedeProviderRefresh(id);\n\t\t}\n\t\tthis.providers.clear();\n\t}\n\n\tgetProviders(): readonly Provider[] {\n\t\treturn Array.from(this.providers.values());\n\t}\n\n\tgetProvider(id: string): Provider | undefined {\n\t\treturn this.providers.get(id);\n\t}\n\n\tgetModels(provider?: string): readonly Model<Api>[] {\n\t\tif (provider !== undefined) {\n\t\t\tconst entry = this.providers.get(provider);\n\t\t\tif (!entry) return [];\n\t\t\ttry {\n\t\t\t\treturn entry.getModels();\n\t\t\t} catch {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t}\n\n\t\tconst models: Model<Api>[] = [];\n\t\tfor (const entry of this.providers.values()) {\n\t\t\ttry {\n\t\t\t\tmodels.push(...entry.getModels());\n\t\t\t} catch {\n\t\t\t\t// Best-effort: ill-behaved providers yield no models.\n\t\t\t}\n\t\t}\n\t\treturn models;\n\t}\n\n\tgetModel(provider: string, id: string): Model<Api> | undefined {\n\t\treturn this.getModels(provider).find((model) => model.id === id);\n\t}\n\n\tprivate supersedeProviderRefresh(providerId: string): number {\n\t\tconst generation = (this.refreshGenerations.get(providerId) ?? 0) + 1;\n\t\tthis.refreshGenerations.set(providerId, generation);\n\t\tconst previous = this.refreshControllers.get(providerId);\n\t\tif (previous) {\n\t\t\tthis.refreshControllers.delete(providerId);\n\t\t\tprevious.abort();\n\t\t}\n\t\treturn generation;\n\t}\n\n\tprivate beginProviderRefresh(providerId: string): { generation: number; controller: AbortController } {\n\t\tconst generation = this.supersedeProviderRefresh(providerId);\n\t\tconst controller = new AbortController();\n\t\tthis.refreshControllers.set(providerId, controller);\n\t\treturn { generation, controller };\n\t}\n\n\tprivate publishProviderModels(\n\t\tproviderId: string,\n\t\tgeneration: number,\n\t\tsignal: AbortSignal,\n\t\tpublication: ModelsPublication,\n\t): Promise<boolean> {\n\t\tconst previous = this.publicationChains.get(providerId) ?? Promise.resolve();\n\t\tconst queued = (async () => {\n\t\t\tawait previous.catch(() => {});\n\t\t\tif (signal.aborted || this.refreshGenerations.get(providerId) !== generation) return false;\n\n\t\t\tif (publication.persist === null) {\n\t\t\t\tawait this.modelsStore.delete(providerId, { signal });\n\t\t\t} else if (publication.persist !== undefined) {\n\t\t\t\tawait this.modelsStore.write(providerId, structuredClone(publication.persist), { signal });\n\t\t\t}\n\n\t\t\tif (signal.aborted || this.refreshGenerations.get(providerId) !== generation) return false;\n\t\t\tpublication.update?.();\n\t\t\treturn true;\n\t\t})();\n\t\tconst tail = queued.catch(() => {});\n\t\tthis.publicationChains.set(providerId, tail);\n\t\tvoid tail.then(() => {\n\t\t\tif (this.publicationChains.get(providerId) === tail) this.publicationChains.delete(providerId);\n\t\t});\n\t\treturn raceWithAbortSignal(queued, signal);\n\t}\n\n\tprivate async runProviderRefreshPhase(\n\t\tprovider: Provider & Required<Pick<Provider, \"refreshModels\">>,\n\t\tcredential: Credential | undefined,\n\t\tallowNetwork: boolean,\n\t\tforce: boolean | undefined,\n\t\tgeneration: number,\n\t\tsignal: AbortSignal,\n\t): Promise<void> {\n\t\tconst stored = await this.modelsStore.read(provider.id, { signal });\n\t\tawait provider.refreshModels({\n\t\t\tcredential,\n\t\t\tstored: stored ? structuredClone(stored) : undefined,\n\t\t\tpublish: (publication) => this.publishProviderModels(provider.id, generation, signal, publication),\n\t\t\tallowNetwork,\n\t\t\tforce: allowNetwork ? force : undefined,\n\t\t\tsignal,\n\t\t});\n\t}\n\n\tasync refresh(options: ModelsRefreshOptions = {}): Promise<ModelsRefreshResult> {\n\t\tconst allowNetwork = options.allowNetwork ?? true;\n\t\tconst callerSignal = operationSignal(options.signal);\n\t\tconst errors = new Map<string, Error>();\n\t\tif (callerSignal.aborted) return { aborted: true, errors };\n\t\tconst selected = options.providers ? new Set(options.providers) : undefined;\n\t\tconst refreshable = Array.from(this.providers.values()).filter(\n\t\t\t(provider): provider is Provider & Required<Pick<Provider, \"refreshModels\">> =>\n\t\t\t\tprovider.refreshModels !== undefined && (!selected || selected.has(provider.id)),\n\t\t);\n\n\t\tconst refresh = Promise.all(\n\t\t\trefreshable.map(async (provider) => {\n\t\t\t\tconst { generation, controller } = this.beginProviderRefresh(provider.id);\n\t\t\t\tconst signal = AbortSignal.any([callerSignal, controller.signal]);\n\t\t\t\tconst operation = (async () => {\n\t\t\t\t\tlet storedCredential: Credential | undefined;\n\t\t\t\t\tlet credentialError: unknown;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tstoredCredential = await this.readCredential(provider.id, signal);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tcredentialError = error;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Restore cached provider state before auth resolution or network access.\n\t\t\t\t\tawait this.runProviderRefreshPhase(provider, storedCredential, false, undefined, generation, signal);\n\t\t\t\t\tif (credentialError !== undefined) throw credentialError;\n\t\t\t\t\tif (!allowNetwork || signal.aborted) return;\n\n\t\t\t\t\tconst credential = await this.resolveRefreshCredential(provider, storedCredential, signal);\n\t\t\t\t\tif (!credential) return;\n\t\t\t\t\tawait this.runProviderRefreshPhase(provider, credential, true, options.force, generation, signal);\n\t\t\t\t})();\n\n\t\t\t\ttry {\n\t\t\t\t\tawait raceWithAbortSignal(operation, signal);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!signal.aborted) {\n\t\t\t\t\t\terrors.set(\n\t\t\t\t\t\t\tprovider.id,\n\t\t\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t\t\t? error\n\t\t\t\t\t\t\t\t: new ModelsError(\"model_source\", `Model refresh failed for ${provider.id}`, { cause: error }),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (this.refreshControllers.get(provider.id) === controller) {\n\t\t\t\t\t\tthis.refreshControllers.delete(provider.id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}),\n\t\t);\n\n\t\ttry {\n\t\t\tawait raceWithAbortSignal(refresh, callerSignal);\n\t\t} catch (error) {\n\t\t\tif (!callerSignal.aborted) throw error;\n\t\t}\n\n\t\treturn { aborted: callerSignal.aborted, errors: new Map(errors) };\n\t}\n\n\tprivate async resolveRefreshCredential(\n\t\tprovider: Provider,\n\t\tstored: Credential | undefined,\n\t\tsignal: AbortSignal,\n\t): Promise<Credential | undefined> {\n\t\tif (stored?.type === \"oauth\") {\n\t\t\tconst oauth = provider.auth.oauth;\n\t\t\tif (!oauth) return undefined;\n\t\t\tif (Date.now() < stored.expires) return stored;\n\t\t\tif (signal.aborted) return undefined;\n\t\t\tconst post = await this.credentials.modify(\n\t\t\t\tprovider.id,\n\t\t\t\tasync (current) => {\n\t\t\t\t\tif (current?.type !== \"oauth\" || Date.now() < current.expires) return undefined;\n\t\t\t\t\treturn oauth.refresh(current, signal);\n\t\t\t\t},\n\t\t\t\t{ signal },\n\t\t\t);\n\t\t\treturn post?.type === \"oauth\" ? post : undefined;\n\t\t}\n\n\t\tconst apiKey = provider.auth.apiKey;\n\t\tif (!apiKey) return undefined;\n\t\tconst credential = stored?.type === \"api_key\" ? stored : undefined;\n\t\tconst result = await apiKey.resolve({ ctx: this.authContext, credential, signal });\n\t\tif (!result) return undefined;\n\t\treturn { type: \"api_key\", key: result.auth.apiKey, env: result.env };\n\t}\n\n\tprivate async readCredential(providerId: string, signal: AbortSignal): Promise<Credential | undefined> {\n\t\ttry {\n\t\t\treturn await this.credentials.read(providerId, { signal });\n\t\t} catch (error) {\n\t\t\tthrow new ModelsError(\"auth\", `Credential store read failed for ${providerId}`, { cause: error });\n\t\t}\n\t}\n\n\tprivate async checkProviderAuth(\n\t\tprovider: Provider,\n\t\tcredential: Credential | undefined,\n\t\tsignal: AbortSignal,\n\t): Promise<AuthCheck | undefined> {\n\t\tif (credential?.type === \"oauth\") {\n\t\t\treturn provider.auth.oauth ? { source: \"OAuth\", type: \"oauth\" } : undefined;\n\t\t}\n\t\tconst apiKey = provider.auth.apiKey;\n\t\tif (!apiKey) return undefined;\n\t\tif (apiKey.check) {\n\t\t\ttry {\n\t\t\t\treturn await apiKey.check({\n\t\t\t\t\tctx: this.authContext,\n\t\t\t\t\tcredential: credential?.type === \"api_key\" ? credential : undefined,\n\t\t\t\t\tsignal,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthrow new ModelsError(\"auth\", `API key auth check failed for provider ${provider.id}`, { cause: error });\n\t\t\t}\n\t\t}\n\n\t\tconst resolution = await resolveProviderAuth(provider, this.credentials, this.authContext, { signal });\n\t\treturn resolution ? { source: resolution.source, type: \"api_key\" } : undefined;\n\t}\n\n\tcheckAuth(providerId: string, options?: AuthOperationOptions): Promise<AuthCheck | undefined> {\n\t\tconst signal = operationSignal(options?.signal);\n\t\tconst check = (async () => {\n\t\t\tsignal.throwIfAborted();\n\t\t\tconst provider = this.providers.get(providerId);\n\t\t\tif (!provider) return undefined;\n\t\t\treturn this.checkProviderAuth(provider, await this.readCredential(providerId, signal), signal);\n\t\t})();\n\t\treturn raceWithAbortSignal(check, signal);\n\t}\n\n\tgetAvailable(providerId?: string, options?: AuthOperationOptions): Promise<readonly Model<Api>[]> {\n\t\tconst signal = operationSignal(options?.signal);\n\t\tconst available = (async () => {\n\t\t\tsignal.throwIfAborted();\n\t\t\tconst providers = providerId\n\t\t\t\t? [this.providers.get(providerId)].filter((entry) => entry !== undefined)\n\t\t\t\t: this.getProviders();\n\t\t\tconst checks = await Promise.all(\n\t\t\t\tproviders.map(async (provider) => {\n\t\t\t\t\tconst credential = await this.readCredential(provider.id, signal);\n\t\t\t\t\treturn { provider, credential, auth: await this.checkProviderAuth(provider, credential, signal) };\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn checks.flatMap(({ provider, credential, auth }) => {\n\t\t\t\tif (!auth) return [];\n\t\t\t\tconst models = provider.getModels();\n\t\t\t\treturn provider.filterModels?.(models, credential) ?? models;\n\t\t\t});\n\t\t})();\n\t\treturn raceWithAbortSignal(available, signal);\n\t}\n\n\tgetAuth(providerId: string, overrides?: AuthResolutionOverrides): Promise<AuthResult | undefined>;\n\tgetAuth(model: Model<Api>, overrides?: AuthResolutionOverrides): Promise<AuthResult | undefined>;\n\tasync getAuth(\n\t\tproviderOrModel: string | Model<Api>,\n\t\toverrides?: AuthResolutionOverrides,\n\t): Promise<AuthResult | undefined> {\n\t\tconst signal = operationSignal(overrides?.signal);\n\t\tconst providerId = typeof providerOrModel === \"string\" ? providerOrModel : providerOrModel.provider;\n\t\tconst provider = this.providers.get(providerId);\n\t\tif (!provider) return undefined;\n\t\tconst result = await resolveProviderAuth(provider, this.credentials, this.authContext, { ...overrides, signal });\n\t\tif (!result || typeof providerOrModel === \"string\" || !providerOrModel.headers) return result;\n\t\treturn {\n\t\t\t...result,\n\t\t\tauth: {\n\t\t\t\t...result.auth,\n\t\t\t\theaders: mergeHeaders(result.auth.headers, providerOrModel.headers),\n\t\t\t},\n\t\t};\n\t}\n\n\tasync login(providerId: string, type: AuthType, interaction: AuthInteraction): Promise<Credential> {\n\t\tconst signal = operationSignal(interaction.signal);\n\t\tsignal.throwIfAborted();\n\t\tconst provider = this.providers.get(providerId);\n\t\tif (!provider) throw new ModelsError(\"provider\", `Unknown provider: ${providerId}`);\n\t\tconst method = type === \"oauth\" ? provider.auth.oauth : provider.auth.apiKey;\n\t\tif (!method?.login) {\n\t\t\tthrow new ModelsError(\"auth\", `${provider.name} does not support ${type} login`);\n\t\t}\n\t\tconst loginOperation: Promise<Credential> = method.login({ ...interaction, signal });\n\t\tconst credential = await raceWithAbortSignal(loginOperation, signal);\n\t\tlet mutationStarted = false;\n\t\tlet markMutationStarted: (() => void) | undefined;\n\t\tconst started = new Promise<void>((resolve) => {\n\t\t\tmarkMutationStarted = resolve;\n\t\t});\n\t\tconst mutation = this.credentials.modify(\n\t\t\tproviderId,\n\t\t\tasync () => {\n\t\t\t\tmutationStarted = true;\n\t\t\t\tmarkMutationStarted?.();\n\t\t\t\treturn credential;\n\t\t\t},\n\t\t\t{ signal },\n\t\t);\n\t\tvoid mutation.catch(() => {});\n\t\ttry {\n\t\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\t\tconst onAbort = () => {\n\t\t\t\t\tif (!mutationStarted) reject(signal.reason);\n\t\t\t\t};\n\t\t\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\t\tvoid Promise.race([started, mutation]).then(\n\t\t\t\t\t() => {\n\t\t\t\t\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t},\n\t\t\t\t\t(error: unknown) => {\n\t\t\t\t\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tif (signal.aborted) onAbort();\n\t\t\t});\n\t\t\tawait mutation;\n\t\t} catch (error) {\n\t\t\tsignal.throwIfAborted();\n\t\t\tthrow new ModelsError(\"auth\", `Credential store modify failed for ${providerId}`, { cause: error });\n\t\t}\n\t\treturn credential;\n\t}\n\n\tasync logout(providerId: string, options?: AuthOperationOptions): Promise<void> {\n\t\tconst signal = operationSignal(options?.signal);\n\t\tsignal.throwIfAborted();\n\t\ttry {\n\t\t\tawait this.credentials.delete(providerId, { signal });\n\t\t} catch (error) {\n\t\t\tsignal.throwIfAborted();\n\t\t\tthrow new ModelsError(\"auth\", `Credential store delete failed for ${providerId}`, { cause: error });\n\t\t}\n\t}\n\n\tprivate requireProvider(model: Model<Api>): Provider {\n\t\tconst provider = this.providers.get(model.provider);\n\t\tif (!provider) {\n\t\t\tthrow new ModelsError(\"provider\", `Unknown provider: ${model.provider}`);\n\t\t}\n\t\treturn provider;\n\t}\n\n\tprivate async applyAuth<TOptions extends ProviderRequestOptions & ModelsRequestTransforms>(\n\t\tmodel: Model<Api>,\n\t\toptions: TOptions | undefined,\n\t): Promise<{\n\t\trequestModel: Model<Api>;\n\t\trequestOptions: Omit<TOptions, \"transformHeaders\"> & ProviderRequestOptions;\n\t}> {\n\t\tthis.requireProvider(model);\n\t\tconst resolution = await this.getAuth(model, {\n\t\t\tapiKey: options?.apiKey,\n\t\t\tenv: options?.env,\n\t\t\tsignal: options?.signal,\n\t\t});\n\t\tif (!resolution) {\n\t\t\tthrow new ModelsError(\"auth\", `Provider is not configured: ${model.provider}`);\n\t\t}\n\t\tconst auth = resolution.auth;\n\n\t\t// Explicit request options win per-field; the Models-only transform runs last.\n\t\tconst apiKey = options?.apiKey ?? auth.apiKey;\n\t\tlet headers = mergeHeaders(auth.headers, options?.headers);\n\t\tif (options?.transformHeaders) headers = await options.transformHeaders(headers ?? {});\n\t\tconst env = resolution.env || options?.env ? { ...(resolution.env ?? {}), ...(options?.env ?? {}) } : undefined;\n\t\tconst requestModel = auth.baseUrl ? { ...model, baseUrl: auth.baseUrl } : model;\n\t\tconst { transformHeaders: _transformHeaders, ...providerOptions } = options ?? {};\n\t\tconst requestOptions = { ...providerOptions, apiKey, headers, env } as Omit<TOptions, \"transformHeaders\"> &\n\t\t\tProviderRequestOptions;\n\n\t\treturn { requestModel, requestOptions };\n\t}\n\n\tstream<TApi extends Api>(\n\t\tmodel: Model<TApi>,\n\t\tcontext: Context,\n\t\toptions?: ModelsApiStreamOptions<TApi>,\n\t): AssistantMessageEventStream {\n\t\treturn lazyStream(model, async () => {\n\t\t\tconst provider = this.requireProvider(model);\n\t\t\tconst { requestModel, requestOptions } = await this.applyAuth(\n\t\t\t\tmodel,\n\t\t\t\toptions as ModelsApiStreamOptions<Api> | undefined,\n\t\t\t);\n\t\t\treturn provider.stream(requestModel as Model<TApi>, context, requestOptions as ApiStreamOptions<TApi>);\n\t\t});\n\t}\n\n\tasync complete<TApi extends Api>(\n\t\tmodel: Model<TApi>,\n\t\tcontext: Context,\n\t\toptions?: ModelsApiStreamOptions<TApi>,\n\t): Promise<AssistantMessage> {\n\t\treturn this.stream(model, context, options).result();\n\t}\n\n\tstreamSimple(model: Model<Api>, context: Context, options?: ModelsSimpleStreamOptions): AssistantMessageEventStream {\n\t\treturn lazyStream(model, async () => {\n\t\t\tconst provider = this.requireProvider(model);\n\t\t\tconst { requestModel, requestOptions } = await this.applyAuth(model, options);\n\t\t\treturn provider.streamSimple(requestModel, context, requestOptions as SimpleStreamOptions);\n\t\t});\n\t}\n\n\tasync completeSimple(\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions?: ModelsSimpleStreamOptions,\n\t): Promise<AssistantMessage> {\n\t\treturn this.streamSimple(model, context, options).result();\n\t}\n\n\tasync fetchDeferred(\n\t\tmodel: Model<Api>,\n\t\thandle: DeferredHandle,\n\t\toptions?: ModelsDeferredFetchOptions,\n\t): Promise<AssistantMessage> {\n\t\treturn lazyStream(model, async () => {\n\t\t\tconst provider = this.requireProvider(model);\n\t\t\tif (!provider.fetchDeferred) {\n\t\t\t\tthrow new ModelsError(\"provider\", `Provider ${model.provider} does not support deferred responses`);\n\t\t\t}\n\t\t\tconst { requestModel, requestOptions } = await this.applyAuth(model, options);\n\t\t\treturn provider.fetchDeferred(requestModel, handle, requestOptions as DeferredFetchOptions);\n\t\t}).result();\n\t}\n\n\tasync cancelDeferred(\n\t\tmodel: Model<Api>,\n\t\thandle: DeferredHandle,\n\t\toptions?: ModelsDeferredCancelOptions,\n\t): Promise<void> {\n\t\tconst provider = this.requireProvider(model);\n\t\tif (!provider.cancelDeferred) {\n\t\t\tthrow new ModelsError(\"provider\", `Provider ${model.provider} does not support deferred responses`);\n\t\t}\n\t\tconst { requestModel, requestOptions } = await this.applyAuth(model, options);\n\t\tawait provider.cancelDeferred(requestModel, handle, requestOptions);\n\t}\n}\n\nexport function createModels(options?: CreateModelsOptions): MutableModels {\n\treturn new ModelsImpl(options);\n}\n\nexport interface CreateProviderOptions<TApi extends Api = Api> {\n\tid: string;\n\t/** Display name. Default: `id`. */\n\tname?: string;\n\tbaseUrl?: string;\n\theaders?: ProviderHeaders;\n\t/** Required — every provider has auth semantics, even ambient/keyless ones. */\n\tauth: ProviderAuth;\n\t/** Static baseline model list (empty for purely dynamic providers). */\n\tmodels: readonly Model<TApi>[];\n\t/** Fetch a dynamic model overlay. createProvider restores and publishes it transactionally. */\n\tfetchModels?: (context: RefreshModelsContext) => Promise<readonly Model<TApi>[]>;\n\tfilterModels?: (models: readonly Model<TApi>[], credential: Credential | undefined) => readonly Model<TApi>[];\n\t/** Single implementation, or map keyed by `model.api` for mixed-API providers. */\n\tapi: ProviderStreams | Partial<Record<TApi, ProviderStreams>>;\n}\n\n/**\n * Builds a provider from parts. Built-in provider factories and models.json\n * custom providers both go through this. A single `api` streams all models;\n * an `api` map dispatches on `model.api`, and a model whose api has no entry\n * produces a stream error.\n */\nexport function createProvider<TApi extends Api = Api>(input: CreateProviderOptions<TApi>): Provider<TApi> {\n\tconst baselineModels = input.models;\n\tlet dynamicModels: readonly Model<TApi>[] = [];\n\tconst fetchModels = input.fetchModels;\n\tconst currentModels = (): readonly Model<TApi>[] => {\n\t\tconst merged = [...baselineModels];\n\t\tfor (const model of dynamicModels) {\n\t\t\tconst index = merged.findIndex((entry) => entry.id === model.id);\n\t\t\tif (index >= 0) merged[index] = model;\n\t\t\telse merged.push(model);\n\t\t}\n\t\treturn merged;\n\t};\n\tconst single =\n\t\ttypeof (input.api as ProviderStreams).stream === \"function\" ? (input.api as ProviderStreams) : undefined;\n\tconst byApi = single ? undefined : (input.api as Partial<Record<string, ProviderStreams>>);\n\n\tconst apiFor = (model: Model<Api>): ProviderStreams | undefined => single ?? byApi?.[model.api];\n\n\tconst dispatch = (\n\t\tmodel: Model<Api>,\n\t\trun: (streams: ProviderStreams) => AssistantMessageEventStream,\n\t): AssistantMessageEventStream => {\n\t\tconst streams = apiFor(model);\n\t\tif (!streams) {\n\t\t\treturn lazyStream(model, async () => {\n\t\t\t\tthrow new ModelsError(\"stream\", `Provider ${input.id} has no API implementation for \"${model.api}\"`);\n\t\t\t});\n\t\t}\n\t\treturn run(streams);\n\t};\n\n\tconst provider: Provider<TApi> = {\n\t\tid: input.id,\n\t\tname: input.name ?? input.id,\n\t\tbaseUrl: input.baseUrl,\n\t\theaders: input.headers,\n\t\tauth: input.auth,\n\t\tgetModels: currentModels,\n\t\trefreshModels: fetchModels\n\t\t\t? async (context) => {\n\t\t\t\t\tif (context.stored) {\n\t\t\t\t\t\tconst restored = context.stored.models\n\t\t\t\t\t\t\t.filter((model) => model.provider === input.id)\n\t\t\t\t\t\t\t.map((model) => model as Model<TApi>);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!(await context.publish({\n\t\t\t\t\t\t\t\tupdate: () => {\n\t\t\t\t\t\t\t\t\tdynamicModels = restored;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!context.allowNetwork || context.signal.aborted) return;\n\t\t\t\t\tconst refreshed = await fetchModels(context);\n\t\t\t\t\tif (context.signal.aborted) return;\n\t\t\t\t\tawait context.publish({\n\t\t\t\t\t\tpersist: { models: refreshed, checkedAt: Date.now() },\n\t\t\t\t\t\tupdate: () => {\n\t\t\t\t\t\t\tdynamicModels = refreshed;\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tfilterModels: input.filterModels,\n\t\tstream: (model, context, options) => dispatch(model, (streams) => streams.stream(model, context, options)),\n\t\tstreamSimple: (model, context, options) =>\n\t\t\tdispatch(model, (streams) => streams.streamSimple(model, context, options)),\n\t};\n\n\tconst streams = single ? [single] : Object.values(byApi ?? {}).filter((entry) => entry !== undefined);\n\tif (streams.some((entry) => entry.fetchDeferred !== undefined)) {\n\t\tprovider.fetchDeferred = (model, handle, options) =>\n\t\t\tlazyStream(model, async () => {\n\t\t\t\tconst implementation = apiFor(model);\n\t\t\t\tif (!implementation?.fetchDeferred) {\n\t\t\t\t\tthrow new ModelsError(\n\t\t\t\t\t\t\"provider\",\n\t\t\t\t\t\t`Provider ${input.id} does not support deferred responses for \"${model.api}\"`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn implementation.fetchDeferred(model, handle, options);\n\t\t\t});\n\t}\n\tif (streams.some((entry) => entry.cancelDeferred !== undefined)) {\n\t\tprovider.cancelDeferred = async (model, handle, options) => {\n\t\t\tconst implementation = apiFor(model);\n\t\t\tif (!implementation?.cancelDeferred) {\n\t\t\t\tthrow new ModelsError(\n\t\t\t\t\t\"provider\",\n\t\t\t\t\t`Provider ${input.id} cannot cancel deferred responses for \"${model.api}\"`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait implementation.cancelDeferred(model, handle, options);\n\t\t};\n\t}\n\n\treturn provider;\n}\n\n/**\n * Runtime-checked narrowing for dynamically looked-up models:\n *\n * ```ts\n * const model = models.getModel(\"anthropic\", \"claude-opus-4-7\");\n * if (model && hasApi(model, \"anthropic-messages\")) {\n * // model: Model<\"anthropic-messages\">, stream options fully typed\n * }\n * ```\n */\nexport function hasApi<TApi extends Api>(model: Model<Api>, api: TApi): model is Model<TApi> {\n\treturn model.api === api;\n}\n\nexport function calculateCost<TApi extends Api>(model: Model<TApi>, usage: Usage): Usage[\"cost\"] {\n\tconst inputTokens = usage.input + usage.cacheRead + usage.cacheWrite;\n\tlet rates: ModelCostRates = model.cost;\n\tlet matchedThreshold = -1;\n\tfor (const tier of model.cost.tiers ?? []) {\n\t\tif (inputTokens > tier.inputTokensAbove && tier.inputTokensAbove > matchedThreshold) {\n\t\t\trates = tier;\n\t\t\tmatchedThreshold = tier.inputTokensAbove;\n\t\t}\n\t}\n\n\t// Anthropic charges 2x base input for 1h cache writes.\n\tconst longWrite = usage.cacheWrite1h ?? 0;\n\tconst shortWrite = usage.cacheWrite - longWrite;\n\tusage.cost.input = (rates.input / 1000000) * usage.input;\n\tusage.cost.output = (rates.output / 1000000) * usage.output;\n\tusage.cost.cacheRead = (rates.cacheRead / 1000000) * usage.cacheRead;\n\tusage.cost.cacheWrite = (rates.cacheWrite * shortWrite + rates.input * 2 * longWrite) / 1000000;\n\tusage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n\treturn usage.cost;\n}\n\nconst EXTENDED_THINKING_LEVELS: ModelThinkingLevel[] = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"];\n\nexport function getSupportedThinkingLevels<TApi extends Api>(model: Model<TApi>): ModelThinkingLevel[] {\n\tif (!model.reasoning) return [\"off\"];\n\n\treturn EXTENDED_THINKING_LEVELS.filter((level) => {\n\t\tconst mapped = model.thinkingLevelMap?.[level];\n\t\tif (mapped === null) return false;\n\t\tif (level === \"xhigh\" || level === \"max\") return mapped !== undefined;\n\t\treturn true;\n\t});\n}\n\nexport function clampThinkingLevel<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tlevel: ModelThinkingLevel,\n): ModelThinkingLevel {\n\tconst availableLevels = getSupportedThinkingLevels(model);\n\tif (availableLevels.includes(level)) return level;\n\n\tconst requestedIndex = EXTENDED_THINKING_LEVELS.indexOf(level);\n\tif (requestedIndex === -1) return availableLevels[0] ?? \"off\";\n\n\tfor (let i = requestedIndex; i < EXTENDED_THINKING_LEVELS.length; i++) {\n\t\tconst candidate = EXTENDED_THINKING_LEVELS[i];\n\t\tif (availableLevels.includes(candidate)) return candidate;\n\t}\n\tfor (let i = requestedIndex - 1; i >= 0; i--) {\n\t\tconst candidate = EXTENDED_THINKING_LEVELS[i];\n\t\tif (availableLevels.includes(candidate)) return candidate;\n\t}\n\treturn availableLevels[0] ?? \"off\";\n}\n\n/**\n * Check if two models are equal by comparing both their id and provider.\n * Returns false if either model is null or undefined.\n */\nexport function modelsAreEqual<TApi extends Api>(\n\ta: Model<TApi> | null | undefined,\n\tb: Model<TApi> | null | undefined,\n): boolean {\n\tif (!a || !b) return false;\n\treturn a.id === b.id && a.provider === b.provider;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ /** Type-only compatibility entry point for coding-agent extension OAuth declarations. */
2
+ export type { OAuthAuthInfo, OAuthCredentials, OAuthDeviceCodeInfo, OAuthLoginCallbacks, OAuthPrompt, OAuthSelectOption, OAuthSelectPrompt, } from "./compat/extension-oauth-types.ts";
3
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,YAAY,EACX,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,mCAAmC,CAAC","sourcesContent":["/** Type-only compatibility entry point for coding-agent extension OAuth declarations. */\nexport type {\n\tOAuthAuthInfo,\n\tOAuthCredentials,\n\tOAuthDeviceCodeInfo,\n\tOAuthLoginCallbacks,\n\tOAuthPrompt,\n\tOAuthSelectOption,\n\tOAuthSelectPrompt,\n} from \"./compat/extension-oauth-types.ts\";\n"]}
package/dist/oauth.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"","sourcesContent":["/** Type-only compatibility entry point for coding-agent extension OAuth declarations. */\nexport type {\n\tOAuthAuthInfo,\n\tOAuthCredentials,\n\tOAuthDeviceCodeInfo,\n\tOAuthLoginCallbacks,\n\tOAuthPrompt,\n\tOAuthSelectOption,\n\tOAuthSelectPrompt,\n} from \"./compat/extension-oauth-types.ts\";\n"]}
@@ -0,0 +1,28 @@
1
+ import { type ImagesProvider, type MutableImagesModels } from "../images-models.ts";
2
+ import { MODELS } from "../models.generated.ts";
3
+ import { type CreateModelsOptions, type MutableModels, type Provider } from "../models.ts";
4
+ import type { Api, Model } from "../types.ts";
5
+ import { radiusProvider } from "./radius.ts";
6
+ export { radiusProvider };
7
+ /** Providers present in the generated catalog. `KnownProvider` additionally
8
+ * includes purely dynamic providers (e.g. "radius") that have no static
9
+ * catalog entry. */
10
+ export type BuiltinProvider = keyof typeof MODELS;
11
+ type BuiltinModelApi<TProvider extends BuiltinProvider, TModelId extends keyof (typeof MODELS)[TProvider]> = (typeof MODELS)[TProvider][TModelId] extends {
12
+ api: infer TApi;
13
+ } ? (TApi extends Api ? TApi : never) : never;
14
+ /** Typed read of the generated built-in catalog. */
15
+ export declare function getBuiltinModel<TProvider extends BuiltinProvider, TModelId extends keyof (typeof MODELS)[TProvider]>(provider: TProvider, modelId: TModelId): Model<BuiltinModelApi<TProvider, TModelId>>;
16
+ export declare function getBuiltinProviders(): BuiltinProvider[];
17
+ /** Generation timestamp shared by all built-in provider catalogs. */
18
+ export declare function getBuiltinModelDataGeneratedAt(): number | undefined;
19
+ export declare function getBuiltinModels<TProvider extends BuiltinProvider>(provider: TProvider): Model<BuiltinModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[];
20
+ /** All built-in providers, freshly constructed. */
21
+ export declare function builtinProviders(): Provider[];
22
+ /** A `Models` collection with every built-in provider registered. */
23
+ export declare function builtinModels(options?: CreateModelsOptions): MutableModels;
24
+ /** All built-in image-generation providers, freshly constructed. */
25
+ export declare function builtinImagesProviders(): ImagesProvider[];
26
+ /** An `ImagesModels` collection with every built-in image-generation provider registered. */
27
+ export declare function builtinImagesModels(options?: CreateModelsOptions): MutableImagesModels;
28
+ //# sourceMappingURL=all.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all.d.ts","sourceRoot":"","sources":["../../src/providers/all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,KAAK,mBAAmB,EAAgB,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AACzG,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAiC9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAW7C,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B;;oBAEoB;AACpB,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,MAAM,CAAC;AAElD,KAAK,eAAe,CACnB,SAAS,SAAS,eAAe,EACjC,QAAQ,SAAS,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,IAC9C,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS;IAAE,GAAG,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;AAEjH,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,SAAS,SAAS,eAAe,EAAE,QAAQ,SAAS,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,EACnH,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,QAAQ,GACf,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAG7C;AAED,wBAAgB,mBAAmB,IAAI,eAAe,EAAE,CAEvD;AAED,qEAAqE;AACrE,wBAAgB,8BAA8B,IAAI,MAAM,GAAG,SAAS,CAGnE;AAED,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,eAAe,EACjE,QAAQ,EAAE,SAAS,GACjB,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAKvE;AAED,mDAAmD;AACnD,wBAAgB,gBAAgB,IAAI,QAAQ,EAAE,CA2C7C;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,aAAa,CAM1E;AAED,oEAAoE;AACpE,wBAAgB,sBAAsB,IAAI,cAAc,EAAE,CAEzD;AAED,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,CAMtF","sourcesContent":["import { createImagesModels, type ImagesProvider, type MutableImagesModels } from \"../images-models.ts\";\nimport { MODELS } from \"../models.generated.ts\";\nimport { type CreateModelsOptions, createModels, type MutableModels, type Provider } from \"../models.ts\";\nimport type { Api, Model } from \"../types.ts\";\nimport { amazonBedrockProvider } from \"./amazon-bedrock.ts\";\nimport { antLingProvider } from \"./ant-ling.ts\";\nimport { anthropicProvider } from \"./anthropic.ts\";\nimport { azureOpenAIResponsesProvider } from \"./azure-openai-responses.ts\";\nimport { basetenProvider } from \"./baseten.ts\";\nimport { cerebrasProvider } from \"./cerebras.ts\";\nimport { cloudflareAIGatewayProvider } from \"./cloudflare-ai-gateway.ts\";\nimport { cloudflareWorkersAIProvider } from \"./cloudflare-workers-ai.ts\";\nimport modelDataManifest from \"./data/.manifest.json\" with { type: \"json\" };\nimport { deepseekProvider } from \"./deepseek.ts\";\nimport { fireworksProvider } from \"./fireworks.ts\";\nimport { githubCopilotProvider } from \"./github-copilot.ts\";\nimport { googleProvider } from \"./google.ts\";\nimport { googleVertexProvider } from \"./google-vertex.ts\";\nimport { groqProvider } from \"./groq.ts\";\nimport { huggingfaceProvider } from \"./huggingface.ts\";\nimport { kimiCodingProvider } from \"./kimi-coding.ts\";\nimport { minimaxProvider } from \"./minimax.ts\";\nimport { minimaxCnProvider } from \"./minimax-cn.ts\";\nimport { mistralProvider } from \"./mistral.ts\";\nimport { moonshotaiProvider } from \"./moonshotai.ts\";\nimport { moonshotaiCnProvider } from \"./moonshotai-cn.ts\";\nimport { nvidiaProvider } from \"./nvidia.ts\";\nimport { openaiProvider } from \"./openai.ts\";\nimport { openaiCodexProvider } from \"./openai-codex.ts\";\nimport { opencodeProvider } from \"./opencode.ts\";\nimport { opencodeGoProvider } from \"./opencode-go.ts\";\nimport { openrouterProvider } from \"./openrouter.ts\";\nimport { openrouterImagesProvider } from \"./openrouter-images.ts\";\nimport { qwenTokenPlanProvider } from \"./qwen-token-plan.ts\";\nimport { qwenTokenPlanCnProvider } from \"./qwen-token-plan-cn.ts\";\nimport { qwenTokenPlanIndividualProvider } from \"./qwen-token-plan-individual.ts\";\nimport { radiusProvider } from \"./radius.ts\";\nimport { togetherProvider } from \"./together.ts\";\nimport { vercelAIGatewayProvider } from \"./vercel-ai-gateway.ts\";\nimport { xaiProvider } from \"./xai.ts\";\nimport { xiaomiProvider } from \"./xiaomi.ts\";\nimport { xiaomiTokenPlanAmsProvider } from \"./xiaomi-token-plan-ams.ts\";\nimport { xiaomiTokenPlanCnProvider } from \"./xiaomi-token-plan-cn.ts\";\nimport { xiaomiTokenPlanSgpProvider } from \"./xiaomi-token-plan-sgp.ts\";\nimport { zaiProvider } from \"./zai.ts\";\nimport { zaiCodingCnProvider } from \"./zai-coding-cn.ts\";\n\nexport { radiusProvider };\n\n/** Providers present in the generated catalog. `KnownProvider` additionally\n * includes purely dynamic providers (e.g. \"radius\") that have no static\n * catalog entry. */\nexport type BuiltinProvider = keyof typeof MODELS;\n\ntype BuiltinModelApi<\n\tTProvider extends BuiltinProvider,\n\tTModelId extends keyof (typeof MODELS)[TProvider],\n> = (typeof MODELS)[TProvider][TModelId] extends { api: infer TApi } ? (TApi extends Api ? TApi : never) : never;\n\n/** Typed read of the generated built-in catalog. */\nexport function getBuiltinModel<TProvider extends BuiltinProvider, TModelId extends keyof (typeof MODELS)[TProvider]>(\n\tprovider: TProvider,\n\tmodelId: TModelId,\n): Model<BuiltinModelApi<TProvider, TModelId>> {\n\tconst models = MODELS[provider] as Record<string, Model<Api>> | undefined;\n\treturn models?.[modelId as string] as Model<BuiltinModelApi<TProvider, TModelId>>;\n}\n\nexport function getBuiltinProviders(): BuiltinProvider[] {\n\treturn Object.keys(MODELS) as BuiltinProvider[];\n}\n\n/** Generation timestamp shared by all built-in provider catalogs. */\nexport function getBuiltinModelDataGeneratedAt(): number | undefined {\n\tconst generatedAt = Date.parse(modelDataManifest.generatedAt);\n\treturn Number.isNaN(generatedAt) ? undefined : generatedAt;\n}\n\nexport function getBuiltinModels<TProvider extends BuiltinProvider>(\n\tprovider: TProvider,\n): Model<BuiltinModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[] {\n\tconst models = MODELS[provider] as Record<string, Model<Api>> | undefined;\n\treturn models\n\t\t? (Object.values(models) as Model<BuiltinModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[])\n\t\t: [];\n}\n\n/** All built-in providers, freshly constructed. */\nexport function builtinProviders(): Provider[] {\n\treturn [\n\t\tamazonBedrockProvider(),\n\t\tantLingProvider(),\n\t\tanthropicProvider(),\n\t\tazureOpenAIResponsesProvider(),\n\t\tbasetenProvider(),\n\t\tcerebrasProvider(),\n\t\tcloudflareAIGatewayProvider(),\n\t\tcloudflareWorkersAIProvider(),\n\t\tdeepseekProvider(),\n\t\tfireworksProvider(),\n\t\tgithubCopilotProvider(),\n\t\tgoogleProvider(),\n\t\tgoogleVertexProvider(),\n\t\tgroqProvider(),\n\t\thuggingfaceProvider(),\n\t\tkimiCodingProvider(),\n\t\tminimaxProvider(),\n\t\tminimaxCnProvider(),\n\t\tmistralProvider(),\n\t\tmoonshotaiProvider(),\n\t\tmoonshotaiCnProvider(),\n\t\tnvidiaProvider(),\n\t\topenaiProvider(),\n\t\topenaiCodexProvider(),\n\t\topencodeProvider(),\n\t\topencodeGoProvider(),\n\t\topenrouterProvider(),\n\t\tqwenTokenPlanProvider(),\n\t\tqwenTokenPlanCnProvider(),\n\t\tqwenTokenPlanIndividualProvider(),\n\t\tradiusProvider(),\n\t\ttogetherProvider(),\n\t\tvercelAIGatewayProvider(),\n\t\txaiProvider(),\n\t\txiaomiProvider(),\n\t\txiaomiTokenPlanAmsProvider(),\n\t\txiaomiTokenPlanCnProvider(),\n\t\txiaomiTokenPlanSgpProvider(),\n\t\tzaiProvider(),\n\t\tzaiCodingCnProvider(),\n\t];\n}\n\n/** A `Models` collection with every built-in provider registered. */\nexport function builtinModels(options?: CreateModelsOptions): MutableModels {\n\tconst models = createModels(options);\n\tfor (const provider of builtinProviders()) {\n\t\tmodels.setProvider(provider);\n\t}\n\treturn models;\n}\n\n/** All built-in image-generation providers, freshly constructed. */\nexport function builtinImagesProviders(): ImagesProvider[] {\n\treturn [openrouterImagesProvider()];\n}\n\n/** An `ImagesModels` collection with every built-in image-generation provider registered. */\nexport function builtinImagesModels(options?: CreateModelsOptions): MutableImagesModels {\n\tconst models = createImagesModels(options);\n\tfor (const provider of builtinImagesProviders()) {\n\t\tmodels.setProvider(provider);\n\t}\n\treturn models;\n}\n"]}
@@ -0,0 +1,131 @@
1
+ import { createImagesModels } from "../images-models.js";
2
+ import { MODELS } from "../models.generated.js";
3
+ import { createModels } from "../models.js";
4
+ import { amazonBedrockProvider } from "./amazon-bedrock.js";
5
+ import { antLingProvider } from "./ant-ling.js";
6
+ import { anthropicProvider } from "./anthropic.js";
7
+ import { azureOpenAIResponsesProvider } from "./azure-openai-responses.js";
8
+ import { basetenProvider } from "./baseten.js";
9
+ import { cerebrasProvider } from "./cerebras.js";
10
+ import { cloudflareAIGatewayProvider } from "./cloudflare-ai-gateway.js";
11
+ import { cloudflareWorkersAIProvider } from "./cloudflare-workers-ai.js";
12
+ import modelDataManifest from "./data/.manifest.json" with { type: "json" };
13
+ import { deepseekProvider } from "./deepseek.js";
14
+ import { fireworksProvider } from "./fireworks.js";
15
+ import { githubCopilotProvider } from "./github-copilot.js";
16
+ import { googleProvider } from "./google.js";
17
+ import { googleVertexProvider } from "./google-vertex.js";
18
+ import { groqProvider } from "./groq.js";
19
+ import { huggingfaceProvider } from "./huggingface.js";
20
+ import { kimiCodingProvider } from "./kimi-coding.js";
21
+ import { minimaxProvider } from "./minimax.js";
22
+ import { minimaxCnProvider } from "./minimax-cn.js";
23
+ import { mistralProvider } from "./mistral.js";
24
+ import { moonshotaiProvider } from "./moonshotai.js";
25
+ import { moonshotaiCnProvider } from "./moonshotai-cn.js";
26
+ import { nvidiaProvider } from "./nvidia.js";
27
+ import { openaiProvider } from "./openai.js";
28
+ import { openaiCodexProvider } from "./openai-codex.js";
29
+ import { opencodeProvider } from "./opencode.js";
30
+ import { opencodeGoProvider } from "./opencode-go.js";
31
+ import { openrouterProvider } from "./openrouter.js";
32
+ import { openrouterImagesProvider } from "./openrouter-images.js";
33
+ import { qwenTokenPlanProvider } from "./qwen-token-plan.js";
34
+ import { qwenTokenPlanCnProvider } from "./qwen-token-plan-cn.js";
35
+ import { qwenTokenPlanIndividualProvider } from "./qwen-token-plan-individual.js";
36
+ import { radiusProvider } from "./radius.js";
37
+ import { togetherProvider } from "./together.js";
38
+ import { vercelAIGatewayProvider } from "./vercel-ai-gateway.js";
39
+ import { xaiProvider } from "./xai.js";
40
+ import { xiaomiProvider } from "./xiaomi.js";
41
+ import { xiaomiTokenPlanAmsProvider } from "./xiaomi-token-plan-ams.js";
42
+ import { xiaomiTokenPlanCnProvider } from "./xiaomi-token-plan-cn.js";
43
+ import { xiaomiTokenPlanSgpProvider } from "./xiaomi-token-plan-sgp.js";
44
+ import { zaiProvider } from "./zai.js";
45
+ import { zaiCodingCnProvider } from "./zai-coding-cn.js";
46
+ export { radiusProvider };
47
+ /** Typed read of the generated built-in catalog. */
48
+ export function getBuiltinModel(provider, modelId) {
49
+ const models = MODELS[provider];
50
+ return models?.[modelId];
51
+ }
52
+ export function getBuiltinProviders() {
53
+ return Object.keys(MODELS);
54
+ }
55
+ /** Generation timestamp shared by all built-in provider catalogs. */
56
+ export function getBuiltinModelDataGeneratedAt() {
57
+ const generatedAt = Date.parse(modelDataManifest.generatedAt);
58
+ return Number.isNaN(generatedAt) ? undefined : generatedAt;
59
+ }
60
+ export function getBuiltinModels(provider) {
61
+ const models = MODELS[provider];
62
+ return models
63
+ ? Object.values(models)
64
+ : [];
65
+ }
66
+ /** All built-in providers, freshly constructed. */
67
+ export function builtinProviders() {
68
+ return [
69
+ amazonBedrockProvider(),
70
+ antLingProvider(),
71
+ anthropicProvider(),
72
+ azureOpenAIResponsesProvider(),
73
+ basetenProvider(),
74
+ cerebrasProvider(),
75
+ cloudflareAIGatewayProvider(),
76
+ cloudflareWorkersAIProvider(),
77
+ deepseekProvider(),
78
+ fireworksProvider(),
79
+ githubCopilotProvider(),
80
+ googleProvider(),
81
+ googleVertexProvider(),
82
+ groqProvider(),
83
+ huggingfaceProvider(),
84
+ kimiCodingProvider(),
85
+ minimaxProvider(),
86
+ minimaxCnProvider(),
87
+ mistralProvider(),
88
+ moonshotaiProvider(),
89
+ moonshotaiCnProvider(),
90
+ nvidiaProvider(),
91
+ openaiProvider(),
92
+ openaiCodexProvider(),
93
+ opencodeProvider(),
94
+ opencodeGoProvider(),
95
+ openrouterProvider(),
96
+ qwenTokenPlanProvider(),
97
+ qwenTokenPlanCnProvider(),
98
+ qwenTokenPlanIndividualProvider(),
99
+ radiusProvider(),
100
+ togetherProvider(),
101
+ vercelAIGatewayProvider(),
102
+ xaiProvider(),
103
+ xiaomiProvider(),
104
+ xiaomiTokenPlanAmsProvider(),
105
+ xiaomiTokenPlanCnProvider(),
106
+ xiaomiTokenPlanSgpProvider(),
107
+ zaiProvider(),
108
+ zaiCodingCnProvider(),
109
+ ];
110
+ }
111
+ /** A `Models` collection with every built-in provider registered. */
112
+ export function builtinModels(options) {
113
+ const models = createModels(options);
114
+ for (const provider of builtinProviders()) {
115
+ models.setProvider(provider);
116
+ }
117
+ return models;
118
+ }
119
+ /** All built-in image-generation providers, freshly constructed. */
120
+ export function builtinImagesProviders() {
121
+ return [openrouterImagesProvider()];
122
+ }
123
+ /** An `ImagesModels` collection with every built-in image-generation provider registered. */
124
+ export function builtinImagesModels(options) {
125
+ const models = createImagesModels(options);
126
+ for (const provider of builtinImagesProviders()) {
127
+ models.setProvider(provider);
128
+ }
129
+ return models;
130
+ }
131
+ //# sourceMappingURL=all.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all.js","sourceRoot":"","sources":["../../src/providers/all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAiD,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAA4B,YAAY,EAAqC,MAAM,cAAc,CAAC;AAEzG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,iBAAiB,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,CAAC;AAY1B,oDAAoD;AACpD,MAAM,UAAU,eAAe,CAC9B,QAAmB,EACnB,OAAiB,EAC6B;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAA2C,CAAC;IAC1E,OAAO,MAAM,EAAE,CAAC,OAAiB,CAAgD,CAAC;AAAA,CAClF;AAED,MAAM,UAAU,mBAAmB,GAAsB;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAsB,CAAC;AAAA,CAChD;AAED,qEAAqE;AACrE,MAAM,UAAU,8BAA8B,GAAuB;IACpE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;AAAA,CAC3D;AAED,MAAM,UAAU,gBAAgB,CAC/B,QAAmB,EACqD;IACxE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAA2C,CAAC;IAC1E,OAAO,MAAM;QACZ,CAAC,CAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAA2E;QAClG,CAAC,CAAC,EAAE,CAAC;AAAA,CACN;AAED,mDAAmD;AACnD,MAAM,UAAU,gBAAgB,GAAe;IAC9C,OAAO;QACN,qBAAqB,EAAE;QACvB,eAAe,EAAE;QACjB,iBAAiB,EAAE;QACnB,4BAA4B,EAAE;QAC9B,eAAe,EAAE;QACjB,gBAAgB,EAAE;QAClB,2BAA2B,EAAE;QAC7B,2BAA2B,EAAE;QAC7B,gBAAgB,EAAE;QAClB,iBAAiB,EAAE;QACnB,qBAAqB,EAAE;QACvB,cAAc,EAAE;QAChB,oBAAoB,EAAE;QACtB,YAAY,EAAE;QACd,mBAAmB,EAAE;QACrB,kBAAkB,EAAE;QACpB,eAAe,EAAE;QACjB,iBAAiB,EAAE;QACnB,eAAe,EAAE;QACjB,kBAAkB,EAAE;QACpB,oBAAoB,EAAE;QACtB,cAAc,EAAE;QAChB,cAAc,EAAE;QAChB,mBAAmB,EAAE;QACrB,gBAAgB,EAAE;QAClB,kBAAkB,EAAE;QACpB,kBAAkB,EAAE;QACpB,qBAAqB,EAAE;QACvB,uBAAuB,EAAE;QACzB,+BAA+B,EAAE;QACjC,cAAc,EAAE;QAChB,gBAAgB,EAAE;QAClB,uBAAuB,EAAE;QACzB,WAAW,EAAE;QACb,cAAc,EAAE;QAChB,0BAA0B,EAAE;QAC5B,yBAAyB,EAAE;QAC3B,0BAA0B,EAAE;QAC5B,WAAW,EAAE;QACb,mBAAmB,EAAE;KACrB,CAAC;AAAA,CACF;AAED,qEAAqE;AACrE,MAAM,UAAU,aAAa,CAAC,OAA6B,EAAiB;IAC3E,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC;AAAA,CACd;AAED,oEAAoE;AACpE,MAAM,UAAU,sBAAsB,GAAqB;IAC1D,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;AAAA,CACpC;AAED,6FAA6F;AAC7F,MAAM,UAAU,mBAAmB,CAAC,OAA6B,EAAuB;IACvF,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,KAAK,MAAM,QAAQ,IAAI,sBAAsB,EAAE,EAAE,CAAC;QACjD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC;AAAA,CACd","sourcesContent":["import { createImagesModels, type ImagesProvider, type MutableImagesModels } from \"../images-models.ts\";\nimport { MODELS } from \"../models.generated.ts\";\nimport { type CreateModelsOptions, createModels, type MutableModels, type Provider } from \"../models.ts\";\nimport type { Api, Model } from \"../types.ts\";\nimport { amazonBedrockProvider } from \"./amazon-bedrock.ts\";\nimport { antLingProvider } from \"./ant-ling.ts\";\nimport { anthropicProvider } from \"./anthropic.ts\";\nimport { azureOpenAIResponsesProvider } from \"./azure-openai-responses.ts\";\nimport { basetenProvider } from \"./baseten.ts\";\nimport { cerebrasProvider } from \"./cerebras.ts\";\nimport { cloudflareAIGatewayProvider } from \"./cloudflare-ai-gateway.ts\";\nimport { cloudflareWorkersAIProvider } from \"./cloudflare-workers-ai.ts\";\nimport modelDataManifest from \"./data/.manifest.json\" with { type: \"json\" };\nimport { deepseekProvider } from \"./deepseek.ts\";\nimport { fireworksProvider } from \"./fireworks.ts\";\nimport { githubCopilotProvider } from \"./github-copilot.ts\";\nimport { googleProvider } from \"./google.ts\";\nimport { googleVertexProvider } from \"./google-vertex.ts\";\nimport { groqProvider } from \"./groq.ts\";\nimport { huggingfaceProvider } from \"./huggingface.ts\";\nimport { kimiCodingProvider } from \"./kimi-coding.ts\";\nimport { minimaxProvider } from \"./minimax.ts\";\nimport { minimaxCnProvider } from \"./minimax-cn.ts\";\nimport { mistralProvider } from \"./mistral.ts\";\nimport { moonshotaiProvider } from \"./moonshotai.ts\";\nimport { moonshotaiCnProvider } from \"./moonshotai-cn.ts\";\nimport { nvidiaProvider } from \"./nvidia.ts\";\nimport { openaiProvider } from \"./openai.ts\";\nimport { openaiCodexProvider } from \"./openai-codex.ts\";\nimport { opencodeProvider } from \"./opencode.ts\";\nimport { opencodeGoProvider } from \"./opencode-go.ts\";\nimport { openrouterProvider } from \"./openrouter.ts\";\nimport { openrouterImagesProvider } from \"./openrouter-images.ts\";\nimport { qwenTokenPlanProvider } from \"./qwen-token-plan.ts\";\nimport { qwenTokenPlanCnProvider } from \"./qwen-token-plan-cn.ts\";\nimport { qwenTokenPlanIndividualProvider } from \"./qwen-token-plan-individual.ts\";\nimport { radiusProvider } from \"./radius.ts\";\nimport { togetherProvider } from \"./together.ts\";\nimport { vercelAIGatewayProvider } from \"./vercel-ai-gateway.ts\";\nimport { xaiProvider } from \"./xai.ts\";\nimport { xiaomiProvider } from \"./xiaomi.ts\";\nimport { xiaomiTokenPlanAmsProvider } from \"./xiaomi-token-plan-ams.ts\";\nimport { xiaomiTokenPlanCnProvider } from \"./xiaomi-token-plan-cn.ts\";\nimport { xiaomiTokenPlanSgpProvider } from \"./xiaomi-token-plan-sgp.ts\";\nimport { zaiProvider } from \"./zai.ts\";\nimport { zaiCodingCnProvider } from \"./zai-coding-cn.ts\";\n\nexport { radiusProvider };\n\n/** Providers present in the generated catalog. `KnownProvider` additionally\n * includes purely dynamic providers (e.g. \"radius\") that have no static\n * catalog entry. */\nexport type BuiltinProvider = keyof typeof MODELS;\n\ntype BuiltinModelApi<\n\tTProvider extends BuiltinProvider,\n\tTModelId extends keyof (typeof MODELS)[TProvider],\n> = (typeof MODELS)[TProvider][TModelId] extends { api: infer TApi } ? (TApi extends Api ? TApi : never) : never;\n\n/** Typed read of the generated built-in catalog. */\nexport function getBuiltinModel<TProvider extends BuiltinProvider, TModelId extends keyof (typeof MODELS)[TProvider]>(\n\tprovider: TProvider,\n\tmodelId: TModelId,\n): Model<BuiltinModelApi<TProvider, TModelId>> {\n\tconst models = MODELS[provider] as Record<string, Model<Api>> | undefined;\n\treturn models?.[modelId as string] as Model<BuiltinModelApi<TProvider, TModelId>>;\n}\n\nexport function getBuiltinProviders(): BuiltinProvider[] {\n\treturn Object.keys(MODELS) as BuiltinProvider[];\n}\n\n/** Generation timestamp shared by all built-in provider catalogs. */\nexport function getBuiltinModelDataGeneratedAt(): number | undefined {\n\tconst generatedAt = Date.parse(modelDataManifest.generatedAt);\n\treturn Number.isNaN(generatedAt) ? undefined : generatedAt;\n}\n\nexport function getBuiltinModels<TProvider extends BuiltinProvider>(\n\tprovider: TProvider,\n): Model<BuiltinModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[] {\n\tconst models = MODELS[provider] as Record<string, Model<Api>> | undefined;\n\treturn models\n\t\t? (Object.values(models) as Model<BuiltinModelApi<TProvider, keyof (typeof MODELS)[TProvider]>>[])\n\t\t: [];\n}\n\n/** All built-in providers, freshly constructed. */\nexport function builtinProviders(): Provider[] {\n\treturn [\n\t\tamazonBedrockProvider(),\n\t\tantLingProvider(),\n\t\tanthropicProvider(),\n\t\tazureOpenAIResponsesProvider(),\n\t\tbasetenProvider(),\n\t\tcerebrasProvider(),\n\t\tcloudflareAIGatewayProvider(),\n\t\tcloudflareWorkersAIProvider(),\n\t\tdeepseekProvider(),\n\t\tfireworksProvider(),\n\t\tgithubCopilotProvider(),\n\t\tgoogleProvider(),\n\t\tgoogleVertexProvider(),\n\t\tgroqProvider(),\n\t\thuggingfaceProvider(),\n\t\tkimiCodingProvider(),\n\t\tminimaxProvider(),\n\t\tminimaxCnProvider(),\n\t\tmistralProvider(),\n\t\tmoonshotaiProvider(),\n\t\tmoonshotaiCnProvider(),\n\t\tnvidiaProvider(),\n\t\topenaiProvider(),\n\t\topenaiCodexProvider(),\n\t\topencodeProvider(),\n\t\topencodeGoProvider(),\n\t\topenrouterProvider(),\n\t\tqwenTokenPlanProvider(),\n\t\tqwenTokenPlanCnProvider(),\n\t\tqwenTokenPlanIndividualProvider(),\n\t\tradiusProvider(),\n\t\ttogetherProvider(),\n\t\tvercelAIGatewayProvider(),\n\t\txaiProvider(),\n\t\txiaomiProvider(),\n\t\txiaomiTokenPlanAmsProvider(),\n\t\txiaomiTokenPlanCnProvider(),\n\t\txiaomiTokenPlanSgpProvider(),\n\t\tzaiProvider(),\n\t\tzaiCodingCnProvider(),\n\t];\n}\n\n/** A `Models` collection with every built-in provider registered. */\nexport function builtinModels(options?: CreateModelsOptions): MutableModels {\n\tconst models = createModels(options);\n\tfor (const provider of builtinProviders()) {\n\t\tmodels.setProvider(provider);\n\t}\n\treturn models;\n}\n\n/** All built-in image-generation providers, freshly constructed. */\nexport function builtinImagesProviders(): ImagesProvider[] {\n\treturn [openrouterImagesProvider()];\n}\n\n/** An `ImagesModels` collection with every built-in image-generation provider registered. */\nexport function builtinImagesModels(options?: CreateModelsOptions): MutableImagesModels {\n\tconst models = createImagesModels(options);\n\tfor (const provider of builtinImagesProviders()) {\n\t\tmodels.setProvider(provider);\n\t}\n\treturn models;\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import { type Provider } from "../models.ts";
2
+ export declare function amazonBedrockProvider(): Provider<"bedrock-converse-stream">;
3
+ //# sourceMappingURL=amazon-bedrock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amazon-bedrock.d.ts","sourceRoot":"","sources":["../../src/providers/amazon-bedrock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AA+E7D,wBAAgB,qBAAqB,IAAI,QAAQ,CAAC,yBAAyB,CAAC,CAQ3E","sourcesContent":["import { bedrockConverseStreamApi } from \"../api/bedrock-converse-stream.lazy.ts\";\nimport type { ApiKeyAuth } from \"../auth/types.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { AMAZON_BEDROCK_MODELS } from \"./amazon-bedrock.models.ts\";\n\n/**\n * Bedrock accepts a bearer token or the AWS SDK's default credential chain.\n * The login flow can store a token/profile choice; resolve also detects ambient\n * AWS credentials without copying them into pi's credential store.\n */\nconst bedrockAuth: ApiKeyAuth = {\n\tname: \"AWS credentials or bearer token\",\n\tlogin: async (interaction) => {\n\t\tinteraction.signal.throwIfAborted();\n\t\tconst method = await interaction.prompt({\n\t\t\ttype: \"select\",\n\t\t\tmessage: \"Select Amazon Bedrock authentication method:\",\n\t\t\toptions: [\n\t\t\t\t{ id: \"bearer-token\", label: \"Bearer token\" },\n\t\t\t\t{ id: \"aws-profile\", label: \"AWS profile\" },\n\t\t\t\t{ id: \"credential-chain\", label: \"Existing AWS credential chain\" },\n\t\t\t],\n\t\t});\n\t\tinteraction.signal.throwIfAborted();\n\t\tif (method === \"bearer-token\") {\n\t\t\treturn {\n\t\t\t\ttype: \"api_key\",\n\t\t\t\tkey: await interaction.prompt({ type: \"secret\", message: \"Enter Amazon Bedrock bearer token\" }),\n\t\t\t};\n\t\t}\n\t\tinteraction.notify({\n\t\t\ttype: \"info\",\n\t\t\tmessage: \"Amazon Bedrock supports AWS profiles, IAM credentials, and role-based credentials.\",\n\t\t\tlinks: [\n\t\t\t\t{\n\t\t\t\t\tlabel: \"AWS credential provider chain\",\n\t\t\t\t\turl: \"https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html\",\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t\tif (method === \"aws-profile\") {\n\t\t\treturn {\n\t\t\t\ttype: \"api_key\",\n\t\t\t\tenv: { AWS_PROFILE: await interaction.prompt({ type: \"text\", message: \"Enter AWS profile name\" }) },\n\t\t\t};\n\t\t}\n\t\tif (method !== \"credential-chain\") throw new Error(`Unknown Amazon Bedrock auth method: ${method}`);\n\t\tawait interaction.prompt({\n\t\t\ttype: \"text\",\n\t\t\tmessage: \"Configure AWS credentials, then press Enter to continue\",\n\t\t});\n\t\treturn { type: \"api_key\" };\n\t},\n\tresolve: async ({ ctx, credential, signal }) => {\n\t\tconst env = async (name: string) => {\n\t\t\tsignal.throwIfAborted();\n\t\t\tconst value = await ctx.env(name);\n\t\t\tsignal.throwIfAborted();\n\t\t\treturn value;\n\t\t};\n\t\tif (credential?.key) {\n\t\t\treturn { auth: { apiKey: credential.key }, env: credential.env, source: \"stored credential\" };\n\t\t}\n\t\tif (await env(\"AWS_BEARER_TOKEN_BEDROCK\")) return { auth: {}, source: \"AWS_BEARER_TOKEN_BEDROCK\" };\n\t\tif (credential?.env?.AWS_PROFILE ?? (await env(\"AWS_PROFILE\"))) {\n\t\t\treturn {\n\t\t\t\tauth: {},\n\t\t\t\tenv: credential?.env,\n\t\t\t\tsource: credential?.env?.AWS_PROFILE ? \"stored credential\" : \"AWS_PROFILE\",\n\t\t\t};\n\t\t}\n\t\tif ((await env(\"AWS_ACCESS_KEY_ID\")) && (await env(\"AWS_SECRET_ACCESS_KEY\"))) {\n\t\t\treturn { auth: {}, source: \"AWS access keys\" };\n\t\t}\n\t\tif (await env(\"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\")) return { auth: {}, source: \"ECS task role\" };\n\t\tif (await env(\"AWS_CONTAINER_CREDENTIALS_FULL_URI\")) return { auth: {}, source: \"ECS task role\" };\n\t\tif (await env(\"AWS_WEB_IDENTITY_TOKEN_FILE\")) return { auth: {}, source: \"web identity token\" };\n\t\treturn undefined;\n\t},\n};\n\nexport function amazonBedrockProvider(): Provider<\"bedrock-converse-stream\"> {\n\treturn createProvider({\n\t\tid: \"amazon-bedrock\",\n\t\tname: \"Amazon Bedrock\",\n\t\tauth: { apiKey: bedrockAuth },\n\t\tmodels: Object.values(AMAZON_BEDROCK_MODELS),\n\t\tapi: bedrockConverseStreamApi(),\n\t});\n}\n"]}
@@ -0,0 +1,93 @@
1
+ import { bedrockConverseStreamApi } from "../api/bedrock-converse-stream.lazy.js";
2
+ import { createProvider } from "../models.js";
3
+ import { AMAZON_BEDROCK_MODELS } from "./amazon-bedrock.models.js";
4
+ /**
5
+ * Bedrock accepts a bearer token or the AWS SDK's default credential chain.
6
+ * The login flow can store a token/profile choice; resolve also detects ambient
7
+ * AWS credentials without copying them into pi's credential store.
8
+ */
9
+ const bedrockAuth = {
10
+ name: "AWS credentials or bearer token",
11
+ login: async (interaction) => {
12
+ interaction.signal.throwIfAborted();
13
+ const method = await interaction.prompt({
14
+ type: "select",
15
+ message: "Select Amazon Bedrock authentication method:",
16
+ options: [
17
+ { id: "bearer-token", label: "Bearer token" },
18
+ { id: "aws-profile", label: "AWS profile" },
19
+ { id: "credential-chain", label: "Existing AWS credential chain" },
20
+ ],
21
+ });
22
+ interaction.signal.throwIfAborted();
23
+ if (method === "bearer-token") {
24
+ return {
25
+ type: "api_key",
26
+ key: await interaction.prompt({ type: "secret", message: "Enter Amazon Bedrock bearer token" }),
27
+ };
28
+ }
29
+ interaction.notify({
30
+ type: "info",
31
+ message: "Amazon Bedrock supports AWS profiles, IAM credentials, and role-based credentials.",
32
+ links: [
33
+ {
34
+ label: "AWS credential provider chain",
35
+ url: "https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html",
36
+ },
37
+ ],
38
+ });
39
+ if (method === "aws-profile") {
40
+ return {
41
+ type: "api_key",
42
+ env: { AWS_PROFILE: await interaction.prompt({ type: "text", message: "Enter AWS profile name" }) },
43
+ };
44
+ }
45
+ if (method !== "credential-chain")
46
+ throw new Error(`Unknown Amazon Bedrock auth method: ${method}`);
47
+ await interaction.prompt({
48
+ type: "text",
49
+ message: "Configure AWS credentials, then press Enter to continue",
50
+ });
51
+ return { type: "api_key" };
52
+ },
53
+ resolve: async ({ ctx, credential, signal }) => {
54
+ const env = async (name) => {
55
+ signal.throwIfAborted();
56
+ const value = await ctx.env(name);
57
+ signal.throwIfAborted();
58
+ return value;
59
+ };
60
+ if (credential?.key) {
61
+ return { auth: { apiKey: credential.key }, env: credential.env, source: "stored credential" };
62
+ }
63
+ if (await env("AWS_BEARER_TOKEN_BEDROCK"))
64
+ return { auth: {}, source: "AWS_BEARER_TOKEN_BEDROCK" };
65
+ if (credential?.env?.AWS_PROFILE ?? (await env("AWS_PROFILE"))) {
66
+ return {
67
+ auth: {},
68
+ env: credential?.env,
69
+ source: credential?.env?.AWS_PROFILE ? "stored credential" : "AWS_PROFILE",
70
+ };
71
+ }
72
+ if ((await env("AWS_ACCESS_KEY_ID")) && (await env("AWS_SECRET_ACCESS_KEY"))) {
73
+ return { auth: {}, source: "AWS access keys" };
74
+ }
75
+ if (await env("AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"))
76
+ return { auth: {}, source: "ECS task role" };
77
+ if (await env("AWS_CONTAINER_CREDENTIALS_FULL_URI"))
78
+ return { auth: {}, source: "ECS task role" };
79
+ if (await env("AWS_WEB_IDENTITY_TOKEN_FILE"))
80
+ return { auth: {}, source: "web identity token" };
81
+ return undefined;
82
+ },
83
+ };
84
+ export function amazonBedrockProvider() {
85
+ return createProvider({
86
+ id: "amazon-bedrock",
87
+ name: "Amazon Bedrock",
88
+ auth: { apiKey: bedrockAuth },
89
+ models: Object.values(AMAZON_BEDROCK_MODELS),
90
+ api: bedrockConverseStreamApi(),
91
+ });
92
+ }
93
+ //# sourceMappingURL=amazon-bedrock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amazon-bedrock.js","sourceRoot":"","sources":["../../src/providers/amazon-bedrock.ts"],"names":[],"mappings":"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","sourcesContent":["import { bedrockConverseStreamApi } from \"../api/bedrock-converse-stream.lazy.ts\";\nimport type { ApiKeyAuth } from \"../auth/types.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { AMAZON_BEDROCK_MODELS } from \"./amazon-bedrock.models.ts\";\n\n/**\n * Bedrock accepts a bearer token or the AWS SDK's default credential chain.\n * The login flow can store a token/profile choice; resolve also detects ambient\n * AWS credentials without copying them into pi's credential store.\n */\nconst bedrockAuth: ApiKeyAuth = {\n\tname: \"AWS credentials or bearer token\",\n\tlogin: async (interaction) => {\n\t\tinteraction.signal.throwIfAborted();\n\t\tconst method = await interaction.prompt({\n\t\t\ttype: \"select\",\n\t\t\tmessage: \"Select Amazon Bedrock authentication method:\",\n\t\t\toptions: [\n\t\t\t\t{ id: \"bearer-token\", label: \"Bearer token\" },\n\t\t\t\t{ id: \"aws-profile\", label: \"AWS profile\" },\n\t\t\t\t{ id: \"credential-chain\", label: \"Existing AWS credential chain\" },\n\t\t\t],\n\t\t});\n\t\tinteraction.signal.throwIfAborted();\n\t\tif (method === \"bearer-token\") {\n\t\t\treturn {\n\t\t\t\ttype: \"api_key\",\n\t\t\t\tkey: await interaction.prompt({ type: \"secret\", message: \"Enter Amazon Bedrock bearer token\" }),\n\t\t\t};\n\t\t}\n\t\tinteraction.notify({\n\t\t\ttype: \"info\",\n\t\t\tmessage: \"Amazon Bedrock supports AWS profiles, IAM credentials, and role-based credentials.\",\n\t\t\tlinks: [\n\t\t\t\t{\n\t\t\t\t\tlabel: \"AWS credential provider chain\",\n\t\t\t\t\turl: \"https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html\",\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t\tif (method === \"aws-profile\") {\n\t\t\treturn {\n\t\t\t\ttype: \"api_key\",\n\t\t\t\tenv: { AWS_PROFILE: await interaction.prompt({ type: \"text\", message: \"Enter AWS profile name\" }) },\n\t\t\t};\n\t\t}\n\t\tif (method !== \"credential-chain\") throw new Error(`Unknown Amazon Bedrock auth method: ${method}`);\n\t\tawait interaction.prompt({\n\t\t\ttype: \"text\",\n\t\t\tmessage: \"Configure AWS credentials, then press Enter to continue\",\n\t\t});\n\t\treturn { type: \"api_key\" };\n\t},\n\tresolve: async ({ ctx, credential, signal }) => {\n\t\tconst env = async (name: string) => {\n\t\t\tsignal.throwIfAborted();\n\t\t\tconst value = await ctx.env(name);\n\t\t\tsignal.throwIfAborted();\n\t\t\treturn value;\n\t\t};\n\t\tif (credential?.key) {\n\t\t\treturn { auth: { apiKey: credential.key }, env: credential.env, source: \"stored credential\" };\n\t\t}\n\t\tif (await env(\"AWS_BEARER_TOKEN_BEDROCK\")) return { auth: {}, source: \"AWS_BEARER_TOKEN_BEDROCK\" };\n\t\tif (credential?.env?.AWS_PROFILE ?? (await env(\"AWS_PROFILE\"))) {\n\t\t\treturn {\n\t\t\t\tauth: {},\n\t\t\t\tenv: credential?.env,\n\t\t\t\tsource: credential?.env?.AWS_PROFILE ? \"stored credential\" : \"AWS_PROFILE\",\n\t\t\t};\n\t\t}\n\t\tif ((await env(\"AWS_ACCESS_KEY_ID\")) && (await env(\"AWS_SECRET_ACCESS_KEY\"))) {\n\t\t\treturn { auth: {}, source: \"AWS access keys\" };\n\t\t}\n\t\tif (await env(\"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\")) return { auth: {}, source: \"ECS task role\" };\n\t\tif (await env(\"AWS_CONTAINER_CREDENTIALS_FULL_URI\")) return { auth: {}, source: \"ECS task role\" };\n\t\tif (await env(\"AWS_WEB_IDENTITY_TOKEN_FILE\")) return { auth: {}, source: \"web identity token\" };\n\t\treturn undefined;\n\t},\n};\n\nexport function amazonBedrockProvider(): Provider<\"bedrock-converse-stream\"> {\n\treturn createProvider({\n\t\tid: \"amazon-bedrock\",\n\t\tname: \"Amazon Bedrock\",\n\t\tauth: { apiKey: bedrockAuth },\n\t\tmodels: Object.values(AMAZON_BEDROCK_MODELS),\n\t\tapi: bedrockConverseStreamApi(),\n\t});\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import values from "./data/amazon-bedrock.json";
2
+ import { type ModelCatalog } from "../model-catalog.ts";
3
+ export declare const AMAZON_BEDROCK_MODELS: ModelCatalog<typeof values, "amazon-bedrock">;
4
+ //# sourceMappingURL=amazon-bedrock.models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amazon-bedrock.models.d.ts","sourceRoot":"","sources":["../../src/providers/amazon-bedrock.models.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,4BAA4B,CAAuB;AACtE,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,qBAAqB,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,gBAAgB,CAClC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/amazon-bedrock.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const AMAZON_BEDROCK_MODELS: ModelCatalog<typeof values, \"amazon-bedrock\"> =\n\tflattenModelCatalog(\"amazon-bedrock\", values);\n"]}
@@ -0,0 +1,6 @@
1
+ // This file is auto-generated by scripts/generate-models.ts
2
+ // Do not edit manually - run 'npm run generate-models' to update
3
+ import values from "./data/amazon-bedrock.json" with { type: "json" };
4
+ import { flattenModelCatalog } from "../model-catalog.js";
5
+ export const AMAZON_BEDROCK_MODELS = flattenModelCatalog("amazon-bedrock", values);
6
+ //# sourceMappingURL=amazon-bedrock.models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amazon-bedrock.models.js","sourceRoot":"","sources":["../../src/providers/amazon-bedrock.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,4BAA4B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,qBAAqB,GACjC,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/amazon-bedrock.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const AMAZON_BEDROCK_MODELS: ModelCatalog<typeof values, \"amazon-bedrock\"> =\n\tflattenModelCatalog(\"amazon-bedrock\", values);\n"]}
@@ -0,0 +1,3 @@
1
+ import { type Provider } from "../models.ts";
2
+ export declare function antLingProvider(): Provider<"openai-completions">;
3
+ //# sourceMappingURL=ant-ling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ant-ling.d.ts","sourceRoot":"","sources":["../../src/providers/ant-ling.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7D,wBAAgB,eAAe,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAShE","sourcesContent":["import { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { envApiKeyAuth } from \"../auth/helpers.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { ANT_LING_MODELS } from \"./ant-ling.models.ts\";\n\nexport function antLingProvider(): Provider<\"openai-completions\"> {\n\treturn createProvider({\n\t\tid: \"ant-ling\",\n\t\tname: \"Ant Ling\",\n\t\tbaseUrl: \"https://api.ant-ling.com/v1\",\n\t\tauth: { apiKey: envApiKeyAuth(\"Ant Ling API key\", [\"ANT_LING_API_KEY\"]) },\n\t\tmodels: Object.values(ANT_LING_MODELS),\n\t\tapi: openAICompletionsApi(),\n\t});\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import { openAICompletionsApi } from "../api/openai-completions.lazy.js";
2
+ import { envApiKeyAuth } from "../auth/helpers.js";
3
+ import { createProvider } from "../models.js";
4
+ import { ANT_LING_MODELS } from "./ant-ling.models.js";
5
+ export function antLingProvider() {
6
+ return createProvider({
7
+ id: "ant-ling",
8
+ name: "Ant Ling",
9
+ baseUrl: "https://api.ant-ling.com/v1",
10
+ auth: { apiKey: envApiKeyAuth("Ant Ling API key", ["ANT_LING_API_KEY"]) },
11
+ models: Object.values(ANT_LING_MODELS),
12
+ api: openAICompletionsApi(),
13
+ });
14
+ }
15
+ //# sourceMappingURL=ant-ling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ant-ling.js","sourceRoot":"","sources":["../../src/providers/ant-ling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,UAAU,eAAe,GAAmC;IACjE,OAAO,cAAc,CAAC;QACrB,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,6BAA6B;QACtC,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE;QACzE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QACtC,GAAG,EAAE,oBAAoB,EAAE;KAC3B,CAAC,CAAC;AAAA,CACH","sourcesContent":["import { openAICompletionsApi } from \"../api/openai-completions.lazy.ts\";\nimport { envApiKeyAuth } from \"../auth/helpers.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { ANT_LING_MODELS } from \"./ant-ling.models.ts\";\n\nexport function antLingProvider(): Provider<\"openai-completions\"> {\n\treturn createProvider({\n\t\tid: \"ant-ling\",\n\t\tname: \"Ant Ling\",\n\t\tbaseUrl: \"https://api.ant-ling.com/v1\",\n\t\tauth: { apiKey: envApiKeyAuth(\"Ant Ling API key\", [\"ANT_LING_API_KEY\"]) },\n\t\tmodels: Object.values(ANT_LING_MODELS),\n\t\tapi: openAICompletionsApi(),\n\t});\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import values from "./data/ant-ling.json";
2
+ import { type ModelCatalog } from "../model-catalog.ts";
3
+ export declare const ANT_LING_MODELS: ModelCatalog<typeof values, "ant-ling">;
4
+ //# sourceMappingURL=ant-ling.models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ant-ling.models.d.ts","sourceRoot":"","sources":["../../src/providers/ant-ling.models.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,sBAAsB,CAAuB;AAChE,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7E,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,OAAO,MAAM,EAAE,UAAU,CAC5B,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/ant-ling.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const ANT_LING_MODELS: ModelCatalog<typeof values, \"ant-ling\"> =\n\tflattenModelCatalog(\"ant-ling\", values);\n"]}
@@ -0,0 +1,6 @@
1
+ // This file is auto-generated by scripts/generate-models.ts
2
+ // Do not edit manually - run 'npm run generate-models' to update
3
+ import values from "./data/ant-ling.json" with { type: "json" };
4
+ import { flattenModelCatalog } from "../model-catalog.js";
5
+ export const ANT_LING_MODELS = flattenModelCatalog("ant-ling", values);
6
+ //# sourceMappingURL=ant-ling.models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ant-ling.models.js","sourceRoot":"","sources":["../../src/providers/ant-ling.models.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AAEjE,OAAO,MAAM,MAAM,sBAAsB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAE7E,MAAM,CAAC,MAAM,eAAe,GAC3B,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport values from \"./data/ant-ling.json\" with { type: \"json\" };\nimport { flattenModelCatalog, type ModelCatalog } from \"../model-catalog.ts\";\n\nexport const ANT_LING_MODELS: ModelCatalog<typeof values, \"ant-ling\"> =\n\tflattenModelCatalog(\"ant-ling\", values);\n"]}
@@ -0,0 +1,3 @@
1
+ import { type Provider } from "../models.ts";
2
+ export declare function anthropicProvider(): Provider<"anthropic-messages">;
3
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAqC7D,wBAAgB,iBAAiB,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAgBlE","sourcesContent":["import { anthropicMessagesApi } from \"../api/anthropic-messages.lazy.ts\";\nimport { lazyOAuth } from \"../auth/helpers.ts\";\nimport { loadAnthropicOAuth } from \"../auth/oauth/load.ts\";\nimport type { ApiKeyAuth } from \"../auth/types.ts\";\nimport { ANTHROPIC_API_KEY_ENV, ANTHROPIC_AUTH_TOKEN_ENV, ANTHROPIC_OAUTH_TOKEN_ENV } from \"../env-api-keys.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { ANTHROPIC_MODELS } from \"./anthropic.models.ts\";\n\nfunction anthropicApiKeyAuth(): ApiKeyAuth {\n\treturn {\n\t\tname: \"Anthropic API key\",\n\t\tlogin: async (interaction) => {\n\t\t\tinteraction.signal.throwIfAborted();\n\t\t\tconst key = await interaction.prompt({ type: \"secret\", message: \"Enter Anthropic API key\" });\n\t\t\tinteraction.signal.throwIfAborted();\n\t\t\treturn { type: \"api_key\", key };\n\t\t},\n\t\tresolve: async ({ ctx, credential, signal }) => {\n\t\t\tsignal.throwIfAborted();\n\t\t\tif (credential?.key) {\n\t\t\t\treturn { auth: { apiKey: credential.key }, env: credential.env, source: \"stored credential\" };\n\t\t\t}\n\n\t\t\tconst authToken = await ctx.env(ANTHROPIC_AUTH_TOKEN_ENV);\n\t\t\tsignal.throwIfAborted();\n\t\t\tif (authToken) {\n\t\t\t\treturn {\n\t\t\t\t\tauth: { headers: { Authorization: `Bearer ${authToken}` } },\n\t\t\t\t\tsource: ANTHROPIC_AUTH_TOKEN_ENV,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfor (const envVar of [ANTHROPIC_OAUTH_TOKEN_ENV, ANTHROPIC_API_KEY_ENV]) {\n\t\t\t\tconst apiKey = await ctx.env(envVar);\n\t\t\t\tsignal.throwIfAborted();\n\t\t\t\tif (apiKey) return { auth: { apiKey }, source: envVar };\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t};\n}\n\nexport function anthropicProvider(): Provider<\"anthropic-messages\"> {\n\treturn createProvider({\n\t\tid: \"anthropic\",\n\t\tname: \"Anthropic\",\n\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\tauth: {\n\t\t\tapiKey: anthropicApiKeyAuth(),\n\t\t\toauth: lazyOAuth({\n\t\t\t\tname: \"Anthropic (Claude Pro/Max)\",\n\t\t\t\tisSubscription: true,\n\t\t\t\tload: loadAnthropicOAuth,\n\t\t\t}),\n\t\t},\n\t\tmodels: Object.values(ANTHROPIC_MODELS),\n\t\tapi: anthropicMessagesApi(),\n\t});\n}\n"]}