@fractaal/pi-ai 0.85.4 → 0.86.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 (712) hide show
  1. package/README.md +322 -46
  2. package/dist/api/anthropic-messages.d.ts.map +1 -1
  3. package/dist/api/anthropic-messages.js +403 -140
  4. package/dist/api/anthropic-messages.js.map +1 -1
  5. package/dist/api/anthropic-messages.lazy.d.ts.map +1 -1
  6. package/dist/api/azure-openai-config.d.ts +15 -0
  7. package/dist/api/azure-openai-config.d.ts.map +1 -0
  8. package/dist/api/azure-openai-config.js +76 -0
  9. package/dist/api/azure-openai-config.js.map +1 -0
  10. package/dist/api/azure-openai-responses.d.ts +5 -6
  11. package/dist/api/azure-openai-responses.d.ts.map +1 -1
  12. package/dist/api/azure-openai-responses.js +42 -86
  13. package/dist/api/azure-openai-responses.js.map +1 -1
  14. package/dist/api/azure-openai-responses.lazy.d.ts.map +1 -1
  15. package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  16. package/dist/api/bedrock-converse-stream.js +233 -24
  17. package/dist/api/bedrock-converse-stream.js.map +1 -1
  18. package/dist/api/bedrock-converse-stream.lazy.d.ts.map +1 -1
  19. package/dist/api/bedrock-converse-stream.lazy.js.map +1 -1
  20. package/dist/api/cloudflare-ai-binding.d.ts +77 -0
  21. package/dist/api/cloudflare-ai-binding.d.ts.map +1 -0
  22. package/dist/api/cloudflare-ai-binding.js +72 -0
  23. package/dist/api/cloudflare-ai-binding.js.map +1 -0
  24. package/dist/api/cloudflare-workers-ai-system-one.d.ts +4 -0
  25. package/dist/api/cloudflare-workers-ai-system-one.d.ts.map +1 -0
  26. package/dist/api/cloudflare-workers-ai-system-one.js +48 -0
  27. package/dist/api/cloudflare-workers-ai-system-one.js.map +1 -0
  28. package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts +3 -0
  29. package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts.map +1 -0
  30. package/dist/api/cloudflare-workers-ai-system-one.lazy.js +4 -0
  31. package/dist/api/cloudflare-workers-ai-system-one.lazy.js.map +1 -0
  32. package/dist/api/cloudflare.d.ts +2 -0
  33. package/dist/api/cloudflare.d.ts.map +1 -1
  34. package/dist/api/cloudflare.js +2 -0
  35. package/dist/api/cloudflare.js.map +1 -1
  36. package/dist/api/constrained-sampling.d.ts +10 -1
  37. package/dist/api/constrained-sampling.d.ts.map +1 -1
  38. package/dist/api/constrained-sampling.js +137 -4
  39. package/dist/api/constrained-sampling.js.map +1 -1
  40. package/dist/api/github-copilot-headers.d.ts.map +1 -1
  41. package/dist/api/github-copilot-headers.js.map +1 -1
  42. package/dist/api/google-generative-ai.d.ts +2 -2
  43. package/dist/api/google-generative-ai.d.ts.map +1 -1
  44. package/dist/api/google-generative-ai.js +39 -82
  45. package/dist/api/google-generative-ai.js.map +1 -1
  46. package/dist/api/google-generative-ai.lazy.d.ts.map +1 -1
  47. package/dist/api/google-shared.d.ts +27 -5
  48. package/dist/api/google-shared.d.ts.map +1 -1
  49. package/dist/api/google-shared.js +126 -18
  50. package/dist/api/google-shared.js.map +1 -1
  51. package/dist/api/google-vertex.d.ts +2 -2
  52. package/dist/api/google-vertex.d.ts.map +1 -1
  53. package/dist/api/google-vertex.js +42 -73
  54. package/dist/api/google-vertex.js.map +1 -1
  55. package/dist/api/google-vertex.lazy.d.ts.map +1 -1
  56. package/dist/api/lazy.d.ts +5 -1
  57. package/dist/api/lazy.d.ts.map +1 -1
  58. package/dist/api/lazy.js +19 -7
  59. package/dist/api/lazy.js.map +1 -1
  60. package/dist/api/llama-cpp-classify.d.ts +33 -0
  61. package/dist/api/llama-cpp-classify.d.ts.map +1 -0
  62. package/dist/api/llama-cpp-classify.js +365 -0
  63. package/dist/api/llama-cpp-classify.js.map +1 -0
  64. package/dist/api/llama-cpp-classify.lazy.d.ts +3 -0
  65. package/dist/api/llama-cpp-classify.lazy.d.ts.map +1 -0
  66. package/dist/api/llama-cpp-classify.lazy.js +4 -0
  67. package/dist/api/llama-cpp-classify.lazy.js.map +1 -0
  68. package/dist/api/mistral-conversations.d.ts +2 -2
  69. package/dist/api/mistral-conversations.d.ts.map +1 -1
  70. package/dist/api/mistral-conversations.js +250 -69
  71. package/dist/api/mistral-conversations.js.map +1 -1
  72. package/dist/api/mistral-conversations.lazy.d.ts.map +1 -1
  73. package/dist/api/openai-codex-compaction-history.d.ts +2 -2
  74. package/dist/api/openai-codex-compaction-history.d.ts.map +1 -1
  75. package/dist/api/openai-codex-compaction-history.js +1 -2
  76. package/dist/api/openai-codex-compaction-history.js.map +1 -1
  77. package/dist/api/openai-codex-responses.d.ts +1 -1
  78. package/dist/api/openai-codex-responses.d.ts.map +1 -1
  79. package/dist/api/openai-codex-responses.js +107 -60
  80. package/dist/api/openai-codex-responses.js.map +1 -1
  81. package/dist/api/openai-codex-responses.lazy.d.ts.map +1 -1
  82. package/dist/api/openai-codex-responses.lazy.js.map +1 -1
  83. package/dist/api/openai-completions.d.ts +11 -4
  84. package/dist/api/openai-completions.d.ts.map +1 -1
  85. package/dist/api/openai-completions.js +250 -134
  86. package/dist/api/openai-completions.js.map +1 -1
  87. package/dist/api/openai-completions.lazy.d.ts.map +1 -1
  88. package/dist/api/openai-prompt-cache.d.ts.map +1 -1
  89. package/dist/api/openai-prompt-cache.js.map +1 -1
  90. package/dist/api/openai-responses-shared.d.ts +8 -4
  91. package/dist/api/openai-responses-shared.d.ts.map +1 -1
  92. package/dist/api/openai-responses-shared.js +114 -62
  93. package/dist/api/openai-responses-shared.js.map +1 -1
  94. package/dist/api/openai-responses.d.ts.map +1 -1
  95. package/dist/api/openai-responses.js +55 -23
  96. package/dist/api/openai-responses.js.map +1 -1
  97. package/dist/api/openai-responses.lazy.d.ts.map +1 -1
  98. package/dist/api/openrouter-images.d.ts +2 -1
  99. package/dist/api/openrouter-images.d.ts.map +1 -1
  100. package/dist/api/openrouter-images.js +1 -0
  101. package/dist/api/openrouter-images.js.map +1 -1
  102. package/dist/api/openrouter-images.lazy.d.ts.map +1 -1
  103. package/dist/api/openrouter-images.lazy.js.map +1 -1
  104. package/dist/api/pi-messages.d.ts +5 -3
  105. package/dist/api/pi-messages.d.ts.map +1 -1
  106. package/dist/api/pi-messages.js +10 -3
  107. package/dist/api/pi-messages.js.map +1 -1
  108. package/dist/api/pi-messages.lazy.d.ts.map +1 -1
  109. package/dist/api/simple-options.d.ts +10 -3
  110. package/dist/api/simple-options.d.ts.map +1 -1
  111. package/dist/api/simple-options.js +31 -11
  112. package/dist/api/simple-options.js.map +1 -1
  113. package/dist/api/system-one-shared.d.ts +23 -0
  114. package/dist/api/system-one-shared.d.ts.map +1 -0
  115. package/dist/api/system-one-shared.js +183 -0
  116. package/dist/api/system-one-shared.js.map +1 -0
  117. package/dist/api/transform-messages.d.ts.map +1 -1
  118. package/dist/api/transform-messages.js +21 -7
  119. package/dist/api/transform-messages.js.map +1 -1
  120. package/dist/api/typesafe-system-one.d.ts +4 -0
  121. package/dist/api/typesafe-system-one.d.ts.map +1 -0
  122. package/dist/api/typesafe-system-one.js +19 -0
  123. package/dist/api/typesafe-system-one.js.map +1 -0
  124. package/dist/api/typesafe-system-one.lazy.d.ts +3 -0
  125. package/dist/api/typesafe-system-one.lazy.d.ts.map +1 -0
  126. package/dist/api/typesafe-system-one.lazy.js +4 -0
  127. package/dist/api/typesafe-system-one.lazy.js.map +1 -0
  128. package/dist/auth/context.d.ts.map +1 -1
  129. package/dist/auth/context.js.map +1 -1
  130. package/dist/auth/credential-store.d.ts +6 -6
  131. package/dist/auth/credential-store.d.ts.map +1 -1
  132. package/dist/auth/credential-store.js +22 -11
  133. package/dist/auth/credential-store.js.map +1 -1
  134. package/dist/auth/helpers.d.ts +1 -0
  135. package/dist/auth/helpers.d.ts.map +1 -1
  136. package/dist/auth/helpers.js +8 -3
  137. package/dist/auth/helpers.js.map +1 -1
  138. package/dist/auth/oauth/anthropic.d.ts.map +1 -1
  139. package/dist/auth/oauth/anthropic.js +78 -131
  140. package/dist/auth/oauth/anthropic.js.map +1 -1
  141. package/dist/auth/oauth/callback-server.d.ts +55 -0
  142. package/dist/auth/oauth/callback-server.d.ts.map +1 -0
  143. package/dist/auth/oauth/callback-server.js +146 -0
  144. package/dist/auth/oauth/callback-server.js.map +1 -0
  145. package/dist/auth/oauth/device-code.d.ts +2 -1
  146. package/dist/auth/oauth/device-code.d.ts.map +1 -1
  147. package/dist/auth/oauth/device-code.js +5 -5
  148. package/dist/auth/oauth/device-code.js.map +1 -1
  149. package/dist/auth/oauth/github-copilot.d.ts.map +1 -1
  150. package/dist/auth/oauth/github-copilot.js +121 -41
  151. package/dist/auth/oauth/github-copilot.js.map +1 -1
  152. package/dist/auth/oauth/kimi-coding.d.ts.map +1 -1
  153. package/dist/auth/oauth/kimi-coding.js +5 -6
  154. package/dist/auth/oauth/kimi-coding.js.map +1 -1
  155. package/dist/auth/oauth/load.d.ts +4 -0
  156. package/dist/auth/oauth/load.d.ts.map +1 -1
  157. package/dist/auth/oauth/load.js +10 -0
  158. package/dist/auth/oauth/load.js.map +1 -1
  159. package/dist/auth/oauth/meta.d.ts +17 -0
  160. package/dist/auth/oauth/meta.d.ts.map +1 -0
  161. package/dist/auth/oauth/meta.js +190 -0
  162. package/dist/auth/oauth/meta.js.map +1 -0
  163. package/dist/auth/oauth/openai-chatgpt.d.ts +9 -0
  164. package/dist/auth/oauth/openai-chatgpt.d.ts.map +1 -0
  165. package/dist/auth/oauth/openai-chatgpt.js +263 -0
  166. package/dist/auth/oauth/openai-chatgpt.js.map +1 -0
  167. package/dist/auth/oauth/openai-codex-errors.d.ts.map +1 -1
  168. package/dist/auth/oauth/openai-codex-errors.js.map +1 -1
  169. package/dist/auth/oauth/openai-codex.d.ts +1 -1
  170. package/dist/auth/oauth/openai-codex.d.ts.map +1 -1
  171. package/dist/auth/oauth/openai-codex.js +23 -152
  172. package/dist/auth/oauth/openai-codex.js.map +1 -1
  173. package/dist/auth/oauth/openrouter.d.ts +1 -1
  174. package/dist/auth/oauth/openrouter.d.ts.map +1 -1
  175. package/dist/auth/oauth/openrouter.js +25 -144
  176. package/dist/auth/oauth/openrouter.js.map +1 -1
  177. package/dist/auth/oauth/pkce.d.ts.map +1 -1
  178. package/dist/auth/oauth/pkce.js.map +1 -1
  179. package/dist/auth/oauth/radius.d.ts +1 -1
  180. package/dist/auth/oauth/radius.d.ts.map +1 -1
  181. package/dist/auth/oauth/radius.js +26 -93
  182. package/dist/auth/oauth/radius.js.map +1 -1
  183. package/dist/auth/oauth/xai.d.ts.map +1 -1
  184. package/dist/auth/oauth/xai.js +3 -2
  185. package/dist/auth/oauth/xai.js.map +1 -1
  186. package/dist/auth/resolve.d.ts +19 -9
  187. package/dist/auth/resolve.d.ts.map +1 -1
  188. package/dist/auth/resolve.js +72 -53
  189. package/dist/auth/resolve.js.map +1 -1
  190. package/dist/auth/types.d.ts +29 -8
  191. package/dist/auth/types.d.ts.map +1 -1
  192. package/dist/auth/types.js.map +1 -1
  193. package/dist/bedrock-provider.d.ts.map +1 -1
  194. package/dist/bun-oauth.d.ts.map +1 -1
  195. package/dist/bun-oauth.js +4 -0
  196. package/dist/bun-oauth.js.map +1 -1
  197. package/dist/cli.d.ts.map +1 -1
  198. package/dist/cli.js +4 -1
  199. package/dist/cli.js.map +1 -1
  200. package/dist/compat/extension-oauth-types.d.ts.map +1 -1
  201. package/dist/compat.d.ts +3 -3
  202. package/dist/compat.d.ts.map +1 -1
  203. package/dist/compat.js +9 -6
  204. package/dist/compat.js.map +1 -1
  205. package/dist/env-api-keys.d.ts +5 -0
  206. package/dist/env-api-keys.d.ts.map +1 -1
  207. package/dist/env-api-keys.js +10 -1
  208. package/dist/env-api-keys.js.map +1 -1
  209. package/dist/image-models.d.ts +19 -8
  210. package/dist/image-models.d.ts.map +1 -1
  211. package/dist/image-models.js +14 -13
  212. package/dist/image-models.js.map +1 -1
  213. package/dist/images-api-registry.d.ts +7 -7
  214. package/dist/images-api-registry.d.ts.map +1 -1
  215. package/dist/images-api-registry.js.map +1 -1
  216. package/dist/images.d.ts +7 -2
  217. package/dist/images.d.ts.map +1 -1
  218. package/dist/images.js +5 -0
  219. package/dist/images.js.map +1 -1
  220. package/dist/index.d.ts +4 -3
  221. package/dist/index.d.ts.map +1 -1
  222. package/dist/index.js +3 -2
  223. package/dist/index.js.map +1 -1
  224. package/dist/legacy-api-aliases.d.ts.map +1 -1
  225. package/dist/model-catalog.d.ts +25 -9
  226. package/dist/model-catalog.d.ts.map +1 -1
  227. package/dist/model-catalog.js +14 -2
  228. package/dist/model-catalog.js.map +1 -1
  229. package/dist/models-store.d.ts +12 -14
  230. package/dist/models-store.d.ts.map +1 -1
  231. package/dist/models-store.js +6 -3
  232. package/dist/models-store.js.map +1 -1
  233. package/dist/models.d.ts +138 -47
  234. package/dist/models.d.ts.map +1 -1
  235. package/dist/models.generated.d.ts +136 -38
  236. package/dist/models.generated.d.ts.map +1 -1
  237. package/dist/models.generated.js +136 -38
  238. package/dist/models.generated.js.map +1 -1
  239. package/dist/models.js +390 -104
  240. package/dist/models.js.map +1 -1
  241. package/dist/oauth.d.ts.map +1 -1
  242. package/dist/providers/all.d.ts +19 -13
  243. package/dist/providers/all.d.ts.map +1 -1
  244. package/dist/providers/all.js +33 -23
  245. package/dist/providers/all.js.map +1 -1
  246. package/dist/providers/amazon-bedrock.d.ts.map +1 -1
  247. package/dist/providers/amazon-bedrock.js +15 -7
  248. package/dist/providers/amazon-bedrock.js.map +1 -1
  249. package/dist/providers/amazon-bedrock.models.d.ts +4 -2
  250. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
  251. package/dist/providers/amazon-bedrock.models.js +4 -2
  252. package/dist/providers/amazon-bedrock.models.js.map +1 -1
  253. package/dist/providers/ant-ling.d.ts.map +1 -1
  254. package/dist/providers/ant-ling.js.map +1 -1
  255. package/dist/providers/ant-ling.models.d.ts +4 -2
  256. package/dist/providers/ant-ling.models.d.ts.map +1 -1
  257. package/dist/providers/ant-ling.models.js +4 -2
  258. package/dist/providers/ant-ling.models.js.map +1 -1
  259. package/dist/providers/anthropic.d.ts.map +1 -1
  260. package/dist/providers/anthropic.js +39 -8
  261. package/dist/providers/anthropic.js.map +1 -1
  262. package/dist/providers/anthropic.models.d.ts +4 -2
  263. package/dist/providers/anthropic.models.d.ts.map +1 -1
  264. package/dist/providers/anthropic.models.js +4 -2
  265. package/dist/providers/anthropic.models.js.map +1 -1
  266. package/dist/providers/azure.d.ts +3 -0
  267. package/dist/providers/azure.d.ts.map +1 -0
  268. package/dist/providers/azure.js +46 -0
  269. package/dist/providers/azure.js.map +1 -0
  270. package/dist/providers/azure.models.d.ts +6 -0
  271. package/dist/providers/azure.models.d.ts.map +1 -0
  272. package/dist/providers/azure.models.js +8 -0
  273. package/dist/providers/azure.models.js.map +1 -0
  274. package/dist/providers/baseten.d.ts +3 -0
  275. package/dist/providers/baseten.d.ts.map +1 -0
  276. package/dist/providers/baseten.js +15 -0
  277. package/dist/providers/baseten.js.map +1 -0
  278. package/dist/providers/baseten.models.d.ts +6 -0
  279. package/dist/providers/baseten.models.d.ts.map +1 -0
  280. package/dist/providers/baseten.models.js +8 -0
  281. package/dist/providers/baseten.models.js.map +1 -0
  282. package/dist/providers/cerebras.d.ts.map +1 -1
  283. package/dist/providers/cerebras.js.map +1 -1
  284. package/dist/providers/cerebras.models.d.ts +4 -2
  285. package/dist/providers/cerebras.models.d.ts.map +1 -1
  286. package/dist/providers/cerebras.models.js +4 -2
  287. package/dist/providers/cerebras.models.js.map +1 -1
  288. package/dist/providers/cloudflare-ai-gateway.d.ts +3 -1
  289. package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -1
  290. package/dist/providers/cloudflare-ai-gateway.js +4 -0
  291. package/dist/providers/cloudflare-ai-gateway.js.map +1 -1
  292. package/dist/providers/cloudflare-ai-gateway.models.d.ts +4 -2
  293. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -1
  294. package/dist/providers/cloudflare-ai-gateway.models.js +4 -2
  295. package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -1
  296. package/dist/providers/cloudflare-auth.d.ts.map +1 -1
  297. package/dist/providers/cloudflare-auth.js +15 -10
  298. package/dist/providers/cloudflare-auth.js.map +1 -1
  299. package/dist/providers/cloudflare-stream.d.ts +6 -2
  300. package/dist/providers/cloudflare-stream.d.ts.map +1 -1
  301. package/dist/providers/cloudflare-stream.js +6 -0
  302. package/dist/providers/cloudflare-stream.js.map +1 -1
  303. package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -1
  304. package/dist/providers/cloudflare-workers-ai.js +10 -3
  305. package/dist/providers/cloudflare-workers-ai.js.map +1 -1
  306. package/dist/providers/cloudflare-workers-ai.models.d.ts +4 -2
  307. package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -1
  308. package/dist/providers/cloudflare-workers-ai.models.js +4 -2
  309. package/dist/providers/cloudflare-workers-ai.models.js.map +1 -1
  310. package/dist/providers/data/.manifest.json +1 -1
  311. package/dist/providers/data/amazon-bedrock.json +1 -1
  312. package/dist/providers/data/ant-ling.json +1 -1
  313. package/dist/providers/data/anthropic.json +1 -1
  314. package/dist/providers/data/azure.json +1 -0
  315. package/dist/providers/data/baseten.json +1 -0
  316. package/dist/providers/data/cerebras.json +1 -1
  317. package/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  318. package/dist/providers/data/cloudflare-workers-ai.json +1 -1
  319. package/dist/providers/data/deepseek.json +1 -1
  320. package/dist/providers/data/fireworks.json +1 -1
  321. package/dist/providers/data/github-copilot.json +1 -1
  322. package/dist/providers/data/google-vertex.json +1 -1
  323. package/dist/providers/data/google.json +1 -1
  324. package/dist/providers/data/groq.json +1 -1
  325. package/dist/providers/data/huggingface.json +1 -1
  326. package/dist/providers/data/kimi-coding.json +1 -1
  327. package/dist/providers/data/meta.json +1 -0
  328. package/dist/providers/data/minimax-cn.json +1 -1
  329. package/dist/providers/data/minimax.json +1 -1
  330. package/dist/providers/data/mistral.json +1 -1
  331. package/dist/providers/data/moonshotai-cn.json +1 -1
  332. package/dist/providers/data/moonshotai.json +1 -1
  333. package/dist/providers/data/nvidia.json +1 -1
  334. package/dist/providers/data/openai-codex.json +1 -1
  335. package/dist/providers/data/openai.json +1 -1
  336. package/dist/providers/data/opencode-go.json +1 -1
  337. package/dist/providers/data/opencode.json +1 -1
  338. package/dist/providers/data/openrouter.json +1 -1
  339. package/dist/providers/data/qwen-token-plan-cn.json +1 -1
  340. package/dist/providers/data/qwen-token-plan-individual.json +1 -0
  341. package/dist/providers/data/qwen-token-plan.json +1 -1
  342. package/dist/providers/data/radius.json +1 -0
  343. package/dist/providers/data/together.json +1 -1
  344. package/dist/providers/data/typesafe.json +1 -0
  345. package/dist/providers/data/vercel-ai-gateway.json +1 -1
  346. package/dist/providers/data/xai.json +1 -1
  347. package/dist/providers/data/xiaomi-token-plan-ams.json +1 -1
  348. package/dist/providers/data/xiaomi-token-plan-cn.json +1 -1
  349. package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -1
  350. package/dist/providers/data/xiaomi.json +1 -1
  351. package/dist/providers/data/zai-coding-cn.json +1 -1
  352. package/dist/providers/data/zai.json +1 -1
  353. package/dist/providers/deepseek.d.ts.map +1 -1
  354. package/dist/providers/deepseek.js.map +1 -1
  355. package/dist/providers/deepseek.models.d.ts +4 -2
  356. package/dist/providers/deepseek.models.d.ts.map +1 -1
  357. package/dist/providers/deepseek.models.js +4 -2
  358. package/dist/providers/deepseek.models.js.map +1 -1
  359. package/dist/providers/faux.d.ts +19 -13
  360. package/dist/providers/faux.d.ts.map +1 -1
  361. package/dist/providers/faux.js +109 -18
  362. package/dist/providers/faux.js.map +1 -1
  363. package/dist/providers/fireworks.d.ts.map +1 -1
  364. package/dist/providers/fireworks.js.map +1 -1
  365. package/dist/providers/fireworks.models.d.ts +4 -2
  366. package/dist/providers/fireworks.models.d.ts.map +1 -1
  367. package/dist/providers/fireworks.models.js +4 -2
  368. package/dist/providers/fireworks.models.js.map +1 -1
  369. package/dist/providers/github-copilot.d.ts.map +1 -1
  370. package/dist/providers/github-copilot.js +1 -1
  371. package/dist/providers/github-copilot.js.map +1 -1
  372. package/dist/providers/github-copilot.models.d.ts +4 -2
  373. package/dist/providers/github-copilot.models.d.ts.map +1 -1
  374. package/dist/providers/github-copilot.models.js +4 -2
  375. package/dist/providers/github-copilot.models.js.map +1 -1
  376. package/dist/providers/google-vertex.d.ts.map +1 -1
  377. package/dist/providers/google-vertex.js +15 -7
  378. package/dist/providers/google-vertex.js.map +1 -1
  379. package/dist/providers/google-vertex.models.d.ts +4 -2
  380. package/dist/providers/google-vertex.models.d.ts.map +1 -1
  381. package/dist/providers/google-vertex.models.js +4 -2
  382. package/dist/providers/google-vertex.models.js.map +1 -1
  383. package/dist/providers/google.d.ts.map +1 -1
  384. package/dist/providers/google.js.map +1 -1
  385. package/dist/providers/google.models.d.ts +4 -2
  386. package/dist/providers/google.models.d.ts.map +1 -1
  387. package/dist/providers/google.models.js +4 -2
  388. package/dist/providers/google.models.js.map +1 -1
  389. package/dist/providers/groq.d.ts.map +1 -1
  390. package/dist/providers/groq.js.map +1 -1
  391. package/dist/providers/groq.models.d.ts +4 -2
  392. package/dist/providers/groq.models.d.ts.map +1 -1
  393. package/dist/providers/groq.models.js +4 -2
  394. package/dist/providers/groq.models.js.map +1 -1
  395. package/dist/providers/huggingface.d.ts.map +1 -1
  396. package/dist/providers/huggingface.js.map +1 -1
  397. package/dist/providers/huggingface.models.d.ts +4 -2
  398. package/dist/providers/huggingface.models.d.ts.map +1 -1
  399. package/dist/providers/huggingface.models.js +4 -2
  400. package/dist/providers/huggingface.models.js.map +1 -1
  401. package/dist/providers/images/register-builtins.d.ts +1 -1
  402. package/dist/providers/images/register-builtins.d.ts.map +1 -1
  403. package/dist/providers/images/register-builtins.js.map +1 -1
  404. package/dist/providers/kimi-coding.d.ts.map +1 -1
  405. package/dist/providers/kimi-coding.js +1 -0
  406. package/dist/providers/kimi-coding.js.map +1 -1
  407. package/dist/providers/kimi-coding.models.d.ts +4 -2
  408. package/dist/providers/kimi-coding.models.d.ts.map +1 -1
  409. package/dist/providers/kimi-coding.models.js +4 -2
  410. package/dist/providers/kimi-coding.models.js.map +1 -1
  411. package/dist/providers/meta.d.ts +3 -0
  412. package/dist/providers/meta.d.ts.map +1 -0
  413. package/dist/providers/meta.js +24 -0
  414. package/dist/providers/meta.js.map +1 -0
  415. package/dist/providers/meta.models.d.ts +6 -0
  416. package/dist/providers/meta.models.d.ts.map +1 -0
  417. package/dist/providers/meta.models.js +8 -0
  418. package/dist/providers/meta.models.js.map +1 -0
  419. package/dist/providers/minimax-cn.d.ts.map +1 -1
  420. package/dist/providers/minimax-cn.js.map +1 -1
  421. package/dist/providers/minimax-cn.models.d.ts +4 -2
  422. package/dist/providers/minimax-cn.models.d.ts.map +1 -1
  423. package/dist/providers/minimax-cn.models.js +4 -2
  424. package/dist/providers/minimax-cn.models.js.map +1 -1
  425. package/dist/providers/minimax.d.ts.map +1 -1
  426. package/dist/providers/minimax.js.map +1 -1
  427. package/dist/providers/minimax.models.d.ts +4 -2
  428. package/dist/providers/minimax.models.d.ts.map +1 -1
  429. package/dist/providers/minimax.models.js +4 -2
  430. package/dist/providers/minimax.models.js.map +1 -1
  431. package/dist/providers/mistral.d.ts.map +1 -1
  432. package/dist/providers/mistral.js.map +1 -1
  433. package/dist/providers/mistral.models.d.ts +4 -2
  434. package/dist/providers/mistral.models.d.ts.map +1 -1
  435. package/dist/providers/mistral.models.js +4 -2
  436. package/dist/providers/mistral.models.js.map +1 -1
  437. package/dist/providers/moonshotai-cn.d.ts.map +1 -1
  438. package/dist/providers/moonshotai-cn.js.map +1 -1
  439. package/dist/providers/moonshotai-cn.models.d.ts +4 -2
  440. package/dist/providers/moonshotai-cn.models.d.ts.map +1 -1
  441. package/dist/providers/moonshotai-cn.models.js +4 -2
  442. package/dist/providers/moonshotai-cn.models.js.map +1 -1
  443. package/dist/providers/moonshotai.d.ts.map +1 -1
  444. package/dist/providers/moonshotai.js.map +1 -1
  445. package/dist/providers/moonshotai.models.d.ts +4 -2
  446. package/dist/providers/moonshotai.models.d.ts.map +1 -1
  447. package/dist/providers/moonshotai.models.js +4 -2
  448. package/dist/providers/moonshotai.models.js.map +1 -1
  449. package/dist/providers/nvidia.d.ts.map +1 -1
  450. package/dist/providers/nvidia.js.map +1 -1
  451. package/dist/providers/nvidia.models.d.ts +4 -2
  452. package/dist/providers/nvidia.models.d.ts.map +1 -1
  453. package/dist/providers/nvidia.models.js +4 -2
  454. package/dist/providers/nvidia.models.js.map +1 -1
  455. package/dist/providers/openai-codex-catalog.d.ts +1 -0
  456. package/dist/providers/openai-codex-catalog.d.ts.map +1 -1
  457. package/dist/providers/openai-codex-catalog.js +19 -10
  458. package/dist/providers/openai-codex-catalog.js.map +1 -1
  459. package/dist/providers/openai-codex.d.ts.map +1 -1
  460. package/dist/providers/openai-codex.js +5 -1
  461. package/dist/providers/openai-codex.js.map +1 -1
  462. package/dist/providers/openai-codex.models.d.ts +4 -2
  463. package/dist/providers/openai-codex.models.d.ts.map +1 -1
  464. package/dist/providers/openai-codex.models.js +4 -2
  465. package/dist/providers/openai-codex.models.js.map +1 -1
  466. package/dist/providers/openai.d.ts.map +1 -1
  467. package/dist/providers/openai.js +11 -2
  468. package/dist/providers/openai.js.map +1 -1
  469. package/dist/providers/openai.models.d.ts +4 -2
  470. package/dist/providers/openai.models.d.ts.map +1 -1
  471. package/dist/providers/openai.models.js +4 -2
  472. package/dist/providers/openai.models.js.map +1 -1
  473. package/dist/providers/opencode-go.d.ts.map +1 -1
  474. package/dist/providers/opencode-go.js +5 -4
  475. package/dist/providers/opencode-go.js.map +1 -1
  476. package/dist/providers/opencode-go.models.d.ts +4 -2
  477. package/dist/providers/opencode-go.models.d.ts.map +1 -1
  478. package/dist/providers/opencode-go.models.js +4 -2
  479. package/dist/providers/opencode-go.models.js.map +1 -1
  480. package/dist/providers/opencode-headers.d.ts +4 -0
  481. package/dist/providers/opencode-headers.d.ts.map +1 -0
  482. package/dist/providers/opencode-headers.js +22 -0
  483. package/dist/providers/opencode-headers.js.map +1 -0
  484. package/dist/providers/opencode.d.ts +3 -1
  485. package/dist/providers/opencode.d.ts.map +1 -1
  486. package/dist/providers/opencode.js +10 -6
  487. package/dist/providers/opencode.js.map +1 -1
  488. package/dist/providers/opencode.models.d.ts +4 -2
  489. package/dist/providers/opencode.models.d.ts.map +1 -1
  490. package/dist/providers/opencode.models.js +4 -2
  491. package/dist/providers/opencode.models.js.map +1 -1
  492. package/dist/providers/openrouter.d.ts +1 -1
  493. package/dist/providers/openrouter.d.ts.map +1 -1
  494. package/dist/providers/openrouter.js +16 -3
  495. package/dist/providers/openrouter.js.map +1 -1
  496. package/dist/providers/openrouter.models.d.ts +4 -2
  497. package/dist/providers/openrouter.models.d.ts.map +1 -1
  498. package/dist/providers/openrouter.models.js +4 -2
  499. package/dist/providers/openrouter.models.js.map +1 -1
  500. package/dist/providers/qwen-token-plan-cn.d.ts.map +1 -1
  501. package/dist/providers/qwen-token-plan-cn.js.map +1 -1
  502. package/dist/providers/qwen-token-plan-cn.models.d.ts +4 -2
  503. package/dist/providers/qwen-token-plan-cn.models.d.ts.map +1 -1
  504. package/dist/providers/qwen-token-plan-cn.models.js +4 -2
  505. package/dist/providers/qwen-token-plan-cn.models.js.map +1 -1
  506. package/dist/providers/qwen-token-plan-individual.d.ts +3 -0
  507. package/dist/providers/qwen-token-plan-individual.d.ts.map +1 -0
  508. package/dist/providers/qwen-token-plan-individual.js +15 -0
  509. package/dist/providers/qwen-token-plan-individual.js.map +1 -0
  510. package/dist/providers/qwen-token-plan-individual.models.d.ts +6 -0
  511. package/dist/providers/qwen-token-plan-individual.models.d.ts.map +1 -0
  512. package/dist/providers/qwen-token-plan-individual.models.js +8 -0
  513. package/dist/providers/qwen-token-plan-individual.models.js.map +1 -0
  514. package/dist/providers/qwen-token-plan.d.ts.map +1 -1
  515. package/dist/providers/qwen-token-plan.js.map +1 -1
  516. package/dist/providers/qwen-token-plan.models.d.ts +4 -2
  517. package/dist/providers/qwen-token-plan.models.d.ts.map +1 -1
  518. package/dist/providers/qwen-token-plan.models.js +4 -2
  519. package/dist/providers/qwen-token-plan.models.js.map +1 -1
  520. package/dist/providers/radius-config.d.ts.map +1 -1
  521. package/dist/providers/radius-config.js.map +1 -1
  522. package/dist/providers/radius.d.ts.map +1 -1
  523. package/dist/providers/radius.js +53 -29
  524. package/dist/providers/radius.js.map +1 -1
  525. package/dist/providers/radius.models.d.ts +6 -0
  526. package/dist/providers/radius.models.d.ts.map +1 -0
  527. package/dist/providers/radius.models.js +8 -0
  528. package/dist/providers/radius.models.js.map +1 -0
  529. package/dist/providers/together.d.ts.map +1 -1
  530. package/dist/providers/together.js.map +1 -1
  531. package/dist/providers/together.models.d.ts +4 -2
  532. package/dist/providers/together.models.d.ts.map +1 -1
  533. package/dist/providers/together.models.js +4 -2
  534. package/dist/providers/together.models.js.map +1 -1
  535. package/dist/providers/typesafe.d.ts +3 -0
  536. package/dist/providers/typesafe.d.ts.map +1 -0
  537. package/dist/providers/typesafe.js +18 -0
  538. package/dist/providers/typesafe.js.map +1 -0
  539. package/dist/providers/typesafe.models.d.ts +6 -0
  540. package/dist/providers/typesafe.models.d.ts.map +1 -0
  541. package/dist/providers/typesafe.models.js +8 -0
  542. package/dist/providers/typesafe.models.js.map +1 -0
  543. package/dist/providers/vercel-ai-gateway.d.ts.map +1 -1
  544. package/dist/providers/vercel-ai-gateway.js +5 -2
  545. package/dist/providers/vercel-ai-gateway.js.map +1 -1
  546. package/dist/providers/vercel-ai-gateway.models.d.ts +4 -2
  547. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
  548. package/dist/providers/vercel-ai-gateway.models.js +4 -2
  549. package/dist/providers/vercel-ai-gateway.models.js.map +1 -1
  550. package/dist/providers/xai.d.ts +1 -1
  551. package/dist/providers/xai.d.ts.map +1 -1
  552. package/dist/providers/xai.js +2 -5
  553. package/dist/providers/xai.js.map +1 -1
  554. package/dist/providers/xai.models.d.ts +4 -2
  555. package/dist/providers/xai.models.d.ts.map +1 -1
  556. package/dist/providers/xai.models.js +4 -2
  557. package/dist/providers/xai.models.js.map +1 -1
  558. package/dist/providers/xiaomi-token-plan-ams.d.ts.map +1 -1
  559. package/dist/providers/xiaomi-token-plan-ams.js.map +1 -1
  560. package/dist/providers/xiaomi-token-plan-ams.models.d.ts +4 -2
  561. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -1
  562. package/dist/providers/xiaomi-token-plan-ams.models.js +4 -2
  563. package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -1
  564. package/dist/providers/xiaomi-token-plan-cn.d.ts.map +1 -1
  565. package/dist/providers/xiaomi-token-plan-cn.js.map +1 -1
  566. package/dist/providers/xiaomi-token-plan-cn.models.d.ts +4 -2
  567. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -1
  568. package/dist/providers/xiaomi-token-plan-cn.models.js +4 -2
  569. package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -1
  570. package/dist/providers/xiaomi-token-plan-sgp.d.ts.map +1 -1
  571. package/dist/providers/xiaomi-token-plan-sgp.js.map +1 -1
  572. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +4 -2
  573. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -1
  574. package/dist/providers/xiaomi-token-plan-sgp.models.js +4 -2
  575. package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -1
  576. package/dist/providers/xiaomi.d.ts.map +1 -1
  577. package/dist/providers/xiaomi.js.map +1 -1
  578. package/dist/providers/xiaomi.models.d.ts +4 -2
  579. package/dist/providers/xiaomi.models.d.ts.map +1 -1
  580. package/dist/providers/xiaomi.models.js +4 -2
  581. package/dist/providers/xiaomi.models.js.map +1 -1
  582. package/dist/providers/zai-coding-cn.d.ts.map +1 -1
  583. package/dist/providers/zai-coding-cn.js.map +1 -1
  584. package/dist/providers/zai-coding-cn.models.d.ts +4 -2
  585. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -1
  586. package/dist/providers/zai-coding-cn.models.js +4 -2
  587. package/dist/providers/zai-coding-cn.models.js.map +1 -1
  588. package/dist/providers/zai.d.ts.map +1 -1
  589. package/dist/providers/zai.js.map +1 -1
  590. package/dist/providers/zai.models.d.ts +4 -2
  591. package/dist/providers/zai.models.d.ts.map +1 -1
  592. package/dist/providers/zai.models.js +4 -2
  593. package/dist/providers/zai.models.js.map +1 -1
  594. package/dist/session-resources.d.ts.map +1 -1
  595. package/dist/session-resources.js.map +1 -1
  596. package/dist/types.d.ts +414 -126
  597. package/dist/types.d.ts.map +1 -1
  598. package/dist/types.js.map +1 -1
  599. package/dist/utils/abort-signals.d.ts.map +1 -1
  600. package/dist/utils/abort-signals.js.map +1 -1
  601. package/dist/utils/abort.d.ts +8 -0
  602. package/dist/utils/abort.d.ts.map +1 -0
  603. package/dist/utils/abort.js +49 -0
  604. package/dist/utils/abort.js.map +1 -0
  605. package/dist/utils/assistant-message-frame.d.ts +77 -0
  606. package/dist/utils/assistant-message-frame.d.ts.map +1 -0
  607. package/dist/utils/assistant-message-frame.js +425 -0
  608. package/dist/utils/assistant-message-frame.js.map +1 -0
  609. package/dist/utils/diagnostics.d.ts +3 -2
  610. package/dist/utils/diagnostics.d.ts.map +1 -1
  611. package/dist/utils/diagnostics.js.map +1 -1
  612. package/dist/utils/error-body.d.ts.map +1 -1
  613. package/dist/utils/error-body.js +23 -4
  614. package/dist/utils/error-body.js.map +1 -1
  615. package/dist/utils/estimate.d.ts +2 -2
  616. package/dist/utils/estimate.d.ts.map +1 -1
  617. package/dist/utils/estimate.js +8 -29
  618. package/dist/utils/estimate.js.map +1 -1
  619. package/dist/utils/event-stream.d.ts.map +1 -1
  620. package/dist/utils/event-stream.js +25 -7
  621. package/dist/utils/event-stream.js.map +1 -1
  622. package/dist/utils/hash.d.ts.map +1 -1
  623. package/dist/utils/hash.js.map +1 -1
  624. package/dist/utils/headers.d.ts +1 -1
  625. package/dist/utils/headers.d.ts.map +1 -1
  626. package/dist/utils/headers.js +10 -8
  627. package/dist/utils/headers.js.map +1 -1
  628. package/dist/utils/json-parse.d.ts.map +1 -1
  629. package/dist/utils/json-parse.js.map +1 -1
  630. package/dist/utils/model-operations.d.ts +11 -0
  631. package/dist/utils/model-operations.d.ts.map +1 -0
  632. package/dist/utils/model-operations.js +47 -0
  633. package/dist/utils/model-operations.js.map +1 -0
  634. package/dist/utils/models-error.d.ts +8 -0
  635. package/dist/utils/models-error.d.ts.map +1 -0
  636. package/dist/utils/models-error.js +19 -0
  637. package/dist/utils/models-error.js.map +1 -0
  638. package/dist/utils/node-http-proxy.d.ts.map +1 -1
  639. package/dist/utils/node-http-proxy.js +53 -12
  640. package/dist/utils/node-http-proxy.js.map +1 -1
  641. package/dist/utils/oauth-page.d.ts.map +1 -0
  642. package/dist/{auth/oauth → utils}/oauth-page.js +1 -1
  643. package/dist/utils/oauth-page.js.map +1 -0
  644. package/dist/utils/overflow.d.ts +11 -1
  645. package/dist/utils/overflow.d.ts.map +1 -1
  646. package/dist/utils/overflow.js +24 -6
  647. package/dist/utils/overflow.js.map +1 -1
  648. package/dist/utils/pi-user-agent.d.ts +2 -0
  649. package/dist/utils/pi-user-agent.d.ts.map +1 -0
  650. package/dist/utils/pi-user-agent.js +12 -0
  651. package/dist/utils/pi-user-agent.js.map +1 -0
  652. package/dist/utils/provider-env.d.ts.map +1 -1
  653. package/dist/utils/provider-env.js.map +1 -1
  654. package/dist/utils/provider-retry.d.ts.map +1 -1
  655. package/dist/utils/provider-retry.js +3 -2
  656. package/dist/utils/provider-retry.js.map +1 -1
  657. package/dist/utils/retry.d.ts +6 -1
  658. package/dist/utils/retry.d.ts.map +1 -1
  659. package/dist/utils/retry.js +23 -2
  660. package/dist/utils/retry.js.map +1 -1
  661. package/dist/utils/sanitize-unicode.d.ts.map +1 -1
  662. package/dist/utils/sanitize-unicode.js.map +1 -1
  663. package/dist/utils/sleep.d.ts +2 -0
  664. package/dist/utils/sleep.d.ts.map +1 -0
  665. package/dist/utils/sleep.js +15 -0
  666. package/dist/utils/sleep.js.map +1 -0
  667. package/dist/utils/text.d.ts +9 -1
  668. package/dist/utils/text.d.ts.map +1 -1
  669. package/dist/utils/text.js +26 -0
  670. package/dist/utils/text.js.map +1 -1
  671. package/dist/utils/transcript.d.ts +87 -0
  672. package/dist/utils/transcript.d.ts.map +1 -0
  673. package/dist/utils/transcript.js +207 -0
  674. package/dist/utils/transcript.js.map +1 -0
  675. package/dist/utils/typebox-helpers.d.ts.map +1 -1
  676. package/dist/utils/typebox-helpers.js.map +1 -1
  677. package/dist/utils/uuid.d.ts +2 -2
  678. package/dist/utils/uuid.d.ts.map +1 -1
  679. package/dist/utils/uuid.js +35 -39
  680. package/dist/utils/uuid.js.map +1 -1
  681. package/dist/utils/validation.d.ts.map +1 -1
  682. package/dist/utils/validation.js +40 -0
  683. package/dist/utils/validation.js.map +1 -1
  684. package/package.json +21 -15
  685. package/dist/auth/oauth/oauth-page.d.ts.map +0 -1
  686. package/dist/auth/oauth/oauth-page.js.map +0 -1
  687. package/dist/image-models.generated.d.ts +0 -605
  688. package/dist/image-models.generated.d.ts.map +0 -1
  689. package/dist/image-models.generated.js +0 -607
  690. package/dist/image-models.generated.js.map +0 -1
  691. package/dist/images-models.d.ts +0 -95
  692. package/dist/images-models.d.ts.map +0 -1
  693. package/dist/images-models.js +0 -142
  694. package/dist/images-models.js.map +0 -1
  695. package/dist/providers/azure-openai-responses.d.ts +0 -3
  696. package/dist/providers/azure-openai-responses.d.ts.map +0 -1
  697. package/dist/providers/azure-openai-responses.js +0 -14
  698. package/dist/providers/azure-openai-responses.js.map +0 -1
  699. package/dist/providers/azure-openai-responses.models.d.ts +0 -4
  700. package/dist/providers/azure-openai-responses.models.d.ts.map +0 -1
  701. package/dist/providers/azure-openai-responses.models.js +0 -6
  702. package/dist/providers/azure-openai-responses.models.js.map +0 -1
  703. package/dist/providers/data/azure-openai-responses.json +0 -1
  704. package/dist/providers/openrouter-images.d.ts +0 -3
  705. package/dist/providers/openrouter-images.d.ts.map +0 -1
  706. package/dist/providers/openrouter-images.js +0 -22
  707. package/dist/providers/openrouter-images.js.map +0 -1
  708. package/dist/utils/deferred-tools.d.ts +0 -9
  709. package/dist/utils/deferred-tools.d.ts.map +0 -1
  710. package/dist/utils/deferred-tools.js +0 -36
  711. package/dist/utils/deferred-tools.js.map +0 -1
  712. /package/dist/{auth/oauth → utils}/oauth-page.d.ts +0 -0
