@linxiraos/pi-ai 1.0.0

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 (639) hide show
  1. package/CHANGELOG.md +5066 -0
  2. package/README.md +1195 -0
  3. package/dist/types/api-registry.d.ts +30 -0
  4. package/dist/types/auth/sqlite-credential-store.d.ts +117 -0
  5. package/dist/types/auth-broker/client.d.ts +93 -0
  6. package/dist/types/auth-broker/discover.d.ts +39 -0
  7. package/dist/types/auth-broker/index.d.ts +7 -0
  8. package/dist/types/auth-broker/refresher.d.ts +25 -0
  9. package/dist/types/auth-broker/remote-store.d.ts +136 -0
  10. package/dist/types/auth-broker/server.d.ts +48 -0
  11. package/dist/types/auth-broker/snapshot-cache.d.ts +17 -0
  12. package/dist/types/auth-broker/types.d.ts +152 -0
  13. package/dist/types/auth-broker/wire-schema-resource.d.ts +53 -0
  14. package/dist/types/auth-broker/wire-schemas.d.ts +5 -0
  15. package/dist/types/auth-gateway/http.d.ts +56 -0
  16. package/dist/types/auth-gateway/index.d.ts +3 -0
  17. package/dist/types/auth-gateway/server.d.ts +36 -0
  18. package/dist/types/auth-gateway/types.d.ts +127 -0
  19. package/dist/types/auth-retry.d.ts +150 -0
  20. package/dist/types/auth-storage.d.ts +1258 -0
  21. package/dist/types/dialect/anthropic.d.ts +15 -0
  22. package/dist/types/dialect/catalog.d.ts +3 -0
  23. package/dist/types/dialect/coercion.d.ts +23 -0
  24. package/dist/types/dialect/deepseek.d.ts +14 -0
  25. package/dist/types/dialect/demotion.d.ts +30 -0
  26. package/dist/types/dialect/examples.d.ts +18 -0
  27. package/dist/types/dialect/factory.d.ts +3 -0
  28. package/dist/types/dialect/fenced-thinking.d.ts +53 -0
  29. package/dist/types/dialect/gemini.d.ts +17 -0
  30. package/dist/types/dialect/gemma.d.ts +15 -0
  31. package/dist/types/dialect/glm.d.ts +9 -0
  32. package/dist/types/dialect/harmony.d.ts +8 -0
  33. package/dist/types/dialect/hermes.d.ts +9 -0
  34. package/dist/types/dialect/history.d.ts +3 -0
  35. package/dist/types/dialect/index.d.ts +11 -0
  36. package/dist/types/dialect/inventory.d.ts +9 -0
  37. package/dist/types/dialect/kimi.d.ts +14 -0
  38. package/dist/types/dialect/minimax.d.ts +3 -0
  39. package/dist/types/dialect/owned-stream.d.ts +4 -0
  40. package/dist/types/dialect/qwen3.d.ts +9 -0
  41. package/dist/types/dialect/rendering.d.ts +54 -0
  42. package/dist/types/dialect/thinking.d.ts +6 -0
  43. package/dist/types/dialect/types.d.ts +68 -0
  44. package/dist/types/dialect/xml.d.ts +9 -0
  45. package/dist/types/error/abort.d.ts +14 -0
  46. package/dist/types/error/auth-classify.d.ts +20 -0
  47. package/dist/types/error/auth.d.ts +27 -0
  48. package/dist/types/error/aws.d.ts +27 -0
  49. package/dist/types/error/classes.d.ts +106 -0
  50. package/dist/types/error/finalize.d.ts +39 -0
  51. package/dist/types/error/flags.d.ts +94 -0
  52. package/dist/types/error/format.d.ts +20 -0
  53. package/dist/types/error/gateway.d.ts +20 -0
  54. package/dist/types/error/index.d.ts +14 -0
  55. package/dist/types/error/oauth.d.ts +43 -0
  56. package/dist/types/error/provider.d.ts +42 -0
  57. package/dist/types/error/rate-limit.d.ts +80 -0
  58. package/dist/types/error/retryable.d.ts +27 -0
  59. package/dist/types/error/validation.d.ts +32 -0
  60. package/dist/types/index.d.ts +51 -0
  61. package/dist/types/provider-details.d.ts +24 -0
  62. package/dist/types/providers/amazon-bedrock.d.ts +39 -0
  63. package/dist/types/providers/anthropic-client.d.ts +106 -0
  64. package/dist/types/providers/anthropic-messages-server-schema.d.ts +937 -0
  65. package/dist/types/providers/anthropic-messages-server.d.ts +17 -0
  66. package/dist/types/providers/anthropic-wire.d.ts +345 -0
  67. package/dist/types/providers/anthropic.d.ts +261 -0
  68. package/dist/types/providers/aws-credentials.d.ts +48 -0
  69. package/dist/types/providers/aws-eventstream.d.ts +39 -0
  70. package/dist/types/providers/aws-sigv4.d.ts +55 -0
  71. package/dist/types/providers/azure-openai-responses.d.ts +16 -0
  72. package/dist/types/providers/bedrock-mantle.d.ts +13 -0
  73. package/dist/types/providers/claude-code-fingerprint.d.ts +19 -0
  74. package/dist/types/providers/cowork-fetch.d.ts +3 -0
  75. package/dist/types/providers/cursor/exec-modern.d.ts +98 -0
  76. package/dist/types/providers/cursor-pi-args.d.ts +105 -0
  77. package/dist/types/providers/cursor.d.ts +221 -0
  78. package/dist/types/providers/devin.d.ts +12 -0
  79. package/dist/types/providers/error-message.d.ts +25 -0
  80. package/dist/types/providers/github-copilot-headers.d.ts +40 -0
  81. package/dist/types/providers/gitlab-duo-workflow.d.ts +254 -0
  82. package/dist/types/providers/gitlab-duo.d.ts +27 -0
  83. package/dist/types/providers/google-auth.d.ts +24 -0
  84. package/dist/types/providers/google-gemini-cli.d.ts +120 -0
  85. package/dist/types/providers/google-shared.d.ts +203 -0
  86. package/dist/types/providers/google-types.d.ts +155 -0
  87. package/dist/types/providers/google-vertex.d.ts +7 -0
  88. package/dist/types/providers/google.d.ts +4 -0
  89. package/dist/types/providers/grammar.d.ts +1 -0
  90. package/dist/types/providers/kimi.d.ts +27 -0
  91. package/dist/types/providers/mock.d.ts +179 -0
  92. package/dist/types/providers/ollama.d.ts +8 -0
  93. package/dist/types/providers/openai-anthropic-shim.d.ts +35 -0
  94. package/dist/types/providers/openai-chat-server-schema.d.ts +1311 -0
  95. package/dist/types/providers/openai-chat-server.d.ts +16 -0
  96. package/dist/types/providers/openai-chat-wire.d.ts +669 -0
  97. package/dist/types/providers/openai-codex/request-transformer.d.ts +109 -0
  98. package/dist/types/providers/openai-codex/response-handler.d.ts +26 -0
  99. package/dist/types/providers/openai-codex-responses.d.ts +238 -0
  100. package/dist/types/providers/openai-completions.d.ts +48 -0
  101. package/dist/types/providers/openai-reasoning-fallback.d.ts +25 -0
  102. package/dist/types/providers/openai-responses-server-schema.d.ts +1314 -0
  103. package/dist/types/providers/openai-responses-server.d.ts +17 -0
  104. package/dist/types/providers/openai-responses-wire.d.ts +6099 -0
  105. package/dist/types/providers/openai-responses.d.ts +131 -0
  106. package/dist/types/providers/openai-shared.d.ts +624 -0
  107. package/dist/types/providers/pi-native-client.d.ts +13 -0
  108. package/dist/types/providers/pi-native-server.d.ts +69 -0
  109. package/dist/types/providers/register-builtins.d.ts +37 -0
  110. package/dist/types/providers/synthetic.d.ts +26 -0
  111. package/dist/types/providers/transform-messages.d.ts +32 -0
  112. package/dist/types/providers/vision-guard.d.ts +20 -0
  113. package/dist/types/registry/aiand.d.ts +7 -0
  114. package/dist/types/registry/aimlapi.d.ts +4 -0
  115. package/dist/types/registry/alibaba-coding-plan.d.ts +8 -0
  116. package/dist/types/registry/alibaba-token-plan.d.ts +18 -0
  117. package/dist/types/registry/amazon-bedrock.d.ts +5 -0
  118. package/dist/types/registry/anthropic.d.ts +10 -0
  119. package/dist/types/registry/api-key-login.d.ts +42 -0
  120. package/dist/types/registry/api-key-validation.d.ts +43 -0
  121. package/dist/types/registry/aws.d.ts +13 -0
  122. package/dist/types/registry/azure.d.ts +4 -0
  123. package/dist/types/registry/baseten.d.ts +7 -0
  124. package/dist/types/registry/bedrock-mantle.d.ts +22 -0
  125. package/dist/types/registry/cerebras.d.ts +7 -0
  126. package/dist/types/registry/cloudflare-ai-gateway.d.ts +13 -0
  127. package/dist/types/registry/coreweave.d.ts +7 -0
  128. package/dist/types/registry/cursor.d.ts +7 -0
  129. package/dist/types/registry/deepseek.d.ts +8 -0
  130. package/dist/types/registry/derived.d.ts +5 -0
  131. package/dist/types/registry/devin.d.ts +8 -0
  132. package/dist/types/registry/exa.d.ts +8 -0
  133. package/dist/types/registry/firepass.d.ts +16 -0
  134. package/dist/types/registry/fireworks.d.ts +7 -0
  135. package/dist/types/registry/github-copilot.d.ts +7 -0
  136. package/dist/types/registry/gitlab-duo-workflow.d.ts +10 -0
  137. package/dist/types/registry/gitlab-duo.d.ts +9 -0
  138. package/dist/types/registry/gmi-cloud.d.ts +7 -0
  139. package/dist/types/registry/google-antigravity.d.ts +9 -0
  140. package/dist/types/registry/google-gemini-cli.d.ts +9 -0
  141. package/dist/types/registry/google-vertex.d.ts +5 -0
  142. package/dist/types/registry/google.d.ts +4 -0
  143. package/dist/types/registry/groq.d.ts +4 -0
  144. package/dist/types/registry/huggingface.d.ts +7 -0
  145. package/dist/types/registry/index.d.ts +4 -0
  146. package/dist/types/registry/kagi.d.ts +14 -0
  147. package/dist/types/registry/kilo.d.ts +7 -0
  148. package/dist/types/registry/kimi-code.d.ts +7 -0
  149. package/dist/types/registry/litellm.d.ts +13 -0
  150. package/dist/types/registry/llama-cpp.d.ts +8 -0
  151. package/dist/types/registry/lm-studio.d.ts +8 -0
  152. package/dist/types/registry/meta.d.ts +7 -0
  153. package/dist/types/registry/minimax-code-cn.d.ts +6 -0
  154. package/dist/types/registry/minimax-code.d.ts +6 -0
  155. package/dist/types/registry/minimax.d.ts +4 -0
  156. package/dist/types/registry/mistral.d.ts +4 -0
  157. package/dist/types/registry/moonshot.d.ts +7 -0
  158. package/dist/types/registry/nanogpt.d.ts +7 -0
  159. package/dist/types/registry/novita.d.ts +6 -0
  160. package/dist/types/registry/nvidia.d.ts +7 -0
  161. package/dist/types/registry/oauth/anthropic-constants.d.ts +12 -0
  162. package/dist/types/registry/oauth/anthropic.d.ts +24 -0
  163. package/dist/types/registry/oauth/callback-server.d.ts +74 -0
  164. package/dist/types/registry/oauth/cursor.d.ts +16 -0
  165. package/dist/types/registry/oauth/device-code.d.ts +25 -0
  166. package/dist/types/registry/oauth/devin.d.ts +5 -0
  167. package/dist/types/registry/oauth/github-copilot.d.ts +30 -0
  168. package/dist/types/registry/oauth/gitlab-duo-workflow.d.ts +6 -0
  169. package/dist/types/registry/oauth/gitlab-duo.d.ts +3 -0
  170. package/dist/types/registry/oauth/google-antigravity.d.ts +11 -0
  171. package/dist/types/registry/oauth/google-gemini-cli.d.ts +22 -0
  172. package/dist/types/registry/oauth/google-oauth-shared.d.ts +56 -0
  173. package/dist/types/registry/oauth/index.d.ts +45 -0
  174. package/dist/types/registry/oauth/kimi.d.ts +21 -0
  175. package/dist/types/registry/oauth/minimax-code.d.ts +27 -0
  176. package/dist/types/registry/oauth/openai-codex.d.ts +33 -0
  177. package/dist/types/registry/oauth/opencode.d.ts +18 -0
  178. package/dist/types/registry/oauth/perplexity.d.ts +9 -0
  179. package/dist/types/registry/oauth/pkce.d.ts +8 -0
  180. package/dist/types/registry/oauth/types.d.ts +87 -0
  181. package/dist/types/registry/oauth/wafer.d.ts +1 -0
  182. package/dist/types/registry/oauth/xai-oauth.d.ts +46 -0
  183. package/dist/types/registry/oauth/xiaomi.d.ts +25 -0
  184. package/dist/types/registry/oauth/zai.d.ts +25 -0
  185. package/dist/types/registry/ollama-cloud.d.ts +7 -0
  186. package/dist/types/registry/ollama.d.ts +12 -0
  187. package/dist/types/registry/openai-codex-device.d.ts +8 -0
  188. package/dist/types/registry/openai-codex.d.ts +9 -0
  189. package/dist/types/registry/openai.d.ts +4 -0
  190. package/dist/types/registry/opencode-go.d.ts +6 -0
  191. package/dist/types/registry/opencode-zen.d.ts +6 -0
  192. package/dist/types/registry/openrouter.d.ts +13 -0
  193. package/dist/types/registry/parallel.d.ts +14 -0
  194. package/dist/types/registry/perplexity.d.ts +7 -0
  195. package/dist/types/registry/qianfan.d.ts +7 -0
  196. package/dist/types/registry/qwen-portal.d.ts +7 -0
  197. package/dist/types/registry/registry.d.ts +367 -0
  198. package/dist/types/registry/sakana.d.ts +7 -0
  199. package/dist/types/registry/siliconflow-cn.d.ts +7 -0
  200. package/dist/types/registry/siliconflow.d.ts +7 -0
  201. package/dist/types/registry/synthetic.d.ts +6 -0
  202. package/dist/types/registry/tavily.d.ts +14 -0
  203. package/dist/types/registry/together.d.ts +6 -0
  204. package/dist/types/registry/types.d.ts +75 -0
  205. package/dist/types/registry/umans.d.ts +7 -0
  206. package/dist/types/registry/venice.d.ts +13 -0
  207. package/dist/types/registry/vercel-ai-gateway.d.ts +7 -0
  208. package/dist/types/registry/vllm.d.ts +7 -0
  209. package/dist/types/registry/wafer-serverless.d.ts +6 -0
  210. package/dist/types/registry/xai-oauth.d.ts +7 -0
  211. package/dist/types/registry/xai.d.ts +7 -0
  212. package/dist/types/registry/xiaomi-token-plan-ams.d.ts +6 -0
  213. package/dist/types/registry/xiaomi-token-plan-cn.d.ts +6 -0
  214. package/dist/types/registry/xiaomi-token-plan-sgp.d.ts +6 -0
  215. package/dist/types/registry/xiaomi.d.ts +6 -0
  216. package/dist/types/registry/zai.d.ts +15 -0
  217. package/dist/types/registry/zenmux.d.ts +7 -0
  218. package/dist/types/registry/zhipu-coding-plan.d.ts +7 -0
  219. package/dist/types/stream.d.ts +46 -0
  220. package/dist/types/types.d.ts +1064 -0
  221. package/dist/types/usage/alibaba-token-plan.d.ts +3 -0
  222. package/dist/types/usage/claude.d.ts +4 -0
  223. package/dist/types/usage/cursor.d.ts +4 -0
  224. package/dist/types/usage/gemini.d.ts +2 -0
  225. package/dist/types/usage/github-copilot.d.ts +7 -0
  226. package/dist/types/usage/google-antigravity.d.ts +15 -0
  227. package/dist/types/usage/kimi.d.ts +2 -0
  228. package/dist/types/usage/minimax-code.d.ts +3 -0
  229. package/dist/types/usage/ollama.d.ts +5 -0
  230. package/dist/types/usage/openai-codex-base-url.d.ts +18 -0
  231. package/dist/types/usage/openai-codex-reset.d.ts +88 -0
  232. package/dist/types/usage/openai-codex.d.ts +10 -0
  233. package/dist/types/usage/opencode-go.d.ts +2 -0
  234. package/dist/types/usage/shared.d.ts +1 -0
  235. package/dist/types/usage/synthetic.d.ts +2 -0
  236. package/dist/types/usage/umans.d.ts +2 -0
  237. package/dist/types/usage/xai-oauth.d.ts +12 -0
  238. package/dist/types/usage/zai.d.ts +3 -0
  239. package/dist/types/usage.d.ts +527 -0
  240. package/dist/types/utils/abort.d.ts +25 -0
  241. package/dist/types/utils/anthropic-auth.d.ts +35 -0
  242. package/dist/types/utils/aws-profile.d.ts +17 -0
  243. package/dist/types/utils/block-symbols.d.ts +62 -0
  244. package/dist/types/utils/deterministic-id.d.ts +16 -0
  245. package/dist/types/utils/empty-completion-retry.d.ts +21 -0
  246. package/dist/types/utils/event-stream.d.ts +39 -0
  247. package/dist/types/utils/foundry.d.ts +1 -0
  248. package/dist/types/utils/google-validation.d.ts +2 -0
  249. package/dist/types/utils/harmony-leak.d.ts +135 -0
  250. package/dist/types/utils/http-inspector.d.ts +49 -0
  251. package/dist/types/utils/idle-iterator.d.ts +149 -0
  252. package/dist/types/utils/leaked-thinking-stream.d.ts +33 -0
  253. package/dist/types/utils/openai-http.d.ts +48 -0
  254. package/dist/types/utils/openrouter-headers.d.ts +1 -0
  255. package/dist/types/utils/parse-bind.d.ts +23 -0
  256. package/dist/types/utils/provider-response.d.ts +3 -0
  257. package/dist/types/utils/proxy.d.ts +39 -0
  258. package/dist/types/utils/request-debug.d.ts +29 -0
  259. package/dist/types/utils/retry-after.d.ts +4 -0
  260. package/dist/types/utils/retry.d.ts +14 -0
  261. package/dist/types/utils/schema/adapt.d.ts +24 -0
  262. package/dist/types/utils/schema/compatibility.d.ts +30 -0
  263. package/dist/types/utils/schema/dereference.d.ts +11 -0
  264. package/dist/types/utils/schema/draft.d.ts +10 -0
  265. package/dist/types/utils/schema/equality.d.ts +4 -0
  266. package/dist/types/utils/schema/fields.d.ts +54 -0
  267. package/dist/types/utils/schema/index.d.ts +14 -0
  268. package/dist/types/utils/schema/json-schema-validator.d.ts +20 -0
  269. package/dist/types/utils/schema/meta-validator.d.ts +2 -0
  270. package/dist/types/utils/schema/normalize.d.ts +153 -0
  271. package/dist/types/utils/schema/spill.d.ts +8 -0
  272. package/dist/types/utils/schema/stamps.d.ts +17 -0
  273. package/dist/types/utils/schema/strict-tool-validation.d.ts +16 -0
  274. package/dist/types/utils/schema/types.d.ts +4 -0
  275. package/dist/types/utils/schema/typescript.d.ts +24 -0
  276. package/dist/types/utils/schema/wire.d.ts +52 -0
  277. package/dist/types/utils/sdk-stream-timeout.d.ts +33 -0
  278. package/dist/types/utils/sse-debug.d.ts +5 -0
  279. package/dist/types/utils/stream-markup-healing.d.ts +87 -0
  280. package/dist/types/utils/thinking-loop.d.ts +102 -0
  281. package/dist/types/utils/tool-call-loop-guard.d.ts +26 -0
  282. package/dist/types/utils/tool-choice.d.ts +52 -0
  283. package/dist/types/utils/validation.d.ts +28 -0
  284. package/dist/types/utils.d.ts +57 -0
  285. package/package.json +138 -0
  286. package/src/api-registry.ts +109 -0
  287. package/src/auth/sqlite-credential-store.ts +2066 -0
  288. package/src/auth-broker/client.ts +471 -0
  289. package/src/auth-broker/discover.ts +310 -0
  290. package/src/auth-broker/index.ts +7 -0
  291. package/src/auth-broker/refresher.ts +117 -0
  292. package/src/auth-broker/remote-store.ts +1332 -0
  293. package/src/auth-broker/server.ts +898 -0
  294. package/src/auth-broker/snapshot-cache.ts +200 -0
  295. package/src/auth-broker/types.ts +193 -0
  296. package/src/auth-broker/wire-schema-resource.ts +487 -0
  297. package/src/auth-broker/wire-schemas.ts +43 -0
  298. package/src/auth-gateway/http.ts +227 -0
  299. package/src/auth-gateway/index.ts +3 -0
  300. package/src/auth-gateway/server.ts +836 -0
  301. package/src/auth-gateway/types.ts +153 -0
  302. package/src/auth-retry.ts +401 -0
  303. package/src/auth-storage.ts +6540 -0
  304. package/src/dialect/anthropic.md +31 -0
  305. package/src/dialect/anthropic.ts +608 -0
  306. package/src/dialect/catalog.ts +29 -0
  307. package/src/dialect/coercion.ts +136 -0
  308. package/src/dialect/deepseek.md +24 -0
  309. package/src/dialect/deepseek.ts +609 -0
  310. package/src/dialect/demotion.ts +40 -0
  311. package/src/dialect/examples.ts +71 -0
  312. package/src/dialect/factory.ts +34 -0
  313. package/src/dialect/fenced-thinking.ts +184 -0
  314. package/src/dialect/gemini.md +44 -0
  315. package/src/dialect/gemini.ts +583 -0
  316. package/src/dialect/gemma.md +33 -0
  317. package/src/dialect/gemma.ts +387 -0
  318. package/src/dialect/glm.md +32 -0
  319. package/src/dialect/glm.ts +579 -0
  320. package/src/dialect/harmony.md +31 -0
  321. package/src/dialect/harmony.ts +345 -0
  322. package/src/dialect/hermes.md +25 -0
  323. package/src/dialect/hermes.ts +206 -0
  324. package/src/dialect/history.ts +81 -0
  325. package/src/dialect/index.ts +15 -0
  326. package/src/dialect/inventory.ts +30 -0
  327. package/src/dialect/kimi.md +24 -0
  328. package/src/dialect/kimi.ts +340 -0
  329. package/src/dialect/minimax.md +31 -0
  330. package/src/dialect/minimax.ts +95 -0
  331. package/src/dialect/owned-stream.ts +481 -0
  332. package/src/dialect/prompt-template.md +12 -0
  333. package/src/dialect/qwen3.md +28 -0
  334. package/src/dialect/qwen3.ts +240 -0
  335. package/src/dialect/rendering.ts +304 -0
  336. package/src/dialect/thinking.ts +292 -0
  337. package/src/dialect/types.ts +56 -0
  338. package/src/dialect/xml.md +22 -0
  339. package/src/dialect/xml.ts +90 -0
  340. package/src/error/abort.ts +18 -0
  341. package/src/error/auth-classify.ts +47 -0
  342. package/src/error/auth.ts +48 -0
  343. package/src/error/aws.ts +35 -0
  344. package/src/error/classes.ts +281 -0
  345. package/src/error/finalize.ts +69 -0
  346. package/src/error/flags.ts +602 -0
  347. package/src/error/format.ts +45 -0
  348. package/src/error/gateway.ts +96 -0
  349. package/src/error/index.ts +14 -0
  350. package/src/error/oauth.ts +58 -0
  351. package/src/error/provider.ts +63 -0
  352. package/src/error/rate-limit.ts +303 -0
  353. package/src/error/retryable.ts +70 -0
  354. package/src/error/validation.ts +44 -0
  355. package/src/index.ts +51 -0
  356. package/src/provider-details.ts +90 -0
  357. package/src/providers/amazon-bedrock.ts +1064 -0
  358. package/src/providers/anthropic-client.ts +317 -0
  359. package/src/providers/anthropic-messages-server-schema.ts +252 -0
  360. package/src/providers/anthropic-messages-server.ts +818 -0
  361. package/src/providers/anthropic-wire.ts +359 -0
  362. package/src/providers/anthropic.ts +4539 -0
  363. package/src/providers/aws-credentials.ts +772 -0
  364. package/src/providers/aws-eventstream.ts +181 -0
  365. package/src/providers/aws-sigv4.ts +218 -0
  366. package/src/providers/azure-openai-responses.ts +438 -0
  367. package/src/providers/bedrock-mantle.ts +110 -0
  368. package/src/providers/claude-code-fingerprint.ts +20 -0
  369. package/src/providers/cowork-fetch.ts +201 -0
  370. package/src/providers/cursor/exec-modern.ts +496 -0
  371. package/src/providers/cursor/proto/agent.proto +4533 -0
  372. package/src/providers/cursor/proto/buf.gen.yaml +6 -0
  373. package/src/providers/cursor/proto/buf.yaml +17 -0
  374. package/src/providers/cursor-pi-args.ts +165 -0
  375. package/src/providers/cursor.ts +4689 -0
  376. package/src/providers/devin/proto/buf/validate/validate.proto +468 -0
  377. package/src/providers/devin/proto/buf.gen.yaml +33 -0
  378. package/src/providers/devin/proto/buf.yaml +17 -0
  379. package/src/providers/devin/proto/cel/expr/checked.proto +103 -0
  380. package/src/providers/devin/proto/cel/expr/eval.proto +38 -0
  381. package/src/providers/devin/proto/cel/expr/explain.proto +15 -0
  382. package/src/providers/devin/proto/cel/expr/syntax.proto +113 -0
  383. package/src/providers/devin/proto/cel/expr/value.proto +41 -0
  384. package/src/providers/devin/proto/connectext/grpc/status/v1/status.proto +11 -0
  385. package/src/providers/devin/proto/errorspb/errors.proto +56 -0
  386. package/src/providers/devin/proto/errorspb/hintdetail.proto +7 -0
  387. package/src/providers/devin/proto/errorspb/markers.proto +10 -0
  388. package/src/providers/devin/proto/errorspb/tags.proto +12 -0
  389. package/src/providers/devin/proto/errorspb/testing.proto +6 -0
  390. package/src/providers/devin/proto/exa/analytics_pb/analytics.proto +188 -0
  391. package/src/providers/devin/proto/exa/api_server_pb/api_server.proto +2461 -0
  392. package/src/providers/devin/proto/exa/auth_pb/auth.proto +19 -0
  393. package/src/providers/devin/proto/exa/auto_cascade_common_pb/auto_cascade_common.proto +79 -0
  394. package/src/providers/devin/proto/exa/browser_preview_pb/browser_preview.proto +32 -0
  395. package/src/providers/devin/proto/exa/bug_checker_pb/bug_checker.proto +22 -0
  396. package/src/providers/devin/proto/exa/cascade_plugins_pb/cascade_plugins.proto +262 -0
  397. package/src/providers/devin/proto/exa/chat_client_server_pb/chat_client_server.proto +57 -0
  398. package/src/providers/devin/proto/exa/chat_pb/chat.proto +449 -0
  399. package/src/providers/devin/proto/exa/code_edit/code_edit_pb/code_edit.proto +186 -0
  400. package/src/providers/devin/proto/exa/codeium_common_pb/codeium_common.proto +4157 -0
  401. package/src/providers/devin/proto/exa/context_module_pb/context_module.proto +175 -0
  402. package/src/providers/devin/proto/exa/cortex_pb/cortex.proto +3268 -0
  403. package/src/providers/devin/proto/exa/dev_pb/dev.proto +26 -0
  404. package/src/providers/devin/proto/exa/diff_action_pb/diff_action.proto +75 -0
  405. package/src/providers/devin/proto/exa/eval/pr_eval/datasets_pb/datasets.proto +103 -0
  406. package/src/providers/devin/proto/exa/eval_pb/eval.proto +1315 -0
  407. package/src/providers/devin/proto/exa/extension_server_pb/extension_server.proto +556 -0
  408. package/src/providers/devin/proto/exa/file_system_provider_pb/file_system_provider.proto +75 -0
  409. package/src/providers/devin/proto/exa/index_pb/index.proto +461 -0
  410. package/src/providers/devin/proto/exa/knowledge_base_pb/knowledge_base.proto +144 -0
  411. package/src/providers/devin/proto/exa/language_server_pb/language_server.proto +2385 -0
  412. package/src/providers/devin/proto/exa/model_management_pb/model_management.proto +186 -0
  413. package/src/providers/devin/proto/exa/opensearch_clients_pb/opensearch_clients.proto +503 -0
  414. package/src/providers/devin/proto/exa/product_analytics_pb/product_analytics.proto +37 -0
  415. package/src/providers/devin/proto/exa/prompt_pb/prompt.proto +92 -0
  416. package/src/providers/devin/proto/exa/reactive_component_pb/reactive_component.proto +96 -0
  417. package/src/providers/devin/proto/exa/seat_management_pb/seat_management.proto +2680 -0
  418. package/src/providers/devin/proto/exa/tokenizer_pb/tokenizer.proto +37 -0
  419. package/src/providers/devin/proto/exa/trainer_pb/config.proto +647 -0
  420. package/src/providers/devin/proto/exa/tree_sitter/language_data_pb/language_data.proto +14 -0
  421. package/src/providers/devin/proto/exa/trust_pb/trust.proto +157 -0
  422. package/src/providers/devin/proto/exa/user_analytics_pb/user_analytics.proto +519 -0
  423. package/src/providers/devin/proto/google.golang.org/appengine/internal/base/api_base.proto +28 -0
  424. package/src/providers/devin/proto/google.golang.org/appengine/internal/datastore/datastore_v3.proto +484 -0
  425. package/src/providers/devin/proto/google.golang.org/appengine/internal/log/log_service.proto +136 -0
  426. package/src/providers/devin/proto/google.golang.org/appengine/internal/remote_api/remote_api.proto +42 -0
  427. package/src/providers/devin/proto/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +61 -0
  428. package/src/providers/devin/proto/grpc/binlog/v1/binarylog.proto +84 -0
  429. package/src/providers/devin/proto/io/prometheus/client/metrics.proto +98 -0
  430. package/src/providers/devin.ts +679 -0
  431. package/src/providers/error-message.ts +23 -0
  432. package/src/providers/github-copilot-headers.ts +141 -0
  433. package/src/providers/gitlab-duo-workflow-chatml-note.md +1 -0
  434. package/src/providers/gitlab-duo-workflow.ts +3135 -0
  435. package/src/providers/gitlab-duo.ts +399 -0
  436. package/src/providers/google-auth.ts +330 -0
  437. package/src/providers/google-gemini-cli.ts +1370 -0
  438. package/src/providers/google-shared.ts +1122 -0
  439. package/src/providers/google-types.ts +180 -0
  440. package/src/providers/google-vertex.ts +135 -0
  441. package/src/providers/google.ts +47 -0
  442. package/src/providers/grammar.ts +70 -0
  443. package/src/providers/kimi.ts +51 -0
  444. package/src/providers/mock.ts +514 -0
  445. package/src/providers/ollama.ts +776 -0
  446. package/src/providers/openai-anthropic-shim.ts +166 -0
  447. package/src/providers/openai-chat-server-schema.ts +243 -0
  448. package/src/providers/openai-chat-server.ts +752 -0
  449. package/src/providers/openai-chat-wire.ts +859 -0
  450. package/src/providers/openai-codex/request-transformer.ts +491 -0
  451. package/src/providers/openai-codex/response-handler.ts +102 -0
  452. package/src/providers/openai-codex-responses.ts +4716 -0
  453. package/src/providers/openai-completions.ts +2389 -0
  454. package/src/providers/openai-reasoning-fallback.ts +269 -0
  455. package/src/providers/openai-responses-server-schema.ts +397 -0
  456. package/src/providers/openai-responses-server.ts +1466 -0
  457. package/src/providers/openai-responses-wire.ts +6416 -0
  458. package/src/providers/openai-responses.ts +1393 -0
  459. package/src/providers/openai-shared.ts +3500 -0
  460. package/src/providers/pi-native-client.ts +275 -0
  461. package/src/providers/pi-native-server.ts +245 -0
  462. package/src/providers/register-builtins.ts +503 -0
  463. package/src/providers/synthetic.ts +50 -0
  464. package/src/providers/transform-messages.ts +1083 -0
  465. package/src/providers/vision-guard.ts +54 -0
  466. package/src/registry/aiand.ts +22 -0
  467. package/src/registry/aimlapi.ts +6 -0
  468. package/src/registry/alibaba-coding-plan.ts +104 -0
  469. package/src/registry/alibaba-token-plan.ts +125 -0
  470. package/src/registry/amazon-bedrock.ts +22 -0
  471. package/src/registry/anthropic.ts +26 -0
  472. package/src/registry/api-key-login.ts +115 -0
  473. package/src/registry/api-key-validation.ts +145 -0
  474. package/src/registry/aws.ts +57 -0
  475. package/src/registry/azure.ts +6 -0
  476. package/src/registry/baseten.ts +22 -0
  477. package/src/registry/bedrock-mantle.ts +34 -0
  478. package/src/registry/cerebras.ts +23 -0
  479. package/src/registry/cloudflare-ai-gateway.ts +45 -0
  480. package/src/registry/coreweave.ts +40 -0
  481. package/src/registry/cursor.ts +20 -0
  482. package/src/registry/deepseek.ts +46 -0
  483. package/src/registry/derived.ts +9 -0
  484. package/src/registry/devin.ts +15 -0
  485. package/src/registry/exa.ts +19 -0
  486. package/src/registry/firepass.ts +32 -0
  487. package/src/registry/fireworks.ts +28 -0
  488. package/src/registry/github-copilot.ts +22 -0
  489. package/src/registry/gitlab-duo-workflow.ts +20 -0
  490. package/src/registry/gitlab-duo.ts +19 -0
  491. package/src/registry/gmi-cloud.ts +22 -0
  492. package/src/registry/google-antigravity.ts +22 -0
  493. package/src/registry/google-gemini-cli.ts +22 -0
  494. package/src/registry/google-vertex.ts +38 -0
  495. package/src/registry/google.ts +6 -0
  496. package/src/registry/groq.ts +6 -0
  497. package/src/registry/huggingface.ts +29 -0
  498. package/src/registry/index.ts +4 -0
  499. package/src/registry/kagi.ts +46 -0
  500. package/src/registry/kilo.ts +114 -0
  501. package/src/registry/kimi-code.ts +17 -0
  502. package/src/registry/litellm.ts +45 -0
  503. package/src/registry/llama-cpp.ts +35 -0
  504. package/src/registry/lm-studio.ts +31 -0
  505. package/src/registry/meta.ts +22 -0
  506. package/src/registry/minimax-code-cn.ts +12 -0
  507. package/src/registry/minimax-code.ts +12 -0
  508. package/src/registry/minimax.ts +6 -0
  509. package/src/registry/mistral.ts +6 -0
  510. package/src/registry/moonshot.ts +28 -0
  511. package/src/registry/nanogpt.ts +22 -0
  512. package/src/registry/novita.ts +25 -0
  513. package/src/registry/nvidia.ts +61 -0
  514. package/src/registry/oauth/anthropic-constants.ts +12 -0
  515. package/src/registry/oauth/anthropic.ts +346 -0
  516. package/src/registry/oauth/callback-server.ts +438 -0
  517. package/src/registry/oauth/cursor.ts +187 -0
  518. package/src/registry/oauth/device-code.ts +92 -0
  519. package/src/registry/oauth/devin.ts +124 -0
  520. package/src/registry/oauth/github-copilot.ts +369 -0
  521. package/src/registry/oauth/gitlab-duo-workflow.ts +146 -0
  522. package/src/registry/oauth/gitlab-duo.ts +222 -0
  523. package/src/registry/oauth/google-antigravity.ts +225 -0
  524. package/src/registry/oauth/google-gemini-cli.ts +297 -0
  525. package/src/registry/oauth/google-oauth-shared.ts +211 -0
  526. package/src/registry/oauth/index.ts +187 -0
  527. package/src/registry/oauth/kimi.ts +297 -0
  528. package/src/registry/oauth/minimax-code.ts +53 -0
  529. package/src/registry/oauth/oauth.html +317 -0
  530. package/src/registry/oauth/openai-codex.ts +384 -0
  531. package/src/registry/oauth/opencode.ts +50 -0
  532. package/src/registry/oauth/perplexity.ts +228 -0
  533. package/src/registry/oauth/pkce.ts +18 -0
  534. package/src/registry/oauth/types.ts +96 -0
  535. package/src/registry/oauth/wafer.ts +24 -0
  536. package/src/registry/oauth/xai-oauth.ts +559 -0
  537. package/src/registry/oauth/xiaomi.ts +211 -0
  538. package/src/registry/oauth/zai.ts +285 -0
  539. package/src/registry/ollama-cloud.ts +36 -0
  540. package/src/registry/ollama.ts +43 -0
  541. package/src/registry/openai-codex-device.ts +18 -0
  542. package/src/registry/openai-codex.ts +19 -0
  543. package/src/registry/openai.ts +6 -0
  544. package/src/registry/opencode-go.ts +12 -0
  545. package/src/registry/opencode-zen.ts +12 -0
  546. package/src/registry/openrouter.ts +28 -0
  547. package/src/registry/parallel.ts +45 -0
  548. package/src/registry/perplexity.ts +13 -0
  549. package/src/registry/qianfan.ts +27 -0
  550. package/src/registry/qwen-portal.ts +50 -0
  551. package/src/registry/registry.ts +182 -0
  552. package/src/registry/sakana.ts +22 -0
  553. package/src/registry/siliconflow-cn.ts +22 -0
  554. package/src/registry/siliconflow.ts +22 -0
  555. package/src/registry/synthetic.ts +21 -0
  556. package/src/registry/tavily.ts +45 -0
  557. package/src/registry/together.ts +22 -0
  558. package/src/registry/types.ts +86 -0
  559. package/src/registry/umans.ts +23 -0
  560. package/src/registry/venice.ts +33 -0
  561. package/src/registry/vercel-ai-gateway.ts +38 -0
  562. package/src/registry/vllm.ts +34 -0
  563. package/src/registry/wafer-serverless.ts +12 -0
  564. package/src/registry/xai-oauth.ts +17 -0
  565. package/src/registry/xai.ts +22 -0
  566. package/src/registry/xiaomi-token-plan-ams.ts +12 -0
  567. package/src/registry/xiaomi-token-plan-cn.ts +12 -0
  568. package/src/registry/xiaomi-token-plan-sgp.ts +12 -0
  569. package/src/registry/xiaomi.ts +12 -0
  570. package/src/registry/zai.ts +41 -0
  571. package/src/registry/zenmux.ts +22 -0
  572. package/src/registry/zhipu-coding-plan.ts +27 -0
  573. package/src/stream.ts +1944 -0
  574. package/src/types.ts +1243 -0
  575. package/src/usage/alibaba-token-plan.ts +230 -0
  576. package/src/usage/claude.ts +830 -0
  577. package/src/usage/cursor.ts +335 -0
  578. package/src/usage/gemini.ts +258 -0
  579. package/src/usage/github-copilot.ts +424 -0
  580. package/src/usage/google-antigravity.ts +497 -0
  581. package/src/usage/kimi.ts +277 -0
  582. package/src/usage/minimax-code.ts +291 -0
  583. package/src/usage/ollama.ts +41 -0
  584. package/src/usage/openai-codex-base-url.ts +35 -0
  585. package/src/usage/openai-codex-reset.ts +205 -0
  586. package/src/usage/openai-codex.ts +627 -0
  587. package/src/usage/opencode-go.ts +89 -0
  588. package/src/usage/shared.ts +10 -0
  589. package/src/usage/synthetic.ts +180 -0
  590. package/src/usage/umans.ts +192 -0
  591. package/src/usage/xai-oauth.ts +414 -0
  592. package/src/usage/zai.ts +370 -0
  593. package/src/usage.ts +411 -0
  594. package/src/utils/abort.ts +67 -0
  595. package/src/utils/anthropic-auth.ts +93 -0
  596. package/src/utils/aws-profile.ts +88 -0
  597. package/src/utils/block-symbols.ts +78 -0
  598. package/src/utils/deterministic-id.ts +20 -0
  599. package/src/utils/empty-completion-retry.ts +161 -0
  600. package/src/utils/event-stream.ts +202 -0
  601. package/src/utils/foundry.ts +8 -0
  602. package/src/utils/google-validation.ts +25 -0
  603. package/src/utils/harmony-leak.ts +500 -0
  604. package/src/utils/http-inspector.ts +196 -0
  605. package/src/utils/idle-iterator.ts +531 -0
  606. package/src/utils/leaked-thinking-stream.ts +483 -0
  607. package/src/utils/openai-http.ts +119 -0
  608. package/src/utils/openrouter-headers.ts +12 -0
  609. package/src/utils/parse-bind.ts +56 -0
  610. package/src/utils/provider-response.ts +30 -0
  611. package/src/utils/proxy.ts +314 -0
  612. package/src/utils/request-debug.ts +351 -0
  613. package/src/utils/retry-after.ts +121 -0
  614. package/src/utils/retry.ts +77 -0
  615. package/src/utils/schema/CONSTRAINTS.md +168 -0
  616. package/src/utils/schema/adapt.ts +36 -0
  617. package/src/utils/schema/compatibility.ts +435 -0
  618. package/src/utils/schema/dereference.ts +98 -0
  619. package/src/utils/schema/draft.ts +341 -0
  620. package/src/utils/schema/equality.ts +97 -0
  621. package/src/utils/schema/fields.ts +210 -0
  622. package/src/utils/schema/index.ts +14 -0
  623. package/src/utils/schema/json-schema-validator.ts +595 -0
  624. package/src/utils/schema/meta-validator.ts +167 -0
  625. package/src/utils/schema/normalize.ts +2314 -0
  626. package/src/utils/schema/spill.ts +43 -0
  627. package/src/utils/schema/stamps.ts +109 -0
  628. package/src/utils/schema/strict-tool-validation.ts +117 -0
  629. package/src/utils/schema/types.ts +10 -0
  630. package/src/utils/schema/typescript.ts +212 -0
  631. package/src/utils/schema/wire.ts +662 -0
  632. package/src/utils/sdk-stream-timeout.ts +43 -0
  633. package/src/utils/sse-debug.ts +18 -0
  634. package/src/utils/stream-markup-healing.ts +247 -0
  635. package/src/utils/thinking-loop.ts +552 -0
  636. package/src/utils/tool-call-loop-guard.ts +107 -0
  637. package/src/utils/tool-choice.ts +101 -0
  638. package/src/utils/validation.ts +1932 -0
  639. package/src/utils.ts +492 -0
