@fractaal/pi-ai 0.85.3 → 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 (713) 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 +14 -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 +19 -0
  456. package/dist/providers/openai-codex-catalog.d.ts.map +1 -0
  457. package/dist/providers/openai-codex-catalog.js +242 -0
  458. package/dist/providers/openai-codex-catalog.js.map +1 -0
  459. package/dist/providers/openai-codex.d.ts +3 -1
  460. package/dist/providers/openai-codex.d.ts.map +1 -1
  461. package/dist/providers/openai-codex.js +10 -3
  462. package/dist/providers/openai-codex.js.map +1 -1
  463. package/dist/providers/openai-codex.models.d.ts +4 -2
  464. package/dist/providers/openai-codex.models.d.ts.map +1 -1
  465. package/dist/providers/openai-codex.models.js +4 -2
  466. package/dist/providers/openai-codex.models.js.map +1 -1
  467. package/dist/providers/openai.d.ts.map +1 -1
  468. package/dist/providers/openai.js +11 -2
  469. package/dist/providers/openai.js.map +1 -1
  470. package/dist/providers/openai.models.d.ts +4 -2
  471. package/dist/providers/openai.models.d.ts.map +1 -1
  472. package/dist/providers/openai.models.js +4 -2
  473. package/dist/providers/openai.models.js.map +1 -1
  474. package/dist/providers/opencode-go.d.ts.map +1 -1
  475. package/dist/providers/opencode-go.js +5 -4
  476. package/dist/providers/opencode-go.js.map +1 -1
  477. package/dist/providers/opencode-go.models.d.ts +4 -2
  478. package/dist/providers/opencode-go.models.d.ts.map +1 -1
  479. package/dist/providers/opencode-go.models.js +4 -2
  480. package/dist/providers/opencode-go.models.js.map +1 -1
  481. package/dist/providers/opencode-headers.d.ts +4 -0
  482. package/dist/providers/opencode-headers.d.ts.map +1 -0
  483. package/dist/providers/opencode-headers.js +22 -0
  484. package/dist/providers/opencode-headers.js.map +1 -0
  485. package/dist/providers/opencode.d.ts +3 -1
  486. package/dist/providers/opencode.d.ts.map +1 -1
  487. package/dist/providers/opencode.js +10 -6
  488. package/dist/providers/opencode.js.map +1 -1
  489. package/dist/providers/opencode.models.d.ts +4 -2
  490. package/dist/providers/opencode.models.d.ts.map +1 -1
  491. package/dist/providers/opencode.models.js +4 -2
  492. package/dist/providers/opencode.models.js.map +1 -1
  493. package/dist/providers/openrouter.d.ts +1 -1
  494. package/dist/providers/openrouter.d.ts.map +1 -1
  495. package/dist/providers/openrouter.js +16 -3
  496. package/dist/providers/openrouter.js.map +1 -1
  497. package/dist/providers/openrouter.models.d.ts +4 -2
  498. package/dist/providers/openrouter.models.d.ts.map +1 -1
  499. package/dist/providers/openrouter.models.js +4 -2
  500. package/dist/providers/openrouter.models.js.map +1 -1
  501. package/dist/providers/qwen-token-plan-cn.d.ts.map +1 -1
  502. package/dist/providers/qwen-token-plan-cn.js.map +1 -1
  503. package/dist/providers/qwen-token-plan-cn.models.d.ts +4 -2
  504. package/dist/providers/qwen-token-plan-cn.models.d.ts.map +1 -1
  505. package/dist/providers/qwen-token-plan-cn.models.js +4 -2
  506. package/dist/providers/qwen-token-plan-cn.models.js.map +1 -1
  507. package/dist/providers/qwen-token-plan-individual.d.ts +3 -0
  508. package/dist/providers/qwen-token-plan-individual.d.ts.map +1 -0
  509. package/dist/providers/qwen-token-plan-individual.js +15 -0
  510. package/dist/providers/qwen-token-plan-individual.js.map +1 -0
  511. package/dist/providers/qwen-token-plan-individual.models.d.ts +6 -0
  512. package/dist/providers/qwen-token-plan-individual.models.d.ts.map +1 -0
  513. package/dist/providers/qwen-token-plan-individual.models.js +8 -0
  514. package/dist/providers/qwen-token-plan-individual.models.js.map +1 -0
  515. package/dist/providers/qwen-token-plan.d.ts.map +1 -1
  516. package/dist/providers/qwen-token-plan.js.map +1 -1
  517. package/dist/providers/qwen-token-plan.models.d.ts +4 -2
  518. package/dist/providers/qwen-token-plan.models.d.ts.map +1 -1
  519. package/dist/providers/qwen-token-plan.models.js +4 -2
  520. package/dist/providers/qwen-token-plan.models.js.map +1 -1
  521. package/dist/providers/radius-config.d.ts.map +1 -1
  522. package/dist/providers/radius-config.js.map +1 -1
  523. package/dist/providers/radius.d.ts.map +1 -1
  524. package/dist/providers/radius.js +53 -29
  525. package/dist/providers/radius.js.map +1 -1
  526. package/dist/providers/radius.models.d.ts +6 -0
  527. package/dist/providers/radius.models.d.ts.map +1 -0
  528. package/dist/providers/radius.models.js +8 -0
  529. package/dist/providers/radius.models.js.map +1 -0
  530. package/dist/providers/together.d.ts.map +1 -1
  531. package/dist/providers/together.js.map +1 -1
  532. package/dist/providers/together.models.d.ts +4 -2
  533. package/dist/providers/together.models.d.ts.map +1 -1
  534. package/dist/providers/together.models.js +4 -2
  535. package/dist/providers/together.models.js.map +1 -1
  536. package/dist/providers/typesafe.d.ts +3 -0
  537. package/dist/providers/typesafe.d.ts.map +1 -0
  538. package/dist/providers/typesafe.js +18 -0
  539. package/dist/providers/typesafe.js.map +1 -0
  540. package/dist/providers/typesafe.models.d.ts +6 -0
  541. package/dist/providers/typesafe.models.d.ts.map +1 -0
  542. package/dist/providers/typesafe.models.js +8 -0
  543. package/dist/providers/typesafe.models.js.map +1 -0
  544. package/dist/providers/vercel-ai-gateway.d.ts.map +1 -1
  545. package/dist/providers/vercel-ai-gateway.js +5 -2
  546. package/dist/providers/vercel-ai-gateway.js.map +1 -1
  547. package/dist/providers/vercel-ai-gateway.models.d.ts +4 -2
  548. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
  549. package/dist/providers/vercel-ai-gateway.models.js +4 -2
  550. package/dist/providers/vercel-ai-gateway.models.js.map +1 -1
  551. package/dist/providers/xai.d.ts +1 -1
  552. package/dist/providers/xai.d.ts.map +1 -1
  553. package/dist/providers/xai.js +2 -5
  554. package/dist/providers/xai.js.map +1 -1
  555. package/dist/providers/xai.models.d.ts +4 -2
  556. package/dist/providers/xai.models.d.ts.map +1 -1
  557. package/dist/providers/xai.models.js +4 -2
  558. package/dist/providers/xai.models.js.map +1 -1
  559. package/dist/providers/xiaomi-token-plan-ams.d.ts.map +1 -1
  560. package/dist/providers/xiaomi-token-plan-ams.js.map +1 -1
  561. package/dist/providers/xiaomi-token-plan-ams.models.d.ts +4 -2
  562. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -1
  563. package/dist/providers/xiaomi-token-plan-ams.models.js +4 -2
  564. package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -1
  565. package/dist/providers/xiaomi-token-plan-cn.d.ts.map +1 -1
  566. package/dist/providers/xiaomi-token-plan-cn.js.map +1 -1
  567. package/dist/providers/xiaomi-token-plan-cn.models.d.ts +4 -2
  568. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -1
  569. package/dist/providers/xiaomi-token-plan-cn.models.js +4 -2
  570. package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -1
  571. package/dist/providers/xiaomi-token-plan-sgp.d.ts.map +1 -1
  572. package/dist/providers/xiaomi-token-plan-sgp.js.map +1 -1
  573. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +4 -2
  574. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -1
  575. package/dist/providers/xiaomi-token-plan-sgp.models.js +4 -2
  576. package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -1
  577. package/dist/providers/xiaomi.d.ts.map +1 -1
  578. package/dist/providers/xiaomi.js.map +1 -1
  579. package/dist/providers/xiaomi.models.d.ts +4 -2
  580. package/dist/providers/xiaomi.models.d.ts.map +1 -1
  581. package/dist/providers/xiaomi.models.js +4 -2
  582. package/dist/providers/xiaomi.models.js.map +1 -1
  583. package/dist/providers/zai-coding-cn.d.ts.map +1 -1
  584. package/dist/providers/zai-coding-cn.js.map +1 -1
  585. package/dist/providers/zai-coding-cn.models.d.ts +4 -2
  586. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -1
  587. package/dist/providers/zai-coding-cn.models.js +4 -2
  588. package/dist/providers/zai-coding-cn.models.js.map +1 -1
  589. package/dist/providers/zai.d.ts.map +1 -1
  590. package/dist/providers/zai.js.map +1 -1
  591. package/dist/providers/zai.models.d.ts +4 -2
  592. package/dist/providers/zai.models.d.ts.map +1 -1
  593. package/dist/providers/zai.models.js +4 -2
  594. package/dist/providers/zai.models.js.map +1 -1
  595. package/dist/session-resources.d.ts.map +1 -1
  596. package/dist/session-resources.js.map +1 -1
  597. package/dist/types.d.ts +417 -126
  598. package/dist/types.d.ts.map +1 -1
  599. package/dist/types.js.map +1 -1
  600. package/dist/utils/abort-signals.d.ts.map +1 -1
  601. package/dist/utils/abort-signals.js.map +1 -1
  602. package/dist/utils/abort.d.ts +8 -0
  603. package/dist/utils/abort.d.ts.map +1 -0
  604. package/dist/utils/abort.js +49 -0
  605. package/dist/utils/abort.js.map +1 -0
  606. package/dist/utils/assistant-message-frame.d.ts +77 -0
  607. package/dist/utils/assistant-message-frame.d.ts.map +1 -0
  608. package/dist/utils/assistant-message-frame.js +425 -0
  609. package/dist/utils/assistant-message-frame.js.map +1 -0
  610. package/dist/utils/diagnostics.d.ts +3 -2
  611. package/dist/utils/diagnostics.d.ts.map +1 -1
  612. package/dist/utils/diagnostics.js.map +1 -1
  613. package/dist/utils/error-body.d.ts.map +1 -1
  614. package/dist/utils/error-body.js +23 -4
  615. package/dist/utils/error-body.js.map +1 -1
  616. package/dist/utils/estimate.d.ts +2 -2
  617. package/dist/utils/estimate.d.ts.map +1 -1
  618. package/dist/utils/estimate.js +8 -29
  619. package/dist/utils/estimate.js.map +1 -1
  620. package/dist/utils/event-stream.d.ts.map +1 -1
  621. package/dist/utils/event-stream.js +25 -7
  622. package/dist/utils/event-stream.js.map +1 -1
  623. package/dist/utils/hash.d.ts.map +1 -1
  624. package/dist/utils/hash.js.map +1 -1
  625. package/dist/utils/headers.d.ts +1 -1
  626. package/dist/utils/headers.d.ts.map +1 -1
  627. package/dist/utils/headers.js +10 -8
  628. package/dist/utils/headers.js.map +1 -1
  629. package/dist/utils/json-parse.d.ts.map +1 -1
  630. package/dist/utils/json-parse.js.map +1 -1
  631. package/dist/utils/model-operations.d.ts +11 -0
  632. package/dist/utils/model-operations.d.ts.map +1 -0
  633. package/dist/utils/model-operations.js +47 -0
  634. package/dist/utils/model-operations.js.map +1 -0
  635. package/dist/utils/models-error.d.ts +8 -0
  636. package/dist/utils/models-error.d.ts.map +1 -0
  637. package/dist/utils/models-error.js +19 -0
  638. package/dist/utils/models-error.js.map +1 -0
  639. package/dist/utils/node-http-proxy.d.ts.map +1 -1
  640. package/dist/utils/node-http-proxy.js +53 -12
  641. package/dist/utils/node-http-proxy.js.map +1 -1
  642. package/dist/utils/oauth-page.d.ts.map +1 -0
  643. package/dist/{auth/oauth → utils}/oauth-page.js +1 -1
  644. package/dist/utils/oauth-page.js.map +1 -0
  645. package/dist/utils/overflow.d.ts +11 -1
  646. package/dist/utils/overflow.d.ts.map +1 -1
  647. package/dist/utils/overflow.js +24 -6
  648. package/dist/utils/overflow.js.map +1 -1
  649. package/dist/utils/pi-user-agent.d.ts +2 -0
  650. package/dist/utils/pi-user-agent.d.ts.map +1 -0
  651. package/dist/utils/pi-user-agent.js +12 -0
  652. package/dist/utils/pi-user-agent.js.map +1 -0
  653. package/dist/utils/provider-env.d.ts.map +1 -1
  654. package/dist/utils/provider-env.js.map +1 -1
  655. package/dist/utils/provider-retry.d.ts.map +1 -1
  656. package/dist/utils/provider-retry.js +3 -2
  657. package/dist/utils/provider-retry.js.map +1 -1
  658. package/dist/utils/retry.d.ts +6 -1
  659. package/dist/utils/retry.d.ts.map +1 -1
  660. package/dist/utils/retry.js +23 -2
  661. package/dist/utils/retry.js.map +1 -1
  662. package/dist/utils/sanitize-unicode.d.ts.map +1 -1
  663. package/dist/utils/sanitize-unicode.js.map +1 -1
  664. package/dist/utils/sleep.d.ts +2 -0
  665. package/dist/utils/sleep.d.ts.map +1 -0
  666. package/dist/utils/sleep.js +15 -0
  667. package/dist/utils/sleep.js.map +1 -0
  668. package/dist/utils/text.d.ts +9 -1
  669. package/dist/utils/text.d.ts.map +1 -1
  670. package/dist/utils/text.js +26 -0
  671. package/dist/utils/text.js.map +1 -1
  672. package/dist/utils/transcript.d.ts +87 -0
  673. package/dist/utils/transcript.d.ts.map +1 -0
  674. package/dist/utils/transcript.js +207 -0
  675. package/dist/utils/transcript.js.map +1 -0
  676. package/dist/utils/typebox-helpers.d.ts.map +1 -1
  677. package/dist/utils/typebox-helpers.js.map +1 -1
  678. package/dist/utils/uuid.d.ts +2 -2
  679. package/dist/utils/uuid.d.ts.map +1 -1
  680. package/dist/utils/uuid.js +35 -39
  681. package/dist/utils/uuid.js.map +1 -1
  682. package/dist/utils/validation.d.ts.map +1 -1
  683. package/dist/utils/validation.js +40 -0
  684. package/dist/utils/validation.js.map +1 -1
  685. package/package.json +21 -15
  686. package/dist/auth/oauth/oauth-page.d.ts.map +0 -1
  687. package/dist/auth/oauth/oauth-page.js.map +0 -1
  688. package/dist/image-models.generated.d.ts +0 -605
  689. package/dist/image-models.generated.d.ts.map +0 -1
  690. package/dist/image-models.generated.js +0 -607
  691. package/dist/image-models.generated.js.map +0 -1
  692. package/dist/images-models.d.ts +0 -95
  693. package/dist/images-models.d.ts.map +0 -1
  694. package/dist/images-models.js +0 -142
  695. package/dist/images-models.js.map +0 -1
  696. package/dist/providers/azure-openai-responses.d.ts +0 -3
  697. package/dist/providers/azure-openai-responses.d.ts.map +0 -1
  698. package/dist/providers/azure-openai-responses.js +0 -14
  699. package/dist/providers/azure-openai-responses.js.map +0 -1
  700. package/dist/providers/azure-openai-responses.models.d.ts +0 -4
  701. package/dist/providers/azure-openai-responses.models.d.ts.map +0 -1
  702. package/dist/providers/azure-openai-responses.models.js +0 -6
  703. package/dist/providers/azure-openai-responses.models.js.map +0 -1
  704. package/dist/providers/data/azure-openai-responses.json +0 -1
  705. package/dist/providers/openrouter-images.d.ts +0 -3
  706. package/dist/providers/openrouter-images.d.ts.map +0 -1
  707. package/dist/providers/openrouter-images.js +0 -22
  708. package/dist/providers/openrouter-images.js.map +0 -1
  709. package/dist/utils/deferred-tools.d.ts +0 -9
  710. package/dist/utils/deferred-tools.d.ts.map +0 -1
  711. package/dist/utils/deferred-tools.js +0 -36
  712. package/dist/utils/deferred-tools.js.map +0 -1
  713. /package/dist/{auth/oauth → utils}/oauth-page.d.ts +0 -0
