@prometheus-ai/ai 0.5.3 → 0.5.8

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 (377) hide show
  1. package/dist/types/auth-broker/remote-store.d.ts +2 -1
  2. package/dist/types/auth-broker/wire-schemas.d.ts +4 -1
  3. package/dist/types/auth-gateway/server.d.ts +19 -0
  4. package/dist/types/auth-gateway/types.d.ts +9 -3
  5. package/dist/types/auth-retry.d.ts +119 -0
  6. package/dist/types/auth-storage.d.ts +217 -8
  7. package/dist/types/errors.d.ts +24 -0
  8. package/dist/types/index.d.ts +5 -9
  9. package/dist/types/provider-details.d.ts +1 -1
  10. package/dist/types/providers/amazon-bedrock.d.ts +12 -6
  11. package/dist/types/providers/anthropic-client.d.ts +10 -3
  12. package/dist/types/providers/anthropic-messages-server-schema.d.ts +2 -2
  13. package/dist/types/providers/anthropic-messages-server.d.ts +3 -3
  14. package/dist/types/providers/anthropic-wire.d.ts +3 -3
  15. package/dist/types/providers/anthropic.d.ts +41 -34
  16. package/dist/types/providers/aws-credentials.d.ts +8 -0
  17. package/dist/types/providers/azure-openai-responses.d.ts +1 -0
  18. package/dist/types/providers/google-gemini-cli.d.ts +22 -1
  19. package/dist/types/providers/google-shared.d.ts +22 -0
  20. package/dist/types/providers/google-types.d.ts +13 -1
  21. package/dist/types/providers/mock.d.ts +8 -3
  22. package/dist/types/providers/ollama.d.ts +6 -0
  23. package/dist/types/providers/openai-chat-server-schema.d.ts +6 -3
  24. package/dist/types/providers/openai-chat-server.d.ts +3 -3
  25. package/dist/types/providers/openai-chat-wire.d.ts +644 -0
  26. package/dist/types/providers/openai-codex/request-transformer.d.ts +8 -0
  27. package/dist/types/providers/openai-codex/response-handler.d.ts +9 -0
  28. package/dist/types/providers/openai-codex-responses.d.ts +31 -2
  29. package/dist/types/providers/openai-completions-compat.d.ts +2 -25
  30. package/dist/types/providers/openai-completions.d.ts +2 -10
  31. package/dist/types/providers/openai-responses-server-schema.d.ts +4 -4
  32. package/dist/types/providers/openai-responses-server.d.ts +2 -2
  33. package/dist/types/providers/openai-responses-shared.d.ts +49 -9
  34. package/dist/types/providers/openai-responses-wire.d.ts +6065 -0
  35. package/dist/types/providers/openai-responses.d.ts +13 -4
  36. package/dist/types/providers/prometheus-native-client.d.ts +9 -0
  37. package/dist/types/providers/prometheus-native-server.d.ts +4 -3
  38. package/dist/types/providers/transform-messages.d.ts +1 -2
  39. package/dist/types/rate-limit-utils.d.ts +3 -2
  40. package/dist/types/registry/aimlapi.d.ts +4 -0
  41. package/dist/types/registry/alibaba-coding-plan.d.ts +7 -0
  42. package/dist/types/registry/amazon-bedrock.d.ts +5 -0
  43. package/dist/types/registry/anthropic.d.ts +10 -0
  44. package/dist/types/{utils/oauth → registry}/api-key-login.d.ts +8 -2
  45. package/dist/types/{utils/oauth → registry}/api-key-validation.d.ts +15 -0
  46. package/dist/types/registry/cerebras.d.ts +7 -0
  47. package/dist/types/registry/cloudflare-ai-gateway.d.ts +13 -0
  48. package/dist/types/registry/cursor.d.ts +7 -0
  49. package/dist/types/registry/deepseek.d.ts +8 -0
  50. package/dist/types/registry/derived.d.ts +5 -0
  51. package/dist/types/registry/firepass.d.ts +16 -0
  52. package/dist/types/registry/fireworks.d.ts +7 -0
  53. package/dist/types/registry/github-copilot.d.ts +7 -0
  54. package/dist/types/registry/gitlab-duo.d.ts +9 -0
  55. package/dist/types/registry/google-antigravity.d.ts +9 -0
  56. package/dist/types/registry/google-gemini-cli.d.ts +9 -0
  57. package/dist/types/registry/google-vertex.d.ts +5 -0
  58. package/dist/types/registry/google.d.ts +4 -0
  59. package/dist/types/registry/groq.d.ts +4 -0
  60. package/dist/types/registry/huggingface.d.ts +7 -0
  61. package/dist/types/registry/index.d.ts +4 -0
  62. package/dist/types/registry/kagi.d.ts +14 -0
  63. package/dist/types/registry/kilo.d.ts +7 -0
  64. package/dist/types/registry/kimi-code.d.ts +7 -0
  65. package/dist/types/registry/litellm.d.ts +13 -0
  66. package/dist/types/registry/lm-studio.d.ts +8 -0
  67. package/dist/types/registry/minimax-code-cn.d.ts +6 -0
  68. package/dist/types/registry/minimax-code.d.ts +6 -0
  69. package/dist/types/registry/minimax.d.ts +4 -0
  70. package/dist/types/registry/mistral.d.ts +4 -0
  71. package/dist/types/registry/moonshot.d.ts +7 -0
  72. package/dist/types/registry/nanogpt.d.ts +7 -0
  73. package/dist/types/registry/nvidia.d.ts +7 -0
  74. package/dist/types/registry/oauth/__tests__/xai-oauth.test.d.ts +1 -0
  75. package/dist/types/{utils → registry}/oauth/anthropic.d.ts +2 -1
  76. package/dist/types/{utils → registry}/oauth/github-copilot.d.ts +15 -23
  77. package/dist/types/{utils → registry}/oauth/index.d.ts +1 -0
  78. package/dist/types/{utils → registry}/oauth/minimax-code.d.ts +5 -5
  79. package/dist/types/{utils → registry}/oauth/types.d.ts +6 -1
  80. package/dist/types/{utils → registry}/oauth/xai-oauth.d.ts +2 -1
  81. package/dist/types/registry/ollama-cloud.d.ts +7 -0
  82. package/dist/types/registry/ollama.d.ts +12 -0
  83. package/dist/types/registry/openai-codex-device.d.ts +8 -0
  84. package/dist/types/registry/openai-codex.d.ts +9 -0
  85. package/dist/types/registry/openai.d.ts +4 -0
  86. package/dist/types/registry/opencode-go.d.ts +6 -0
  87. package/dist/types/registry/opencode-zen.d.ts +6 -0
  88. package/dist/types/registry/openrouter.d.ts +13 -0
  89. package/dist/types/registry/parallel.d.ts +14 -0
  90. package/dist/types/registry/perplexity.d.ts +7 -0
  91. package/dist/types/registry/qianfan.d.ts +7 -0
  92. package/dist/types/registry/qwen-portal.d.ts +7 -0
  93. package/dist/types/registry/registry.d.ts +272 -0
  94. package/dist/types/registry/synthetic.d.ts +6 -0
  95. package/dist/types/registry/tavily.d.ts +14 -0
  96. package/dist/types/registry/together.d.ts +6 -0
  97. package/dist/types/registry/types.d.ts +51 -0
  98. package/dist/types/registry/venice.d.ts +13 -0
  99. package/dist/types/registry/vercel-ai-gateway.d.ts +7 -0
  100. package/dist/types/registry/vllm.d.ts +7 -0
  101. package/dist/types/registry/wafer-pass.d.ts +6 -0
  102. package/dist/types/registry/wafer-serverless.d.ts +6 -0
  103. package/dist/types/registry/xai-oauth.d.ts +7 -0
  104. package/dist/types/registry/xai.d.ts +4 -0
  105. package/dist/types/registry/xiaomi-token-plan-ams.d.ts +6 -0
  106. package/dist/types/registry/xiaomi-token-plan-cn.d.ts +6 -0
  107. package/dist/types/registry/xiaomi-token-plan-sgp.d.ts +6 -0
  108. package/dist/types/registry/xiaomi.d.ts +6 -0
  109. package/dist/types/registry/zai.d.ts +7 -0
  110. package/dist/types/registry/zenmux.d.ts +7 -0
  111. package/dist/types/registry/zhipu-coding-plan.d.ts +7 -0
  112. package/dist/types/stream.d.ts +9 -1
  113. package/dist/types/types.d.ts +56 -295
  114. package/dist/types/usage/google-antigravity.d.ts +15 -1
  115. package/dist/types/usage/openai-codex-reset.d.ts +79 -0
  116. package/dist/types/usage/openai-codex.d.ts +1 -0
  117. package/dist/types/usage.d.ts +77 -4
  118. package/dist/types/utils/abort.d.ts +6 -0
  119. package/dist/types/utils/event-stream.d.ts +2 -0
  120. package/dist/types/utils/http-inspector.d.ts +0 -1
  121. package/dist/types/utils/idle-iterator.d.ts +35 -0
  122. package/dist/types/utils/openai-http.d.ts +58 -0
  123. package/dist/types/utils/request-debug.d.ts +3 -0
  124. package/dist/types/utils/retry-after.d.ts +1 -0
  125. package/dist/types/utils/schema/fields.d.ts +5 -0
  126. package/dist/types/utils/schema/json-schema-validator.d.ts +8 -0
  127. package/dist/types/utils/schema/stamps.d.ts +7 -15
  128. package/dist/types/utils/sse-debug.d.ts +0 -5
  129. package/dist/types/utils/stream-markup-healing.d.ts +2 -0
  130. package/dist/types/utils.d.ts +1 -5
  131. package/package.json +17 -29
  132. package/src/auth-broker/remote-store.ts +10 -1
  133. package/src/auth-broker/snapshot-cache.ts +1 -1
  134. package/src/auth-broker/wire-schemas.ts +1 -1
  135. package/src/auth-gateway/http.ts +1 -1
  136. package/src/auth-gateway/server.ts +95 -30
  137. package/src/auth-gateway/types.ts +10 -2
  138. package/src/auth-retry.ts +238 -0
  139. package/src/auth-storage.ts +935 -430
  140. package/src/errors.ts +32 -0
  141. package/src/index.ts +9 -14
  142. package/src/provider-details.ts +1 -1
  143. package/src/providers/__tests__/google-auth.test.ts +144 -0
  144. package/src/providers/amazon-bedrock.ts +70 -40
  145. package/src/providers/anthropic-client.ts +15 -13
  146. package/src/providers/anthropic-messages-server-schema.ts +17 -7
  147. package/src/providers/anthropic-messages-server.ts +88 -20
  148. package/src/providers/anthropic-wire.ts +4 -3
  149. package/src/providers/anthropic.ts +1234 -621
  150. package/src/providers/aws-credentials.ts +47 -5
  151. package/src/providers/aws-eventstream.ts +5 -0
  152. package/src/providers/azure-openai-responses.ts +117 -67
  153. package/src/providers/cursor.ts +30 -30
  154. package/src/providers/github-copilot-headers.ts +1 -1
  155. package/src/providers/gitlab-duo.ts +36 -29
  156. package/src/providers/google-auth.ts +71 -8
  157. package/src/providers/google-gemini-cli.ts +118 -22
  158. package/src/providers/google-shared.ts +163 -43
  159. package/src/providers/google-types.ts +10 -1
  160. package/src/providers/kimi.ts +1 -1
  161. package/src/providers/mock.ts +11 -3
  162. package/src/providers/ollama.ts +64 -7
  163. package/src/providers/openai-anthropic-shim.ts +17 -8
  164. package/src/providers/openai-chat-server-schema.ts +9 -3
  165. package/src/providers/openai-chat-server.ts +82 -16
  166. package/src/providers/openai-chat-wire.ts +847 -0
  167. package/src/providers/openai-codex/request-transformer.ts +129 -34
  168. package/src/providers/openai-codex/response-handler.ts +22 -1
  169. package/src/providers/openai-codex-responses.ts +699 -247
  170. package/src/providers/openai-completions-compat.ts +8 -308
  171. package/src/providers/openai-completions.ts +416 -267
  172. package/src/providers/openai-responses-server-schema.ts +15 -9
  173. package/src/providers/openai-responses-server.ts +162 -114
  174. package/src/providers/openai-responses-shared.ts +320 -82
  175. package/src/providers/openai-responses-wire.ts +6391 -0
  176. package/src/providers/openai-responses.ts +382 -176
  177. package/src/providers/prometheus-native-client.ts +27 -11
  178. package/src/providers/prometheus-native-server.ts +44 -17
  179. package/src/providers/transform-messages.ts +311 -120
  180. package/src/providers/vision-guard.ts +5 -3
  181. package/src/rate-limit-utils.ts +13 -3
  182. package/src/registry/aimlapi.ts +6 -0
  183. package/src/{utils/oauth → registry}/alibaba-coding-plan.ts +8 -18
  184. package/src/registry/amazon-bedrock.ts +22 -0
  185. package/src/registry/anthropic.ts +26 -0
  186. package/src/{utils/oauth → registry}/api-key-login.ts +25 -3
  187. package/src/{utils/oauth → registry}/api-key-validation.ts +62 -2
  188. package/src/{utils/oauth → registry}/cerebras.ts +8 -1
  189. package/src/{utils/oauth → registry}/cloudflare-ai-gateway.ts +8 -12
  190. package/src/registry/cursor.ts +20 -0
  191. package/src/{utils/oauth → registry}/deepseek.ts +9 -17
  192. package/src/registry/derived.ts +9 -0
  193. package/src/{utils/oauth → registry}/firepass.ts +10 -2
  194. package/src/{utils/oauth → registry}/fireworks.ts +8 -1
  195. package/src/registry/github-copilot.ts +22 -0
  196. package/src/registry/gitlab-duo.ts +19 -0
  197. package/src/registry/google-antigravity.ts +21 -0
  198. package/src/registry/google-gemini-cli.ts +21 -0
  199. package/src/registry/google-vertex.ts +38 -0
  200. package/src/registry/google.ts +6 -0
  201. package/src/registry/groq.ts +6 -0
  202. package/src/{utils/oauth → registry}/huggingface.ts +8 -19
  203. package/src/registry/index.ts +4 -0
  204. package/src/{utils/oauth → registry}/kagi.ts +9 -11
  205. package/src/{utils/oauth → registry}/kilo.ts +11 -6
  206. package/src/registry/kimi-code.ts +17 -0
  207. package/src/{utils/oauth → registry}/litellm.ts +8 -12
  208. package/src/{utils/oauth → registry}/lm-studio.ts +9 -17
  209. package/src/registry/minimax-code-cn.ts +12 -0
  210. package/src/registry/minimax-code.ts +12 -0
  211. package/src/registry/minimax.ts +6 -0
  212. package/src/registry/mistral.ts +6 -0
  213. package/src/{utils/oauth → registry}/moonshot.ts +8 -9
  214. package/src/{utils/oauth → registry}/nanogpt.ts +8 -1
  215. package/src/{utils/oauth → registry}/nvidia.ts +8 -18
  216. package/src/{utils → registry}/oauth/__tests__/xai-oauth.test.ts +4 -7
  217. package/src/{utils → registry}/oauth/anthropic.ts +38 -17
  218. package/src/{utils → registry}/oauth/github-copilot.ts +79 -115
  219. package/src/registry/oauth/gitlab-duo.ts +198 -0
  220. package/src/{utils → registry}/oauth/google-antigravity.ts +1 -4
  221. package/src/{utils → registry}/oauth/google-gemini-cli.ts +1 -4
  222. package/src/registry/oauth/index.ts +164 -0
  223. package/src/{utils → registry}/oauth/minimax-code.ts +16 -14
  224. package/src/{utils → registry}/oauth/types.ts +7 -51
  225. package/src/{utils → registry}/oauth/wafer.ts +1 -1
  226. package/src/{utils → registry}/oauth/xai-oauth.ts +16 -8
  227. package/src/{utils → registry}/oauth/xiaomi.ts +9 -4
  228. package/src/{utils/oauth → registry}/ollama-cloud.ts +8 -1
  229. package/src/{utils/oauth → registry}/ollama.ts +8 -13
  230. package/src/registry/openai-codex-device.ts +18 -0
  231. package/src/registry/openai-codex.ts +19 -0
  232. package/src/registry/openai.ts +6 -0
  233. package/src/registry/opencode-go.ts +12 -0
  234. package/src/registry/opencode-zen.ts +12 -0
  235. package/src/{utils/oauth → registry}/openrouter.ts +10 -2
  236. package/src/{utils/oauth → registry}/parallel.ts +9 -11
  237. package/src/registry/perplexity.ts +13 -0
  238. package/src/{utils/oauth → registry}/qianfan.ts +8 -17
  239. package/src/{utils/oauth → registry}/qwen-portal.ts +8 -19
  240. package/src/registry/registry.ts +149 -0
  241. package/src/{utils/oauth → registry}/synthetic.ts +7 -1
  242. package/src/{utils/oauth → registry}/tavily.ts +10 -12
  243. package/src/{utils/oauth → registry}/together.ts +7 -1
  244. package/src/registry/types.ts +56 -0
  245. package/src/{utils/oauth → registry}/venice.ts +8 -12
  246. package/src/{utils/oauth → registry}/vercel-ai-gateway.ts +8 -18
  247. package/src/{utils/oauth → registry}/vllm.ts +9 -16
  248. package/src/registry/wafer-pass.ts +12 -0
  249. package/src/registry/wafer-serverless.ts +12 -0
  250. package/src/registry/xai-oauth.ts +17 -0
  251. package/src/registry/xai.ts +6 -0
  252. package/src/registry/xiaomi-token-plan-ams.ts +12 -0
  253. package/src/registry/xiaomi-token-plan-cn.ts +12 -0
  254. package/src/registry/xiaomi-token-plan-sgp.ts +12 -0
  255. package/src/registry/xiaomi.ts +12 -0
  256. package/src/{utils/oauth → registry}/zai.ts +10 -22
  257. package/src/{utils/oauth → registry}/zenmux.ts +8 -1
  258. package/src/{utils/oauth/zhipu.ts → registry/zhipu-coding-plan.ts} +9 -21
  259. package/src/stream.ts +229 -199
  260. package/src/types.ts +63 -384
  261. package/src/usage/claude.ts +4 -2
  262. package/src/usage/github-copilot.ts +4 -2
  263. package/src/usage/google-antigravity.ts +196 -28
  264. package/src/usage/kimi.ts +1 -1
  265. package/src/usage/minimax-code.ts +5 -6
  266. package/src/usage/openai-codex-reset.ts +174 -0
  267. package/src/usage/openai-codex.ts +19 -2
  268. package/src/usage/zai.ts +2 -1
  269. package/src/usage.ts +93 -4
  270. package/src/utils/abort.ts +14 -0
  271. package/src/utils/event-stream.ts +17 -0
  272. package/src/utils/http-inspector.ts +4 -12
  273. package/src/utils/idle-iterator.ts +250 -79
  274. package/src/utils/openai-http.ts +157 -0
  275. package/src/utils/request-debug.ts +67 -19
  276. package/src/utils/retry-after.ts +1 -1
  277. package/src/utils/retry.ts +23 -2
  278. package/src/utils/schema/CONSTRAINTS.md +4 -2
  279. package/src/utils/schema/fields.ts +16 -0
  280. package/src/utils/schema/json-schema-validator.ts +19 -1
  281. package/src/utils/schema/normalize.ts +80 -8
  282. package/src/utils/schema/stamps.ts +22 -10
  283. package/src/utils/schema/wire.ts +2 -2
  284. package/src/utils/sse-debug.ts +0 -271
  285. package/src/utils/stream-markup-healing.ts +50 -8
  286. package/src/utils/validation.ts +49 -13
  287. package/src/utils.ts +2 -26
  288. package/dist/types/model-cache.d.ts +0 -17
  289. package/dist/types/model-manager.d.ts +0 -64
  290. package/dist/types/model-thinking.d.ts +0 -100
  291. package/dist/types/models.d.ts +0 -12
  292. package/dist/types/provider-models/bundled-references.d.ts +0 -4
  293. package/dist/types/provider-models/descriptors.d.ts +0 -50
  294. package/dist/types/provider-models/google.d.ts +0 -24
  295. package/dist/types/provider-models/index.d.ts +0 -5
  296. package/dist/types/provider-models/ollama.d.ts +0 -7
  297. package/dist/types/provider-models/openai-compat.d.ts +0 -323
  298. package/dist/types/provider-models/special.d.ts +0 -16
  299. package/dist/types/utils/discovery/antigravity.d.ts +0 -61
  300. package/dist/types/utils/discovery/codex.d.ts +0 -38
  301. package/dist/types/utils/discovery/cursor.d.ts +0 -23
  302. package/dist/types/utils/discovery/gemini.d.ts +0 -25
  303. package/dist/types/utils/discovery/index.d.ts +0 -4
  304. package/dist/types/utils/discovery/openai-compatible.d.ts +0 -72
  305. package/dist/types/utils/oauth/alibaba-coding-plan.d.ts +0 -18
  306. package/dist/types/utils/oauth/cerebras.d.ts +0 -1
  307. package/dist/types/utils/oauth/cloudflare-ai-gateway.d.ts +0 -18
  308. package/dist/types/utils/oauth/deepseek.d.ts +0 -10
  309. package/dist/types/utils/oauth/firepass.d.ts +0 -1
  310. package/dist/types/utils/oauth/fireworks.d.ts +0 -1
  311. package/dist/types/utils/oauth/huggingface.d.ts +0 -19
  312. package/dist/types/utils/oauth/kagi.d.ts +0 -17
  313. package/dist/types/utils/oauth/kilo.d.ts +0 -5
  314. package/dist/types/utils/oauth/litellm.d.ts +0 -18
  315. package/dist/types/utils/oauth/lm-studio.d.ts +0 -17
  316. package/dist/types/utils/oauth/moonshot.d.ts +0 -1
  317. package/dist/types/utils/oauth/nanogpt.d.ts +0 -1
  318. package/dist/types/utils/oauth/nvidia.d.ts +0 -18
  319. package/dist/types/utils/oauth/ollama-cloud.d.ts +0 -2
  320. package/dist/types/utils/oauth/ollama.d.ts +0 -18
  321. package/dist/types/utils/oauth/openrouter.d.ts +0 -1
  322. package/dist/types/utils/oauth/parallel.d.ts +0 -17
  323. package/dist/types/utils/oauth/qianfan.d.ts +0 -17
  324. package/dist/types/utils/oauth/qwen-portal.d.ts +0 -19
  325. package/dist/types/utils/oauth/synthetic.d.ts +0 -1
  326. package/dist/types/utils/oauth/tavily.d.ts +0 -17
  327. package/dist/types/utils/oauth/together.d.ts +0 -1
  328. package/dist/types/utils/oauth/venice.d.ts +0 -18
  329. package/dist/types/utils/oauth/vercel-ai-gateway.d.ts +0 -18
  330. package/dist/types/utils/oauth/vllm.d.ts +0 -16
  331. package/dist/types/utils/oauth/zai.d.ts +0 -18
  332. package/dist/types/utils/oauth/zenmux.d.ts +0 -1
  333. package/dist/types/utils/oauth/zhipu.d.ts +0 -18
  334. package/src/model-cache.ts +0 -129
  335. package/src/model-manager.ts +0 -469
  336. package/src/model-thinking.ts +0 -756
  337. package/src/models.json +0 -60287
  338. package/src/models.json.d.ts +0 -9
  339. package/src/models.ts +0 -56
  340. package/src/provider-models/bundled-references.ts +0 -38
  341. package/src/provider-models/descriptors.ts +0 -364
  342. package/src/provider-models/google.ts +0 -88
  343. package/src/provider-models/index.ts +0 -5
  344. package/src/provider-models/ollama.ts +0 -153
  345. package/src/provider-models/openai-compat.ts +0 -2904
  346. package/src/provider-models/special.ts +0 -67
  347. package/src/utils/discovery/antigravity.ts +0 -261
  348. package/src/utils/discovery/codex.ts +0 -371
  349. package/src/utils/discovery/cursor.ts +0 -306
  350. package/src/utils/discovery/gemini.ts +0 -248
  351. package/src/utils/discovery/index.ts +0 -4
  352. package/src/utils/discovery/openai-compatible.ts +0 -224
  353. package/src/utils/oauth/gitlab-duo.ts +0 -123
  354. package/src/utils/oauth/index.ts +0 -502
  355. /package/dist/types/{utils/oauth/__tests__/xai-oauth.test.d.ts → providers/__tests__/google-auth.test.d.ts} +0 -0
  356. /package/dist/types/{utils → registry}/oauth/callback-server.d.ts +0 -0
  357. /package/dist/types/{utils → registry}/oauth/cursor.d.ts +0 -0
  358. /package/dist/types/{utils → registry}/oauth/gitlab-duo.d.ts +0 -0
  359. /package/dist/types/{utils → registry}/oauth/google-antigravity.d.ts +0 -0
  360. /package/dist/types/{utils → registry}/oauth/google-gemini-cli.d.ts +0 -0
  361. /package/dist/types/{utils → registry}/oauth/google-oauth-shared.d.ts +0 -0
  362. /package/dist/types/{utils → registry}/oauth/kimi.d.ts +0 -0
  363. /package/dist/types/{utils → registry}/oauth/openai-codex.d.ts +0 -0
  364. /package/dist/types/{utils → registry}/oauth/opencode.d.ts +0 -0
  365. /package/dist/types/{utils → registry}/oauth/perplexity.d.ts +0 -0
  366. /package/dist/types/{utils → registry}/oauth/pkce.d.ts +0 -0
  367. /package/dist/types/{utils → registry}/oauth/wafer.d.ts +0 -0
  368. /package/dist/types/{utils → registry}/oauth/xiaomi.d.ts +0 -0
  369. /package/src/{utils → registry}/oauth/callback-server.ts +0 -0
  370. /package/src/{utils → registry}/oauth/cursor.ts +0 -0
  371. /package/src/{utils → registry}/oauth/google-oauth-shared.ts +0 -0
  372. /package/src/{utils → registry}/oauth/kimi.ts +0 -0
  373. /package/src/{utils → registry}/oauth/oauth.html +0 -0
  374. /package/src/{utils → registry}/oauth/openai-codex.ts +0 -0
  375. /package/src/{utils → registry}/oauth/opencode.ts +0 -0
  376. /package/src/{utils → registry}/oauth/perplexity.ts +0 -0
  377. /package/src/{utils → registry}/oauth/pkce.ts +0 -0
