@averyyy/pi-ai 0.80.3-piclient.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (650) hide show
  1. package/README.md +1564 -0
  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 +972 -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 +219 -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 +872 -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/api/cloudflare.d.ts +9 -0
  27. package/dist/api/cloudflare.d.ts.map +1 -0
  28. package/dist/api/cloudflare.js +9 -0
  29. package/dist/api/cloudflare.js.map +1 -0
  30. package/dist/api/github-copilot-headers.d.ts +8 -0
  31. package/dist/api/github-copilot-headers.d.ts.map +1 -0
  32. package/dist/api/github-copilot-headers.js +29 -0
  33. package/dist/api/github-copilot-headers.js.map +1 -0
  34. package/dist/api/google-generative-ai.d.ts +13 -0
  35. package/dist/api/google-generative-ai.d.ts.map +1 -0
  36. package/dist/api/google-generative-ai.js +407 -0
  37. package/dist/api/google-generative-ai.js.map +1 -0
  38. package/dist/api/google-generative-ai.lazy.d.ts +3 -0
  39. package/dist/api/google-generative-ai.lazy.d.ts.map +1 -0
  40. package/dist/api/google-generative-ai.lazy.js +3 -0
  41. package/dist/api/google-generative-ai.lazy.js.map +1 -0
  42. package/dist/api/google-shared.d.ts +70 -0
  43. package/dist/api/google-shared.d.ts.map +1 -0
  44. package/dist/api/google-shared.js +329 -0
  45. package/dist/api/google-shared.js.map +1 -0
  46. package/dist/api/google-vertex.d.ts +15 -0
  47. package/dist/api/google-vertex.d.ts.map +1 -0
  48. package/dist/api/google-vertex.js +456 -0
  49. package/dist/api/google-vertex.js.map +1 -0
  50. package/dist/api/google-vertex.lazy.d.ts +3 -0
  51. package/dist/api/google-vertex.lazy.d.ts.map +1 -0
  52. package/dist/api/google-vertex.lazy.js +3 -0
  53. package/dist/api/google-vertex.lazy.js.map +1 -0
  54. package/dist/api/lazy.d.ts +15 -0
  55. package/dist/api/lazy.d.ts.map +1 -0
  56. package/dist/api/lazy.js +59 -0
  57. package/dist/api/lazy.js.map +1 -0
  58. package/dist/api/mistral-conversations.d.ts +25 -0
  59. package/dist/api/mistral-conversations.d.ts.map +1 -0
  60. package/dist/api/mistral-conversations.js +555 -0
  61. package/dist/api/mistral-conversations.js.map +1 -0
  62. package/dist/api/mistral-conversations.lazy.d.ts +3 -0
  63. package/dist/api/mistral-conversations.lazy.d.ts.map +1 -0
  64. package/dist/api/mistral-conversations.lazy.js +3 -0
  65. package/dist/api/mistral-conversations.lazy.js.map +1 -0
  66. package/dist/api/openai-codex-responses.d.ts +30 -0
  67. package/dist/api/openai-codex-responses.d.ts.map +1 -0
  68. package/dist/api/openai-codex-responses.js +1215 -0
  69. package/dist/api/openai-codex-responses.js.map +1 -0
  70. package/dist/api/openai-codex-responses.lazy.d.ts +3 -0
  71. package/dist/api/openai-codex-responses.lazy.d.ts.map +1 -0
  72. package/dist/api/openai-codex-responses.lazy.js +3 -0
  73. package/dist/api/openai-codex-responses.lazy.js.map +1 -0
  74. package/dist/api/openai-completions.d.ts +19 -0
  75. package/dist/api/openai-completions.d.ts.map +1 -0
  76. package/dist/api/openai-completions.js +1058 -0
  77. package/dist/api/openai-completions.js.map +1 -0
  78. package/dist/api/openai-completions.lazy.d.ts +3 -0
  79. package/dist/api/openai-completions.lazy.d.ts.map +1 -0
  80. package/dist/api/openai-completions.lazy.js +3 -0
  81. package/dist/api/openai-completions.lazy.js.map +1 -0
  82. package/dist/api/openai-prompt-cache.d.ts +3 -0
  83. package/dist/api/openai-prompt-cache.d.ts.map +1 -0
  84. package/dist/api/openai-prompt-cache.js +10 -0
  85. package/dist/api/openai-prompt-cache.js.map +1 -0
  86. package/dist/api/openai-responses-shared.d.ts +18 -0
  87. package/dist/api/openai-responses-shared.d.ts.map +1 -0
  88. package/dist/api/openai-responses-shared.js +482 -0
  89. package/dist/api/openai-responses-shared.js.map +1 -0
  90. package/dist/api/openai-responses.d.ts +13 -0
  91. package/dist/api/openai-responses.d.ts.map +1 -0
  92. package/dist/api/openai-responses.js +226 -0
  93. package/dist/api/openai-responses.js.map +1 -0
  94. package/dist/api/openai-responses.lazy.d.ts +3 -0
  95. package/dist/api/openai-responses.lazy.d.ts.map +1 -0
  96. package/dist/api/openai-responses.lazy.js +3 -0
  97. package/dist/api/openai-responses.lazy.js.map +1 -0
  98. package/dist/api/openrouter-images.d.ts +3 -0
  99. package/dist/api/openrouter-images.d.ts.map +1 -0
  100. package/dist/api/openrouter-images.js +126 -0
  101. package/dist/api/openrouter-images.js.map +1 -0
  102. package/dist/api/openrouter-images.lazy.d.ts +3 -0
  103. package/dist/api/openrouter-images.lazy.d.ts.map +1 -0
  104. package/dist/api/openrouter-images.lazy.js +4 -0
  105. package/dist/api/openrouter-images.lazy.js.map +1 -0
  106. package/dist/api/simple-options.d.ts +9 -0
  107. package/dist/api/simple-options.d.ts.map +1 -0
  108. package/dist/api/simple-options.js +52 -0
  109. package/dist/api/simple-options.js.map +1 -0
  110. package/dist/api/transform-messages.d.ts +8 -0
  111. package/dist/api/transform-messages.d.ts.map +1 -0
  112. package/dist/api/transform-messages.js +184 -0
  113. package/dist/api/transform-messages.js.map +1 -0
  114. package/dist/api-registry.d.ts +20 -0
  115. package/dist/api-registry.d.ts.map +1 -0
  116. package/dist/api-registry.js +44 -0
  117. package/dist/api-registry.js.map +1 -0
  118. package/dist/auth/context.d.ts +7 -0
  119. package/dist/auth/context.d.ts.map +1 -0
  120. package/dist/auth/context.js +42 -0
  121. package/dist/auth/context.js.map +1 -0
  122. package/dist/auth/credential-store.d.ts +16 -0
  123. package/dist/auth/credential-store.d.ts.map +1 -0
  124. package/dist/auth/credential-store.js +37 -0
  125. package/dist/auth/credential-store.js.map +1 -0
  126. package/dist/auth/helpers.d.ts +20 -0
  127. package/dist/auth/helpers.d.ts.map +1 -0
  128. package/dist/auth/helpers.js +46 -0
  129. package/dist/auth/helpers.js.map +1 -0
  130. package/dist/auth/resolve.d.ts +26 -0
  131. package/dist/auth/resolve.d.ts.map +1 -0
  132. package/dist/auth/resolve.js +101 -0
  133. package/dist/auth/resolve.js.map +1 -0
  134. package/dist/auth/types.d.ts +180 -0
  135. package/dist/auth/types.d.ts.map +1 -0
  136. package/dist/auth/types.js +2 -0
  137. package/dist/auth/types.js.map +1 -0
  138. package/dist/bedrock-provider.d.ts +5 -0
  139. package/dist/bedrock-provider.d.ts.map +1 -0
  140. package/dist/bedrock-provider.js +6 -0
  141. package/dist/bedrock-provider.js.map +1 -0
  142. package/dist/cli.d.ts +3 -0
  143. package/dist/cli.d.ts.map +1 -0
  144. package/dist/cli.js +130 -0
  145. package/dist/cli.js.map +1 -0
  146. package/dist/compat.d.ts +65 -0
  147. package/dist/compat.d.ts.map +1 -0
  148. package/dist/compat.js +182 -0
  149. package/dist/compat.js.map +1 -0
  150. package/dist/env-api-keys.d.ts +18 -0
  151. package/dist/env-api-keys.d.ts.map +1 -0
  152. package/dist/env-api-keys.js +145 -0
  153. package/dist/env-api-keys.js.map +1 -0
  154. package/dist/image-models.d.ts +10 -0
  155. package/dist/image-models.d.ts.map +1 -0
  156. package/dist/image-models.generated.d.ts +530 -0
  157. package/dist/image-models.generated.d.ts.map +1 -0
  158. package/dist/image-models.generated.js +532 -0
  159. package/dist/image-models.generated.js.map +1 -0
  160. package/dist/image-models.js +23 -0
  161. package/dist/image-models.js.map +1 -0
  162. package/dist/images-api-registry.d.ts +14 -0
  163. package/dist/images-api-registry.d.ts.map +1 -0
  164. package/dist/images-api-registry.js +22 -0
  165. package/dist/images-api-registry.js.map +1 -0
  166. package/dist/images-models.d.ts +93 -0
  167. package/dist/images-models.d.ts.map +1 -0
  168. package/dist/images-models.js +141 -0
  169. package/dist/images-models.js.map +1 -0
  170. package/dist/images.d.ts +4 -0
  171. package/dist/images.d.ts.map +1 -0
  172. package/dist/images.js +14 -0
  173. package/dist/images.js.map +1 -0
  174. package/dist/index.d.ts +31 -0
  175. package/dist/index.d.ts.map +1 -0
  176. package/dist/index.js +19 -0
  177. package/dist/index.js.map +1 -0
  178. package/dist/legacy-api-aliases.d.ts +42 -0
  179. package/dist/legacy-api-aliases.d.ts.map +1 -0
  180. package/dist/legacy-api-aliases.js +49 -0
  181. package/dist/legacy-api-aliases.js.map +1 -0
  182. package/dist/models.d.ts +142 -0
  183. package/dist/models.d.ts.map +1 -0
  184. package/dist/models.generated.d.ts +20965 -0
  185. package/dist/models.generated.d.ts.map +1 -0
  186. package/dist/models.generated.js +75 -0
  187. package/dist/models.generated.js.map +1 -0
  188. package/dist/models.js +238 -0
  189. package/dist/models.js.map +1 -0
  190. package/dist/oauth.d.ts +2 -0
  191. package/dist/oauth.d.ts.map +1 -0
  192. package/dist/oauth.js +2 -0
  193. package/dist/oauth.js.map +1 -0
  194. package/dist/providers/all.d.ts +21 -0
  195. package/dist/providers/all.d.ts.map +1 -0
  196. package/dist/providers/all.js +114 -0
  197. package/dist/providers/all.js.map +1 -0
  198. package/dist/providers/amazon-bedrock.d.ts +3 -0
  199. package/dist/providers/amazon-bedrock.d.ts.map +1 -0
  200. package/dist/providers/amazon-bedrock.js +39 -0
  201. package/dist/providers/amazon-bedrock.js.map +1 -0
  202. package/dist/providers/amazon-bedrock.models.d.ts +1837 -0
  203. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -0
  204. package/dist/providers/amazon-bedrock.models.js +1794 -0
  205. package/dist/providers/amazon-bedrock.models.js.map +1 -0
  206. package/dist/providers/ant-ling.d.ts +3 -0
  207. package/dist/providers/ant-ling.d.ts.map +1 -0
  208. package/dist/providers/ant-ling.js +15 -0
  209. package/dist/providers/ant-ling.js.map +1 -0
  210. package/dist/providers/ant-ling.models.d.ts +86 -0
  211. package/dist/providers/ant-ling.models.d.ts.map +1 -0
  212. package/dist/providers/ant-ling.models.js +60 -0
  213. package/dist/providers/ant-ling.models.js.map +1 -0
  214. package/dist/providers/anthropic.d.ts +3 -0
  215. package/dist/providers/anthropic.d.ts.map +1 -0
  216. package/dist/providers/anthropic.js +20 -0
  217. package/dist/providers/anthropic.js.map +1 -0
  218. package/dist/providers/anthropic.models.d.ts +444 -0
  219. package/dist/providers/anthropic.models.d.ts.map +1 -0
  220. package/dist/providers/anthropic.models.js +423 -0
  221. package/dist/providers/anthropic.models.js.map +1 -0
  222. package/dist/providers/azure-openai-responses.d.ts +3 -0
  223. package/dist/providers/azure-openai-responses.d.ts.map +1 -0
  224. package/dist/providers/azure-openai-responses.js +14 -0
  225. package/dist/providers/azure-openai-responses.js.map +1 -0
  226. package/dist/providers/azure-openai-responses.models.d.ts +804 -0
  227. package/dist/providers/azure-openai-responses.models.d.ts.map +1 -0
  228. package/dist/providers/azure-openai-responses.models.js +743 -0
  229. package/dist/providers/azure-openai-responses.models.js.map +1 -0
  230. package/dist/providers/cerebras.d.ts +3 -0
  231. package/dist/providers/cerebras.d.ts.map +1 -0
  232. package/dist/providers/cerebras.js +15 -0
  233. package/dist/providers/cerebras.js.map +1 -0
  234. package/dist/providers/cerebras.models.d.ts +45 -0
  235. package/dist/providers/cerebras.models.d.ts.map +1 -0
  236. package/dist/providers/cerebras.models.js +41 -0
  237. package/dist/providers/cerebras.models.js.map +1 -0
  238. package/dist/providers/cloudflare-ai-gateway.d.ts +3 -0
  239. package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -0
  240. package/dist/providers/cloudflare-ai-gateway.js +20 -0
  241. package/dist/providers/cloudflare-ai-gateway.js.map +1 -0
  242. package/dist/providers/cloudflare-ai-gateway.models.d.ts +765 -0
  243. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -0
  244. package/dist/providers/cloudflare-ai-gateway.models.js +666 -0
  245. package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -0
  246. package/dist/providers/cloudflare-auth.d.ts +4 -0
  247. package/dist/providers/cloudflare-auth.d.ts.map +1 -0
  248. package/dist/providers/cloudflare-auth.js +85 -0
  249. package/dist/providers/cloudflare-auth.js.map +1 -0
  250. package/dist/providers/cloudflare-workers-ai.d.ts +3 -0
  251. package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -0
  252. package/dist/providers/cloudflare-workers-ai.js +14 -0
  253. package/dist/providers/cloudflare-workers-ai.js.map +1 -0
  254. package/dist/providers/cloudflare-workers-ai.models.d.ts +302 -0
  255. package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -0
  256. package/dist/providers/cloudflare-workers-ai.models.js +239 -0
  257. package/dist/providers/cloudflare-workers-ai.models.js.map +1 -0
  258. package/dist/providers/cloudflare.d.ts +13 -0
  259. package/dist/providers/cloudflare.d.ts.map +1 -0
  260. package/dist/providers/cloudflare.js +26 -0
  261. package/dist/providers/cloudflare.js.map +1 -0
  262. package/dist/providers/deepseek.d.ts +3 -0
  263. package/dist/providers/deepseek.d.ts.map +1 -0
  264. package/dist/providers/deepseek.js +15 -0
  265. package/dist/providers/deepseek.js.map +1 -0
  266. package/dist/providers/deepseek.models.d.ts +63 -0
  267. package/dist/providers/deepseek.models.d.ts.map +1 -0
  268. package/dist/providers/deepseek.models.js +43 -0
  269. package/dist/providers/deepseek.models.js.map +1 -0
  270. package/dist/providers/faux.d.ts +97 -0
  271. package/dist/providers/faux.d.ts.map +1 -0
  272. package/dist/providers/faux.js +395 -0
  273. package/dist/providers/faux.js.map +1 -0
  274. package/dist/providers/fireworks.d.ts +3 -0
  275. package/dist/providers/fireworks.d.ts.map +1 -0
  276. package/dist/providers/fireworks.js +19 -0
  277. package/dist/providers/fireworks.js.map +1 -0
  278. package/dist/providers/fireworks.models.d.ts +376 -0
  279. package/dist/providers/fireworks.models.d.ts.map +1 -0
  280. package/dist/providers/fireworks.models.js +294 -0
  281. package/dist/providers/fireworks.models.js.map +1 -0
  282. package/dist/providers/github-copilot-headers.d.ts +8 -0
  283. package/dist/providers/github-copilot-headers.d.ts.map +1 -0
  284. package/dist/providers/github-copilot-headers.js +29 -0
  285. package/dist/providers/github-copilot-headers.js.map +1 -0
  286. package/dist/providers/github-copilot.d.ts +3 -0
  287. package/dist/providers/github-copilot.d.ts.map +1 -0
  288. package/dist/providers/github-copilot.js +25 -0
  289. package/dist/providers/github-copilot.js.map +1 -0
  290. package/dist/providers/github-copilot.models.d.ts +616 -0
  291. package/dist/providers/github-copilot.models.d.ts.map +1 -0
  292. package/dist/providers/github-copilot.models.js +426 -0
  293. package/dist/providers/github-copilot.models.js.map +1 -0
  294. package/dist/providers/google-shared.d.ts +70 -0
  295. package/dist/providers/google-shared.d.ts.map +1 -0
  296. package/dist/providers/google-shared.js +329 -0
  297. package/dist/providers/google-shared.js.map +1 -0
  298. package/dist/providers/google-vertex.d.ts +3 -0
  299. package/dist/providers/google-vertex.d.ts.map +1 -0
  300. package/dist/providers/google-vertex.js +35 -0
  301. package/dist/providers/google-vertex.js.map +1 -0
  302. package/dist/providers/google-vertex.models.d.ts +202 -0
  303. package/dist/providers/google-vertex.models.d.ts.map +1 -0
  304. package/dist/providers/google-vertex.models.js +182 -0
  305. package/dist/providers/google-vertex.models.js.map +1 -0
  306. package/dist/providers/google.d.ts +3 -0
  307. package/dist/providers/google.d.ts.map +1 -0
  308. package/dist/providers/google.js +15 -0
  309. package/dist/providers/google.js.map +1 -0
  310. package/dist/providers/google.models.d.ts +328 -0
  311. package/dist/providers/google.models.d.ts.map +1 -0
  312. package/dist/providers/google.models.js +288 -0
  313. package/dist/providers/google.models.js.map +1 -0
  314. package/dist/providers/groq.d.ts +3 -0
  315. package/dist/providers/groq.d.ts.map +1 -0
  316. package/dist/providers/groq.js +15 -0
  317. package/dist/providers/groq.js.map +1 -0
  318. package/dist/providers/groq.models.d.ts +128 -0
  319. package/dist/providers/groq.models.d.ts.map +1 -0
  320. package/dist/providers/groq.models.js +125 -0
  321. package/dist/providers/groq.models.js.map +1 -0
  322. package/dist/providers/huggingface.d.ts +3 -0
  323. package/dist/providers/huggingface.d.ts.map +1 -0
  324. package/dist/providers/huggingface.js +15 -0
  325. package/dist/providers/huggingface.js.map +1 -0
  326. package/dist/providers/huggingface.models.d.ts +963 -0
  327. package/dist/providers/huggingface.models.d.ts.map +1 -0
  328. package/dist/providers/huggingface.models.js +869 -0
  329. package/dist/providers/huggingface.models.js.map +1 -0
  330. package/dist/providers/images/openrouter.d.ts +3 -0
  331. package/dist/providers/images/openrouter.d.ts.map +1 -0
  332. package/dist/providers/images/openrouter.js +128 -0
  333. package/dist/providers/images/openrouter.js.map +1 -0
  334. package/dist/providers/images/register-builtins.d.ts +4 -0
  335. package/dist/providers/images/register-builtins.d.ts.map +1 -0
  336. package/dist/providers/images/register-builtins.js +34 -0
  337. package/dist/providers/images/register-builtins.js.map +1 -0
  338. package/dist/providers/kimi-coding.d.ts +3 -0
  339. package/dist/providers/kimi-coding.d.ts.map +1 -0
  340. package/dist/providers/kimi-coding.js +15 -0
  341. package/dist/providers/kimi-coding.js.map +1 -0
  342. package/dist/providers/kimi-coding.models.d.ts +63 -0
  343. package/dist/providers/kimi-coding.models.d.ts.map +1 -0
  344. package/dist/providers/kimi-coding.models.js +59 -0
  345. package/dist/providers/kimi-coding.models.js.map +1 -0
  346. package/dist/providers/minimax-cn.d.ts +3 -0
  347. package/dist/providers/minimax-cn.d.ts.map +1 -0
  348. package/dist/providers/minimax-cn.js +15 -0
  349. package/dist/providers/minimax-cn.js.map +1 -0
  350. package/dist/providers/minimax-cn.models.d.ts +54 -0
  351. package/dist/providers/minimax-cn.models.d.ts.map +1 -0
  352. package/dist/providers/minimax-cn.models.js +56 -0
  353. package/dist/providers/minimax-cn.models.js.map +1 -0
  354. package/dist/providers/minimax.d.ts +3 -0
  355. package/dist/providers/minimax.d.ts.map +1 -0
  356. package/dist/providers/minimax.js +15 -0
  357. package/dist/providers/minimax.js.map +1 -0
  358. package/dist/providers/minimax.models.d.ts +54 -0
  359. package/dist/providers/minimax.models.d.ts.map +1 -0
  360. package/dist/providers/minimax.models.js +56 -0
  361. package/dist/providers/minimax.models.js.map +1 -0
  362. package/dist/providers/mistral.d.ts +3 -0
  363. package/dist/providers/mistral.d.ts.map +1 -0
  364. package/dist/providers/mistral.js +15 -0
  365. package/dist/providers/mistral.js.map +1 -0
  366. package/dist/providers/mistral.models.d.ts +513 -0
  367. package/dist/providers/mistral.models.d.ts.map +1 -0
  368. package/dist/providers/mistral.models.js +515 -0
  369. package/dist/providers/mistral.models.js.map +1 -0
  370. package/dist/providers/moonshotai-cn.d.ts +3 -0
  371. package/dist/providers/moonshotai-cn.d.ts.map +1 -0
  372. package/dist/providers/moonshotai-cn.js +15 -0
  373. package/dist/providers/moonshotai-cn.js.map +1 -0
  374. package/dist/providers/moonshotai-cn.models.d.ts +234 -0
  375. package/dist/providers/moonshotai-cn.models.d.ts.map +1 -0
  376. package/dist/providers/moonshotai-cn.models.js +169 -0
  377. package/dist/providers/moonshotai-cn.models.js.map +1 -0
  378. package/dist/providers/moonshotai.d.ts +3 -0
  379. package/dist/providers/moonshotai.d.ts.map +1 -0
  380. package/dist/providers/moonshotai.js +15 -0
  381. package/dist/providers/moonshotai.js.map +1 -0
  382. package/dist/providers/moonshotai.models.d.ts +234 -0
  383. package/dist/providers/moonshotai.models.d.ts.map +1 -0
  384. package/dist/providers/moonshotai.models.js +169 -0
  385. package/dist/providers/moonshotai.models.js.map +1 -0
  386. package/dist/providers/nvidia.d.ts +3 -0
  387. package/dist/providers/nvidia.d.ts.map +1 -0
  388. package/dist/providers/nvidia.js +15 -0
  389. package/dist/providers/nvidia.js.map +1 -0
  390. package/dist/providers/nvidia.models.d.ts +563 -0
  391. package/dist/providers/nvidia.models.d.ts.map +1 -0
  392. package/dist/providers/nvidia.models.js +385 -0
  393. package/dist/providers/nvidia.models.js.map +1 -0
  394. package/dist/providers/openai-codex-responses.d.ts +30 -0
  395. package/dist/providers/openai-codex-responses.d.ts.map +1 -0
  396. package/dist/providers/openai-codex-responses.js +1173 -0
  397. package/dist/providers/openai-codex-responses.js.map +1 -0
  398. package/dist/providers/openai-codex.d.ts +3 -0
  399. package/dist/providers/openai-codex.d.ts.map +1 -0
  400. package/dist/providers/openai-codex.js +18 -0
  401. package/dist/providers/openai-codex.js.map +1 -0
  402. package/dist/providers/openai-codex.models.d.ts +87 -0
  403. package/dist/providers/openai-codex.models.d.ts.map +1 -0
  404. package/dist/providers/openai-codex.models.js +77 -0
  405. package/dist/providers/openai-codex.models.js.map +1 -0
  406. package/dist/providers/openai-completions.d.ts +19 -0
  407. package/dist/providers/openai-completions.d.ts.map +1 -0
  408. package/dist/providers/openai-completions.js +977 -0
  409. package/dist/providers/openai-completions.js.map +1 -0
  410. package/dist/providers/openai-prompt-cache.d.ts +3 -0
  411. package/dist/providers/openai-prompt-cache.d.ts.map +1 -0
  412. package/dist/providers/openai-prompt-cache.js +10 -0
  413. package/dist/providers/openai-prompt-cache.js.map +1 -0
  414. package/dist/providers/openai-responses-shared.d.ts +18 -0
  415. package/dist/providers/openai-responses-shared.d.ts.map +1 -0
  416. package/dist/providers/openai-responses-shared.js +496 -0
  417. package/dist/providers/openai-responses-shared.js.map +1 -0
  418. package/dist/providers/openai-responses.d.ts +13 -0
  419. package/dist/providers/openai-responses.d.ts.map +1 -0
  420. package/dist/providers/openai-responses.js +234 -0
  421. package/dist/providers/openai-responses.js.map +1 -0
  422. package/dist/providers/openai.d.ts +3 -0
  423. package/dist/providers/openai.d.ts.map +1 -0
  424. package/dist/providers/openai.js +15 -0
  425. package/dist/providers/openai.js.map +1 -0
  426. package/dist/providers/openai.models.d.ts +805 -0
  427. package/dist/providers/openai.models.d.ts.map +1 -0
  428. package/dist/providers/openai.models.js +743 -0
  429. package/dist/providers/openai.models.js.map +1 -0
  430. package/dist/providers/opencode-go.d.ts +3 -0
  431. package/dist/providers/opencode-go.d.ts.map +1 -0
  432. package/dist/providers/opencode-go.js +18 -0
  433. package/dist/providers/opencode-go.js.map +1 -0
  434. package/dist/providers/opencode-go.models.d.ts +309 -0
  435. package/dist/providers/opencode-go.models.d.ts.map +1 -0
  436. package/dist/providers/opencode-go.models.js +240 -0
  437. package/dist/providers/opencode-go.models.js.map +1 -0
  438. package/dist/providers/opencode.d.ts +3 -0
  439. package/dist/providers/opencode.d.ts.map +1 -0
  440. package/dist/providers/opencode.js +22 -0
  441. package/dist/providers/opencode.js.map +1 -0
  442. package/dist/providers/opencode.models.d.ts +976 -0
  443. package/dist/providers/opencode.models.d.ts.map +1 -0
  444. package/dist/providers/opencode.models.js +815 -0
  445. package/dist/providers/opencode.models.js.map +1 -0
  446. package/dist/providers/openrouter-images.d.ts +3 -0
  447. package/dist/providers/openrouter-images.d.ts.map +1 -0
  448. package/dist/providers/openrouter-images.js +14 -0
  449. package/dist/providers/openrouter-images.js.map +1 -0
  450. package/dist/providers/openrouter.d.ts +3 -0
  451. package/dist/providers/openrouter.d.ts.map +1 -0
  452. package/dist/providers/openrouter.js +15 -0
  453. package/dist/providers/openrouter.js.map +1 -0
  454. package/dist/providers/openrouter.models.d.ts +5402 -0
  455. package/dist/providers/openrouter.models.d.ts.map +1 -0
  456. package/dist/providers/openrouter.models.js +4634 -0
  457. package/dist/providers/openrouter.models.js.map +1 -0
  458. package/dist/providers/register-builtins.d.ts +35 -0
  459. package/dist/providers/register-builtins.d.ts.map +1 -0
  460. package/dist/providers/register-builtins.js +254 -0
  461. package/dist/providers/register-builtins.js.map +1 -0
  462. package/dist/providers/simple-options.d.ts +8 -0
  463. package/dist/providers/simple-options.d.ts.map +1 -0
  464. package/dist/providers/simple-options.js +42 -0
  465. package/dist/providers/simple-options.js.map +1 -0
  466. package/dist/providers/together.d.ts +3 -0
  467. package/dist/providers/together.d.ts.map +1 -0
  468. package/dist/providers/together.js +15 -0
  469. package/dist/providers/together.js.map +1 -0
  470. package/dist/providers/together.models.d.ts +598 -0
  471. package/dist/providers/together.models.d.ts.map +1 -0
  472. package/dist/providers/together.models.js +380 -0
  473. package/dist/providers/together.models.js.map +1 -0
  474. package/dist/providers/transform-messages.d.ts +8 -0
  475. package/dist/providers/transform-messages.d.ts.map +1 -0
  476. package/dist/providers/transform-messages.js +184 -0
  477. package/dist/providers/transform-messages.js.map +1 -0
  478. package/dist/providers/vercel-ai-gateway.d.ts +3 -0
  479. package/dist/providers/vercel-ai-gateway.d.ts.map +1 -0
  480. package/dist/providers/vercel-ai-gateway.js +15 -0
  481. package/dist/providers/vercel-ai-gateway.js.map +1 -0
  482. package/dist/providers/vercel-ai-gateway.models.d.ts +3230 -0
  483. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -0
  484. package/dist/providers/vercel-ai-gateway.models.js +3187 -0
  485. package/dist/providers/vercel-ai-gateway.models.js.map +1 -0
  486. package/dist/providers/xai.d.ts +3 -0
  487. package/dist/providers/xai.d.ts.map +1 -0
  488. package/dist/providers/xai.js +15 -0
  489. package/dist/providers/xai.js.map +1 -0
  490. package/dist/providers/xai.models.d.ts +157 -0
  491. package/dist/providers/xai.models.d.ts.map +1 -0
  492. package/dist/providers/xai.models.js +131 -0
  493. package/dist/providers/xai.models.js.map +1 -0
  494. package/dist/providers/xiaomi-token-plan-ams.d.ts +3 -0
  495. package/dist/providers/xiaomi-token-plan-ams.d.ts.map +1 -0
  496. package/dist/providers/xiaomi-token-plan-ams.js +15 -0
  497. package/dist/providers/xiaomi-token-plan-ams.js.map +1 -0
  498. package/dist/providers/xiaomi-token-plan-ams.models.d.ts +108 -0
  499. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -0
  500. package/dist/providers/xiaomi-token-plan-ams.models.js +95 -0
  501. package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -0
  502. package/dist/providers/xiaomi-token-plan-cn.d.ts +3 -0
  503. package/dist/providers/xiaomi-token-plan-cn.d.ts.map +1 -0
  504. package/dist/providers/xiaomi-token-plan-cn.js +15 -0
  505. package/dist/providers/xiaomi-token-plan-cn.js.map +1 -0
  506. package/dist/providers/xiaomi-token-plan-cn.models.d.ts +108 -0
  507. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -0
  508. package/dist/providers/xiaomi-token-plan-cn.models.js +95 -0
  509. package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -0
  510. package/dist/providers/xiaomi-token-plan-sgp.d.ts +3 -0
  511. package/dist/providers/xiaomi-token-plan-sgp.d.ts.map +1 -0
  512. package/dist/providers/xiaomi-token-plan-sgp.js +15 -0
  513. package/dist/providers/xiaomi-token-plan-sgp.js.map +1 -0
  514. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +108 -0
  515. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -0
  516. package/dist/providers/xiaomi-token-plan-sgp.models.js +95 -0
  517. package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -0
  518. package/dist/providers/xiaomi.d.ts +3 -0
  519. package/dist/providers/xiaomi.d.ts.map +1 -0
  520. package/dist/providers/xiaomi.js +15 -0
  521. package/dist/providers/xiaomi.js.map +1 -0
  522. package/dist/providers/xiaomi.models.d.ts +129 -0
  523. package/dist/providers/xiaomi.models.d.ts.map +1 -0
  524. package/dist/providers/xiaomi.models.js +113 -0
  525. package/dist/providers/xiaomi.models.js.map +1 -0
  526. package/dist/providers/zai-coding-cn.d.ts +3 -0
  527. package/dist/providers/zai-coding-cn.d.ts.map +1 -0
  528. package/dist/providers/zai-coding-cn.js +15 -0
  529. package/dist/providers/zai-coding-cn.js.map +1 -0
  530. package/dist/providers/zai-coding-cn.models.d.ts +153 -0
  531. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -0
  532. package/dist/providers/zai-coding-cn.models.js +114 -0
  533. package/dist/providers/zai-coding-cn.models.js.map +1 -0
  534. package/dist/providers/zai.d.ts +3 -0
  535. package/dist/providers/zai.d.ts.map +1 -0
  536. package/dist/providers/zai.js +15 -0
  537. package/dist/providers/zai.js.map +1 -0
  538. package/dist/providers/zai.models.d.ts +153 -0
  539. package/dist/providers/zai.models.d.ts.map +1 -0
  540. package/dist/providers/zai.models.js +114 -0
  541. package/dist/providers/zai.models.js.map +1 -0
  542. package/dist/session-resources.d.ts +4 -0
  543. package/dist/session-resources.d.ts.map +1 -0
  544. package/dist/session-resources.js +22 -0
  545. package/dist/session-resources.js.map +1 -0
  546. package/dist/stream.d.ts +8 -0
  547. package/dist/stream.d.ts.map +1 -0
  548. package/dist/stream.js +39 -0
  549. package/dist/stream.js.map +1 -0
  550. package/dist/types.d.ts +597 -0
  551. package/dist/types.d.ts.map +1 -0
  552. package/dist/types.js +2 -0
  553. package/dist/types.js.map +1 -0
  554. package/dist/utils/abort-signals.d.ts +6 -0
  555. package/dist/utils/abort-signals.d.ts.map +1 -0
  556. package/dist/utils/abort-signals.js +34 -0
  557. package/dist/utils/abort-signals.js.map +1 -0
  558. package/dist/utils/diagnostics.d.ts +19 -0
  559. package/dist/utils/diagnostics.d.ts.map +1 -0
  560. package/dist/utils/diagnostics.js +25 -0
  561. package/dist/utils/diagnostics.js.map +1 -0
  562. package/dist/utils/error-body.d.ts +25 -0
  563. package/dist/utils/error-body.d.ts.map +1 -0
  564. package/dist/utils/error-body.js +109 -0
  565. package/dist/utils/error-body.js.map +1 -0
  566. package/dist/utils/estimate.d.ts +17 -0
  567. package/dist/utils/estimate.d.ts.map +1 -0
  568. package/dist/utils/estimate.js +95 -0
  569. package/dist/utils/estimate.js.map +1 -0
  570. package/dist/utils/event-stream.d.ts +21 -0
  571. package/dist/utils/event-stream.d.ts.map +1 -0
  572. package/dist/utils/event-stream.js +81 -0
  573. package/dist/utils/event-stream.js.map +1 -0
  574. package/dist/utils/hash.d.ts +3 -0
  575. package/dist/utils/hash.d.ts.map +1 -0
  576. package/dist/utils/hash.js +14 -0
  577. package/dist/utils/hash.js.map +1 -0
  578. package/dist/utils/headers.d.ts +4 -0
  579. package/dist/utils/headers.d.ts.map +1 -0
  580. package/dist/utils/headers.js +18 -0
  581. package/dist/utils/headers.js.map +1 -0
  582. package/dist/utils/json-parse.d.ts +16 -0
  583. package/dist/utils/json-parse.d.ts.map +1 -0
  584. package/dist/utils/json-parse.js +113 -0
  585. package/dist/utils/json-parse.js.map +1 -0
  586. package/dist/utils/node-http-proxy.d.ts +4 -0
  587. package/dist/utils/node-http-proxy.d.ts.map +1 -0
  588. package/dist/utils/node-http-proxy.js +92 -0
  589. package/dist/utils/node-http-proxy.js.map +1 -0
  590. package/dist/utils/oauth/anthropic.d.ts +27 -0
  591. package/dist/utils/oauth/anthropic.d.ts.map +1 -0
  592. package/dist/utils/oauth/anthropic.js +367 -0
  593. package/dist/utils/oauth/anthropic.js.map +1 -0
  594. package/dist/utils/oauth/device-code.d.ts +21 -0
  595. package/dist/utils/oauth/device-code.d.ts.map +1 -0
  596. package/dist/utils/oauth/device-code.js +56 -0
  597. package/dist/utils/oauth/device-code.js.map +1 -0
  598. package/dist/utils/oauth/github-copilot.d.ts +32 -0
  599. package/dist/utils/oauth/github-copilot.d.ts.map +1 -0
  600. package/dist/utils/oauth/github-copilot.js +370 -0
  601. package/dist/utils/oauth/github-copilot.js.map +1 -0
  602. package/dist/utils/oauth/index.d.ts +58 -0
  603. package/dist/utils/oauth/index.d.ts.map +1 -0
  604. package/dist/utils/oauth/index.js +122 -0
  605. package/dist/utils/oauth/index.js.map +1 -0
  606. package/dist/utils/oauth/load.d.ts +5 -0
  607. package/dist/utils/oauth/load.d.ts.map +1 -0
  608. package/dist/utils/oauth/load.js +22 -0
  609. package/dist/utils/oauth/load.js.map +1 -0
  610. package/dist/utils/oauth/oauth-page.d.ts +3 -0
  611. package/dist/utils/oauth/oauth-page.d.ts.map +1 -0
  612. package/dist/utils/oauth/oauth-page.js +105 -0
  613. package/dist/utils/oauth/oauth-page.js.map +1 -0
  614. package/dist/utils/oauth/openai-codex.d.ts +45 -0
  615. package/dist/utils/oauth/openai-codex.d.ts.map +1 -0
  616. package/dist/utils/oauth/openai-codex.js +537 -0
  617. package/dist/utils/oauth/openai-codex.js.map +1 -0
  618. package/dist/utils/oauth/pkce.d.ts +13 -0
  619. package/dist/utils/oauth/pkce.d.ts.map +1 -0
  620. package/dist/utils/oauth/pkce.js +31 -0
  621. package/dist/utils/oauth/pkce.js.map +1 -0
  622. package/dist/utils/oauth/types.d.ts +64 -0
  623. package/dist/utils/oauth/types.d.ts.map +1 -0
  624. package/dist/utils/oauth/types.js +2 -0
  625. package/dist/utils/oauth/types.js.map +1 -0
  626. package/dist/utils/overflow.d.ts +57 -0
  627. package/dist/utils/overflow.d.ts.map +1 -0
  628. package/dist/utils/overflow.js +155 -0
  629. package/dist/utils/overflow.js.map +1 -0
  630. package/dist/utils/provider-env.d.ts +7 -0
  631. package/dist/utils/provider-env.d.ts.map +1 -0
  632. package/dist/utils/provider-env.js +44 -0
  633. package/dist/utils/provider-env.js.map +1 -0
  634. package/dist/utils/retry.d.ts +12 -0
  635. package/dist/utils/retry.d.ts.map +1 -0
  636. package/dist/utils/retry.js +86 -0
  637. package/dist/utils/retry.js.map +1 -0
  638. package/dist/utils/sanitize-unicode.d.ts +22 -0
  639. package/dist/utils/sanitize-unicode.d.ts.map +1 -0
  640. package/dist/utils/sanitize-unicode.js +26 -0
  641. package/dist/utils/sanitize-unicode.js.map +1 -0
  642. package/dist/utils/typebox-helpers.d.ts +17 -0
  643. package/dist/utils/typebox-helpers.d.ts.map +1 -0
  644. package/dist/utils/typebox-helpers.js +21 -0
  645. package/dist/utils/typebox-helpers.js.map +1 -0
  646. package/dist/utils/validation.d.ts +18 -0
  647. package/dist/utils/validation.d.ts.map +1 -0
  648. package/dist/utils/validation.js +281 -0
  649. package/dist/utils/validation.js.map +1 -0
  650. package/package.json +92 -0