@@ -0,0 +1,624 @@
1
+ import type { Effort } from "@linxiraos/pi-catalog/effort";
2
+ import type { OpenAICompat, OpenAIReasoningDisableMode, OpenAIStreamMarkupHealingPattern, OpenRouterRouting, ResolvedOpenAICompat, ResolvedOpenAIResponsesCompat, ResolvedOpenAISharedCompat, VercelGatewayRouting } from "@linxiraos/pi-catalog/types";
3
+ import { type Api, type AssistantMessage, type CacheRetention, type ComputerToolCallMetadata, type Context, type ImageContent, type Message, type MessageAttribution, type Model, type ServiceTier, type StopReason, type StreamOptions, type TextContent, type TextSignatureV1, type ThinkingContent, type Tool, type ToolCall, type ToolResultMessage, type Usage } from "../types.js";
4
+ export type { OpenAIPromptCacheOptions } from "../types.js";
5
+ import { kStreamingLastParseLen, kStreamingPartialJson } from "../utils/block-symbols.js";
6
+ import type { AssistantMessageEventStream } from "../utils/event-stream.js";
7
+ import type { CapturedHttpErrorResponse } from "../utils/http-inspector.js";
8
+ import type { ChatCompletionCreateParamsStreaming } from "./openai-chat-wire.js";
9
+ import type { InputItem } from "./openai-codex/request-transformer.js";
10
+ import type { ResponseComputerToolCall, ResponseContentPartAddedEvent, ResponseCreateParamsStreaming, ResponseInput, ResponseInputContent, ResponseInputItem, ResponseOutputItem, ResponseOutputMessage, ResponseReasoningItem, ResponseStatus, ResponseStreamEvent } from "./openai-responses-wire.js";
11
+ /**
12
+ * Keyless-provider sentinel. Custom providers configured with `auth: none`
13
+ * (models.yml) have no credential, so the coding-agent resolves their API key
14
+ * to this literal instead of a real secret. Providers must treat it as "no
15
+ * credential" and suppress any credential-bearing header (e.g. `Authorization:
16
+ * Bearer …`) rather than forwarding the sentinel on the wire. See #6188; the
17
+ * google-vertex and amazon-bedrock transports apply the same guard inline.
18
+ */
19
+ export declare const NO_AUTH_SENTINEL = "N/A";
20
+ export interface OpenAIModelIdentity {
21
+ provider: string;
22
+ id: string;
23
+ baseUrl?: string;
24
+ }
25
+ export interface OpenAIStrictToolsScope {
26
+ provider: string;
27
+ baseUrl: string | undefined;
28
+ modelId: string;
29
+ }
30
+ export interface OpenAIStrictToolsState {
31
+ strictTools: {
32
+ disabledModelScopes: Set<string>;
33
+ };
34
+ }
35
+ export interface OpenAIRequestSetupModel extends OpenAIModelIdentity {
36
+ headers?: Record<string, string>;
37
+ premiumMultiplier?: number;
38
+ compat?: Pick<ResolvedOpenAISharedCompat, "promptCacheSessionHeader">;
39
+ }
40
+ /** Cache identity controls shared by OpenAI-family transports. */
41
+ export interface OpenAICacheOptions {
42
+ cacheRetention?: CacheRetention;
43
+ sessionId?: string;
44
+ promptCacheKey?: string;
45
+ }
46
+ export interface OpenAIRequestSetupOptions {
47
+ apiKey?: string;
48
+ extraHeaders?: Record<string, string>;
49
+ initiatorOverride?: MessageAttribution;
50
+ messages: Message[];
51
+ defaultBaseUrl?: string;
52
+ prependHeaders?: () => Record<string, string>;
53
+ alibabaCodingPlanAuth?: boolean;
54
+ azureChatCompletions?: {
55
+ apiVersion: string;
56
+ deploymentName: string;
57
+ };
58
+ openAISessionId?: string;
59
+ promptCacheSessionId?: string;
60
+ }
61
+ export interface OpenAIRequestSetup {
62
+ copilotPremiumRequests: number | undefined;
63
+ baseUrl: string | undefined;
64
+ headers: Record<string, string>;
65
+ query: Record<string, string> | undefined;
66
+ requestHeaders: Record<string, string>;
67
+ }
68
+ export declare function resolveOpenAIRequestSetup(model: OpenAIRequestSetupModel, options: OpenAIRequestSetupOptions): OpenAIRequestSetup;
69
+ export declare function applyOpenAIServiceTier(params: {
70
+ service_tier?: ServiceTier | null | undefined;
71
+ }, serviceTier: ServiceTier | null | undefined, model: Pick<Model, "provider" | "api" | "id">): void;
72
+ /**
73
+ * Adjust resolved cost by the service tier OpenAI actually billed — parity with
74
+ * Codex (`applyCodexServiceTierPricing`), but with the standard (non-Codex)
75
+ * multipliers. The served tier comes from the response echo, falling back to the
76
+ * resolved request tier. Scoped to `provider: "openai"` (the only standard
77
+ * Responses biller) so an echoed `service_tier` from an Azure/OpenRouter/Copilot
78
+ * proxy can never skew those costs.
79
+ */
80
+ export declare function applyOpenAIResponsesServiceTierCost(model: Pick<Model, "provider">, usage: AssistantMessage["usage"], responseServiceTier: unknown, requestServiceTier: ServiceTier | null | undefined): void;
81
+ /** Reconcile token-price estimates with OpenRouter's authoritative account charge. */
82
+ export declare function applyOpenRouterReportedCost(model: Pick<Model, "provider">, usage: Usage, rawUsage: unknown): void;
83
+ export interface OpenAIUsageAccountingInput {
84
+ promptTokens: number;
85
+ outputTokens: number;
86
+ cachedTokens: number;
87
+ reasoningTokens: number;
88
+ cacheWriteOpenRouter: number | undefined;
89
+ cacheWriteDeepSeek: number | undefined;
90
+ hasDeepSeekCacheHitAndMiss: boolean;
91
+ }
92
+ export interface OpenAIUsageAccounting {
93
+ input: number;
94
+ output: number;
95
+ cacheRead: number;
96
+ cacheWrite: number;
97
+ totalTokens: number;
98
+ reasoningTokens?: number;
99
+ orchestration?: Usage["orchestration"];
100
+ }
101
+ export declare function calculateOpenAIUsageAccounting(accounting: OpenAIUsageAccountingInput): OpenAIUsageAccounting;
102
+ /** Normalize a cache identity to the wire limit accepted by OpenAI-family providers. */
103
+ export declare function normalizeOpenAIPromptCacheKey(sessionId: string | undefined): string | undefined;
104
+ export declare function normalizeOpenRouterResponsesSessionId(sessionId: string | undefined): string | undefined;
105
+ /** Resolve a prompt-cache identity, falling back to the provider session unless caching is disabled. */
106
+ export declare function getOpenAIPromptCacheKey(options: OpenAICacheOptions | undefined): string | undefined;
107
+ export declare function getOpenAIResponsesRoutingSessionId(options: Pick<OpenAICacheOptions, "cacheRetention" | "sessionId"> | undefined): string | undefined;
108
+ export declare function getOpenRouterResponsesSessionId(options: Pick<OpenAICacheOptions, "cacheRetention" | "sessionId"> | undefined): string | undefined;
109
+ export declare function parseAzureDeploymentNameMap(value: string | undefined): Map<string, string>;
110
+ export declare function createOpenAIStrictToolsState(): OpenAIStrictToolsState;
111
+ export declare function clearOpenAIStrictToolsState(state: OpenAIStrictToolsState): void;
112
+ export declare function getOpenAIStrictToolsScope(model: OpenAIModelIdentity, resolvedBaseUrl: string | undefined): OpenAIStrictToolsScope;
113
+ export declare function isStrictToolsDisabledForScope(state: OpenAIStrictToolsState | undefined, scope: OpenAIStrictToolsScope | undefined): boolean;
114
+ export declare function disableStrictToolsForScope(state: OpenAIStrictToolsState | undefined, scope: OpenAIStrictToolsScope | undefined): void;
115
+ export declare function isOpenRouterAnthropicModel(model: OpenAIModelIdentity): boolean;
116
+ /**
117
+ * Append an OpenRouter routing-variant suffix (e.g. `:nitro`, `:floor`, `:online`, `:exacto`)
118
+ * to a model id when no explicit variant is already present. A variant is considered
119
+ * "already present" when `modelId` contains a colon after the last `/` separator —
120
+ * which covers both user-typed selectors (`anthropic/claude-haiku:nitro`) and catalog
121
+ * entries that bake the variant in (`deepseek/deepseek-v3.1-terminus:exacto`).
122
+ */
123
+ export declare function applyOpenRouterRoutingVariant(modelId: string, variant: string | undefined): string;
124
+ export declare function applyWireModelIdTransform(baseId: string, mode: ResolvedOpenAISharedCompat["wireModelIdMode"], openrouterVariant?: string): string;
125
+ export interface OpenAIOutputTokenParam {
126
+ field: "max_tokens" | "max_completion_tokens" | "max_output_tokens";
127
+ value: number;
128
+ }
129
+ export interface ResolveOpenAIOutputTokenInput {
130
+ /** Wire field the endpoint expects for the output cap. */
131
+ field: OpenAIOutputTokenParam["field"];
132
+ /** Caller-supplied output cap (model-defaulted by `stream.ts`, or null/undefined on direct provider calls). */
133
+ maxTokens: number | null | undefined;
134
+ /** Whether the caller explicitly set `maxTokens` (routing omission only applies when false). */
135
+ maxTokensExplicit: boolean;
136
+ /** Model output cap (`model.maxTokens`). */
137
+ modelMaxTokens: number | null | undefined;
138
+ /** Drop the field entirely — proxies with unknown upstream caps (Ollama via `model.omitMaxOutputTokens`). */
139
+ omitMaxOutputTokens: boolean;
140
+ /** The model sits behind OpenRouter (catalog default caps are omitted so each upstream self-caps). */
141
+ isOpenRouterHost: boolean;
142
+ /** Endpoint always needs a cap (Kimi-family TPM math); supplies the model default when the caller did not. */
143
+ alwaysSendMaxTokens: boolean;
144
+ /** Hard provider clamp; defaults to {@link OPENAI_MAX_OUTPUT_TOKENS}. */
145
+ providerOutputClamp?: number;
146
+ }
147
+ /**
148
+ * Resolve the single output-token wire parameter shared by Chat Completions
149
+ * (`max_tokens`/`max_completion_tokens`) and the Responses family
150
+ * (`max_output_tokens`). Centralizes the provider exceptions that previously
151
+ * lived inline in both `buildParams`:
152
+ * - `alwaysSendMaxTokens`: Kimi-family endpoints derive TPM limits from the
153
+ * cap and require one on every call, so default from the model cap (or
154
+ * {@link OPENAI_MAX_OUTPUT_TOKENS}) when the caller omitted it.
155
+ * - OpenRouter routing omission: OpenRouter fans out to upstreams whose output
156
+ * caps differ from the catalog value, so a catalog default above the routed
157
+ * upstream's cap makes OpenRouter skip that upstream. Omit catalog defaults
158
+ * (explicit caller caps still win) so `provider.order`/`only` is honored.
159
+ * - model/provider clamp: never exceed `model.maxTokens` or the provider clamp
160
+ * (`OPENAI_MAX_OUTPUT_TOKENS`, raised for GLM-5.2 reasoning by the caller).
161
+ * - `omitMaxOutputTokens`: proxies (Ollama) with unknown upstream caps drop it.
162
+ */
163
+ export declare function resolveOpenAIOutputTokenParam(input: ResolveOpenAIOutputTokenInput): OpenAIOutputTokenParam | undefined;
164
+ export interface OpenAIGatewayRoutingParams {
165
+ provider?: OpenRouterRouting;
166
+ providerOptions?: {
167
+ gateway?: Pick<VercelGatewayRouting, "only" | "order" | "caching">;
168
+ };
169
+ }
170
+ export interface OpenAIGatewayRoutingCompat {
171
+ isOpenRouterHost: boolean;
172
+ openRouterRouting?: OpenRouterRouting;
173
+ isVercelGatewayHost?: boolean;
174
+ vercelGatewayRouting?: VercelGatewayRouting;
175
+ }
176
+ /**
177
+ * Apply gateway routing preferences to the request body. OpenRouter routes via
178
+ * the top-level `provider` field; the Vercel AI Gateway routes Chat
179
+ * Completions through `providerOptions.gateway`.
180
+ */
181
+ export declare function applyOpenAIGatewayRouting(params: OpenAIGatewayRoutingParams, compat: OpenAIGatewayRoutingCompat, cacheEnabled?: boolean): void;
182
+ export interface VercelResponsesCacheParams {
183
+ caching?: "auto";
184
+ cache_anchor_items?: number;
185
+ cache_ttl?: "5m" | "1h";
186
+ providerOptions?: {
187
+ gateway?: Pick<VercelGatewayRouting, "only" | "order">;
188
+ };
189
+ }
190
+ export interface VercelResponsesCacheCompat {
191
+ isVercelGatewayHost: boolean;
192
+ vercelGatewayRouting?: VercelGatewayRouting;
193
+ }
194
+ /**
195
+ * Apply Vercel AI Gateway's Responses-only automatic cache controls and
196
+ * provider routing. Cache settings are top-level Responses fields, while
197
+ * `only` and `order` remain under `providerOptions.gateway`.
198
+ */
199
+ export declare function applyVercelResponsesCacheControls(params: VercelResponsesCacheParams, compat: VercelResponsesCacheCompat, cacheRetention?: CacheRetention): void;
200
+ export interface OpenAIExtraBodyOptions {
201
+ /**
202
+ * Fireworks rejects DeepSeek-style `thinking` toggles alongside OpenAI-style
203
+ * `reasoning_effort`; drop `thinking` when the effort field carries the level.
204
+ */
205
+ dropThinkingWhenReasoningEffort?: boolean;
206
+ }
207
+ /**
208
+ * Merge a compat/options `extraBody` blob into the request params. When
209
+ * `dropThinkingWhenReasoningEffort` is set and `reasoning_effort` is present,
210
+ * delete the conflicting `thinking` toggle (Fireworks rejects both together).
211
+ */
212
+ export declare function applyOpenAIExtraBody<P extends object>(params: P, extraBody: Record<string, unknown> | undefined, options?: OpenAIExtraBodyOptions): void;
213
+ /**
214
+ * Chat Completions streaming request body shaped by the OpenAI-family providers.
215
+ * Extends the vendored SDK params with the compat dialect fields pi-ai emits
216
+ * (binary `thinking`, Qwen `enable_thinking`/`chat_template_kwargs`, nested
217
+ * `reasoning`, gateway `provider`/`providerOptions`, sampling extras). Lives in
218
+ * the shared module beside the request-shaping helpers that mutate it.
219
+ */
220
+ export type OpenAICompletionsParams = Omit<ChatCompletionCreateParamsStreaming, "reasoning_effort" | "service_tier"> & {
221
+ top_k?: number;
222
+ min_p?: number;
223
+ repetition_penalty?: number;
224
+ thinking?: {
225
+ type: "enabled" | "disabled";
226
+ effort?: string;
227
+ keep?: "all";
228
+ };
229
+ enable_thinking?: boolean;
230
+ preserve_thinking?: boolean;
231
+ chat_template_kwargs?: {
232
+ enable_thinking?: boolean;
233
+ preserve_thinking?: boolean;
234
+ };
235
+ reasoning?: {
236
+ effort?: string;
237
+ } | {
238
+ enabled: false;
239
+ };
240
+ reasoning_effort?: string | null;
241
+ service_tier?: ServiceTier;
242
+ tool_stream?: boolean;
243
+ provider?: OpenAICompat["openRouterRouting"];
244
+ providerOptions?: {
245
+ gateway?: {
246
+ only?: string[];
247
+ order?: string[];
248
+ };
249
+ };
250
+ };
251
+ /** Reasoning-relevant slice of caller options the Chat Completions dialect dispatch reads. */
252
+ export interface ChatCompletionsReasoningOptions {
253
+ reasoning?: "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
254
+ disableReasoning?: boolean;
255
+ }
256
+ export type OpenAICompatEndpoint = "chat-completions" | "responses";
257
+ export type OpenAIReasoningDisableReason = "caller" | "forced-tool-choice" | "tool-choice" | "not-requested";
258
+ export type OpenAICompatPolicyCompat = ResolvedOpenAISharedCompat & Partial<ResolvedOpenAICompat> & Partial<ResolvedOpenAIResponsesCompat>;
259
+ export interface ResolveOpenAICompatPolicyOptions {
260
+ endpoint: OpenAICompatEndpoint;
261
+ compat?: OpenAICompatPolicyCompat;
262
+ reasoning?: string;
263
+ disableReasoning?: boolean;
264
+ toolChoice?: unknown;
265
+ strictResponsesPairing?: boolean;
266
+ includeEncryptedReasoning?: boolean;
267
+ filterReasoningHistory?: boolean;
268
+ omitReasoningEffort?: boolean;
269
+ }
270
+ export interface OpenAICompatPolicy {
271
+ endpoint: OpenAICompatEndpoint;
272
+ compat: OpenAICompatPolicyCompat;
273
+ reasoning: {
274
+ modelSupported: boolean;
275
+ supportsParams: boolean;
276
+ requestedEffort?: string;
277
+ wireEffort?: string;
278
+ enabled: boolean;
279
+ disabled: boolean;
280
+ disableReason?: OpenAIReasoningDisableReason;
281
+ dialect: ResolvedOpenAISharedCompat["thinkingFormat"];
282
+ disableMode: OpenAIReasoningDisableMode;
283
+ omitReasoningEffort: boolean;
284
+ includeEncryptedReasoning: boolean;
285
+ filterReasoningHistory: boolean;
286
+ requiresReasoningContentForToolCalls: boolean;
287
+ requiresReasoningContentForAllAssistantTurns: boolean;
288
+ allowsSyntheticReasoningContentForToolCalls: boolean;
289
+ reasoningContentField?: OpenAICompat["reasoningContentField"];
290
+ requiresThinkingAsText: boolean;
291
+ };
292
+ tools: {
293
+ strictResponsesPairing: boolean;
294
+ toolCallIdKind: "default" | "openai-40" | "mistral-9-alnum";
295
+ };
296
+ messages: {
297
+ systemRole: "system" | "developer";
298
+ supportsDeveloperRole: boolean;
299
+ supportsMultipleSystemMessages: boolean;
300
+ };
301
+ stream: {
302
+ stripSpecialTokens: "deepseek" | false;
303
+ markupHealingPattern?: OpenAIStreamMarkupHealingPattern;
304
+ reasoningDeltasMayBeCumulative: boolean;
305
+ emptyLengthFinishIsContextError: boolean;
306
+ };
307
+ }
308
+ /**
309
+ * Map a user-facing effort to the provider wire value: explicit compat
310
+ * override first, then the model's baked `thinking.effortMap`, else identity.
311
+ * Shared by the chat-completions/Responses policy resolver and the Codex
312
+ * request transformer.
313
+ */
314
+ export declare function mapOpenAIReasoningEffort(model: Pick<Model, "thinking">, compat: {
315
+ reasoningEffortMap?: Partial<Record<Effort, string>>;
316
+ } | undefined, effort: string): string;
317
+ export declare function resolveOpenAICompatPolicy<TApi extends Api>(model: Model<TApi>, options: ResolveOpenAICompatPolicyOptions): OpenAICompatPolicy;
318
+ export declare function applyChatCompletionsCompatPolicy(params: OpenAICompletionsParams, policy: OpenAICompatPolicy): void;
319
+ export declare function applyChatCompletionsReasoningParams(params: OpenAICompletionsParams, model: Model<"openai-completions">, compat: ResolvedOpenAICompat, options: (ChatCompletionsReasoningOptions & {
320
+ toolChoice?: unknown;
321
+ }) | undefined): void;
322
+ export declare function disableChatCompletionsReasoningForDialect(params: OpenAICompletionsParams, compat: ResolvedOpenAICompat): void;
323
+ /**
324
+ * Provider-specific Chat Completions output clamp.
325
+ *
326
+ * Most OpenAI-compatible endpoints retain the conservative 64k ceiling from
327
+ * {@link resolveOpenAIOutputTokenParam}. Z.AI/GLM-5.2 reasoning and native
328
+ * Moonshot K3 explicitly accept their full advertised model caps, so those
329
+ * routes clamp to `model.maxTokens` instead.
330
+ */
331
+ export declare function resolveOpenAICompletionsOutputClamp(model: Model<"openai-completions">, compat: ResolvedOpenAICompat): number | undefined;
332
+ /**
333
+ * Provider-specific Responses API output clamp.
334
+ *
335
+ * Meta documents a 131,072-token output limit for Muse Spark 1.1, so native
336
+ * Meta requests may use the model's full advertised cap instead of the
337
+ * conservative 64k OpenAI-compatible default.
338
+ */
339
+ export declare function resolveOpenAIResponsesOutputClamp(model: Pick<Model, "provider" | "maxTokens">): number | undefined;
340
+ /**
341
+ * Enable `tool_stream` for Z.AI/GLM-5.2 reasoning models when tools are present
342
+ * (GLM-5.2 streams tool-call arguments incrementally and needs the flag to do so).
343
+ */
344
+ export declare function applyChatCompletionsToolStream(params: OpenAICompletionsParams, model: Model<"openai-completions">, compat: ResolvedOpenAICompat): void;
345
+ export declare function isCompiledGrammarTooLargeStrictError(error: unknown, capturedErrorResponse: CapturedHttpErrorResponse | undefined): boolean;
346
+ interface StrictToolsRetryContext {
347
+ model: OpenAIModelIdentity;
348
+ strictToolsApplied: boolean;
349
+ tools: Tool[] | undefined;
350
+ }
351
+ /** Decide whether an OpenAI-family request should retry once with non-strict tools. */
352
+ export declare function shouldRetryWithoutStrictTools(error: unknown, capturedErrorResponse: CapturedHttpErrorResponse | undefined, context: StrictToolsRetryContext): boolean;
353
+ export declare const OPENAI_RESPONSES_PROGRESS_EVENT_TYPES: ReadonlySet<string>;
354
+ export declare function isOpenAIResponsesProgressEvent(event: unknown): boolean;
355
+ export declare function encodeTextSignatureV1(id: string, phase?: TextSignatureV1["phase"]): string;
356
+ export declare function parseTextSignature(signature: string | undefined): {
357
+ id: string;
358
+ phase?: TextSignatureV1["phase"];
359
+ } | undefined;
360
+ export declare function encodeResponsesToolCallId(callId: string, itemId: string | null | undefined): string;
361
+ export declare function normalizeResponsesToolCallIdForTransform(id: string, model?: Model<Api>, source?: AssistantMessage): string;
362
+ export declare function collectKnownCallIds(messages: ResponseInput): Set<string>;
363
+ /** Scan replay items for call_ids that were originally custom tool calls. */
364
+ export declare function collectCustomCallIds(messages: ResponseInput): Set<string>;
365
+ /** Scan replay items for call_ids that were originally native computer calls. */
366
+ export declare function collectComputerCallIds(messages: ResponseInput): Set<string>;
367
+ /**
368
+ * Convert orphan `function_call_output` / `custom_tool_call_output` items —
369
+ * those whose `call_id` has no matching preceding `function_call` /
370
+ * `custom_tool_call` in the same input — into assistant text notes.
371
+ *
372
+ * The Responses API rejects unpaired outputs with
373
+ * `400 No tool call found for function call output with call_id …`. Orphans
374
+ * sneak in through two paths today:
375
+ *
376
+ * - A previous turn's `providerPayload` snapshot replaces the input array via
377
+ * the `dt: false` splice (see {@link convertConversationMessages}), wiping
378
+ * the matching `function_call` while leaving the matching
379
+ * `function_call_output` queued in a later `toolResult`.
380
+ * - A locally-rejected tool call (argument-validation failure, hook reject,
381
+ * aborted turn before the call streamed) produces a tool result without a
382
+ * `function_call` ever landing in any persisted provider payload.
383
+ *
384
+ * Dropping the result loses information the model needs to recover; sending
385
+ * it as-is 400s the request. Folding it into an assistant `message` preserves
386
+ * the payload (call_id + truncated output) while staying within the Responses
387
+ * input grammar. Matches the behavior of {@link transformRequestBody} in the
388
+ * codex provider — issue #1351 / regression of #472.
389
+ */
390
+ export declare function repairOrphanResponsesToolOutputs(input: ResponseInput): ResponseInput;
391
+ /**
392
+ * Synthesize a placeholder `function_call_output` / `custom_tool_call_output`
393
+ * for every `function_call` / `custom_tool_call` whose `call_id` has no matching
394
+ * output later in the same input. The Responses API rejects an unpaired call
395
+ * with `400 No tool output found for function call …`.
396
+ *
397
+ * Orphan calls surface when the user branches/navigates the session tree to a
398
+ * node that ends on a tool call (the tool-result child is excluded from the
399
+ * reconstructed history) or when a turn is aborted/crashes after the call
400
+ * streamed but before its result persisted. Dropping the call would erase the
401
+ * assistant's action; a placeholder output keeps the call visible so the model
402
+ * can recover (e.g. re-issue the call). Symmetric to
403
+ * {@link repairOrphanResponsesToolOutputs}.
404
+ */
405
+ export declare function repairOrphanResponsesToolCalls(input: ResponseInput): ResponseInput;
406
+ export declare function convertResponsesInputContent(content: string | Array<TextContent | ImageContent>, supportsImages: boolean, supportsImageDetailOriginal: boolean, escapeControlTokens?: boolean): ResponseInputContent[] | undefined;
407
+ export interface BuildResponsesInputOptions<TApi extends Api> {
408
+ model: Model<TApi>;
409
+ context: Context;
410
+ strictResponsesPairing: boolean;
411
+ supportsImageDetailOriginal: boolean;
412
+ systemRole?: "system" | "developer";
413
+ nativeHistory?: {
414
+ replay: boolean;
415
+ filterReasoning: boolean;
416
+ };
417
+ includeThinkingSignatures?: boolean;
418
+ developerStringContent?: boolean;
419
+ repairOrphanOutputs?: boolean;
420
+ /** Preserve assistant message item IDs from text signatures during fallback replay. */
421
+ preserveAssistantMessageIds?: boolean;
422
+ }
423
+ /**
424
+ * Escape reserved Harmony control tokens in the free-text fields of replayed
425
+ * Responses input items: user/developer/system text, tool-result output,
426
+ * assistant message text, and tool-call payloads.
427
+ *
428
+ * Tool-call items are covered deliberately. The original #6913 fix skipped
429
+ * model-owned items on the theory that they carry no client data — but a model
430
+ * legitimately writing *about* Harmony samples `<|channel|>` etc. into its own
431
+ * `function_call.arguments`, and a full-transcript replay (stale or blocked
432
+ * previous_response_id, provider fallback) feeds those bytes back as input,
433
+ * which gpt-5.x reject with invalid_prompt / "Request blocked", permanently
434
+ * poisoning the session. `arguments` is a JSON document, so it uses
435
+ * {@link escapeHarmonyControlTokensInJson} to stay parseable. Reasoning items
436
+ * are left untouched: `encrypted_content` is opaque and plaintext summaries
437
+ * are never rendered back into the prompt.
438
+ *
439
+ * Native history replay pushes stored `providerPayload` items straight onto the
440
+ * wire, bypassing {@link convertResponsesInputContent}; without this a stored
441
+ * `input_text` carrying `<|channel|>analysis` still reaches gpt-5.x raw (#6913).
442
+ * Callers gate on {@link isHarmonyDialectModel}. Items are copied, not mutated.
443
+ */
444
+ export declare function escapeReplayedControlTokens(items: ResponseInput): ResponseInput;
445
+ export declare function buildResponsesInput<TApi extends Api>(options: BuildResponsesInputOptions<TApi>): ResponseInput;
446
+ export declare function convertResponsesAssistantMessage<TApi extends Api>(assistantMsg: AssistantMessage, model: Model<TApi>, msgIndex: number, knownCallIds: Set<string>, includeThinkingSignatures?: boolean, customCallIds?: Set<string>, preserveMessageIds?: boolean, supportsCustomToolCalls?: boolean, customToolWireNameMap?: ReadonlyMap<string, string>, computerCallIds?: Set<string>): ResponseInput;
447
+ /** Appends one tool result while keeping consecutive outputs ahead of its synthetic image messages. */
448
+ export declare function appendResponsesToolResultMessages<TApi extends Api>(messages: ResponseInput, toolResult: ToolResultMessage, model: Model<TApi>, strictResponsesPairing: boolean, supportsImageDetailOriginal: boolean, knownCallIds: ReadonlySet<string>, customCallIds?: ReadonlySet<string>, supportsCustomToolCalls?: boolean, computerCallIds?: ReadonlySet<string>): void;
449
+ /**
450
+ * Per-block accumulation helpers shared by the two Responses decode loops —
451
+ * {@link processResponsesStream} (generic Responses) and the Codex stream
452
+ * handler in `openai-codex-responses.ts`. Each endpoint keeps its own
453
+ * item-routing, terminal handling, and transport bookkeeping; these own only
454
+ * the leaf mutations on an already-resolved open block, so the
455
+ * append/parse/finalize logic lives in exactly one place. The caller passes the
456
+ * `contentIndex` its router resolved (generic uses `output.content.indexOf`;
457
+ * Codex uses the open item's recorded index) so the emitted stream events match
458
+ * each decoder's existing behavior byte-for-byte.
459
+ */
460
+ type ResponsesToolCallBlock = ToolCall & {
461
+ [kStreamingPartialJson]: string;
462
+ [kStreamingLastParseLen]?: number;
463
+ };
464
+ export declare function appendReasoningSummaryPart(item: ResponseReasoningItem, part: ResponseReasoningItem["summary"][number]): void;
465
+ /**
466
+ * Response-global accumulator for the sequential-cutoff summary contract.
467
+ *
468
+ * Summary indices are cumulative across ALL reasoning items in a response:
469
+ * each new reasoning item replays the previous item's last completed section
470
+ * (`.done` at index N-1) before streaming its own, and replay-only items may
471
+ * add nothing new. Folding per item would re-emit every replayed section, so
472
+ * the canonical summary and the emitted text span items and live here.
473
+ */
474
+ export interface SequentialCutoffSummaryState {
475
+ /** Latest full text per response-global summary index. */
476
+ summary: ResponseReasoningItem["summary"];
477
+ /** Canonical summary text already emitted as thinking deltas across all blocks. */
478
+ emitted: string;
479
+ }
480
+ export declare function createSequentialCutoffSummaryState(): SequentialCutoffSummaryState;
481
+ /** Chooses final reasoning text without making sequential-cutoff results disagree with emitted deltas. */
482
+ export declare function finalizeReasoningThinking(item: ResponseReasoningItem, streamedThinking: string, cutoff?: SequentialCutoffSummaryState): string;
483
+ export declare function appendReasoningSummaryTextDelta(item: ResponseReasoningItem, block: ThinkingContent, delta: string, stream: AssistantMessageEventStream, output: AssistantMessage, contentIndex: number): void;
484
+ export declare function appendReasoningSummaryPartDone(item: ResponseReasoningItem, block: ThinkingContent, stream: AssistantMessageEventStream, output: AssistantMessage, contentIndex: number): void;
485
+ /**
486
+ * Applies an atomic `response.reasoning_summary_text.done` snapshot.
487
+ *
488
+ * Sequential-cutoff summary indices are response-global: later reasoning items
489
+ * replay earlier sections, resend the accumulated summary as one part, or
490
+ * complete without new sections. The canonical summary is rebuilt in `state`
491
+ * (spanning items) and only its append-only suffix is emitted into the current
492
+ * block. Divergent corrections stay buffered until finalization so delta
493
+ * consumers never receive suffixes based on unseen replacement text.
494
+ */
495
+ export declare function applyReasoningSummaryDone(state: SequentialCutoffSummaryState, block: ThinkingContent, text: string, summaryIndex: number, stream: AssistantMessageEventStream, output: AssistantMessage, contentIndex: number): void;
496
+ export declare function appendMessageContentPart(item: ResponseOutputMessage, part: ResponseContentPartAddedEvent["part"] | undefined): void;
497
+ export declare function appendMessageTextDelta(item: ResponseOutputMessage, block: TextContent, delta: string, stream: AssistantMessageEventStream, output: AssistantMessage, contentIndex: number, partType: "output_text" | "refusal"): void;
498
+ /** Chooses final message text while treating non-empty terminal content as authoritative. */
499
+ export declare function finalizeMessageText(item: ResponseOutputMessage, streamedText: string): string;
500
+ export declare function accumulateToolCallArgumentsDelta(block: ResponsesToolCallBlock, delta: string, stream: AssistantMessageEventStream, output: AssistantMessage, contentIndex: number): void;
501
+ /**
502
+ * Finalize streamed function-call arguments from the authoritative `.done`
503
+ * payload. The caller owns the `argumentsDone` flag (generic Responses sets it;
504
+ * Codex's block shape has no such field), so this only rewrites `arguments` and
505
+ * drops the transient accumulation fields.
506
+ */
507
+ export declare function finalizeToolCallArgumentsDone(block: ResponsesToolCallBlock, args: string): void;
508
+ export declare function accumulateCustomToolCallInputDelta(block: ResponsesToolCallBlock, delta: string, stream: AssistantMessageEventStream, output: AssistantMessage, contentIndex: number): void;
509
+ export declare function finalizeCustomToolCallInputDone(block: ResponsesToolCallBlock, input: string): void;
510
+ export interface ProcessResponsesStreamOptions {
511
+ onFirstToken?: () => void;
512
+ onOutputItemDone?: (item: ResponseOutputItem) => void;
513
+ /**
514
+ * Called when a terminal `response.completed`, `response.incomplete`, or
515
+ * `response.done` event is successfully processed. Only invoked on the
516
+ * successful-completion path; thrown failure (`response.failed`) and
517
+ * cancellation paths never call this.
518
+ * Used by callers to detect premature stream closure (i.e. the stream ended
519
+ * without a recognized terminal event).
520
+ */
521
+ onCompleted?: () => void;
522
+ /**
523
+ * Caller-requested service tier, used to bill the served tier when the
524
+ * response omits the `service_tier` echo. Only applied for `provider: "openai"`.
525
+ */
526
+ requestServiceTier?: ServiceTier;
527
+ }
528
+ export declare function computerCallMetadata(item: ResponseComputerToolCall): ComputerToolCallMetadata;
529
+ /** Append a native Responses image result and emit its completion event. */
530
+ export declare function appendResponsesImageResult(output: AssistantMessage, stream: AssistantMessageEventStream, result: string): void;
531
+ export declare function processResponsesStream<TApi extends Api>(openaiStream: AsyncIterable<ResponseStreamEvent>, output: AssistantMessage, stream: AssistantMessageEventStream, model: Model<TApi>, options?: ProcessResponsesStreamOptions): Promise<void>;
532
+ export declare function mapOpenAIResponsesStopReason(status: ResponseStatus | undefined): StopReason;
533
+ export declare function hasExecutableIncompleteResponsesToolCalls(output: AssistantMessage): boolean;
534
+ /**
535
+ * Finalize any streamed toolCall block whose `output_item.done` never arrived
536
+ * (lossy proxy, or a terminal event that raced the per-item done): parse the
537
+ * accumulated `partialJson` into authoritative arguments and strip the transient
538
+ * streaming fields so they never persist. Shared by the chat-Responses decoder
539
+ * and the Codex decoder. Closed blocks already cleared these fields, so walking
540
+ * the full content list leaves them untouched.
541
+ */
542
+ export declare function finalizePendingResponsesToolCalls(output: AssistantMessage): void;
543
+ /**
544
+ * Apply the Responses terminal stop-reason invariants shared by the chat-Responses
545
+ * and Codex decoders: a turn that produced tool calls becomes `toolUse`, and a
546
+ * Codex-lineage `end_turn: false` marker pauses the turn so the agent loop
547
+ * re-samples instead of ending. Callers set `output.stopReason` from the wire
548
+ * status first via {@link mapOpenAIResponsesStopReason}.
549
+ */
550
+ export declare function promoteResponsesToolUseStopReason(output: AssistantMessage, endTurn: boolean | undefined, promoteIncompleteToolUse?: boolean): void;
551
+ /** Initial empty `AssistantMessage` that streaming providers accumulate into. */
552
+ export declare function createInitialResponsesAssistantMessage(api: Api, provider: string, modelId: string): AssistantMessage;
553
+ /** Extension fields we add on top of `ResponseCreateParamsStreaming` across the Responses-family providers. */
554
+ export type ResponsesSamplingParamsExtras = {
555
+ top_p?: number;
556
+ top_k?: number;
557
+ min_p?: number;
558
+ presence_penalty?: number;
559
+ repetition_penalty?: number;
560
+ };
561
+ type CommonResponsesParams = ResponseCreateParamsStreaming & ResponsesSamplingParamsExtras;
562
+ type CommonSamplingOptions = Pick<StreamOptions, "temperature" | "topP" | "topK" | "minP" | "presencePenalty" | "repetitionPenalty" | "maxTokens"> & {
563
+ serviceTier?: ServiceTier;
564
+ };
565
+ /**
566
+ * Apply the common `StreamOptions` → Responses sampling-parameter mapping (max output tokens,
567
+ * temperature, top-p/k, min-p, presence/repetition penalties, service tier). Mutates `params`.
568
+ *
569
+ * `max_output_tokens` is suppressed when {@link Model.omitMaxOutputTokens} is `true`, so
570
+ * proxies (notably Ollama) that forward to upstream APIs with an unknown output-token cap
571
+ * can let the upstream apply its own default instead of 400-ing on `maxTokens` values that
572
+ * reflect the model's context window rather than the upstream output limit.
573
+ */
574
+ export declare function applyCommonResponsesSamplingParams<P extends CommonResponsesParams>(params: P, options: CommonSamplingOptions | undefined, model: Pick<Model, "provider" | "api" | "id" | "omitMaxOutputTokens" | "maxTokens"> & {
575
+ compat: Pick<ResolvedOpenAISharedCompat, "supportsSamplingParams">;
576
+ }): void;
577
+ type ReasoningOptions = {
578
+ reasoning?: string;
579
+ reasoningSummary?: "auto" | "detailed" | "concise" | null;
580
+ disableReasoning?: boolean;
581
+ toolChoice?: unknown;
582
+ };
583
+ export interface ApplyResponsesCompatPolicyOptions {
584
+ reasoningSummary?: "auto" | "detailed" | "concise" | null;
585
+ mapEffort?: (effort: string) => string;
586
+ }
587
+ export declare function applyResponsesCompatPolicy<P extends ResponseCreateParamsStreaming>(params: P, policy: OpenAICompatPolicy, options: ApplyResponsesCompatPolicyOptions | undefined): void;
588
+ /**
589
+ * Apply reasoning-related Responses parameters. Default behavior comes from
590
+ * catalog compat; include/omit arguments are explicit adapter-wrapper overrides.
591
+ */
592
+ export declare function applyResponsesReasoningParams<P extends ResponseCreateParamsStreaming>(params: P, model: Model<"openai-responses" | "azure-openai-responses" | "openai-codex-responses">, options: ReasoningOptions | undefined, mapEffort?: (effort: string) => string, includeEncryptedReasoning?: boolean, omitReasoningEffort?: boolean): void;
593
+ /** Populate `output.usage` from a Responses-API `response.usage` payload. Does not invoke `calculateCost`. */
594
+ export declare function populateResponsesUsageFromResponse(output: AssistantMessage, usage: {
595
+ input_tokens?: number | null;
596
+ output_tokens?: number | null;
597
+ total_tokens?: number | null;
598
+ prompt_cache_hit_tokens?: number | null;
599
+ prompt_cache_miss_tokens?: number | null;
600
+ input_tokens_details?: {
601
+ cached_tokens?: number | null;
602
+ cache_write_tokens?: number | null;
603
+ orchestration_input_tokens?: number | null;
604
+ orchestration_input_cached_tokens?: number | null;
605
+ } | null;
606
+ output_tokens_details?: {
607
+ reasoning_tokens?: number | null;
608
+ orchestration_output_tokens?: number | null;
609
+ } | null;
610
+ } | null | undefined): void;
611
+ /**
612
+ * Strict-prefix delta for stateful `previous_response_id` chaining (used by the
613
+ * platform Responses provider and the Codex provider on both transports):
614
+ * returns the input items the current request appends beyond the previous
615
+ * request's input plus the previous response's output items, or null when the
616
+ * request options differ or history mutated (the chain must break). Per-turn
617
+ * `client_metadata` (e.g. rotating turn ids) is excluded from the option
618
+ * comparison; codex-rs excludes it from the same check.
619
+ */
620
+ export declare function buildResponsesDeltaInput<TItem extends ResponseInputItem | InputItem>(previous: {
621
+ input?: TItem[];
622
+ } | undefined, previousResponseItems: readonly TItem[] | undefined, current: {
623
+ input?: TItem[];
624
+ }): TItem[] | null;
@@ -0,0 +1,13 @@
1
+ import type { Api, AssistantMessageEventStream as AssistantMessageEventStreamType, Context, Model, SimpleStreamOptions } from "../types.js";
2
+ /**
3
+ * Stream a turn through an `omp auth-gateway` over the pi-native protocol.
4
+ *
5
+ * The returned {@link AssistantMessageEventStream} receives each parsed
6
+ * `AssistantMessageEvent` verbatim from the gateway; the terminal `done` /
7
+ * `error` event resolves `.result()` automatically via the base class's
8
+ * completion check. Non-streaming consumers just call `.result()` and pay
9
+ * for SSE framing they don't use — that overhead is dominated by provider
10
+ * latency, so we always stream rather than maintaining a parallel
11
+ * non-streaming path.
12
+ */
13
+ export declare function streamPiNative<TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStreamType;