@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
package/package.json ADDED
@@ -0,0 +1,152 @@
1
+ {
2
+ "type": "module",
3
+ "name": "@vib-rato/ai",
4
+ "version": "0.16.0",
5
+ "description": "Unified LLM API with automatic model discovery and provider configuration",
6
+ "homepage": "https://github.com/Keonho-Chu/Vibrato",
7
+ "author": "Yeachan-Heo and Vibrato Contributors",
8
+ "license": "MIT",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/Keonho-Chu/Vibrato.git",
12
+ "directory": "packages/ai"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/Keonho-Chu/Vibrato/issues"
16
+ },
17
+ "keywords": [
18
+ "ai",
19
+ "llm",
20
+ "openai",
21
+ "anthropic",
22
+ "gemini",
23
+ "unified",
24
+ "api"
25
+ ],
26
+ "main": "./src/index.ts",
27
+ "types": "./dist/types/index.d.ts",
28
+ "bin": {
29
+ "pi-ai": "./src/cli.ts"
30
+ },
31
+ "scripts": {
32
+ "check": "biome check . && bun run check:types",
33
+ "check:types": "tsc -p tsconfig.json --noEmit",
34
+ "lint": "biome lint .",
35
+ "test": "bun test",
36
+ "fix": "biome check --write --unsafe .",
37
+ "fmt": "biome format --write .",
38
+ "generate-models": "bun scripts/generate-models.ts"
39
+ },
40
+ "dependencies": {
41
+ "@anthropic-ai/sdk": "^0.94.0",
42
+ "@bufbuild/protobuf": "^2.12.0",
43
+ "@vib-rato/natives": "0.16.0",
44
+ "@vib-rato/utils": "0.16.0",
45
+ "openai": "^6.36.0",
46
+ "partial-json": "^0.1.7",
47
+ "zod": "4.4.3"
48
+ },
49
+ "devDependencies": {
50
+ "@types/bun": "^1.3.14"
51
+ },
52
+ "engines": {
53
+ "bun": ">=1.4.0"
54
+ },
55
+ "files": [
56
+ "src",
57
+ "README.md",
58
+ "CHANGELOG.md",
59
+ "dist/types"
60
+ ],
61
+ "exports": {
62
+ "./core": {
63
+ "types": "./dist/types/core.d.ts",
64
+ "import": "./src/core.ts"
65
+ },
66
+ ".": {
67
+ "types": "./dist/types/index.d.ts",
68
+ "import": "./src/index.ts"
69
+ },
70
+ "./adapter-internals/*": null,
71
+ "./adapter-internals/*.js": null,
72
+ "./*": {
73
+ "types": "./dist/types/*.d.ts",
74
+ "import": "./src/*.ts",
75
+ "require": "./src/*.ts"
76
+ },
77
+ "./auth-broker": {
78
+ "types": "./dist/types/auth-broker/index.d.ts",
79
+ "import": "./src/auth-broker/index.ts"
80
+ },
81
+ "./auth-broker/*": {
82
+ "types": "./dist/types/auth-broker/*.d.ts",
83
+ "import": "./src/auth-broker/*.ts"
84
+ },
85
+ "./auth-gateway": {
86
+ "types": "./dist/types/auth-gateway/index.d.ts",
87
+ "import": "./src/auth-gateway/index.ts"
88
+ },
89
+ "./auth-gateway/*": {
90
+ "types": "./dist/types/auth-gateway/*.d.ts",
91
+ "import": "./src/auth-gateway/*.ts"
92
+ },
93
+ "./models.json": {
94
+ "types": "./dist/types/models.json.d.d.ts",
95
+ "import": "./src/models.json"
96
+ },
97
+ "./provider-models": {
98
+ "types": "./dist/types/provider-models/index.d.ts",
99
+ "import": "./src/provider-models/index.ts"
100
+ },
101
+ "./provider-models/*": {
102
+ "types": "./dist/types/provider-models/*.d.ts",
103
+ "import": "./src/provider-models/*.ts"
104
+ },
105
+ "./providers/*": {
106
+ "types": "./dist/types/providers/*.d.ts",
107
+ "import": "./src/providers/*.ts",
108
+ "require": "./src/providers/*.ts"
109
+ },
110
+ "./providers/cursor/gen/*": {
111
+ "types": "./dist/types/providers/cursor/gen/*.d.ts",
112
+ "import": "./src/providers/cursor/gen/*.ts"
113
+ },
114
+ "./providers/openai-codex/*": {
115
+ "types": "./dist/types/providers/openai-codex/*.d.ts",
116
+ "import": "./src/providers/openai-codex/*.ts"
117
+ },
118
+ "./usage/*": {
119
+ "types": "./dist/types/usage/*.d.ts",
120
+ "import": "./src/usage/*.ts"
121
+ },
122
+ "./utils/*": {
123
+ "types": "./dist/types/utils/*.d.ts",
124
+ "import": "./src/utils/*.ts"
125
+ },
126
+ "./utils/discovery": {
127
+ "types": "./dist/types/utils/discovery/index.d.ts",
128
+ "import": "./src/utils/discovery/index.ts"
129
+ },
130
+ "./utils/discovery/*": {
131
+ "types": "./dist/types/utils/discovery/*.d.ts",
132
+ "import": "./src/utils/discovery/*.ts"
133
+ },
134
+ "./utils/oauth": {
135
+ "types": "./dist/types/utils/oauth/index.d.ts",
136
+ "import": "./src/utils/oauth/index.ts"
137
+ },
138
+ "./utils/oauth/*": {
139
+ "types": "./dist/types/utils/oauth/*.d.ts",
140
+ "import": "./src/utils/oauth/*.ts"
141
+ },
142
+ "./utils/schema": {
143
+ "types": "./dist/types/utils/schema/index.d.ts",
144
+ "import": "./src/utils/schema/index.ts"
145
+ },
146
+ "./utils/schema/*": {
147
+ "types": "./dist/types/utils/schema/*.d.ts",
148
+ "import": "./src/utils/schema/*.ts"
149
+ },
150
+ "./*.js": "./src/*.ts"
151
+ }
152
+ }
@@ -0,0 +1,45 @@
1
+ import type { Api, AssistantMessage, Model } from "../types";
2
+ /** This module is intentionally outside the package export map. */
3
+ declare const PROVIDER_SAFETY_STOP_ADAPTER_BRAND: unique symbol;
4
+ declare const PROVIDER_SAFETY_STOP_INVOCATION_BRAND: unique symbol;
5
+ /** Register an immutable catalog identity for first-party provider dispatch. */
6
+ export declare function registerProviderSafetyStopModel(model: Model<Api>): void;
7
+ /** Verify that a model is the unchanged identity of a bundled catalog entry. */
8
+ export declare function isProviderSafetyStopModelTrusted(model: unknown): boolean;
9
+ export type ProviderSafetyStopAdapterCapability = {
10
+ readonly [PROVIDER_SAFETY_STOP_ADAPTER_BRAND]: true;
11
+ };
12
+ /** The one unforgeable capability shared by first-party adapter parse sites. */
13
+ export declare const PROVIDER_SAFETY_STOP_ADAPTER_CAPABILITY: ProviderSafetyStopAdapterCapability;
14
+ export type ProviderSafetyStopAdapterInvocation = {
15
+ readonly [PROVIDER_SAFETY_STOP_INVOCATION_BRAND]: true;
16
+ };
17
+ export declare const PROVIDER_SAFETY_STOP_ADAPTER_INVOCATION: ProviderSafetyStopAdapterInvocation;
18
+ /** Attach runtime-owned adapter authority only when no caller transport seam is present. */
19
+ export declare function withProviderSafetyStopAdapterInvocation<T extends object>(options: T): T;
20
+ export declare function isProviderSafetyStopAdapterInvocation(value: unknown): ProviderSafetyStopAdapterInvocation | undefined;
21
+ /** Copy an existing runtime invocation token across a first-party wrapper boundary. */
22
+ export declare function copyProviderSafetyStopAdapterInvocation<T extends object>(source: unknown, destination: T): T;
23
+ /**
24
+ * Mint terminal authority only from a first-party adapter parse site. The
25
+ * capability is branded by a module-private symbol and is not available from
26
+ * the public `@vib-rato/ai` surface. Caller-controlled transport seams are
27
+ * also not trusted adapter invocations: an injected fetch or SDK client can
28
+ * fabricate a refusal without any provider contact, so adapter call sites
29
+ * pass those seams explicitly and fail closed when one is present. An
30
+ * unrecognized structured signal fails closed, so adapter mistakes remain
31
+ * fallback-eligible.
32
+ */
33
+ export declare function mintProviderSafetyStop(message: AssistantMessage, signal: string, capability: ProviderSafetyStopAdapterCapability, callerTransport?: unknown, adapterInvocation?: ProviderSafetyStopAdapterInvocation): boolean;
34
+ /** Identity check for terminal provider safety-stop authority. */
35
+ export declare function isProviderSafetyStopAuthenticated(message: unknown): boolean;
36
+ /**
37
+ * Drop terminal authority for a message. Exposing revocation publicly is
38
+ * safe by construction: it can only remove authority, never grant it, so a
39
+ * hostile caller cannot use it to forge a stop — only to degrade a genuine
40
+ * one to an ordinary fallback-eligible error. The managed runtime uses it to
41
+ * expire marks once a stop has been adjudicated, before the committed
42
+ * message is exposed to later stream dispatches (#4777 review follow-up).
43
+ */
44
+ export declare function revokeProviderSafetyStop(message: unknown): void;
45
+ export {};
@@ -0,0 +1,156 @@
1
+ import type { Api, AssistantMessage, Model } from "../types";
2
+
3
+ /** This module is intentionally outside the package export map. */
4
+ const PROVIDER_SAFETY_STOP_ADAPTER_BRAND = Symbol("provider-safety-stop-adapter-brand");
5
+ const PROVIDER_SAFETY_STOP_INVOCATION_BRAND = Symbol("provider-safety-stop-invocation-brand");
6
+ const PROVIDER_SAFETY_STOP_INVOCATION_KEY = Symbol("provider-safety-stop-invocation");
7
+
8
+ type ProviderSafetyStopModelIdentity = Pick<Model<Api>, "api" | "provider" | "id" | "baseUrl">;
9
+ const trustedProviderSafetyStopModels = new WeakMap<object, string>();
10
+
11
+ function providerSafetyStopModelIdentity(model: ProviderSafetyStopModelIdentity): string {
12
+ return `${model.api}\u0000${model.provider}\u0000${model.id}\u0000${model.baseUrl ?? ""}`;
13
+ }
14
+
15
+ /** Register an immutable catalog identity for first-party provider dispatch. */
16
+ export function registerProviderSafetyStopModel(model: Model<Api>): void {
17
+ try {
18
+ trustedProviderSafetyStopModels.set(model, providerSafetyStopModelIdentity(model));
19
+ } catch {
20
+ // A malformed/hostile model must remain fallback-eligible.
21
+ }
22
+ }
23
+
24
+ /** Verify that a model is the unchanged identity of a bundled catalog entry. */
25
+ export function isProviderSafetyStopModelTrusted(model: unknown): boolean {
26
+ if (typeof model !== "object" || model === null) return false;
27
+ const expected = trustedProviderSafetyStopModels.get(model);
28
+ if (expected === undefined) return false;
29
+ try {
30
+ return expected === providerSafetyStopModelIdentity(model as ProviderSafetyStopModelIdentity);
31
+ } catch {
32
+ return false;
33
+ }
34
+ }
35
+
36
+ export type ProviderSafetyStopAdapterCapability = {
37
+ readonly [PROVIDER_SAFETY_STOP_ADAPTER_BRAND]: true;
38
+ };
39
+
40
+ /** The one unforgeable capability shared by first-party adapter parse sites. */
41
+ export const PROVIDER_SAFETY_STOP_ADAPTER_CAPABILITY = Object.freeze({
42
+ [PROVIDER_SAFETY_STOP_ADAPTER_BRAND]: true,
43
+ }) as ProviderSafetyStopAdapterCapability;
44
+
45
+ export type ProviderSafetyStopAdapterInvocation = {
46
+ readonly [PROVIDER_SAFETY_STOP_INVOCATION_BRAND]: true;
47
+ };
48
+
49
+ export const PROVIDER_SAFETY_STOP_ADAPTER_INVOCATION = Object.freeze({
50
+ [PROVIDER_SAFETY_STOP_INVOCATION_BRAND]: true,
51
+ }) as ProviderSafetyStopAdapterInvocation;
52
+
53
+ function hasCallerTransport(options: object): boolean {
54
+ try {
55
+ return Reflect.get(options, "fetch") !== undefined || Reflect.get(options, "client") !== undefined;
56
+ } catch {
57
+ return true;
58
+ }
59
+ }
60
+
61
+ /** Attach runtime-owned adapter authority only when no caller transport seam is present. */
62
+ export function withProviderSafetyStopAdapterInvocation<T extends object>(options: T): T {
63
+ if (hasCallerTransport(options)) return options;
64
+ return { ...options, [PROVIDER_SAFETY_STOP_INVOCATION_KEY]: PROVIDER_SAFETY_STOP_ADAPTER_INVOCATION } as T;
65
+ }
66
+
67
+ export function isProviderSafetyStopAdapterInvocation(value: unknown): ProviderSafetyStopAdapterInvocation | undefined {
68
+ if (!value || typeof value !== "object") return undefined;
69
+ try {
70
+ return Reflect.get(value, PROVIDER_SAFETY_STOP_INVOCATION_KEY) === PROVIDER_SAFETY_STOP_ADAPTER_INVOCATION
71
+ ? PROVIDER_SAFETY_STOP_ADAPTER_INVOCATION
72
+ : undefined;
73
+ } catch {
74
+ return undefined;
75
+ }
76
+ }
77
+
78
+ /** Copy an existing runtime invocation token across a first-party wrapper boundary. */
79
+ export function copyProviderSafetyStopAdapterInvocation<T extends object>(source: unknown, destination: T): T {
80
+ return isProviderSafetyStopAdapterInvocation(source)
81
+ ? ({ ...destination, [PROVIDER_SAFETY_STOP_INVOCATION_KEY]: PROVIDER_SAFETY_STOP_ADAPTER_INVOCATION } as T)
82
+ : destination;
83
+ }
84
+
85
+ const authenticatedProviderSafetyStops = new WeakSet<object>();
86
+
87
+ /**
88
+ * Structured refusal vocabulary per first-party adapter. The Google entries
89
+ * mirror the closed lists in `google-shared.ts`.
90
+ */
91
+ const STRUCTURED_REFUSAL_SIGNALS: ReadonlySet<string> = new Set([
92
+ // anthropic-messages: stop_reason / stop_details.type
93
+ "refusal",
94
+ "sensitive",
95
+ // openai-completions: finish_reason / error.code
96
+ "content_filter",
97
+ // google-generative-ai: candidate finishReason
98
+ "SAFETY",
99
+ "IMAGE_SAFETY",
100
+ "PROHIBITED_CONTENT",
101
+ "IMAGE_PROHIBITED_CONTENT",
102
+ "SPII",
103
+ "BLOCKLIST",
104
+ "RECITATION",
105
+ "IMAGE_RECITATION",
106
+ "MODEL_ARMOR",
107
+ // google-generative-ai: promptFeedback.blockReason
108
+ "JAILBREAK",
109
+ ]);
110
+
111
+ /**
112
+ * Mint terminal authority only from a first-party adapter parse site. The
113
+ * capability is branded by a module-private symbol and is not available from
114
+ * the public `@vib-rato/ai` surface. Caller-controlled transport seams are
115
+ * also not trusted adapter invocations: an injected fetch or SDK client can
116
+ * fabricate a refusal without any provider contact, so adapter call sites
117
+ * pass those seams explicitly and fail closed when one is present. An
118
+ * unrecognized structured signal fails closed, so adapter mistakes remain
119
+ * fallback-eligible.
120
+ */
121
+ export function mintProviderSafetyStop(
122
+ message: AssistantMessage,
123
+ signal: string,
124
+ capability: ProviderSafetyStopAdapterCapability,
125
+ callerTransport?: unknown,
126
+ adapterInvocation?: ProviderSafetyStopAdapterInvocation,
127
+ ): boolean {
128
+ if (
129
+ capability !== PROVIDER_SAFETY_STOP_ADAPTER_CAPABILITY ||
130
+ callerTransport !== undefined ||
131
+ adapterInvocation !== PROVIDER_SAFETY_STOP_ADAPTER_INVOCATION ||
132
+ !STRUCTURED_REFUSAL_SIGNALS.has(signal)
133
+ )
134
+ return false;
135
+ authenticatedProviderSafetyStops.add(message);
136
+ message.errorKind = "provider_safety_stop";
137
+ return true;
138
+ }
139
+
140
+ /** Identity check for terminal provider safety-stop authority. */
141
+ export function isProviderSafetyStopAuthenticated(message: unknown): boolean {
142
+ return typeof message === "object" && message !== null && authenticatedProviderSafetyStops.has(message);
143
+ }
144
+
145
+ /**
146
+ * Drop terminal authority for a message. Exposing revocation publicly is
147
+ * safe by construction: it can only remove authority, never grant it, so a
148
+ * hostile caller cannot use it to forge a stop — only to degrade a genuine
149
+ * one to an ordinary fallback-eligible error. The managed runtime uses it to
150
+ * expire marks once a stop has been adjudicated, before the committed
151
+ * message is exposed to later stream dispatches (#4777 review follow-up).
152
+ */
153
+ export function revokeProviderSafetyStop(message: unknown): void {
154
+ if (typeof message !== "object" || message === null) return;
155
+ authenticatedProviderSafetyStops.delete(message);
156
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Custom API provider registry.
3
+ *
4
+ * Allows extensions to register streaming functions for custom API types
5
+ * (e.g., "vertex-Anthropic model-api") that are not built into stream.ts.
6
+ */
7
+ import type { Api, AssistantMessageEventStream, Context, Model, SimpleStreamOptions, StreamOptions } from "./types";
8
+ export type CustomStreamFn = (model: Model<Api>, context: Context, options?: StreamOptions) => AssistantMessageEventStream;
9
+ export type CustomStreamSimpleFn = (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;
10
+ export interface RegisteredCustomApi {
11
+ stream: CustomStreamFn;
12
+ streamSimple: CustomStreamSimpleFn;
13
+ sourceId?: string;
14
+ }
15
+ /**
16
+ * Register a custom API streaming function.
17
+ */
18
+ export declare function registerCustomApi(api: string, streamSimple: CustomStreamSimpleFn, sourceId?: string, stream?: CustomStreamFn): void;
19
+ /**
20
+ * Get a custom API provider by API identifier.
21
+ */
22
+ export declare function getCustomApi(api: string): RegisteredCustomApi | undefined;
23
+ /**
24
+ * Remove all custom APIs registered by a specific source (e.g., extension path).
25
+ */
26
+ export declare function unregisterCustomApis(sourceId: string): void;
27
+ /**
28
+ * Clear all custom API registrations.
29
+ */
30
+ export declare function clearCustomApis(): void;
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Custom API provider registry.
3
+ *
4
+ * Allows extensions to register streaming functions for custom API types
5
+ * (e.g., "vertex-Anthropic model-api") that are not built into stream.ts.
6
+ */
7
+ import type {
8
+ Api,
9
+ AssistantMessageEventStream,
10
+ Context,
11
+ KnownApi,
12
+ Model,
13
+ SimpleStreamOptions,
14
+ StreamOptions,
15
+ } from "./types";
16
+
17
+ const BUILTIN_APIS = new Set<KnownApi>([
18
+ "openai-completions",
19
+ "openai-responses",
20
+ "openai-codex-responses",
21
+ "azure-openai-responses",
22
+ "anthropic-messages",
23
+ "bedrock-converse-stream",
24
+ "google-generative-ai",
25
+ "google-gemini-cli",
26
+ "google-vertex",
27
+ "ollama-chat",
28
+ "cursor-agent",
29
+ ]);
30
+
31
+ export type CustomStreamFn = (
32
+ model: Model<Api>,
33
+ context: Context,
34
+ options?: StreamOptions,
35
+ ) => AssistantMessageEventStream;
36
+ export type CustomStreamSimpleFn = (
37
+ model: Model<Api>,
38
+ context: Context,
39
+ options?: SimpleStreamOptions,
40
+ ) => AssistantMessageEventStream;
41
+
42
+ export interface RegisteredCustomApi {
43
+ stream: CustomStreamFn;
44
+ streamSimple: CustomStreamSimpleFn;
45
+ sourceId?: string;
46
+ }
47
+
48
+ const customApiRegistry = new Map<string, RegisteredCustomApi>();
49
+
50
+ function assertCustomApiName(api: string): void {
51
+ if (BUILTIN_APIS.has(api as KnownApi)) {
52
+ throw new Error(`Cannot register custom API "${api}": built-in API names are reserved.`);
53
+ }
54
+ }
55
+
56
+ /**
57
+ * Register a custom API streaming function.
58
+ */
59
+ export function registerCustomApi(
60
+ api: string,
61
+ streamSimple: CustomStreamSimpleFn,
62
+ sourceId?: string,
63
+ stream?: CustomStreamFn,
64
+ ): void {
65
+ assertCustomApiName(api);
66
+ customApiRegistry.set(api, {
67
+ stream: stream ?? ((model, context, options) => streamSimple(model, context, options as SimpleStreamOptions)),
68
+ streamSimple,
69
+ sourceId,
70
+ });
71
+ }
72
+
73
+ /**
74
+ * Get a custom API provider by API identifier.
75
+ */
76
+ export function getCustomApi(api: string): RegisteredCustomApi | undefined {
77
+ return customApiRegistry.get(api);
78
+ }
79
+
80
+ /**
81
+ * Remove all custom APIs registered by a specific source (e.g., extension path).
82
+ */
83
+ export function unregisterCustomApis(sourceId: string): void {
84
+ for (const [api, entry] of customApiRegistry.entries()) {
85
+ if (entry.sourceId === sourceId) {
86
+ customApiRegistry.delete(api);
87
+ }
88
+ }
89
+ }
90
+
91
+ /**
92
+ * Clear all custom API registrations.
93
+ */
94
+ export function clearCustomApis(): void {
95
+ customApiRegistry.clear();
96
+ }