@@ -0,0 +1,234 @@
1
+ import OpenAI from "openai";
2
+ import { clampThinkingLevel } from "../models.js";
3
+ import { AssistantMessageEventStream } from "../utils/event-stream.js";
4
+ import { headersToRecord } from "../utils/headers.js";
5
+ import { isCloudflareProvider, resolveCloudflareBaseUrl } from "./cloudflare.js";
6
+ import { buildCopilotDynamicHeaders, hasCopilotVisionInput } from "./github-copilot-headers.js";
7
+ import { clampOpenAIPromptCacheKey } from "./openai-prompt-cache.js";
8
+ import { convertResponsesMessages, convertResponsesTools, processResponsesStream } from "./openai-responses-shared.js";
9
+ import { buildBaseOptions } from "./simple-options.js";
10
+ const OPENAI_TOOL_CALL_PROVIDERS = new Set(["openai", "openai-codex", "opencode"]);
11
+ /**
12
+ * Resolve cache retention preference.
13
+ * Defaults to "short" and uses PI_CACHE_RETENTION for backward compatibility.
14
+ */
15
+ function resolveCacheRetention(cacheRetention) {
16
+ if (cacheRetention) {
17
+ return cacheRetention;
18
+ }
19
+ if (typeof process !== "undefined" && process.env.PI_CACHE_RETENTION === "long") {
20
+ return "long";
21
+ }
22
+ return "short";
23
+ }
24
+ function getCompat(model) {
25
+ return {
26
+ supportsDeveloperRole: model.compat?.supportsDeveloperRole ?? true,
27
+ sendSessionIdHeader: model.compat?.sendSessionIdHeader ?? true,
28
+ supportsLongCacheRetention: model.compat?.supportsLongCacheRetention ?? true,
29
+ };
30
+ }
31
+ function getPromptCacheRetention(compat, cacheRetention) {
32
+ return cacheRetention === "long" && compat.supportsLongCacheRetention ? "24h" : undefined;
33
+ }
34
+ function formatOpenAIResponsesError(error) {
35
+ if (error instanceof Error) {
36
+ const status = error.status;
37
+ const statusCode = typeof status === "number" ? status : undefined;
38
+ if (statusCode !== undefined) {
39
+ return `OpenAI API error (${statusCode}): ${error.message}`;
40
+ }
41
+ return error.message;
42
+ }
43
+ try {
44
+ return JSON.stringify(error);
45
+ }
46
+ catch {
47
+ return String(error);
48
+ }
49
+ }
50
+ /**
51
+ * Generate function for OpenAI Responses API
52
+ */
53
+ export const streamOpenAIResponses = (model, context, options) => {
54
+ const stream = new AssistantMessageEventStream();
55
+ // Start async processing
56
+ (async () => {
57
+ const output = {
58
+ role: "assistant",
59
+ content: [],
60
+ api: model.api,
61
+ provider: model.provider,
62
+ model: model.id,
63
+ usage: {
64
+ input: 0,
65
+ output: 0,
66
+ cacheRead: 0,
67
+ cacheWrite: 0,
68
+ totalTokens: 0,
69
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
70
+ },
71
+ stopReason: "stop",
72
+ timestamp: Date.now(),
73
+ };
74
+ try {
75
+ // Create OpenAI client
76
+ const apiKey = options?.apiKey;
77
+ if (!apiKey) {
78
+ throw new Error(`No API key for provider: ${model.provider}`);
79
+ }
80
+ const cacheRetention = resolveCacheRetention(options?.cacheRetention);
81
+ const cacheSessionId = cacheRetention === "none" ? undefined : options?.sessionId;
82
+ const client = createClient(model, context, apiKey, options?.headers, cacheSessionId);
83
+ let params = buildParams(model, context, options);
84
+ const nextParams = await options?.onPayload?.(params, model);
85
+ if (nextParams !== undefined) {
86
+ params = nextParams;
87
+ }
88
+ const requestOptions = {
89
+ ...(options?.signal ? { signal: options.signal } : {}),
90
+ ...(options?.timeoutMs !== undefined ? { timeout: options.timeoutMs } : {}),
91
+ maxRetries: options?.maxRetries ?? 0,
92
+ };
93
+ const { data: openaiStream, response } = await client.responses.create(params, requestOptions).withResponse();
94
+ await options?.onResponse?.({ status: response.status, headers: headersToRecord(response.headers) }, model);
95
+ stream.push({ type: "start", partial: output });
96
+ await processResponsesStream(openaiStream, output, stream, model, {
97
+ serviceTier: options?.serviceTier,
98
+ applyServiceTierPricing: (usage, serviceTier) => applyServiceTierPricing(usage, serviceTier, model),
99
+ });
100
+ if (options?.signal?.aborted) {
101
+ throw new Error("Request was aborted");
102
+ }
103
+ if (output.stopReason === "aborted" || output.stopReason === "error") {
104
+ throw new Error("An unknown error occurred");
105
+ }
106
+ stream.push({ type: "done", reason: output.stopReason, message: output });
107
+ stream.end();
108
+ }
109
+ catch (error) {
110
+ for (const block of output.content) {
111
+ delete block.index;
112
+ // partialJson is only a streaming scratch buffer; never persist it.
113
+ delete block.partialJson;
114
+ }
115
+ output.stopReason = options?.signal?.aborted ? "aborted" : "error";
116
+ output.errorMessage = formatOpenAIResponsesError(error);
117
+ stream.push({ type: "error", reason: output.stopReason, error: output });
118
+ stream.end();
119
+ }
120
+ })();
121
+ return stream;
122
+ };
123
+ export const streamSimpleOpenAIResponses = (model, context, options) => {
124
+ const apiKey = options?.apiKey;
125
+ if (!apiKey) {
126
+ throw new Error(`No API key for provider: ${model.provider}`);
127
+ }
128
+ const base = buildBaseOptions(model, options, apiKey);
129
+ const clampedReasoning = options?.reasoning ? clampThinkingLevel(model, options.reasoning) : undefined;
130
+ const reasoningEffort = clampedReasoning === "off" ? undefined : clampedReasoning;
131
+ return streamOpenAIResponses(model, context, {
132
+ ...base,
133
+ reasoningEffort,
134
+ });
135
+ };
136
+ function createClient(model, context, apiKey, optionsHeaders, sessionId) {
137
+ const compat = getCompat(model);
138
+ const headers = { ...model.headers };
139
+ if (model.provider === "github-copilot") {
140
+ const hasImages = hasCopilotVisionInput(context.messages);
141
+ const copilotHeaders = buildCopilotDynamicHeaders({
142
+ messages: context.messages,
143
+ hasImages,
144
+ });
145
+ Object.assign(headers, copilotHeaders);
146
+ }
147
+ if (sessionId) {
148
+ if (compat.sendSessionIdHeader) {
149
+ headers.session_id = sessionId;
150
+ }
151
+ headers["x-client-request-id"] = sessionId;
152
+ }
153
+ // Merge options headers last so they can override defaults
154
+ if (optionsHeaders) {
155
+ Object.assign(headers, optionsHeaders);
156
+ }
157
+ const defaultHeaders = model.provider === "cloudflare-ai-gateway"
158
+ ? {
159
+ ...headers,
160
+ Authorization: headers.Authorization ?? null,
161
+ "cf-aig-authorization": `Bearer ${apiKey}`,
162
+ }
163
+ : headers;
164
+ return new OpenAI({
165
+ apiKey,
166
+ baseURL: isCloudflareProvider(model.provider) ? resolveCloudflareBaseUrl(model) : model.baseUrl,
167
+ dangerouslyAllowBrowser: true,
168
+ defaultHeaders,
169
+ });
170
+ }
171
+ function buildParams(model, context, options) {
172
+ const messages = convertResponsesMessages(model, context, OPENAI_TOOL_CALL_PROVIDERS);
173
+ const cacheRetention = resolveCacheRetention(options?.cacheRetention);
174
+ const compat = getCompat(model);
175
+ const params = {
176
+ model: model.id,
177
+ input: messages,
178
+ stream: true,
179
+ prompt_cache_key: cacheRetention === "none" ? undefined : clampOpenAIPromptCacheKey(options?.sessionId),
180
+ prompt_cache_retention: getPromptCacheRetention(compat, cacheRetention),
181
+ store: false,
182
+ };
183
+ if (options?.maxTokens) {
184
+ params.max_output_tokens = options?.maxTokens;
185
+ }
186
+ if (options?.temperature !== undefined) {
187
+ params.temperature = options?.temperature;
188
+ }
189
+ if (options?.serviceTier !== undefined) {
190
+ params.service_tier = options.serviceTier;
191
+ }
192
+ if (context.tools && context.tools.length > 0) {
193
+ params.tools = convertResponsesTools(context.tools);
194
+ }
195
+ if (model.reasoning) {
196
+ if (options?.reasoningEffort || options?.reasoningSummary) {
197
+ const effort = options?.reasoningEffort
198
+ ? (model.thinkingLevelMap?.[options.reasoningEffort] ?? options.reasoningEffort)
199
+ : "medium";
200
+ params.reasoning = {
201
+ effort: effort,
202
+ summary: options?.reasoningSummary || "auto",
203
+ };
204
+ params.include = ["reasoning.encrypted_content"];
205
+ }
206
+ else if (model.provider !== "github-copilot" && model.thinkingLevelMap?.off !== null) {
207
+ params.reasoning = {
208
+ effort: (model.thinkingLevelMap?.off ?? "none"),
209
+ };
210
+ }
211
+ }
212
+ return params;
213
+ }
214
+ function getServiceTierCostMultiplier(model, serviceTier) {
215
+ switch (serviceTier) {
216
+ case "flex":
217
+ return 0.5;
218
+ case "priority":
219
+ return model.id === "gpt-5.5" ? 2.5 : 2;
220
+ default:
221
+ return 1;
222
+ }
223
+ }
224
+ function applyServiceTierPricing(usage, serviceTier, model) {
225
+ const multiplier = getServiceTierCostMultiplier(model, serviceTier);
226
+ if (multiplier === 1)
227
+ return;
228
+ usage.cost.input *= multiplier;
229
+ usage.cost.output *= multiplier;
230
+ usage.cost.cacheRead *= multiplier;
231
+ usage.cost.cacheWrite *= multiplier;
232
+ usage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;
233
+ }
234
+ //# sourceMappingURL=openai-responses.js.map
@@ -0,0 +1 @@
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 { clampThinkingLevel } from \"../models.ts\";\nimport type {\n\tApi,\n\tAssistantMessage,\n\tCacheRetention,\n\tContext,\n\tModel,\n\tOpenAIResponsesCompat,\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 { 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): CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (typeof process !== \"undefined\" && process.env.PI_CACHE_RETENTION === \"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);\n\t\t\tconst cacheSessionId = cacheRetention === \"none\" ? undefined : options?.sessionId;\n\t\t\tconst client = createClient(model, context, apiKey, options?.headers, cacheSessionId);\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\nfunction createClient(\n\tmodel: Model<\"openai-responses\">,\n\tcontext: Context,\n\tapiKey: string,\n\toptionsHeaders?: Record<string, string>,\n\tsessionId?: string,\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) : 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);\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"]}
@@ -0,0 +1,3 @@
1
+ import { type Provider } from "../models.ts";
2
+ export declare function openaiProvider(): Provider<"openai-responses">;
3
+ //# sourceMappingURL=openai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7D,wBAAgB,cAAc,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAS7D","sourcesContent":["import { openAIResponsesApi } from \"../api/openai-responses.lazy.ts\";\nimport { envApiKeyAuth } from \"../auth/helpers.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { OPENAI_MODELS } from \"./openai.models.ts\";\n\nexport function openaiProvider(): Provider<\"openai-responses\"> {\n\treturn createProvider({\n\t\tid: \"openai\",\n\t\tname: \"OpenAI\",\n\t\tbaseUrl: \"https://api.openai.com/v1\",\n\t\tauth: { apiKey: envApiKeyAuth(\"OpenAI API key\", [\"OPENAI_API_KEY\"]) },\n\t\tmodels: Object.values(OPENAI_MODELS),\n\t\tapi: openAIResponsesApi(),\n\t});\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import { openAIResponsesApi } from "../api/openai-responses.lazy.js";
2
+ import { envApiKeyAuth } from "../auth/helpers.js";
3
+ import { createProvider } from "../models.js";
4
+ import { OPENAI_MODELS } from "./openai.models.js";
5
+ export function openaiProvider() {
6
+ return createProvider({
7
+ id: "openai",
8
+ name: "OpenAI",
9
+ baseUrl: "https://api.openai.com/v1",
10
+ auth: { apiKey: envApiKeyAuth("OpenAI API key", ["OPENAI_API_KEY"]) },
11
+ models: Object.values(OPENAI_MODELS),
12
+ api: openAIResponsesApi(),
13
+ });
14
+ }
15
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,UAAU,cAAc,GAAiC;IAC9D,OAAO,cAAc,CAAC;QACrB,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,2BAA2B;QACpC,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE;QACrE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;QACpC,GAAG,EAAE,kBAAkB,EAAE;KACzB,CAAC,CAAC;AAAA,CACH","sourcesContent":["import { openAIResponsesApi } from \"../api/openai-responses.lazy.ts\";\nimport { envApiKeyAuth } from \"../auth/helpers.ts\";\nimport { createProvider, type Provider } from \"../models.ts\";\nimport { OPENAI_MODELS } from \"./openai.models.ts\";\n\nexport function openaiProvider(): Provider<\"openai-responses\"> {\n\treturn createProvider({\n\t\tid: \"openai\",\n\t\tname: \"OpenAI\",\n\t\tbaseUrl: \"https://api.openai.com/v1\",\n\t\tauth: { apiKey: envApiKeyAuth(\"OpenAI API key\", [\"OPENAI_API_KEY\"]) },\n\t\tmodels: Object.values(OPENAI_MODELS),\n\t\tapi: openAIResponsesApi(),\n\t});\n}\n"]}