@vib-rato/ai 0.16.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 (525) hide show
  1. package/CHANGELOG.md +3354 -0
  2. package/README.md +1194 -0
  3. package/dist/types/adapter-internals/provider-safety-stop.d.ts +45 -0
  4. package/dist/types/api-registry.d.ts +30 -0
  5. package/dist/types/auth-broker/client.d.ts +80 -0
  6. package/dist/types/auth-broker/index.d.ts +5 -0
  7. package/dist/types/auth-broker/redact.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 +153 -0
  10. package/dist/types/auth-broker/server.d.ts +32 -0
  11. package/dist/types/auth-broker/types.d.ts +132 -0
  12. package/dist/types/auth-broker/wire-schemas.d.ts +555 -0
  13. package/dist/types/auth-gateway/http.d.ts +40 -0
  14. package/dist/types/auth-gateway/index.d.ts +3 -0
  15. package/dist/types/auth-gateway/server.d.ts +70 -0
  16. package/dist/types/auth-gateway/types.d.ts +129 -0
  17. package/dist/types/auth-storage.d.ts +1074 -0
  18. package/dist/types/cli.d.ts +2 -0
  19. package/dist/types/codex-tools.d.ts +4 -0
  20. package/dist/types/context-cap-policy.d.ts +68 -0
  21. package/dist/types/core.d.ts +35 -0
  22. package/dist/types/index.d.ts +55 -0
  23. package/dist/types/model-cache.d.ts +24 -0
  24. package/dist/types/model-manager.d.ts +77 -0
  25. package/dist/types/model-pricing.d.ts +3 -0
  26. package/dist/types/model-retirements.d.ts +6 -0
  27. package/dist/types/model-thinking.d.ts +100 -0
  28. package/dist/types/models.d.ts +21 -0
  29. package/dist/types/openai-completions-compat.d.ts +34 -0
  30. package/dist/types/provider-details.d.ts +24 -0
  31. package/dist/types/provider-models/bundled-references.d.ts +4 -0
  32. package/dist/types/provider-models/descriptors.d.ts +48 -0
  33. package/dist/types/provider-models/google.d.ts +20 -0
  34. package/dist/types/provider-models/index.d.ts +5 -0
  35. package/dist/types/provider-models/ollama.d.ts +7 -0
  36. package/dist/types/provider-models/openai-compat.d.ts +293 -0
  37. package/dist/types/provider-models/special.d.ts +29 -0
  38. package/dist/types/providers/amazon-bedrock.d.ts +60 -0
  39. package/dist/types/providers/anthropic-messages-server-schema.d.ts +450 -0
  40. package/dist/types/providers/anthropic-messages-server.d.ts +17 -0
  41. package/dist/types/providers/anthropic.d.ts +280 -0
  42. package/dist/types/providers/aws-credential-config.d.ts +19 -0
  43. package/dist/types/providers/aws-credentials.d.ts +43 -0
  44. package/dist/types/providers/aws-eventstream.d.ts +38 -0
  45. package/dist/types/providers/aws-sigv4.d.ts +55 -0
  46. package/dist/types/providers/azure-openai-responses.d.ts +22 -0
  47. package/dist/types/providers/composer-discipline.d.ts +32 -0
  48. package/dist/types/providers/cursor/client-version.d.ts +10 -0
  49. package/dist/types/providers/cursor/exec-modern.d.ts +98 -0
  50. package/dist/types/providers/cursor/gen/agent_pb.d.ts +16769 -0
  51. package/dist/types/providers/cursor-pi-args.d.ts +119 -0
  52. package/dist/types/providers/cursor.d.ts +72 -0
  53. package/dist/types/providers/dashscope-token-plan-headers.d.ts +57 -0
  54. package/dist/types/providers/error-message.d.ts +27 -0
  55. package/dist/types/providers/github-copilot-headers.d.ts +40 -0
  56. package/dist/types/providers/gitlab-duo.d.ts +27 -0
  57. package/dist/types/providers/google-auth.d.ts +26 -0
  58. package/dist/types/providers/google-gemini-cli.d.ts +75 -0
  59. package/dist/types/providers/google-gemini-headers.d.ts +43 -0
  60. package/dist/types/providers/google-shared.d.ts +183 -0
  61. package/dist/types/providers/google-types.d.ts +138 -0
  62. package/dist/types/providers/google-vertex.d.ts +11 -0
  63. package/dist/types/providers/google.d.ts +4 -0
  64. package/dist/types/providers/grammar.d.ts +1 -0
  65. package/dist/types/providers/kimi.d.ts +27 -0
  66. package/dist/types/providers/kiro-api-key.d.ts +50 -0
  67. package/dist/types/providers/kiro-codewhisperer.d.ts +11 -0
  68. package/dist/types/providers/mock.d.ts +189 -0
  69. package/dist/types/providers/ollama.d.ts +41 -0
  70. package/dist/types/providers/openai-anthropic-shim.d.ts +31 -0
  71. package/dist/types/providers/openai-bounded-rate-limits.d.ts +3 -0
  72. package/dist/types/providers/openai-chat-server-schema.d.ts +1733 -0
  73. package/dist/types/providers/openai-chat-server.d.ts +16 -0
  74. package/dist/types/providers/openai-codex/constants.d.ts +26 -0
  75. package/dist/types/providers/openai-codex/request-transformer.d.ts +50 -0
  76. package/dist/types/providers/openai-codex/response-handler.d.ts +18 -0
  77. package/dist/types/providers/openai-codex-responses.d.ts +71 -0
  78. package/dist/types/providers/openai-completions-compat.d.ts +6 -0
  79. package/dist/types/providers/openai-completions.d.ts +35 -0
  80. package/dist/types/providers/openai-opencodex-responses.d.ts +10 -0
  81. package/dist/types/providers/openai-request-transform.d.ts +4 -0
  82. package/dist/types/providers/openai-responses-server-schema.d.ts +392 -0
  83. package/dist/types/providers/openai-responses-server.d.ts +17 -0
  84. package/dist/types/providers/openai-responses-shared.d.ts +106 -0
  85. package/dist/types/providers/openai-responses.d.ts +37 -0
  86. package/dist/types/providers/pi-native-client.d.ts +29 -0
  87. package/dist/types/providers/pi-native-server.d.ts +60 -0
  88. package/dist/types/providers/register-builtins.d.ts +59 -0
  89. package/dist/types/providers/synthetic.d.ts +26 -0
  90. package/dist/types/providers/transform-messages.d.ts +33 -0
  91. package/dist/types/providers/vision-guard.d.ts +8 -0
  92. package/dist/types/rate-limit-utils.d.ts +19 -0
  93. package/dist/types/stream.d.ts +45 -0
  94. package/dist/types/types.d.ts +1073 -0
  95. package/dist/types/usage/claude.d.ts +3 -0
  96. package/dist/types/usage/gemini.d.ts +2 -0
  97. package/dist/types/usage/github-copilot.d.ts +7 -0
  98. package/dist/types/usage/google-antigravity.d.ts +2 -0
  99. package/dist/types/usage/grok-cli.d.ts +17 -0
  100. package/dist/types/usage/kimi.d.ts +4 -0
  101. package/dist/types/usage/minimax-code.d.ts +2 -0
  102. package/dist/types/usage/openai-codex.d.ts +3 -0
  103. package/dist/types/usage/shared.d.ts +1 -0
  104. package/dist/types/usage/zai.d.ts +2 -0
  105. package/dist/types/usage.d.ts +264 -0
  106. package/dist/types/utils/abort.d.ts +19 -0
  107. package/dist/types/utils/anthropic-auth.d.ts +39 -0
  108. package/dist/types/utils/block-symbols.d.ts +6 -0
  109. package/dist/types/utils/discovery/antigravity.d.ts +67 -0
  110. package/dist/types/utils/discovery/codex.d.ts +38 -0
  111. package/dist/types/utils/discovery/cursor.d.ts +49 -0
  112. package/dist/types/utils/discovery/gemini.d.ts +25 -0
  113. package/dist/types/utils/discovery/index.d.ts +4 -0
  114. package/dist/types/utils/discovery/openai-compatible.d.ts +81 -0
  115. package/dist/types/utils/event-stream.d.ts +41 -0
  116. package/dist/types/utils/fallback-transport.d.ts +110 -0
  117. package/dist/types/utils/fireworks-model-id.d.ts +10 -0
  118. package/dist/types/utils/foundry.d.ts +11 -0
  119. package/dist/types/utils/h2-fetch.d.ts +22 -0
  120. package/dist/types/utils/http-inspector.d.ts +59 -0
  121. package/dist/types/utils/idle-iterator.d.ts +122 -0
  122. package/dist/types/utils/json-parse.d.ts +98 -0
  123. package/dist/types/utils/oauth/alibaba-token-plan.d.ts +19 -0
  124. package/dist/types/utils/oauth/anthropic.d.ts +41 -0
  125. package/dist/types/utils/oauth/api-key-login.d.ts +38 -0
  126. package/dist/types/utils/oauth/api-key-validation.d.ts +39 -0
  127. package/dist/types/utils/oauth/bizrouter.d.ts +1 -0
  128. package/dist/types/utils/oauth/callback-server.d.ts +80 -0
  129. package/dist/types/utils/oauth/cerebras.d.ts +1 -0
  130. package/dist/types/utils/oauth/cloudflare-ai-gateway.d.ts +18 -0
  131. package/dist/types/utils/oauth/commandcode.d.ts +1 -0
  132. package/dist/types/utils/oauth/cursor.d.ts +15 -0
  133. package/dist/types/utils/oauth/deepinfra.d.ts +1 -0
  134. package/dist/types/utils/oauth/deepseek.d.ts +10 -0
  135. package/dist/types/utils/oauth/firepass.d.ts +1 -0
  136. package/dist/types/utils/oauth/fireworks.d.ts +1 -0
  137. package/dist/types/utils/oauth/fugu.d.ts +1 -0
  138. package/dist/types/utils/oauth/github-copilot.d.ts +38 -0
  139. package/dist/types/utils/oauth/gitlab-duo.d.ts +3 -0
  140. package/dist/types/utils/oauth/glm-zcode.d.ts +71 -0
  141. package/dist/types/utils/oauth/google-antigravity.d.ts +11 -0
  142. package/dist/types/utils/oauth/google-gemini-cli.d.ts +10 -0
  143. package/dist/types/utils/oauth/google-oauth-shared.d.ts +28 -0
  144. package/dist/types/utils/oauth/huggingface.d.ts +19 -0
  145. package/dist/types/utils/oauth/index.d.ts +39 -0
  146. package/dist/types/utils/oauth/kagi.d.ts +17 -0
  147. package/dist/types/utils/oauth/kilo.d.ts +5 -0
  148. package/dist/types/utils/oauth/kimi.d.ts +17 -0
  149. package/dist/types/utils/oauth/kiro.d.ts +71 -0
  150. package/dist/types/utils/oauth/litellm.d.ts +18 -0
  151. package/dist/types/utils/oauth/lm-studio.d.ts +17 -0
  152. package/dist/types/utils/oauth/mara.d.ts +1 -0
  153. package/dist/types/utils/oauth/minimax-code.d.ts +28 -0
  154. package/dist/types/utils/oauth/moonshot.d.ts +1 -0
  155. package/dist/types/utils/oauth/nanogpt.d.ts +1 -0
  156. package/dist/types/utils/oauth/nvidia.d.ts +18 -0
  157. package/dist/types/utils/oauth/ollama-cloud.d.ts +2 -0
  158. package/dist/types/utils/oauth/ollama.d.ts +18 -0
  159. package/dist/types/utils/oauth/openai-codex.d.ts +21 -0
  160. package/dist/types/utils/oauth/opencode.d.ts +18 -0
  161. package/dist/types/utils/oauth/opengateway.d.ts +1 -0
  162. package/dist/types/utils/oauth/openrouter.d.ts +1 -0
  163. package/dist/types/utils/oauth/parallel.d.ts +17 -0
  164. package/dist/types/utils/oauth/perplexity.d.ts +4 -0
  165. package/dist/types/utils/oauth/pkce.d.ts +8 -0
  166. package/dist/types/utils/oauth/qianfan.d.ts +17 -0
  167. package/dist/types/utils/oauth/qwen-portal.d.ts +19 -0
  168. package/dist/types/utils/oauth/sglang.d.ts +16 -0
  169. package/dist/types/utils/oauth/synthetic.d.ts +1 -0
  170. package/dist/types/utils/oauth/tavily.d.ts +17 -0
  171. package/dist/types/utils/oauth/together.d.ts +1 -0
  172. package/dist/types/utils/oauth/types.d.ts +56 -0
  173. package/dist/types/utils/oauth/venice.d.ts +18 -0
  174. package/dist/types/utils/oauth/vercel-ai-gateway.d.ts +18 -0
  175. package/dist/types/utils/oauth/vllm.d.ts +16 -0
  176. package/dist/types/utils/oauth/xai.d.ts +30 -0
  177. package/dist/types/utils/oauth/xiaomi.d.ts +25 -0
  178. package/dist/types/utils/oauth/zai.d.ts +18 -0
  179. package/dist/types/utils/oauth/zenmux.d.ts +1 -0
  180. package/dist/types/utils/overflow.d.ts +14 -0
  181. package/dist/types/utils/parse-bind.d.ts +26 -0
  182. package/dist/types/utils/provider-response.d.ts +6 -0
  183. package/dist/types/utils/provider-safety-stop.d.ts +8 -0
  184. package/dist/types/utils/proxy.d.ts +7 -0
  185. package/dist/types/utils/retry-after.d.ts +3 -0
  186. package/dist/types/utils/retry-budget.d.ts +1 -0
  187. package/dist/types/utils/retry.d.ts +29 -0
  188. package/dist/types/utils/schema/adapt.d.ts +24 -0
  189. package/dist/types/utils/schema/compatibility.d.ts +30 -0
  190. package/dist/types/utils/schema/dereference.d.ts +11 -0
  191. package/dist/types/utils/schema/draft.d.ts +10 -0
  192. package/dist/types/utils/schema/equality.d.ts +4 -0
  193. package/dist/types/utils/schema/fields.d.ts +49 -0
  194. package/dist/types/utils/schema/index.d.ts +14 -0
  195. package/dist/types/utils/schema/json-schema-validator.d.ts +12 -0
  196. package/dist/types/utils/schema/meta-validator.d.ts +2 -0
  197. package/dist/types/utils/schema/normalize.d.ts +93 -0
  198. package/dist/types/utils/schema/root-combinator.d.ts +12 -0
  199. package/dist/types/utils/schema/spill.d.ts +8 -0
  200. package/dist/types/utils/schema/stamps.d.ts +25 -0
  201. package/dist/types/utils/schema/types.d.ts +4 -0
  202. package/dist/types/utils/schema/wire.d.ts +54 -0
  203. package/dist/types/utils/schema/zod-decontaminate.d.ts +31 -0
  204. package/dist/types/utils/sse-debug.d.ts +10 -0
  205. package/dist/types/utils/tool-call-healing.d.ts +80 -0
  206. package/dist/types/utils/tool-choice-capability.d.ts +57 -0
  207. package/dist/types/utils/tool-choice.d.ts +50 -0
  208. package/dist/types/utils/validation.d.ts +17 -0
  209. package/dist/types/utils.d.ts +117 -0
  210. package/package.json +152 -0
  211. package/src/adapter-internals/provider-safety-stop.d.ts +45 -0
  212. package/src/adapter-internals/provider-safety-stop.ts +156 -0
  213. package/src/api-registry.d.ts +30 -0
  214. package/src/api-registry.ts +96 -0
  215. package/src/auth-broker/client.ts +444 -0
  216. package/src/auth-broker/index.ts +5 -0
  217. package/src/auth-broker/redact.ts +39 -0
  218. package/src/auth-broker/refresher.ts +130 -0
  219. package/src/auth-broker/remote-store.ts +1576 -0
  220. package/src/auth-broker/server.ts +764 -0
  221. package/src/auth-broker/types.ts +164 -0
  222. package/src/auth-broker/wire-schemas.ts +261 -0
  223. package/src/auth-gateway/http.ts +198 -0
  224. package/src/auth-gateway/index.ts +3 -0
  225. package/src/auth-gateway/server.ts +1315 -0
  226. package/src/auth-gateway/types.ts +160 -0
  227. package/src/auth-storage.ts +7312 -0
  228. package/src/cli.ts +269 -0
  229. package/src/codex-tools.d.ts +4 -0
  230. package/src/codex-tools.ts +24 -0
  231. package/src/context-cap-policy.d.ts +68 -0
  232. package/src/context-cap-policy.ts +123 -0
  233. package/src/core.ts +44 -0
  234. package/src/index.ts +61 -0
  235. package/src/model-cache.ts +236 -0
  236. package/src/model-manager.ts +744 -0
  237. package/src/model-pricing.d.ts +3 -0
  238. package/src/model-pricing.ts +68 -0
  239. package/src/model-retirements.d.ts +6 -0
  240. package/src/model-retirements.ts +19 -0
  241. package/src/model-thinking.d.ts +100 -0
  242. package/src/model-thinking.ts +1054 -0
  243. package/src/models.d.ts +21 -0
  244. package/src/models.json +94672 -0
  245. package/src/models.json.d.ts +9 -0
  246. package/src/models.ts +126 -0
  247. package/src/openai-completions-compat.d.ts +34 -0
  248. package/src/openai-completions-compat.ts +383 -0
  249. package/src/prompts/composer-bash-policy-recovery.md +1 -0
  250. package/src/prompts/cursor-composer-bash-policy-recovery.md +1 -0
  251. package/src/prompts/cursor-composer-edit-discipline.md +7 -0
  252. package/src/prompts/turn-aborted-guidance.md +4 -0
  253. package/src/provider-details.ts +90 -0
  254. package/src/provider-models/bundled-references.ts +38 -0
  255. package/src/provider-models/descriptors.ts +392 -0
  256. package/src/provider-models/google.ts +92 -0
  257. package/src/provider-models/index.ts +5 -0
  258. package/src/provider-models/ollama.ts +159 -0
  259. package/src/provider-models/openai-compat.ts +2920 -0
  260. package/src/provider-models/special.ts +185 -0
  261. package/src/providers/amazon-bedrock.d.ts +60 -0
  262. package/src/providers/amazon-bedrock.ts +939 -0
  263. package/src/providers/anthropic-messages-server-schema.ts +229 -0
  264. package/src/providers/anthropic-messages-server.ts +839 -0
  265. package/src/providers/anthropic.d.ts +280 -0
  266. package/src/providers/anthropic.ts +4421 -0
  267. package/src/providers/aws-credential-config.d.ts +19 -0
  268. package/src/providers/aws-credential-config.ts +179 -0
  269. package/src/providers/aws-credentials.d.ts +43 -0
  270. package/src/providers/aws-credentials.ts +457 -0
  271. package/src/providers/aws-eventstream.d.ts +38 -0
  272. package/src/providers/aws-eventstream.ts +185 -0
  273. package/src/providers/aws-sigv4.d.ts +55 -0
  274. package/src/providers/aws-sigv4.ts +218 -0
  275. package/src/providers/azure-openai-responses.d.ts +22 -0
  276. package/src/providers/azure-openai-responses.ts +447 -0
  277. package/src/providers/composer-discipline.d.ts +32 -0
  278. package/src/providers/composer-discipline.ts +95 -0
  279. package/src/providers/cursor/client-version.d.ts +10 -0
  280. package/src/providers/cursor/client-version.ts +10 -0
  281. package/src/providers/cursor/exec-modern.d.ts +98 -0
  282. package/src/providers/cursor/exec-modern.ts +497 -0
  283. package/src/providers/cursor/gen/agent_pb.d.ts +16769 -0
  284. package/src/providers/cursor/gen/agent_pb.ts +19780 -0
  285. package/src/providers/cursor/proto/agent.proto +4533 -0
  286. package/src/providers/cursor/proto/buf.gen.yaml +6 -0
  287. package/src/providers/cursor/proto/buf.yaml +17 -0
  288. package/src/providers/cursor-pi-args.d.ts +119 -0
  289. package/src/providers/cursor-pi-args.ts +187 -0
  290. package/src/providers/cursor.d.ts +72 -0
  291. package/src/providers/cursor.ts +3396 -0
  292. package/src/providers/dashscope-token-plan-headers.d.ts +57 -0
  293. package/src/providers/dashscope-token-plan-headers.ts +84 -0
  294. package/src/providers/error-message.d.ts +27 -0
  295. package/src/providers/error-message.ts +21 -0
  296. package/src/providers/github-copilot-headers.d.ts +40 -0
  297. package/src/providers/github-copilot-headers.ts +140 -0
  298. package/src/providers/gitlab-duo.d.ts +27 -0
  299. package/src/providers/gitlab-duo.ts +393 -0
  300. package/src/providers/google-auth.d.ts +26 -0
  301. package/src/providers/google-auth.ts +262 -0
  302. package/src/providers/google-gemini-cli.d.ts +75 -0
  303. package/src/providers/google-gemini-cli.ts +969 -0
  304. package/src/providers/google-gemini-headers.d.ts +43 -0
  305. package/src/providers/google-gemini-headers.ts +100 -0
  306. package/src/providers/google-shared.d.ts +183 -0
  307. package/src/providers/google-shared.ts +1105 -0
  308. package/src/providers/google-types.d.ts +138 -0
  309. package/src/providers/google-types.ts +167 -0
  310. package/src/providers/google-vertex.d.ts +11 -0
  311. package/src/providers/google-vertex.ts +124 -0
  312. package/src/providers/google.d.ts +4 -0
  313. package/src/providers/google.ts +41 -0
  314. package/src/providers/grammar.d.ts +1 -0
  315. package/src/providers/grammar.ts +70 -0
  316. package/src/providers/kimi.d.ts +27 -0
  317. package/src/providers/kimi.ts +52 -0
  318. package/src/providers/kiro-api-key.d.ts +50 -0
  319. package/src/providers/kiro-api-key.ts +786 -0
  320. package/src/providers/kiro-codewhisperer.d.ts +11 -0
  321. package/src/providers/kiro-codewhisperer.ts +600 -0
  322. package/src/providers/mock.ts +526 -0
  323. package/src/providers/ollama.d.ts +41 -0
  324. package/src/providers/ollama.ts +645 -0
  325. package/src/providers/openai-anthropic-shim.d.ts +31 -0
  326. package/src/providers/openai-anthropic-shim.ts +156 -0
  327. package/src/providers/openai-bounded-rate-limits.d.ts +3 -0
  328. package/src/providers/openai-bounded-rate-limits.ts +57 -0
  329. package/src/providers/openai-chat-server-schema.ts +254 -0
  330. package/src/providers/openai-chat-server.ts +724 -0
  331. package/src/providers/openai-codex/constants.d.ts +26 -0
  332. package/src/providers/openai-codex/constants.ts +43 -0
  333. package/src/providers/openai-codex/request-transformer.d.ts +50 -0
  334. package/src/providers/openai-codex/request-transformer.ts +219 -0
  335. package/src/providers/openai-codex/response-handler.d.ts +18 -0
  336. package/src/providers/openai-codex/response-handler.ts +111 -0
  337. package/src/providers/openai-codex-responses.d.ts +71 -0
  338. package/src/providers/openai-codex-responses.ts +3288 -0
  339. package/src/providers/openai-completions-compat.d.ts +6 -0
  340. package/src/providers/openai-completions-compat.ts +6 -0
  341. package/src/providers/openai-completions.d.ts +35 -0
  342. package/src/providers/openai-completions.ts +2294 -0
  343. package/src/providers/openai-opencodex-responses.ts +174 -0
  344. package/src/providers/openai-request-transform.d.ts +4 -0
  345. package/src/providers/openai-request-transform.ts +136 -0
  346. package/src/providers/openai-responses-server-schema.ts +290 -0
  347. package/src/providers/openai-responses-server.ts +1268 -0
  348. package/src/providers/openai-responses-shared.d.ts +106 -0
  349. package/src/providers/openai-responses-shared.ts +1253 -0
  350. package/src/providers/openai-responses.d.ts +37 -0
  351. package/src/providers/openai-responses.ts +989 -0
  352. package/src/providers/pi-native-client.d.ts +29 -0
  353. package/src/providers/pi-native-client.ts +243 -0
  354. package/src/providers/pi-native-server.ts +488 -0
  355. package/src/providers/register-builtins.d.ts +59 -0
  356. package/src/providers/register-builtins.ts +544 -0
  357. package/src/providers/synthetic.d.ts +26 -0
  358. package/src/providers/synthetic.ts +50 -0
  359. package/src/providers/transform-messages.d.ts +33 -0
  360. package/src/providers/transform-messages.ts +408 -0
  361. package/src/providers/vision-guard.d.ts +8 -0
  362. package/src/providers/vision-guard.ts +31 -0
  363. package/src/rate-limit-utils.d.ts +19 -0
  364. package/src/rate-limit-utils.ts +102 -0
  365. package/src/stream.d.ts +45 -0
  366. package/src/stream.ts +1306 -0
  367. package/src/types.d.ts +1073 -0
  368. package/src/types.ts +1305 -0
  369. package/src/usage/claude.ts +449 -0
  370. package/src/usage/gemini.ts +250 -0
  371. package/src/usage/github-copilot.ts +421 -0
  372. package/src/usage/google-antigravity.ts +201 -0
  373. package/src/usage/grok-cli.ts +259 -0
  374. package/src/usage/kimi.ts +285 -0
  375. package/src/usage/minimax-code.ts +31 -0
  376. package/src/usage/openai-codex.ts +503 -0
  377. package/src/usage/shared.ts +10 -0
  378. package/src/usage/zai.ts +247 -0
  379. package/src/usage.ts +190 -0
  380. package/src/utils/abort.d.ts +19 -0
  381. package/src/utils/abort.ts +51 -0
  382. package/src/utils/anthropic-auth.ts +95 -0
  383. package/src/utils/block-symbols.d.ts +6 -0
  384. package/src/utils/block-symbols.ts +11 -0
  385. package/src/utils/discovery/antigravity.ts +275 -0
  386. package/src/utils/discovery/codex.ts +362 -0
  387. package/src/utils/discovery/cursor.ts +388 -0
  388. package/src/utils/discovery/gemini.ts +248 -0
  389. package/src/utils/discovery/index.ts +4 -0
  390. package/src/utils/discovery/openai-compatible.ts +379 -0
  391. package/src/utils/event-stream.d.ts +41 -0
  392. package/src/utils/event-stream.ts +269 -0
  393. package/src/utils/fallback-transport.d.ts +110 -0
  394. package/src/utils/fallback-transport.ts +411 -0
  395. package/src/utils/fireworks-model-id.d.ts +10 -0
  396. package/src/utils/fireworks-model-id.ts +30 -0
  397. package/src/utils/foundry.d.ts +11 -0
  398. package/src/utils/foundry.ts +18 -0
  399. package/src/utils/h2-fetch.ts +60 -0
  400. package/src/utils/http-inspector.d.ts +59 -0
  401. package/src/utils/http-inspector.ts +380 -0
  402. package/src/utils/idle-iterator.d.ts +122 -0
  403. package/src/utils/idle-iterator.ts +410 -0
  404. package/src/utils/json-parse.d.ts +98 -0
  405. package/src/utils/json-parse.ts +607 -0
  406. package/src/utils/oauth/alibaba-token-plan.ts +60 -0
  407. package/src/utils/oauth/anthropic.ts +233 -0
  408. package/src/utils/oauth/api-key-login.ts +98 -0
  409. package/src/utils/oauth/api-key-validation.ts +344 -0
  410. package/src/utils/oauth/bizrouter.ts +15 -0
  411. package/src/utils/oauth/callback-server.d.ts +80 -0
  412. package/src/utils/oauth/callback-server.ts +359 -0
  413. package/src/utils/oauth/cerebras.ts +16 -0
  414. package/src/utils/oauth/cloudflare-ai-gateway.ts +48 -0
  415. package/src/utils/oauth/commandcode.ts +17 -0
  416. package/src/utils/oauth/cursor.ts +157 -0
  417. package/src/utils/oauth/deepinfra.ts +15 -0
  418. package/src/utils/oauth/deepseek.ts +53 -0
  419. package/src/utils/oauth/firepass.ts +24 -0
  420. package/src/utils/oauth/fireworks.ts +15 -0
  421. package/src/utils/oauth/fugu.ts +15 -0
  422. package/src/utils/oauth/github-copilot.d.ts +38 -0
  423. package/src/utils/oauth/github-copilot.ts +362 -0
  424. package/src/utils/oauth/gitlab-duo.ts +123 -0
  425. package/src/utils/oauth/glm-zcode.d.ts +71 -0
  426. package/src/utils/oauth/glm-zcode.ts +433 -0
  427. package/src/utils/oauth/google-antigravity.ts +200 -0
  428. package/src/utils/oauth/google-gemini-cli.ts +256 -0
  429. package/src/utils/oauth/google-oauth-shared.ts +110 -0
  430. package/src/utils/oauth/huggingface.ts +62 -0
  431. package/src/utils/oauth/index.ts +558 -0
  432. package/src/utils/oauth/kagi.ts +47 -0
  433. package/src/utils/oauth/kilo.ts +87 -0
  434. package/src/utils/oauth/kimi.d.ts +17 -0
  435. package/src/utils/oauth/kimi.ts +275 -0
  436. package/src/utils/oauth/kiro.ts +448 -0
  437. package/src/utils/oauth/litellm.ts +47 -0
  438. package/src/utils/oauth/lm-studio.ts +38 -0
  439. package/src/utils/oauth/mara.ts +16 -0
  440. package/src/utils/oauth/minimax-code.ts +78 -0
  441. package/src/utils/oauth/moonshot.ts +16 -0
  442. package/src/utils/oauth/nanogpt.ts +15 -0
  443. package/src/utils/oauth/nvidia.ts +70 -0
  444. package/src/utils/oauth/oauth.html +199 -0
  445. package/src/utils/oauth/ollama-cloud.ts +28 -0
  446. package/src/utils/oauth/ollama.ts +47 -0
  447. package/src/utils/oauth/openai-codex.ts +299 -0
  448. package/src/utils/oauth/opencode.ts +49 -0
  449. package/src/utils/oauth/opengateway.ts +15 -0
  450. package/src/utils/oauth/openrouter.ts +16 -0
  451. package/src/utils/oauth/parallel.ts +46 -0
  452. package/src/utils/oauth/perplexity.ts +225 -0
  453. package/src/utils/oauth/pkce.ts +18 -0
  454. package/src/utils/oauth/qianfan.ts +58 -0
  455. package/src/utils/oauth/qwen-portal.ts +60 -0
  456. package/src/utils/oauth/sglang.ts +42 -0
  457. package/src/utils/oauth/synthetic.ts +15 -0
  458. package/src/utils/oauth/tavily.ts +46 -0
  459. package/src/utils/oauth/together.ts +16 -0
  460. package/src/utils/oauth/types.d.ts +56 -0
  461. package/src/utils/oauth/types.ts +122 -0
  462. package/src/utils/oauth/venice.ts +59 -0
  463. package/src/utils/oauth/vercel-ai-gateway.ts +47 -0
  464. package/src/utils/oauth/vllm.ts +42 -0
  465. package/src/utils/oauth/xai.ts +246 -0
  466. package/src/utils/oauth/xiaomi.ts +199 -0
  467. package/src/utils/oauth/zai.ts +60 -0
  468. package/src/utils/oauth/zenmux.ts +15 -0
  469. package/src/utils/overflow.ts +275 -0
  470. package/src/utils/parse-bind.ts +81 -0
  471. package/src/utils/provider-response.d.ts +6 -0
  472. package/src/utils/provider-response.ts +30 -0
  473. package/src/utils/provider-safety-stop.ts +8 -0
  474. package/src/utils/proxy.d.ts +7 -0
  475. package/src/utils/proxy.ts +652 -0
  476. package/src/utils/retry-after.d.ts +3 -0
  477. package/src/utils/retry-after.ts +110 -0
  478. package/src/utils/retry-budget.d.ts +1 -0
  479. package/src/utils/retry-budget.ts +4 -0
  480. package/src/utils/retry.d.ts +29 -0
  481. package/src/utils/retry.ts +67 -0
  482. package/src/utils/schema/CONSTRAINTS.md +164 -0
  483. package/src/utils/schema/adapt.d.ts +24 -0
  484. package/src/utils/schema/adapt.ts +36 -0
  485. package/src/utils/schema/compatibility.d.ts +30 -0
  486. package/src/utils/schema/compatibility.ts +435 -0
  487. package/src/utils/schema/dereference.d.ts +11 -0
  488. package/src/utils/schema/dereference.ts +98 -0
  489. package/src/utils/schema/draft.d.ts +10 -0
  490. package/src/utils/schema/draft.ts +341 -0
  491. package/src/utils/schema/equality.d.ts +4 -0
  492. package/src/utils/schema/equality.ts +97 -0
  493. package/src/utils/schema/fields.d.ts +49 -0
  494. package/src/utils/schema/fields.ts +190 -0
  495. package/src/utils/schema/index.d.ts +14 -0
  496. package/src/utils/schema/index.ts +14 -0
  497. package/src/utils/schema/json-schema-validator.d.ts +12 -0
  498. package/src/utils/schema/json-schema-validator.ts +577 -0
  499. package/src/utils/schema/meta-validator.d.ts +2 -0
  500. package/src/utils/schema/meta-validator.ts +167 -0
  501. package/src/utils/schema/normalize.d.ts +93 -0
  502. package/src/utils/schema/normalize.ts +1588 -0
  503. package/src/utils/schema/root-combinator.d.ts +12 -0
  504. package/src/utils/schema/root-combinator.ts +143 -0
  505. package/src/utils/schema/spill.d.ts +8 -0
  506. package/src/utils/schema/spill.ts +43 -0
  507. package/src/utils/schema/stamps.d.ts +25 -0
  508. package/src/utils/schema/stamps.ts +97 -0
  509. package/src/utils/schema/types.d.ts +4 -0
  510. package/src/utils/schema/types.ts +11 -0
  511. package/src/utils/schema/wire.d.ts +54 -0
  512. package/src/utils/schema/wire.ts +213 -0
  513. package/src/utils/schema/zod-decontaminate.d.ts +31 -0
  514. package/src/utils/schema/zod-decontaminate.ts +331 -0
  515. package/src/utils/sse-debug.d.ts +10 -0
  516. package/src/utils/sse-debug.ts +289 -0
  517. package/src/utils/tool-call-healing.d.ts +80 -0
  518. package/src/utils/tool-call-healing.ts +298 -0
  519. package/src/utils/tool-choice-capability.d.ts +57 -0
  520. package/src/utils/tool-choice-capability.ts +633 -0
  521. package/src/utils/tool-choice.d.ts +50 -0
  522. package/src/utils/tool-choice.ts +99 -0
  523. package/src/utils/validation.ts +1080 -0
  524. package/src/utils.d.ts +117 -0
  525. package/src/utils.ts +523 -0