package/dist/types.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { TelemetryContext } from "@earendil-works/pi-telemetry";
1
2
  import type { AnthropicOptions } from "./api/anthropic-messages.ts";
2
3
  import type { AzureOpenAIResponsesOptions } from "./api/azure-openai-responses.ts";
3
4
  import type { BedrockOptions } from "./api/bedrock-converse-stream.ts";
@@ -13,19 +14,24 @@ import type { AssistantMessageEventStream } from "./utils/event-stream.ts";
13
14
  export type { AssistantMessageEventStream } from "./utils/event-stream.ts";
14
15
  export type KnownApi = "openai-completions" | "mistral-conversations" | "openai-responses" | "azure-openai-responses" | "openai-codex-responses" | "anthropic-messages" | "bedrock-converse-stream" | "google-generative-ai" | "google-vertex" | "pi-messages";
15
16
  export type Api = KnownApi | (string & {});
16
- export type KnownImagesApi = "openrouter-images";
17
- export type ImagesApi = KnownImagesApi | (string & {});
18
- export type KnownProvider = "amazon-bedrock" | "ant-ling" | "anthropic" | "google" | "google-vertex" | "openai" | "azure-openai-responses" | "openai-codex" | "radius" | "nvidia" | "deepseek" | "github-copilot" | "xai" | "groq" | "cerebras" | "openrouter" | "vercel-ai-gateway" | "zai" | "zai-coding-cn" | "mistral" | "minimax" | "minimax-cn" | "moonshotai" | "moonshotai-cn" | "huggingface" | "fireworks" | "together" | "opencode" | "opencode-go" | "kimi-coding" | "cloudflare-workers-ai" | "cloudflare-ai-gateway" | "qwen-token-plan" | "qwen-token-plan-cn" | "xiaomi" | "xiaomi-token-plan-cn" | "xiaomi-token-plan-ams" | "xiaomi-token-plan-sgp";
17
+ export type KnownImageApi = "openrouter-images";
18
+ export type ImageApi = KnownImageApi | (string & {});
19
+ export type KnownClassifierApi = "typesafe-system-one" | "cloudflare-workers-ai-system-one" | "llama-cpp-classify";
20
+ export type ClassifierApi = KnownClassifierApi | (string & {});
21
+ export type KnownProvider = "amazon-bedrock" | "ant-ling" | "anthropic" | "google" | "google-vertex" | "openai" | "azure" | "openai-codex" | "radius" | "typesafe" | "nvidia" | "deepseek" | "github-copilot" | "xai" | "groq" | "cerebras" | "openrouter" | "vercel-ai-gateway" | "zai" | "zai-coding-cn" | "mistral" | "minimax" | "minimax-cn" | "moonshotai" | "moonshotai-cn" | "huggingface" | "fireworks" | "together" | "baseten" | "opencode" | "opencode-go" | "kimi-coding" | "meta" | "cloudflare-workers-ai" | "cloudflare-ai-gateway" | "qwen-token-plan" | "qwen-token-plan-cn" | "qwen-token-plan-individual" | "xiaomi" | "xiaomi-token-plan-cn" | "xiaomi-token-plan-ams" | "xiaomi-token-plan-sgp";
19
22
  export type ProviderId = KnownProvider | string;
