@gajae-code/ai 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. package/CHANGELOG.md +2644 -0
  2. package/README.md +1181 -0
  3. package/dist/types/api-registry.d.ts +30 -0
  4. package/dist/types/auth-broker/client.d.ts +66 -0
  5. package/dist/types/auth-broker/index.d.ts +5 -0
  6. package/dist/types/auth-broker/refresher.d.ts +25 -0
  7. package/dist/types/auth-broker/remote-store.d.ts +96 -0
  8. package/dist/types/auth-broker/server.d.ts +32 -0
  9. package/dist/types/auth-broker/types.d.ts +105 -0
  10. package/dist/types/auth-broker/wire-schemas.d.ts +412 -0
  11. package/dist/types/auth-gateway/http.d.ts +39 -0
  12. package/dist/types/auth-gateway/index.d.ts +3 -0
  13. package/dist/types/auth-gateway/server.d.ts +17 -0
  14. package/dist/types/auth-gateway/types.d.ts +115 -0
  15. package/dist/types/auth-storage.d.ts +641 -0
  16. package/dist/types/cli.d.ts +2 -0
  17. package/dist/types/index.d.ts +49 -0
  18. package/dist/types/model-cache.d.ts +17 -0
  19. package/dist/types/model-manager.d.ts +62 -0
  20. package/dist/types/model-thinking.d.ts +71 -0
  21. package/dist/types/models.d.ts +12 -0
  22. package/dist/types/provider-details.d.ts +24 -0
  23. package/dist/types/provider-models/bundled-references.d.ts +4 -0
  24. package/dist/types/provider-models/descriptors.d.ts +48 -0
  25. package/dist/types/provider-models/google.d.ts +20 -0
  26. package/dist/types/provider-models/index.d.ts +5 -0
  27. package/dist/types/provider-models/ollama.d.ts +7 -0
  28. package/dist/types/provider-models/openai-compat.d.ts +237 -0
  29. package/dist/types/provider-models/special.d.ts +16 -0
  30. package/dist/types/providers/amazon-bedrock.d.ts +36 -0
  31. package/dist/types/providers/anthropic-messages-server-schema.d.ts +450 -0
  32. package/dist/types/providers/anthropic-messages-server.d.ts +17 -0
  33. package/dist/types/providers/anthropic.d.ts +188 -0
  34. package/dist/types/providers/aws-credentials.d.ts +43 -0
  35. package/dist/types/providers/aws-eventstream.d.ts +38 -0
  36. package/dist/types/providers/aws-sigv4.d.ts +55 -0
  37. package/dist/types/providers/azure-openai-responses.d.ts +15 -0
  38. package/dist/types/providers/cursor/gen/agent_pb.d.ts +13022 -0
  39. package/dist/types/providers/cursor.d.ts +42 -0
  40. package/dist/types/providers/error-message.d.ts +27 -0
  41. package/dist/types/providers/github-copilot-headers.d.ts +40 -0
  42. package/dist/types/providers/gitlab-duo.d.ts +27 -0
  43. package/dist/types/providers/google-auth.d.ts +24 -0
  44. package/dist/types/providers/google-gemini-cli.d.ts +72 -0
  45. package/dist/types/providers/google-gemini-headers.d.ts +18 -0
  46. package/dist/types/providers/google-shared.d.ts +163 -0
  47. package/dist/types/providers/google-types.d.ts +138 -0
  48. package/dist/types/providers/google-vertex.d.ts +7 -0
  49. package/dist/types/providers/google.d.ts +4 -0
  50. package/dist/types/providers/grammar.d.ts +1 -0
  51. package/dist/types/providers/kimi.d.ts +27 -0
  52. package/dist/types/providers/mock.d.ts +175 -0
  53. package/dist/types/providers/ollama.d.ts +6 -0
  54. package/dist/types/providers/openai-anthropic-shim.d.ts +31 -0
  55. package/dist/types/providers/openai-chat-server-schema.d.ts +814 -0
  56. package/dist/types/providers/openai-chat-server.d.ts +16 -0
  57. package/dist/types/providers/openai-codex/constants.d.ts +26 -0
  58. package/dist/types/providers/openai-codex/request-transformer.d.ts +49 -0
  59. package/dist/types/providers/openai-codex/response-handler.d.ts +17 -0
  60. package/dist/types/providers/openai-codex-responses.d.ts +67 -0
  61. package/dist/types/providers/openai-completions-compat.d.ts +25 -0
  62. package/dist/types/providers/openai-completions.d.ts +33 -0
  63. package/dist/types/providers/openai-responses-server-schema.d.ts +392 -0
  64. package/dist/types/providers/openai-responses-server.d.ts +17 -0
  65. package/dist/types/providers/openai-responses-shared.d.ts +89 -0
  66. package/dist/types/providers/openai-responses.d.ts +32 -0
  67. package/dist/types/providers/pi-native-client.d.ts +13 -0
  68. package/dist/types/providers/pi-native-server.d.ts +68 -0
  69. package/dist/types/providers/register-builtins.d.ts +31 -0
  70. package/dist/types/providers/synthetic.d.ts +26 -0
  71. package/dist/types/providers/transform-messages.d.ts +12 -0
  72. package/dist/types/providers/vision-guard.d.ts +8 -0
  73. package/dist/types/rate-limit-utils.d.ts +19 -0
  74. package/dist/types/stream.d.ts +24 -0
  75. package/dist/types/types.d.ts +746 -0
  76. package/dist/types/usage/claude.d.ts +3 -0
  77. package/dist/types/usage/gemini.d.ts +2 -0
  78. package/dist/types/usage/github-copilot.d.ts +7 -0
  79. package/dist/types/usage/google-antigravity.d.ts +2 -0
  80. package/dist/types/usage/kimi.d.ts +2 -0
  81. package/dist/types/usage/minimax-code.d.ts +2 -0
  82. package/dist/types/usage/openai-codex.d.ts +3 -0
  83. package/dist/types/usage/shared.d.ts +1 -0
  84. package/dist/types/usage/zai.d.ts +2 -0
  85. package/dist/types/usage.d.ts +258 -0
  86. package/dist/types/utils/abort.d.ts +19 -0
  87. package/dist/types/utils/anthropic-auth.d.ts +31 -0
  88. package/dist/types/utils/discovery/antigravity.d.ts +61 -0
  89. package/dist/types/utils/discovery/codex.d.ts +38 -0
  90. package/dist/types/utils/discovery/cursor.d.ts +23 -0
  91. package/dist/types/utils/discovery/gemini.d.ts +25 -0
  92. package/dist/types/utils/discovery/index.d.ts +4 -0
  93. package/dist/types/utils/discovery/openai-compatible.d.ts +72 -0
  94. package/dist/types/utils/event-stream.d.ts +28 -0
  95. package/dist/types/utils/fireworks-model-id.d.ts +10 -0
  96. package/dist/types/utils/foundry.d.ts +1 -0
  97. package/dist/types/utils/h2-fetch.d.ts +22 -0
  98. package/dist/types/utils/http-inspector.d.ts +31 -0
  99. package/dist/types/utils/idle-iterator.d.ts +67 -0
  100. package/dist/types/utils/json-parse.d.ts +10 -0
  101. package/dist/types/utils/oauth/alibaba-coding-plan.d.ts +18 -0
  102. package/dist/types/utils/oauth/anthropic.d.ts +22 -0
  103. package/dist/types/utils/oauth/api-key-login.d.ts +35 -0
  104. package/dist/types/utils/oauth/api-key-validation.d.ts +27 -0
  105. package/dist/types/utils/oauth/callback-server.d.ts +57 -0
  106. package/dist/types/utils/oauth/cerebras.d.ts +1 -0
  107. package/dist/types/utils/oauth/cloudflare-ai-gateway.d.ts +18 -0
  108. package/dist/types/utils/oauth/cursor.d.ts +15 -0
  109. package/dist/types/utils/oauth/deepseek.d.ts +10 -0
  110. package/dist/types/utils/oauth/firepass.d.ts +1 -0
  111. package/dist/types/utils/oauth/fireworks.d.ts +1 -0
  112. package/dist/types/utils/oauth/github-copilot.d.ts +38 -0
  113. package/dist/types/utils/oauth/gitlab-duo.d.ts +3 -0
  114. package/dist/types/utils/oauth/google-antigravity.d.ts +11 -0
  115. package/dist/types/utils/oauth/google-gemini-cli.d.ts +10 -0
  116. package/dist/types/utils/oauth/google-oauth-shared.d.ts +28 -0
  117. package/dist/types/utils/oauth/huggingface.d.ts +19 -0
  118. package/dist/types/utils/oauth/index.d.ts +38 -0
  119. package/dist/types/utils/oauth/kagi.d.ts +17 -0
  120. package/dist/types/utils/oauth/kilo.d.ts +5 -0
  121. package/dist/types/utils/oauth/kimi.d.ts +21 -0
  122. package/dist/types/utils/oauth/litellm.d.ts +18 -0
  123. package/dist/types/utils/oauth/lm-studio.d.ts +17 -0
  124. package/dist/types/utils/oauth/minimax-code.d.ts +28 -0
  125. package/dist/types/utils/oauth/moonshot.d.ts +1 -0
  126. package/dist/types/utils/oauth/nanogpt.d.ts +1 -0
  127. package/dist/types/utils/oauth/nvidia.d.ts +18 -0
  128. package/dist/types/utils/oauth/ollama-cloud.d.ts +2 -0
  129. package/dist/types/utils/oauth/ollama.d.ts +18 -0
  130. package/dist/types/utils/oauth/openai-codex.d.ts +21 -0
  131. package/dist/types/utils/oauth/opencode.d.ts +18 -0
  132. package/dist/types/utils/oauth/parallel.d.ts +17 -0
  133. package/dist/types/utils/oauth/perplexity.d.ts +9 -0
  134. package/dist/types/utils/oauth/pkce.d.ts +8 -0
  135. package/dist/types/utils/oauth/qianfan.d.ts +17 -0
  136. package/dist/types/utils/oauth/qwen-portal.d.ts +19 -0
  137. package/dist/types/utils/oauth/synthetic.d.ts +1 -0
  138. package/dist/types/utils/oauth/tavily.d.ts +17 -0
  139. package/dist/types/utils/oauth/together.d.ts +1 -0
  140. package/dist/types/utils/oauth/types.d.ts +44 -0
  141. package/dist/types/utils/oauth/venice.d.ts +18 -0
  142. package/dist/types/utils/oauth/vercel-ai-gateway.d.ts +18 -0
  143. package/dist/types/utils/oauth/vllm.d.ts +16 -0
  144. package/dist/types/utils/oauth/xiaomi.d.ts +19 -0
  145. package/dist/types/utils/oauth/zai.d.ts +18 -0
  146. package/dist/types/utils/oauth/zenmux.d.ts +1 -0
  147. package/dist/types/utils/overflow.d.ts +54 -0
  148. package/dist/types/utils/parse-bind.d.ts +23 -0
  149. package/dist/types/utils/provider-response.d.ts +3 -0
  150. package/dist/types/utils/retry-after.d.ts +3 -0
  151. package/dist/types/utils/retry.d.ts +26 -0
  152. package/dist/types/utils/schema/adapt.d.ts +24 -0
  153. package/dist/types/utils/schema/compatibility.d.ts +30 -0
  154. package/dist/types/utils/schema/dereference.d.ts +11 -0
  155. package/dist/types/utils/schema/draft.d.ts +10 -0
  156. package/dist/types/utils/schema/equality.d.ts +4 -0
  157. package/dist/types/utils/schema/fields.d.ts +49 -0
  158. package/dist/types/utils/schema/index.d.ts +13 -0
  159. package/dist/types/utils/schema/json-schema-validator.d.ts +12 -0
  160. package/dist/types/utils/schema/meta-validator.d.ts +2 -0
  161. package/dist/types/utils/schema/normalize.d.ts +93 -0
  162. package/dist/types/utils/schema/spill.d.ts +8 -0
  163. package/dist/types/utils/schema/stamps.d.ts +25 -0
  164. package/dist/types/utils/schema/types.d.ts +4 -0
  165. package/dist/types/utils/schema/wire.d.ts +54 -0
  166. package/dist/types/utils/schema/zod-decontaminate.d.ts +31 -0
  167. package/dist/types/utils/sse-debug.d.ts +10 -0
  168. package/dist/types/utils/tool-call-healing.d.ts +71 -0
  169. package/dist/types/utils/tool-choice.d.ts +50 -0
  170. package/dist/types/utils/validation.d.ts +17 -0
  171. package/dist/types/utils.d.ts +28 -0
  172. package/package.json +146 -0
  173. package/src/api-registry.ts +96 -0
  174. package/src/auth-broker/client.ts +358 -0
  175. package/src/auth-broker/index.ts +5 -0
  176. package/src/auth-broker/refresher.ts +127 -0
  177. package/src/auth-broker/remote-store.ts +623 -0
  178. package/src/auth-broker/server.ts +644 -0
  179. package/src/auth-broker/types.ts +127 -0
  180. package/src/auth-broker/wire-schemas.ts +200 -0
  181. package/src/auth-gateway/http.ts +194 -0
  182. package/src/auth-gateway/index.ts +3 -0
  183. package/src/auth-gateway/server.ts +717 -0
  184. package/src/auth-gateway/types.ts +134 -0
  185. package/src/auth-storage.ts +4104 -0
  186. package/src/cli.ts +262 -0
  187. package/src/index.ts +54 -0
  188. package/src/model-cache.ts +129 -0
  189. package/src/model-manager.ts +450 -0
  190. package/src/model-thinking.ts +691 -0
  191. package/src/models.json +73853 -0
  192. package/src/models.json.d.ts +9 -0
  193. package/src/models.ts +56 -0
  194. package/src/prompts/turn-aborted-guidance.md +4 -0
  195. package/src/provider-details.ts +90 -0
  196. package/src/provider-models/bundled-references.ts +38 -0
  197. package/src/provider-models/descriptors.ts +308 -0
  198. package/src/provider-models/google.ts +91 -0
  199. package/src/provider-models/index.ts +5 -0
  200. package/src/provider-models/ollama.ts +153 -0
  201. package/src/provider-models/openai-compat.ts +2275 -0
  202. package/src/provider-models/special.ts +67 -0
  203. package/src/providers/amazon-bedrock.ts +849 -0
  204. package/src/providers/anthropic-messages-server-schema.ts +229 -0
  205. package/src/providers/anthropic-messages-server.ts +677 -0
  206. package/src/providers/anthropic.ts +2696 -0
  207. package/src/providers/aws-credentials.ts +501 -0
  208. package/src/providers/aws-eventstream.ts +185 -0
  209. package/src/providers/aws-sigv4.ts +218 -0
  210. package/src/providers/azure-openai-responses.ts +337 -0
  211. package/src/providers/cursor/gen/agent_pb.ts +15274 -0
  212. package/src/providers/cursor/proto/agent.proto +3526 -0
  213. package/src/providers/cursor/proto/buf.gen.yaml +6 -0
  214. package/src/providers/cursor/proto/buf.yaml +17 -0
  215. package/src/providers/cursor.ts +2561 -0
  216. package/src/providers/error-message.ts +21 -0
  217. package/src/providers/github-copilot-headers.ts +140 -0
  218. package/src/providers/gitlab-duo.ts +372 -0
  219. package/src/providers/google-auth.ts +252 -0
  220. package/src/providers/google-gemini-cli.ts +795 -0
  221. package/src/providers/google-gemini-headers.ts +41 -0
  222. package/src/providers/google-shared.ts +902 -0
  223. package/src/providers/google-types.ts +167 -0
  224. package/src/providers/google-vertex.ts +88 -0
  225. package/src/providers/google.ts +41 -0
  226. package/src/providers/grammar.ts +70 -0
  227. package/src/providers/kimi.ts +52 -0
  228. package/src/providers/mock.ts +500 -0
  229. package/src/providers/ollama.ts +544 -0
  230. package/src/providers/openai-anthropic-shim.ts +138 -0
  231. package/src/providers/openai-chat-server-schema.ts +243 -0
  232. package/src/providers/openai-chat-server.ts +628 -0
  233. package/src/providers/openai-codex/constants.ts +43 -0
  234. package/src/providers/openai-codex/request-transformer.ts +161 -0
  235. package/src/providers/openai-codex/response-handler.ts +81 -0
  236. package/src/providers/openai-codex-responses.ts +2598 -0
  237. package/src/providers/openai-completions-compat.ts +279 -0
  238. package/src/providers/openai-completions.ts +1853 -0
  239. package/src/providers/openai-responses-server-schema.ts +290 -0
  240. package/src/providers/openai-responses-server.ts +1183 -0
  241. package/src/providers/openai-responses-shared.ts +800 -0
  242. package/src/providers/openai-responses.ts +621 -0
  243. package/src/providers/pi-native-client.ts +228 -0
  244. package/src/providers/pi-native-server.ts +210 -0
  245. package/src/providers/register-builtins.ts +412 -0
  246. package/src/providers/synthetic.ts +50 -0
  247. package/src/providers/transform-messages.ts +309 -0
  248. package/src/providers/vision-guard.ts +31 -0
  249. package/src/rate-limit-utils.ts +84 -0
  250. package/src/stream.ts +895 -0
  251. package/src/types.ts +884 -0
  252. package/src/usage/claude.ts +431 -0
  253. package/src/usage/gemini.ts +250 -0
  254. package/src/usage/github-copilot.ts +421 -0
  255. package/src/usage/google-antigravity.ts +201 -0
  256. package/src/usage/kimi.ts +271 -0
  257. package/src/usage/minimax-code.ts +31 -0
  258. package/src/usage/openai-codex.ts +503 -0
  259. package/src/usage/shared.ts +10 -0
  260. package/src/usage/zai.ts +247 -0
  261. package/src/usage.ts +183 -0
  262. package/src/utils/abort.ts +51 -0
  263. package/src/utils/anthropic-auth.ts +87 -0
  264. package/src/utils/discovery/antigravity.ts +261 -0
  265. package/src/utils/discovery/codex.ts +371 -0
  266. package/src/utils/discovery/cursor.ts +306 -0
  267. package/src/utils/discovery/gemini.ts +248 -0
  268. package/src/utils/discovery/index.ts +4 -0
  269. package/src/utils/discovery/openai-compatible.ts +224 -0
  270. package/src/utils/event-stream.ts +142 -0
  271. package/src/utils/fireworks-model-id.ts +30 -0
  272. package/src/utils/foundry.ts +8 -0
  273. package/src/utils/h2-fetch.ts +60 -0
  274. package/src/utils/http-inspector.ts +176 -0
  275. package/src/utils/idle-iterator.ts +250 -0
  276. package/src/utils/json-parse.ts +148 -0
  277. package/src/utils/oauth/alibaba-coding-plan.ts +59 -0
  278. package/src/utils/oauth/anthropic.ts +200 -0
  279. package/src/utils/oauth/api-key-login.ts +87 -0
  280. package/src/utils/oauth/api-key-validation.ts +92 -0
  281. package/src/utils/oauth/callback-server.ts +276 -0
  282. package/src/utils/oauth/cerebras.ts +16 -0
  283. package/src/utils/oauth/cloudflare-ai-gateway.ts +48 -0
  284. package/src/utils/oauth/cursor.ts +157 -0
  285. package/src/utils/oauth/deepseek.ts +53 -0
  286. package/src/utils/oauth/firepass.ts +24 -0
  287. package/src/utils/oauth/fireworks.ts +15 -0
  288. package/src/utils/oauth/github-copilot.ts +362 -0
  289. package/src/utils/oauth/gitlab-duo.ts +123 -0
  290. package/src/utils/oauth/google-antigravity.ts +200 -0
  291. package/src/utils/oauth/google-gemini-cli.ts +256 -0
  292. package/src/utils/oauth/google-oauth-shared.ts +110 -0
  293. package/src/utils/oauth/huggingface.ts +62 -0
  294. package/src/utils/oauth/index.ts +444 -0
  295. package/src/utils/oauth/kagi.ts +47 -0
  296. package/src/utils/oauth/kilo.ts +87 -0
  297. package/src/utils/oauth/kimi.ts +254 -0
  298. package/src/utils/oauth/litellm.ts +47 -0
  299. package/src/utils/oauth/lm-studio.ts +38 -0
  300. package/src/utils/oauth/minimax-code.ts +78 -0
  301. package/src/utils/oauth/moonshot.ts +16 -0
  302. package/src/utils/oauth/nanogpt.ts +15 -0
  303. package/src/utils/oauth/nvidia.ts +70 -0
  304. package/src/utils/oauth/oauth.html +199 -0
  305. package/src/utils/oauth/ollama-cloud.ts +28 -0
  306. package/src/utils/oauth/ollama.ts +47 -0
  307. package/src/utils/oauth/openai-codex.ts +299 -0
  308. package/src/utils/oauth/opencode.ts +49 -0
  309. package/src/utils/oauth/parallel.ts +46 -0
  310. package/src/utils/oauth/perplexity.ts +206 -0
  311. package/src/utils/oauth/pkce.ts +18 -0
  312. package/src/utils/oauth/qianfan.ts +58 -0
  313. package/src/utils/oauth/qwen-portal.ts +60 -0
  314. package/src/utils/oauth/synthetic.ts +16 -0
  315. package/src/utils/oauth/tavily.ts +46 -0
  316. package/src/utils/oauth/together.ts +16 -0
  317. package/src/utils/oauth/types.ts +94 -0
  318. package/src/utils/oauth/venice.ts +59 -0
  319. package/src/utils/oauth/vercel-ai-gateway.ts +47 -0
  320. package/src/utils/oauth/vllm.ts +40 -0
  321. package/src/utils/oauth/xiaomi.ts +137 -0
  322. package/src/utils/oauth/zai.ts +60 -0
  323. package/src/utils/oauth/zenmux.ts +15 -0
  324. package/src/utils/overflow.ts +137 -0
  325. package/src/utils/parse-bind.ts +54 -0
  326. package/src/utils/provider-response.ts +30 -0
  327. package/src/utils/retry-after.ts +110 -0
  328. package/src/utils/retry.ts +54 -0
  329. package/src/utils/schema/CONSTRAINTS.md +164 -0
  330. package/src/utils/schema/adapt.ts +36 -0
  331. package/src/utils/schema/compatibility.ts +435 -0
  332. package/src/utils/schema/dereference.ts +98 -0
  333. package/src/utils/schema/draft.ts +341 -0
  334. package/src/utils/schema/equality.ts +97 -0
  335. package/src/utils/schema/fields.ts +190 -0
  336. package/src/utils/schema/index.ts +13 -0
  337. package/src/utils/schema/json-schema-validator.ts +577 -0
  338. package/src/utils/schema/meta-validator.ts +167 -0
  339. package/src/utils/schema/normalize.ts +1588 -0
  340. package/src/utils/schema/spill.ts +43 -0
  341. package/src/utils/schema/stamps.ts +97 -0
  342. package/src/utils/schema/types.ts +11 -0
  343. package/src/utils/schema/wire.ts +213 -0
  344. package/src/utils/schema/zod-decontaminate.ts +331 -0
  345. package/src/utils/sse-debug.ts +289 -0
  346. package/src/utils/tool-call-healing.ts +271 -0
  347. package/src/utils/tool-choice.ts +99 -0
  348. package/src/utils/validation.ts +1019 -0
  349. package/src/utils.ts +166 -0
@@ -0,0 +1,412 @@
1
+ /**
2
+ * Zod schemas for the auth-broker wire protocol.
3
+ *
4
+ * Shared between the server (validates inbound request bodies) and the client
5
+ * (validates responses from the broker). Schemas mirror the TypeScript types
6
+ * in `./types.ts` 1:1; the types remain the source of truth for static typing,
7
+ * and `z.infer<typeof Schema>` is asserted-compatible with them where possible.
8
+ *
9
+ * Schemas use `.strict()` on objects with a closed set of fields so unknown
10
+ * keys are rejected — the previous implementation used a hand-rolled
11
+ * `hasOnlyFields` allowlist for the same effect.
12
+ */
13
+ import * as z from "zod/v4";
14
+ /** Real OAuth credential (broker-side) — refresh token is the actual upstream value. */
15
+ export declare const oauthCredentialSchema: z.ZodObject<{
16
+ type: z.ZodLiteral<"oauth">;
17
+ refresh: z.ZodString;
18
+ access: z.ZodString;
19
+ expires: z.ZodNumber;
20
+ enterpriseUrl: z.ZodOptional<z.ZodString>;
21
+ projectId: z.ZodOptional<z.ZodString>;
22
+ email: z.ZodOptional<z.ZodString>;
23
+ accountId: z.ZodOptional<z.ZodString>;
24
+ }, z.core.$strict>;
25
+ /** OAuth credential as it appears in broker snapshots — refresh replaced with sentinel. */
26
+ export declare const remoteOauthCredentialSchema: z.ZodObject<{
27
+ type: z.ZodLiteral<"oauth">;
28
+ access: z.ZodString;
29
+ expires: z.ZodNumber;
30
+ enterpriseUrl: z.ZodOptional<z.ZodString>;
31
+ projectId: z.ZodOptional<z.ZodString>;
32
+ email: z.ZodOptional<z.ZodString>;
33
+ accountId: z.ZodOptional<z.ZodString>;
34
+ refresh: z.ZodLiteral<"__remote__">;
35
+ }, z.core.$strict>;
36
+ export declare const apiKeyCredentialSchema: z.ZodObject<{
37
+ type: z.ZodLiteral<"api_key">;
38
+ key: z.ZodString;
39
+ }, z.core.$strict>;
40
+ /** Discriminated union accepted on POST /v1/credential (writes). */
41
+ export declare const writableAuthCredentialSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
42
+ type: z.ZodLiteral<"oauth">;
43
+ refresh: z.ZodString;
44
+ access: z.ZodString;
45
+ expires: z.ZodNumber;
46
+ enterpriseUrl: z.ZodOptional<z.ZodString>;
47
+ projectId: z.ZodOptional<z.ZodString>;
48
+ email: z.ZodOptional<z.ZodString>;
49
+ accountId: z.ZodOptional<z.ZodString>;
50
+ }, z.core.$strict>, z.ZodObject<{
51
+ type: z.ZodLiteral<"api_key">;
52
+ key: z.ZodString;
53
+ }, z.core.$strict>], "type">;
54
+ /** Discriminated union returned in snapshots (refresh is sentinel for OAuth). */
55
+ export declare const snapshotCredentialSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
56
+ type: z.ZodLiteral<"oauth">;
57
+ access: z.ZodString;
58
+ expires: z.ZodNumber;
59
+ enterpriseUrl: z.ZodOptional<z.ZodString>;
60
+ projectId: z.ZodOptional<z.ZodString>;
61
+ email: z.ZodOptional<z.ZodString>;
62
+ accountId: z.ZodOptional<z.ZodString>;
63
+ refresh: z.ZodLiteral<"__remote__">;
64
+ }, z.core.$strict>, z.ZodObject<{
65
+ type: z.ZodLiteral<"api_key">;
66
+ key: z.ZodString;
67
+ }, z.core.$strict>], "type">;
68
+ export declare const credentialSnapshotEntrySchema: z.ZodObject<{
69
+ id: z.ZodNumber;
70
+ provider: z.ZodString;
71
+ credential: z.ZodDiscriminatedUnion<[z.ZodObject<{
72
+ type: z.ZodLiteral<"oauth">;
73
+ access: z.ZodString;
74
+ expires: z.ZodNumber;
75
+ enterpriseUrl: z.ZodOptional<z.ZodString>;
76
+ projectId: z.ZodOptional<z.ZodString>;
77
+ email: z.ZodOptional<z.ZodString>;
78
+ accountId: z.ZodOptional<z.ZodString>;
79
+ refresh: z.ZodLiteral<"__remote__">;
80
+ }, z.core.$strict>, z.ZodObject<{
81
+ type: z.ZodLiteral<"api_key">;
82
+ key: z.ZodString;
83
+ }, z.core.$strict>], "type">;
84
+ identityKey: z.ZodNullable<z.ZodString>;
85
+ }, z.core.$strict>;
86
+ export declare const snapshotEntrySchema: z.ZodObject<{
87
+ id: z.ZodNumber;
88
+ provider: z.ZodString;
89
+ credential: z.ZodDiscriminatedUnion<[z.ZodObject<{
90
+ type: z.ZodLiteral<"oauth">;
91
+ access: z.ZodString;
92
+ expires: z.ZodNumber;
93
+ enterpriseUrl: z.ZodOptional<z.ZodString>;
94
+ projectId: z.ZodOptional<z.ZodString>;
95
+ email: z.ZodOptional<z.ZodString>;
96
+ accountId: z.ZodOptional<z.ZodString>;
97
+ refresh: z.ZodLiteral<"__remote__">;
98
+ }, z.core.$strict>, z.ZodObject<{
99
+ type: z.ZodLiteral<"api_key">;
100
+ key: z.ZodString;
101
+ }, z.core.$strict>], "type">;
102
+ identityKey: z.ZodNullable<z.ZodString>;
103
+ rotatesInMs: z.ZodNullable<z.ZodNumber>;
104
+ }, z.core.$strict>;
105
+ export declare const refresherScheduleSchema: z.ZodObject<{
106
+ enabled: z.ZodBoolean;
107
+ intervalMs: z.ZodNumber;
108
+ skewMs: z.ZodNumber;
109
+ nextSweepInMs: z.ZodNumber;
110
+ }, z.core.$strict>;
111
+ export declare const snapshotResponseSchema: z.ZodObject<{
112
+ generation: z.ZodNumber;
113
+ generatedAt: z.ZodNumber;
114
+ serverNowMs: z.ZodNumber;
115
+ refresher: z.ZodObject<{
116
+ enabled: z.ZodBoolean;
117
+ intervalMs: z.ZodNumber;
118
+ skewMs: z.ZodNumber;
119
+ nextSweepInMs: z.ZodNumber;
120
+ }, z.core.$strict>;
121
+ credentials: z.ZodArray<z.ZodObject<{
122
+ id: z.ZodNumber;
123
+ provider: z.ZodString;
124
+ credential: z.ZodDiscriminatedUnion<[z.ZodObject<{
125
+ type: z.ZodLiteral<"oauth">;
126
+ access: z.ZodString;
127
+ expires: z.ZodNumber;
128
+ enterpriseUrl: z.ZodOptional<z.ZodString>;
129
+ projectId: z.ZodOptional<z.ZodString>;
130
+ email: z.ZodOptional<z.ZodString>;
131
+ accountId: z.ZodOptional<z.ZodString>;
132
+ refresh: z.ZodLiteral<"__remote__">;
133
+ }, z.core.$strict>, z.ZodObject<{
134
+ type: z.ZodLiteral<"api_key">;
135
+ key: z.ZodString;
136
+ }, z.core.$strict>], "type">;
137
+ identityKey: z.ZodNullable<z.ZodString>;
138
+ rotatesInMs: z.ZodNullable<z.ZodNumber>;
139
+ }, z.core.$strict>>;
140
+ }, z.core.$strict>;
141
+ /** First frame on connect — full snapshot embedded inline with a `kind` tag. */
142
+ export declare const snapshotStreamSnapshotEventSchema: z.ZodObject<{
143
+ generation: z.ZodNumber;
144
+ generatedAt: z.ZodNumber;
145
+ serverNowMs: z.ZodNumber;
146
+ refresher: z.ZodObject<{
147
+ enabled: z.ZodBoolean;
148
+ intervalMs: z.ZodNumber;
149
+ skewMs: z.ZodNumber;
150
+ nextSweepInMs: z.ZodNumber;
151
+ }, z.core.$strict>;
152
+ credentials: z.ZodArray<z.ZodObject<{
153
+ id: z.ZodNumber;
154
+ provider: z.ZodString;
155
+ credential: z.ZodDiscriminatedUnion<[z.ZodObject<{
156
+ type: z.ZodLiteral<"oauth">;
157
+ access: z.ZodString;
158
+ expires: z.ZodNumber;
159
+ enterpriseUrl: z.ZodOptional<z.ZodString>;
160
+ projectId: z.ZodOptional<z.ZodString>;
161
+ email: z.ZodOptional<z.ZodString>;
162
+ accountId: z.ZodOptional<z.ZodString>;
163
+ refresh: z.ZodLiteral<"__remote__">;
164
+ }, z.core.$strict>, z.ZodObject<{
165
+ type: z.ZodLiteral<"api_key">;
166
+ key: z.ZodString;
167
+ }, z.core.$strict>], "type">;
168
+ identityKey: z.ZodNullable<z.ZodString>;
169
+ rotatesInMs: z.ZodNullable<z.ZodNumber>;
170
+ }, z.core.$strict>>;
171
+ kind: z.ZodLiteral<"snapshot">;
172
+ }, z.core.$strict>;
173
+ /** Per-credential upsert/refresh delta. */
174
+ export declare const snapshotStreamEntryEventSchema: z.ZodObject<{
175
+ kind: z.ZodLiteral<"entry">;
176
+ generation: z.ZodNumber;
177
+ serverNowMs: z.ZodNumber;
178
+ refresher: z.ZodObject<{
179
+ enabled: z.ZodBoolean;
180
+ intervalMs: z.ZodNumber;
181
+ skewMs: z.ZodNumber;
182
+ nextSweepInMs: z.ZodNumber;
183
+ }, z.core.$strict>;
184
+ entry: z.ZodObject<{
185
+ id: z.ZodNumber;
186
+ provider: z.ZodString;
187
+ credential: z.ZodDiscriminatedUnion<[z.ZodObject<{
188
+ type: z.ZodLiteral<"oauth">;
189
+ access: z.ZodString;
190
+ expires: z.ZodNumber;
191
+ enterpriseUrl: z.ZodOptional<z.ZodString>;
192
+ projectId: z.ZodOptional<z.ZodString>;
193
+ email: z.ZodOptional<z.ZodString>;
194
+ accountId: z.ZodOptional<z.ZodString>;
195
+ refresh: z.ZodLiteral<"__remote__">;
196
+ }, z.core.$strict>, z.ZodObject<{
197
+ type: z.ZodLiteral<"api_key">;
198
+ key: z.ZodString;
199
+ }, z.core.$strict>], "type">;
200
+ identityKey: z.ZodNullable<z.ZodString>;
201
+ rotatesInMs: z.ZodNullable<z.ZodNumber>;
202
+ }, z.core.$strict>;
203
+ }, z.core.$strict>;
204
+ /** Per-credential delete delta. */
205
+ export declare const snapshotStreamRemovedEventSchema: z.ZodObject<{
206
+ kind: z.ZodLiteral<"removed">;
207
+ generation: z.ZodNumber;
208
+ serverNowMs: z.ZodNumber;
209
+ refresher: z.ZodObject<{
210
+ enabled: z.ZodBoolean;
211
+ intervalMs: z.ZodNumber;
212
+ skewMs: z.ZodNumber;
213
+ nextSweepInMs: z.ZodNumber;
214
+ }, z.core.$strict>;
215
+ id: z.ZodNumber;
216
+ }, z.core.$strict>;
217
+ /** Discriminated union over every event frame the snapshot stream emits. */
218
+ export declare const snapshotStreamEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
219
+ generation: z.ZodNumber;
220
+ generatedAt: z.ZodNumber;
221
+ serverNowMs: z.ZodNumber;
222
+ refresher: z.ZodObject<{
223
+ enabled: z.ZodBoolean;
224
+ intervalMs: z.ZodNumber;
225
+ skewMs: z.ZodNumber;
226
+ nextSweepInMs: z.ZodNumber;
227
+ }, z.core.$strict>;
228
+ credentials: z.ZodArray<z.ZodObject<{
229
+ id: z.ZodNumber;
230
+ provider: z.ZodString;
231
+ credential: z.ZodDiscriminatedUnion<[z.ZodObject<{
232
+ type: z.ZodLiteral<"oauth">;
233
+ access: z.ZodString;
234
+ expires: z.ZodNumber;
235
+ enterpriseUrl: z.ZodOptional<z.ZodString>;
236
+ projectId: z.ZodOptional<z.ZodString>;
237
+ email: z.ZodOptional<z.ZodString>;
238
+ accountId: z.ZodOptional<z.ZodString>;
239
+ refresh: z.ZodLiteral<"__remote__">;
240
+ }, z.core.$strict>, z.ZodObject<{
241
+ type: z.ZodLiteral<"api_key">;
242
+ key: z.ZodString;
243
+ }, z.core.$strict>], "type">;
244
+ identityKey: z.ZodNullable<z.ZodString>;
245
+ rotatesInMs: z.ZodNullable<z.ZodNumber>;
246
+ }, z.core.$strict>>;
247
+ kind: z.ZodLiteral<"snapshot">;
248
+ }, z.core.$strict>, z.ZodObject<{
249
+ kind: z.ZodLiteral<"entry">;
250
+ generation: z.ZodNumber;
251
+ serverNowMs: z.ZodNumber;
252
+ refresher: z.ZodObject<{
253
+ enabled: z.ZodBoolean;
254
+ intervalMs: z.ZodNumber;
255
+ skewMs: z.ZodNumber;
256
+ nextSweepInMs: z.ZodNumber;
257
+ }, z.core.$strict>;
258
+ entry: z.ZodObject<{
259
+ id: z.ZodNumber;
260
+ provider: z.ZodString;
261
+ credential: z.ZodDiscriminatedUnion<[z.ZodObject<{
262
+ type: z.ZodLiteral<"oauth">;
263
+ access: z.ZodString;
264
+ expires: z.ZodNumber;
265
+ enterpriseUrl: z.ZodOptional<z.ZodString>;
266
+ projectId: z.ZodOptional<z.ZodString>;
267
+ email: z.ZodOptional<z.ZodString>;
268
+ accountId: z.ZodOptional<z.ZodString>;
269
+ refresh: z.ZodLiteral<"__remote__">;
270
+ }, z.core.$strict>, z.ZodObject<{
271
+ type: z.ZodLiteral<"api_key">;
272
+ key: z.ZodString;
273
+ }, z.core.$strict>], "type">;
274
+ identityKey: z.ZodNullable<z.ZodString>;
275
+ rotatesInMs: z.ZodNullable<z.ZodNumber>;
276
+ }, z.core.$strict>;
277
+ }, z.core.$strict>, z.ZodObject<{
278
+ kind: z.ZodLiteral<"removed">;
279
+ generation: z.ZodNumber;
280
+ serverNowMs: z.ZodNumber;
281
+ refresher: z.ZodObject<{
282
+ enabled: z.ZodBoolean;
283
+ intervalMs: z.ZodNumber;
284
+ skewMs: z.ZodNumber;
285
+ nextSweepInMs: z.ZodNumber;
286
+ }, z.core.$strict>;
287
+ id: z.ZodNumber;
288
+ }, z.core.$strict>], "kind">;
289
+ export declare const healthzResponseSchema: z.ZodObject<{
290
+ ok: z.ZodBoolean;
291
+ version: z.ZodOptional<z.ZodString>;
292
+ }, z.core.$strict>;
293
+ /**
294
+ * Broker `/v1/usage` response. Reports are full {@link UsageReport}s minus the
295
+ * heavy provider-specific `raw` field (the server strips it before send) — we
296
+ * keep `raw` optional in the underlying schema so a misconfigured broker that
297
+ * forgot to strip still validates.
298
+ */
299
+ export declare const usageResponseSchema: z.ZodObject<{
300
+ generatedAt: z.ZodNumber;
301
+ reports: z.ZodArray<z.ZodObject<{
302
+ provider: z.ZodString;
303
+ fetchedAt: z.ZodNumber;
304
+ limits: z.ZodArray<z.ZodObject<{
305
+ id: z.ZodString;
306
+ label: z.ZodString;
307
+ scope: z.ZodObject<{
308
+ provider: z.ZodString;
309
+ accountId: z.ZodOptional<z.ZodString>;
310
+ projectId: z.ZodOptional<z.ZodString>;
311
+ orgId: z.ZodOptional<z.ZodString>;
312
+ modelId: z.ZodOptional<z.ZodString>;
313
+ tier: z.ZodOptional<z.ZodString>;
314
+ windowId: z.ZodOptional<z.ZodString>;
315
+ shared: z.ZodOptional<z.ZodBoolean>;
316
+ }, z.core.$strip>;
317
+ window: z.ZodOptional<z.ZodObject<{
318
+ id: z.ZodString;
319
+ label: z.ZodString;
320
+ durationMs: z.ZodOptional<z.ZodNumber>;
321
+ resetsAt: z.ZodOptional<z.ZodNumber>;
322
+ }, z.core.$strip>>;
323
+ amount: z.ZodObject<{
324
+ used: z.ZodOptional<z.ZodNumber>;
325
+ limit: z.ZodOptional<z.ZodNumber>;
326
+ remaining: z.ZodOptional<z.ZodNumber>;
327
+ usedFraction: z.ZodOptional<z.ZodNumber>;
328
+ remainingFraction: z.ZodOptional<z.ZodNumber>;
329
+ unit: z.ZodEnum<{
330
+ bytes: "bytes";
331
+ minutes: "minutes";
332
+ percent: "percent";
333
+ requests: "requests";
334
+ tokens: "tokens";
335
+ unknown: "unknown";
336
+ usd: "usd";
337
+ }>;
338
+ }, z.core.$strip>;
339
+ status: z.ZodOptional<z.ZodEnum<{
340
+ exhausted: "exhausted";
341
+ ok: "ok";
342
+ unknown: "unknown";
343
+ warning: "warning";
344
+ }>>;
345
+ notes: z.ZodOptional<z.ZodArray<z.ZodString>>;
346
+ }, z.core.$strip>>;
347
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
348
+ raw: z.ZodOptional<z.ZodUnknown>;
349
+ }, z.core.$strip>>;
350
+ }, z.core.$strict>;
351
+ export declare const credentialRefreshResponseSchema: z.ZodObject<{
352
+ entry: z.ZodObject<{
353
+ id: z.ZodNumber;
354
+ provider: z.ZodString;
355
+ credential: z.ZodDiscriminatedUnion<[z.ZodObject<{
356
+ type: z.ZodLiteral<"oauth">;
357
+ access: z.ZodString;
358
+ expires: z.ZodNumber;
359
+ enterpriseUrl: z.ZodOptional<z.ZodString>;
360
+ projectId: z.ZodOptional<z.ZodString>;
361
+ email: z.ZodOptional<z.ZodString>;
362
+ accountId: z.ZodOptional<z.ZodString>;
363
+ refresh: z.ZodLiteral<"__remote__">;
364
+ }, z.core.$strict>, z.ZodObject<{
365
+ type: z.ZodLiteral<"api_key">;
366
+ key: z.ZodString;
367
+ }, z.core.$strict>], "type">;
368
+ identityKey: z.ZodNullable<z.ZodString>;
369
+ }, z.core.$strict>;
370
+ }, z.core.$strict>;
371
+ export declare const credentialDisableRequestSchema: z.ZodObject<{
372
+ cause: z.ZodOptional<z.ZodString>;
373
+ }, z.core.$strict>;
374
+ export declare const credentialDisableResponseSchema: z.ZodObject<{
375
+ ok: z.ZodBoolean;
376
+ }, z.core.$strict>;
377
+ export declare const credentialUploadRequestSchema: z.ZodObject<{
378
+ provider: z.ZodString;
379
+ credential: z.ZodDiscriminatedUnion<[z.ZodObject<{
380
+ type: z.ZodLiteral<"oauth">;
381
+ refresh: z.ZodString;
382
+ access: z.ZodString;
383
+ expires: z.ZodNumber;
384
+ enterpriseUrl: z.ZodOptional<z.ZodString>;
385
+ projectId: z.ZodOptional<z.ZodString>;
386
+ email: z.ZodOptional<z.ZodString>;
387
+ accountId: z.ZodOptional<z.ZodString>;
388
+ }, z.core.$strict>, z.ZodObject<{
389
+ type: z.ZodLiteral<"api_key">;
390
+ key: z.ZodString;
391
+ }, z.core.$strict>], "type">;
392
+ }, z.core.$strict>;
393
+ export declare const credentialUploadResponseSchema: z.ZodObject<{
394
+ entries: z.ZodArray<z.ZodObject<{
395
+ id: z.ZodNumber;
396
+ provider: z.ZodString;
397
+ credential: z.ZodDiscriminatedUnion<[z.ZodObject<{
398
+ type: z.ZodLiteral<"oauth">;
399
+ access: z.ZodString;
400
+ expires: z.ZodNumber;
401
+ enterpriseUrl: z.ZodOptional<z.ZodString>;
402
+ projectId: z.ZodOptional<z.ZodString>;
403
+ email: z.ZodOptional<z.ZodString>;
404
+ accountId: z.ZodOptional<z.ZodString>;
405
+ refresh: z.ZodLiteral<"__remote__">;
406
+ }, z.core.$strict>, z.ZodObject<{
407
+ type: z.ZodLiteral<"api_key">;
408
+ key: z.ZodString;
409
+ }, z.core.$strict>], "type">;
410
+ identityKey: z.ZodNullable<z.ZodString>;
411
+ }, z.core.$strict>>;
412
+ }, z.core.$strict>;
@@ -0,0 +1,39 @@
1
+ export declare function json(status: number, body: unknown): Response;
2
+ export declare function resolvePeer(req: Request): string;
3
+ /**
4
+ * Constant-time byte comparison. Falls back to a manual XOR accumulator if
5
+ * `node:crypto.timingSafeEqual` isn't available. Always processes every byte
6
+ * of the longer input so length itself doesn't leak via timing.
7
+ */
8
+ export declare function timingSafeEqual(a: Uint8Array, b: Uint8Array): boolean;
9
+ export declare function isAuthorized(req: Request, tokens: ReadonlySet<string>): boolean;
10
+ /**
11
+ * Extract allow-listed passthrough headers from an inbound request. Keys are
12
+ * lowercased; empty values are dropped. Called once per request in
13
+ * `handleFormatEndpoint`; parsers then read `options.headers`.
14
+ */
15
+ export declare function captureRequestHeaders(headers: Headers): Record<string, string>;
16
+ /**
17
+ * Resolve a prompt-cache identity from inbound request body + headers.
18
+ * Order of precedence (first wins):
19
+ * 1. Body `prompt_cache_key`
20
+ * 2. Body `metadata.{prompt_cache_key,session_id,conversation_id}`
21
+ * 3. Header `x-prompt-cache-key`
22
+ * 4. Header `session_id` / `conversation_id` (OpenAI code backend / ChatGPT-OAuth surface)
23
+ * 5. Header `x-session-id` / `x-conversation-id` (common informal)
24
+ * Returns undefined when none present; the gateway then derives a stable
25
+ * UUID from the request's stable parts.
26
+ */
27
+ export declare function resolvePromptCacheKey(body: unknown, headers?: Headers): string | undefined;
28
+ /**
29
+ * CORS headers for the auth-gateway. Currently echoes a wildcard origin; the
30
+ * request is accepted so future tightening can mirror `Origin` without
31
+ * threading the request through every caller.
32
+ */
33
+ export declare function corsHeaders(_req: Request): Record<string, string>;
34
+ /**
35
+ * Re-emit `response` with CORS headers merged. The original response body is
36
+ * passed through unchanged. Used by the gateway wrapper so every outbound
37
+ * format-endpoint response carries the same CORS surface as the preflight.
38
+ */
39
+ export declare function withCors(response: Response, req: Request): Response;
@@ -0,0 +1,3 @@
1
+ export * from "./http";
2
+ export * from "./server";
3
+ export * from "./types";
@@ -0,0 +1,17 @@
1
+ import type { AuthStorage } from "../auth-storage";
2
+ import type { Api, Model } from "../types";
3
+ import type { AuthGatewayServerHandle, AuthGatewayServerOptions } from "./types";
4
+ export type ModelResolver = (modelId: string) => Model<Api> | undefined;
5
+ export interface AuthGatewayBootOptions extends AuthGatewayServerOptions {
6
+ /** Source of credentials. Caller wires this to a broker-backed AuthStorage. */
7
+ storage: AuthStorage;
8
+ /**
9
+ * Resolve a client-requested model id to a pi-ai Model. Caller supplies
10
+ * this from a ModelRegistry (lives in `coding-agent` to avoid an inverse
11
+ * dependency in `pi-ai`).
12
+ */
13
+ resolveModel: ModelResolver;
14
+ /** Optional supplier for `/v1/models` listing. Returns the full model array. */
15
+ listModels?: () => Iterable<Model<Api>>;
16
+ }
17
+ export declare function startAuthGateway(opts: AuthGatewayBootOptions): AuthGatewayServerHandle;
@@ -0,0 +1,115 @@
1
+ import type { Effort } from "../model-thinking";
2
+ import type { AssistantMessage, AssistantMessageEventStream, CacheRetention, Context, ServiceTier } from "../types";
3
+ /**
4
+ * Wire types for the gjc auth-gateway.
5
+ *
6
+ * The gateway sits between unauthenticated clients (containerized gjc,
7
+ * llm-git, …) and the broker. It accepts provider-format HTTP requests
8
+ * (OpenAI chat-completions / Anthropic messages / OpenAI Responses),
9
+ * dispatches them through pi-ai's `streamSimple()`, and translates the
10
+ * canonical event stream back to the matching wire format. The gateway
11
+ * injects `Authorization` server-side so clients never see access tokens.
12
+ */
13
+ /** Default bind. Loopback-only — front with reverse proxy for remote access. */
14
+ export declare const DEFAULT_AUTH_GATEWAY_BIND = "127.0.0.1:4000";
15
+ export type AuthGatewayToolChoice = "auto" | "none" | "required" | {
16
+ name: string;
17
+ };
18
+ export interface AuthGatewayParsedRequestOptions {
19
+ maxOutputTokens?: number;
20
+ temperature?: number;
21
+ topP?: number;
22
+ topK?: number;
23
+ /** OpenAI nucleus-min sampling (`min_p`). */
24
+ minP?: number;
25
+ /** Anthropic `stop_sequences` / OpenAI `stop`. */
26
+ stopSequences?: string[];
27
+ /** OpenAI `presence_penalty`. */
28
+ presencePenalty?: number;
29
+ /** OpenAI `frequency_penalty`. */
30
+ frequencyPenalty?: number;
31
+ /** OpenRouter / vLLM `repetition_penalty`. */
32
+ repetitionPenalty?: number;
33
+ /** OpenAI deterministic-sampling `seed`. */
34
+ seed?: number;
35
+ /** OpenAI `logit_bias` map (token id → bias). */
36
+ logitBias?: Record<string, number>;
37
+ /** OpenAI `response_format` (text | json_object | json_schema). Opaque passthrough. */
38
+ responseFormat?: unknown;
39
+ toolChoice?: AuthGatewayToolChoice;
40
+ /** OpenAI `parallel_tool_calls`. */
41
+ parallelToolCalls?: boolean;
42
+ /** Effort-level reasoning request (OpenAI Responses / Chat `reasoning_effort`). */
43
+ reasoning?: Effort;
44
+ /** Force-disable reasoning (Anthropic `thinking: { type: "disabled" }`). */
45
+ disableReasoning?: boolean;
46
+ /**
47
+ * Explicit Anthropic `thinking.budget_tokens`. Mirrors Rust's
48
+ * `resolve_thinking_budget`: pins onto whichever effort the client
49
+ * requested (defaulting to High when unspecified). Preferred over the
50
+ * removed legacy single-number `thinkingBudget` for new code.
51
+ */
52
+ explicitThinkingBudgetTokens?: number;
53
+ /** Per-effort thinking budget map. */
54
+ thinkingBudgets?: Partial<Record<Effort, number>>;
55
+ /** Suppress the provider's reasoning summary stream. */
56
+ hideThinkingSummary?: boolean;
57
+ /** OpenAI service tier (auto|default|flex|scale|priority). */
58
+ serviceTier?: ServiceTier;
59
+ /** Cache retention hint derived from inbound `cache_control` markers. */
60
+ cacheRetention?: CacheRetention;
61
+ /** OpenAI Responses `prompt_cache_key`; bridges to pi-ai `sessionId`. */
62
+ promptCacheKey?: string;
63
+ /** OpenAI Responses `previous_response_id` for response chaining. */
64
+ previousResponseId?: string;
65
+ /** OpenAI / abuse-tracking `user` field. */
66
+ user?: string;
67
+ /**
68
+ * Provider-specific metadata. Anthropic uses `metadata.user_id`; OpenRouter
69
+ * carries routing hints; xAI uses `search_parameters`; OpenAI accepts a
70
+ * free-form bag. The gateway forwards as-is.
71
+ */
72
+ metadata?: Record<string, unknown>;
73
+ /**
74
+ * Captured allow-listed passthrough headers (anthropic-beta,
75
+ * anthropic-version, openai-organization, openai-project, openai-beta,
76
+ * x-stainless-*). Keys are lowercased.
77
+ */
78
+ headers?: Record<string, string>;
79
+ /**
80
+ * Escape hatch for provider-specific request controls that don't yet have a
81
+ * first-class field. Prefer adding a typed field over widening this.
82
+ */
83
+ extra?: Record<string, unknown>;
84
+ }
85
+ export interface AuthGatewayParsedRequest {
86
+ modelId: string;
87
+ context: Context;
88
+ stream: boolean;
89
+ options: AuthGatewayParsedRequestOptions;
90
+ }
91
+ export interface AuthGatewayFormatModule {
92
+ parseRequest(body: unknown, headers?: Headers): AuthGatewayParsedRequest;
93
+ encodeResponse(message: AssistantMessage, requestedModelId: string): Record<string, unknown>;
94
+ encodeStream(events: AssistantMessageEventStream, requestedModelId: string, options?: AuthGatewayParsedRequestOptions): ReadableStream<Uint8Array>;
95
+ /**
96
+ * Emit a protocol-specific error envelope. OpenAI returns
97
+ * `{ error: { message, type } }`; Anthropic returns
98
+ * `{ type: "error", error: { type, message } }`.
99
+ */
100
+ formatError(status: number, type: string, message: string): Response;
101
+ }
102
+ export interface AuthGatewayServerOptions {
103
+ /** Listen address. Default `127.0.0.1:4000`. */
104
+ bind?: string;
105
+ /** Accept any of these bearer tokens. Empty allows unauthenticated calls. */
106
+ bearerTokens: string[];
107
+ /** Version surfaced on `/healthz`. */
108
+ version?: string;
109
+ }
110
+ export interface AuthGatewayServerHandle {
111
+ url: string;
112
+ port: number;
113
+ hostname: string;
114
+ close(): Promise<void>;
115
+ }