@@ -1,21 +1,15 @@
1
- function loadNodeOs() {
2
- if (typeof process === "undefined" || !(process.versions?.node || process.versions?.bun)) {
3
- return null;
4
- }
5
- return process.getBuiltinModule?.("node:os") ?? null;
6
- }
7
- // NEVER convert to top-level runtime imports - breaks browser/Vite builds
8
- const _os = loadNodeOs();
9
1
  import { clampThinkingLevel } from "../models.js";
10
2
  import { registerSessionResourceCleanup } from "../session-resources.js";
11
3
  import { combineAbortSignals } from "../utils/abort-signals.js";
12
- import { splitDeferredTools } from "../utils/deferred-tools.js";
13
4
  import { appendAssistantMessageDiagnostic, createAssistantMessageDiagnostic, formatThrownValue, } from "../utils/diagnostics.js";
14
5
  import { formatProviderError, normalizeProviderError } from "../utils/error-body.js";
15
6
  import { AssistantMessageEventStream } from "../utils/event-stream.js";
16
7
  import { headersToRecord } from "../utils/headers.js";
17
8
  import { resolveHttpProxyUrlForTarget } from "../utils/node-http-proxy.js";
9
+ import { getPiUserAgent } from "../utils/pi-user-agent.js";
18
10
  import { isRetryableAssistantError, retryAssistantCall } from "../utils/retry.js";