20
- export type KnownImagesProvider = "openrouter";
21
- export type ImagesProviderId = KnownImagesProvider | string;
23
+ export type ToolChoice = "auto" | "none";
22
24
  export type ThinkingLevel = "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
23
25
  export type ModelThinkingLevel = "off" | ThinkingLevel;
24
26
  export type ThinkingLevelMap = Partial<Record<ModelThinkingLevel, string | null>>;
27
+ export type SamplingParams = Record<string, unknown>;
28
+ export type SamplingParamsByThinkingLevel = Partial<Record<ModelThinkingLevel, SamplingParams>>;
25
29
  export type ChatTemplateKwargValue = string | number | boolean | null | {
26
- $var: "thinking.enabled" | "thinking.effort";
30
+ $var: "thinking.enabled" | "thinking.effort" | "thinking.budget";
27
31
  omitWhenOff?: boolean;
28
32
  };
33
+ /** Top-level request field used to cap reasoning tokens on OpenAI-compatible servers. */
34
+ export type ThinkingTokenBudgetField = "thinking_token_budget" | "thinking_budget" | "thinking_budget_tokens";
29
35
  /** Token budgets for each thinking level (token-based providers only) */
30
36
  export interface ThinkingBudgets {
31
37
  minimal?: number;
@@ -34,6 +40,11 @@ export interface ThinkingBudgets {
34
40
  high?: number;
35
41
  }
36
42
  export type CacheRetention = "none" | "short" | "long";
43
+ /**
44
+ * Best-effort prompt cache lifetime in seconds for each retention tier a request can ask for.
45
+ * A missing tier means the lifetime is unknown; pi does not warm such caches.
46
+ */
47
+ export type ModelPromptCache = Partial<Record<Exclude<CacheRetention, "none">, number>>;
37
48
  export type Transport = "sse" | "websocket" | "websocket-cached" | "auto";
38
49
  /** Provider-scoped environment overrides. Values take precedence over process.env. */
39
50
  export type ProviderEnv = Record<string, string>;
@@ -44,10 +55,11 @@ export interface ProviderResponse {
44
55
  status: number;
45
56
  headers: Record<string, string>;
46
57
  }
47
- export interface StreamOptions {
48
- temperature?: number;
49
- maxTokens?: number;
58
+ /** Authentication, HTTP transport, and lifecycle callbacks shared by provider requests. */
59
+ export interface ProviderRequestOptions<TModel = Model<Api>> {
50
60
  signal?: AbortSignal;
61
+ /** Explicit parent context for telemetry produced by this logical request. */
62
+ telemetryContext?: TelemetryContext;
51
63
  apiKey?: string;
52
64
  /**
53
65
  * Optional fetch implementation for provider HTTP requests.
@@ -56,31 +68,20 @@ export interface StreamOptions {
56
68
  */
57
69
  fetch?: FetchFunction;
58
70
  /**
59
- * Preferred transport for providers that support multiple transports.
60
- * Providers that do not support this option ignore it.
61
- */
62
- transport?: Transport;
63
- /**
64
- * Prompt cache retention preference. Providers map this to their supported values.
65
- * Default: "short".
66
- */
67
- cacheRetention?: CacheRetention;
68
- /**
69
- * Optional session identifier for providers that support session-based caching.
70
- * Providers can use this to enable prompt caching, request routing, or other
71
- * session-aware features. Ignored by providers that don't support it.
71
+ * Provider-scoped environment values. These take precedence over process.env for
72
+ * provider configuration such as regional settings, endpoint placeholders, and
73
+ * proxy variables.
72
74
  */
73
- sessionId?: string;
75
+ env?: ProviderEnv;
74
76
  /**
75
77
  * Optional callback for inspecting or replacing provider payloads before sending.
76
78
  * Return undefined to keep the payload unchanged.
77
79
  */
78
- onPayload?: (payload: unknown, model: Model<Api>) => unknown | undefined | Promise<unknown | undefined>;
80
+ onPayload?: (payload: unknown, model: TModel) => unknown | undefined | Promise<unknown | undefined>;
79
81
  /**
80
- * Optional callback invoked after an HTTP response is received and before
81
- * its body stream is consumed.
82
+ * Optional callback invoked after an HTTP response is received.
82
83
  */
83
- onResponse?: (response: ProviderResponse, model: Model<Api>) => void | Promise<void>;
84
+ onResponse?: (response: ProviderResponse, model: TModel) => void | Promise<void>;
84
85
  /**
85
86
  * Optional custom HTTP headers to include in API requests.
86
87
  * Merged with provider defaults; caller values override default headers.
@@ -95,12 +96,6 @@ export interface StreamOptions {
95
96
  * For example, OpenAI and Anthropic SDK clients default to 10 minutes.
96
97
  */
97
98
  timeoutMs?: number;
98
- /**
99
- * WebSocket connect timeout in milliseconds for providers that support
100
- * WebSocket transports. This covers the connection/open handshake only;
101
- * stream idleness after connection uses timeoutMs.
102
- */
103
- websocketConnectTimeoutMs?: number;
104
99
  /**
105
100
  * Maximum retry attempts for providers/SDKs that support client-side retries.
106
101
  * For example, OpenAI and Anthropic SDK clients default to 2.
@@ -114,20 +109,68 @@ export interface StreamOptions {
114
109
  * Default: 60000 (60 seconds). Set to 0 to disable the cap.
115
110
  */
116
111
  maxRetryDelayMs?: number;
112
+ }
113
+ export interface StreamOptions extends ProviderRequestOptions<Model<Api>> {
114
+ /**
115
+ * Optional callback invoked after an HTTP response is received and before
116
+ * its body stream is consumed.
117
+ */
118
+ onResponse?: (response: ProviderResponse, model: Model<Api>) => void | Promise<void>;
119
+ /**
120
+ * Optional observer for each parsed provider stream event before Pi normalization.
121
+ * Event data is adapter-owned and must be treated as read-only.
122
+ * Adapter support is explicit; unsupported adapters do not invoke it.
123
+ */
124
+ onProviderStreamEvent?: (data: unknown, model: Model<Api>) => void | Promise<void>;
125
+ temperature?: number;
126
+ /**
127
+ * Arbitrary sampling parameters merged into the request body as-is, after the named request
128
+ * fields, so keys here override them. Lets custom OpenAI-compatible servers (llama.cpp, vLLM,
129
+ * SGLang, ...) receive parameters pi does not model, e.g. `top_p`, `top_k`, `min_p`,
130
+ * `repetition_penalty`. Merged over `Model.samplingParams` per key. Only applied by
131
+ * OpenAI-compatible adapters (completions, responses, Azure responses); other APIs ignore it.
132
+ */
133
+ samplingParams?: SamplingParams;
134
+ maxTokens?: number;
135
+ /**
136
+ * Preferred transport for providers that support multiple transports.
137
+ * Providers that do not support this option ignore it.
138
+ */
139
+ transport?: Transport;
140
+ /**
141
+ * Prompt cache retention preference. Providers map this to their supported values.
142
+ * Default: "short".
143
+ */
144
+ cacheRetention?: CacheRetention;
145
+ /**
146
+ * Optional session identifier for providers that support session-based caching.
147
+ * Providers can use this to enable prompt caching, request routing, or other
148
+ * session-aware features. Ignored by providers that don't support it.
149
+ */
150
+ sessionId?: string;
151
+ /**
152
+ * WebSocket connect timeout in milliseconds for providers that support
153
+ * WebSocket transports. This covers the connection/open handshake only;
154
+ * stream idleness after connection uses timeoutMs.
155
+ */
156
+ websocketConnectTimeoutMs?: number;
117
157
  /**
118
158
  * Optional metadata to include in API requests.
119
159
  * Providers extract the fields they understand and ignore the rest.
120
160
  * For example, Anthropic uses `user_id` for abuse tracking and rate limiting.
121
161
  */
122
162
  metadata?: Record<string, unknown>;
163
+ }
164
+ export type ProviderStreamOptions = StreamOptions & Record<string, unknown>;
165
+ export interface DeferredFetchOptions extends ProviderRequestOptions<Model<Api>> {
123
166
  /**
124
- * Provider-scoped environment values. These take precedence over process.env for
125
- * provider configuration such as regional settings, endpoint placeholders, and
126
- * proxy variables.
167
+ * Maximum provider long-poll duration in milliseconds.
168
+ * Defaults to 0, which performs one status check.
127
169
  */
128
- env?: ProviderEnv;
170
+ wait?: number;
129
171
  }
130
- export type ProviderStreamOptions = StreamOptions & Record<string, unknown>;
172
+ /** Request options for best-effort deferred-response cancellation. */
173
+ export type DeferredCancelOptions = ProviderRequestOptions<Model<Api>>;
131
174
  /**
132
175
  * Maps known APIs to their full provider-specific stream option types.
133
176
  * Type-only imports from API implementation modules are erased at emit, so
@@ -152,66 +195,40 @@ export interface ApiOptionsMap {
152
195
  export type ApiStreamOptions<TApi extends Api> = TApi extends keyof ApiOptionsMap ? ApiOptionsMap[TApi] : StreamOptions & Record<string, unknown>;
153
196
  /**
154
197
  * The uniform stream contract of an API implementation module: every module
155
- * under `src/api/` exports exactly `stream` and `streamSimple`, so the module
156
- * itself satisfies this interface. Lazy wrappers (`lazyApi()`) and provider
198
+ * under `src/api/` exports `stream` and `streamSimple`; capable modules may also
199
+ * export deferred-response methods. Lazy wrappers (`lazyApi()`) and provider
157
200
  * factories pass these around as values. This is the untyped dispatch shape;
158
201
  * per-API option typing lives on the implementation modules themselves and on
159
202
  * `Provider.stream()` via `ApiStreamOptions`.
160
203
  */
161
204
  export interface ProviderStreams {
162
- stream(model: Model<Api>, context: Context, options?: StreamOptions): AssistantMessageEventStream;
163
- streamSimple(model: Model<Api>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream;
205
+ stream(model: Model<Api>, context: TranscriptContext, options?: StreamOptions): AssistantMessageEventStream;
206
+ streamSimple(model: Model<Api>, context: TranscriptContext, options?: SimpleStreamOptions): AssistantMessageEventStream;
207
+ fetchDeferred?(model: Model<Api>, handle: DeferredHandle, options?: DeferredFetchOptions): AssistantMessageEventStream;
208
+ cancelDeferred?(model: Model<Api>, handle: DeferredHandle, options?: DeferredCancelOptions): Promise<void>;
164
209
  }
165
210
  /**
166
211
  * The uniform contract of an image-generation API implementation module:
167
212
  * every image API module under `src/api/` exports exactly `generateImages`,
168
- * so the module itself satisfies this interface. Lazy wrappers and image
169
- * provider factories pass these around as values.
213
+ * so the module itself satisfies this interface. Lazy wrappers and
214
+ * `createProvider({ images })` pass these around as values.
170
215
  */
171
216
  export interface ProviderImages {
172
- generateImages(model: ImagesModel<ImagesApi>, context: ImagesContext, options?: ImagesOptions): Promise<AssistantImages>;
217
+ generateImages(model: ImageModel<ImageApi>, context: ImagesContext, options?: ImagesOptions): Promise<AssistantImages>;
173
218
  }
174
- export interface ImagesOptions {
175
- signal?: AbortSignal;
176
- apiKey?: string;
177
- /** Optional fetch implementation for provider HTTP requests. Defaults to `globalThis.fetch`. */
178
- fetch?: FetchFunction;
179
- /**
180
- * Provider-scoped environment values. These take precedence over process.env for
181
- * provider configuration such as endpoint placeholders and proxy variables.
182
- */
183
- env?: ProviderEnv;
184
- /**
185
- * Optional callback for inspecting or replacing provider payloads before sending.
186
- * Return undefined to keep the payload unchanged.
187
- */
188
- onPayload?: (payload: unknown, model: ImagesModel<ImagesApi>) => unknown | undefined | Promise<unknown | undefined>;
189
- /**
190
- * Optional callback invoked after an HTTP response is received.
191
- */
192
- onResponse?: (response: ProviderResponse, model: ImagesModel<ImagesApi>) => void | Promise<void>;
193
- /**
194
- * Optional custom HTTP headers to include in API requests.
195
- * Merged with provider defaults; can override default headers.
196
- * A null value suppresses a provider/API default header with the same name.
197
- */
198
- headers?: ProviderHeaders;
199
- /**
200
- * HTTP request timeout in milliseconds for providers/SDKs that support it.
201
- */
202
- timeoutMs?: number;
203
- /**
204
- * Maximum retry attempts for providers/SDKs that support client-side retries.
205
- */
206
- maxRetries?: number;
219
+ /** The uniform contract implemented by classifier API modules. */
220
+ export interface ProviderClassifier {
221
+ classify(model: ClassifierModel<ClassifierApi>, context: ClassifierContext, options?: ClassifierOptions): Promise<ClassifierResult>;
222
+ }
223
+ export interface ClassifierOptions extends ProviderRequestOptions<ClassifierModel<ClassifierApi>> {
207
224
  /**
208
- * Maximum delay in milliseconds to wait for a retry when the server requests a long wait.
209
- * If the server's requested delay exceeds this value, the request fails immediately
210
- * with an error containing the requested delay, allowing higher-level retry logic
211
- * to handle it with user visibility.
212
- * Default: 60000 (60 seconds). Set to 0 to disable the cap.
225
+ * Divides the answer logits by this value before they are normalized into probabilities.
226
+ * Values above 1 soften the distribution; values below 1 sharpen it. Must be positive.
227
+ * APIs that cannot apply it ignore it.
213
228
  */
214
- maxRetryDelayMs?: number;
229
+ temperature?: number;
230
+ }
231
+ export interface ImagesOptions extends ProviderRequestOptions<ImageModel<ImageApi>> {
215
232
  /**
216
233
  * Optional metadata to include in API requests.
217
234
  * Providers extract the fields they understand and ignore the rest.
@@ -219,13 +236,25 @@ export interface ImagesOptions {
219
236
  metadata?: Record<string, unknown>;
220
237
  }
221
238
  export type ProviderImagesOptions = ImagesOptions & Record<string, unknown>;
239
+ export interface AnthropicAllowedFallbackModel {
240
+ provider: ProviderId;
241
+ model: string;
242
+ cost: ModelCost;
243
+ }
222
244
  export interface SimpleStreamOptions extends StreamOptions {
245
+ /** Provider-neutral tool selection for simple requests. When omitted, adapters use provider-specific behavior. */
246
+ toolChoice?: ToolChoice;
223
247
  reasoning?: ThinkingLevel;
248
+ /** Ask a capable provider to return a durable handle and continue the request asynchronously. */
249
+ deferred?: boolean | {
250
+ window?: "15m" | "1h" | "24h";
251
+ };
224
252
  /** Custom token budgets for thinking levels (token-based providers only) */
225
253
  thinkingBudgets?: ThinkingBudgets;
226
254
  }
227
- export type StreamFunction<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> = (model: Model<TApi>, context: Context, options?: TOptions) => AssistantMessageEventStream;
228
- export type ImagesFunction<TApi extends ImagesApi = ImagesApi, TOptions extends ImagesOptions = ImagesOptions> = (model: ImagesModel<TApi>, context: ImagesContext, options?: TOptions) => Promise<AssistantImages>;
255
+ export type StreamFunction<TApi extends Api = Api, TOptions extends StreamOptions = StreamOptions> = (model: Model<TApi>, context: TranscriptContext, options?: TOptions) => AssistantMessageEventStream;
256
+ export type ImagesFunction<TOptions extends ImagesOptions = ImagesOptions> = (model: ImageModel<ImageApi>, context: ImagesContext, options?: TOptions) => Promise<AssistantImages>;
257
+ export type ClassifierFunction<TOptions extends ClassifierOptions = ClassifierOptions> = (model: ClassifierModel<ClassifierApi>, context: ClassifierContext, options?: TOptions) => Promise<ClassifierResult>;
229
258
  export interface TextSignatureV1 {
230
259
  v: 1;
231
260
  id: string;
@@ -254,8 +283,10 @@ export interface ToolCall {
254
283
  type: "toolCall";
255
284
  id: string;
256
285
  name: string;
257
- arguments: Record<string, any>;
286
+ arguments: JsonObject;
258
287
  thoughtSignature?: string;
288
+ /** OpenAI Responses namespace for calls to dynamically loaded or namespaced tools. */
289
+ namespace?: string;
259
290
  }
260
291
  export interface Usage {
261
292
  input: number;
@@ -279,7 +310,62 @@ export interface Usage {
279
310
  total: number;
280
311
  };
281
312
  }
282
- export type StopReason = "pending" | "stop" | "length" | "toolUse" | "error" | "aborted";
313
+ export type StopReason = "pending" | "stop" | "length" | "toolUse" | "error" | "aborted" | "deferred";
314
+ export type JsonValue = null | boolean | number | string | readonly JsonValue[] | JsonObject;
315
+ export type JsonObject = {
316
+ [key: string]: JsonValue;
317
+ };
318
+ type IsAny<T> = 0 extends 1 & T ? true : false;
319
+ type IsExactlyJsonValue<T> = [T] extends [JsonValue] ? ([JsonValue] extends [T] ? true : false) : false;
320
+ type IsJsonProperty<T> = IsAny<T> extends true ? false : unknown extends T ? false : [Exclude<T, undefined>] extends [never] ? true : IsJsonCompatible<Exclude<T, undefined>>;
321
+ type InvalidJsonKeys<T extends object> = {
322
+ [TKey in keyof T]-?: TKey extends string | number ? (IsJsonProperty<T[TKey]> extends true ? never : TKey) : TKey;
323
+ }[keyof T];
324
+ type IsJsonCompatible<T> = IsAny<T> extends true ? false : unknown extends T ? false : IsExactlyJsonValue<T> extends true ? true : T extends null | boolean | number | string ? true : T extends undefined ? false : T extends readonly (infer TItem)[] ? IsJsonCompatible<TItem> : T extends (...args: never[]) => unknown ? false : T extends object ? [InvalidJsonKeys<T>] extends [never] ? true : false : false;
325
+ /** The JSON representation of a typed in-memory value. Optional object properties remain optional. */
326
+ export type JsonRepresentation<T> = IsAny<T> extends true ? JsonValue : unknown extends T ? JsonValue : [T] extends [JsonValue] ? T : T extends readonly unknown[] ? {
327
+ [TKey in keyof T]: JsonRepresentation<Exclude<T[TKey], undefined>>;
328
+ } : T extends object ? {
329
+ [TKey in keyof T]: JsonRepresentation<Exclude<T[TKey], undefined>>;
330
+ } : never;
331
+ export interface DeferredHandle {
332
+ provider: string;
333
+ modelId: string;
334
+ api: string;
335
+ /** Provider token, such as a response id or batch id plus row id. */
336
+ id: string;
337
+ expiresAt?: number;
338
+ pollAfterMs?: number;
339
+ /** Provider conversion data required to reconstruct the final assistant message. */
340
+ data?: JsonValue;
341
+ }
342
+ /**
343
+ * System instructions and tool declarations at one point in the transcript.
344
+ *
345
+ * The leading system message is the system prompt. Later system messages change it:
346
+ * `content` adds instructions from that point on, `sections` replace or remove named
347
+ * prompt sections, and `toolsAdded`/`toolsRemoved` change the tool set. Replaying
348
+ * every system message in order yields the current prompt and tools. Providers that
349
+ * accept system messages mid-conversation send each one in place; other providers
350
+ * rebuild the leading system message from the replayed state.
351
+ */
352
+ export interface SystemMessage {
353
+ role: "system";
354
+ /** Instruction text. On the leading message this is the base prompt; later, additional instructions. */
355
+ content: string | TextContent[];
356
+ /**
357
+ * Named, ordered prompt sections rendered verbatim after `content`. The leading message
358
+ * declares them; later messages replace sections by name, and `null` removes one. Keep
359
+ * each section self-delimiting (a tag, a heading) so the model can relate an update to
360
+ * the original. Avoid integer-like names; JSON objects reorder those.
361
+ */
362
+ sections?: Record<string, string | null>;
363
+ /** Complete definitions of tools that become available at this point. */
364
+ toolsAdded?: Tool[];
365
+ /** Tools that stop being available at this point. */
366
+ toolsRemoved?: ToolReference[];
367
+ timestamp: number;
368
+ }
283
369
  export interface UserMessage {
284
370
  role: "user";
285
371
  content: string | (TextContent | ImageContent)[];
@@ -293,31 +379,57 @@ export interface AssistantMessage {
293
379
  model: string;
294
380
  responseModel?: string;
295
381
  responseId?: string;
382
+ /** Exact provider-native effort level used for this response. Absent for legacy or unmanaged responses. */
383
+ providerThinkingLevel?: string;
384
+ /** Pi thinking level the agent loop requested for this response. Absent outside the agent loop and for legacy responses. */
385
+ thinkingLevel?: ModelThinkingLevel;
296
386
  diagnostics?: AssistantMessageDiagnostic[];
297
387
  usage: Usage;
298
388
  stopReason: StopReason;
389
+ deferred?: DeferredHandle;
299
390
  errorMessage?: string;
300
391
  rawStopReason?: string;
392
+ /**
393
+ * Provider indication of whether the model explicitly ended its turn.
394
+ * Preserved for debugging and does not currently affect agent control flow.
395
+ */
396
+ endTurn?: boolean;
301
397
  timestamp: number;
302
398
  }
303
- export interface ToolResultMessage<TDetails = any> {
399
+ /** A tool call that another tool made while it ran, for example from a codemode script. */
400
+ export interface NestedToolCallRecord {
401
+ id: string;
402
+ name: string;
403
+ /** Omitted when over the size limits; `argumentsBytes` then gives their size. */
404
+ arguments?: JsonObject;
405
+ /** UTF-8 size of the arguments as JSON, set when `arguments` is omitted. */
406
+ argumentsBytes?: number;
407
+ /** `unfinished`: the call was still running when the calling tool finished. */
408
+ status: "ok" | "error" | "unfinished";
409
+ durationMs?: number;
410
+ /** Error text, truncated. */
411
+ error?: string;
412
+ }
413
+ /** Bounded record of the nested calls a tool made. Results are not recorded. */
414
+ export interface NestedToolCalls {
415
+ calls: NestedToolCallRecord[];
416
+ /** False when calls were dropped, arguments omitted, or calls had not finished. */
417
+ complete: boolean;
418
+ }
419
+ export type ToolResultMessage<TDetails = JsonValue> = IsJsonCompatible<TDetails> extends true ? {
304
420
  role: "toolResult";
305
421
  toolCallId: string;
306
422
  toolName: string;
307
423
  content: (TextContent | ImageContent)[];
308
- details?: TDetails;
424
+ details?: JsonRepresentation<TDetails>;
309
425
  /** Usage from the tool execution itself, if available. Not part of main LLM context accounting. */
310
426
  usage?: Usage;
311
- /**
312
- * Names from `Context.tools` that became available after this result.
313
- * Providers with native deferred tool loading use this as the load point;
314
- * other providers ignore it and use `Context.tools` normally.
315
- */
316
- addedToolNames?: string[];
427
+ /** Calls this tool made to other tools. Kept for the session record; not sent to the model. */
428
+ nestedCalls?: NestedToolCalls;
317
429
  isError: boolean;
318
430
  timestamp: number;
319
- }
320
- export type Message = UserMessage | AssistantMessage | ToolResultMessage;
431
+ } : never;
432
+ export type Message = SystemMessage | UserMessage | AssistantMessage | ToolResultMessage;
321
433
  export type ImagesInputContent = TextContent | ImageContent;
322
434
  export type ImagesOutputContent = TextContent | ImageContent;
323
435
  export interface ImagesContext {
@@ -325,8 +437,8 @@ export interface ImagesContext {
325
437
  }
326
438
  export type ImagesStopReason = "stop" | "error" | "aborted";
327
439
  export interface AssistantImages {
328
- api: ImagesApi;
329
- provider: ImagesProviderId;
440
+ api: ImageApi;
441
+ provider: ProviderId;
330
442
  model: string;
331
443
  output: ImagesOutputContent[];
332
444
  responseId?: string;
@@ -335,6 +447,57 @@ export interface AssistantImages {
335
447
  errorMessage?: string;
336
448
  timestamp: number;
337
449
  }
450
+ export interface ClassifierChoiceQuestion {
451
+ type: "choice";
452
+ instructions: string;
453
+ criteria: Record<string, string>;
454
+ }
455
+ export interface ClassifierScoreQuestion {
456
+ type: "score";
457
+ instructions: string;
458
+ criteria: string[];
459
+ }
460
+ export interface ClassifierBoolQuestion {
461
+ type: "bool";
462
+ instructions: string;
463
+ criteria: {
464
+ true: string;
465
+ false: string;
466
+ };
467
+ }
468
+ export type ClassifierQuestion = ClassifierChoiceQuestion | ClassifierScoreQuestion | ClassifierBoolQuestion;
469
+ export interface ClassifierContext {
470
+ state: JsonObject;
471
+ questions: Record<string, ClassifierQuestion>;
472
+ }
473
+ export interface ClassifierChoiceAnswer {
474
+ type: "choice";
475
+ choice: string;
476
+ probabilities: Record<string, number>;
477
+ confidence: number;
478
+ }
479
+ export interface ClassifierScoreAnswer {
480
+ type: "score";
481
+ score: number;
482
+ confidence: number;
483
+ }
484
+ export interface ClassifierBoolAnswer {
485
+ type: "bool";
486
+ probability: number;
487
+ }
488
+ export type ClassifierAnswer = ClassifierChoiceAnswer | ClassifierScoreAnswer | ClassifierBoolAnswer;
489
+ export type ClassifierStopReason = "stop" | "error" | "aborted";
490
+ export interface ClassifierResult {
491
+ api: ClassifierApi;
492
+ provider: ProviderId;
493
+ model: string;
494
+ answers: Record<string, ClassifierAnswer>;
495
+ /** Token usage and its cost at the model's catalog price, when the service reports token counts. */
496
+ usage?: Usage;
497
+ stopReason: ClassifierStopReason;
498
+ errorMessage?: string;
499
+ timestamp: number;
500
+ }
338
501
  import type { TSchema } from "typebox";
339
502
  /** OpenAI grammar variants for constrained sampling. */
340
503
  export type GrammarFormat = "openai_lark" | "openai_regex";
@@ -359,18 +522,46 @@ export interface Tool<TParameters extends TSchema = TSchema> {
359
522
  parameters: TParameters;
360
523
  constrainedSampling?: false | ConstrainedSamplingConfig;
361
524
  }
525
+ export interface ToolReference {
526
+ name: string;
527
+ }
528
+ /**
529
+ * Request input accepted by the public stream entry points (`Models.stream()`,
530
+ * `streamSimple()`, ...). `systemPrompt` and `tools` are shorthand for a leading
531
+ * system message; `normalizeContext()` folds them into one before the request
532
+ * reaches a provider.
533
+ */
362
534
  export interface Context {
363
535
  systemPrompt?: string;
364
536
  messages: Message[];
365
537
  tools?: Tool[];
366
538
  }
539
+ declare const transcriptContextBrand: unique symbol;
540
+ /**
541
+ * Normalized request context passed to providers and API implementations. The
542
+ * prompt and tool declarations are carried by the transcript's system messages.
543
+ * Only `normalizeContext()` produces this type, so a raw `Context` cannot reach
544
+ * provider code by accident.
545
+ */
546
+ export type TranscriptContext = {
547
+ messages: Message[];
548
+ readonly [transcriptContextBrand]: true;
549
+ };
367
550
  /**
368
551
  * Event protocol for AssistantMessageEventStream.
369
552
  *
370
- * Streams should emit `start` before partial updates, then terminate with either:
371
- * - `done` carrying the final successful AssistantMessage, or
372
- * - `error` carrying the final AssistantMessage with stopReason "error" or "aborted"
373
- * and errorMessage.
553
+ * Successful streams emit `start` before partial updates and terminate with
554
+ * `done`. A stream may terminate directly with `error` when request setup fails
555
+ * before generation starts; after `start`, failures also terminate with `error`.
556
+ * Direct `streamSimple()` calls throw synchronously when request auth is missing.
557
+ * Updates and `done` must never appear before `start`.
558
+ *
559
+ * `partial` is the shared live response-so-far helper, not an event-time
560
+ * snapshot. Text and thinking blocks are empty when their `*_start` event is
561
+ * emitted and grow only through their corresponding `*_delta` events until the
562
+ * authoritative `*_end`. Redacted thinking may be complete at start and emit no
563
+ * deltas. Tool-call arguments at `toolcall_start` are provider-specific;
564
+ * `toolcall_delta` carries subsequent JSON updates.
374
565
  */
375
566
  export type AssistantMessageEvent = {
376
567
  type: "start";
@@ -419,7 +610,7 @@ export type AssistantMessageEvent = {
419
610
  partial: AssistantMessage;
420
611
  } | {
421
612
  type: "done";
422
- reason: Extract<StopReason, "stop" | "length" | "toolUse">;
613
+ reason: Extract<StopReason, "stop" | "length" | "toolUse" | "deferred">;
423
614
  message: AssistantMessage;
424
615
  } | {
425
616
  type: "error";
@@ -439,6 +630,8 @@ export interface OpenAICompletionsCompat {
439
630
  supportsReasoningEffort?: boolean;
440
631
  /** Whether the provider supports `stream_options: { include_usage: true }` for token usage in streaming responses. Default: true. */
441
632
  supportsUsageInStreaming?: boolean;
633
+ /** Whether streamed responses include `finish_reason`. When false, pi infers `stop` or `toolUse` when the stream ends. Default: true. */
634
+ supportsFinishReason?: boolean;
442
635
  /** Which field to use for max tokens. Default: auto-detected from URL. */
443
636
  maxTokensField?: "max_completion_tokens" | "max_tokens";
444
637
  /** Whether tool results require the `name` field. Default: auto-detected from URL. */
@@ -449,35 +642,58 @@ export interface OpenAICompletionsCompat {
449
642
  requiresThinkingAsText?: boolean;
450
643
  /** Whether all replayed assistant messages must include an empty reasoning_content field when reasoning is enabled. Default: auto-detected from URL. */
451
644
  requiresReasoningContentOnAssistantMessages?: boolean;
452
- /** Format for reasoning/thinking parameter. "openai" uses reasoning_effort, "openrouter" uses reasoning: { effort }, "deepseek" uses thinking: { type } plus reasoning_effort when supported, "together" uses reasoning: { enabled } plus reasoning_effort when supported, "zai" uses thinking: { type }, "qwen" uses top-level enable_thinking: boolean, "qwen-chat-template" uses chat_template_kwargs.enable_thinking and preserve_thinking, "chat-template" uses configurable chat_template_kwargs, "string-thinking" uses top-level thinking: string, and "ant-ling" uses reasoning: { effort } only when the mapped effort is non-null. Default: "openai". */
453
- thinkingFormat?: "openai" | "openrouter" | "deepseek" | "together" | "zai" | "qwen" | "chat-template" | "qwen-chat-template" | "string-thinking" | "ant-ling";
454
- /** Kwargs to send as `chat_template_kwargs` when `thinkingFormat` is `chat-template`. Use `{ "$var": "thinking.enabled" }` or `{ "$var": "thinking.effort" }` for pi-controlled thinking values. */
645
+ /** Format for reasoning/thinking parameter. "openai" uses reasoning_effort, "openrouter" uses reasoning: { effort }, "deepseek" uses thinking: { type } plus reasoning_effort when supported, "together" uses reasoning: { enabled } plus reasoning_effort when supported, "baseten" uses configurable chat_template_args plus reasoning_effort when supported, "zai" uses thinking: { type }, "qwen" uses top-level enable_thinking: boolean, "qwen-chat-template" uses chat_template_kwargs.enable_thinking and preserve_thinking, "chat-template" uses configurable chat_template_kwargs, "string-thinking" uses top-level thinking: string, and "ant-ling" uses reasoning: { effort } only when the mapped effort is non-null. Default: "openai". */
646
+ thinkingFormat?: "openai" | "openrouter" | "deepseek" | "together" | "baseten" | "zai" | "qwen" | "chat-template" | "qwen-chat-template" | "string-thinking" | "ant-ling";
647
+ /** Kwargs to send as `chat_template_kwargs` when `thinkingFormat` is `chat-template`. Use `{ "$var": "thinking.enabled" }`, `{ "$var": "thinking.effort" }`, or `{ "$var": "thinking.budget" }` for pi-controlled thinking values. */
455
648
  chatTemplateKwargs?: Record<string, ChatTemplateKwargValue>;
649
+ /** Arguments to send as `chat_template_args` when `thinkingFormat` is `baseten`. Use `{ "$var": "thinking.enabled" }`, `{ "$var": "thinking.effort" }`, or `{ "$var": "thinking.budget" }` for pi-controlled thinking values. */
650
+ chatTemplateArgs?: Record<string, ChatTemplateKwargValue>;
456
651
  /** OpenRouter-compatible routing preferences sent as the `provider` request field. */
457
652
  openRouterRouting?: OpenRouterRouting;
458
653
  /** Vercel AI Gateway routing preferences. Only used when baseUrl points to Vercel AI Gateway. */
459
654
  vercelGatewayRouting?: VercelGatewayRouting;
460
655
  /** Whether z.ai supports top-level `tool_stream: true` for streaming tool call deltas. Default: false. */
461
656
  zaiToolStream?: boolean;
657
+ /**
658
+ * Top-level request field used to cap reasoning tokens from `thinkingBudgets`.
659
+ * Reasoning and the answer share `max_tokens` on these endpoints, so without a budget a
660
+ * reasoning-heavy turn can consume the whole response and emit no answer.
661
+ * `"thinking_token_budget"` is vLLM, `"thinking_budget"` is Qwen/DashScope/SGLang,
662
+ * `"thinking_budget_tokens"` is llama.cpp. Off by default; not set on the generated catalog.
663
+ */
664
+ thinkingTokenBudgetField?: ThinkingTokenBudgetField;
665
+ /** Alias for `thinkingTokenBudgetField: "thinking_token_budget"` (vLLM). Prefer `thinkingTokenBudgetField`. Default: false. */
666
+ supportsThinkingTokenBudget?: boolean;
462
667
  /** Whether the provider supports OpenAI custom tools with Lark/regex grammar formats. When false, grammar-constrained tools fall back to normal function tools. Default: false; the generated model catalog enables it for capable models. */
463
668
  supportsOpenAIGrammarTools?: boolean;
464
- /** Whether the provider supports the `strict` field in tool definitions. Default: true. */
669
+ /** Whether the exact model accepts system or developer messages after the conversation has started. When false, later system messages are folded into the leading system message. Default: false; the generated model catalog enables it for verified models. */
670
+ supportsMidConvoSystemMessages?: boolean;
671
+ /** Whether system messages can introduce additional tools mid-conversation. Requires `supportsMidConvoSystemMessages`. Default: false; the generated model catalog enables it for capable models. */
672
+ supportsMidConvoToolAdditions?: boolean;
673
+ /** Whether the provider supports the `strict` field in tool definitions. Default: false; generated capable models enable it explicitly. */
465
674
  supportsStrictMode?: boolean;
466
675
  /** Cache control convention for prompt caching. "anthropic" applies Anthropic-style `cache_control` markers to the system prompt, last tool definition, and last user, assistant, or tool-result text content. */
467
676
  cacheControlFormat?: "anthropic";
468
- /** Whether to send session-affinity data from `options.sessionId`. Default: false. */
677
+ /** Whether to send session-affinity data from `options.sessionId`. Default: true for OpenRouter endpoints, false otherwise. */
469
678
  sendSessionAffinityHeaders?: boolean;
470
- /** Provider-specific deferred tool serialization mode. */
471
- deferredToolsMode?: "kimi";
472
679
  /** Session-affinity header format: `openai` sends `session_id`, `x-client-request-id`, and `x-session-affinity`; `openai-nosession` sends `x-client-request-id` and `x-session-affinity`; `openrouter` sends `x-session-id`. Does not affect the `prompt_cache_key` body param, which is governed by cache retention. Default: auto-detected. */
473
680
  sessionAffinityFormat?: SessionAffinityFormat;
474
681
  /** Whether the provider supports long prompt cache retention (`prompt_cache_retention: "24h"` or Anthropic-style `cache_control.ttl: "1h"`, depending on format). Default: true. */
475
682
  supportsLongCacheRetention?: boolean;
683
+ /**
684
+ * vLLM scheduler priority sent as the top-level `priority` request field (lower values are
685
+ * handled earlier; server default 0). Only meaningful when vLLM runs with
686
+ * `--scheduling-policy priority`; useful for keeping background/batch work from stalling
687
+ * interactive sessions. Off by default; not set on the generated catalog.
688
+ */
689
+ vllmPriority?: number;
476
690
  }
477
691
  /** Compatibility settings for OpenAI Responses APIs. */
478
692
  export interface OpenAIResponsesCompat {
479
693
  /** Whether the provider supports the `developer` role (vs `system`). Default: true. */
480
694
  supportsDeveloperRole?: boolean;
695
+ /** Whether the exact model accepts developer or system messages after the conversation has started. When false, later system messages are folded into the leading system message. Default: false; the generated model catalog enables it for verified models. */
696
+ supportsMidConvoSystemMessages?: boolean;
481
697
  /** Session-affinity header format: `openai` sends `session_id` and `x-client-request-id`; `openai-nosession` sends `x-client-request-id`; `openrouter` sends `x-session-id`. Does not affect the `prompt_cache_key` body param, which is governed by cache retention. Default: auto-detected. */
482
698
  sessionAffinityFormat?: SessionAffinityFormat;
483
699
  /** Whether the provider supports long prompt cache retention. This uses `prompt_cache_options.ttl: "30m"` on GPT-5.6+ and `prompt_cache_retention: "24h"` on earlier models. Default: true. */
@@ -486,10 +702,14 @@ export interface OpenAIResponsesCompat {
486
702
  supportsStrictMode?: boolean;
487
703
  /** Whether to emit OpenAI custom tools with Lark/regex grammar formats. When false, grammar-constrained tools fall back to normal function tools. Default: false; the generated model catalog enables it for capable models. */
488
704
  supportsOpenAIGrammarTools?: boolean;
489
- /** Whether the model supports client-executed tool search for deferred tools. Default: false. */
705
+ /** Whether the model supports message-anchored `additional_tools` input items. Default: false. */
706
+ supportsAdditionalTools?: boolean;
707
+ /** Whether the model supports client-executed tool search for transcript-anchored additions. Default: false. */
490
708
  supportsToolSearch?: boolean;
491
- /** Whether the model accepts `prompt_cache_options` (OpenAI GPT-5.6+ prompt caching). Older models reject the parameter. Default: false. */
709
+ /** Whether the model accepts `prompt_cache_options` (OpenAI GPT-5.6+ prompt caching). Older OpenAI models reject the parameter. Default: false. */
492
710
  supportsExplicitPromptCacheMode?: boolean;
711
+ /** Whether the provider accepts the `max_output_tokens` parameter. Some Codex-protocol gateways reject it. Default: true. */
712
+ supportsMaxOutputTokens?: boolean;
493
713
  }
494
714
  /** Compatibility settings for Anthropic Messages-compatible APIs. */
495
715
  export interface AnthropicMessagesCompat {
@@ -511,6 +731,8 @@ export interface AnthropicMessagesCompat {
511
731
  * Default: false.
512
732
  */
513
733
  sendSessionAffinityHeaders?: boolean;
734
+ /** Session-affinity format. `"openrouter"` sends `x-session-id`; when unset, sends `x-session-affinity`. */
735
+ sessionAffinityFormat?: "openrouter";
514
736
  /**
515
737
  * Whether the provider supports Anthropic-style `cache_control` markers on
516
738
  * tool definitions. When false, `cache_control` is omitted from tool params.
@@ -539,18 +761,30 @@ export interface AnthropicMessagesCompat {
539
761
  allowEmptySignature?: boolean;
540
762
  /** Whether the provider supports Anthropic strict tool schemas. Default: false; generated Anthropic models enable it explicitly. */
541
763
  supportsStrictTools?: boolean;
764
+ /** Whether the exact model transport supports effort-only system messages and thinking binding controls. Default: false. */
765
+ supportsMidConvoEffort?: boolean;
766
+ /** Whether the exact model accepts system-role messages inside the conversation. When false, later system messages are folded into the top-level system prompt. Default: false. */
767
+ supportsMidConvoSystemMessages?: boolean;
768
+ /** Whether the exact model accepts mid-conversation `tool_addition` blocks with inline tool definitions (`inline-tools-2026-09-15`) and `tool_removal` blocks. Requires `supportsMidConvoSystemMessages`. Default: false. */
769
+ supportsMidConvoToolChanges?: boolean;
542
770
  /**
543
- * Whether the provider supports deferred tools loaded by `tool_reference`
544
- * blocks in tool results. Default: true for first-party Anthropic models
545
- * except Haiku and models older than Claude 4.5; false for other providers.
771
+ * Models Anthropic accepts in `fallbacks` for server-side refusal fallback,
772
+ * with local pricing metadata for returned fallback responses. When absent or
773
+ * empty, callers must omit `fallbacks`; Anthropic rejects the field for models
774
+ * with no permitted fallback targets.
546
775
  */
547
- supportsToolReferences?: boolean;
776
+ allowedFallbackModels?: AnthropicAllowedFallbackModel[];
548
777
  }
549
778
  /** Compatibility settings for Amazon Bedrock models. */
550
779
  export interface BedrockCompat {
551
780
  /** Whether the model supports Bedrock strict tool schemas. Default: false. */
552
781
  supportsStrictMode?: boolean;
553
782
  }
783
+ /** Compatibility settings for the Mistral chat API. */
784
+ export interface MistralConversationsCompat {
785
+ /** Whether the exact model accepts system messages after the conversation has started. When false, later system messages are folded into the leading system message. Default: false. */
786
+ supportsMidConvoSystemMessages?: boolean;
787
+ }
554
788
  /**
555
789
  * OpenRouter provider routing preferences.
556
790
  * Controls which upstream providers OpenRouter routes requests to.
@@ -644,29 +878,86 @@ export interface ModelCost extends ModelCostRates {
644
878
  /** Request-wide pricing tiers. The highest matching input threshold applies to the full request. */
645
879
  tiers?: ModelCostTier[];
646
880
  }
647
- export interface Model<TApi extends Api> {
881
+ export interface ModelImageResizeOptions {
882
+ maxWidth?: number;
883
+ maxHeight?: number;
884
+ /** Maximum base64-encoded payload size in bytes. */
885
+ maxBytes?: number;
886
+ jpegQuality?: number;
887
+ }
888
+ export interface ModelImageInputLimits {
889
+ /** Cache-safe resize profile applied before a new image enters conversation history. */
890
+ resize?: ModelImageResizeOptions;
891
+ /** Maximum images accepted in one provider message. */
892
+ maxPerMessage?: number;
893
+ /** Maximum images accepted across one provider request. */
894
+ maxPerRequest?: number;
895
+ }
896
+ export interface ModelInputLimits {
897
+ /** Maximum serialized provider request size in bytes. */
898
+ maxRequestBytes?: number;
899
+ images?: ModelImageInputLimits;
900
+ }
901
+ /** Fields shared by every catalog entry, regardless of what you can do with it. */
902
+ export interface BaseModel<TApi extends string> {
648
903
  id: string;
649
904
  name: string;
650
905
  api: TApi;
651
906
  provider: ProviderId;
652
907
  baseUrl: string;
908
+ input: ("text" | "image")[];
909
+ /** Provider input limits and cache-safe preprocessing metadata. */
910
+ inputLimits?: ModelInputLimits;
911
+ cost: ModelCost;
912
+ headers?: Record<string, string>;
913
+ }
914
+ /** Chat model: usable with `stream()` and friends. */
915
+ export interface Model<TApi extends Api> extends BaseModel<TApi> {
916
+ /**
917
+ * Optional: chat is the default model type, so models without `type` are chat
918
+ * models. Narrow mixed model lists with `isModelType()` instead of comparing
919
+ * `type` directly.
920
+ */
921
+ type?: "chat";
653
922
  reasoning: boolean;
654
923
  /**
655
924
  * Maps pi thinking levels to provider/model-specific values.
656
925
  * Missing keys use provider defaults. null marks a level as unsupported.
657
926
  */
658
927
  thinkingLevelMap?: ThinkingLevelMap;
659
- input: ("text" | "image")[];
660
- cost: ModelCost;
928
+ /** Prompt cache lifetimes per retention tier. Unset when the provider's cache behavior is unknown. */
929
+ promptCache?: ModelPromptCache;
930
+ /** Default context budget. A larger provider-supported opt-in limit may be advertised separately. */
661
931
  contextWindow: number;
932
+ /** Provider-supported context ceiling; does not automatically change the default budget. */
933
+ maxContextWindow?: number;
662
934
  maxTokens: number;
663
- headers?: Record<string, string>;
935
+ /** Default sampling parameters for this model. See {@link StreamOptions.samplingParams}; per-request keys override these. */
936
+ samplingParams?: SamplingParams;
937
+ /** Sampling parameter overrides selected by the effective pi thinking level. */
938
+ samplingParamsByThinkingLevel?: SamplingParamsByThinkingLevel;
664
939
  /** Compatibility overrides for OpenAI-compatible APIs. If not set, auto-detected from baseUrl. */
665
- compat?: TApi extends "openai-completions" ? OpenAICompletionsCompat : TApi extends "openai-responses" | "azure-openai-responses" | "openai-codex-responses" ? OpenAIResponsesCompat : TApi extends "anthropic-messages" ? AnthropicMessagesCompat : TApi extends "bedrock-converse-stream" ? BedrockCompat : never;
940
+ compat?: TApi extends "openai-completions" ? OpenAICompletionsCompat : TApi extends "openai-responses" | "azure-openai-responses" | "openai-codex-responses" ? OpenAIResponsesCompat : TApi extends "anthropic-messages" ? AnthropicMessagesCompat : TApi extends "bedrock-converse-stream" ? BedrockCompat : TApi extends "mistral-conversations" ? MistralConversationsCompat : never;
666
941
  }
667
- export interface ImagesModel<TApi extends ImagesApi> extends Omit<Model<Api>, "api" | "provider" | "reasoning" | "contextWindow" | "maxTokens" | "compat"> {
668
- api: TApi;
669
- provider: ImagesProviderId;
942
+ /** Image-generation model: usable with `generateImages()` only. */
943
+ export interface ImageModel<TApi extends ImageApi> extends BaseModel<TApi> {
944
+ type: "image";
945
+ /** Output modalities. Always includes `"image"`; `"text"` means the model can also return text blocks. */
670
946
  output: ("text" | "image")[];
671
947
  }
948
+ /** Structured classifier model: usable with `classify()` only. */
949
+ export interface ClassifierModel<TApi extends ClassifierApi> extends BaseModel<TApi> {
950
+ type: "classifier";
951
+ contextWindow: number;
952
+ }
953
+ /** Model shape for each model type. */
954
+ export interface ModelTypeMap {
955
+ chat: Model<Api>;
956
+ image: ImageModel<ImageApi>;
957
+ classifier: ClassifierModel<ClassifierApi>;
958
+ }
959
+ /** What a catalog entry is for. Decides which `Models` operation accepts it. */
960
+ export type ModelType = keyof ModelTypeMap;
961
+ /** Anything a provider can list. Narrow with `isModelType()`. */
962
+ export type AnyModel = ModelTypeMap[ModelType];
672
963
  //# sourceMappingURL=types.d.ts.map