@earendil-works/pi-ai 0.79.10 → 0.80.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. package/README.md +646 -521
  2. package/dist/api/anthropic-messages.d.ts +71 -0
  3. package/dist/api/anthropic-messages.d.ts.map +1 -0
  4. package/dist/api/anthropic-messages.js +963 -0
  5. package/dist/api/anthropic-messages.js.map +1 -0
  6. package/dist/api/anthropic-messages.lazy.d.ts +3 -0
  7. package/dist/api/anthropic-messages.lazy.d.ts.map +1 -0
  8. package/dist/api/anthropic-messages.lazy.js +3 -0
  9. package/dist/api/anthropic-messages.lazy.js.map +1 -0
  10. package/dist/api/azure-openai-responses.d.ts +15 -0
  11. package/dist/api/azure-openai-responses.d.ts.map +1 -0
  12. package/dist/api/azure-openai-responses.js +225 -0
  13. package/dist/api/azure-openai-responses.js.map +1 -0
  14. package/dist/api/azure-openai-responses.lazy.d.ts +3 -0
  15. package/dist/api/azure-openai-responses.lazy.d.ts.map +1 -0
  16. package/dist/api/azure-openai-responses.lazy.js +3 -0
  17. package/dist/api/azure-openai-responses.lazy.js.map +1 -0
  18. package/dist/api/bedrock-converse-stream.d.ts +38 -0
  19. package/dist/api/bedrock-converse-stream.d.ts.map +1 -0
  20. package/dist/api/bedrock-converse-stream.js +863 -0
  21. package/dist/api/bedrock-converse-stream.js.map +1 -0
  22. package/dist/api/bedrock-converse-stream.lazy.d.ts +9 -0
  23. package/dist/api/bedrock-converse-stream.lazy.d.ts.map +1 -0
  24. package/dist/api/bedrock-converse-stream.lazy.js +30 -0
  25. package/dist/api/bedrock-converse-stream.lazy.js.map +1 -0
  26. package/dist/{providers → api}/cloudflare.d.ts +0 -4
  27. package/dist/api/cloudflare.d.ts.map +1 -0
  28. package/dist/{providers → api}/cloudflare.js +0 -18
  29. package/dist/api/cloudflare.js.map +1 -0
  30. package/dist/api/github-copilot-headers.d.ts.map +1 -0
  31. package/dist/api/github-copilot-headers.js.map +1 -0
  32. package/dist/api/google-generative-ai.d.ts +13 -0
  33. package/dist/api/google-generative-ai.d.ts.map +1 -0
  34. package/dist/api/google-generative-ai.js +405 -0
  35. package/dist/api/google-generative-ai.js.map +1 -0
  36. package/dist/api/google-generative-ai.lazy.d.ts +3 -0
  37. package/dist/api/google-generative-ai.lazy.d.ts.map +1 -0
  38. package/dist/api/google-generative-ai.lazy.js +3 -0
  39. package/dist/api/google-generative-ai.lazy.js.map +1 -0
  40. package/dist/api/google-shared.d.ts.map +1 -0
  41. package/dist/api/google-shared.js.map +1 -0
  42. package/dist/api/google-vertex.d.ts +15 -0
  43. package/dist/api/google-vertex.d.ts.map +1 -0
  44. package/dist/api/google-vertex.js +454 -0
  45. package/dist/api/google-vertex.js.map +1 -0
  46. package/dist/api/google-vertex.lazy.d.ts +3 -0
  47. package/dist/api/google-vertex.lazy.d.ts.map +1 -0
  48. package/dist/api/google-vertex.lazy.js +3 -0
  49. package/dist/api/google-vertex.lazy.js.map +1 -0
  50. package/dist/api/lazy.d.ts +15 -0
  51. package/dist/api/lazy.d.ts.map +1 -0
  52. package/dist/api/lazy.js +59 -0
  53. package/dist/api/lazy.js.map +1 -0
  54. package/dist/api/mistral-conversations.d.ts +25 -0
  55. package/dist/api/mistral-conversations.d.ts.map +1 -0
  56. package/dist/api/mistral-conversations.js +555 -0
  57. package/dist/api/mistral-conversations.js.map +1 -0
  58. package/dist/api/mistral-conversations.lazy.d.ts +3 -0
  59. package/dist/api/mistral-conversations.lazy.d.ts.map +1 -0
  60. package/dist/api/mistral-conversations.lazy.js +3 -0
  61. package/dist/api/mistral-conversations.lazy.js.map +1 -0
  62. package/dist/{providers → api}/openai-codex-responses.d.ts +2 -3
  63. package/dist/api/openai-codex-responses.d.ts.map +1 -0
  64. package/dist/{providers → api}/openai-codex-responses.js +66 -45
  65. package/dist/api/openai-codex-responses.js.map +1 -0
  66. package/dist/api/openai-codex-responses.lazy.d.ts +3 -0
  67. package/dist/api/openai-codex-responses.lazy.d.ts.map +1 -0
  68. package/dist/api/openai-codex-responses.lazy.js +3 -0
  69. package/dist/api/openai-codex-responses.lazy.js.map +1 -0
  70. package/dist/{providers → api}/openai-completions.d.ts +2 -3
  71. package/dist/api/openai-completions.d.ts.map +1 -0
  72. package/dist/{providers → api}/openai-completions.js +32 -37
  73. package/dist/api/openai-completions.js.map +1 -0
  74. package/dist/api/openai-completions.lazy.d.ts +3 -0
  75. package/dist/api/openai-completions.lazy.d.ts.map +1 -0
  76. package/dist/api/openai-completions.lazy.js +3 -0
  77. package/dist/api/openai-completions.lazy.js.map +1 -0
  78. package/dist/api/openai-prompt-cache.d.ts.map +1 -0
  79. package/dist/api/openai-prompt-cache.js.map +1 -0
  80. package/dist/api/openai-responses-shared.d.ts.map +1 -0
  81. package/dist/{providers → api}/openai-responses-shared.js +37 -29
  82. package/dist/api/openai-responses-shared.js.map +1 -0
  83. package/dist/{providers → api}/openai-responses.d.ts +2 -3
  84. package/dist/api/openai-responses.d.ts.map +1 -0
  85. package/dist/{providers → api}/openai-responses.js +27 -32
  86. package/dist/api/openai-responses.js.map +1 -0
  87. package/dist/api/openai-responses.lazy.d.ts +3 -0
  88. package/dist/api/openai-responses.lazy.d.ts.map +1 -0
  89. package/dist/api/openai-responses.lazy.js +3 -0
  90. package/dist/api/openai-responses.lazy.js.map +1 -0
  91. package/dist/api/openrouter-images.d.ts +3 -0
  92. package/dist/api/openrouter-images.d.ts.map +1 -0
  93. package/dist/{providers/images/openrouter.js → api/openrouter-images.js} +5 -15
  94. package/dist/api/openrouter-images.js.map +1 -0
  95. package/dist/api/openrouter-images.lazy.d.ts +3 -0
  96. package/dist/api/openrouter-images.lazy.d.ts.map +1 -0
  97. package/dist/api/openrouter-images.lazy.js +4 -0
  98. package/dist/api/openrouter-images.lazy.js.map +1 -0
  99. package/dist/api/simple-options.d.ts.map +1 -0
  100. package/dist/api/simple-options.js.map +1 -0
  101. package/dist/api/transform-messages.d.ts.map +1 -0
  102. package/dist/api/transform-messages.js.map +1 -0
  103. package/dist/auth/context.d.ts +7 -0
  104. package/dist/auth/context.d.ts.map +1 -0
  105. package/dist/auth/context.js +42 -0
  106. package/dist/auth/context.js.map +1 -0
  107. package/dist/auth/credential-store.d.ts +16 -0
  108. package/dist/auth/credential-store.d.ts.map +1 -0
  109. package/dist/auth/credential-store.js +37 -0
  110. package/dist/auth/credential-store.js.map +1 -0
  111. package/dist/auth/helpers.d.ts +20 -0
  112. package/dist/auth/helpers.d.ts.map +1 -0
  113. package/dist/auth/helpers.js +46 -0
  114. package/dist/auth/helpers.js.map +1 -0
  115. package/dist/auth/resolve.d.ts +26 -0
  116. package/dist/auth/resolve.d.ts.map +1 -0
  117. package/dist/auth/resolve.js +101 -0
  118. package/dist/auth/resolve.js.map +1 -0
  119. package/dist/auth/types.d.ts +180 -0
  120. package/dist/auth/types.d.ts.map +1 -0
  121. package/dist/auth/types.js +2 -0
  122. package/dist/auth/types.js.map +1 -0
  123. package/dist/bedrock-provider.d.ts +2 -4
  124. package/dist/bedrock-provider.d.ts.map +1 -1
  125. package/dist/bedrock-provider.js +3 -4
  126. package/dist/bedrock-provider.js.map +1 -1
  127. package/dist/compat.d.ts +65 -0
  128. package/dist/compat.d.ts.map +1 -0
  129. package/dist/compat.js +182 -0
  130. package/dist/compat.js.map +1 -0
  131. package/dist/images-api-registry.d.ts +0 -1
  132. package/dist/images-api-registry.d.ts.map +1 -1
  133. package/dist/images-api-registry.js +0 -3
  134. package/dist/images-api-registry.js.map +1 -1
  135. package/dist/images-models.d.ts +93 -0
  136. package/dist/images-models.d.ts.map +1 -0
  137. package/dist/images-models.js +141 -0
  138. package/dist/images-models.js.map +1 -0
  139. package/dist/images.d.ts +1 -0
  140. package/dist/images.d.ts.map +1 -1
  141. package/dist/images.js +1 -0
  142. package/dist/images.js.map +1 -1
  143. package/dist/index.d.ts +29 -2
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/index.js +17 -4
  146. package/dist/index.js.map +1 -1
  147. package/dist/legacy-api-aliases.d.ts +42 -0
  148. package/dist/legacy-api-aliases.d.ts.map +1 -0
  149. package/dist/legacy-api-aliases.js +49 -0
  150. package/dist/legacy-api-aliases.js.map +1 -0
  151. package/dist/models.d.ts +133 -9
  152. package/dist/models.d.ts.map +1 -1
  153. package/dist/models.generated.d.ts +1766 -156
  154. package/dist/models.generated.d.ts.map +1 -1
  155. package/dist/models.generated.js +70 -17172
  156. package/dist/models.generated.js.map +1 -1
  157. package/dist/models.js +181 -17
  158. package/dist/models.js.map +1 -1
  159. package/dist/providers/all.d.ts +21 -0
  160. package/dist/providers/all.d.ts.map +1 -0
  161. package/dist/providers/all.js +114 -0
  162. package/dist/providers/all.js.map +1 -0
  163. package/dist/providers/amazon-bedrock.d.ts +2 -38
  164. package/dist/providers/amazon-bedrock.d.ts.map +1 -1
  165. package/dist/providers/amazon-bedrock.js +35 -865
  166. package/dist/providers/amazon-bedrock.js.map +1 -1
  167. package/dist/providers/amazon-bedrock.models.d.ts +1718 -0
  168. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -0
  169. package/dist/providers/amazon-bedrock.models.js +1675 -0
  170. package/dist/providers/amazon-bedrock.models.js.map +1 -0
  171. package/dist/providers/ant-ling.d.ts +3 -0
  172. package/dist/providers/ant-ling.d.ts.map +1 -0
  173. package/dist/providers/ant-ling.js +15 -0
  174. package/dist/providers/ant-ling.js.map +1 -0
  175. package/dist/providers/ant-ling.models.d.ts +86 -0
  176. package/dist/providers/ant-ling.models.d.ts.map +1 -0
  177. package/dist/providers/ant-ling.models.js +60 -0
  178. package/dist/providers/ant-ling.models.js.map +1 -0
  179. package/dist/providers/anthropic.d.ts +2 -71
  180. package/dist/providers/anthropic.d.ts.map +1 -1
  181. package/dist/providers/anthropic.js +17 -973
  182. package/dist/providers/anthropic.js.map +1 -1
  183. package/dist/providers/anthropic.models.d.ts +458 -0
  184. package/dist/providers/anthropic.models.d.ts.map +1 -0
  185. package/dist/providers/anthropic.models.js +439 -0
  186. package/dist/providers/anthropic.models.js.map +1 -0
  187. package/dist/providers/azure-openai-responses.d.ts +2 -15
  188. package/dist/providers/azure-openai-responses.d.ts.map +1 -1
  189. package/dist/providers/azure-openai-responses.js +11 -230
  190. package/dist/providers/azure-openai-responses.js.map +1 -1
  191. package/dist/providers/azure-openai-responses.models.d.ts +804 -0
  192. package/dist/providers/azure-openai-responses.models.d.ts.map +1 -0
  193. package/dist/providers/azure-openai-responses.models.js +743 -0
  194. package/dist/providers/azure-openai-responses.models.js.map +1 -0
  195. package/dist/providers/cerebras.d.ts +3 -0
  196. package/dist/providers/cerebras.d.ts.map +1 -0
  197. package/dist/providers/cerebras.js +15 -0
  198. package/dist/providers/cerebras.js.map +1 -0
  199. package/dist/providers/cerebras.models.d.ts +45 -0
  200. package/dist/providers/cerebras.models.d.ts.map +1 -0
  201. package/dist/providers/cerebras.models.js +41 -0
  202. package/dist/providers/cerebras.models.js.map +1 -0
  203. package/dist/providers/cloudflare-ai-gateway.d.ts +3 -0
  204. package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -0
  205. package/dist/providers/cloudflare-ai-gateway.js +20 -0
  206. package/dist/providers/cloudflare-ai-gateway.js.map +1 -0
  207. package/dist/providers/cloudflare-ai-gateway.models.d.ts +765 -0
  208. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -0
  209. package/dist/providers/cloudflare-ai-gateway.models.js +666 -0
  210. package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -0
  211. package/dist/providers/cloudflare-auth.d.ts +4 -0
  212. package/dist/providers/cloudflare-auth.d.ts.map +1 -0
  213. package/dist/providers/cloudflare-auth.js +85 -0
  214. package/dist/providers/cloudflare-auth.js.map +1 -0
  215. package/dist/providers/cloudflare-workers-ai.d.ts +3 -0
  216. package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -0
  217. package/dist/providers/cloudflare-workers-ai.js +14 -0
  218. package/dist/providers/cloudflare-workers-ai.js.map +1 -0
  219. package/dist/providers/cloudflare-workers-ai.models.d.ts +302 -0
  220. package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -0
  221. package/dist/providers/cloudflare-workers-ai.models.js +239 -0
  222. package/dist/providers/cloudflare-workers-ai.models.js.map +1 -0
  223. package/dist/providers/deepseek.d.ts +3 -0
  224. package/dist/providers/deepseek.d.ts.map +1 -0
  225. package/dist/providers/deepseek.js +15 -0
  226. package/dist/providers/deepseek.js.map +1 -0
  227. package/dist/providers/deepseek.models.d.ts +63 -0
  228. package/dist/providers/deepseek.models.d.ts.map +1 -0
  229. package/dist/providers/deepseek.models.js +43 -0
  230. package/dist/providers/deepseek.models.js.map +1 -0
  231. package/dist/providers/faux.d.ts +43 -2
  232. package/dist/providers/faux.d.ts.map +1 -1
  233. package/dist/providers/faux.js +34 -7
  234. package/dist/providers/faux.js.map +1 -1
  235. package/dist/providers/fireworks.d.ts +3 -0
  236. package/dist/providers/fireworks.d.ts.map +1 -0
  237. package/dist/providers/fireworks.js +19 -0
  238. package/dist/providers/fireworks.js.map +1 -0
  239. package/dist/providers/fireworks.models.d.ts +353 -0
  240. package/dist/providers/fireworks.models.d.ts.map +1 -0
  241. package/dist/providers/fireworks.models.js +276 -0
  242. package/dist/providers/fireworks.models.js.map +1 -0
  243. package/dist/providers/github-copilot.d.ts +3 -0
  244. package/dist/providers/github-copilot.d.ts.map +1 -0
  245. package/dist/providers/github-copilot.js +25 -0
  246. package/dist/providers/github-copilot.js.map +1 -0
  247. package/dist/providers/github-copilot.models.d.ts +616 -0
  248. package/dist/providers/github-copilot.models.d.ts.map +1 -0
  249. package/dist/providers/github-copilot.models.js +426 -0
  250. package/dist/providers/github-copilot.models.js.map +1 -0
  251. package/dist/providers/google-vertex.d.ts +2 -15
  252. package/dist/providers/google-vertex.d.ts.map +1 -1
  253. package/dist/providers/google-vertex.js +30 -455
  254. package/dist/providers/google-vertex.js.map +1 -1
  255. package/dist/providers/google-vertex.models.d.ts +202 -0
  256. package/dist/providers/google-vertex.models.d.ts.map +1 -0
  257. package/dist/providers/google-vertex.models.js +182 -0
  258. package/dist/providers/google-vertex.models.js.map +1 -0
  259. package/dist/providers/google.d.ts +2 -13
  260. package/dist/providers/google.d.ts.map +1 -1
  261. package/dist/providers/google.js +12 -408
  262. package/dist/providers/google.js.map +1 -1
  263. package/dist/providers/google.models.d.ts +328 -0
  264. package/dist/providers/google.models.d.ts.map +1 -0
  265. package/dist/providers/google.models.js +288 -0
  266. package/dist/providers/google.models.js.map +1 -0
  267. package/dist/providers/groq.d.ts +3 -0
  268. package/dist/providers/groq.d.ts.map +1 -0
  269. package/dist/providers/groq.js +15 -0
  270. package/dist/providers/groq.js.map +1 -0
  271. package/dist/providers/groq.models.d.ts +128 -0
  272. package/dist/providers/groq.models.d.ts.map +1 -0
  273. package/dist/providers/groq.models.js +125 -0
  274. package/dist/providers/groq.models.js.map +1 -0
  275. package/dist/providers/huggingface.d.ts +3 -0
  276. package/dist/providers/huggingface.d.ts.map +1 -0
  277. package/dist/providers/huggingface.js +15 -0
  278. package/dist/providers/huggingface.js.map +1 -0
  279. package/dist/providers/huggingface.models.d.ts +883 -0
  280. package/dist/providers/huggingface.models.d.ts.map +1 -0
  281. package/dist/providers/huggingface.models.js +797 -0
  282. package/dist/providers/huggingface.models.js.map +1 -0
  283. package/dist/providers/images/{openrouter.d.ts → register-builtins.d.ts} +2 -2
  284. package/dist/providers/images/register-builtins.d.ts.map +1 -0
  285. package/dist/providers/images/register-builtins.js +34 -0
  286. package/dist/providers/images/register-builtins.js.map +1 -0
  287. package/dist/providers/kimi-coding.d.ts +3 -0
  288. package/dist/providers/kimi-coding.d.ts.map +1 -0
  289. package/dist/providers/kimi-coding.js +15 -0
  290. package/dist/providers/kimi-coding.js.map +1 -0
  291. package/dist/providers/kimi-coding.models.d.ts +63 -0
  292. package/dist/providers/kimi-coding.models.d.ts.map +1 -0
  293. package/dist/providers/kimi-coding.models.js +59 -0
  294. package/dist/providers/kimi-coding.models.js.map +1 -0
  295. package/dist/providers/minimax-cn.d.ts +3 -0
  296. package/dist/providers/minimax-cn.d.ts.map +1 -0
  297. package/dist/providers/minimax-cn.js +15 -0
  298. package/dist/providers/minimax-cn.js.map +1 -0
  299. package/dist/providers/minimax-cn.models.d.ts +54 -0
  300. package/dist/providers/minimax-cn.models.d.ts.map +1 -0
  301. package/dist/providers/minimax-cn.models.js +56 -0
  302. package/dist/providers/minimax-cn.models.js.map +1 -0
  303. package/dist/providers/minimax.d.ts +3 -0
  304. package/dist/providers/minimax.d.ts.map +1 -0
  305. package/dist/providers/minimax.js +15 -0
  306. package/dist/providers/minimax.js.map +1 -0
  307. package/dist/providers/minimax.models.d.ts +54 -0
  308. package/dist/providers/minimax.models.d.ts.map +1 -0
  309. package/dist/providers/minimax.models.js +56 -0
  310. package/dist/providers/minimax.models.js.map +1 -0
  311. package/dist/providers/mistral.d.ts +2 -25
  312. package/dist/providers/mistral.d.ts.map +1 -1
  313. package/dist/providers/mistral.js +12 -560
  314. package/dist/providers/mistral.js.map +1 -1
  315. package/dist/providers/mistral.models.d.ts +513 -0
  316. package/dist/providers/mistral.models.d.ts.map +1 -0
  317. package/dist/providers/mistral.models.js +515 -0
  318. package/dist/providers/mistral.models.js.map +1 -0
  319. package/dist/providers/moonshotai-cn.d.ts +3 -0
  320. package/dist/providers/moonshotai-cn.d.ts.map +1 -0
  321. package/dist/providers/moonshotai-cn.js +15 -0
  322. package/dist/providers/moonshotai-cn.js.map +1 -0
  323. package/dist/providers/moonshotai-cn.models.d.ts +234 -0
  324. package/dist/providers/moonshotai-cn.models.d.ts.map +1 -0
  325. package/dist/providers/moonshotai-cn.models.js +169 -0
  326. package/dist/providers/moonshotai-cn.models.js.map +1 -0
  327. package/dist/providers/moonshotai.d.ts +3 -0
  328. package/dist/providers/moonshotai.d.ts.map +1 -0
  329. package/dist/providers/moonshotai.js +15 -0
  330. package/dist/providers/moonshotai.js.map +1 -0
  331. package/dist/providers/moonshotai.models.d.ts +234 -0
  332. package/dist/providers/moonshotai.models.d.ts.map +1 -0
  333. package/dist/providers/moonshotai.models.js +169 -0
  334. package/dist/providers/moonshotai.models.js.map +1 -0
  335. package/dist/providers/nvidia.d.ts +3 -0
  336. package/dist/providers/nvidia.d.ts.map +1 -0
  337. package/dist/providers/nvidia.js +15 -0
  338. package/dist/providers/nvidia.js.map +1 -0
  339. package/dist/providers/nvidia.models.d.ts +535 -0
  340. package/dist/providers/nvidia.models.d.ts.map +1 -0
  341. package/dist/providers/nvidia.models.js +366 -0
  342. package/dist/providers/nvidia.models.js.map +1 -0
  343. package/dist/providers/openai-codex.d.ts +3 -0
  344. package/dist/providers/openai-codex.d.ts.map +1 -0
  345. package/dist/providers/openai-codex.js +18 -0
  346. package/dist/providers/openai-codex.js.map +1 -0
  347. package/dist/providers/openai-codex.models.d.ts +87 -0
  348. package/dist/providers/openai-codex.models.d.ts.map +1 -0
  349. package/dist/providers/openai-codex.models.js +77 -0
  350. package/dist/providers/openai-codex.models.js.map +1 -0
  351. package/dist/providers/openai.d.ts +3 -0
  352. package/dist/providers/openai.d.ts.map +1 -0
  353. package/dist/providers/openai.js +15 -0
  354. package/dist/providers/openai.js.map +1 -0
  355. package/dist/providers/openai.models.d.ts +805 -0
  356. package/dist/providers/openai.models.d.ts.map +1 -0
  357. package/dist/providers/openai.models.js +743 -0
  358. package/dist/providers/openai.models.js.map +1 -0
  359. package/dist/providers/opencode-go.d.ts +3 -0
  360. package/dist/providers/opencode-go.d.ts.map +1 -0
  361. package/dist/providers/opencode-go.js +18 -0
  362. package/dist/providers/opencode-go.js.map +1 -0
  363. package/dist/providers/opencode-go.models.d.ts +309 -0
  364. package/dist/providers/opencode-go.models.d.ts.map +1 -0
  365. package/dist/providers/opencode-go.models.js +240 -0
  366. package/dist/providers/opencode-go.models.js.map +1 -0
  367. package/dist/providers/opencode.d.ts +3 -0
  368. package/dist/providers/opencode.d.ts.map +1 -0
  369. package/dist/providers/opencode.js +22 -0
  370. package/dist/providers/opencode.js.map +1 -0
  371. package/dist/providers/opencode.models.d.ts +976 -0
  372. package/dist/providers/opencode.models.d.ts.map +1 -0
  373. package/dist/providers/opencode.models.js +815 -0
  374. package/dist/providers/opencode.models.js.map +1 -0
  375. package/dist/providers/openrouter-images.d.ts +3 -0
  376. package/dist/providers/openrouter-images.d.ts.map +1 -0
  377. package/dist/providers/openrouter-images.js +14 -0
  378. package/dist/providers/openrouter-images.js.map +1 -0
  379. package/dist/providers/openrouter.d.ts +3 -0
  380. package/dist/providers/openrouter.d.ts.map +1 -0
  381. package/dist/providers/openrouter.js +15 -0
  382. package/dist/providers/openrouter.js.map +1 -0
  383. package/dist/providers/openrouter.models.d.ts +5405 -0
  384. package/dist/providers/openrouter.models.d.ts.map +1 -0
  385. package/dist/providers/openrouter.models.js +4635 -0
  386. package/dist/providers/openrouter.models.js.map +1 -0
  387. package/dist/providers/together.d.ts +3 -0
  388. package/dist/providers/together.d.ts.map +1 -0
  389. package/dist/providers/together.js +15 -0
  390. package/dist/providers/together.js.map +1 -0
  391. package/dist/providers/together.models.d.ts +567 -0
  392. package/dist/providers/together.models.d.ts.map +1 -0
  393. package/dist/providers/together.models.js +361 -0
  394. package/dist/providers/together.models.js.map +1 -0
  395. package/dist/providers/vercel-ai-gateway.d.ts +3 -0
  396. package/dist/providers/vercel-ai-gateway.d.ts.map +1 -0
  397. package/dist/providers/vercel-ai-gateway.js +15 -0
  398. package/dist/providers/vercel-ai-gateway.js.map +1 -0
  399. package/dist/providers/vercel-ai-gateway.models.d.ts +2938 -0
  400. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -0
  401. package/dist/providers/vercel-ai-gateway.models.js +2897 -0
  402. package/dist/providers/vercel-ai-gateway.models.js.map +1 -0
  403. package/dist/providers/xai.d.ts +3 -0
  404. package/dist/providers/xai.d.ts.map +1 -0
  405. package/dist/providers/xai.js +15 -0
  406. package/dist/providers/xai.js.map +1 -0
  407. package/dist/providers/xai.models.d.ts +157 -0
  408. package/dist/providers/xai.models.d.ts.map +1 -0
  409. package/dist/providers/xai.models.js +131 -0
  410. package/dist/providers/xai.models.js.map +1 -0
  411. package/dist/providers/xiaomi-token-plan-ams.d.ts +3 -0
  412. package/dist/providers/xiaomi-token-plan-ams.d.ts.map +1 -0
  413. package/dist/providers/xiaomi-token-plan-ams.js +15 -0
  414. package/dist/providers/xiaomi-token-plan-ams.js.map +1 -0
  415. package/dist/providers/xiaomi-token-plan-ams.models.d.ts +108 -0
  416. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -0
  417. package/dist/providers/xiaomi-token-plan-ams.models.js +95 -0
  418. package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -0
  419. package/dist/providers/xiaomi-token-plan-cn.d.ts +3 -0
  420. package/dist/providers/xiaomi-token-plan-cn.d.ts.map +1 -0
  421. package/dist/providers/xiaomi-token-plan-cn.js +15 -0
  422. package/dist/providers/xiaomi-token-plan-cn.js.map +1 -0
  423. package/dist/providers/xiaomi-token-plan-cn.models.d.ts +108 -0
  424. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -0
  425. package/dist/providers/xiaomi-token-plan-cn.models.js +95 -0
  426. package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -0
  427. package/dist/providers/xiaomi-token-plan-sgp.d.ts +3 -0
  428. package/dist/providers/xiaomi-token-plan-sgp.d.ts.map +1 -0
  429. package/dist/providers/xiaomi-token-plan-sgp.js +15 -0
  430. package/dist/providers/xiaomi-token-plan-sgp.js.map +1 -0
  431. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +108 -0
  432. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -0
  433. package/dist/providers/xiaomi-token-plan-sgp.models.js +95 -0
  434. package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -0
  435. package/dist/providers/xiaomi.d.ts +3 -0
  436. package/dist/providers/xiaomi.d.ts.map +1 -0
  437. package/dist/providers/xiaomi.js +15 -0
  438. package/dist/providers/xiaomi.js.map +1 -0
  439. package/dist/providers/xiaomi.models.d.ts +129 -0
  440. package/dist/providers/xiaomi.models.d.ts.map +1 -0
  441. package/dist/providers/xiaomi.models.js +113 -0
  442. package/dist/providers/xiaomi.models.js.map +1 -0
  443. package/dist/providers/zai-coding-cn.d.ts +3 -0
  444. package/dist/providers/zai-coding-cn.d.ts.map +1 -0
  445. package/dist/providers/zai-coding-cn.js +15 -0
  446. package/dist/providers/zai-coding-cn.js.map +1 -0
  447. package/dist/providers/zai-coding-cn.models.d.ts +153 -0
  448. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -0
  449. package/dist/providers/zai-coding-cn.models.js +114 -0
  450. package/dist/providers/zai-coding-cn.models.js.map +1 -0
  451. package/dist/providers/zai.d.ts +3 -0
  452. package/dist/providers/zai.d.ts.map +1 -0
  453. package/dist/providers/zai.js +15 -0
  454. package/dist/providers/zai.js.map +1 -0
  455. package/dist/providers/zai.models.d.ts +153 -0
  456. package/dist/providers/zai.models.d.ts.map +1 -0
  457. package/dist/providers/zai.models.js +114 -0
  458. package/dist/providers/zai.models.js.map +1 -0
  459. package/dist/types.d.ts +67 -8
  460. package/dist/types.d.ts.map +1 -1
  461. package/dist/types.js.map +1 -1
  462. package/dist/utils/headers.d.ts +2 -0
  463. package/dist/utils/headers.d.ts.map +1 -1
  464. package/dist/utils/headers.js +10 -0
  465. package/dist/utils/headers.js.map +1 -1
  466. package/dist/utils/oauth/anthropic.d.ts +2 -0
  467. package/dist/utils/oauth/anthropic.d.ts.map +1 -1
  468. package/dist/utils/oauth/anthropic.js +31 -0
  469. package/dist/utils/oauth/anthropic.js.map +1 -1
  470. package/dist/utils/oauth/github-copilot.d.ts +2 -0
  471. package/dist/utils/oauth/github-copilot.d.ts.map +1 -1
  472. package/dist/utils/oauth/github-copilot.js +33 -2
  473. package/dist/utils/oauth/github-copilot.js.map +1 -1
  474. package/dist/utils/oauth/load.d.ts +5 -0
  475. package/dist/utils/oauth/load.d.ts.map +1 -0
  476. package/dist/utils/oauth/load.js +22 -0
  477. package/dist/utils/oauth/load.js.map +1 -0
  478. package/dist/utils/oauth/openai-codex.d.ts +2 -0
  479. package/dist/utils/oauth/openai-codex.d.ts.map +1 -1
  480. package/dist/utils/oauth/openai-codex.js +49 -0
  481. package/dist/utils/oauth/openai-codex.js.map +1 -1
  482. package/package.json +15 -42
  483. package/dist/api-registry.d.ts +0 -20
  484. package/dist/api-registry.d.ts.map +0 -1
  485. package/dist/api-registry.js +0 -44
  486. package/dist/api-registry.js.map +0 -1
  487. package/dist/base.d.ts +0 -30
  488. package/dist/base.d.ts.map +0 -1
  489. package/dist/base.js +0 -18
  490. package/dist/base.js.map +0 -1
  491. package/dist/providers/cloudflare.d.ts.map +0 -1
  492. package/dist/providers/cloudflare.js.map +0 -1
  493. package/dist/providers/github-copilot-headers.d.ts.map +0 -1
  494. package/dist/providers/github-copilot-headers.js.map +0 -1
  495. package/dist/providers/google-shared.d.ts.map +0 -1
  496. package/dist/providers/google-shared.js.map +0 -1
  497. package/dist/providers/images/openrouter.d.ts.map +0 -1
  498. package/dist/providers/images/openrouter.js.map +0 -1
  499. package/dist/providers/openai-codex-responses.d.ts.map +0 -1
  500. package/dist/providers/openai-codex-responses.js.map +0 -1
  501. package/dist/providers/openai-completions.d.ts.map +0 -1
  502. package/dist/providers/openai-completions.js.map +0 -1
  503. package/dist/providers/openai-prompt-cache.d.ts.map +0 -1
  504. package/dist/providers/openai-prompt-cache.js.map +0 -1
  505. package/dist/providers/openai-responses-shared.d.ts.map +0 -1
  506. package/dist/providers/openai-responses-shared.js.map +0 -1
  507. package/dist/providers/openai-responses.d.ts.map +0 -1
  508. package/dist/providers/openai-responses.js.map +0 -1
  509. package/dist/providers/register-builtins.d.ts +0 -37
  510. package/dist/providers/register-builtins.d.ts.map +0 -1
  511. package/dist/providers/register-builtins.js +0 -191
  512. package/dist/providers/register-builtins.js.map +0 -1
  513. package/dist/providers/simple-options.d.ts.map +0 -1
  514. package/dist/providers/simple-options.js.map +0 -1
  515. package/dist/providers/transform-messages.d.ts.map +0 -1
  516. package/dist/providers/transform-messages.js.map +0 -1
  517. package/dist/stream.d.ts +0 -6
  518. package/dist/stream.d.ts.map +0 -1
  519. package/dist/stream.js +0 -37
  520. package/dist/stream.js.map +0 -1
  521. /package/dist/{providers → api}/github-copilot-headers.d.ts +0 -0
  522. /package/dist/{providers → api}/github-copilot-headers.js +0 -0
  523. /package/dist/{providers → api}/google-shared.d.ts +0 -0
  524. /package/dist/{providers → api}/google-shared.js +0 -0
  525. /package/dist/{providers → api}/openai-prompt-cache.d.ts +0 -0
  526. /package/dist/{providers → api}/openai-prompt-cache.js +0 -0
  527. /package/dist/{providers → api}/openai-responses-shared.d.ts +0 -0
  528. /package/dist/{providers → api}/simple-options.d.ts +0 -0
  529. /package/dist/{providers → api}/simple-options.js +0 -0
  530. /package/dist/{providers → api}/transform-messages.d.ts +0 -0
  531. /package/dist/{providers → api}/transform-messages.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-responses.js","sourceRoot":"","sources":["../../src/providers/openai-responses.ts"],"names":[],"mappings":"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","sourcesContent":["import OpenAI from \"openai\";\nimport type { ResponseCreateParamsStreaming } from \"openai/resources/responses/responses.js\";\nimport { registerApiProvider } from \"../api-registry.ts\";\nimport { clampThinkingLevel } from \"../models.ts\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tCacheRetention,\n\tContext,\n\tModel,\n\tOpenAIResponsesCompat,\n\tProviderEnv,\n\tSimpleStreamOptions,\n\tStreamFunction,\n\tStreamOptions,\n\tUsage,\n} from \"../types.ts\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.ts\";\nimport { headersToRecord } from \"../utils/headers.ts\";\nimport { getProviderEnvValue } from \"../utils/provider-env.ts\";\nimport { isCloudflareProvider, resolveCloudflareBaseUrl } from \"./cloudflare.ts\";\nimport { buildCopilotDynamicHeaders, hasCopilotVisionInput } from \"./github-copilot-headers.ts\";\nimport { clampOpenAIPromptCacheKey } from \"./openai-prompt-cache.ts\";\nimport { convertResponsesMessages, convertResponsesTools, processResponsesStream } from \"./openai-responses-shared.ts\";\nimport { buildBaseOptions } from \"./simple-options.ts\";\n\nconst OPENAI_TOOL_CALL_PROVIDERS = new Set([\"openai\", \"openai-codex\", \"opencode\"]);\n\n/**\n * Resolve cache retention preference.\n * Defaults to \"short\" and uses PI_CACHE_RETENTION for backward compatibility.\n */\nfunction resolveCacheRetention(cacheRetention?: CacheRetention, env?: ProviderEnv): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (getProviderEnvValue(\"PI_CACHE_RETENTION\", env) === \"long\") {\n\t\treturn \"long\";\n\t}\n\treturn \"short\";\n}\n\nfunction getCompat(model: Model<\"openai-responses\">): Required<OpenAIResponsesCompat> {\n\treturn {\n\t\tsupportsDeveloperRole: model.compat?.supportsDeveloperRole ?? true,\n\t\tsendSessionIdHeader: model.compat?.sendSessionIdHeader ?? true,\n\t\tsupportsLongCacheRetention: model.compat?.supportsLongCacheRetention ?? true,\n\t};\n}\n\nfunction getPromptCacheRetention(\n\tcompat: Required<OpenAIResponsesCompat>,\n\tcacheRetention: CacheRetention,\n): \"24h\" | undefined {\n\treturn cacheRetention === \"long\" && compat.supportsLongCacheRetention ? \"24h\" : undefined;\n}\n\nfunction formatOpenAIResponsesError(error: unknown): string {\n\tif (error instanceof Error) {\n\t\tconst status = (error as Error & { status?: unknown }).status;\n\t\tconst statusCode = typeof status === \"number\" ? status : undefined;\n\t\tif (statusCode !== undefined) {\n\t\t\treturn `OpenAI API error (${statusCode}): ${error.message}`;\n\t\t}\n\t\treturn error.message;\n\t}\n\ttry {\n\t\treturn JSON.stringify(error);\n\t} catch {\n\t\treturn String(error);\n\t}\n}\n\n// OpenAI Responses-specific options\nexport interface OpenAIResponsesOptions extends StreamOptions {\n\treasoningEffort?: \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\treasoningSummary?: \"auto\" | \"detailed\" | \"concise\" | null;\n\tserviceTier?: ResponseCreateParamsStreaming[\"service_tier\"];\n}\n\n/**\n * Generate function for OpenAI Responses API\n */\nexport const streamOpenAIResponses: StreamFunction<\"openai-responses\", OpenAIResponsesOptions> = (\n\tmodel: Model<\"openai-responses\">,\n\tcontext: Context,\n\toptions?: OpenAIResponsesOptions,\n): AssistantMessageEventStream => {\n\tconst stream = new AssistantMessageEventStream();\n\n\t// Start async processing\n\t(async () => {\n\t\tconst output: AssistantMessage = {\n\t\t\trole: \"assistant\",\n\t\t\tcontent: [],\n\t\t\tapi: model.api as Api,\n\t\t\tprovider: model.provider,\n\t\t\tmodel: model.id,\n\t\t\tusage: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t\ttotalTokens: 0,\n\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t},\n\t\t\tstopReason: \"stop\",\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\n\t\ttry {\n\t\t\t// Create OpenAI client\n\t\t\tconst apiKey = options?.apiKey;\n\t\t\tif (!apiKey) {\n\t\t\t\tthrow new Error(`No API key for provider: ${model.provider}`);\n\t\t\t}\n\t\t\tconst cacheRetention = resolveCacheRetention(options?.cacheRetention, options?.env);\n\t\t\tconst cacheSessionId = cacheRetention === \"none\" ? undefined : options?.sessionId;\n\t\t\tconst client = createClient(model, context, apiKey, options?.headers, cacheSessionId, options?.env);\n\t\t\tlet params = buildParams(model, context, options);\n\t\t\tconst nextParams = await options?.onPayload?.(params, model);\n\t\t\tif (nextParams !== undefined) {\n\t\t\t\tparams = nextParams as ResponseCreateParamsStreaming;\n\t\t\t}\n\t\t\tconst requestOptions = {\n\t\t\t\t...(options?.signal ? { signal: options.signal } : {}),\n\t\t\t\t...(options?.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),\n\t\t\t\tmaxRetries: options?.maxRetries ?? 0,\n\t\t\t};\n\t\t\tconst { data: openaiStream, response } = await client.responses.create(params, requestOptions).withResponse();\n\t\t\tawait options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);\n\t\t\tstream.push({ type: \"start\", partial: output });\n\n\t\t\tawait processResponsesStream(openaiStream, output, stream, model, {\n\t\t\t\tserviceTier: options?.serviceTier,\n\t\t\t\tapplyServiceTierPricing: (usage, serviceTier) => applyServiceTierPricing(usage, serviceTier, model),\n\t\t\t});\n\n\t\t\tif (options?.signal?.aborted) {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\n\t\t\tif (output.stopReason === \"aborted\" || output.stopReason === \"error\") {\n\t\t\t\tthrow new Error(\"An unknown error occurred\");\n\t\t\t}\n\n\t\t\tstream.push({ type: \"done\", reason: output.stopReason, message: output });\n\t\t\tstream.end();\n\t\t} catch (error) {\n\t\t\tfor (const block of output.content) {\n\t\t\t\tdelete (block as { index?: number }).index;\n\t\t\t\t// partialJson is only a streaming scratch buffer; never persist it.\n\t\t\t\tdelete (block as { partialJson?: string }).partialJson;\n\t\t\t}\n\t\t\toutput.stopReason = options?.signal?.aborted ? \"aborted\" : \"error\";\n\t\t\toutput.errorMessage = formatOpenAIResponsesError(error);\n\t\t\tstream.push({ type: \"error\", reason: output.stopReason, error: output });\n\t\t\tstream.end();\n\t\t}\n\t})();\n\n\treturn stream;\n};\n\nexport const streamSimpleOpenAIResponses: StreamFunction<\"openai-responses\", SimpleStreamOptions> = (\n\tmodel: Model<\"openai-responses\">,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream => {\n\tconst apiKey = options?.apiKey;\n\tif (!apiKey) {\n\t\tthrow new Error(`No API key for provider: ${model.provider}`);\n\t}\n\n\tconst base = buildBaseOptions(model, options, apiKey);\n\tconst clampedReasoning = options?.reasoning ? clampThinkingLevel(model, options.reasoning) : undefined;\n\tconst reasoningEffort = clampedReasoning === \"off\" ? undefined : clampedReasoning;\n\n\treturn streamOpenAIResponses(model, context, {\n\t\t...base,\n\t\treasoningEffort,\n\t} satisfies OpenAIResponsesOptions);\n};\n\nexport function register(): void {\n\tregisterApiProvider({\n\t\tapi: \"openai-responses\",\n\t\tstream: streamOpenAIResponses,\n\t\tstreamSimple: streamSimpleOpenAIResponses,\n\t});\n}\n\nfunction createClient(\n\tmodel: Model<\"openai-responses\">,\n\tcontext: Context,\n\tapiKey: string,\n\toptionsHeaders?: Record<string, string>,\n\tsessionId?: string,\n\tenv?: ProviderEnv,\n) {\n\tconst compat = getCompat(model);\n\tconst headers = { ...model.headers };\n\tif (model.provider === \"github-copilot\") {\n\t\tconst hasImages = hasCopilotVisionInput(context.messages);\n\t\tconst copilotHeaders = buildCopilotDynamicHeaders({\n\t\t\tmessages: context.messages,\n\t\t\thasImages,\n\t\t});\n\t\tObject.assign(headers, copilotHeaders);\n\t}\n\n\tif (sessionId) {\n\t\tif (compat.sendSessionIdHeader) {\n\t\t\theaders.session_id = sessionId;\n\t\t}\n\t\theaders[\"x-client-request-id\"] = sessionId;\n\t}\n\n\t// Merge options headers last so they can override defaults\n\tif (optionsHeaders) {\n\t\tObject.assign(headers, optionsHeaders);\n\t}\n\n\tconst defaultHeaders =\n\t\tmodel.provider === \"cloudflare-ai-gateway\"\n\t\t\t? {\n\t\t\t\t\t...headers,\n\t\t\t\t\tAuthorization: headers.Authorization ?? null,\n\t\t\t\t\t\"cf-aig-authorization\": `Bearer ${apiKey}`,\n\t\t\t\t}\n\t\t\t: headers;\n\n\treturn new OpenAI({\n\t\tapiKey,\n\t\tbaseURL: isCloudflareProvider(model.provider) ? resolveCloudflareBaseUrl(model, env) : model.baseUrl,\n\t\tdangerouslyAllowBrowser: true,\n\t\tdefaultHeaders,\n\t});\n}\n\nfunction buildParams(model: Model<\"openai-responses\">, context: Context, options?: OpenAIResponsesOptions) {\n\tconst messages = convertResponsesMessages(model, context, OPENAI_TOOL_CALL_PROVIDERS);\n\n\tconst cacheRetention = resolveCacheRetention(options?.cacheRetention, options?.env);\n\tconst compat = getCompat(model);\n\tconst params: ResponseCreateParamsStreaming = {\n\t\tmodel: model.id,\n\t\tinput: messages,\n\t\tstream: true,\n\t\tprompt_cache_key: cacheRetention === \"none\" ? undefined : clampOpenAIPromptCacheKey(options?.sessionId),\n\t\tprompt_cache_retention: getPromptCacheRetention(compat, cacheRetention),\n\t\tstore: false,\n\t};\n\n\tif (options?.maxTokens) {\n\t\tparams.max_output_tokens = options?.maxTokens;\n\t}\n\n\tif (options?.temperature !== undefined) {\n\t\tparams.temperature = options?.temperature;\n\t}\n\n\tif (options?.serviceTier !== undefined) {\n\t\tparams.service_tier = options.serviceTier;\n\t}\n\n\tif (context.tools && context.tools.length > 0) {\n\t\tparams.tools = convertResponsesTools(context.tools);\n\t}\n\n\tif (model.reasoning) {\n\t\tif (options?.reasoningEffort || options?.reasoningSummary) {\n\t\t\tconst effort = options?.reasoningEffort\n\t\t\t\t? (model.thinkingLevelMap?.[options.reasoningEffort] ?? options.reasoningEffort)\n\t\t\t\t: \"medium\";\n\t\t\tparams.reasoning = {\n\t\t\t\teffort: effort as NonNullable<typeof params.reasoning>[\"effort\"],\n\t\t\t\tsummary: options?.reasoningSummary || \"auto\",\n\t\t\t};\n\t\t\tparams.include = [\"reasoning.encrypted_content\"];\n\t\t} else if (model.provider !== \"github-copilot\" && model.thinkingLevelMap?.off !== null) {\n\t\t\tparams.reasoning = {\n\t\t\t\teffort: (model.thinkingLevelMap?.off ?? \"none\") as NonNullable<typeof params.reasoning>[\"effort\"],\n\t\t\t};\n\t\t}\n\t}\n\n\treturn params;\n}\n\nfunction getServiceTierCostMultiplier(\n\tmodel: Pick<Model<\"openai-responses\">, \"id\">,\n\tserviceTier: ResponseCreateParamsStreaming[\"service_tier\"] | undefined,\n): number {\n\tswitch (serviceTier) {\n\t\tcase \"flex\":\n\t\t\treturn 0.5;\n\t\tcase \"priority\":\n\t\t\treturn model.id === \"gpt-5.5\" ? 2.5 : 2;\n\t\tdefault:\n\t\t\treturn 1;\n\t}\n}\n\nfunction applyServiceTierPricing(\n\tusage: Usage,\n\tserviceTier: ResponseCreateParamsStreaming[\"service_tier\"] | undefined,\n\tmodel: Pick<Model<\"openai-responses\">, \"id\">,\n) {\n\tconst multiplier = getServiceTierCostMultiplier(model, serviceTier);\n\tif (multiplier === 1) return;\n\n\tusage.cost.input *= multiplier;\n\tusage.cost.output *= multiplier;\n\tusage.cost.cacheRead *= multiplier;\n\tusage.cost.cacheWrite *= multiplier;\n\tusage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n}\n"]}