@@ -1,224 +0,0 @@
1
- import { UNK_CONTEXT_WINDOW, UNK_MAX_TOKENS } from "@prometheus-ai/ai";
2
- import * as z from "zod/v4";
3
- import type { Api, Model, Provider } from "../../types";
4
-
5
- const MODELS_PATH = "/models";
6
-
7
- /**
8
- * Minimal OpenAI-style model entry shape consumed by discovery.
9
- *
10
- * Providers may return additional fields; this type only captures
11
- * fields that are useful for generic normalization.
12
- */
13
- export interface OpenAICompatibleModelRecord {
14
- id?: unknown;
15
- name?: unknown;
16
- object?: unknown;
17
- owned_by?: unknown;
18
- [key: string]: unknown;
19
- }
20
-
21
- /**
22
- * Tolerant envelope for OpenAI-compatible `/models` responses.
23
- *
24
- * Common providers return `{ data: [...] }`, but variants such as
25
- * `{ models: [...] }`, `{ result: [...] }`, or direct arrays are also
26
- * accepted during extraction.
27
- */
28
- export interface OpenAICompatibleModelsEnvelope {
29
- data?: unknown;
30
- models?: unknown;
31
- result?: unknown;
32
- items?: unknown;
33
- [key: string]: unknown;
34
- }
35
-
36
- const openAICompatibleModelRecordSchema = z
37
- .object({
38
- id: z.string().min(1),
39
- name: z.string().optional().nullable(),
40
- object: z.unknown().optional(),
41
- owned_by: z.unknown().optional(),
42
- })
43
- .loose();
44
-
45
- const openAICompatibleModelsEnvelopeSchema = z
46
- .object({
47
- data: z.unknown().optional(),
48
- models: z.unknown().optional(),
49
- result: z.unknown().optional(),
50
- items: z.unknown().optional(),
51
- })
52
- .loose();
53
-
54
- const openAICompatibleModelsPayloadSchema = z.union([z.array(z.unknown()), openAICompatibleModelsEnvelopeSchema]);
55
-
56
- type ParsedOpenAICompatibleModelRecord = z.infer<typeof openAICompatibleModelRecordSchema>;
57
-
58
- /**
59
- * Context passed to custom OpenAI-compatible model mappers.
60
- */
61
- export interface OpenAICompatibleModelMapperContext<TApi extends Api> {
62
- api: TApi;
63
- provider: Provider;
64
- baseUrl: string;
65
- }
66
-
67
- /**
68
- * Options for fetching and normalizing OpenAI-compatible `/models` catalogs.
69
- */
70
- export interface FetchOpenAICompatibleModelsOptions<TApi extends Api> {
71
- /** API type assigned to normalized models. */
72
- api: TApi;
73
- /** Provider id assigned to normalized models. */
74
- provider: Provider;
75
- /** Provider base URL used for both fetch and normalized model records. */
76
- baseUrl: string;
77
- /** Optional bearer token for Authorization header. */
78
- apiKey?: string;
79
- /** Additional request headers. */
80
- headers?: Record<string, string>;
81
- /** Optional AbortSignal for request cancellation. */
82
- signal?: AbortSignal;
83
- /** Optional fetch implementation override for testing/custom runtimes. */
84
- fetch?: typeof globalThis.fetch;
85
- /**
86
- * Optional post-normalization filter.
87
- * Return false to skip a model.
88
- */
89
- filterModel?: (entry: OpenAICompatibleModelRecord, model: Model<TApi>) => boolean;
90
- /**
91
- * Optional mapper override for provider-specific quirks.
92
- * Return null to skip a model.
93
- */
94
- mapModel?: (
95
- entry: OpenAICompatibleModelRecord,
96
- defaults: Model<TApi>,
97
- context: OpenAICompatibleModelMapperContext<TApi>,
98
- ) => Model<TApi> | null;
99
- }
100
-
101
- /**
102
- * Fetches and normalizes an OpenAI-compatible `/models` catalog.
103
- *
104
- * Returns `null` on transport/protocol failures.
105
- * Returns `[]` only when the endpoint responds successfully with no usable models.
106
- */
107
- export async function fetchOpenAICompatibleModels<TApi extends Api>(
108
- options: FetchOpenAICompatibleModelsOptions<TApi>,
109
- ): Promise<Model<TApi>[] | null> {
110
- const baseUrl = normalizeBaseUrl(options.baseUrl);
111
- if (!baseUrl) {
112
- return null;
113
- }
114
-
115
- const requestHeaders: Record<string, string> = {
116
- Accept: "application/json",
117
- ...options.headers,
118
- };
119
- if (options.apiKey) {
120
- requestHeaders.Authorization = `Bearer ${options.apiKey}`;
121
- }
122
-
123
- const fetchImpl = options.fetch ?? globalThis.fetch;
124
- let response: Response;
125
- try {
126
- response = await fetchImpl(`${baseUrl}${MODELS_PATH}`, {
127
- method: "GET",
128
- headers: requestHeaders,
129
- signal: options.signal,
130
- });
131
- } catch {
132
- return null;
133
- }
134
-
135
- if (!response.ok) {
136
- return null;
137
- }
138
-
139
- let payload: unknown;
140
- try {
141
- payload = await response.json();
142
- } catch {
143
- return null;
144
- }
145
-
146
- const entries = extractModelEntries(payload);
147
- if (entries === null) {
148
- return null;
149
- }
150
-
151
- const context: OpenAICompatibleModelMapperContext<TApi> = {
152
- api: options.api,
153
- provider: options.provider,
154
- baseUrl,
155
- };
156
-
157
- const deduped = new Map<string, Model<TApi>>();
158
- for (const entry of entries) {
159
- const defaults: Model<TApi> = {
160
- id: entry.id,
161
- name: typeof entry.name === "string" && entry.name.length > 0 ? entry.name : entry.id,
162
- api: options.api,
163
- provider: options.provider,
164
- baseUrl,
165
- reasoning: false,
166
- input: ["text"],
167
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
168
- contextWindow: UNK_CONTEXT_WINDOW,
169
- maxTokens: UNK_MAX_TOKENS,
170
- };
171
-
172
- const mapped = options.mapModel?.(entry, defaults, context) ?? defaults;
173
- if (!mapped || typeof mapped.id !== "string" || mapped.id.length === 0) {
174
- continue;
175
- }
176
- if (options.filterModel && !options.filterModel(entry, mapped)) {
177
- continue;
178
- }
179
- deduped.set(mapped.id, mapped);
180
- }
181
-
182
- return Array.from(deduped.values()).sort((left, right) => left.id.localeCompare(right.id));
183
- }
184
-
185
- function normalizeBaseUrl(baseUrl: string): string {
186
- const trimmed = baseUrl.trim();
187
- if (!trimmed) {
188
- return "";
189
- }
190
- return trimmed.endsWith("/") ? trimmed.slice(0, -1) : trimmed;
191
- }
192
-
193
- function extractModelEntries(payload: unknown): ParsedOpenAICompatibleModelRecord[] | null {
194
- return extractModelEntriesFromNode(payload);
195
- }
196
-
197
- function extractModelEntriesFromNode(node: unknown): ParsedOpenAICompatibleModelRecord[] | null {
198
- const parsedPayload = openAICompatibleModelsPayloadSchema.safeParse(node);
199
- if (!parsedPayload.success) {
200
- return null;
201
- }
202
- if (Array.isArray(parsedPayload.data)) {
203
- const parsedEntries = parsedPayload.data
204
- .map(entry => openAICompatibleModelRecordSchema.safeParse(entry))
205
- .flatMap(entry => (entry.success ? [entry.data] : []));
206
- return parsedEntries;
207
- }
208
- for (const candidate of [
209
- parsedPayload.data.data,
210
- parsedPayload.data.models,
211
- parsedPayload.data.result,
212
- parsedPayload.data.items,
213
- ]) {
214
- if (candidate === undefined) {
215
- continue;
216
- }
217
- const nested = extractModelEntriesFromNode(candidate);
218
- if (nested !== null) {
219
- return nested;
220
- }
221
- }
222
-
223
- return null;
224
- }
@@ -1,123 +0,0 @@
1
- import { clearGitLabDuoDirectAccessCache } from "../../providers/gitlab-duo";
2
- import { OAuthCallbackFlow } from "./callback-server";
3
- import { generatePKCE } from "./pkce";
4
- import type { OAuthCredentials, OAuthLoginCallbacks } from "./types";
5
-
6
- const GITLAB_COM_URL = "https://gitlab.com";
7
- const BUNDLED_CLIENT_ID = "da4edff2e6ebd2bc3208611e2768bc1c1dd7be791dc5ff26ca34ca9ee44f7d4b";
8
- const OAUTH_SCOPES = ["api"];
9
- const CALLBACK_PORT = 8080;
10
- const CALLBACK_PATH = "/callback";
11
-
12
- interface PKCEPair {
13
- verifier: string;
14
- challenge: string;
15
- }
16
-
17
- function mapTokenResponse(payload: {
18
- access_token?: string;
19
- refresh_token?: string;
20
- expires_in?: number;
21
- created_at?: number;
22
- }): OAuthCredentials {
23
- if (!payload.access_token || !payload.refresh_token || typeof payload.expires_in !== "number") {
24
- throw new Error("GitLab OAuth token response missing required fields");
25
- }
26
-
27
- const createdAtMs =
28
- typeof payload.created_at === "number" && Number.isFinite(payload.created_at)
29
- ? payload.created_at * 1000
30
- : Date.now();
31
-
32
- return {
33
- access: payload.access_token,
34
- refresh: payload.refresh_token,
35
- expires: createdAtMs + payload.expires_in * 1000 - 5 * 60 * 1000,
36
- };
37
- }
38
-
39
- class GitLabDuoOAuthFlow extends OAuthCallbackFlow {
40
- #pkce: PKCEPair;
41
-
42
- constructor(ctrl: OAuthLoginCallbacks, pkce: PKCEPair) {
43
- super(ctrl, CALLBACK_PORT, CALLBACK_PATH);
44
- this.#pkce = pkce;
45
- }
46
-
47
- override async generateAuthUrl(state: string, redirectUri: string): Promise<{ url: string; instructions?: string }> {
48
- const authParams = new URLSearchParams({
49
- client_id: BUNDLED_CLIENT_ID,
50
- redirect_uri: redirectUri,
51
- response_type: "code",
52
- scope: OAUTH_SCOPES.join(" "),
53
- code_challenge: this.#pkce.challenge,
54
- code_challenge_method: "S256",
55
- state,
56
- });
57
-
58
- return {
59
- url: `${GITLAB_COM_URL}/oauth/authorize?${authParams.toString()}`,
60
- instructions: "Complete GitLab login in browser. Authentication will finish automatically.",
61
- };
62
- }
63
-
64
- override async exchangeToken(code: string, _state: string, redirectUri: string): Promise<OAuthCredentials> {
65
- const response = await fetch(`${GITLAB_COM_URL}/oauth/token`, {
66
- method: "POST",
67
- headers: { "Content-Type": "application/x-www-form-urlencoded" },
68
- body: new URLSearchParams({
69
- client_id: BUNDLED_CLIENT_ID,
70
- grant_type: "authorization_code",
71
- code,
72
- code_verifier: this.#pkce.verifier,
73
- redirect_uri: redirectUri,
74
- }).toString(),
75
- });
76
-
77
- if (!response.ok) {
78
- throw new Error(`GitLab OAuth token exchange failed: ${response.status} ${await response.text()}`);
79
- }
80
-
81
- clearGitLabDuoDirectAccessCache();
82
- return mapTokenResponse(
83
- (await response.json()) as {
84
- access_token?: string;
85
- refresh_token?: string;
86
- expires_in?: number;
87
- created_at?: number;
88
- },
89
- );
90
- }
91
- }
92
-
93
- export async function loginGitLabDuo(callbacks: OAuthLoginCallbacks): Promise<OAuthCredentials> {
94
- const pkce = await generatePKCE();
95
- const flow = new GitLabDuoOAuthFlow(callbacks, pkce);
96
- return flow.login();
97
- }
98
-
99
- export async function refreshGitLabDuoToken(credentials: OAuthCredentials): Promise<OAuthCredentials> {
100
- const response = await fetch(`${GITLAB_COM_URL}/oauth/token`, {
101
- method: "POST",
102
- headers: { "Content-Type": "application/x-www-form-urlencoded" },
103
- body: new URLSearchParams({
104
- client_id: BUNDLED_CLIENT_ID,
105
- grant_type: "refresh_token",
106
- refresh_token: credentials.refresh,
107
- }).toString(),
108
- });
109
-
110
- if (!response.ok) {
111
- throw new Error(`GitLab OAuth refresh failed: ${response.status} ${await response.text()}`);
112
- }
113
-
114
- clearGitLabDuoDirectAccessCache();
115
- return mapTokenResponse(
116
- (await response.json()) as {
117
- access_token?: string;
118
- refresh_token?: string;
119
- expires_in?: number;
120
- created_at?: number;
121
- },
122
- );
123
- }