@@ -0,0 +1,106 @@
1
+ import type OpenAI from "openai";
2
+ import type { ResponseInput, ResponseInputContent, ResponseOutputItem } from "openai/resources/responses/responses";
3
+ import { type Api, type AssistantMessage, type ImageContent, type Model, type ServiceTier, type StopReason, type StreamOptions, type TextContent, type TextSignatureV1, type ToolCall, type ToolResultMessage } from "../types";
4
+ import type { AssistantMessageEventStream } from "../utils/event-stream";
5
+ export declare function isOpenAIResponsesProgressEvent(event: unknown): boolean;
6
+ export declare function encodeTextSignatureV1(id: string, phase?: TextSignatureV1["phase"]): string;
7
+ export declare function parseTextSignature(signature: string | undefined): {
8
+ id: string;
9
+ phase?: TextSignatureV1["phase"];
10
+ } | undefined;
11
+ export declare function encodeResponsesToolCallId(callId: string, itemId: string | null | undefined): string;
12
+ export declare function normalizeResponsesToolCallIdForTransform(id: string, model?: Model<Api>, source?: AssistantMessage): string;
13
+ export declare function collectKnownCallIds(messages: ResponseInput): Set<string>;
14
+ /** Scan replay items for call_ids that were originally custom tool calls. */
15
+ export declare function collectCustomCallIds(messages: ResponseInput): Set<string>;
16
+ /**
17
+ * Convert orphan `function_call_output` / `custom_tool_call_output` items —
18
+ * those whose `call_id` has no matching preceding `function_call` /
19
+ * `custom_tool_call` in the same input — into assistant text notes.
20
+ *
21
+ * The Responses API rejects unpaired outputs with
22
+ * `400 No tool call found for function call output with call_id …`. Orphans
23
+ * sneak in through two paths today:
24
+ *
25
+ * - A previous turn's `providerPayload` snapshot replaces the input array via
26
+ * the `dt: false` splice (see {@link convertConversationMessages}), wiping
27
+ * the matching `function_call` while leaving the matching
28
+ * `function_call_output` queued in a later `toolResult`.
29
+ * - A locally-rejected tool call (argument-validation failure, hook reject,
30
+ * aborted turn before the call streamed) produces a tool result without a
31
+ * `function_call` ever landing in any persisted provider payload.
32
+ *
33
+ * Dropping the result loses information the model needs to recover; sending
34
+ * it as-is 400s the request. Folding it into an assistant `message` preserves
35
+ * the payload (call_id + truncated output) while staying within the Responses
36
+ * input grammar. Matches the behavior of {@link transformRequestBody} in the
37
+ * OpenAI code backend provider — issue #1351 / regression of #472.
38
+ */
39
+ export declare function repairOrphanResponsesToolOutputs(input: ResponseInput): ResponseInput;
40
+ export declare function convertResponsesInputContent(content: string | Array<TextContent | ImageContent>, supportsImages: boolean): ResponseInputContent[] | undefined;
41
+ export declare function convertResponsesAssistantMessage<TApi extends Api>(assistantMsg: AssistantMessage, model: Model<TApi>, msgIndex: number, knownCallIds: Set<string>, includeThinkingSignatures?: boolean, customCallIds?: Set<string>): ResponseInput;
42
+ export declare function appendResponsesToolResultMessages<TApi extends Api>(messages: ResponseInput, toolResults: readonly ToolResultMessage[], model: Model<TApi>, strictResponsesPairing: boolean, knownCallIds: ReadonlySet<string>, customCallIds?: ReadonlySet<string>): void;
43
+ export interface ProcessResponsesStreamOptions {
44
+ onFirstToken?: () => void;
45
+ onOutputItemDone?: (item: ResponseOutputItem) => void;
46
+ }
47
+ export declare function processResponsesStream<TApi extends Api>(openaiStream: AsyncIterable<OpenAI.Responses.ResponseStreamEvent>, output: AssistantMessage, stream: AssistantMessageEventStream, model: Model<TApi>, options?: ProcessResponsesStreamOptions): Promise<void>;
48
+ /**
49
+ * Mark tool-call blocks left incomplete by a length-truncated response so the
50
+ * agent loop rejects them instead of executing a best-effort partial parse.
51
+ *
52
+ * The universal signal is finalization: a call that never received its terminal
53
+ * `output_item.done` (passed in via `isFinalized`) was cut off mid-arguments.
54
+ * This covers both JSON function calls and raw-input custom tools without
55
+ * mis-flagging a *completed* custom tool whose raw input is not valid JSON. As a
56
+ * defensive secondary, a finalized JSON function call whose buffered arguments
57
+ * still don't parse (e.g. a misbehaving relay) is flagged too. No-op unless the
58
+ * turn stopped for length.
59
+ *
60
+ * Shared by both Responses providers (`openai-responses`, `openai-codex-responses`).
61
+ */
62
+ export declare function flagTruncatedToolCalls(output: AssistantMessage, stopReason: StopReason, isFinalized: (block: ToolCall) => boolean): void;
63
+ export declare function mapOpenAIResponsesStopReason(status: OpenAI.Responses.ResponseStatus | undefined): StopReason;
64
+ /** Initial empty `AssistantMessage` that streaming providers accumulate into. */
65
+ export declare function createInitialResponsesAssistantMessage(api: Api, provider: string, modelId: string): AssistantMessage;
66
+ /** Extension fields we add on top of `ResponseCreateParamsStreaming` across the Responses-family providers. */
67
+ export type ResponsesSamplingParamsExtras = {
68
+ top_p?: number;
69
+ top_k?: number;
70
+ min_p?: number;
71
+ presence_penalty?: number;
72
+ repetition_penalty?: number;
73
+ };
74
+ type CommonResponsesParams = OpenAI.Responses.ResponseCreateParamsStreaming & ResponsesSamplingParamsExtras;
75
+ type CommonSamplingOptions = Pick<StreamOptions, "temperature" | "topP" | "topK" | "minP" | "presencePenalty" | "repetitionPenalty" | "maxTokens"> & {
76
+ serviceTier?: ServiceTier;
77
+ };
78
+ /**
79
+ * Apply the common `StreamOptions` → Responses sampling-parameter mapping (max output tokens,
80
+ * temperature, top-p/k, min-p, presence/repetition penalties, service tier). Mutates `params`.
81
+ */
82
+ export declare function applyCommonResponsesSamplingParams<P extends CommonResponsesParams>(params: P, options: CommonSamplingOptions | undefined, provider: string, supportsServiceTier?: boolean): void;
83
+ type ReasoningOptions = {
84
+ reasoning?: string;
85
+ reasoningSummary?: "auto" | "detailed" | "concise" | null;
86
+ };
87
+ /**
88
+ * Apply reasoning-related Responses parameters: enable encrypted reasoning content for replay,
89
+ * set effort/summary when requested, and otherwise inject the GPT-5 "Juice: 0" no-reasoning hack.
90
+ * Mutates `params` and may push a developer message into `messages`.
91
+ */
92
+ export declare function applyResponsesReasoningParams<P extends OpenAI.Responses.ResponseCreateParamsStreaming>(params: P, model: Model<Api>, options: ReasoningOptions | undefined, messages: ResponseInput, mapEffort?: (effort: string) => string): void;
93
+ /** Populate `output.usage` from a Responses-API `response.usage` payload. Does not invoke `calculateCost`. */
94
+ export declare function populateResponsesUsageFromResponse(output: AssistantMessage, usage: {
95
+ input_tokens?: number | null;
96
+ output_tokens?: number | null;
97
+ total_tokens?: number | null;
98
+ input_tokens_details?: {
99
+ cached_tokens?: number | null;
100
+ cache_write_tokens?: number | null;
101
+ } | null;
102
+ output_tokens_details?: {
103
+ reasoning_tokens?: number | null;
104
+ } | null;
105
+ } | null | undefined): void;
106
+ export {};
@@ -0,0 +1,37 @@
1
+ import type { Tool as OpenAITool } from "openai/resources/responses/responses";
2
+ import { type AssistantMessage, type Model, type ServiceTier, type StreamFunction, type StreamOptions, type Tool, type ToolChoice } from "../types";
3
+ import { type OpenAIResponsesToolChoice } from "../utils/tool-choice";
4
+ export declare function normalizeOpenAIResponsesPromptCacheKey(sessionId: string | undefined): string | undefined;
5
+ export interface OpenAIResponsesOptions extends StreamOptions {
6
+ reasoning?: "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
7
+ reasoningSummary?: "auto" | "detailed" | "concise" | null;
8
+ serviceTier?: ServiceTier;
9
+ toolChoice?: ToolChoice;
10
+ /**
11
+ * Enforce strict tool call/result pairing when building Responses API inputs.
12
+ * Azure OpenAI and GitHub Copilot Responses paths require tool results to match prior tool calls.
13
+ */
14
+ strictResponsesPairing?: boolean;
15
+ }
16
+ /** Test seam: the provider base URL as resolved from trusted env. */
17
+ export declare function resolveOpenAIProviderBaseUrlForTest(baseUrl: string | undefined, authCredentialType: "api_key" | "oauth" | undefined): string;
18
+ export declare function isOpenCodeGoEmptyCompletedResponse(model: Model<"openai-responses">, output: AssistantMessage, nativeOutputItemCount: number): boolean;
19
+ /**
20
+ * Generate function for OpenAI Responses API
21
+ */
22
+ export declare const streamOpenAIResponses: StreamFunction<"openai-responses">;
23
+ export declare function supportsDeveloperRole(modelOrBaseUrl: Pick<Model, "provider" | "baseUrl"> | string): boolean;
24
+ /**
25
+ * Whether this model should get the OpenAI custom-tool grammar variant
26
+ * for `apply_patch`. The generated model catalog sets
27
+ * `model.applyPatchToolType` for first-party GPT-5 Responses models; this
28
+ * runtime path only consumes that metadata.
29
+ * @internal Exported for tests.
30
+ */
31
+ export declare function supportsFreeformApplyPatch(model: Model<"openai-responses">): boolean;
32
+ /** @internal Exported for tests. */
33
+ export declare function mapOpenAIResponsesToolChoiceForTools(choice: ToolChoice | undefined, tools: Tool[], model: Model<"openai-responses">): OpenAIResponsesToolChoice;
34
+ /** @internal Exported for tests. */
35
+ export declare function resolveReservedToolNames(model: Model<"openai-responses">): readonly string[];
36
+ /** @internal Exported for tests. */
37
+ export declare function convertTools(tools: Tool[], strictMode: boolean, model: Model<"openai-responses">): OpenAITool[];
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Client half of the pi-native auth-gateway protocol.
3
+ *
4
+ * Dispatches a {@link streamSimple}-shaped request to an `vib auth-gateway`
5
+ * via `POST /v1/pi/stream`, reads the SSE event stream back, and pushes the
6
+ * parsed events into a local {@link AssistantMessageEventStream} — the same
7
+ * stream type every other provider client produces. Callers downstream of
8
+ * `streamSimple` cannot tell whether the events came from a real provider
9
+ * SDK or from a gateway hop; they consume `AssistantMessageEvent`s either
10
+ * way.
11
+ *
12
+ * Activated when a {@link Model} has `transport: "pi-native"` set; the
13
+ * dispatch hook lives in `streamSimple()` (see `../stream.ts`). Used by
14
+ * containerized Vibrato deployments that route every LLM call through a
15
+ * credential-holding sidecar so the container stays credential-free.
16
+ */
17
+ import type { Api, AssistantMessageEventStream as AssistantMessageEventStreamType, Context, Model, SimpleStreamOptions } from "../types";
18
+ /**
19
+ * Stream a turn through an `vib auth-gateway` over the pi-native protocol.
20
+ *
21
+ * The returned {@link AssistantMessageEventStream} receives each parsed
22
+ * `AssistantMessageEvent` verbatim from the gateway; the terminal `done` /
23
+ * `error` event resolves `.result()` automatically via the base class's
24
+ * completion check. Non-streaming consumers just call `.result()` and pay
25
+ * for SSE framing they don't use — that overhead is dominated by provider
26
+ * latency, so we always stream rather than maintaining a parallel
27
+ * non-streaming path.
28
+ */
29
+ export declare function streamPiNative<TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStreamType;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Pi-native wire format for the auth-gateway.
3
+ *
4
+ * Where the OpenAI / Anthropic / Responses route modules translate foreign
5
+ * wire shapes through pi-ai's canonical {@link Context}, this module accepts
6
+ * the canonical shape *directly* — for clients that already speak pi-ai
7
+ * (containerized Vibrato deployments and sidecar auth gateways).
8
+ * Skipping the wire-format → Context → wire-format round-trip cuts
9
+ * per-request CPU but, more importantly, avoids the quantization that those
10
+ * translations impose on first-class pi-ai fields (service tier, cache
11
+ * markers, thinking budgets, tool-choice variants, …).
12
+ *
13
+ * The streaming wire is {@link AssistantMessageEvent} serialized as SSE. Public
14
+ * projections omit private raw reasoning and serialized Responses reasoning
15
+ * signatures while preserving provider-displayable summaries and genuine opaque
16
+ * signatures. Including `partial: AssistantMessage` on every delta is O(N²) in
17
+ * turn length on the wire — acceptable for the loopback / sidecar topology this
18
+ * transport is designed for; provider latency dominates the actual cost.
19
+ *
20
+ * Endpoint contract:
21
+ * POST /v1/pi/stream
22
+ * body: { modelId, context, options?, stream? } // `stream` defaults to true
23
+ * 200 SSE: stream of `AssistantMessageEvent` (terminated by `data: [DONE]`)
24
+ * 200 JSON (stream=false): { message: AssistantMessage }
25
+ * 4xx/5xx: { error: { type, message } }
26
+ */
27
+ import type { AssistantMessageEventStream, Context, SimpleStreamOptions } from "../types";
28
+ export interface PiNativeParsedRequest {
29
+ modelId: string;
30
+ context: Context;
31
+ options: SimpleStreamOptions;
32
+ stream: boolean;
33
+ }
34
+ /**
35
+ * Parse a pi-native request body. Validation is intentionally minimal — only
36
+ * the shape the gateway itself reads is checked (`modelId`, `context.messages`
37
+ * array, options is an object). Everything downstream is the canonical pi-ai
38
+ * type surface; mis-shaped values surface as a `502 upstream_error` from
39
+ * `streamSimple` rather than being re-validated here.
40
+ *
41
+ * Accepts both `{ modelId: string }` and `{ model: { id: string } }` so the
42
+ * existing `streamProxy` client (which sends the full Model object) can target
43
+ * the gateway with only a URL swap.
44
+ */
45
+ export declare function parseRequest(body: unknown, _headers?: Headers): PiNativeParsedRequest;
46
+ /**
47
+ * Ship only public-safe {@link AssistantMessageEvent} projections. Unknown
48
+ * thinking blocks remain buffered until their terminal partial establishes that
49
+ * the provider-native block is safe; raw and mixed blocks never reach SSE.
50
+ */
51
+ export declare function encodeStream(events: AssistantMessageEventStream): ReadableStream<Uint8Array>;
52
+ /**
53
+ * Pi-native error envelope:
54
+ * `{ error: { type, message } }`
55
+ *
56
+ * Mirrors OpenAI's outer shape (which clients/SDKs already parse) without the
57
+ * provider-specific status taxonomy — pi-native callers consume `type`
58
+ * directly.
59
+ */
60
+ export declare function formatError(status: number, type: string, message: string): Response;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Lazy provider module loading.
3
+ *
4
+ * Each provider module is loaded only when its stream function is first called.
5
+ * This avoids eagerly importing heavy SDK dependencies (e.g., @anthropic-ai/sdk,
6
+ * openai) at startup. The loaded module promise is cached so subsequent calls
7
+ * reuse the same import.
8
+ *
9
+ * stream.ts imports its provider stream functions from this module (see the
10
+ * lazy wrappers below), so this file IS the main streaming path's provider
11
+ * loader: heavy SDKs stay out of the CLI startup parse graph.
12
+ */
13
+ import type { Api, AssistantMessageEventStream, Context, Model, OptionsForApi } from "../types";
14
+ import { AssistantMessageEventStream as EventStreamImpl } from "../utils/event-stream";
15
+ import type { BedrockOptions } from "./amazon-bedrock";
16
+ /**
17
+ * Lazy runtime descriptor for a built-in provider implementation.
18
+ *
19
+ * The registry stores descriptors with an erased module type because each
20
+ * provider's stream options are intentionally different. Callers narrow the
21
+ * loaded module at the single API dispatch boundary instead of forcing
22
+ * distributive variance through the collection type.
23
+ */
24
+ export interface ProviderRuntimeDescriptor<TApi extends Api = Api, TModule = unknown> {
25
+ readonly api: TApi;
26
+ readonly load: () => Promise<TModule>;
27
+ }
28
+ interface BedrockProviderModule {
29
+ streamBedrock: (model: Model<"bedrock-converse-stream">, context: Context, options: BedrockOptions) => AssistantMessageEventStream;
30
+ }
31
+ export declare function setBedrockProviderModule(module: BedrockProviderModule): void;
32
+ /**
33
+ * Resolves the first-event timeout fallback for the outer lazy-stream watchdog.
34
+ * A configured wrapper-specific fallback (from `LazyStreamLimits`) always wins;
35
+ * otherwise providers known to have slow first events use the same centralized
36
+ * fallback as their inner provider-level watchdog. Returns `undefined` for
37
+ * providers that should use the shared default.
38
+ */
39
+ export declare function resolveLazyStreamFirstEventFallbackMs(provider: string, configuredFallbackMs?: number): number | undefined;
40
+ /**
41
+ * Lazy provider descriptors used by core consumers that need to inspect or
42
+ * prewarm a provider without importing its implementation at startup.
43
+ */
44
+ export declare const PROVIDER_RUNTIME_DESCRIPTORS: readonly ProviderRuntimeDescriptor<Api, unknown>[];
45
+ /** Return the lazy descriptor for a built-in API, if one is registered. */
46
+ export declare function getProviderRuntimeDescriptor<TApi extends Api>(api: TApi): ProviderRuntimeDescriptor<TApi, unknown> | undefined;
47
+ export declare const streamAnthropic: (model: Model<"anthropic-messages">, context: Context, options: OptionsForApi<"anthropic-messages">, onStreamCreated?: () => void) => EventStreamImpl;
48
+ export declare const streamAzureOpenAIResponses: (model: Model<"azure-openai-responses">, context: Context, options: OptionsForApi<"azure-openai-responses">, onStreamCreated?: () => void) => EventStreamImpl;
49
+ export declare const streamGoogle: (model: Model<"google-generative-ai">, context: Context, options: OptionsForApi<"google-generative-ai">, onStreamCreated?: () => void) => EventStreamImpl;
50
+ export declare const streamGoogleGeminiCli: (model: Model<"google-gemini-cli">, context: Context, options: OptionsForApi<"google-gemini-cli">, onStreamCreated?: () => void) => EventStreamImpl;
51
+ export declare const streamGoogleVertex: (model: Model<"google-vertex">, context: Context, options: OptionsForApi<"google-vertex">, onStreamCreated?: () => void) => EventStreamImpl;
52
+ export declare const streamOpenAICodexResponses: (model: Model<"openai-codex-responses">, context: Context, options: OptionsForApi<"openai-codex-responses">, onStreamCreated?: () => void) => EventStreamImpl;
53
+ export declare const streamOpenAICompletions: (model: Model<"openai-completions">, context: Context, options: OptionsForApi<"openai-completions">, onStreamCreated?: () => void) => EventStreamImpl;
54
+ export declare const streamOpenAIResponses: (model: Model<"openai-responses">, context: Context, options: OptionsForApi<"openai-responses">, onStreamCreated?: () => void) => EventStreamImpl;
55
+ export declare const streamCursor: (model: Model<"cursor-agent">, context: Context, options: OptionsForApi<"cursor-agent">, onStreamCreated?: () => void) => EventStreamImpl;
56
+ export declare const streamOllama: (model: Model<"ollama-chat">, context: Context, options: OptionsForApi<"ollama-chat">, onStreamCreated?: () => void) => EventStreamImpl;
57
+ export declare const streamBedrock: (model: Model<"bedrock-converse-stream">, context: Context, options: OptionsForApi<"bedrock-converse-stream">, onStreamCreated?: () => void) => EventStreamImpl;
58
+ export declare const streamKiroCodeWhisperer: (model: Model<"kiro-codewhisperer-stream">, context: Context, options: OptionsForApi<"kiro-codewhisperer-stream">, onStreamCreated?: () => void) => EventStreamImpl;
59
+ export {};
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Synthetic provider - wraps OpenAI or Anthropic API based on format setting.
3
+ *
4
+ * Synthetic offers both OpenAI-compatible and Anthropic-compatible APIs:
5
+ * - OpenAI: https://api.synthetic.new/openai/v1/chat/completions
6
+ * - Anthropic: https://api.synthetic.new/anthropic/v1/messages
7
+ *
8
+ * @see https://dev.synthetic.new/docs/api/overview
9
+ */
10
+ import type { Api, Context, Model } from "../types";
11
+ import type { AssistantMessageEventStream } from "../utils/event-stream";
12
+ import { type OpenAIAnthropicApiFormat, type OpenAIAnthropicShimOptions } from "./openai-anthropic-shim";
13
+ export type SyntheticApiFormat = OpenAIAnthropicApiFormat;
14
+ export interface SyntheticOptions extends OpenAIAnthropicShimOptions {
15
+ /** API format: "openai" or "anthropic". Default: "openai" */
16
+ format?: SyntheticApiFormat;
17
+ }
18
+ /**
19
+ * Stream from Synthetic, routing to either OpenAI or Anthropic API based on format.
20
+ * Returns synchronously like other providers - async processing happens internally.
21
+ */
22
+ export declare function streamSynthetic(model: Model<"openai-completions">, context: Context, options?: SyntheticOptions): AssistantMessageEventStream;
23
+ /**
24
+ * Check if a model is a Synthetic model.
25
+ */
26
+ export declare function isSyntheticModel(model: Model<Api>): boolean;
@@ -0,0 +1,33 @@
1
+ import type { Api, AssistantMessage, Message, Model } from "../types";
2
+ /**
3
+ * Normalize tool call ID for cross-provider compatibility.
4
+ * OpenAI Responses API generates IDs that are 450+ chars with special characters like `|`.
5
+ * Anthropic APIs require IDs matching ^[a-zA-Z0-9_-]+$ (max 64 chars).
6
+ *
7
+ * For aborted/errored turns, this function:
8
+ * - Preserves tool call structure (unlike converting to text summaries)
9
+ * - Injects synthetic "aborted" tool results
10
+ * - Adds a <turn-aborted> guidance marker for the model
11
+ */
12
+ /**
13
+ * Detect directly adjacent private thinking blocks inside one assistant message's
14
+ * content. `thinking` and `redacted_thinking` are one adjacency class: the
15
+ * Anthropic wire contract rejects a replayed assistant turn where two such blocks
16
+ * sit next to each other with no intervening `tool_use`/`text` block (#4416).
17
+ *
18
+ * This is a pure, allocation-free predicate used by defense-in-depth diagnostics
19
+ * (issue #4443): the write-time transcript assertion (coding-agent persistence)
20
+ * and the stream-assembler SSE diagnostic (anthropic stream completion). It never
21
+ * inspects block payloads — only the block-type sequence — so it cannot leak
22
+ * thinking text, signatures, or credentials.
23
+ *
24
+ * Blocks separated by any non-private block (`tool_use`, `text`, …) are ordinary
25
+ * interleaved-thinking shape and return `false`.
26
+ */
27
+ export declare function hasAdjacentPrivateThinkingBlocks(content: {
28
+ type: string;
29
+ }[]): boolean;
30
+ export declare function transformMessages<TApi extends Api>(messages: Message[], model: Model<TApi>, normalizeToolCallId?: (id: string, model: Model<TApi>, source: AssistantMessage) => string, options?: {
31
+ repairLatestAssistantThinking?: boolean;
32
+ repairAllAssistantThinking?: boolean;
33
+ }): Message[];
@@ -0,0 +1,8 @@
1
+ import type { ImageContent, TextContent } from "../types";
2
+ export declare const NON_VISION_IMAGE_PLACEHOLDER = "[image omitted: model does not support vision]";
3
+ export declare function partitionVisionContent(content: ReadonlyArray<TextContent | ImageContent>, supportsImages: boolean): {
4
+ textBlocks: TextContent[];
5
+ imageBlocks: ImageContent[];
6
+ omittedImages: boolean;
7
+ };
8
+ export declare function joinTextWithImagePlaceholder(text: string, omittedImages: boolean): string;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Rate limit reason classification and backoff calculation utilities.
3
+ * Ported from opencode-antigravity-auth plugin for consistency.
4
+ */
5
+ export type RateLimitReason = "QUOTA_EXHAUSTED" | "RATE_LIMIT_EXCEEDED" | "MODEL_CAPACITY_EXHAUSTED" | "SERVER_ERROR" | "UNKNOWN";
6
+ /**
7
+ * Classify a rate-limit error message into a reason category.
8
+ * Priority order: MODEL_CAPACITY > RATE_LIMIT > QUOTA > SERVER_ERROR > UNKNOWN.
9
+ *
10
+ * "resource exhausted" maps to MODEL_CAPACITY (transient, short wait)
11
+ * "quota exceeded" maps to QUOTA_EXHAUSTED (long wait, switch account)
12
+ */
13
+ export declare function parseRateLimitReason(errorMessage: string): RateLimitReason;
14
+ /**
15
+ * Calculate backoff delay in ms for a given rate limit reason.
16
+ * MODEL_CAPACITY gets jitter to prevent thundering herd.
17
+ */
18
+ export declare function calculateRateLimitBackoffMs(reason: RateLimitReason): number;
19
+ export declare function isUsageLimitError(errorMessage: string): boolean;
@@ -0,0 +1,45 @@
1
+ import type { Effort } from "./model-thinking";
2
+ import type { AnthropicOptions } from "./providers/anthropic";
3
+ import type { Api, AssistantMessage, Context, Model, OptionsForApi, SimpleStreamOptions, ToolChoice } from "./types";
4
+ import { AssistantMessageEventStream } from "./utils/event-stream";
5
+ /**
6
+ * Get API key for provider from known environment variables, e.g. OPENAI_API_KEY.
7
+ *
8
+ * Provider authentication intentionally excludes cwd/.env values. Project dotenv files are
9
+ * loaded into $env for app/tool execution, but must not silently fund Vibrato model requests.
10
+ */
11
+ export declare function getEnvApiKey(provider: string): string | undefined;
12
+ /**
13
+ * Enumerate every provider that has an env-var fallback for `getEnvApiKey`.
14
+ * Used by `vib auth-broker migrate --include-env` to discover env-sourced keys
15
+ * that should be uploaded to the broker.
16
+ */
17
+ export declare function listProvidersWithEnvKey(): string[];
18
+ /**
19
+ * Provider-specific credential guidance appended to "no credential" errors.
20
+ *
21
+ * Headless Vibrato has no interactive `/login` TUI, so a bare "No API key" /
22
+ * "No credentials" error left users — OpenCode Go subscribers especially
23
+ * (#755) — unsure what signal Vibrato actually reads. OpenCode subscriptions are
24
+ * themselves API keys, so this names the env var Vibrato reads for the provider,
25
+ * warns that a project `.env` is intentionally ignored for provider
26
+ * credentials, and points OpenCode users at one-time interactive CLI credential capture.
27
+ *
28
+ * Returns an empty string when the provider has no env-var key and no special
29
+ * handling, so callers can append it unconditionally.
30
+ */
31
+ export declare function formatProviderCredentialHint(provider: string): string;
32
+ export declare function streamFromLazyImport(createInner: () => Promise<AssistantMessageEventStream>, signal?: AbortSignal, onStreamCreated?: () => void): AssistantMessageEventStream;
33
+ /**
34
+ * Build an actionable "missing API key" error for a provider, used by the
35
+ * low-level `stream`/`complete` entry points (#755).
36
+ */
37
+ export declare function formatMissingApiKeyError(provider: string): string;
38
+ export declare function stream<TApi extends Api>(model: Model<TApi>, context: Context, options?: OptionsForApi<TApi>, onStreamCreated?: () => void): AssistantMessageEventStream;
39
+ export declare function complete<TApi extends Api>(model: Model<TApi>, context: Context, options?: OptionsForApi<TApi>): Promise<AssistantMessage>;
40
+ export declare function streamSimple<TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream;
41
+ export declare function completeSimple<TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions): Promise<AssistantMessage>;
42
+ export declare const OUTPUT_FALLBACK_BUFFER = 4000;
43
+ export declare const ANTHROPIC_THINKING: Record<Effort, number>;
44
+ export declare function mapAnthropicToolChoice(choice?: ToolChoice): AnthropicOptions["toolChoice"];
45
+ export declare function resolveDefaultRequestMaxTokens<TApi extends Api>(model: Model<TApi>, requested?: number): number;