@@ -1,37 +0,0 @@
1
- import type { ImagesOptions, SimpleStreamOptions, StreamFunction } from "../types.ts";
2
- import type { BedrockOptions } from "./amazon-bedrock.ts";
3
- import type { AnthropicOptions } from "./anthropic.ts";
4
- import type { AzureOpenAIResponsesOptions } from "./azure-openai-responses.ts";
5
- import type { GoogleOptions } from "./google.ts";
6
- import type { GoogleVertexOptions } from "./google-vertex.ts";
7
- import type { MistralOptions } from "./mistral.ts";
8
- import type { OpenAICodexResponsesOptions } from "./openai-codex-responses.ts";
9
- import type { OpenAICompletionsOptions } from "./openai-completions.ts";
10
- import type { OpenAIResponsesOptions } from "./openai-responses.ts";
11
- interface BedrockProviderModule {
12
- streamBedrock: StreamFunction<"bedrock-converse-stream", BedrockOptions>;
13
- streamSimpleBedrock: StreamFunction<"bedrock-converse-stream", SimpleStreamOptions>;
14
- }
15
- export declare function setBedrockProviderModule(module: BedrockProviderModule): void;
16
- export declare const generateImagesOpenRouter: import("../types.ts").ImagesFunction<"openrouter-images", ImagesOptions>;
17
- export declare const streamAnthropic: StreamFunction<"anthropic-messages", AnthropicOptions>;
18
- export declare const streamSimpleAnthropic: StreamFunction<"anthropic-messages", SimpleStreamOptions>;
19
- export declare const streamAzureOpenAIResponses: StreamFunction<"azure-openai-responses", AzureOpenAIResponsesOptions>;
20
- export declare const streamSimpleAzureOpenAIResponses: StreamFunction<"azure-openai-responses", SimpleStreamOptions>;
21
- export declare const streamGoogle: StreamFunction<"google-generative-ai", GoogleOptions>;
22
- export declare const streamSimpleGoogle: StreamFunction<"google-generative-ai", SimpleStreamOptions>;
23
- export declare const streamGoogleVertex: StreamFunction<"google-vertex", GoogleVertexOptions>;
24
- export declare const streamSimpleGoogleVertex: StreamFunction<"google-vertex", SimpleStreamOptions>;
25
- export declare const streamMistral: StreamFunction<"mistral-conversations", MistralOptions>;
26
- export declare const streamSimpleMistral: StreamFunction<"mistral-conversations", SimpleStreamOptions>;
27
- export declare const streamOpenAICodexResponses: StreamFunction<"openai-codex-responses", OpenAICodexResponsesOptions>;
28
- export declare const streamSimpleOpenAICodexResponses: StreamFunction<"openai-codex-responses", SimpleStreamOptions>;
29
- export declare const streamOpenAICompletions: StreamFunction<"openai-completions", OpenAICompletionsOptions>;
30
- export declare const streamSimpleOpenAICompletions: StreamFunction<"openai-completions", SimpleStreamOptions>;
31
- export declare const streamOpenAIResponses: StreamFunction<"openai-responses", OpenAIResponsesOptions>;
32
- export declare const streamSimpleOpenAIResponses: StreamFunction<"openai-responses", SimpleStreamOptions>;
33
- export declare function registerBuiltInImagesApiProviders(): void;
34
- export declare function registerBuiltInApiProviders(): void;
35
- export declare function resetApiProviders(): void;
36
- export {};
37
- //# sourceMappingURL=register-builtins.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"register-builtins.d.ts","sourceRoot":"","sources":["../../src/providers/register-builtins.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAQX,aAAa,EAEb,mBAAmB,EACnB,cAAc,EAEd,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAwCpE,UAAU,qBAAqB;IAC9B,aAAa,EAAE,cAAc,CAAC,yBAAyB,EAAE,cAAc,CAAC,CAAC;IACzE,mBAAmB,EAAE,cAAc,CAAC,yBAAyB,EAAE,mBAAmB,CAAC,CAAC;CACpF;AASD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAE5E;AA6JD,eAAO,MAAM,wBAAwB,0EAA0C,CAAC;AAChF,eAAO,MAAM,eAAe,wDAA2B,CAAC;AACxD,eAAO,MAAM,qBAAqB,2DAAiC,CAAC;AACpE,eAAO,MAAM,0BAA0B,uEAAsC,CAAC;AAC9E,eAAO,MAAM,gCAAgC,+DAA4C,CAAC;AAC1F,eAAO,MAAM,YAAY,uDAAwB,CAAC;AAClD,eAAO,MAAM,kBAAkB,6DAA8B,CAAC;AAC9D,eAAO,MAAM,kBAAkB,sDAA8B,CAAC;AAC9D,eAAO,MAAM,wBAAwB,sDAAoC,CAAC;AAC1E,eAAO,MAAM,aAAa,yDAAyB,CAAC;AACpD,eAAO,MAAM,mBAAmB,8DAA+B,CAAC;AAChE,eAAO,MAAM,0BAA0B,uEAAsC,CAAC;AAC9E,eAAO,MAAM,gCAAgC,+DAA4C,CAAC;AAC1F,eAAO,MAAM,uBAAuB,gEAAmC,CAAC;AACxE,eAAO,MAAM,6BAA6B,2DAAyC,CAAC;AACpF,eAAO,MAAM,qBAAqB,4DAAiC,CAAC;AACpE,eAAO,MAAM,2BAA2B,yDAAuC,CAAC;AAchF,wBAAgB,iCAAiC,IAAI,IAAI,CAExD;AAED,wBAAgB,2BAA2B,IAAI,IAAI,CAIlD;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC","sourcesContent":["import { type ApiProvider, clearApiProviders, getApiProvider, registerApiProvider } from \"../api-registry.ts\";\nimport { getImagesApiProvider, type ImagesApiProvider, registerImagesApiProvider } from \"../images-api-registry.ts\";\nimport type {\n\tApi,\n\tAssistantImages,\n\tAssistantMessage,\n\tAssistantMessageEvent,\n\tImagesApi,\n\tImagesContext,\n\tImagesModel,\n\tImagesOptions,\n\tModel,\n\tSimpleStreamOptions,\n\tStreamFunction,\n\tStreamOptions,\n} from \"../types.ts\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.ts\";\nimport type { BedrockOptions } from \"./amazon-bedrock.ts\";\nimport type { AnthropicOptions } from \"./anthropic.ts\";\nimport type { AzureOpenAIResponsesOptions } from \"./azure-openai-responses.ts\";\nimport type { GoogleOptions } from \"./google.ts\";\nimport type { GoogleVertexOptions } from \"./google-vertex.ts\";\nimport type { MistralOptions } from \"./mistral.ts\";\nimport type { OpenAICodexResponsesOptions } from \"./openai-codex-responses.ts\";\nimport type { OpenAICompletionsOptions } from \"./openai-completions.ts\";\nimport type { OpenAIResponsesOptions } from \"./openai-responses.ts\";\n\ninterface RegisteringProviderModule {\n\tregister(): void;\n}\n\nfunction createLazyLoadErrorImages(model: ImagesModel<\"openrouter-images\">, error: unknown): AssistantImages {\n\treturn {\n\t\tapi: model.api,\n\t\tprovider: model.provider,\n\t\tmodel: model.id,\n\t\toutput: [],\n\t\tstopReason: \"error\",\n\t\terrorMessage: error instanceof Error ? error.message : String(error),\n\t\ttimestamp: Date.now(),\n\t};\n}\n\nfunction createLazyImagesApiProvider<TApi extends ImagesApi, TOptions extends ImagesOptions>(\n\tapi: TApi,\n\tloadModule: () => Promise<RegisteringProviderModule>,\n): ImagesApiProvider<TApi, TOptions> {\n\treturn {\n\t\tapi,\n\t\tgenerateImages: async (model: ImagesModel<TApi>, context: ImagesContext, options?: TOptions) => {\n\t\t\ttry {\n\t\t\t\tconst module = await loadModule();\n\t\t\t\tmodule.register();\n\t\t\t\tconst provider = getImagesApiProvider(api);\n\t\t\t\tif (!provider) {\n\t\t\t\t\tthrow new Error(`No API provider registered for api: ${api}`);\n\t\t\t\t}\n\t\t\t\treturn await provider.generateImages(model, context, options);\n\t\t\t} catch (error) {\n\t\t\t\treturn createLazyLoadErrorImages(model as ImagesModel<\"openrouter-images\">, error);\n\t\t\t}\n\t\t},\n\t};\n}\n\ninterface BedrockProviderModule {\n\tstreamBedrock: StreamFunction<\"bedrock-converse-stream\", BedrockOptions>;\n\tstreamSimpleBedrock: StreamFunction<\"bedrock-converse-stream\", SimpleStreamOptions>;\n}\n\nconst importNodeOnlyProvider = (specifier: string): Promise<unknown> => {\n\tconst runtimeSpecifier = import.meta.url.endsWith(\".js\") ? specifier.replace(/\\.ts$/, \".js\") : specifier;\n\treturn import(runtimeSpecifier);\n};\n\nlet bedrockProviderModuleOverride: BedrockProviderModule | undefined;\n\nexport function setBedrockProviderModule(module: BedrockProviderModule): void {\n\tbedrockProviderModuleOverride = module;\n}\n\nfunction forwardStream(target: AssistantMessageEventStream, source: AsyncIterable<AssistantMessageEvent>): void {\n\t(async () => {\n\t\tfor await (const event of source) {\n\t\t\ttarget.push(event);\n\t\t}\n\t\ttarget.end();\n\t})();\n}\n\nfunction createLazyLoadErrorMessage<TApi extends Api>(model: Model<TApi>, error: unknown): AssistantMessage {\n\treturn {\n\t\trole: \"assistant\",\n\t\tcontent: [],\n\t\tapi: model.api,\n\t\tprovider: model.provider,\n\t\tmodel: model.id,\n\t\tusage: {\n\t\t\tinput: 0,\n\t\t\toutput: 0,\n\t\t\tcacheRead: 0,\n\t\t\tcacheWrite: 0,\n\t\t\ttotalTokens: 0,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t},\n\t\tstopReason: \"error\",\n\t\terrorMessage: error instanceof Error ? error.message : String(error),\n\t\ttimestamp: Date.now(),\n\t};\n}\n\nasync function loadAndRegisterProvider<TApi extends Api>(\n\tapi: TApi,\n\tloadModule: () => Promise<RegisteringProviderModule>,\n) {\n\tconst module = await loadModule();\n\tmodule.register();\n\tconst provider = getApiProvider(api);\n\tif (!provider) {\n\t\tthrow new Error(`No API provider registered for api: ${api}`);\n\t}\n\treturn provider;\n}\n\nfunction createLazyStream<TApi extends Api, TOptions extends StreamOptions>(\n\tapi: TApi,\n\tloadModule: () => Promise<RegisteringProviderModule>,\n): StreamFunction<TApi, TOptions> {\n\treturn (model, context, options) => {\n\t\tconst outer = new AssistantMessageEventStream();\n\n\t\tloadAndRegisterProvider(api, loadModule)\n\t\t\t.then((provider) => {\n\t\t\t\tconst inner = provider.stream(model, context, options);\n\t\t\t\tforwardStream(outer, inner);\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconst message = createLazyLoadErrorMessage(model, error);\n\t\t\t\touter.push({ type: \"error\", reason: \"error\", error: message });\n\t\t\t\touter.end(message);\n\t\t\t});\n\n\t\treturn outer;\n\t};\n}\n\nfunction createLazySimpleStream<TApi extends Api>(\n\tapi: TApi,\n\tloadModule: () => Promise<RegisteringProviderModule>,\n): StreamFunction<TApi, SimpleStreamOptions> {\n\treturn (model, context, options) => {\n\t\tconst outer = new AssistantMessageEventStream();\n\n\t\tloadAndRegisterProvider(api, loadModule)\n\t\t\t.then((provider) => {\n\t\t\t\tconst inner = provider.streamSimple(model, context, options);\n\t\t\t\tforwardStream(outer, inner);\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconst message = createLazyLoadErrorMessage(model, error);\n\t\t\t\touter.push({ type: \"error\", reason: \"error\", error: message });\n\t\t\t\touter.end(message);\n\t\t\t});\n\n\t\treturn outer;\n\t};\n}\n\nfunction createLazyApiProvider<TApi extends Api, TOptions extends StreamOptions>(\n\tapi: TApi,\n\tloadModule: () => Promise<RegisteringProviderModule>,\n): ApiProvider<TApi, TOptions> {\n\treturn {\n\t\tapi,\n\t\tstream: createLazyStream<TApi, TOptions>(api, loadModule),\n\t\tstreamSimple: createLazySimpleStream(api, loadModule),\n\t};\n}\n\nfunction registerBedrockProviderModule(module: BedrockProviderModule): void {\n\tregisterApiProvider({\n\t\tapi: \"bedrock-converse-stream\",\n\t\tstream: module.streamBedrock,\n\t\tstreamSimple: module.streamSimpleBedrock,\n\t});\n}\n\nfunction loadBedrockProviderModule(): Promise<RegisteringProviderModule> {\n\tconst module = bedrockProviderModuleOverride;\n\tif (module) {\n\t\treturn Promise.resolve({ register: () => registerBedrockProviderModule(module) });\n\t}\n\treturn importNodeOnlyProvider(\"./amazon-bedrock.ts\").then((provider) => provider as RegisteringProviderModule);\n}\n\nconst anthropicProvider = createLazyApiProvider<\"anthropic-messages\", AnthropicOptions>(\n\t\"anthropic-messages\",\n\t() => import(\"./anthropic.ts\"),\n);\nconst azureOpenAIResponsesProvider = createLazyApiProvider<\"azure-openai-responses\", AzureOpenAIResponsesOptions>(\n\t\"azure-openai-responses\",\n\t() => import(\"./azure-openai-responses.ts\"),\n);\nconst googleProvider = createLazyApiProvider<\"google-generative-ai\", GoogleOptions>(\n\t\"google-generative-ai\",\n\t() => import(\"./google.ts\"),\n);\nconst googleVertexProvider = createLazyApiProvider<\"google-vertex\", GoogleVertexOptions>(\n\t\"google-vertex\",\n\t() => import(\"./google-vertex.ts\"),\n);\nconst mistralProvider = createLazyApiProvider<\"mistral-conversations\", MistralOptions>(\n\t\"mistral-conversations\",\n\t() => import(\"./mistral.ts\"),\n);\nconst openAICodexResponsesProvider = createLazyApiProvider<\"openai-codex-responses\", OpenAICodexResponsesOptions>(\n\t\"openai-codex-responses\",\n\t() => import(\"./openai-codex-responses.ts\"),\n);\nconst openAICompletionsProvider = createLazyApiProvider<\"openai-completions\", OpenAICompletionsOptions>(\n\t\"openai-completions\",\n\t() => import(\"./openai-completions.ts\"),\n);\nconst openAIResponsesProvider = createLazyApiProvider<\"openai-responses\", OpenAIResponsesOptions>(\n\t\"openai-responses\",\n\t() => import(\"./openai-responses.ts\"),\n);\nconst bedrockProvider = createLazyApiProvider<\"bedrock-converse-stream\", BedrockOptions>(\n\t\"bedrock-converse-stream\",\n\tloadBedrockProviderModule,\n);\nconst openRouterImagesProvider = createLazyImagesApiProvider(\n\t\"openrouter-images\",\n\t() => import(\"./images/openrouter.ts\"),\n);\n\nexport const generateImagesOpenRouter = openRouterImagesProvider.generateImages;\nexport const streamAnthropic = anthropicProvider.stream;\nexport const streamSimpleAnthropic = anthropicProvider.streamSimple;\nexport const streamAzureOpenAIResponses = azureOpenAIResponsesProvider.stream;\nexport const streamSimpleAzureOpenAIResponses = azureOpenAIResponsesProvider.streamSimple;\nexport const streamGoogle = googleProvider.stream;\nexport const streamSimpleGoogle = googleProvider.streamSimple;\nexport const streamGoogleVertex = googleVertexProvider.stream;\nexport const streamSimpleGoogleVertex = googleVertexProvider.streamSimple;\nexport const streamMistral = mistralProvider.stream;\nexport const streamSimpleMistral = mistralProvider.streamSimple;\nexport const streamOpenAICodexResponses = openAICodexResponsesProvider.stream;\nexport const streamSimpleOpenAICodexResponses = openAICodexResponsesProvider.streamSimple;\nexport const streamOpenAICompletions = openAICompletionsProvider.stream;\nexport const streamSimpleOpenAICompletions = openAICompletionsProvider.streamSimple;\nexport const streamOpenAIResponses = openAIResponsesProvider.stream;\nexport const streamSimpleOpenAIResponses = openAIResponsesProvider.streamSimple;\n\nconst registerBuiltInApiProviderFunctions = [\n\t() => registerApiProvider(anthropicProvider),\n\t() => registerApiProvider(openAICompletionsProvider),\n\t() => registerApiProvider(mistralProvider),\n\t() => registerApiProvider(openAIResponsesProvider),\n\t() => registerApiProvider(azureOpenAIResponsesProvider),\n\t() => registerApiProvider(openAICodexResponsesProvider),\n\t() => registerApiProvider(googleProvider),\n\t() => registerApiProvider(googleVertexProvider),\n\t() => registerApiProvider(bedrockProvider),\n];\n\nexport function registerBuiltInImagesApiProviders(): void {\n\tregisterImagesApiProvider(openRouterImagesProvider);\n}\n\nexport function registerBuiltInApiProviders(): void {\n\tfor (const register of registerBuiltInApiProviderFunctions) {\n\t\tregister();\n\t}\n}\n\nexport function resetApiProviders(): void {\n\tclearApiProviders();\n\tregisterBuiltInApiProviders();\n}\n\nregisterBuiltInApiProviders();\n"]}
@@ -1,191 +0,0 @@
1
- var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
- if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
- return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
- return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
- });
6
- }
7
- return path;
8
- };
9
- import { clearApiProviders, getApiProvider, registerApiProvider } from "../api-registry.js";
10
- import { getImagesApiProvider, registerImagesApiProvider } from "../images-api-registry.js";
11
- import { AssistantMessageEventStream } from "../utils/event-stream.js";
12
- function createLazyLoadErrorImages(model, error) {
13
- return {
14
- api: model.api,
15
- provider: model.provider,
16
- model: model.id,
17
- output: [],
18
- stopReason: "error",
19
- errorMessage: error instanceof Error ? error.message : String(error),
20
- timestamp: Date.now(),
21
- };
22
- }
23
- function createLazyImagesApiProvider(api, loadModule) {
24
- return {
25
- api,
26
- generateImages: async (model, context, options) => {
27
- try {
28
- const module = await loadModule();
29
- module.register();
30
- const provider = getImagesApiProvider(api);
31
- if (!provider) {
32
- throw new Error(`No API provider registered for api: ${api}`);
33
- }
34
- return await provider.generateImages(model, context, options);
35
- }
36
- catch (error) {
37
- return createLazyLoadErrorImages(model, error);
38
- }
39
- },
40
- };
41
- }
42
- const importNodeOnlyProvider = (specifier) => {
43
- const runtimeSpecifier = import.meta.url.endsWith(".js") ? specifier.replace(/\.ts$/, ".js") : specifier;
44
- return import(__rewriteRelativeImportExtension(runtimeSpecifier));
45
- };
46
- let bedrockProviderModuleOverride;
47
- export function setBedrockProviderModule(module) {
48
- bedrockProviderModuleOverride = module;
49
- }
50
- function forwardStream(target, source) {
51
- (async () => {
52
- for await (const event of source) {
53
- target.push(event);
54
- }
55
- target.end();
56
- })();
57
- }
58
- function createLazyLoadErrorMessage(model, error) {
59
- return {
60
- role: "assistant",
61
- content: [],
62
- api: model.api,
63
- provider: model.provider,
64
- model: model.id,
65
- usage: {
66
- input: 0,
67
- output: 0,
68
- cacheRead: 0,
69
- cacheWrite: 0,
70
- totalTokens: 0,
71
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
72
- },
73
- stopReason: "error",
74
- errorMessage: error instanceof Error ? error.message : String(error),
75
- timestamp: Date.now(),
76
- };
77
- }
78
- async function loadAndRegisterProvider(api, loadModule) {
79
- const module = await loadModule();
80
- module.register();
81
- const provider = getApiProvider(api);
82
- if (!provider) {
83
- throw new Error(`No API provider registered for api: ${api}`);
84
- }
85
- return provider;
86
- }
87
- function createLazyStream(api, loadModule) {
88
- return (model, context, options) => {
89
- const outer = new AssistantMessageEventStream();
90
- loadAndRegisterProvider(api, loadModule)
91
- .then((provider) => {
92
- const inner = provider.stream(model, context, options);
93
- forwardStream(outer, inner);
94
- })
95
- .catch((error) => {
96
- const message = createLazyLoadErrorMessage(model, error);
97
- outer.push({ type: "error", reason: "error", error: message });
98
- outer.end(message);
99
- });
100
- return outer;
101
- };
102
- }
103
- function createLazySimpleStream(api, loadModule) {
104
- return (model, context, options) => {
105
- const outer = new AssistantMessageEventStream();
106
- loadAndRegisterProvider(api, loadModule)
107
- .then((provider) => {
108
- const inner = provider.streamSimple(model, context, options);
109
- forwardStream(outer, inner);
110
- })
111
- .catch((error) => {
112
- const message = createLazyLoadErrorMessage(model, error);
113
- outer.push({ type: "error", reason: "error", error: message });
114
- outer.end(message);
115
- });
116
- return outer;
117
- };
118
- }
119
- function createLazyApiProvider(api, loadModule) {
120
- return {
121
- api,
122
- stream: createLazyStream(api, loadModule),
123
- streamSimple: createLazySimpleStream(api, loadModule),
124
- };
125
- }
126
- function registerBedrockProviderModule(module) {
127
- registerApiProvider({
128
- api: "bedrock-converse-stream",
129
- stream: module.streamBedrock,
130
- streamSimple: module.streamSimpleBedrock,
131
- });
132
- }
133
- function loadBedrockProviderModule() {
134
- const module = bedrockProviderModuleOverride;
135
- if (module) {
136
- return Promise.resolve({ register: () => registerBedrockProviderModule(module) });
137
- }
138
- return importNodeOnlyProvider("./amazon-bedrock.ts").then((provider) => provider);
139
- }
140
- const anthropicProvider = createLazyApiProvider("anthropic-messages", () => import("./anthropic.js"));
141
- const azureOpenAIResponsesProvider = createLazyApiProvider("azure-openai-responses", () => import("./azure-openai-responses.js"));
142
- const googleProvider = createLazyApiProvider("google-generative-ai", () => import("./google.js"));
143
- const googleVertexProvider = createLazyApiProvider("google-vertex", () => import("./google-vertex.js"));
144
- const mistralProvider = createLazyApiProvider("mistral-conversations", () => import("./mistral.js"));
145
- const openAICodexResponsesProvider = createLazyApiProvider("openai-codex-responses", () => import("./openai-codex-responses.js"));
146
- const openAICompletionsProvider = createLazyApiProvider("openai-completions", () => import("./openai-completions.js"));
147
- const openAIResponsesProvider = createLazyApiProvider("openai-responses", () => import("./openai-responses.js"));
148
- const bedrockProvider = createLazyApiProvider("bedrock-converse-stream", loadBedrockProviderModule);
149
- const openRouterImagesProvider = createLazyImagesApiProvider("openrouter-images", () => import("./images/openrouter.js"));
150
- export const generateImagesOpenRouter = openRouterImagesProvider.generateImages;
151
- export const streamAnthropic = anthropicProvider.stream;
152
- export const streamSimpleAnthropic = anthropicProvider.streamSimple;
153
- export const streamAzureOpenAIResponses = azureOpenAIResponsesProvider.stream;
154
- export const streamSimpleAzureOpenAIResponses = azureOpenAIResponsesProvider.streamSimple;
155
- export const streamGoogle = googleProvider.stream;
156
- export const streamSimpleGoogle = googleProvider.streamSimple;
157
- export const streamGoogleVertex = googleVertexProvider.stream;
158
- export const streamSimpleGoogleVertex = googleVertexProvider.streamSimple;
159
- export const streamMistral = mistralProvider.stream;
160
- export const streamSimpleMistral = mistralProvider.streamSimple;
161
- export const streamOpenAICodexResponses = openAICodexResponsesProvider.stream;
162
- export const streamSimpleOpenAICodexResponses = openAICodexResponsesProvider.streamSimple;
163
- export const streamOpenAICompletions = openAICompletionsProvider.stream;
164
- export const streamSimpleOpenAICompletions = openAICompletionsProvider.streamSimple;
165
- export const streamOpenAIResponses = openAIResponsesProvider.stream;
166
- export const streamSimpleOpenAIResponses = openAIResponsesProvider.streamSimple;
167
- const registerBuiltInApiProviderFunctions = [
168
- () => registerApiProvider(anthropicProvider),
169
- () => registerApiProvider(openAICompletionsProvider),
170
- () => registerApiProvider(mistralProvider),
171
- () => registerApiProvider(openAIResponsesProvider),
172
- () => registerApiProvider(azureOpenAIResponsesProvider),
173
- () => registerApiProvider(openAICodexResponsesProvider),
174
- () => registerApiProvider(googleProvider),
175
- () => registerApiProvider(googleVertexProvider),
176
- () => registerApiProvider(bedrockProvider),
177
- ];
178
- export function registerBuiltInImagesApiProviders() {
179
- registerImagesApiProvider(openRouterImagesProvider);
180
- }
181
- export function registerBuiltInApiProviders() {
182
- for (const register of registerBuiltInApiProviderFunctions) {
183
- register();
184
- }
185
- }
186
- export function resetApiProviders() {
187
- clearApiProviders();
188
- registerBuiltInApiProviders();
189
- }
190
- registerBuiltInApiProviders();
191
- //# sourceMappingURL=register-builtins.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"register-builtins.js","sourceRoot":"","sources":["../../src/providers/register-builtins.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ApiProvider, clearApiProviders, getApiProvider, registerApiProvider } from \"../api-registry.ts\";\nimport { getImagesApiProvider, type ImagesApiProvider, registerImagesApiProvider } from \"../images-api-registry.ts\";\nimport type {\n\tApi,\n\tAssistantImages,\n\tAssistantMessage,\n\tAssistantMessageEvent,\n\tImagesApi,\n\tImagesContext,\n\tImagesModel,\n\tImagesOptions,\n\tModel,\n\tSimpleStreamOptions,\n\tStreamFunction,\n\tStreamOptions,\n} from \"../types.ts\";\nimport { AssistantMessageEventStream } from \"../utils/event-stream.ts\";\nimport type { BedrockOptions } from \"./amazon-bedrock.ts\";\nimport type { AnthropicOptions } from \"./anthropic.ts\";\nimport type { AzureOpenAIResponsesOptions } from \"./azure-openai-responses.ts\";\nimport type { GoogleOptions } from \"./google.ts\";\nimport type { GoogleVertexOptions } from \"./google-vertex.ts\";\nimport type { MistralOptions } from \"./mistral.ts\";\nimport type { OpenAICodexResponsesOptions } from \"./openai-codex-responses.ts\";\nimport type { OpenAICompletionsOptions } from \"./openai-completions.ts\";\nimport type { OpenAIResponsesOptions } from \"./openai-responses.ts\";\n\ninterface RegisteringProviderModule {\n\tregister(): void;\n}\n\nfunction createLazyLoadErrorImages(model: ImagesModel<\"openrouter-images\">, error: unknown): AssistantImages {\n\treturn {\n\t\tapi: model.api,\n\t\tprovider: model.provider,\n\t\tmodel: model.id,\n\t\toutput: [],\n\t\tstopReason: \"error\",\n\t\terrorMessage: error instanceof Error ? error.message : String(error),\n\t\ttimestamp: Date.now(),\n\t};\n}\n\nfunction createLazyImagesApiProvider<TApi extends ImagesApi, TOptions extends ImagesOptions>(\n\tapi: TApi,\n\tloadModule: () => Promise<RegisteringProviderModule>,\n): ImagesApiProvider<TApi, TOptions> {\n\treturn {\n\t\tapi,\n\t\tgenerateImages: async (model: ImagesModel<TApi>, context: ImagesContext, options?: TOptions) => {\n\t\t\ttry {\n\t\t\t\tconst module = await loadModule();\n\t\t\t\tmodule.register();\n\t\t\t\tconst provider = getImagesApiProvider(api);\n\t\t\t\tif (!provider) {\n\t\t\t\t\tthrow new Error(`No API provider registered for api: ${api}`);\n\t\t\t\t}\n\t\t\t\treturn await provider.generateImages(model, context, options);\n\t\t\t} catch (error) {\n\t\t\t\treturn createLazyLoadErrorImages(model as ImagesModel<\"openrouter-images\">, error);\n\t\t\t}\n\t\t},\n\t};\n}\n\ninterface BedrockProviderModule {\n\tstreamBedrock: StreamFunction<\"bedrock-converse-stream\", BedrockOptions>;\n\tstreamSimpleBedrock: StreamFunction<\"bedrock-converse-stream\", SimpleStreamOptions>;\n}\n\nconst importNodeOnlyProvider = (specifier: string): Promise<unknown> => {\n\tconst runtimeSpecifier = import.meta.url.endsWith(\".js\") ? specifier.replace(/\\.ts$/, \".js\") : specifier;\n\treturn import(runtimeSpecifier);\n};\n\nlet bedrockProviderModuleOverride: BedrockProviderModule | undefined;\n\nexport function setBedrockProviderModule(module: BedrockProviderModule): void {\n\tbedrockProviderModuleOverride = module;\n}\n\nfunction forwardStream(target: AssistantMessageEventStream, source: AsyncIterable<AssistantMessageEvent>): void {\n\t(async () => {\n\t\tfor await (const event of source) {\n\t\t\ttarget.push(event);\n\t\t}\n\t\ttarget.end();\n\t})();\n}\n\nfunction createLazyLoadErrorMessage<TApi extends Api>(model: Model<TApi>, error: unknown): AssistantMessage {\n\treturn {\n\t\trole: \"assistant\",\n\t\tcontent: [],\n\t\tapi: model.api,\n\t\tprovider: model.provider,\n\t\tmodel: model.id,\n\t\tusage: {\n\t\t\tinput: 0,\n\t\t\toutput: 0,\n\t\t\tcacheRead: 0,\n\t\t\tcacheWrite: 0,\n\t\t\ttotalTokens: 0,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t},\n\t\tstopReason: \"error\",\n\t\terrorMessage: error instanceof Error ? error.message : String(error),\n\t\ttimestamp: Date.now(),\n\t};\n}\n\nasync function loadAndRegisterProvider<TApi extends Api>(\n\tapi: TApi,\n\tloadModule: () => Promise<RegisteringProviderModule>,\n) {\n\tconst module = await loadModule();\n\tmodule.register();\n\tconst provider = getApiProvider(api);\n\tif (!provider) {\n\t\tthrow new Error(`No API provider registered for api: ${api}`);\n\t}\n\treturn provider;\n}\n\nfunction createLazyStream<TApi extends Api, TOptions extends StreamOptions>(\n\tapi: TApi,\n\tloadModule: () => Promise<RegisteringProviderModule>,\n): StreamFunction<TApi, TOptions> {\n\treturn (model, context, options) => {\n\t\tconst outer = new AssistantMessageEventStream();\n\n\t\tloadAndRegisterProvider(api, loadModule)\n\t\t\t.then((provider) => {\n\t\t\t\tconst inner = provider.stream(model, context, options);\n\t\t\t\tforwardStream(outer, inner);\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconst message = createLazyLoadErrorMessage(model, error);\n\t\t\t\touter.push({ type: \"error\", reason: \"error\", error: message });\n\t\t\t\touter.end(message);\n\t\t\t});\n\n\t\treturn outer;\n\t};\n}\n\nfunction createLazySimpleStream<TApi extends Api>(\n\tapi: TApi,\n\tloadModule: () => Promise<RegisteringProviderModule>,\n): StreamFunction<TApi, SimpleStreamOptions> {\n\treturn (model, context, options) => {\n\t\tconst outer = new AssistantMessageEventStream();\n\n\t\tloadAndRegisterProvider(api, loadModule)\n\t\t\t.then((provider) => {\n\t\t\t\tconst inner = provider.streamSimple(model, context, options);\n\t\t\t\tforwardStream(outer, inner);\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconst message = createLazyLoadErrorMessage(model, error);\n\t\t\t\touter.push({ type: \"error\", reason: \"error\", error: message });\n\t\t\t\touter.end(message);\n\t\t\t});\n\n\t\treturn outer;\n\t};\n}\n\nfunction createLazyApiProvider<TApi extends Api, TOptions extends StreamOptions>(\n\tapi: TApi,\n\tloadModule: () => Promise<RegisteringProviderModule>,\n): ApiProvider<TApi, TOptions> {\n\treturn {\n\t\tapi,\n\t\tstream: createLazyStream<TApi, TOptions>(api, loadModule),\n\t\tstreamSimple: createLazySimpleStream(api, loadModule),\n\t};\n}\n\nfunction registerBedrockProviderModule(module: BedrockProviderModule): void {\n\tregisterApiProvider({\n\t\tapi: \"bedrock-converse-stream\",\n\t\tstream: module.streamBedrock,\n\t\tstreamSimple: module.streamSimpleBedrock,\n\t});\n}\n\nfunction loadBedrockProviderModule(): Promise<RegisteringProviderModule> {\n\tconst module = bedrockProviderModuleOverride;\n\tif (module) {\n\t\treturn Promise.resolve({ register: () => registerBedrockProviderModule(module) });\n\t}\n\treturn importNodeOnlyProvider(\"./amazon-bedrock.ts\").then((provider) => provider as RegisteringProviderModule);\n}\n\nconst anthropicProvider = createLazyApiProvider<\"anthropic-messages\", AnthropicOptions>(\n\t\"anthropic-messages\",\n\t() => import(\"./anthropic.ts\"),\n);\nconst azureOpenAIResponsesProvider = createLazyApiProvider<\"azure-openai-responses\", AzureOpenAIResponsesOptions>(\n\t\"azure-openai-responses\",\n\t() => import(\"./azure-openai-responses.ts\"),\n);\nconst googleProvider = createLazyApiProvider<\"google-generative-ai\", GoogleOptions>(\n\t\"google-generative-ai\",\n\t() => import(\"./google.ts\"),\n);\nconst googleVertexProvider = createLazyApiProvider<\"google-vertex\", GoogleVertexOptions>(\n\t\"google-vertex\",\n\t() => import(\"./google-vertex.ts\"),\n);\nconst mistralProvider = createLazyApiProvider<\"mistral-conversations\", MistralOptions>(\n\t\"mistral-conversations\",\n\t() => import(\"./mistral.ts\"),\n);\nconst openAICodexResponsesProvider = createLazyApiProvider<\"openai-codex-responses\", OpenAICodexResponsesOptions>(\n\t\"openai-codex-responses\",\n\t() => import(\"./openai-codex-responses.ts\"),\n);\nconst openAICompletionsProvider = createLazyApiProvider<\"openai-completions\", OpenAICompletionsOptions>(\n\t\"openai-completions\",\n\t() => import(\"./openai-completions.ts\"),\n);\nconst openAIResponsesProvider = createLazyApiProvider<\"openai-responses\", OpenAIResponsesOptions>(\n\t\"openai-responses\",\n\t() => import(\"./openai-responses.ts\"),\n);\nconst bedrockProvider = createLazyApiProvider<\"bedrock-converse-stream\", BedrockOptions>(\n\t\"bedrock-converse-stream\",\n\tloadBedrockProviderModule,\n);\nconst openRouterImagesProvider = createLazyImagesApiProvider(\n\t\"openrouter-images\",\n\t() => import(\"./images/openrouter.ts\"),\n);\n\nexport const generateImagesOpenRouter = openRouterImagesProvider.generateImages;\nexport const streamAnthropic = anthropicProvider.stream;\nexport const streamSimpleAnthropic = anthropicProvider.streamSimple;\nexport const streamAzureOpenAIResponses = azureOpenAIResponsesProvider.stream;\nexport const streamSimpleAzureOpenAIResponses = azureOpenAIResponsesProvider.streamSimple;\nexport const streamGoogle = googleProvider.stream;\nexport const streamSimpleGoogle = googleProvider.streamSimple;\nexport const streamGoogleVertex = googleVertexProvider.stream;\nexport const streamSimpleGoogleVertex = googleVertexProvider.streamSimple;\nexport const streamMistral = mistralProvider.stream;\nexport const streamSimpleMistral = mistralProvider.streamSimple;\nexport const streamOpenAICodexResponses = openAICodexResponsesProvider.stream;\nexport const streamSimpleOpenAICodexResponses = openAICodexResponsesProvider.streamSimple;\nexport const streamOpenAICompletions = openAICompletionsProvider.stream;\nexport const streamSimpleOpenAICompletions = openAICompletionsProvider.streamSimple;\nexport const streamOpenAIResponses = openAIResponsesProvider.stream;\nexport const streamSimpleOpenAIResponses = openAIResponsesProvider.streamSimple;\n\nconst registerBuiltInApiProviderFunctions = [\n\t() => registerApiProvider(anthropicProvider),\n\t() => registerApiProvider(openAICompletionsProvider),\n\t() => registerApiProvider(mistralProvider),\n\t() => registerApiProvider(openAIResponsesProvider),\n\t() => registerApiProvider(azureOpenAIResponsesProvider),\n\t() => registerApiProvider(openAICodexResponsesProvider),\n\t() => registerApiProvider(googleProvider),\n\t() => registerApiProvider(googleVertexProvider),\n\t() => registerApiProvider(bedrockProvider),\n];\n\nexport function registerBuiltInImagesApiProviders(): void {\n\tregisterImagesApiProvider(openRouterImagesProvider);\n}\n\nexport function registerBuiltInApiProviders(): void {\n\tfor (const register of registerBuiltInApiProviderFunctions) {\n\t\tregister();\n\t}\n}\n\nexport function resetApiProviders(): void {\n\tclearApiProviders();\n\tregisterBuiltInApiProviders();\n}\n\nregisterBuiltInApiProviders();\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"simple-options.d.ts","sourceRoot":"","sources":["../../src/providers/simple-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAElH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAmBlH;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,SAAS,CAE7G;AAED,wBAAgB,0BAA0B,CAEzC,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,aAAa,EAC7B,aAAa,CAAC,EAAE,eAAe,GAC7B;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAoB/C","sourcesContent":["import type { Api, Model, SimpleStreamOptions, StreamOptions, ThinkingBudgets, ThinkingLevel } from \"../types.ts\";\n\nexport function buildBaseOptions(_model: Model<Api>, options?: SimpleStreamOptions, apiKey?: string): StreamOptions {\n\treturn {\n\t\ttemperature: options?.temperature,\n\t\tmaxTokens: options?.maxTokens,\n\t\tsignal: options?.signal,\n\t\tapiKey: apiKey || options?.apiKey,\n\t\ttransport: options?.transport,\n\t\tcacheRetention: options?.cacheRetention,\n\t\tsessionId: options?.sessionId,\n\t\theaders: options?.headers,\n\t\tonPayload: options?.onPayload,\n\t\tonResponse: options?.onResponse,\n\t\ttimeoutMs: options?.timeoutMs,\n\t\twebsocketConnectTimeoutMs: options?.websocketConnectTimeoutMs,\n\t\tmaxRetries: options?.maxRetries,\n\t\tmaxRetryDelayMs: options?.maxRetryDelayMs,\n\t\tmetadata: options?.metadata,\n\t\tenv: options?.env,\n\t};\n}\n\nexport function clampReasoning(effort: ThinkingLevel | undefined): Exclude<ThinkingLevel, \"xhigh\"> | undefined {\n\treturn effort === \"xhigh\" ? \"high\" : effort;\n}\n\nexport function adjustMaxTokensForThinking(\n\t// Undefined means no explicit caller cap. Use the model cap and fit thinking inside it.\n\tbaseMaxTokens: number | undefined,\n\tmodelMaxTokens: number,\n\treasoningLevel: ThinkingLevel,\n\tcustomBudgets?: ThinkingBudgets,\n): { maxTokens: number; thinkingBudget: number } {\n\tconst defaultBudgets: ThinkingBudgets = {\n\t\tminimal: 1024,\n\t\tlow: 2048,\n\t\tmedium: 8192,\n\t\thigh: 16384,\n\t};\n\tconst budgets = { ...defaultBudgets, ...customBudgets };\n\n\tconst minOutputTokens = 1024;\n\tconst level = clampReasoning(reasoningLevel)!;\n\tlet thinkingBudget = budgets[level]!;\n\tconst maxTokens =\n\t\tbaseMaxTokens === undefined ? modelMaxTokens : Math.min(baseMaxTokens + thinkingBudget, modelMaxTokens);\n\n\tif (maxTokens <= thinkingBudget) {\n\t\tthinkingBudget = Math.max(0, maxTokens - minOutputTokens);\n\t}\n\n\treturn { maxTokens, thinkingBudget };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"simple-options.js","sourceRoot":"","sources":["../../src/providers/simple-options.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,MAAkB,EAAE,OAA6B,EAAE,MAAe,EAAiB;IACnH,OAAO;QACN,WAAW,EAAE,OAAO,EAAE,WAAW;QACjC,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,MAAM,EAAE,OAAO,EAAE,MAAM;QACvB,MAAM,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM;QACjC,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,cAAc,EAAE,OAAO,EAAE,cAAc;QACvC,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,yBAAyB,EAAE,OAAO,EAAE,yBAAyB;QAC7D,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,eAAe,EAAE,OAAO,EAAE,eAAe;QACzC,QAAQ,EAAE,OAAO,EAAE,QAAQ;QAC3B,GAAG,EAAE,OAAO,EAAE,GAAG;KACjB,CAAC;AAAA,CACF;AAED,MAAM,UAAU,cAAc,CAAC,MAAiC,EAA+C;IAC9G,OAAO,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAAA,CAC5C;AAED,MAAM,UAAU,0BAA0B;AACzC,wFAAwF;AACxF,aAAiC,EACjC,cAAsB,EACtB,cAA6B,EAC7B,aAA+B,EACiB;IAChD,MAAM,cAAc,GAAoB;QACvC,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,IAAI;QACT,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,KAAK;KACX,CAAC;IACF,MAAM,OAAO,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,aAAa,EAAE,CAAC;IAExD,MAAM,eAAe,GAAG,IAAI,CAAC;IAC7B,MAAM,KAAK,GAAG,cAAc,CAAC,cAAc,CAAE,CAAC;IAC9C,IAAI,cAAc,GAAG,OAAO,CAAC,KAAK,CAAE,CAAC;IACrC,MAAM,SAAS,GACd,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,cAAc,EAAE,cAAc,CAAC,CAAC;IAEzG,IAAI,SAAS,IAAI,cAAc,EAAE,CAAC;QACjC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,eAAe,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;AAAA,CACrC","sourcesContent":["import type { Api, Model, SimpleStreamOptions, StreamOptions, ThinkingBudgets, ThinkingLevel } from \"../types.ts\";\n\nexport function buildBaseOptions(_model: Model<Api>, options?: SimpleStreamOptions, apiKey?: string): StreamOptions {\n\treturn {\n\t\ttemperature: options?.temperature,\n\t\tmaxTokens: options?.maxTokens,\n\t\tsignal: options?.signal,\n\t\tapiKey: apiKey || options?.apiKey,\n\t\ttransport: options?.transport,\n\t\tcacheRetention: options?.cacheRetention,\n\t\tsessionId: options?.sessionId,\n\t\theaders: options?.headers,\n\t\tonPayload: options?.onPayload,\n\t\tonResponse: options?.onResponse,\n\t\ttimeoutMs: options?.timeoutMs,\n\t\twebsocketConnectTimeoutMs: options?.websocketConnectTimeoutMs,\n\t\tmaxRetries: options?.maxRetries,\n\t\tmaxRetryDelayMs: options?.maxRetryDelayMs,\n\t\tmetadata: options?.metadata,\n\t\tenv: options?.env,\n\t};\n}\n\nexport function clampReasoning(effort: ThinkingLevel | undefined): Exclude<ThinkingLevel, \"xhigh\"> | undefined {\n\treturn effort === \"xhigh\" ? \"high\" : effort;\n}\n\nexport function adjustMaxTokensForThinking(\n\t// Undefined means no explicit caller cap. Use the model cap and fit thinking inside it.\n\tbaseMaxTokens: number | undefined,\n\tmodelMaxTokens: number,\n\treasoningLevel: ThinkingLevel,\n\tcustomBudgets?: ThinkingBudgets,\n): { maxTokens: number; thinkingBudget: number } {\n\tconst defaultBudgets: ThinkingBudgets = {\n\t\tminimal: 1024,\n\t\tlow: 2048,\n\t\tmedium: 8192,\n\t\thigh: 16384,\n\t};\n\tconst budgets = { ...defaultBudgets, ...customBudgets };\n\n\tconst minOutputTokens = 1024;\n\tconst level = clampReasoning(reasoningLevel)!;\n\tlet thinkingBudget = budgets[level]!;\n\tconst maxTokens =\n\t\tbaseMaxTokens === undefined ? modelMaxTokens : Math.min(baseMaxTokens + thinkingBudget, modelMaxTokens);\n\n\tif (maxTokens <= thinkingBudget) {\n\t\tthinkingBudget = Math.max(0, maxTokens - minOutputTokens);\n\t}\n\n\treturn { maxTokens, thinkingBudget };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"transform-messages.d.ts","sourceRoot":"","sources":["../../src/providers/transform-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,GAAG,EACH,gBAAgB,EAEhB,OAAO,EACP,KAAK,EAIL,MAAM,aAAa,CAAC;AAiDrB;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,SAAS,GAAG,EACjD,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,gBAAgB,KAAK,MAAM,GACxF,OAAO,EAAE,CAwJX","sourcesContent":["import type {\n\tApi,\n\tAssistantMessage,\n\tImageContent,\n\tMessage,\n\tModel,\n\tTextContent,\n\tToolCall,\n\tToolResultMessage,\n} from \"../types.ts\";\n\nconst NON_VISION_USER_IMAGE_PLACEHOLDER = \"(image omitted: model does not support images)\";\nconst NON_VISION_TOOL_IMAGE_PLACEHOLDER = \"(tool image omitted: model does not support images)\";\n\nfunction replaceImagesWithPlaceholder(content: (TextContent | ImageContent)[], placeholder: string): TextContent[] {\n\tconst result: TextContent[] = [];\n\tlet previousWasPlaceholder = false;\n\n\tfor (const block of content) {\n\t\tif (block.type === \"image\") {\n\t\t\tif (!previousWasPlaceholder) {\n\t\t\t\tresult.push({ type: \"text\", text: placeholder });\n\t\t\t}\n\t\t\tpreviousWasPlaceholder = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tresult.push(block);\n\t\tpreviousWasPlaceholder = block.text === placeholder;\n\t}\n\n\treturn result;\n}\n\nfunction downgradeUnsupportedImages<TApi extends Api>(messages: Message[], model: Model<TApi>): Message[] {\n\tif (model.input.includes(\"image\")) {\n\t\treturn messages;\n\t}\n\n\treturn messages.map((msg) => {\n\t\tif (msg.role === \"user\" && Array.isArray(msg.content)) {\n\t\t\treturn {\n\t\t\t\t...msg,\n\t\t\t\tcontent: replaceImagesWithPlaceholder(msg.content, NON_VISION_USER_IMAGE_PLACEHOLDER),\n\t\t\t};\n\t\t}\n\n\t\tif (msg.role === \"toolResult\") {\n\t\t\treturn {\n\t\t\t\t...msg,\n\t\t\t\tcontent: replaceImagesWithPlaceholder(msg.content, NON_VISION_TOOL_IMAGE_PLACEHOLDER),\n\t\t\t};\n\t\t}\n\n\t\treturn msg;\n\t});\n}\n\n/**\n * Normalize tool call ID for cross-provider compatibility.\n * OpenAI Responses API generates IDs that are 450+ chars with special characters like `|`.\n * Anthropic APIs require IDs matching ^[a-zA-Z0-9_-]+$ (max 64 chars).\n */\nexport function transformMessages<TApi extends Api>(\n\tmessages: Message[],\n\tmodel: Model<TApi>,\n\tnormalizeToolCallId?: (id: string, model: Model<TApi>, source: AssistantMessage) => string,\n): Message[] {\n\t// Build a map of original tool call IDs to normalized IDs\n\tconst toolCallIdMap = new Map<string, string>();\n\tconst imageAwareMessages = downgradeUnsupportedImages(messages, model);\n\n\t// First pass: transform messages (unsupported image downgrade, thinking blocks, tool call ID normalization)\n\tconst transformed = imageAwareMessages.map((msg) => {\n\t\t// User messages pass through unchanged\n\t\tif (msg.role === \"user\") {\n\t\t\treturn msg;\n\t\t}\n\n\t\t// Handle toolResult messages - normalize toolCallId if we have a mapping\n\t\tif (msg.role === \"toolResult\") {\n\t\t\tconst normalizedId = toolCallIdMap.get(msg.toolCallId);\n\t\t\tif (normalizedId && normalizedId !== msg.toolCallId) {\n\t\t\t\treturn { ...msg, toolCallId: normalizedId };\n\t\t\t}\n\t\t\treturn msg;\n\t\t}\n\n\t\t// Assistant messages need transformation check\n\t\tif (msg.role === \"assistant\") {\n\t\t\tconst assistantMsg = msg as AssistantMessage;\n\t\t\tconst isSameModel =\n\t\t\t\tassistantMsg.provider === model.provider &&\n\t\t\t\tassistantMsg.api === model.api &&\n\t\t\t\tassistantMsg.model === model.id;\n\n\t\t\tconst transformedContent = assistantMsg.content.flatMap((block) => {\n\t\t\t\tif (block.type === \"thinking\") {\n\t\t\t\t\t// Redacted thinking is opaque encrypted content, only valid for the same model.\n\t\t\t\t\t// Drop it for cross-model to avoid API errors.\n\t\t\t\t\tif (block.redacted) {\n\t\t\t\t\t\treturn isSameModel ? block : [];\n\t\t\t\t\t}\n\t\t\t\t\t// For same model: keep thinking blocks with signatures (needed for replay)\n\t\t\t\t\t// even if the thinking text is empty (OpenAI encrypted reasoning)\n\t\t\t\t\tif (isSameModel && block.thinkingSignature) return block;\n\t\t\t\t\t// Skip empty thinking blocks, convert others to plain text\n\t\t\t\t\tif (!block.thinking || block.thinking.trim() === \"\") return [];\n\t\t\t\t\tif (isSameModel) return block;\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\ttext: block.thinking,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\tif (isSameModel) return block;\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\ttext: block.text,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (block.type === \"toolCall\") {\n\t\t\t\t\tconst toolCall = block as ToolCall;\n\t\t\t\t\tlet normalizedToolCall: ToolCall = toolCall;\n\n\t\t\t\t\tif (!isSameModel && toolCall.thoughtSignature) {\n\t\t\t\t\t\tnormalizedToolCall = { ...toolCall };\n\t\t\t\t\t\tdelete (normalizedToolCall as { thoughtSignature?: string }).thoughtSignature;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!isSameModel && normalizeToolCallId) {\n\t\t\t\t\t\tconst normalizedId = normalizeToolCallId(toolCall.id, model, assistantMsg);\n\t\t\t\t\t\tif (normalizedId !== toolCall.id) {\n\t\t\t\t\t\t\ttoolCallIdMap.set(toolCall.id, normalizedId);\n\t\t\t\t\t\t\tnormalizedToolCall = { ...normalizedToolCall, id: normalizedId };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn normalizedToolCall;\n\t\t\t\t}\n\n\t\t\t\treturn block;\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\t...assistantMsg,\n\t\t\t\tcontent: transformedContent,\n\t\t\t};\n\t\t}\n\t\treturn msg;\n\t});\n\n\t// Second pass: insert synthetic empty tool results for orphaned tool calls\n\t// This preserves thinking signatures and satisfies API requirements\n\tconst result: Message[] = [];\n\tlet pendingToolCalls: ToolCall[] = [];\n\tlet existingToolResultIds = new Set<string>();\n\tconst insertSyntheticToolResults = () => {\n\t\tif (pendingToolCalls.length > 0) {\n\t\t\tfor (const tc of pendingToolCalls) {\n\t\t\t\tif (!existingToolResultIds.has(tc.id)) {\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\trole: \"toolResult\",\n\t\t\t\t\t\ttoolCallId: tc.id,\n\t\t\t\t\t\ttoolName: tc.name,\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"No result provided\" }],\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t} as ToolResultMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpendingToolCalls = [];\n\t\t\texistingToolResultIds = new Set();\n\t\t}\n\t};\n\n\tfor (let i = 0; i < transformed.length; i++) {\n\t\tconst msg = transformed[i];\n\n\t\tif (msg.role === \"assistant\") {\n\t\t\t// If we have pending orphaned tool calls from a previous assistant, insert synthetic results now\n\t\t\tinsertSyntheticToolResults();\n\n\t\t\t// Skip errored/aborted assistant messages entirely.\n\t\t\t// These are incomplete turns that shouldn't be replayed:\n\t\t\t// - May have partial content (reasoning without message, incomplete tool calls)\n\t\t\t// - Replaying them can cause API errors (e.g., OpenAI \"reasoning without following item\")\n\t\t\t// - The model should retry from the last valid state\n\t\t\tconst assistantMsg = msg as AssistantMessage;\n\t\t\tif (assistantMsg.stopReason === \"error\" || assistantMsg.stopReason === \"aborted\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Track tool calls from this assistant message\n\t\t\tconst toolCalls = assistantMsg.content.filter((b) => b.type === \"toolCall\") as ToolCall[];\n\t\t\tif (toolCalls.length > 0) {\n\t\t\t\tpendingToolCalls = toolCalls;\n\t\t\t\texistingToolResultIds = new Set();\n\t\t\t}\n\n\t\t\tresult.push(msg);\n\t\t} else if (msg.role === \"toolResult\") {\n\t\t\texistingToolResultIds.add(msg.toolCallId);\n\t\t\tresult.push(msg);\n\t\t} else if (msg.role === \"user\") {\n\t\t\t// User message interrupts tool flow - insert synthetic results for orphaned calls\n\t\t\tinsertSyntheticToolResults();\n\t\t\tresult.push(msg);\n\t\t} else {\n\t\t\tresult.push(msg);\n\t\t}\n\t}\n\n\t// If the conversation ends with unresolved tool calls, synthesize results now.\n\tinsertSyntheticToolResults();\n\n\treturn result;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"transform-messages.js","sourceRoot":"","sources":["../../src/providers/transform-messages.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tApi,\n\tAssistantMessage,\n\tImageContent,\n\tMessage,\n\tModel,\n\tTextContent,\n\tToolCall,\n\tToolResultMessage,\n} from \"../types.ts\";\n\nconst NON_VISION_USER_IMAGE_PLACEHOLDER = \"(image omitted: model does not support images)\";\nconst NON_VISION_TOOL_IMAGE_PLACEHOLDER = \"(tool image omitted: model does not support images)\";\n\nfunction replaceImagesWithPlaceholder(content: (TextContent | ImageContent)[], placeholder: string): TextContent[] {\n\tconst result: TextContent[] = [];\n\tlet previousWasPlaceholder = false;\n\n\tfor (const block of content) {\n\t\tif (block.type === \"image\") {\n\t\t\tif (!previousWasPlaceholder) {\n\t\t\t\tresult.push({ type: \"text\", text: placeholder });\n\t\t\t}\n\t\t\tpreviousWasPlaceholder = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tresult.push(block);\n\t\tpreviousWasPlaceholder = block.text === placeholder;\n\t}\n\n\treturn result;\n}\n\nfunction downgradeUnsupportedImages<TApi extends Api>(messages: Message[], model: Model<TApi>): Message[] {\n\tif (model.input.includes(\"image\")) {\n\t\treturn messages;\n\t}\n\n\treturn messages.map((msg) => {\n\t\tif (msg.role === \"user\" && Array.isArray(msg.content)) {\n\t\t\treturn {\n\t\t\t\t...msg,\n\t\t\t\tcontent: replaceImagesWithPlaceholder(msg.content, NON_VISION_USER_IMAGE_PLACEHOLDER),\n\t\t\t};\n\t\t}\n\n\t\tif (msg.role === \"toolResult\") {\n\t\t\treturn {\n\t\t\t\t...msg,\n\t\t\t\tcontent: replaceImagesWithPlaceholder(msg.content, NON_VISION_TOOL_IMAGE_PLACEHOLDER),\n\t\t\t};\n\t\t}\n\n\t\treturn msg;\n\t});\n}\n\n/**\n * Normalize tool call ID for cross-provider compatibility.\n * OpenAI Responses API generates IDs that are 450+ chars with special characters like `|`.\n * Anthropic APIs require IDs matching ^[a-zA-Z0-9_-]+$ (max 64 chars).\n */\nexport function transformMessages<TApi extends Api>(\n\tmessages: Message[],\n\tmodel: Model<TApi>,\n\tnormalizeToolCallId?: (id: string, model: Model<TApi>, source: AssistantMessage) => string,\n): Message[] {\n\t// Build a map of original tool call IDs to normalized IDs\n\tconst toolCallIdMap = new Map<string, string>();\n\tconst imageAwareMessages = downgradeUnsupportedImages(messages, model);\n\n\t// First pass: transform messages (unsupported image downgrade, thinking blocks, tool call ID normalization)\n\tconst transformed = imageAwareMessages.map((msg) => {\n\t\t// User messages pass through unchanged\n\t\tif (msg.role === \"user\") {\n\t\t\treturn msg;\n\t\t}\n\n\t\t// Handle toolResult messages - normalize toolCallId if we have a mapping\n\t\tif (msg.role === \"toolResult\") {\n\t\t\tconst normalizedId = toolCallIdMap.get(msg.toolCallId);\n\t\t\tif (normalizedId && normalizedId !== msg.toolCallId) {\n\t\t\t\treturn { ...msg, toolCallId: normalizedId };\n\t\t\t}\n\t\t\treturn msg;\n\t\t}\n\n\t\t// Assistant messages need transformation check\n\t\tif (msg.role === \"assistant\") {\n\t\t\tconst assistantMsg = msg as AssistantMessage;\n\t\t\tconst isSameModel =\n\t\t\t\tassistantMsg.provider === model.provider &&\n\t\t\t\tassistantMsg.api === model.api &&\n\t\t\t\tassistantMsg.model === model.id;\n\n\t\t\tconst transformedContent = assistantMsg.content.flatMap((block) => {\n\t\t\t\tif (block.type === \"thinking\") {\n\t\t\t\t\t// Redacted thinking is opaque encrypted content, only valid for the same model.\n\t\t\t\t\t// Drop it for cross-model to avoid API errors.\n\t\t\t\t\tif (block.redacted) {\n\t\t\t\t\t\treturn isSameModel ? block : [];\n\t\t\t\t\t}\n\t\t\t\t\t// For same model: keep thinking blocks with signatures (needed for replay)\n\t\t\t\t\t// even if the thinking text is empty (OpenAI encrypted reasoning)\n\t\t\t\t\tif (isSameModel && block.thinkingSignature) return block;\n\t\t\t\t\t// Skip empty thinking blocks, convert others to plain text\n\t\t\t\t\tif (!block.thinking || block.thinking.trim() === \"\") return [];\n\t\t\t\t\tif (isSameModel) return block;\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\ttext: block.thinking,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\tif (isSameModel) return block;\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\ttext: block.text,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (block.type === \"toolCall\") {\n\t\t\t\t\tconst toolCall = block as ToolCall;\n\t\t\t\t\tlet normalizedToolCall: ToolCall = toolCall;\n\n\t\t\t\t\tif (!isSameModel && toolCall.thoughtSignature) {\n\t\t\t\t\t\tnormalizedToolCall = { ...toolCall };\n\t\t\t\t\t\tdelete (normalizedToolCall as { thoughtSignature?: string }).thoughtSignature;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!isSameModel && normalizeToolCallId) {\n\t\t\t\t\t\tconst normalizedId = normalizeToolCallId(toolCall.id, model, assistantMsg);\n\t\t\t\t\t\tif (normalizedId !== toolCall.id) {\n\t\t\t\t\t\t\ttoolCallIdMap.set(toolCall.id, normalizedId);\n\t\t\t\t\t\t\tnormalizedToolCall = { ...normalizedToolCall, id: normalizedId };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn normalizedToolCall;\n\t\t\t\t}\n\n\t\t\t\treturn block;\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\t...assistantMsg,\n\t\t\t\tcontent: transformedContent,\n\t\t\t};\n\t\t}\n\t\treturn msg;\n\t});\n\n\t// Second pass: insert synthetic empty tool results for orphaned tool calls\n\t// This preserves thinking signatures and satisfies API requirements\n\tconst result: Message[] = [];\n\tlet pendingToolCalls: ToolCall[] = [];\n\tlet existingToolResultIds = new Set<string>();\n\tconst insertSyntheticToolResults = () => {\n\t\tif (pendingToolCalls.length > 0) {\n\t\t\tfor (const tc of pendingToolCalls) {\n\t\t\t\tif (!existingToolResultIds.has(tc.id)) {\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\trole: \"toolResult\",\n\t\t\t\t\t\ttoolCallId: tc.id,\n\t\t\t\t\t\ttoolName: tc.name,\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"No result provided\" }],\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t} as ToolResultMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpendingToolCalls = [];\n\t\t\texistingToolResultIds = new Set();\n\t\t}\n\t};\n\n\tfor (let i = 0; i < transformed.length; i++) {\n\t\tconst msg = transformed[i];\n\n\t\tif (msg.role === \"assistant\") {\n\t\t\t// If we have pending orphaned tool calls from a previous assistant, insert synthetic results now\n\t\t\tinsertSyntheticToolResults();\n\n\t\t\t// Skip errored/aborted assistant messages entirely.\n\t\t\t// These are incomplete turns that shouldn't be replayed:\n\t\t\t// - May have partial content (reasoning without message, incomplete tool calls)\n\t\t\t// - Replaying them can cause API errors (e.g., OpenAI \"reasoning without following item\")\n\t\t\t// - The model should retry from the last valid state\n\t\t\tconst assistantMsg = msg as AssistantMessage;\n\t\t\tif (assistantMsg.stopReason === \"error\" || assistantMsg.stopReason === \"aborted\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Track tool calls from this assistant message\n\t\t\tconst toolCalls = assistantMsg.content.filter((b) => b.type === \"toolCall\") as ToolCall[];\n\t\t\tif (toolCalls.length > 0) {\n\t\t\t\tpendingToolCalls = toolCalls;\n\t\t\t\texistingToolResultIds = new Set();\n\t\t\t}\n\n\t\t\tresult.push(msg);\n\t\t} else if (msg.role === \"toolResult\") {\n\t\t\texistingToolResultIds.add(msg.toolCallId);\n\t\t\tresult.push(msg);\n\t\t} else if (msg.role === \"user\") {\n\t\t\t// User message interrupts tool flow - insert synthetic results for orphaned calls\n\t\t\tinsertSyntheticToolResults();\n\t\t\tresult.push(msg);\n\t\t} else {\n\t\t\tresult.push(msg);\n\t\t}\n\t}\n\n\t// If the conversation ends with unresolved tool calls, synthesize results now.\n\tinsertSyntheticToolResults();\n\n\treturn result;\n}\n"]}
package/dist/stream.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import type { Api, AssistantMessage, AssistantMessageEventStream, Context, Model, ProviderStreamOptions, SimpleStreamOptions } from "./types.ts";
2
- export declare function stream<TApi extends Api>(model: Model<TApi>, context: Context, options?: ProviderStreamOptions): AssistantMessageEventStream;
3
- export declare function complete<TApi extends Api>(model: Model<TApi>, context: Context, options?: ProviderStreamOptions): Promise<AssistantMessage>;
4
- export declare function streamSimple<TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream;
5
- export declare function completeSimple<TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions): Promise<AssistantMessage>;
6
- //# sourceMappingURL=stream.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,GAAG,EACH,gBAAgB,EAChB,2BAA2B,EAC3B,OAAO,EACP,KAAK,EACL,qBAAqB,EACrB,mBAAmB,EAEnB,MAAM,YAAY,CAAC;AAwBpB,wBAAgB,MAAM,CAAC,IAAI,SAAS,GAAG,EACtC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,qBAAqB,GAC7B,2BAA2B,CAG7B;AAED,wBAAsB,QAAQ,CAAC,IAAI,SAAS,GAAG,EAC9C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CAG3B;AAED,wBAAgB,YAAY,CAAC,IAAI,SAAS,GAAG,EAC5C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,2BAA2B,CAG7B;AAED,wBAAsB,cAAc,CAAC,IAAI,SAAS,GAAG,EACpD,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAG3B","sourcesContent":["import { getApiProvider } from \"./api-registry.ts\";\nimport { getEnvApiKey } from \"./env-api-keys.ts\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tAssistantMessageEventStream,\n\tContext,\n\tModel,\n\tProviderStreamOptions,\n\tSimpleStreamOptions,\n\tStreamOptions,\n} from \"./types.ts\";\n\nfunction hasExplicitApiKey(apiKey: string | undefined): apiKey is string {\n\treturn typeof apiKey === \"string\" && apiKey.trim().length > 0;\n}\n\nfunction withEnvApiKey<TOptions extends StreamOptions>(\n\tmodel: Model<Api>,\n\toptions: TOptions | undefined,\n): TOptions | undefined {\n\tif (hasExplicitApiKey(options?.apiKey)) return options;\n\tconst apiKey = getEnvApiKey(model.provider, options?.env);\n\tif (!apiKey) return options;\n\treturn { ...options, apiKey } as TOptions;\n}\n\nfunction resolveApiProvider(api: Api) {\n\tconst provider = getApiProvider(api);\n\tif (!provider) {\n\t\tthrow new Error(`No API provider registered for api: ${api}`);\n\t}\n\treturn provider;\n}\n\nexport function stream<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: ProviderStreamOptions,\n): AssistantMessageEventStream {\n\tconst provider = resolveApiProvider(model.api);\n\treturn provider.stream(model, context, withEnvApiKey(model, options) as StreamOptions);\n}\n\nexport async function complete<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: ProviderStreamOptions,\n): Promise<AssistantMessage> {\n\tconst s = stream(model, context, options);\n\treturn s.result();\n}\n\nexport function streamSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream {\n\tconst provider = resolveApiProvider(model.api);\n\treturn provider.streamSimple(model, context, withEnvApiKey(model, options));\n}\n\nexport async function completeSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): Promise<AssistantMessage> {\n\tconst s = streamSimple(model, context, options);\n\treturn s.result();\n}\n"]}
package/dist/stream.js DELETED
@@ -1,37 +0,0 @@
1
- import { getApiProvider } from "./api-registry.js";
2
- import { getEnvApiKey } from "./env-api-keys.js";
3
- function hasExplicitApiKey(apiKey) {
4
- return typeof apiKey === "string" && apiKey.trim().length > 0;
5
- }
6
- function withEnvApiKey(model, options) {
7
- if (hasExplicitApiKey(options?.apiKey))
8
- return options;
9
- const apiKey = getEnvApiKey(model.provider, options?.env);
10
- if (!apiKey)
11
- return options;
12
- return { ...options, apiKey };
13
- }
14
- function resolveApiProvider(api) {
15
- const provider = getApiProvider(api);
16
- if (!provider) {
17
- throw new Error(`No API provider registered for api: ${api}`);
18
- }
19
- return provider;
20
- }
21
- export function stream(model, context, options) {
22
- const provider = resolveApiProvider(model.api);
23
- return provider.stream(model, context, withEnvApiKey(model, options));
24
- }
25
- export async function complete(model, context, options) {
26
- const s = stream(model, context, options);
27
- return s.result();
28
- }
29
- export function streamSimple(model, context, options) {
30
- const provider = resolveApiProvider(model.api);
31
- return provider.streamSimple(model, context, withEnvApiKey(model, options));
32
- }
33
- export async function completeSimple(model, context, options) {
34
- const s = streamSimple(model, context, options);
35
- return s.result();
36
- }
37
- //# sourceMappingURL=stream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAYjD,SAAS,iBAAiB,CAAC,MAA0B,EAAoB;IACxE,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAAA,CAC9D;AAED,SAAS,aAAa,CACrB,KAAiB,EACjB,OAA6B,EACN;IACvB,IAAI,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC;IACvD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC;IAC5B,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAc,CAAC;AAAA,CAC1C;AAED,SAAS,kBAAkB,CAAC,GAAQ,EAAE;IACrC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,QAAQ,CAAC;AAAA,CAChB;AAED,MAAM,UAAU,MAAM,CACrB,KAAkB,EAClB,OAAgB,EAChB,OAA+B,EACD;IAC9B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAkB,CAAC,CAAC;AAAA,CACvF;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC7B,KAAkB,EAClB,OAAgB,EAChB,OAA+B,EACH;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;AAAA,CAClB;AAED,MAAM,UAAU,YAAY,CAC3B,KAAkB,EAClB,OAAgB,EAChB,OAA6B,EACC;IAC9B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,OAAO,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAAA,CAC5E;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,KAAkB,EAClB,OAAgB,EAChB,OAA6B,EACD;IAC5B,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;AAAA,CAClB","sourcesContent":["import { getApiProvider } from \"./api-registry.ts\";\nimport { getEnvApiKey } from \"./env-api-keys.ts\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tAssistantMessageEventStream,\n\tContext,\n\tModel,\n\tProviderStreamOptions,\n\tSimpleStreamOptions,\n\tStreamOptions,\n} from \"./types.ts\";\n\nfunction hasExplicitApiKey(apiKey: string | undefined): apiKey is string {\n\treturn typeof apiKey === \"string\" && apiKey.trim().length > 0;\n}\n\nfunction withEnvApiKey<TOptions extends StreamOptions>(\n\tmodel: Model<Api>,\n\toptions: TOptions | undefined,\n): TOptions | undefined {\n\tif (hasExplicitApiKey(options?.apiKey)) return options;\n\tconst apiKey = getEnvApiKey(model.provider, options?.env);\n\tif (!apiKey) return options;\n\treturn { ...options, apiKey } as TOptions;\n}\n\nfunction resolveApiProvider(api: Api) {\n\tconst provider = getApiProvider(api);\n\tif (!provider) {\n\t\tthrow new Error(`No API provider registered for api: ${api}`);\n\t}\n\treturn provider;\n}\n\nexport function stream<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: ProviderStreamOptions,\n): AssistantMessageEventStream {\n\tconst provider = resolveApiProvider(model.api);\n\treturn provider.stream(model, context, withEnvApiKey(model, options) as StreamOptions);\n}\n\nexport async function complete<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: ProviderStreamOptions,\n): Promise<AssistantMessage> {\n\tconst s = stream(model, context, options);\n\treturn s.result();\n}\n\nexport function streamSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): AssistantMessageEventStream {\n\tconst provider = resolveApiProvider(model.api);\n\treturn provider.streamSimple(model, context, withEnvApiKey(model, options));\n}\n\nexport async function completeSimple<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tcontext: Context,\n\toptions?: SimpleStreamOptions,\n): Promise<AssistantMessage> {\n\tconst s = streamSimple(model, context, options);\n\treturn s.result();\n}\n"]}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes