@aryee337/aery-ai 0.2.28 → 0.2.29

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 (417) hide show
  1. package/CHANGELOG.md +2914 -0
  2. package/README.md +614 -813
  3. package/package.json +140 -105
  4. package/src/api-registry.ts +96 -0
  5. package/src/auth-broker/client.ts +358 -0
  6. package/src/auth-broker/index.ts +5 -0
  7. package/src/auth-broker/refresher.ts +117 -0
  8. package/src/auth-broker/remote-store.ts +623 -0
  9. package/src/auth-broker/server.ts +644 -0
  10. package/src/auth-broker/types.ts +127 -0
  11. package/src/auth-broker/wire-schemas.ts +200 -0
  12. package/src/auth-gateway/http.ts +194 -0
  13. package/src/auth-gateway/index.ts +3 -0
  14. package/src/auth-gateway/server.ts +818 -0
  15. package/src/auth-gateway/types.ts +143 -0
  16. package/src/auth-storage.ts +4422 -0
  17. package/src/index.ts +54 -0
  18. package/src/model-cache.ts +129 -0
  19. package/src/model-manager.ts +469 -0
  20. package/src/model-thinking.ts +782 -0
  21. package/src/models.json +83530 -0
  22. package/src/models.json.d.ts +9 -0
  23. package/src/models.ts +56 -0
  24. package/src/prompts/turn-aborted-guidance.md +4 -0
  25. package/src/provider-details.ts +90 -0
  26. package/src/provider-models/bundled-references.ts +38 -0
  27. package/src/provider-models/descriptors.ts +355 -0
  28. package/src/provider-models/google.ts +88 -0
  29. package/src/provider-models/index.ts +5 -0
  30. package/src/provider-models/ollama.ts +153 -0
  31. package/src/provider-models/openai-compat.ts +2817 -0
  32. package/src/provider-models/special.ts +67 -0
  33. package/src/providers/aery-native-client.ts +228 -0
  34. package/src/providers/aery-native-server.ts +212 -0
  35. package/src/providers/amazon-bedrock.ts +873 -0
  36. package/src/providers/anthropic-client.ts +318 -0
  37. package/src/providers/anthropic-messages-server-schema.ts +243 -0
  38. package/src/providers/anthropic-messages-server.ts +683 -0
  39. package/src/providers/anthropic-wire.ts +268 -0
  40. package/src/providers/anthropic.ts +3094 -0
  41. package/src/providers/aws-credentials.ts +501 -0
  42. package/src/providers/aws-eventstream.ts +185 -0
  43. package/src/providers/aws-sigv4.ts +218 -0
  44. package/src/providers/azure-openai-responses.ts +361 -0
  45. package/src/providers/cursor/gen/agent_pb.ts +15274 -0
  46. package/src/providers/cursor/proto/agent.proto +3526 -0
  47. package/src/providers/cursor/proto/buf.gen.yaml +6 -0
  48. package/src/providers/cursor/proto/buf.yaml +17 -0
  49. package/src/providers/cursor.ts +2621 -0
  50. package/src/providers/error-message.ts +21 -0
  51. package/src/providers/github-copilot-headers.ts +140 -0
  52. package/src/providers/gitlab-duo.ts +372 -0
  53. package/src/providers/google-auth.ts +252 -0
  54. package/src/providers/google-gemini-cli.ts +809 -0
  55. package/src/providers/google-gemini-headers.ts +41 -0
  56. package/src/providers/google-shared.ts +917 -0
  57. package/src/providers/google-types.ts +167 -0
  58. package/src/providers/google-vertex.ts +91 -0
  59. package/src/providers/google.ts +41 -0
  60. package/src/providers/grammar.ts +70 -0
  61. package/src/providers/kimi.ts +52 -0
  62. package/src/providers/mock.ts +496 -0
  63. package/src/providers/ollama.ts +644 -0
  64. package/src/providers/openai-anthropic-shim.ts +138 -0
  65. package/src/providers/openai-chat-server-schema.ts +252 -0
  66. package/src/providers/openai-chat-server.ts +647 -0
  67. package/src/providers/openai-codex/constants.ts +43 -0
  68. package/src/providers/openai-codex/request-transformer.ts +161 -0
  69. package/src/providers/openai-codex/response-handler.ts +81 -0
  70. package/src/providers/openai-codex-responses.ts +3018 -0
  71. package/src/providers/openai-completions-compat.ts +300 -0
  72. package/src/providers/openai-completions.ts +1979 -0
  73. package/src/providers/openai-responses-server-schema.ts +290 -0
  74. package/src/providers/openai-responses-server.ts +1183 -0
  75. package/src/providers/openai-responses-shared.ts +873 -0
  76. package/src/providers/openai-responses.ts +679 -0
  77. package/src/providers/register-builtins.ts +436 -0
  78. package/src/providers/synthetic.ts +50 -0
  79. package/src/providers/transform-messages.ts +382 -0
  80. package/src/providers/vision-guard.ts +31 -0
  81. package/src/providers/xai-responses.ts +82 -0
  82. package/src/rate-limit-utils.ts +84 -0
  83. package/src/stream.ts +1065 -0
  84. package/src/types.ts +944 -0
  85. package/src/usage/claude.ts +482 -0
  86. package/src/usage/gemini.ts +250 -0
  87. package/src/usage/github-copilot.ts +421 -0
  88. package/src/usage/google-antigravity.ts +201 -0
  89. package/src/usage/kimi.ts +271 -0
  90. package/src/usage/minimax-code.ts +31 -0
  91. package/src/usage/openai-codex.ts +503 -0
  92. package/src/usage/shared.ts +10 -0
  93. package/src/usage/zai.ts +247 -0
  94. package/src/usage.ts +185 -0
  95. package/src/utils/abort.ts +51 -0
  96. package/src/utils/abortable-iterator.ts +69 -0
  97. package/src/utils/anthropic-auth.ts +93 -0
  98. package/src/utils/discovery/antigravity.ts +261 -0
  99. package/src/utils/discovery/codex.ts +371 -0
  100. package/src/utils/discovery/cursor.ts +306 -0
  101. package/src/utils/discovery/gemini.ts +248 -0
  102. package/src/utils/discovery/index.ts +4 -0
  103. package/src/utils/discovery/openai-compatible.ts +224 -0
  104. package/src/utils/event-stream.ts +142 -0
  105. package/src/utils/fireworks-model-id.ts +30 -0
  106. package/src/utils/foundry.ts +8 -0
  107. package/src/utils/http-inspector.ts +176 -0
  108. package/src/utils/idle-iterator.ts +267 -0
  109. package/src/utils/json-parse.ts +182 -0
  110. package/src/utils/oauth/__tests__/xai-oauth.test.ts +107 -0
  111. package/src/utils/oauth/alibaba-coding-plan.ts +59 -0
  112. package/src/utils/oauth/anthropic.ts +273 -0
  113. package/src/utils/oauth/api-key-login.ts +87 -0
  114. package/src/utils/oauth/api-key-validation.ts +92 -0
  115. package/src/utils/oauth/callback-server.ts +276 -0
  116. package/src/utils/oauth/cerebras.ts +16 -0
  117. package/src/utils/oauth/cloudflare-ai-gateway.ts +48 -0
  118. package/src/utils/oauth/cursor.ts +157 -0
  119. package/src/utils/oauth/deepseek.ts +53 -0
  120. package/src/utils/oauth/firepass.ts +24 -0
  121. package/src/utils/oauth/fireworks.ts +15 -0
  122. package/src/utils/oauth/github-copilot.ts +362 -0
  123. package/src/utils/oauth/gitlab-duo.ts +123 -0
  124. package/src/utils/oauth/google-antigravity.ts +200 -0
  125. package/src/utils/oauth/google-gemini-cli.ts +256 -0
  126. package/src/utils/oauth/google-oauth-shared.ts +110 -0
  127. package/src/utils/oauth/huggingface.ts +62 -0
  128. package/src/utils/oauth/index.ts +484 -0
  129. package/src/utils/oauth/kagi.ts +47 -0
  130. package/src/utils/oauth/kilo.ts +87 -0
  131. package/src/utils/oauth/kimi.ts +254 -0
  132. package/src/utils/oauth/litellm.ts +47 -0
  133. package/src/utils/oauth/lm-studio.ts +38 -0
  134. package/src/utils/oauth/minimax-code.ts +78 -0
  135. package/src/utils/oauth/moonshot.ts +23 -0
  136. package/src/utils/oauth/nanogpt.ts +15 -0
  137. package/src/utils/oauth/nvidia.ts +70 -0
  138. package/src/utils/oauth/oauth.html +203 -0
  139. package/src/utils/oauth/ollama-cloud.ts +28 -0
  140. package/src/utils/oauth/ollama.ts +47 -0
  141. package/src/utils/oauth/openai-codex.ts +299 -0
  142. package/src/utils/oauth/opencode.ts +49 -0
  143. package/src/utils/oauth/openrouter.ts +20 -0
  144. package/src/utils/oauth/parallel.ts +46 -0
  145. package/src/utils/oauth/perplexity.ts +206 -0
  146. package/src/utils/oauth/pkce.ts +18 -0
  147. package/src/utils/oauth/qianfan.ts +58 -0
  148. package/src/utils/oauth/qwen-portal.ts +60 -0
  149. package/src/utils/oauth/synthetic.ts +15 -0
  150. package/src/utils/oauth/tavily.ts +46 -0
  151. package/src/utils/oauth/together.ts +16 -0
  152. package/src/utils/oauth/types.ts +99 -0
  153. package/src/utils/oauth/venice.ts +59 -0
  154. package/src/utils/oauth/vercel-ai-gateway.ts +47 -0
  155. package/src/utils/oauth/vllm.ts +40 -0
  156. package/src/utils/oauth/wafer.ts +50 -0
  157. package/src/utils/oauth/xai-oauth.ts +342 -0
  158. package/src/utils/oauth/xiaomi.ts +139 -0
  159. package/src/utils/oauth/zai.ts +60 -0
  160. package/src/utils/oauth/zenmux.ts +15 -0
  161. package/src/utils/oauth/zhipu.ts +60 -0
  162. package/src/utils/overflow.ts +137 -0
  163. package/src/utils/parse-bind.ts +54 -0
  164. package/src/utils/provider-response.ts +30 -0
  165. package/src/utils/request-debug.ts +336 -0
  166. package/src/utils/retry-after.ts +110 -0
  167. package/src/utils/retry.ts +54 -0
  168. package/src/utils/schema/CONSTRAINTS.md +164 -0
  169. package/src/utils/schema/adapt.ts +36 -0
  170. package/src/utils/schema/compatibility.ts +435 -0
  171. package/src/utils/schema/dereference.ts +98 -0
  172. package/src/utils/schema/draft.ts +341 -0
  173. package/src/utils/schema/equality.ts +97 -0
  174. package/src/utils/schema/fields.ts +191 -0
  175. package/src/utils/schema/index.ts +13 -0
  176. package/src/utils/schema/json-schema-validator.ts +577 -0
  177. package/src/utils/schema/meta-validator.ts +167 -0
  178. package/src/utils/schema/normalize.ts +1588 -0
  179. package/src/utils/schema/spill.ts +43 -0
  180. package/src/utils/schema/stamps.ts +97 -0
  181. package/src/utils/schema/types.ts +10 -0
  182. package/src/utils/schema/wire.ts +293 -0
  183. package/src/utils/schema/zod-decontaminate.ts +331 -0
  184. package/src/utils/sdk-stream-timeout.ts +43 -0
  185. package/src/utils/sse-debug.ts +289 -0
  186. package/src/utils/stream-markup-healing.ts +612 -0
  187. package/src/utils/tool-choice.ts +99 -0
  188. package/src/utils/validation.ts +1024 -0
  189. package/src/utils.ts +166 -0
  190. package/dist/api-registry.d.ts +0 -20
  191. package/dist/api-registry.d.ts.map +0 -1
  192. package/dist/api-registry.js +0 -44
  193. package/dist/api-registry.js.map +0 -1
  194. package/dist/bedrock-provider.d.ts +0 -5
  195. package/dist/bedrock-provider.d.ts.map +0 -1
  196. package/dist/bedrock-provider.js +0 -6
  197. package/dist/bedrock-provider.js.map +0 -1
  198. package/dist/cli.d.ts +0 -3
  199. package/dist/cli.d.ts.map +0 -1
  200. package/dist/cli.js +0 -130
  201. package/dist/cli.js.map +0 -1
  202. package/dist/env-api-keys.d.ts +0 -18
  203. package/dist/env-api-keys.d.ts.map +0 -1
  204. package/dist/env-api-keys.js +0 -178
  205. package/dist/env-api-keys.js.map +0 -1
  206. package/dist/image-models.d.ts +0 -10
  207. package/dist/image-models.d.ts.map +0 -1
  208. package/dist/image-models.generated.d.ts +0 -440
  209. package/dist/image-models.generated.d.ts.map +0 -1
  210. package/dist/image-models.generated.js +0 -442
  211. package/dist/image-models.generated.js.map +0 -1
  212. package/dist/image-models.js +0 -23
  213. package/dist/image-models.js.map +0 -1
  214. package/dist/images-api-registry.d.ts +0 -14
  215. package/dist/images-api-registry.d.ts.map +0 -1
  216. package/dist/images-api-registry.js +0 -22
  217. package/dist/images-api-registry.js.map +0 -1
  218. package/dist/images.d.ts +0 -4
  219. package/dist/images.d.ts.map +0 -1
  220. package/dist/images.js +0 -14
  221. package/dist/images.js.map +0 -1
  222. package/dist/index.d.ts +0 -32
  223. package/dist/index.d.ts.map +0 -1
  224. package/dist/index.js +0 -20
  225. package/dist/index.js.map +0 -1
  226. package/dist/models.d.ts +0 -18
  227. package/dist/models.d.ts.map +0 -1
  228. package/dist/models.generated.d.ts +0 -17707
  229. package/dist/models.generated.d.ts.map +0 -1
  230. package/dist/models.generated.js +0 -16561
  231. package/dist/models.generated.js.map +0 -1
  232. package/dist/models.js +0 -71
  233. package/dist/models.js.map +0 -1
  234. package/dist/oauth.d.ts +0 -2
  235. package/dist/oauth.d.ts.map +0 -1
  236. package/dist/oauth.js +0 -2
  237. package/dist/oauth.js.map +0 -1
  238. package/dist/providers/aery-error-formatting.d.ts +0 -13
  239. package/dist/providers/aery-error-formatting.d.ts.map +0 -1
  240. package/dist/providers/aery-error-formatting.js +0 -112
  241. package/dist/providers/aery-error-formatting.js.map +0 -1
  242. package/dist/providers/amazon-bedrock.d.ts +0 -38
  243. package/dist/providers/amazon-bedrock.d.ts.map +0 -1
  244. package/dist/providers/amazon-bedrock.js +0 -763
  245. package/dist/providers/amazon-bedrock.js.map +0 -1
  246. package/dist/providers/anthropic.d.ts +0 -71
  247. package/dist/providers/anthropic.d.ts.map +0 -1
  248. package/dist/providers/anthropic.js +0 -949
  249. package/dist/providers/anthropic.js.map +0 -1
  250. package/dist/providers/azure-openai-responses.d.ts +0 -15
  251. package/dist/providers/azure-openai-responses.d.ts.map +0 -1
  252. package/dist/providers/azure-openai-responses.js +0 -225
  253. package/dist/providers/azure-openai-responses.js.map +0 -1
  254. package/dist/providers/cloudflare.d.ts +0 -13
  255. package/dist/providers/cloudflare.d.ts.map +0 -1
  256. package/dist/providers/cloudflare.js +0 -26
  257. package/dist/providers/cloudflare.js.map +0 -1
  258. package/dist/providers/faux.d.ts +0 -56
  259. package/dist/providers/faux.d.ts.map +0 -1
  260. package/dist/providers/faux.js +0 -368
  261. package/dist/providers/faux.js.map +0 -1
  262. package/dist/providers/github-copilot-headers.d.ts +0 -8
  263. package/dist/providers/github-copilot-headers.d.ts.map +0 -1
  264. package/dist/providers/github-copilot-headers.js +0 -29
  265. package/dist/providers/github-copilot-headers.js.map +0 -1
  266. package/dist/providers/google-gemini-cli.d.ts +0 -74
  267. package/dist/providers/google-gemini-cli.d.ts.map +0 -1
  268. package/dist/providers/google-gemini-cli.js +0 -779
  269. package/dist/providers/google-gemini-cli.js.map +0 -1
  270. package/dist/providers/google-shared.d.ts +0 -70
  271. package/dist/providers/google-shared.d.ts.map +0 -1
  272. package/dist/providers/google-shared.js +0 -329
  273. package/dist/providers/google-shared.js.map +0 -1
  274. package/dist/providers/google-vertex.d.ts +0 -15
  275. package/dist/providers/google-vertex.d.ts.map +0 -1
  276. package/dist/providers/google-vertex.js +0 -442
  277. package/dist/providers/google-vertex.js.map +0 -1
  278. package/dist/providers/google.d.ts +0 -13
  279. package/dist/providers/google.d.ts.map +0 -1
  280. package/dist/providers/google.js +0 -400
  281. package/dist/providers/google.js.map +0 -1
  282. package/dist/providers/images/openrouter.d.ts +0 -3
  283. package/dist/providers/images/openrouter.d.ts.map +0 -1
  284. package/dist/providers/images/openrouter.js +0 -129
  285. package/dist/providers/images/openrouter.js.map +0 -1
  286. package/dist/providers/images/register-builtins.d.ts +0 -4
  287. package/dist/providers/images/register-builtins.d.ts.map +0 -1
  288. package/dist/providers/images/register-builtins.js +0 -34
  289. package/dist/providers/images/register-builtins.js.map +0 -1
  290. package/dist/providers/mistral.d.ts +0 -25
  291. package/dist/providers/mistral.d.ts.map +0 -1
  292. package/dist/providers/mistral.js +0 -535
  293. package/dist/providers/mistral.js.map +0 -1
  294. package/dist/providers/openai-codex-responses.d.ts +0 -30
  295. package/dist/providers/openai-codex-responses.d.ts.map +0 -1
  296. package/dist/providers/openai-codex-responses.js +0 -1090
  297. package/dist/providers/openai-codex-responses.js.map +0 -1
  298. package/dist/providers/openai-completions.d.ts +0 -19
  299. package/dist/providers/openai-completions.d.ts.map +0 -1
  300. package/dist/providers/openai-completions.js +0 -950
  301. package/dist/providers/openai-completions.js.map +0 -1
  302. package/dist/providers/openai-prompt-cache.d.ts +0 -3
  303. package/dist/providers/openai-prompt-cache.d.ts.map +0 -1
  304. package/dist/providers/openai-prompt-cache.js +0 -10
  305. package/dist/providers/openai-prompt-cache.js.map +0 -1
  306. package/dist/providers/openai-responses-shared.d.ts +0 -18
  307. package/dist/providers/openai-responses-shared.d.ts.map +0 -1
  308. package/dist/providers/openai-responses-shared.js +0 -492
  309. package/dist/providers/openai-responses-shared.js.map +0 -1
  310. package/dist/providers/openai-responses.d.ts +0 -13
  311. package/dist/providers/openai-responses.d.ts.map +0 -1
  312. package/dist/providers/openai-responses.js +0 -237
  313. package/dist/providers/openai-responses.js.map +0 -1
  314. package/dist/providers/register-builtins.d.ts +0 -38
  315. package/dist/providers/register-builtins.d.ts.map +0 -1
  316. package/dist/providers/register-builtins.js +0 -278
  317. package/dist/providers/register-builtins.js.map +0 -1
  318. package/dist/providers/simple-options.d.ts +0 -8
  319. package/dist/providers/simple-options.d.ts.map +0 -1
  320. package/dist/providers/simple-options.js +0 -41
  321. package/dist/providers/simple-options.js.map +0 -1
  322. package/dist/providers/transform-messages.d.ts +0 -8
  323. package/dist/providers/transform-messages.d.ts.map +0 -1
  324. package/dist/providers/transform-messages.js +0 -184
  325. package/dist/providers/transform-messages.js.map +0 -1
  326. package/dist/session-resources.d.ts +0 -4
  327. package/dist/session-resources.d.ts.map +0 -1
  328. package/dist/session-resources.js +0 -22
  329. package/dist/session-resources.js.map +0 -1
  330. package/dist/stream.d.ts +0 -8
  331. package/dist/stream.d.ts.map +0 -1
  332. package/dist/stream.js +0 -27
  333. package/dist/stream.js.map +0 -1
  334. package/dist/types.d.ts +0 -498
  335. package/dist/types.d.ts.map +0 -1
  336. package/dist/types.js +0 -2
  337. package/dist/types.js.map +0 -1
  338. package/dist/utils/diagnostics.d.ts +0 -19
  339. package/dist/utils/diagnostics.d.ts.map +0 -1
  340. package/dist/utils/diagnostics.js +0 -25
  341. package/dist/utils/diagnostics.js.map +0 -1
  342. package/dist/utils/event-stream.d.ts +0 -21
  343. package/dist/utils/event-stream.d.ts.map +0 -1
  344. package/dist/utils/event-stream.js +0 -81
  345. package/dist/utils/event-stream.js.map +0 -1
  346. package/dist/utils/hash.d.ts +0 -3
  347. package/dist/utils/hash.d.ts.map +0 -1
  348. package/dist/utils/hash.js +0 -14
  349. package/dist/utils/hash.js.map +0 -1
  350. package/dist/utils/headers.d.ts +0 -2
  351. package/dist/utils/headers.d.ts.map +0 -1
  352. package/dist/utils/headers.js +0 -8
  353. package/dist/utils/headers.js.map +0 -1
  354. package/dist/utils/json-parse.d.ts +0 -16
  355. package/dist/utils/json-parse.d.ts.map +0 -1
  356. package/dist/utils/json-parse.js +0 -113
  357. package/dist/utils/json-parse.js.map +0 -1
  358. package/dist/utils/node-http-proxy.d.ts +0 -10
  359. package/dist/utils/node-http-proxy.d.ts.map +0 -1
  360. package/dist/utils/node-http-proxy.js +0 -97
  361. package/dist/utils/node-http-proxy.js.map +0 -1
  362. package/dist/utils/oauth/anthropic.d.ts +0 -25
  363. package/dist/utils/oauth/anthropic.d.ts.map +0 -1
  364. package/dist/utils/oauth/anthropic.js +0 -335
  365. package/dist/utils/oauth/anthropic.js.map +0 -1
  366. package/dist/utils/oauth/device-code.d.ts +0 -19
  367. package/dist/utils/oauth/device-code.d.ts.map +0 -1
  368. package/dist/utils/oauth/device-code.js +0 -55
  369. package/dist/utils/oauth/device-code.js.map +0 -1
  370. package/dist/utils/oauth/github-copilot.d.ts +0 -30
  371. package/dist/utils/oauth/github-copilot.d.ts.map +0 -1
  372. package/dist/utils/oauth/github-copilot.js +0 -268
  373. package/dist/utils/oauth/github-copilot.js.map +0 -1
  374. package/dist/utils/oauth/google-antigravity.d.ts +0 -26
  375. package/dist/utils/oauth/google-antigravity.d.ts.map +0 -1
  376. package/dist/utils/oauth/google-antigravity.js +0 -377
  377. package/dist/utils/oauth/google-antigravity.js.map +0 -1
  378. package/dist/utils/oauth/google-gemini-cli.d.ts +0 -26
  379. package/dist/utils/oauth/google-gemini-cli.d.ts.map +0 -1
  380. package/dist/utils/oauth/google-gemini-cli.js +0 -482
  381. package/dist/utils/oauth/google-gemini-cli.js.map +0 -1
  382. package/dist/utils/oauth/index.d.ts +0 -63
  383. package/dist/utils/oauth/index.d.ts.map +0 -1
  384. package/dist/utils/oauth/index.js +0 -131
  385. package/dist/utils/oauth/index.js.map +0 -1
  386. package/dist/utils/oauth/oauth-page.d.ts +0 -3
  387. package/dist/utils/oauth/oauth-page.d.ts.map +0 -1
  388. package/dist/utils/oauth/oauth-page.js +0 -105
  389. package/dist/utils/oauth/oauth-page.js.map +0 -1
  390. package/dist/utils/oauth/openai-codex.d.ts +0 -34
  391. package/dist/utils/oauth/openai-codex.d.ts.map +0 -1
  392. package/dist/utils/oauth/openai-codex.js +0 -385
  393. package/dist/utils/oauth/openai-codex.js.map +0 -1
  394. package/dist/utils/oauth/pkce.d.ts +0 -13
  395. package/dist/utils/oauth/pkce.d.ts.map +0 -1
  396. package/dist/utils/oauth/pkce.js +0 -31
  397. package/dist/utils/oauth/pkce.js.map +0 -1
  398. package/dist/utils/oauth/types.d.ts +0 -64
  399. package/dist/utils/oauth/types.d.ts.map +0 -1
  400. package/dist/utils/oauth/types.js +0 -2
  401. package/dist/utils/oauth/types.js.map +0 -1
  402. package/dist/utils/overflow.d.ts +0 -56
  403. package/dist/utils/overflow.d.ts.map +0 -1
  404. package/dist/utils/overflow.js +0 -151
  405. package/dist/utils/overflow.js.map +0 -1
  406. package/dist/utils/sanitize-unicode.d.ts +0 -22
  407. package/dist/utils/sanitize-unicode.d.ts.map +0 -1
  408. package/dist/utils/sanitize-unicode.js +0 -26
  409. package/dist/utils/sanitize-unicode.js.map +0 -1
  410. package/dist/utils/typebox-helpers.d.ts +0 -17
  411. package/dist/utils/typebox-helpers.d.ts.map +0 -1
  412. package/dist/utils/typebox-helpers.js +0 -21
  413. package/dist/utils/typebox-helpers.js.map +0 -1
  414. package/dist/utils/validation.d.ts +0 -18
  415. package/dist/utils/validation.d.ts.map +0 -1
  416. package/dist/utils/validation.js +0 -281
  417. package/dist/utils/validation.js.map +0 -1
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Local mirror of the subset of `@google/genai` types this package consumes.
3
+ *
4
+ * Field shapes match Gemini / Vertex AI wire format 1:1. Enum-shaped values are
5
+ * modelled as string literal unions so they pass through `JSON.stringify` and
6
+ * `JSON.parse` unchanged.
7
+ *
8
+ * Keep this file in sync with the actual request/response surface of:
9
+ * - `POST {generativelanguage,aiplatform}.googleapis.com/.../models/{model}:streamGenerateContent?alt=sse`
10
+ * - The Cloud Code Assist endpoint used by `google-gemini-cli.ts`
11
+ */
12
+
13
+ /** Mirror of `@google/genai`'s `FinishReason` string enum. */
14
+ export type FinishReason =
15
+ | "FINISH_REASON_UNSPECIFIED"
16
+ | "STOP"
17
+ | "MAX_TOKENS"
18
+ | "SAFETY"
19
+ | "RECITATION"
20
+ | "LANGUAGE"
21
+ | "OTHER"
22
+ | "BLOCKLIST"
23
+ | "PROHIBITED_CONTENT"
24
+ | "SPII"
25
+ | "MALFORMED_FUNCTION_CALL"
26
+ | "IMAGE_SAFETY"
27
+ | "IMAGE_PROHIBITED_CONTENT"
28
+ | "IMAGE_RECITATION"
29
+ | "IMAGE_OTHER"
30
+ | "UNEXPECTED_TOOL_CALL"
31
+ | "NO_IMAGE";
32
+
33
+ /** Mirror of `@google/genai`'s `FunctionCallingConfigMode` string enum. */
34
+ export type FunctionCallingConfigMode = "MODE_UNSPECIFIED" | "AUTO" | "NONE" | "ANY" | "VALIDATED";
35
+
36
+ /** Mirror of `@google/genai`'s `ThinkingLevel` string enum. */
37
+ export type ThinkingLevel = "THINKING_LEVEL_UNSPECIFIED" | "MINIMAL" | "LOW" | "MEDIUM" | "HIGH";
38
+
39
+ /** Inline base64-encoded data part. */
40
+ export interface InlineDataPart {
41
+ mimeType: string;
42
+ data: string;
43
+ }
44
+
45
+ /** Function call emitted by the model. */
46
+ export interface FunctionCallPart {
47
+ name?: string;
48
+ args?: Record<string, unknown>;
49
+ id?: string;
50
+ }
51
+
52
+ /** Tool execution result fed back to the model. */
53
+ export interface FunctionResponsePart {
54
+ name: string;
55
+ response: Record<string, unknown>;
56
+ parts?: Part[];
57
+ id?: string;
58
+ }
59
+
60
+ /**
61
+ * A single piece of a `Content` message. Mirrors the SDK's union by keeping
62
+ * every optional field — the model and the wire treat shape as discriminator.
63
+ */
64
+ export interface Part {
65
+ text?: string;
66
+ thought?: boolean;
67
+ thoughtSignature?: string;
68
+ inlineData?: InlineDataPart;
69
+ functionCall?: FunctionCallPart;
70
+ functionResponse?: FunctionResponsePart;
71
+ }
72
+
73
+ /** Conversation turn. Roles: `"user"`, `"model"`, optionally absent for system instructions. */
74
+ export interface Content {
75
+ role?: string;
76
+ parts?: Part[];
77
+ }
78
+
79
+ /** Thinking/reasoning configuration shared by Gemini 2.x and 3.x models. */
80
+ export interface ThinkingConfig {
81
+ includeThoughts?: boolean;
82
+ thinkingBudget?: number;
83
+ thinkingLevel?: ThinkingLevel;
84
+ }
85
+
86
+ /** Function declaration entry inside `tools[].functionDeclarations`. */
87
+ export interface FunctionDeclaration {
88
+ name: string;
89
+ description?: string;
90
+ parameters?: Record<string, unknown>;
91
+ parametersJsonSchema?: Record<string, unknown>;
92
+ }
93
+
94
+ /** Tool group as accepted at the request top level. */
95
+ export interface ToolDeclaration {
96
+ functionDeclarations: Record<string, unknown>[];
97
+ }
98
+
99
+ /** Tool selection mode container. */
100
+ export interface ToolConfig {
101
+ functionCallingConfig?: {
102
+ mode: FunctionCallingConfigMode;
103
+ allowedFunctionNames?: string[];
104
+ };
105
+ }
106
+
107
+ /**
108
+ * Generation/sampling and request-shape options passed via the SDK's `config`.
109
+ *
110
+ * Fields that the wire format places at the request body root (systemInstruction,
111
+ * tools, toolConfig, safetySettings, cachedContent) live here too — the
112
+ * transformer in `google-shared.ts` lifts them out when serializing.
113
+ */
114
+ export interface GenerateContentConfig {
115
+ temperature?: number;
116
+ maxOutputTokens?: number;
117
+ topP?: number;
118
+ topK?: number;
119
+ candidateCount?: number;
120
+ stopSequences?: string[];
121
+ presencePenalty?: number;
122
+ frequencyPenalty?: number;
123
+ seed?: number;
124
+ responseMimeType?: string;
125
+ responseSchema?: Record<string, unknown>;
126
+ responseJsonSchema?: Record<string, unknown>;
127
+ responseModalities?: string[];
128
+ systemInstruction?: Content | { role?: string; parts: { text: string }[] };
129
+ tools?: ToolDeclaration[];
130
+ toolConfig?: ToolConfig;
131
+ safetySettings?: Array<Record<string, unknown>>;
132
+ cachedContent?: string;
133
+ thinkingConfig?: ThinkingConfig;
134
+ abortSignal?: AbortSignal;
135
+ }
136
+
137
+ /** Top-level argument to `generateContentStream`. */
138
+ export interface GenerateContentParameters {
139
+ model: string;
140
+ contents: Content[];
141
+ config?: GenerateContentConfig;
142
+ }
143
+
144
+ /** Per-stream candidate envelope. */
145
+ export interface Candidate {
146
+ content?: Content;
147
+ finishReason?: FinishReason;
148
+ index?: number;
149
+ }
150
+
151
+ /** Cumulative token accounting attached to the trailing chunk. */
152
+ export interface UsageMetadata {
153
+ promptTokenCount?: number;
154
+ candidatesTokenCount?: number;
155
+ thoughtsTokenCount?: number;
156
+ totalTokenCount?: number;
157
+ cachedContentTokenCount?: number;
158
+ }
159
+
160
+ /** Single SSE chunk's parsed JSON body. */
161
+ export interface GenerateContentResponse {
162
+ candidates?: Candidate[];
163
+ usageMetadata?: UsageMetadata;
164
+ modelVersion?: string;
165
+ responseId?: string;
166
+ promptFeedback?: Record<string, unknown>;
167
+ }
@@ -0,0 +1,91 @@
1
+ import { $env } from "@aryee337/aery-utils";
2
+ import type { Context, Model, StreamFunction } from "../types";
3
+ import type { AssistantMessageEventStream } from "../utils/event-stream";
4
+ import { getVertexAccessToken } from "./google-auth";
5
+ import {
6
+ buildGoogleGenerateContentParams,
7
+ type GoogleGenAIRequestPlan,
8
+ type GoogleSharedStreamOptions,
9
+ streamGoogleGenAI,
10
+ } from "./google-shared";
11
+
12
+ export interface GoogleVertexOptions extends GoogleSharedStreamOptions {
13
+ project?: string;
14
+ location?: string;
15
+ }
16
+
17
+ const API_VERSION = "v1";
18
+
19
+ export const streamGoogleVertex: StreamFunction<"google-vertex"> = (
20
+ model: Model<"google-vertex">,
21
+ context: Context,
22
+ options?: GoogleVertexOptions,
23
+ ): AssistantMessageEventStream =>
24
+ streamGoogleGenAI({
25
+ model,
26
+ options,
27
+ api: "google-vertex",
28
+ retainTextSignature: true,
29
+ prepare: async (): Promise<GoogleGenAIRequestPlan> => {
30
+ const apiKey = resolveApiKey(options);
31
+ const params = buildGoogleGenerateContentParams(model, context, options ?? {});
32
+ const baseHeaders: Record<string, string> = {
33
+ ...(model.headers ?? {}),
34
+ ...(options?.headers ?? {}),
35
+ };
36
+
37
+ if (apiKey) {
38
+ const url = `https://aiplatform.googleapis.com/${API_VERSION}/publishers/google/models/${model.id}:streamGenerateContent?alt=sse`;
39
+ return {
40
+ params,
41
+ url,
42
+ headers: { ...baseHeaders, "x-goog-api-key": apiKey },
43
+ fetch: options?.fetch,
44
+ };
45
+ }
46
+
47
+ const project = resolveProject(options);
48
+ const location = resolveLocation(options);
49
+ const accessToken = await getVertexAccessToken({ signal: options?.signal, fetch: options?.fetch });
50
+ const host = resolveEndpointHost(location);
51
+ const url = `https://${host}/${API_VERSION}/projects/${project}/locations/${location}/publishers/google/models/${model.id}:streamGenerateContent?alt=sse`;
52
+ return {
53
+ params,
54
+ url,
55
+ headers: { ...baseHeaders, Authorization: `Bearer ${accessToken}` },
56
+ fetch: options?.fetch,
57
+ };
58
+ },
59
+ });
60
+
61
+ function resolveApiKey(options?: GoogleVertexOptions): string | undefined {
62
+ // options.apiKey may contain sentinel values like "<authenticated>" or "N/A"
63
+ // leaked from the agent loop — only use it if it looks like a real API key.
64
+ const optKey = options?.apiKey;
65
+ const realKey = optKey && !optKey.startsWith("<") && optKey !== "N/A" ? optKey : undefined;
66
+ return realKey || $env.GOOGLE_CLOUD_API_KEY;
67
+ }
68
+
69
+ function resolveProject(options?: GoogleVertexOptions): string {
70
+ const project = options?.project || $env.GOOGLE_CLOUD_PROJECT || $env.GCP_PROJECT || $env.GCLOUD_PROJECT;
71
+ if (!project) {
72
+ throw new Error(
73
+ "Vertex AI requires a project ID. Set GOOGLE_CLOUD_PROJECT/GCP_PROJECT/GCLOUD_PROJECT or pass project in options.",
74
+ );
75
+ }
76
+ return project;
77
+ }
78
+
79
+ function resolveEndpointHost(location: string): string {
80
+ return location === "global" ? "aiplatform.googleapis.com" : `${location}-aiplatform.googleapis.com`;
81
+ }
82
+ function resolveLocation(options?: GoogleVertexOptions): string {
83
+ const location =
84
+ options?.location || $env.GOOGLE_VERTEX_LOCATION || $env.GOOGLE_CLOUD_LOCATION || $env.VERTEX_LOCATION;
85
+ if (!location) {
86
+ throw new Error(
87
+ "Vertex AI requires a location. Set GOOGLE_VERTEX_LOCATION/GOOGLE_CLOUD_LOCATION/VERTEX_LOCATION or pass location in options.",
88
+ );
89
+ }
90
+ return location;
91
+ }
@@ -0,0 +1,41 @@
1
+ import { getEnvApiKey } from "../stream";
2
+ import type { Context, Model, StreamFunction } from "../types";
3
+ import type { AssistantMessageEventStream } from "../utils/event-stream";
4
+ import {
5
+ buildGoogleGenerateContentParams,
6
+ type GoogleGenAIRequestPlan,
7
+ type GoogleSharedStreamOptions,
8
+ streamGoogleGenAI,
9
+ } from "./google-shared";
10
+
11
+ export type GoogleOptions = GoogleSharedStreamOptions;
12
+
13
+ const DEFAULT_GENERATIVE_LANGUAGE_BASE = "https://generativelanguage.googleapis.com/v1beta";
14
+
15
+ export const streamGoogle: StreamFunction<"google-generative-ai"> = (
16
+ model: Model<"google-generative-ai">,
17
+ context: Context,
18
+ options?: GoogleOptions,
19
+ ): AssistantMessageEventStream =>
20
+ streamGoogleGenAI({
21
+ model,
22
+ options,
23
+ api: "google-generative-ai",
24
+ prepare: (): GoogleGenAIRequestPlan => {
25
+ const apiKey = options?.apiKey || getEnvApiKey(model.provider);
26
+ if (!apiKey) {
27
+ throw new Error("Google Generative AI requires an API key (GEMINI_API_KEY or options.apiKey).");
28
+ }
29
+ const params = buildGoogleGenerateContentParams(model, context, options ?? {});
30
+ // `model.baseUrl` already includes the API version segment when set (mirrors the
31
+ // `apiVersion: ""` reset that the SDK relied on for custom base URLs).
32
+ const base = model.baseUrl?.trim() || DEFAULT_GENERATIVE_LANGUAGE_BASE;
33
+ const url = `${base}/models/${model.id}:streamGenerateContent?alt=sse`;
34
+ const headers: Record<string, string> = {
35
+ "x-goog-api-key": apiKey,
36
+ ...(model.headers ?? {}),
37
+ ...(options?.headers ?? {}),
38
+ };
39
+ return { params, url, headers, fetch: options?.fetch };
40
+ },
41
+ });
@@ -0,0 +1,70 @@
1
+ export function compactGrammarDefinition(syntax: "lark" | "regex", definition: string): string {
2
+ if (syntax !== "lark") {
3
+ return definition;
4
+ }
5
+
6
+ return compactLarkGrammarDefinition(definition);
7
+ }
8
+
9
+ function compactLarkGrammarDefinition(definition: string): string {
10
+ const lines: string[] = [];
11
+
12
+ for (const line of definition.split(/\r?\n/)) {
13
+ const uncommented = stripLarkLineComment(line).trimEnd();
14
+ if (uncommented.trim()) {
15
+ lines.push(uncommented);
16
+ }
17
+ }
18
+
19
+ return lines.join("\n");
20
+ }
21
+
22
+ function stripLarkLineComment(line: string): string {
23
+ let inString: string | undefined;
24
+ let inRegex = false;
25
+ let escaped = false;
26
+
27
+ for (let i = 0; i < line.length; i++) {
28
+ const char = line[i];
29
+ const next = line[i + 1];
30
+
31
+ if (escaped) {
32
+ escaped = false;
33
+ continue;
34
+ }
35
+
36
+ if (char === "\\") {
37
+ escaped = true;
38
+ continue;
39
+ }
40
+
41
+ if (inString) {
42
+ if (char === inString) {
43
+ inString = undefined;
44
+ }
45
+ continue;
46
+ }
47
+
48
+ if (inRegex) {
49
+ if (char === "/") {
50
+ inRegex = false;
51
+ }
52
+ continue;
53
+ }
54
+
55
+ if (char === "/" && next === "/") {
56
+ return line.slice(0, i);
57
+ }
58
+
59
+ if (char === '"' || char === "'") {
60
+ inString = char;
61
+ continue;
62
+ }
63
+
64
+ if (char === "/") {
65
+ inRegex = true;
66
+ }
67
+ }
68
+
69
+ return line;
70
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Kimi Code provider - wraps OpenAI or Anthropic API based on format setting.
3
+ *
4
+ * Kimi offers both OpenAI-compatible and Anthropic-compatible APIs:
5
+ * - OpenAI: https://api.kimi.com/coding/v1/chat/completions
6
+ * - Anthropic: https://api.kimi.com/coding/v1/messages
7
+ *
8
+ * The Anthropic API is generally more stable and recommended.
9
+ * Note: Kimi calculates TPM rate limits based on max_tokens, not actual output.
10
+ */
11
+
12
+ import type { Api, Context, Model } from "../types";
13
+ import type { AssistantMessageEventStream } from "../utils/event-stream";
14
+ import { getKimiCommonHeaders } from "../utils/oauth/kimi";
15
+ import {
16
+ type OpenAIAnthropicApiFormat,
17
+ type OpenAIAnthropicShimOptions,
18
+ streamOpenAIAnthropicShim,
19
+ } from "./openai-anthropic-shim";
20
+
21
+ export type KimiApiFormat = OpenAIAnthropicApiFormat;
22
+
23
+ // Note: Anthropic SDK appends /v1/messages, so base URL should not include /v1
24
+ const KIMI_ANTHROPIC_BASE_URL = "https://api.kimi.com/coding";
25
+
26
+ export interface KimiOptions extends OpenAIAnthropicShimOptions {
27
+ /** API format: "openai" or "anthropic". Default: "anthropic" */
28
+ format?: KimiApiFormat;
29
+ }
30
+
31
+ /**
32
+ * Stream from Kimi Code, routing to either OpenAI or Anthropic API based on format.
33
+ * Returns synchronously like other providers - async header fetching happens internally.
34
+ */
35
+ export function streamKimi(
36
+ model: Model<"openai-completions">,
37
+ context: Context,
38
+ options?: KimiOptions,
39
+ ): AssistantMessageEventStream {
40
+ return streamOpenAIAnthropicShim(model, context, options, {
41
+ anthropicBaseUrl: KIMI_ANTHROPIC_BASE_URL,
42
+ defaultFormat: "anthropic",
43
+ extraHeaders: getKimiCommonHeaders,
44
+ });
45
+ }
46
+
47
+ /**
48
+ * Check if a model is a Kimi Code model.
49
+ */
50
+ export function isKimiModel(model: Model<Api>): boolean {
51
+ return model.provider === "kimi-code";
52
+ }