11
+ import { getSystemMessageText } from "../utils/text.js";
12
+ import { getDeclaredTools, getInitialSystemMessage, normalizeContext, resolveTranscript, resolveTranscriptTools, } from "../utils/transcript.js";
19
13
  import { uuidv7 } from "../utils/uuid.js";
20
14
  import { createGrammarToolInputProperties } from "./constrained-sampling.js";
21
15
  import { retainCodexCompactionInput, trimCodexCompactionToolOutputs } from "./openai-codex-compaction-history.js";
@@ -191,6 +185,7 @@ function compressRequestBodyZstd(bodyJson) {
191
185
  // ============================================================================
192
186
  export const stream = (model, context, options) => {
193
187
  const stream = new AssistantMessageEventStream();
188
+ const normalizedContext = resolveTranscript(context, model.compat?.supportsMidConvoSystemMessages);
194
189
  (async () => {
195
190
  const output = {
196
191
  role: "assistant",
@@ -219,10 +214,10 @@ export const stream = (model, context, options) => {
219
214
  throw new Error(`No API key for provider: ${model.provider}`);
220
215
  }
221
216
  const accountId = apiKey ? extractAccountId(apiKey) : undefined;
222
- const grammarToolInputProperties = createGrammarToolInputProperties(context.tools, model.compat?.supportsOpenAIGrammarTools ?? false);
217
+ const grammarToolInputProperties = createGrammarToolInputProperties(getDeclaredTools(normalizedContext.messages), model.compat?.supportsOpenAIGrammarTools ?? false);
223
218
  const cacheSessionId = options?.cacheRetention === "none" ? undefined : options?.sessionId;
224
219
  const codexSessionId = clampOpenAIPromptCacheKey(cacheSessionId);
225
- let body = buildRequestBody(model, context, options, codexSessionId, grammarToolInputProperties);
220
+ let body = buildRequestBody(model, normalizedContext, options, codexSessionId, grammarToolInputProperties);
226
221
  const nextBody = await options?.onPayload?.(body, model);
227
222
  if (nextBody !== undefined) {
228
223
  body = nextBody;
@@ -239,7 +234,8 @@ export const stream = (model, context, options) => {
239
234
  if (websocketDisabledForSession) {
240
235
  recordWebSocketSseFallback(cacheSessionId);
241
236
  }
242
- if (transport !== "sse" && !websocketDisabledForSession) {
237
+ // WebSocket sessions are cached per account; transport auth has no account and always uses SSE.
238
+ if (transport !== "sse" && !websocketDisabledForSession && accountId) {
243
239
  let websocketStarted = false;
244
240
  let retriedWebSocketConnectionLimit = false;
245
241
  let retriedMissingWebSocketContinuation = false;
@@ -252,7 +248,7 @@ export const stream = (model, context, options) => {
252
248
  startEmitted = true;
253
249
  stream.push({ type: "start", partial: output });
254
250
  }
255
- }, httpTimeoutMs, websocketConnectTimeoutMs, cacheSessionId, grammarToolInputProperties, options);
251
+ }, httpTimeoutMs, websocketConnectTimeoutMs, cacheSessionId, accountId, grammarToolInputProperties, options);
256
252
  if (options?.signal?.aborted) {
257
253
  throw new Error("Request was aborted");
258
254
  }
@@ -282,7 +278,7 @@ export const stream = (model, context, options) => {
282
278
  }
283
279
  appendAssistantMessageDiagnostic(output, createAssistantMessageDiagnostic("provider_transport_failure", error, {
284
280
  configuredTransport: transport,
285
- fallbackTransport: websocketStarted ? undefined : "sse",
281
+ ...(websocketStarted ? {} : { fallbackTransport: "sse" }),
286
282
  eventsEmitted: websocketStarted,
287
283
  phase: websocketStarted ? "after_message_stream_start" : "before_message_stream_start",
288
284
  requestBytes: new TextEncoder().encode(bodyJson).byteLength,
@@ -423,7 +419,10 @@ function buildSimpleCodexOptions(model, context, options) {
423
419
  if (!apiKey && options?.authMode !== "transport") {
424
420
  throw new Error(`No API key for provider: ${model.provider}`);
425
421
  }
426
- const base = buildBaseOptions(model, context, options, apiKey);
422
+ const base = {
423
+ ...buildBaseOptions(model, context, options, apiKey),
424
+ toolChoice: options?.toolChoice,
425
+ };
427
426
  const clampedReasoning = options?.reasoning ? clampThinkingLevel(model, options.reasoning) : undefined;
428
427
  return {
429
428
  ...base,
@@ -433,7 +432,8 @@ function buildSimpleCodexOptions(model, context, options) {
433
432
  };
434
433
  }
435
434
  export const streamSimple = (model, context, options) => stream(model, context, buildSimpleCodexOptions(model, context, options));
436
- export async function compactOpenAICodexResponses(model, context, options) {
435
+ export async function compactOpenAICodexResponses(model, requestContext, options) {
436
+ const context = normalizeContext(requestContext);
437
437
  const items = [];
438
438
  const base = buildSimpleCodexOptions(model, context, options);
439
439
  let transport = base.transport;
@@ -466,10 +466,9 @@ export async function compactOpenAICodexResponses(model, context, options) {
466
466
  }
467
467
  return {
468
468
  item: { ...item },
469
- retainedInput: retainCodexCompactionInput(buildRequestBody(model, {
470
- ...context,
471
- messages: (options?.nativeCompactionRetainedMessages ?? context.messages).filter((message) => message.role === "user"),
472
- }, base, undefined).input ?? []),
469
+ retainedInput: retainCodexCompactionInput(buildRequestBody(model, normalizeContext({
470
+ messages: (options?.nativeCompactionRetainedMessages ?? requestContext.messages).filter((message) => message.role === "user"),
471
+ }), base, undefined).input ?? []),
473
472
  tokensBefore: result.usage.input + result.usage.cacheRead,
474
473
  usage: result.usage,
475
474
  };
@@ -477,10 +476,12 @@ export async function compactOpenAICodexResponses(model, context, options) {
477
476
  // ============================================================================
478
477
  // Request Building
479
478
  // ============================================================================
480
- function buildRequestBody(model, context, options, cacheSessionId, grammarToolInputProperties = createGrammarToolInputProperties(context.tools, model.compat?.supportsOpenAIGrammarTools ?? false)) {
479
+ function buildRequestBody(model, context, options, cacheSessionId, grammarToolInputProperties = createGrammarToolInputProperties(getDeclaredTools(context.messages), model.compat?.supportsOpenAIGrammarTools ?? false)) {
481
480
  const supportsStrictMode = model.compat?.supportsStrictMode ?? true;
482
481
  const supportsOpenAIGrammarTools = model.compat?.supportsOpenAIGrammarTools ?? false;
483
- const toolPlacement = splitDeferredTools(context, model.compat?.supportsToolSearch ?? false);
482
+ const supportsAdditionalTools = model.compat?.supportsAdditionalTools ?? false;
483
+ const supportsToolSearch = model.compat?.supportsToolSearch ?? false;
484
+ const transcriptTools = resolveTranscriptTools(context.messages, supportsAdditionalTools || supportsToolSearch);
484
485
  const checkpoint = options?.nativeCompactionCheckpoint;
485
486
  const checkpointInput = checkpoint ? [...(checkpoint.retainedInput ?? []), checkpoint.item] : [];
486
487
  const requestContext = options?.nativeCompaction
@@ -489,12 +490,10 @@ function buildRequestBody(model, context, options, cacheSessionId, grammarToolIn
489
490
  const messages = convertResponsesMessages(model, requestContext, CODEX_TOOL_CALL_PROVIDERS, {
490
491
  includeSystemPrompt: false,
491
492
  grammarToolInputProperties,
492
- deferredTools: toolPlacement.deferred,
493
- toolOptions: {
494
- strict: null,
495
- supportsStrictMode,
496
- supportsOpenAIGrammarTools,
497
- },
493
+ supportsMidConvoSystemMessages: model.compat?.supportsMidConvoSystemMessages ?? false,
494
+ supportsAdditionalTools,
495
+ supportsToolSearch,
496
+ toolOptions: { strict: null, supportsStrictMode, supportsOpenAIGrammarTools },
498
497
  });
499
498
  if (checkpoint) {
500
499
  if (checkpoint.provider !== model.provider || model.api !== "openai-codex-responses") {
@@ -510,11 +509,13 @@ function buildRequestBody(model, context, options, cacheSessionId, grammarToolIn
510
509
  if (options?.nativeCompaction) {
511
510
  messages.push({ type: "compaction_trigger" });
512
511
  }
512
+ const initialSystemMessage = getInitialSystemMessage(context.messages);
513
+ const instructions = initialSystemMessage ? getSystemMessageText(initialSystemMessage) : "";
513
514
  const body = {
514
515
  model: model.id,
515
516
  store: false,
516
517
  stream: true,
517
- instructions: context.systemPrompt || "You are a helpful assistant.",
518
+ instructions: instructions || "You are a helpful assistant.",
518
519
  input: messages,
519
520
  text: { verbosity: options?.textVerbosity || "low" },
520
521
  include: ["reasoning.encrypted_content"],
@@ -528,8 +529,8 @@ function buildRequestBody(model, context, options, cacheSessionId, grammarToolIn
528
529
  if (options?.serviceTier !== undefined) {
529
530
  body.service_tier = options.serviceTier;
530
531
  }
531
- if (toolPlacement.immediate.length > 0) {
532
- body.tools = convertResponsesTools(toolPlacement.immediate, {
532
+ if (transcriptTools.requestTools.length > 0) {
533
+ body.tools = convertResponsesTools(transcriptTools.requestTools, {
533
534
  strict: null,
534
535
  supportsStrictMode,
535
536
  supportsOpenAIGrammarTools,
@@ -537,7 +538,9 @@ function buildRequestBody(model, context, options, cacheSessionId, grammarToolIn
537
538
  }
538
539
  if (options?.reasoningEffort !== undefined) {
539
540
  const effort = options.reasoningEffort === "none"
540
- ? (model.thinkingLevelMap?.off ?? "none")
541
+ ? model.thinkingLevelMap?.off === undefined
542
+ ? "none"
543
+ : model.thinkingLevelMap.off
541
544
  : (model.thinkingLevelMap?.[options.reasoningEffort] ?? options.reasoningEffort);
542
545
  if (effort !== null) {
543
546
  body.reasoning = {
@@ -546,6 +549,9 @@ function buildRequestBody(model, context, options, cacheSessionId, grammarToolIn
546
549
  };
547
550
  }
548
551
  }
552
+ else if (model.reasoning && model.thinkingLevelMap?.off !== null) {
553
+ body.reasoning = { effort: model.thinkingLevelMap?.off ?? "none" };
554
+ }
549
555
  return body;
550
556
  }
551
557
  function getServiceTierCostMultiplier(model, serviceTier) {
@@ -595,7 +601,7 @@ function resolveCodexWebSocketUrl(baseUrl) {
595
601
  // Response Processing
596
602
  // ============================================================================
597
603
  async function processStream(response, output, stream, model, grammarToolInputProperties, options) {
598
- await processResponsesStream(mapCodexEvents(parseSSE(response, options?.signal), options?.onNativeCompactionItem), output, stream, model, {
604
+ await processResponsesStream(mapCodexEvents(parseSSE(response, options?.signal), output, model, options?.onProviderStreamEvent, options?.onNativeCompactionItem), output, stream, model, {
599
605
  serviceTier: options?.serviceTier,
600
606
  grammarToolInputProperties,
601
607
  resolveServiceTier: resolveCodexServiceTier,
@@ -624,8 +630,17 @@ class CodexProtocolError extends Error {
624
630
  this.cause = options?.cause;
625
631
  }
626
632
  }
633
+ class ProviderStreamEventCallbackError extends Error {
634
+ constructor(cause) {
635
+ super(formatThrownValue(cause));
636
+ this.name = "ProviderStreamEventCallbackError";
637
+ this.cause = cause;
638
+ }
639
+ }
627
640
  function isCodexNonTransportError(error) {
628
- return error instanceof CodexApiError || error instanceof CodexProtocolError;
641
+ return (error instanceof CodexApiError ||
642
+ error instanceof CodexProtocolError ||
643
+ error instanceof ProviderStreamEventCallbackError);
629
644
  }
630
645
  function isWebSocketConnectionLimitReachedError(error) {
631
646
  return error instanceof CodexApiError && error.code === WEBSOCKET_CONNECTION_LIMIT_REACHED_CODE;
@@ -650,8 +665,15 @@ function extractCodexEventError(event) {
650
665
  : undefined,
651
666
  };
652
667
  }
653
- async function* mapCodexEvents(events, onNativeCompactionItem) {
668
+ async function* mapCodexEvents(events, output, model, onProviderStreamEvent, onNativeCompactionItem) {
654
669
  for await (const event of events) {
670
+ try {
671
+ await onProviderStreamEvent?.(event, model);
672
+ }
673
+ catch (error) {
674
+ // Keep callback failures out of Codex's WebSocket retry and SSE fallback path.
675
+ throw new ProviderStreamEventCallbackError(error);
676
+ }
655
677
  const type = typeof event.type === "string" ? event.type : undefined;
656
678
  if (!type)
657
679
  continue;
@@ -675,6 +697,9 @@ async function* mapCodexEvents(events, onNativeCompactionItem) {
675
697
  }
676
698
  if (type === "response.done" || type === "response.completed" || type === "response.incomplete") {
677
699
  const response = event.response;
700
+ if (typeof response?.end_turn === "boolean") {
701
+ output.endTurn = response.end_turn;
702
+ }
678
703
  const normalizedResponse = response
679
704
  ? { ...response, status: normalizeCodexStatus(response.status) }
680
705
  : response;
@@ -711,9 +736,10 @@ async function* parseSSE(response, signal) {
711
736
  if (signal?.aborted) {
712
737
  throw new Error("Request was aborted");
713
738
  }
714
- if (done)
715
- break;
716
- buffer += decoder.decode(value, { stream: true });
739
+ buffer += done ? decoder.decode() : decoder.decode(value, { stream: true });
740
+ // Treat EOF as terminating the residual SSE frame.
741
+ if (done && buffer.trim())
742
+ buffer += "\n\n";
717
743
  let idx = buffer.indexOf("\n\n");
718
744
  while (idx !== -1) {
719
745
  const chunk = buffer.slice(0, idx);
@@ -738,6 +764,8 @@ async function* parseSSE(response, signal) {
738
764
  }
739
765
  idx = buffer.indexOf("\n\n");
740
766
  }
767
+ if (done)
768
+ break;
741
769
  }
742
770
  }
743
771
  finally {
@@ -800,14 +828,14 @@ export function closeOpenAICodexWebSocketSessions(sessionId) {
800
828
  closeWebSocketSilently(entry.socket, 1000, "debug_close");
801
829
  };
802
830
  if (sessionId) {
803
- const entry = websocketSessionCache.get(sessionId);
804
- if (entry)
831
+ for (const entry of websocketSessionCache.get(sessionId)?.values() ?? [])
805
832
  closeEntry(entry);
806
833
  websocketSessionCache.delete(sessionId);
807
834
  return;
808
835
  }
809
- for (const entry of websocketSessionCache.values()) {
810
- closeEntry(entry);
836
+ for (const accountEntries of websocketSessionCache.values()) {
837
+ for (const entry of accountEntries.values())
838
+ closeEntry(entry);
811
839
  }
812
840
  websocketSessionCache.clear();
813
841
  }
@@ -891,7 +919,7 @@ function closeWebSocketSilently(socket, code = 1000, reason = "done") {
891
919
  }
892
920
  catch { }
893
921
  }
894
- function scheduleSessionWebSocketExpiry(sessionId, entry) {
922
+ function scheduleSessionWebSocketExpiry(sessionId, accountId, entry) {
895
923
  if (entry.idleTimer) {
896
924
  clearTimeout(entry.idleTimer);
897
925
  }
@@ -899,7 +927,11 @@ function scheduleSessionWebSocketExpiry(sessionId, entry) {
899
927
  if (entry.busy)
900
928
  return;
901
929
  closeWebSocketSilently(entry.socket, 1000, "idle_timeout");
902
- websocketSessionCache.delete(sessionId);
930
+ const accountEntries = websocketSessionCache.get(sessionId);
931
+ if (accountEntries?.get(accountId) === entry)
932
+ accountEntries.delete(accountId);
933
+ if (accountEntries?.size === 0)
934
+ websocketSessionCache.delete(sessionId);
903
935
  }, SESSION_WEBSOCKET_CACHE_TTL_MS);
904
936
  }
905
937
  async function connectWebSocket(url, headers, signal, connectTimeoutMs = DEFAULT_WEBSOCKET_CONNECT_TIMEOUT_MS, env) {
@@ -970,7 +1002,7 @@ async function connectWebSocket(url, headers, signal, connectTimeoutMs = DEFAULT
970
1002
  }
971
1003
  });
972
1004
  }
973
- async function acquireWebSocket(url, headers, sessionId, signal, connectTimeoutMs, env) {
1005
+ async function acquireWebSocket(url, headers, sessionId, accountId, signal, connectTimeoutMs, env) {
974
1006
  if (!sessionId) {
975
1007
  const socket = await connectWebSocket(url, headers, signal, connectTimeoutMs, env);
976
1008
  return {
@@ -979,7 +1011,8 @@ async function acquireWebSocket(url, headers, sessionId, signal, connectTimeoutM
979
1011
  release: () => closeWebSocketSilently(socket),
980
1012
  };
981
1013
  }
982
- const cached = websocketSessionCache.get(sessionId);
1014
+ let accountEntries = websocketSessionCache.get(sessionId);
1015
+ const cached = accountEntries?.get(accountId);
983
1016
  if (cached) {
984
1017
  if (cached.idleTimer) {
985
1018
  clearTimeout(cached.idleTimer);
@@ -987,7 +1020,9 @@ async function acquireWebSocket(url, headers, sessionId, signal, connectTimeoutM
987
1020
  }
988
1021
  if (!cached.busy && isWebSocketSessionExpired(cached)) {
989
1022
  closeWebSocketSilently(cached.socket, 1000, "connection_age_limit");
990
- websocketSessionCache.delete(sessionId);
1023
+ accountEntries?.delete(accountId);
1024
+ if (accountEntries?.size === 0)
1025
+ websocketSessionCache.delete(sessionId);
991
1026
  }
992
1027
  else if (!cached.busy && isWebSocketReusable(cached.socket)) {
993
1028
  cached.busy = true;
@@ -998,11 +1033,15 @@ async function acquireWebSocket(url, headers, sessionId, signal, connectTimeoutM
998
1033
  release: ({ keep } = {}) => {
999
1034
  if (!keep || !isWebSocketReusable(cached.socket)) {
1000
1035
  closeWebSocketSilently(cached.socket);
1001
- websocketSessionCache.delete(sessionId);
1036
+ const currentEntries = websocketSessionCache.get(sessionId);
1037
+ if (currentEntries?.get(accountId) === cached)
1038
+ currentEntries.delete(accountId);
1039
+ if (currentEntries?.size === 0)
1040
+ websocketSessionCache.delete(sessionId);
1002
1041
  return;
1003
1042
  }
1004
1043
  cached.busy = false;
1005
- scheduleSessionWebSocketExpiry(sessionId, cached);
1044
+ scheduleSessionWebSocketExpiry(sessionId, accountId, cached);
1006
1045
  },
1007
1046
  };
1008
1047
  }
@@ -1018,12 +1057,19 @@ async function acquireWebSocket(url, headers, sessionId, signal, connectTimeoutM
1018
1057
  }
1019
1058
  if (!isWebSocketReusable(cached.socket)) {
1020
1059
  closeWebSocketSilently(cached.socket);
1021
- websocketSessionCache.delete(sessionId);
1060
+ accountEntries?.delete(accountId);
1061
+ if (accountEntries?.size === 0)
1062
+ websocketSessionCache.delete(sessionId);
1022
1063
  }
1023
1064
  }
1024
1065
  const socket = await connectWebSocket(url, headers, signal, connectTimeoutMs, env);
1025
1066
  const entry = { socket, busy: true, createdAt: Date.now() };
1026
- websocketSessionCache.set(sessionId, entry);
1067
+ accountEntries = websocketSessionCache.get(sessionId);
1068
+ if (!accountEntries) {
1069
+ accountEntries = new Map();
1070
+ websocketSessionCache.set(sessionId, accountEntries);
1071
+ }
1072
+ accountEntries.set(accountId, entry);
1027
1073
  return {
1028
1074
  socket,
1029
1075
  entry,
@@ -1033,13 +1079,15 @@ async function acquireWebSocket(url, headers, sessionId, signal, connectTimeoutM
1033
1079
  closeWebSocketSilently(entry.socket);
1034
1080
  if (entry.idleTimer)
1035
1081
  clearTimeout(entry.idleTimer);
1036
- if (websocketSessionCache.get(sessionId) === entry) {
1082
+ const currentEntries = websocketSessionCache.get(sessionId);
1083
+ if (currentEntries?.get(accountId) === entry)
1084
+ currentEntries.delete(accountId);
1085
+ if (currentEntries?.size === 0)
1037
1086
  websocketSessionCache.delete(sessionId);
1038
- }
1039
1087
  return;
1040
1088
  }
1041
1089
  entry.busy = false;
1042
- scheduleSessionWebSocketExpiry(sessionId, entry);
1090
+ scheduleSessionWebSocketExpiry(sessionId, accountId, entry);
1043
1091
  },
1044
1092
  };
1045
1093
  }
@@ -1259,8 +1307,8 @@ async function* startWebSocketOutputOnFirstEvent(events, onStart) {
1259
1307
  yield event;
1260
1308
  }
1261
1309
  }
1262
- async function processWebSocketStream(url, body, headers, output, stream, model, onStart, idleTimeoutMs, websocketConnectTimeoutMs, cacheSessionId, grammarToolInputProperties, options) {
1263
- const { socket, entry, reused, release } = await acquireWebSocket(url, headers, cacheSessionId, options?.signal, websocketConnectTimeoutMs, options?.env);
1310
+ async function processWebSocketStream(url, body, headers, output, stream, model, onStart, idleTimeoutMs, websocketConnectTimeoutMs, cacheSessionId, accountId, grammarToolInputProperties, options) {
1311
+ const { socket, entry, reused, release } = await acquireWebSocket(url, headers, cacheSessionId, accountId, options?.signal, websocketConnectTimeoutMs, options?.env);
1264
1312
  let keepConnection = true;
1265
1313
  const useCachedContext = options?.transport === "websocket-cached" || options?.transport === "auto";
1266
1314
  // ChatGPT Codex Responses rejects `store: true` ("Store must be set to false").
@@ -1292,7 +1340,7 @@ async function processWebSocketStream(url, body, headers, output, stream, model,
1292
1340
  }
1293
1341
  try {
1294
1342
  socket.send(JSON.stringify({ type: "response.create", ...requestBody }));
1295
- await processResponsesStream(startWebSocketOutputOnFirstEvent(mapCodexEvents(parseWebSocket(socket, options?.signal, idleTimeoutMs), options?.onNativeCompactionItem), onStart), output, stream, model, {
1343
+ await processResponsesStream(startWebSocketOutputOnFirstEvent(mapCodexEvents(parseWebSocket(socket, options?.signal, idleTimeoutMs), output, model, options?.onProviderStreamEvent, options?.onNativeCompactionItem), onStart), output, stream, model, {
1296
1344
  serviceTier: options?.serviceTier,
1297
1345
  grammarToolInputProperties,
1298
1346
  resolveServiceTier: resolveCodexServiceTier,
@@ -1306,7 +1354,7 @@ async function processWebSocketStream(url, body, headers, output, stream, model,
1306
1354
  entry.continuation = undefined;
1307
1355
  }
1308
1356
  else if (useCachedContext && entry && output.responseId) {
1309
- const responseItems = convertResponsesMessages(model, { messages: [output] }, CODEX_TOOL_CALL_PROVIDERS, {
1357
+ const responseItems = convertResponsesMessages(model, normalizeContext({ messages: [output] }), CODEX_TOOL_CALL_PROVIDERS, {
1310
1358
  includeSystemPrompt: false,
1311
1359
  grammarToolInputProperties,
1312
1360
  }).filter((item) => item.type !== "function_call_output" && item.type !== "custom_tool_call_output");
@@ -1394,8 +1442,7 @@ function buildBaseCodexHeaders(initHeaders, additionalHeaders, accountId, token)
1394
1442
  headers.delete("chatgpt-account-id");
1395
1443
  }
1396
1444
  headers.set("originator", "pi");
1397
- const userAgent = _os ? `pi (${_os.platform()} ${_os.release()}; ${_os.arch()})` : "pi (browser)";
1398
- headers.set("User-Agent", userAgent);
1445
+ headers.set("User-Agent", getPiUserAgent());
1399
1446
  return headers;
1400
1447
  }
1401
1448
  function buildSSEHeaders(initHeaders, additionalHeaders, accountId, token, sessionId) {