@prometheus-ai/ai 0.5.4 → 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,320 +1,20 @@
1
- import type { Model, OpenAICompat } from "../types";
1
+ import { buildOpenAICompat } from "@prometheus-ai/catalog/compat/openai";
2
+ import type { Model, ModelSpec, ResolvedOpenAICompat } from "../types";
2
3
 
3
- type OpenAIReasoningEffort = "minimal" | "low" | "medium" | "high" | "xhigh";
4
- type ResolvedToolStrictMode = NonNullable<OpenAICompat["toolStrictMode"]> | "mixed";
4
+ export type { ResolvedOpenAICompat };
5
5
 
6
- export type ResolvedOpenAICompat = Required<
7
- Omit<
8
- OpenAICompat,
9
- | "openRouterRouting"
10
- | "vercelGatewayRouting"
11
- | "extraBody"
12
- | "toolStrictMode"
13
- | "cacheControlFormat"
14
- | "thinkingKeep"
15
- >
16
- > & {
17
- openRouterRouting?: OpenAICompat["openRouterRouting"];
18
- vercelGatewayRouting?: OpenAICompat["vercelGatewayRouting"];
19
- extraBody?: OpenAICompat["extraBody"];
20
- cacheControlFormat?: OpenAICompat["cacheControlFormat"];
21
- thinkingKeep?: OpenAICompat["thinkingKeep"];
22
- toolStrictMode: ResolvedToolStrictMode;
23
- };
24
-
25
- function detectStrictModeSupport(provider: string, baseUrl: string): boolean {
26
- if (
27
- provider === "openai" ||
28
- provider === "openrouter" ||
29
- provider === "cerebras" ||
30
- provider === "together" ||
31
- provider === "github-copilot" ||
32
- provider === "zenmux"
33
- ) {
34
- return true;
35
- }
36
-
37
- const normalizedBaseUrl = baseUrl.toLowerCase();
38
- return (
39
- normalizedBaseUrl.includes("api.openai.com") ||
40
- normalizedBaseUrl.includes(".openai.azure.com") ||
41
- normalizedBaseUrl.includes("models.inference.ai.azure.com") ||
42
- normalizedBaseUrl.includes("api.cerebras.ai") ||
43
- normalizedBaseUrl.includes("api.together.xyz") ||
44
- normalizedBaseUrl.includes("openrouter.ai") ||
45
- normalizedBaseUrl.includes("api.deepseek.com") ||
46
- normalizedBaseUrl.includes("deepseek.com")
47
- );
6
+ function toCompatSpec(model: Model<"openai-completions">, resolvedBaseUrl?: string): ModelSpec<"openai-completions"> {
7
+ const { compat: _compat, ...spec } = model;
8
+ return resolvedBaseUrl === undefined ? spec : { ...spec, baseUrl: resolvedBaseUrl };
48
9
  }
49
10
 
50
- /**
51
- * Detect compatibility settings from provider and baseUrl for known providers.
52
- * Provider takes precedence over URL-based detection since it's explicitly configured.
53
- * @param model - The model configuration
54
- * @param resolvedBaseUrl - Optional resolved base URL (e.g., after GitHub Copilot proxy-ep resolution).
55
- * If provided, this takes precedence over model.baseUrl for URL-based checks.
56
- */
57
11
  export function detectOpenAICompat(model: Model<"openai-completions">, resolvedBaseUrl?: string): ResolvedOpenAICompat {
58
- const provider = model.provider;
59
- // Use resolvedBaseUrl if provided (e.g., after GitHub Copilot proxy-ep resolution)
60
- const baseUrl = resolvedBaseUrl ?? model.baseUrl;
61
-
62
- const isCerebras = provider === "cerebras" || baseUrl.includes("cerebras.ai");
63
- const isZai = provider === "zai" || baseUrl.includes("api.z.ai");
64
- const isZhipu = provider === "zhipu-coding-plan" || baseUrl.includes("open.bigmodel.cn");
65
- const isKilo = provider === "kilo" || baseUrl.includes("api.kilo.ai");
66
- const isKimiModel = model.id.includes("moonshotai/kimi") || /(^|\/)kimi[-.]/i.test(model.id);
67
- const isMoonshotNativeHost =
68
- provider === "moonshot" || provider === "kimi-code" || /api\.moonshot\.ai|api\.kimi\.com/i.test(baseUrl);
69
- const isMoonshotKimi = isKimiModel && isMoonshotNativeHost;
70
- const usesMoonshotKimiPreservedThinking = isMoonshotKimi && /(^|\/)kimi-k2\.6(?:[-:]|$)/i.test(model.id);
71
- const isAnthropicModel =
72
- provider === "anthropic" ||
73
- baseUrl.includes("api.anthropic.com") ||
74
- /(^|\/)claude[-.]/i.test(model.id) ||
75
- /(^|\/)anthropic\//i.test(model.id);
76
- const isAlibaba = provider === "alibaba-coding-plan" || baseUrl.includes("dashscope");
77
- const isQwen = model.id.toLowerCase().includes("qwen");
78
- // DeepSeek V4 (and other reasoning-capable DeepSeek models) reject follow-up requests in
79
- // thinking mode unless prior assistant tool-call turns include `reasoning_content`. The
80
- // upstream model is reachable through many OpenAI-compat hosts (api.deepseek.com, Deepinfra,
81
- // Kilo, NVIDIA NIM, Zenmux, OpenRouter, …), so we match by model id/name as well as by
82
- // provider/baseUrl. The flag is gated by `model.reasoning` because the invariant only
83
- // applies when thinking mode is actually engaged.
84
- const lowerId = model.id.toLowerCase();
85
- const lowerName = (model.name ?? "").toLowerCase();
86
- const isXiaomiHost =
87
- provider === "xiaomi" || provider.startsWith("xiaomi-token-plan-") || baseUrl.includes("xiaomimimo.com");
88
- const isMimoModel = lowerId.includes("mimo") || lowerName.includes("mimo");
89
- const isXiaomiMimo = isXiaomiHost && isMimoModel;
90
- // OpenCode Zen's `big-pickle` is a DeepSeek reasoning alias; the upstream
91
- // 400s come from DeepSeek and require exact reasoning_content replay.
92
- const isOpenCodeDeepseekAlias =
93
- provider === "opencode-zen" && (lowerId === "big-pickle" || lowerName === "big pickle");
94
- const isDeepseekFamily =
95
- provider === "deepseek" ||
96
- baseUrl.includes("deepseek.com") ||
97
- lowerId.includes("deepseek") ||
98
- lowerName.includes("deepseek") ||
99
- isOpenCodeDeepseekAlias;
100
- const isDirectDeepseekApi = provider === "deepseek" || baseUrl.includes("api.deepseek.com");
101
- const isDirectDeepseekReasoning = isDirectDeepseekApi && isDeepseekFamily && Boolean(model.reasoning);
102
- const isNonStandard =
103
- isCerebras ||
104
- provider === "xai" ||
105
- baseUrl.includes("api.x.ai") ||
106
- provider === "mistral" ||
107
- baseUrl.includes("mistral.ai") ||
108
- baseUrl.includes("chutes.ai") ||
109
- baseUrl.includes("deepseek.com") ||
110
- baseUrl.includes("fireworks.ai") ||
111
- isAlibaba ||
112
- isZai ||
113
- isZhipu ||
114
- isKilo ||
115
- isQwen ||
116
- isXiaomiHost ||
117
- provider === "opencode-zen" ||
118
- provider === "opencode-go" ||
119
- baseUrl.includes("opencode.ai");
120
- const isOpenCodeProvider = provider === "opencode-go" || provider === "opencode-zen";
121
-
122
- const useMaxTokens =
123
- provider === "mistral" ||
124
- baseUrl.includes("mistral.ai") ||
125
- baseUrl.includes("chutes.ai") ||
126
- baseUrl.includes("fireworks.ai") ||
127
- isDirectDeepseekApi;
128
- const isGrok = provider === "xai" || baseUrl.includes("api.x.ai");
129
- const isMistral = provider === "mistral" || baseUrl.includes("mistral.ai");
130
-
131
- // Hosts whose chat-completions endpoints are known to accept multiple
132
- // leading `system`/`developer` messages (preferred for KV-cache reuse).
133
- // Anything outside this allowlist defaults to coalescing because
134
- // strict chat templates (Qwen 3.5+ via vLLM, MiniMax, etc.) reject
135
- // follow-up system messages with a 400.
136
- const isOpenAIHost = provider === "openai" || baseUrl.includes("api.openai.com");
137
- const isAzureHost =
138
- provider === "azure" ||
139
- baseUrl.includes(".openai.azure.com") ||
140
- baseUrl.includes("models.inference.ai.azure.com") ||
141
- baseUrl.includes("azure.com/openai");
142
- const isOpenRouter = provider === "openrouter" || baseUrl.includes("openrouter.ai");
143
- const isTogether = provider === "together" || baseUrl.includes("api.together.xyz");
144
- const isFireworks = baseUrl.includes("fireworks.ai");
145
- const isGroqHost = provider === "groq" || baseUrl.includes("api.groq.com");
146
- const isCopilotHost = provider === "github-copilot";
147
- const isZenmuxHost = provider === "zenmux";
148
- // Endpoints that MUST receive a single system block. MiniMax's OpenAI
149
- // endpoint returns error 2013 on multiple system messages; Alibaba's
150
- // Dashscope and Qwen Portal serve Qwen models whose chat template
151
- // raises "System message must be at the beginning" if any system
152
- // message appears past index 0.
153
- const isMiniMaxHost =
154
- provider === "minimax-code" ||
155
- provider === "minimax-code-cn" ||
156
- baseUrl.includes("api.minimax.io") ||
157
- baseUrl.includes("api.minimaxi.com");
158
- const isQwenPortal = provider === "qwen-portal" || baseUrl.includes("portal.qwen.ai");
159
- const supportsMultipleSystemMessagesDefault =
160
- !isMiniMaxHost &&
161
- !isAlibaba &&
162
- !isQwenPortal &&
163
- (isOpenAIHost ||
164
- isAzureHost ||
165
- isOpenRouter ||
166
- isCerebras ||
167
- isTogether ||
168
- isFireworks ||
169
- isGroqHost ||
170
- isDeepseekFamily ||
171
- isMistral ||
172
- isGrok ||
173
- isZai ||
174
- isZhipu ||
175
- isCopilotHost ||
176
- isZenmuxHost);
177
-
178
- const reasoningEffortMap: NonNullable<OpenAICompat["reasoningEffortMap"]> =
179
- provider === "groq" && model.id === "qwen/qwen3-32b"
180
- ? ({
181
- minimal: "default",
182
- low: "default",
183
- medium: "default",
184
- high: "default",
185
- xhigh: "default",
186
- } satisfies Partial<Record<OpenAIReasoningEffort, string>>)
187
- : isDeepseekFamily && model.reasoning
188
- ? ({
189
- minimal: "high",
190
- low: "high",
191
- medium: "high",
192
- high: "high",
193
- xhigh: "max",
194
- } satisfies Partial<Record<OpenAIReasoningEffort, string>>)
195
- : isFireworks
196
- ? ({
197
- // Fireworks' OpenAI-compatible endpoint rejects OpenAI's
198
- // `minimal` literal but accepts `none` for the lowest setting.
199
- minimal: "none",
200
- } satisfies Partial<Record<OpenAIReasoningEffort, string>>)
201
- : {};
202
-
203
- return {
204
- supportsStore: !isNonStandard,
205
- // `developer` is an OpenAI-Responses-era extension to the chat-completions schema. Almost
206
- // every OpenAI-compatible host other than OpenAI itself (and Azure OpenAI, which mirrors
207
- // the schema exactly) treats it as an unknown role: Moonshot returns a 400 "tokenization
208
- // failed", Groq/Cerebras/etc. error or silently misroute. Default to `system` and require
209
- // callers to opt in via `compat.supportsDeveloperRole: true` for hosts known to mirror
210
- // OpenAI's reasoning-API surface.
211
- supportsDeveloperRole: isOpenAIHost || isAzureHost,
212
- supportsMultipleSystemMessages: supportsMultipleSystemMessagesDefault,
213
- supportsReasoningEffort: !isGrok && !isZai && !isZhipu && !isXiaomiMimo,
214
- reasoningEffortMap,
215
- supportsUsageInStreaming: !isCerebras,
216
- disableReasoningOnForcedToolChoice: isKimiModel || isAnthropicModel,
217
- disableReasoningOnToolChoice: isDeepseekFamily && Boolean(model.reasoning) && !isOpenRouter,
218
- supportsToolChoice: !isDirectDeepseekReasoning,
219
- maxTokensField: useMaxTokens ? "max_tokens" : "max_completion_tokens",
220
- requiresToolResultName: isMistral,
221
- requiresAssistantAfterToolResult: false,
222
- requiresThinkingAsText: isMistral,
223
- requiresMistralToolIds: isMistral,
224
- // Only Kimi's native hosts (Moonshot / Kimi-code, matched by `isMoonshotKimi`)
225
- // speak the z.ai binary `thinking: { type }` field. Kimi reached through
226
- // OpenAI-compatible proxies — Fireworks' Fire Pass router, OpenCode's gateway,
227
- // etc. — drives reasoning via OpenAI-style `reasoning_effort`
228
- // (low|medium|high|xhigh|max|none), so those stay on the "openai" path.
229
- thinkingFormat:
230
- isZai || isZhipu || isMoonshotKimi || isXiaomiMimo
231
- ? "zai"
232
- : provider === "openrouter" || baseUrl.includes("openrouter.ai")
233
- ? "openrouter"
234
- : isAlibaba || isQwen
235
- ? "qwen"
236
- : "openai",
237
- thinkingKeep: usesMoonshotKimiPreservedThinking ? "all" : undefined,
238
- reasoningContentField: "reasoning_content",
239
- // Backends that 400 follow-up requests when prior assistant tool-call turns lack `reasoning_content`:
240
- // - Kimi: documented invariant on its native API.
241
- // - DeepSeek-family reasoning models, including aliased OpenCode Zen models
242
- // like `big-pickle`, validate exact thinking-mode replay.
243
- // - Xiaomi MiMo models require exact `reasoning_content` replay on
244
- // thinking-mode tool-call continuations across standard and Token Plan hosts.
245
- // - Any reasoning-capable model reached through OpenRouter can enforce this
246
- // server-side whenever the request is in thinking mode. We can't translate
247
- // Anthropic's redacted/encrypted reasoning into provider-native plaintext,
248
- // so cross-provider continuations rely on a placeholder.
249
- // OpenCode Kimi aliases handle reasoning content internally and reject
250
- // client-sent `reasoning_content`, so exclude only that Kimi-on-OpenCode path.
251
- requiresReasoningContentForToolCalls:
252
- (isKimiModel && !isOpenCodeProvider) ||
253
- (isDeepseekFamily && Boolean(model.reasoning)) ||
254
- isXiaomiMimo ||
255
- ((provider === "openrouter" || baseUrl.includes("openrouter.ai")) && Boolean(model.reasoning)),
256
- // DeepSeek V4 and Xiaomi MiMo reject synthetic reasoning_content placeholders (".") on tool-call turns.
257
- // Kimi and OpenRouter accept them when actual reasoning is unavailable.
258
- allowsSyntheticReasoningContentForToolCalls: (!isDeepseekFamily || !model.reasoning) && !isXiaomiMimo,
259
- requiresAssistantContentForToolCalls: isKimiModel || isDirectDeepseekReasoning,
260
- cacheControlFormat: isOpenRouter && model.id.startsWith("anthropic/") ? "anthropic" : undefined,
261
- openRouterRouting: undefined,
262
- vercelGatewayRouting: undefined,
263
- supportsStrictMode: detectStrictModeSupport(provider, baseUrl),
264
- extraBody: isDirectDeepseekReasoning ? { thinking: { type: "enabled" } } : undefined,
265
- toolStrictMode: isCerebras ? "all_strict" : "mixed",
266
- };
12
+ return buildOpenAICompat(toCompatSpec(model, resolvedBaseUrl));
267
13
  }
268
14
 
269
- /**
270
- * Resolve compatibility settings by layering explicit model.compat overrides onto
271
- * the detected defaults. This is the canonical compat view for both metadata and transport.
272
- * @param model - The model configuration
273
- * @param resolvedBaseUrl - Optional resolved base URL (e.g., after GitHub Copilot proxy-ep resolution).
274
- * If provided, this takes precedence over model.baseUrl for URL-based checks.
275
- */
276
15
  export function resolveOpenAICompat(
277
16
  model: Model<"openai-completions">,
278
17
  resolvedBaseUrl?: string,
279
18
  ): ResolvedOpenAICompat {
280
- const detected = detectOpenAICompat(model, resolvedBaseUrl);
281
- if (!model.compat) {
282
- return detected;
283
- }
284
-
285
- return {
286
- supportsStore: model.compat.supportsStore ?? detected.supportsStore,
287
- supportsDeveloperRole: model.compat.supportsDeveloperRole ?? detected.supportsDeveloperRole,
288
- supportsMultipleSystemMessages:
289
- model.compat.supportsMultipleSystemMessages ?? detected.supportsMultipleSystemMessages,
290
- supportsReasoningEffort: model.compat.supportsReasoningEffort ?? detected.supportsReasoningEffort,
291
- reasoningEffortMap: { ...detected.reasoningEffortMap, ...(model.compat.reasoningEffortMap ?? {}) },
292
- supportsUsageInStreaming: model.compat.supportsUsageInStreaming ?? detected.supportsUsageInStreaming,
293
- supportsToolChoice: model.compat.supportsToolChoice ?? detected.supportsToolChoice,
294
- maxTokensField: model.compat.maxTokensField ?? detected.maxTokensField,
295
- requiresToolResultName: model.compat.requiresToolResultName ?? detected.requiresToolResultName,
296
- requiresAssistantAfterToolResult:
297
- model.compat.requiresAssistantAfterToolResult ?? detected.requiresAssistantAfterToolResult,
298
- requiresThinkingAsText: model.compat.requiresThinkingAsText ?? detected.requiresThinkingAsText,
299
- requiresMistralToolIds: model.compat.requiresMistralToolIds ?? detected.requiresMistralToolIds,
300
- thinkingFormat: model.compat.thinkingFormat ?? detected.thinkingFormat,
301
- thinkingKeep: model.compat.thinkingKeep ?? detected.thinkingKeep,
302
- reasoningContentField: model.compat.reasoningContentField ?? detected.reasoningContentField,
303
- requiresReasoningContentForToolCalls:
304
- model.compat.requiresReasoningContentForToolCalls ?? detected.requiresReasoningContentForToolCalls,
305
- allowsSyntheticReasoningContentForToolCalls:
306
- model.compat.allowsSyntheticReasoningContentForToolCalls ??
307
- detected.allowsSyntheticReasoningContentForToolCalls,
308
- requiresAssistantContentForToolCalls:
309
- model.compat.requiresAssistantContentForToolCalls ?? detected.requiresAssistantContentForToolCalls,
310
- cacheControlFormat: model.compat.cacheControlFormat ?? detected.cacheControlFormat,
311
- disableReasoningOnForcedToolChoice:
312
- model.compat.disableReasoningOnForcedToolChoice ?? detected.disableReasoningOnForcedToolChoice,
313
- disableReasoningOnToolChoice: model.compat.disableReasoningOnToolChoice ?? detected.disableReasoningOnToolChoice,
314
- openRouterRouting: model.compat.openRouterRouting ?? detected.openRouterRouting,
315
- vercelGatewayRouting: model.compat.vercelGatewayRouting ?? detected.vercelGatewayRouting,
316
- supportsStrictMode: model.compat.supportsStrictMode ?? detected.supportsStrictMode,
317
- extraBody: model.compat.extraBody ?? detected.extraBody,
318
- toolStrictMode: model.compat.toolStrictMode ?? detected.toolStrictMode,
319
- };
19
+ return detectOpenAICompat(model, resolvedBaseUrl);
320
20
  }