reeval 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/LICENSE +202 -0
  2. package/THIRD_PARTY_NOTICES.md +2160 -0
  3. package/assets/package.json +9 -0
  4. package/assets/pnpm-lock.yaml +1336 -0
  5. package/dist/agent-DVHkx8aT.js +532 -0
  6. package/dist/agent-DVHkx8aT.js.map +1 -0
  7. package/dist/analysis-CxSCt1YY.js +16 -0
  8. package/dist/analysis-CxSCt1YY.js.map +1 -0
  9. package/dist/assemble-B-nmz8oH.js +695 -0
  10. package/dist/assemble-B-nmz8oH.js.map +1 -0
  11. package/dist/assemble-CmRVDZ2Q.js +2 -0
  12. package/dist/attempt-BdRQ9jKX.js +176 -0
  13. package/dist/attempt-BdRQ9jKX.js.map +1 -0
  14. package/dist/bridge/index.mjs +1911 -0
  15. package/dist/bridge/package.json +13 -0
  16. package/dist/bridge/pnpm-lock.yaml +1041 -0
  17. package/dist/bridge/pnpm-workspace.yaml +2 -0
  18. package/dist/budget-DBUrH4jX.js +8 -0
  19. package/dist/budget-DBUrH4jX.js.map +1 -0
  20. package/dist/cli--CQ3Iy9q.js +1865 -0
  21. package/dist/cli--CQ3Iy9q.js.map +1 -0
  22. package/dist/cli-spec-DKAu09Gi.js +478 -0
  23. package/dist/cli-spec-DKAu09Gi.js.map +1 -0
  24. package/dist/cli.d.ts +1 -0
  25. package/dist/cli.js +8 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/colors-QV9dFVhN.js +34 -0
  28. package/dist/colors-QV9dFVhN.js.map +1 -0
  29. package/dist/command-BSJzHMtP.js +280 -0
  30. package/dist/command-BSJzHMtP.js.map +1 -0
  31. package/dist/command-CEm8PZ1N.js +1043 -0
  32. package/dist/command-CEm8PZ1N.js.map +1 -0
  33. package/dist/command-D-jnQWVG.js +673 -0
  34. package/dist/command-D-jnQWVG.js.map +1 -0
  35. package/dist/command-DQAvbG7d.js +432 -0
  36. package/dist/command-DQAvbG7d.js.map +1 -0
  37. package/dist/commands-A4udfyKZ.js +2 -0
  38. package/dist/commands-CF8mOfiu.js +207 -0
  39. package/dist/commands-CF8mOfiu.js.map +1 -0
  40. package/dist/config-Cuj0kVYj.js +415 -0
  41. package/dist/config-Cuj0kVYj.js.map +1 -0
  42. package/dist/context-loi9OCZv.js +106 -0
  43. package/dist/context-loi9OCZv.js.map +1 -0
  44. package/dist/core-tLN-z1Be.js +96 -0
  45. package/dist/core-tLN-z1Be.js.map +1 -0
  46. package/dist/db-Cjj2ZsfQ.js +2 -0
  47. package/dist/db-DxDzMhtB.js +827 -0
  48. package/dist/db-DxDzMhtB.js.map +1 -0
  49. package/dist/debug-D24NOQH1.js +89 -0
  50. package/dist/debug-D24NOQH1.js.map +1 -0
  51. package/dist/debug-SEmW4w8f.js +2 -0
  52. package/dist/dist-BZXYHN2X.js +1673 -0
  53. package/dist/dist-BZXYHN2X.js.map +1 -0
  54. package/dist/docker-DQDZWXF9.js +20 -0
  55. package/dist/docker-DQDZWXF9.js.map +1 -0
  56. package/dist/docker-DnWAVdEm.js +2 -0
  57. package/dist/docker-oSbCExHL.js +153 -0
  58. package/dist/docker-oSbCExHL.js.map +1 -0
  59. package/dist/doctor-CxlH1pDM.js +525 -0
  60. package/dist/doctor-CxlH1pDM.js.map +1 -0
  61. package/dist/egress-73SQfKdx.js +619 -0
  62. package/dist/egress-73SQfKdx.js.map +1 -0
  63. package/dist/env-BQqj93gu.js +21 -0
  64. package/dist/env-BQqj93gu.js.map +1 -0
  65. package/dist/environment-Mz7wvrtD.js +552 -0
  66. package/dist/environment-Mz7wvrtD.js.map +1 -0
  67. package/dist/errors-C9w_ud7g.js +160 -0
  68. package/dist/errors-C9w_ud7g.js.map +1 -0
  69. package/dist/errors-CSxfJ4qu.js +11 -0
  70. package/dist/errors-CSxfJ4qu.js.map +1 -0
  71. package/dist/files--6CEUXm7.js +2 -0
  72. package/dist/files-BLlrhU4-.js +62 -0
  73. package/dist/files-BLlrhU4-.js.map +1 -0
  74. package/dist/files-Bd25OAQH.js +2 -0
  75. package/dist/files-BvHCFWgD.js +2 -0
  76. package/dist/files-D2-qn_Dl.js +275 -0
  77. package/dist/files-D2-qn_Dl.js.map +1 -0
  78. package/dist/files-bF2fPuT9.js +99 -0
  79. package/dist/files-bF2fPuT9.js.map +1 -0
  80. package/dist/git-D6hMeieS.js +44 -0
  81. package/dist/git-D6hMeieS.js.map +1 -0
  82. package/dist/harness-ls5aX1UO.js +131 -0
  83. package/dist/harness-ls5aX1UO.js.map +1 -0
  84. package/dist/harness.d.ts +74 -0
  85. package/dist/harness.js +2 -0
  86. package/dist/header-DzFDoMCI.js +78 -0
  87. package/dist/header-DzFDoMCI.js.map +1 -0
  88. package/dist/ids-Bp6ut7ZD.js +49 -0
  89. package/dist/ids-Bp6ut7ZD.js.map +1 -0
  90. package/dist/images-Cc1-coFc.js +286 -0
  91. package/dist/images-Cc1-coFc.js.map +1 -0
  92. package/dist/index.d.ts +97 -0
  93. package/dist/index.js +1959 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/init-CFljS8BJ.js +344 -0
  96. package/dist/init-CFljS8BJ.js.map +1 -0
  97. package/dist/init-z2ZPn9Tj.js +2 -0
  98. package/dist/invocations-rXktgSAn.js +157 -0
  99. package/dist/invocations-rXktgSAn.js.map +1 -0
  100. package/dist/jiti-BOLXpKyG.js +46 -0
  101. package/dist/jiti-BOLXpKyG.js.map +1 -0
  102. package/dist/judge-D8Uf4dA9.js +146 -0
  103. package/dist/judge-D8Uf4dA9.js.map +1 -0
  104. package/dist/judge.d.ts +21 -0
  105. package/dist/judge.js +19 -0
  106. package/dist/judge.js.map +1 -0
  107. package/dist/live-Bs3LReMV.js +98 -0
  108. package/dist/live-Bs3LReMV.js.map +1 -0
  109. package/dist/matchers-DyLvm7EG.js +374 -0
  110. package/dist/matchers-DyLvm7EG.js.map +1 -0
  111. package/dist/model-BdO79gWz.js +44 -0
  112. package/dist/model-BdO79gWz.js.map +1 -0
  113. package/dist/model-CDL98xue.js +725 -0
  114. package/dist/model-CDL98xue.js.map +1 -0
  115. package/dist/model-v-0_Ik7S.js +2 -0
  116. package/dist/node-kG64XxdE.js +506 -0
  117. package/dist/node-kG64XxdE.js.map +1 -0
  118. package/dist/opencode-providers-DZuD_oYt.js +3149 -0
  119. package/dist/opencode-providers-DZuD_oYt.js.map +1 -0
  120. package/dist/options-CAQhu--C.js +452 -0
  121. package/dist/options-CAQhu--C.js.map +1 -0
  122. package/dist/patch-BkKje4cp.js +69 -0
  123. package/dist/patch-BkKje4cp.js.map +1 -0
  124. package/dist/paths-CBvm6pap.js +72 -0
  125. package/dist/paths-CBvm6pap.js.map +1 -0
  126. package/dist/plan-gwk6dJ8c.js +237 -0
  127. package/dist/plan-gwk6dJ8c.js.map +1 -0
  128. package/dist/preflight-BtubXKQ8.js +2 -0
  129. package/dist/preflight-BypZMNBG.js +185 -0
  130. package/dist/preflight-BypZMNBG.js.map +1 -0
  131. package/dist/prepare-Cwv0bHs_.js +3 -0
  132. package/dist/prepare-D6Uzcubb.js +213 -0
  133. package/dist/prepare-D6Uzcubb.js.map +1 -0
  134. package/dist/provenance-Dfb8YY5Y.js +129 -0
  135. package/dist/provenance-Dfb8YY5Y.js.map +1 -0
  136. package/dist/provider-BDbNOQhQ.js +2 -0
  137. package/dist/provider-CmAYTQQs.js +14 -0
  138. package/dist/provider-CmAYTQQs.js.map +1 -0
  139. package/dist/providers-2p3ylMHI.js +107 -0
  140. package/dist/providers-2p3ylMHI.js.map +1 -0
  141. package/dist/providers-BUOxitcT.js +2 -0
  142. package/dist/query-CFATHZmV.js +91 -0
  143. package/dist/query-CFATHZmV.js.map +1 -0
  144. package/dist/query-DR4m6CXf.js +2 -0
  145. package/dist/record-DQ8wzyco.js +99 -0
  146. package/dist/record-DQ8wzyco.js.map +1 -0
  147. package/dist/redact-C4fL_bZP.js +167 -0
  148. package/dist/redact-C4fL_bZP.js.map +1 -0
  149. package/dist/results-CeXb8Wde.js +37 -0
  150. package/dist/results-CeXb8Wde.js.map +1 -0
  151. package/dist/root-CFDjpWuc.js +110 -0
  152. package/dist/root-CFDjpWuc.js.map +1 -0
  153. package/dist/sandbox-By2gkdkC.js +133 -0
  154. package/dist/sandbox-By2gkdkC.js.map +1 -0
  155. package/dist/sandbox.d.ts +41 -0
  156. package/dist/sandbox.js +2 -0
  157. package/dist/server-Bi61uiY0.js +350 -0
  158. package/dist/server-Bi61uiY0.js.map +1 -0
  159. package/dist/server-CsSBL8NC.js +2 -0
  160. package/dist/source-BXzrmof5.js +2 -0
  161. package/dist/source-Bsfa3LZH.js +40 -0
  162. package/dist/source-Bsfa3LZH.js.map +1 -0
  163. package/dist/src-55j1zNHH.js +3 -0
  164. package/dist/src-AEwxd1UP.js +602 -0
  165. package/dist/src-AEwxd1UP.js.map +1 -0
  166. package/dist/src-BDwSuyIo.js +3 -0
  167. package/dist/src-BQyMiWri.js +490 -0
  168. package/dist/src-BQyMiWri.js.map +1 -0
  169. package/dist/src-C-LHyTSV.js +3 -0
  170. package/dist/src-Cmp-7YrD.js +1136 -0
  171. package/dist/src-Cmp-7YrD.js.map +1 -0
  172. package/dist/src-D0RdqpNb.js +252 -0
  173. package/dist/src-D0RdqpNb.js.map +1 -0
  174. package/dist/src-D8KYzxBX.js +793 -0
  175. package/dist/src-D8KYzxBX.js.map +1 -0
  176. package/dist/src-DEgff9Z7.js +4 -0
  177. package/dist/src-DXx_29pq.js +567 -0
  178. package/dist/src-DXx_29pq.js.map +1 -0
  179. package/dist/src-DwwiVLqv.js +2937 -0
  180. package/dist/src-DwwiVLqv.js.map +1 -0
  181. package/dist/src-N7E_mfcZ.js +2 -0
  182. package/dist/src-W9g-y5X5.js +3 -0
  183. package/dist/src-daS0wKH2.js +3 -0
  184. package/dist/state-Cyw3QTsN.js +2 -0
  185. package/dist/state-DZ7eqb1F.js +167 -0
  186. package/dist/state-DZ7eqb1F.js.map +1 -0
  187. package/dist/stats-BNAHlNMD.js +114 -0
  188. package/dist/stats-BNAHlNMD.js.map +1 -0
  189. package/dist/studio-app/assets/index-D6XyfFSH.js +58 -0
  190. package/dist/studio-app/assets/index-xwzWdcE_.css +2 -0
  191. package/dist/studio-app/favicon.svg +1 -0
  192. package/dist/studio-app/index.html +15 -0
  193. package/dist/summary-D7Ttky0z.js +166 -0
  194. package/dist/summary-D7Ttky0z.js.map +1 -0
  195. package/dist/text-gEcKjAyp.js +29 -0
  196. package/dist/text-gEcKjAyp.js.map +1 -0
  197. package/dist/types-C5vI3g1C.js +9 -0
  198. package/dist/types-C5vI3g1C.js.map +1 -0
  199. package/dist/types-DLec-6Cx.d.ts +1535 -0
  200. package/dist/usage-DsYUqIUM.js +24 -0
  201. package/dist/usage-DsYUqIUM.js.map +1 -0
  202. package/dist/view/index.d.ts +645 -0
  203. package/dist/view/index.js +8 -0
  204. package/dist/views-BrHOv6wg.js +220 -0
  205. package/dist/views-BrHOv6wg.js.map +1 -0
  206. package/dist/views-CwCWLWqo.js +3 -0
  207. package/dist/worker-entry-DnYkANPG.js +506 -0
  208. package/dist/worker-entry-DnYkANPG.js.map +1 -0
  209. package/dist/workspace-C2S0Z6gl.js +327 -0
  210. package/dist/workspace-C2S0Z6gl.js.map +1 -0
  211. package/dist/workspace-CyoXG6CY.js +2 -0
  212. package/docker/Dockerfile +19 -0
  213. package/package.json +79 -0
@@ -0,0 +1,3149 @@
1
+ //#region ../harness-opencode/src/opencode-provider-table.ts
2
+ /** Every provider whose key OpenCode sends in a header on known hosts, as the probe saw it. */
3
+ const OPENCODE_PROVIDERS = [
4
+ {
5
+ id: "302ai",
6
+ name: "302.AI",
7
+ env: "302AI_API_KEY",
8
+ headers: [{
9
+ name: "authorization",
10
+ scheme: "bearer"
11
+ }],
12
+ endpoints: [{
13
+ host: "api.302.ai",
14
+ method: ["POST"],
15
+ path: { exact: "/v1/chat/completions" }
16
+ }]
17
+ },
18
+ {
19
+ id: "abacus",
20
+ name: "Abacus",
21
+ env: "ABACUS_API_KEY",
22
+ headers: [{
23
+ name: "authorization",
24
+ scheme: "bearer"
25
+ }],
26
+ endpoints: [{
27
+ host: "routellm.abacus.ai",
28
+ method: ["POST"],
29
+ path: { exact: "/v1/chat/completions" }
30
+ }]
31
+ },
32
+ {
33
+ id: "abliteration-ai",
34
+ name: "abliteration.ai",
35
+ env: "ABLIT_KEY",
36
+ headers: [{
37
+ name: "authorization",
38
+ scheme: "bearer"
39
+ }],
40
+ endpoints: [{
41
+ host: "api.abliteration.ai",
42
+ method: ["POST"],
43
+ path: { exact: "/v1/chat/completions" }
44
+ }]
45
+ },
46
+ {
47
+ id: "above",
48
+ name: "above.dev",
49
+ env: "ABOVE_API_KEY",
50
+ headers: [{
51
+ name: "authorization",
52
+ scheme: "bearer"
53
+ }],
54
+ endpoints: [{
55
+ host: "api.above.dev",
56
+ method: ["POST"],
57
+ path: { exact: "/v1/chat/completions" }
58
+ }]
59
+ },
60
+ {
61
+ id: "agentrouter",
62
+ name: "AgentRouter",
63
+ env: "AGENTROUTER_API_KEY",
64
+ headers: [{
65
+ name: "authorization",
66
+ scheme: "bearer"
67
+ }, {
68
+ name: "x-api-key",
69
+ scheme: "raw"
70
+ }],
71
+ endpoints: [{
72
+ host: "agentrouter.org",
73
+ method: ["POST"],
74
+ path: { exact: "/v1/chat/completions" }
75
+ }, {
76
+ host: "agentrouter.org",
77
+ method: ["POST"],
78
+ path: { exact: "/v1/messages" }
79
+ }]
80
+ },
81
+ {
82
+ id: "agnes",
83
+ name: "Agnes AI",
84
+ env: "AGNES_API_KEY",
85
+ headers: [{
86
+ name: "authorization",
87
+ scheme: "bearer"
88
+ }],
89
+ endpoints: [{
90
+ host: "apihub.agnes-ai.com",
91
+ method: ["POST"],
92
+ path: { exact: "/v1/chat/completions" }
93
+ }]
94
+ },
95
+ {
96
+ id: "ai-router",
97
+ name: "AI-ROUTER",
98
+ env: "AI_ROUTER_API_KEY",
99
+ headers: [{
100
+ name: "authorization",
101
+ scheme: "bearer"
102
+ }],
103
+ endpoints: [{
104
+ host: "api.ai-router.dev",
105
+ method: ["POST"],
106
+ path: { exact: "/v1/chat/completions" }
107
+ }]
108
+ },
109
+ {
110
+ id: "ai21",
111
+ name: "AI21 Labs",
112
+ env: "AI21_API_KEY",
113
+ headers: [{
114
+ name: "authorization",
115
+ scheme: "bearer"
116
+ }],
117
+ endpoints: [{
118
+ host: "api.ai21.com",
119
+ method: ["POST"],
120
+ path: { exact: "/studio/v1/chat/completions" }
121
+ }]
122
+ },
123
+ {
124
+ id: "aiand",
125
+ name: "ai&",
126
+ env: "AIAND_API_KEY",
127
+ headers: [{
128
+ name: "authorization",
129
+ scheme: "bearer"
130
+ }],
131
+ endpoints: [{
132
+ host: "api.aiand.com",
133
+ method: ["POST"],
134
+ path: { exact: "/v1/chat/completions" }
135
+ }]
136
+ },
137
+ {
138
+ id: "ainetcafe",
139
+ name: "ainetcafe",
140
+ env: "AINETCAFE_API_KEY",
141
+ headers: [{
142
+ name: "authorization",
143
+ scheme: "bearer"
144
+ }],
145
+ endpoints: [{
146
+ host: "microquickjs.com",
147
+ method: ["POST"],
148
+ path: { exact: "/v1/chat/completions" }
149
+ }]
150
+ },
151
+ {
152
+ id: "aixy",
153
+ name: "Aixy",
154
+ env: "AIXY_API_KEY",
155
+ headers: [{
156
+ name: "authorization",
157
+ scheme: "bearer"
158
+ }],
159
+ endpoints: [{
160
+ host: "api.aixy-gateway.com",
161
+ method: ["POST"],
162
+ path: { exact: "/v1/chat/completions" }
163
+ }]
164
+ },
165
+ {
166
+ id: "aki-io",
167
+ name: "AKI.IO",
168
+ env: "AKI_IO_API_KEY",
169
+ headers: [{
170
+ name: "authorization",
171
+ scheme: "bearer"
172
+ }],
173
+ endpoints: [{
174
+ host: "aki.io",
175
+ method: ["POST"],
176
+ path: { exact: "/v1/chat/completions" }
177
+ }]
178
+ },
179
+ {
180
+ id: "alibaba",
181
+ name: "Alibaba",
182
+ env: "DASHSCOPE_API_KEY",
183
+ headers: [{
184
+ name: "authorization",
185
+ scheme: "bearer"
186
+ }],
187
+ endpoints: [{
188
+ host: "dashscope-intl.aliyuncs.com",
189
+ method: ["POST"],
190
+ path: { exact: "/compatible-mode/v1/chat/completions" }
191
+ }]
192
+ },
193
+ {
194
+ id: "alibaba-cn",
195
+ name: "Alibaba (China)",
196
+ env: "DASHSCOPE_API_KEY",
197
+ headers: [{
198
+ name: "authorization",
199
+ scheme: "bearer"
200
+ }],
201
+ endpoints: [{
202
+ host: "dashscope.aliyuncs.com",
203
+ method: ["POST"],
204
+ path: { exact: "/compatible-mode/v1/chat/completions" }
205
+ }]
206
+ },
207
+ {
208
+ id: "alibaba-coding-plan",
209
+ name: "Alibaba Coding Plan",
210
+ env: "ALIBABA_CODING_PLAN_API_KEY",
211
+ headers: [{
212
+ name: "authorization",
213
+ scheme: "bearer"
214
+ }],
215
+ endpoints: [{
216
+ host: "coding-intl.dashscope.aliyuncs.com",
217
+ method: ["POST"],
218
+ path: { exact: "/v1/chat/completions" }
219
+ }]
220
+ },
221
+ {
222
+ id: "alibaba-coding-plan-cn",
223
+ name: "Alibaba Coding Plan (China)",
224
+ env: "ALIBABA_CODING_PLAN_API_KEY",
225
+ headers: [{
226
+ name: "authorization",
227
+ scheme: "bearer"
228
+ }],
229
+ endpoints: [{
230
+ host: "coding.dashscope.aliyuncs.com",
231
+ method: ["POST"],
232
+ path: { exact: "/v1/chat/completions" }
233
+ }]
234
+ },
235
+ {
236
+ id: "alibaba-token-plan",
237
+ name: "Alibaba Token Plan",
238
+ env: "ALIBABA_TOKEN_PLAN_API_KEY",
239
+ headers: [{
240
+ name: "authorization",
241
+ scheme: "bearer"
242
+ }],
243
+ endpoints: [{
244
+ host: "token-plan.ap-southeast-1.maas.aliyuncs.com",
245
+ method: ["POST"],
246
+ path: { exact: "/compatible-mode/v1/chat/completions" }
247
+ }]
248
+ },
249
+ {
250
+ id: "alibaba-token-plan-cn",
251
+ name: "Alibaba Token Plan (China)",
252
+ env: "ALIBABA_TOKEN_PLAN_API_KEY",
253
+ headers: [{
254
+ name: "authorization",
255
+ scheme: "bearer"
256
+ }],
257
+ endpoints: [{
258
+ host: "token-plan.cn-beijing.maas.aliyuncs.com",
259
+ method: ["POST"],
260
+ path: { exact: "/compatible-mode/v1/chat/completions" }
261
+ }]
262
+ },
263
+ {
264
+ id: "amazon-bedrock",
265
+ name: "Amazon Bedrock",
266
+ env: "AWS_BEARER_TOKEN_BEDROCK",
267
+ vars: [{
268
+ name: "AWS_REGION",
269
+ default: "us-east-1",
270
+ pattern: "^[a-z]{2}(-[a-z]+)+-\\d{1,2}$"
271
+ }],
272
+ headers: [{
273
+ name: "authorization",
274
+ scheme: "bearer"
275
+ }],
276
+ endpoints: [
277
+ {
278
+ host: "bedrock-mantle.{AWS_REGION}.api.aws",
279
+ method: ["POST"],
280
+ path: { exact: "/openai/v1/responses" }
281
+ },
282
+ {
283
+ host: "bedrock-mantle.{AWS_REGION}.api.aws",
284
+ method: ["POST"],
285
+ path: { exact: "/v1/chat/completions" }
286
+ },
287
+ {
288
+ host: "bedrock-runtime.{AWS_REGION}.amazonaws.com",
289
+ method: ["POST"],
290
+ path: { regex: "^/model/([^/]+)/converse-stream$" }
291
+ }
292
+ ]
293
+ },
294
+ {
295
+ id: "ambient",
296
+ name: "Ambient",
297
+ env: "AMBIENT_API_KEY",
298
+ headers: [{
299
+ name: "authorization",
300
+ scheme: "bearer"
301
+ }],
302
+ endpoints: [{
303
+ host: "api.ambient.xyz",
304
+ method: ["POST"],
305
+ path: { exact: "/v1/chat/completions" }
306
+ }]
307
+ },
308
+ {
309
+ id: "amd",
310
+ name: "AMD",
311
+ env: "AMD_API_KEY",
312
+ headers: [{
313
+ name: "authorization",
314
+ scheme: "bearer"
315
+ }],
316
+ endpoints: [{
317
+ host: "developer.amd.com.cn",
318
+ method: ["POST"],
319
+ path: { exact: "/radeon/api/v1/chat/completions" }
320
+ }]
321
+ },
322
+ {
323
+ id: "anthropic",
324
+ name: "Anthropic",
325
+ env: "ANTHROPIC_API_KEY",
326
+ headers: [{
327
+ name: "x-api-key",
328
+ scheme: "raw"
329
+ }],
330
+ endpoints: [{
331
+ host: "api.anthropic.com",
332
+ method: ["POST"],
333
+ path: { exact: "/v1/messages" }
334
+ }]
335
+ },
336
+ {
337
+ id: "anyapi",
338
+ name: "AnyAPI",
339
+ env: "ANYAPI_API_KEY",
340
+ headers: [{
341
+ name: "authorization",
342
+ scheme: "bearer"
343
+ }],
344
+ endpoints: [{
345
+ host: "api.anyapi.ai",
346
+ method: ["POST"],
347
+ path: { exact: "/v1/chat/completions" }
348
+ }]
349
+ },
350
+ {
351
+ id: "arcee",
352
+ name: "Arcee",
353
+ env: "ARCEE_API_KEY",
354
+ headers: [{
355
+ name: "authorization",
356
+ scheme: "bearer"
357
+ }],
358
+ endpoints: [{
359
+ host: "api.arcee.ai",
360
+ method: ["POST"],
361
+ path: { exact: "/api/v1/chat/completions" }
362
+ }]
363
+ },
364
+ {
365
+ id: "auriko",
366
+ name: "Auriko",
367
+ env: "AURIKO_API_KEY",
368
+ headers: [{
369
+ name: "authorization",
370
+ scheme: "bearer"
371
+ }],
372
+ endpoints: [{
373
+ host: "api.auriko.ai",
374
+ method: ["POST"],
375
+ path: { exact: "/v1/chat/completions" }
376
+ }]
377
+ },
378
+ {
379
+ id: "bailing",
380
+ name: "Bailing",
381
+ env: "BAILING_API_TOKEN",
382
+ headers: [{
383
+ name: "authorization",
384
+ scheme: "bearer"
385
+ }],
386
+ endpoints: [{
387
+ host: "api.tbox.cn",
388
+ method: ["POST"],
389
+ path: { exact: "/api/llm/v1/chat/completions/chat/completions" }
390
+ }]
391
+ },
392
+ {
393
+ id: "baseten",
394
+ name: "Baseten",
395
+ env: "BASETEN_API_KEY",
396
+ headers: [{
397
+ name: "authorization",
398
+ scheme: "bearer"
399
+ }],
400
+ endpoints: [{
401
+ host: "inference.baseten.co",
402
+ method: ["POST"],
403
+ path: { exact: "/v1/chat/completions" }
404
+ }]
405
+ },
406
+ {
407
+ id: "berget",
408
+ name: "Berget.AI",
409
+ env: "BERGET_API_KEY",
410
+ headers: [{
411
+ name: "authorization",
412
+ scheme: "bearer"
413
+ }],
414
+ endpoints: [{
415
+ host: "api.berget.ai",
416
+ method: ["POST"],
417
+ path: { exact: "/v1/chat/completions" }
418
+ }]
419
+ },
420
+ {
421
+ id: "blueclaw",
422
+ name: "Blue Claw",
423
+ env: "BLUECLAW_API_KEY",
424
+ headers: [{
425
+ name: "authorization",
426
+ scheme: "bearer"
427
+ }],
428
+ endpoints: [{
429
+ host: "openai.blueclaw.network",
430
+ method: ["POST"],
431
+ path: { exact: "/v1/chat/completions" }
432
+ }]
433
+ },
434
+ {
435
+ id: "bothub",
436
+ name: "Bothub",
437
+ env: "BOTHUB_API_KEY",
438
+ headers: [{
439
+ name: "authorization",
440
+ scheme: "bearer"
441
+ }],
442
+ endpoints: [{
443
+ host: "openai.bothub.ru",
444
+ method: ["POST"],
445
+ path: { exact: "/v1/chat/completions" }
446
+ }]
447
+ },
448
+ {
449
+ id: "cerebras",
450
+ name: "Cerebras",
451
+ env: "CEREBRAS_API_KEY",
452
+ headers: [{
453
+ name: "authorization",
454
+ scheme: "bearer"
455
+ }],
456
+ endpoints: [{
457
+ host: "api.cerebras.ai",
458
+ method: ["POST"],
459
+ path: { exact: "/v1/chat/completions" }
460
+ }]
461
+ },
462
+ {
463
+ id: "chutes",
464
+ name: "Chutes",
465
+ env: "CHUTES_API_KEY",
466
+ headers: [{
467
+ name: "authorization",
468
+ scheme: "bearer"
469
+ }],
470
+ endpoints: [{
471
+ host: "llm.chutes.ai",
472
+ method: ["POST"],
473
+ path: { exact: "/v1/chat/completions" }
474
+ }]
475
+ },
476
+ {
477
+ id: "clarifai",
478
+ name: "Clarifai",
479
+ env: "CLARIFAI_PAT",
480
+ headers: [{
481
+ name: "authorization",
482
+ scheme: "bearer"
483
+ }],
484
+ endpoints: [{
485
+ host: "api.clarifai.com",
486
+ method: ["POST"],
487
+ path: { exact: "/v2/ext/openai/v1/chat/completions" }
488
+ }]
489
+ },
490
+ {
491
+ id: "claudinio",
492
+ name: "Claudinio",
493
+ env: "CLAUDINIO_API_KEY",
494
+ headers: [{
495
+ name: "authorization",
496
+ scheme: "bearer"
497
+ }],
498
+ endpoints: [{
499
+ host: "api.claudin.io",
500
+ method: ["POST"],
501
+ path: { exact: "/v1/chat/completions" }
502
+ }]
503
+ },
504
+ {
505
+ id: "cline-pass",
506
+ name: "ClinePass",
507
+ env: "CLINE_API_KEY",
508
+ headers: [{
509
+ name: "authorization",
510
+ scheme: "bearer"
511
+ }],
512
+ endpoints: [{
513
+ host: "api.cline.bot",
514
+ method: ["POST"],
515
+ path: { exact: "/api/v1/chat/completions" }
516
+ }]
517
+ },
518
+ {
519
+ id: "cloudferro-sherlock",
520
+ name: "CloudFerro Sherlock",
521
+ env: "CLOUDFERRO_SHERLOCK_API_KEY",
522
+ headers: [{
523
+ name: "authorization",
524
+ scheme: "bearer"
525
+ }],
526
+ endpoints: [{
527
+ host: "api-sherlock.cloudferro.com",
528
+ method: ["POST"],
529
+ path: { exact: "/openai/v1/chat/completions" }
530
+ }]
531
+ },
532
+ {
533
+ id: "cohere",
534
+ name: "Cohere",
535
+ env: "COHERE_API_KEY",
536
+ headers: [{
537
+ name: "authorization",
538
+ scheme: "bearer"
539
+ }],
540
+ endpoints: [{
541
+ host: "api.cohere.ai",
542
+ method: ["POST"],
543
+ path: { exact: "/compatibility/v1/chat/completions" }
544
+ }, {
545
+ host: "api.cohere.com",
546
+ method: ["POST"],
547
+ path: { exact: "/v2/chat" }
548
+ }]
549
+ },
550
+ {
551
+ id: "coralbricks",
552
+ name: "CoralBricks",
553
+ env: "CORAL_API_KEY",
554
+ headers: [{
555
+ name: "authorization",
556
+ scheme: "bearer"
557
+ }],
558
+ endpoints: [{
559
+ host: "inference.coralbricks.ai",
560
+ method: ["POST"],
561
+ path: { exact: "/v1/chat/completions" }
562
+ }]
563
+ },
564
+ {
565
+ id: "cortecs",
566
+ name: "Cortecs",
567
+ env: "CORTECS_API_KEY",
568
+ headers: [{
569
+ name: "authorization",
570
+ scheme: "bearer"
571
+ }],
572
+ endpoints: [{
573
+ host: "api.cortecs.ai",
574
+ method: ["POST"],
575
+ path: { exact: "/v1/chat/completions" }
576
+ }]
577
+ },
578
+ {
579
+ id: "crof",
580
+ name: "CrofAI",
581
+ env: "CROF_API_KEY",
582
+ headers: [{
583
+ name: "authorization",
584
+ scheme: "bearer"
585
+ }],
586
+ endpoints: [{
587
+ host: "crof.ai",
588
+ method: ["POST"],
589
+ path: { exact: "/v1/chat/completions" }
590
+ }]
591
+ },
592
+ {
593
+ id: "crossmodel",
594
+ name: "CrossModel",
595
+ env: "CROSSMODEL_API_KEY",
596
+ headers: [{
597
+ name: "authorization",
598
+ scheme: "bearer"
599
+ }],
600
+ endpoints: [{
601
+ host: "api.crossmodel.ai",
602
+ method: ["POST"],
603
+ path: { exact: "/v1/chat/completions" }
604
+ }]
605
+ },
606
+ {
607
+ id: "crusoe",
608
+ name: "Crusoe",
609
+ env: "CRUSOE_API_KEY",
610
+ headers: [{
611
+ name: "authorization",
612
+ scheme: "bearer"
613
+ }],
614
+ endpoints: [{
615
+ host: "api.inference.crusoecloud.com",
616
+ method: ["POST"],
617
+ path: { exact: "/v1/chat/completions" }
618
+ }]
619
+ },
620
+ {
621
+ id: "daoxe",
622
+ name: "DaoXE",
623
+ env: "DAOXE_API_KEY",
624
+ headers: [{
625
+ name: "authorization",
626
+ scheme: "bearer"
627
+ }],
628
+ endpoints: [{
629
+ host: "daoxe.com",
630
+ method: ["POST"],
631
+ path: { exact: "/v1/chat/completions" }
632
+ }]
633
+ },
634
+ {
635
+ id: "deepinfra",
636
+ name: "Deep Infra",
637
+ env: "DEEPINFRA_API_KEY",
638
+ headers: [{
639
+ name: "authorization",
640
+ scheme: "bearer"
641
+ }],
642
+ endpoints: [{
643
+ host: "api.deepinfra.com",
644
+ method: ["POST"],
645
+ path: { exact: "/v1/openai/chat/completions" }
646
+ }]
647
+ },
648
+ {
649
+ id: "deepseek",
650
+ name: "DeepSeek",
651
+ env: "DEEPSEEK_API_KEY",
652
+ headers: [{
653
+ name: "authorization",
654
+ scheme: "bearer"
655
+ }],
656
+ endpoints: [{
657
+ host: "api.deepseek.com",
658
+ method: ["POST"],
659
+ path: { exact: "/chat/completions" }
660
+ }]
661
+ },
662
+ {
663
+ id: "digitalocean",
664
+ name: "DigitalOcean",
665
+ env: "DIGITALOCEAN_ACCESS_TOKEN",
666
+ headers: [{
667
+ name: "authorization",
668
+ scheme: "bearer"
669
+ }],
670
+ endpoints: [{
671
+ host: "inference.do-ai.run",
672
+ method: ["POST"],
673
+ path: { exact: "/v1/chat/completions" }
674
+ }]
675
+ },
676
+ {
677
+ id: "dinference",
678
+ name: "DInference",
679
+ env: "DINFERENCE_API_KEY",
680
+ headers: [{
681
+ name: "authorization",
682
+ scheme: "bearer"
683
+ }],
684
+ endpoints: [{
685
+ host: "api.dinference.com",
686
+ method: ["POST"],
687
+ path: { exact: "/v1/chat/completions" }
688
+ }]
689
+ },
690
+ {
691
+ id: "drun",
692
+ name: "D.Run (China)",
693
+ env: "DRUN_API_KEY",
694
+ headers: [{
695
+ name: "authorization",
696
+ scheme: "bearer"
697
+ }],
698
+ endpoints: [{
699
+ host: "chat.d.run",
700
+ method: ["POST"],
701
+ path: { exact: "/v1/chat/completions" }
702
+ }]
703
+ },
704
+ {
705
+ id: "ebcloud",
706
+ name: "EBCloud",
707
+ env: "EBCLOUD_API_KEY",
708
+ headers: [{
709
+ name: "authorization",
710
+ scheme: "bearer"
711
+ }],
712
+ endpoints: [{
713
+ host: "maas-api.ebcloud.com",
714
+ method: ["POST"],
715
+ path: { exact: "/v1/chat/completions" }
716
+ }]
717
+ },
718
+ {
719
+ id: "echo",
720
+ name: "Echo",
721
+ env: "ECHO_API_KEY",
722
+ headers: [{
723
+ name: "authorization",
724
+ scheme: "bearer"
725
+ }],
726
+ endpoints: [{
727
+ host: "echo.tracerml.ai",
728
+ method: ["POST"],
729
+ path: { exact: "/v1/chat/completions" }
730
+ }]
731
+ },
732
+ {
733
+ id: "edenai",
734
+ name: "Eden AI",
735
+ env: "EDENAI_API_KEY",
736
+ headers: [{
737
+ name: "authorization",
738
+ scheme: "bearer"
739
+ }],
740
+ endpoints: [{
741
+ host: "api.edenai.run",
742
+ method: ["POST"],
743
+ path: { exact: "/v3/chat/completions" }
744
+ }]
745
+ },
746
+ {
747
+ id: "empiriolabs",
748
+ name: "EmpirioLabs AI",
749
+ env: "EMPIRIOLABS_API_KEY",
750
+ headers: [{
751
+ name: "authorization",
752
+ scheme: "bearer"
753
+ }],
754
+ endpoints: [{
755
+ host: "api.empiriolabs.ai",
756
+ method: ["POST"],
757
+ path: { exact: "/v1/chat/completions" }
758
+ }]
759
+ },
760
+ {
761
+ id: "evroc",
762
+ name: "evroc",
763
+ env: "EVROC_API_KEY",
764
+ headers: [{
765
+ name: "authorization",
766
+ scheme: "bearer"
767
+ }],
768
+ endpoints: [{
769
+ host: "models.think.evroc.com",
770
+ method: ["POST"],
771
+ path: { exact: "/v1/chat/completions" }
772
+ }]
773
+ },
774
+ {
775
+ id: "fastrouter",
776
+ name: "FastRouter",
777
+ env: "FASTROUTER_API_KEY",
778
+ headers: [{
779
+ name: "authorization",
780
+ scheme: "bearer"
781
+ }],
782
+ endpoints: [{
783
+ host: "go.fastrouter.ai",
784
+ method: ["POST"],
785
+ path: { exact: "/api/v1/chat/completions" }
786
+ }]
787
+ },
788
+ {
789
+ id: "fireworks-ai",
790
+ name: "Fireworks AI",
791
+ env: "FIREWORKS_API_KEY",
792
+ headers: [{
793
+ name: "authorization",
794
+ scheme: "bearer"
795
+ }],
796
+ endpoints: [{
797
+ host: "api.fireworks.ai",
798
+ method: ["POST"],
799
+ path: { exact: "/inference/v1/chat/completions" }
800
+ }]
801
+ },
802
+ {
803
+ id: "freemodel",
804
+ name: "FreeModel",
805
+ env: "FREEMODEL_API_KEY",
806
+ headers: [{
807
+ name: "x-api-key",
808
+ scheme: "raw"
809
+ }, {
810
+ name: "authorization",
811
+ scheme: "bearer"
812
+ }],
813
+ endpoints: [{
814
+ host: "api.freemodel.dev",
815
+ method: ["POST"],
816
+ path: { exact: "/v1/chat/completions" }
817
+ }, {
818
+ host: "cc.freemodel.dev",
819
+ method: ["POST"],
820
+ path: { exact: "/v1/messages" }
821
+ }]
822
+ },
823
+ {
824
+ id: "friendli",
825
+ name: "Friendli",
826
+ env: "FRIENDLI_TOKEN",
827
+ headers: [{
828
+ name: "authorization",
829
+ scheme: "bearer"
830
+ }],
831
+ endpoints: [{
832
+ host: "api.friendli.ai",
833
+ method: ["POST"],
834
+ path: { exact: "/serverless/v1/chat/completions" }
835
+ }]
836
+ },
837
+ {
838
+ id: "frogbot",
839
+ name: "FrogBot",
840
+ env: "FROGBOT_API_KEY",
841
+ headers: [{
842
+ name: "authorization",
843
+ scheme: "bearer"
844
+ }],
845
+ endpoints: [{
846
+ host: "app.frogbot.ai",
847
+ method: ["POST"],
848
+ path: { exact: "/api/v1/chat/completions" }
849
+ }]
850
+ },
851
+ {
852
+ id: "gmicloud",
853
+ name: "GMI Cloud",
854
+ env: "GMICLOUD_API_KEY",
855
+ headers: [{
856
+ name: "authorization",
857
+ scheme: "bearer"
858
+ }],
859
+ endpoints: [{
860
+ host: "api.gmi-serving.com",
861
+ method: ["POST"],
862
+ path: { exact: "/v1/chat/completions" }
863
+ }]
864
+ },
865
+ {
866
+ id: "google",
867
+ name: "Google",
868
+ env: "GOOGLE_GENERATIVE_AI_API_KEY",
869
+ headers: [{
870
+ name: "x-goog-api-key",
871
+ scheme: "raw"
872
+ }],
873
+ endpoints: [{
874
+ host: "generativelanguage.googleapis.com",
875
+ method: ["POST"],
876
+ path: { regex: "^/v1beta/models/([^/]+):streamGenerateContent$" }
877
+ }]
878
+ },
879
+ {
880
+ id: "greenpt",
881
+ name: "GreenPT",
882
+ env: "GREENPT_API_KEY",
883
+ headers: [{
884
+ name: "authorization",
885
+ scheme: "bearer"
886
+ }],
887
+ endpoints: [{
888
+ host: "api.greenpt.ai",
889
+ method: ["POST"],
890
+ path: { exact: "/v1/chat/completions" }
891
+ }]
892
+ },
893
+ {
894
+ id: "groq",
895
+ name: "Groq",
896
+ env: "GROQ_API_KEY",
897
+ headers: [{
898
+ name: "authorization",
899
+ scheme: "bearer"
900
+ }],
901
+ endpoints: [{
902
+ host: "api.groq.com",
903
+ method: ["POST"],
904
+ path: { exact: "/openai/v1/chat/completions" }
905
+ }]
906
+ },
907
+ {
908
+ id: "helicone",
909
+ name: "Helicone",
910
+ env: "HELICONE_API_KEY",
911
+ headers: [{
912
+ name: "authorization",
913
+ scheme: "bearer"
914
+ }],
915
+ endpoints: [{
916
+ host: "ai-gateway.helicone.ai",
917
+ method: ["POST"],
918
+ path: { exact: "/v1/chat/completions" }
919
+ }]
920
+ },
921
+ {
922
+ id: "hetzner",
923
+ name: "Hetzner",
924
+ env: "HETZNER_API_KEY",
925
+ headers: [{
926
+ name: "authorization",
927
+ scheme: "bearer"
928
+ }],
929
+ endpoints: [{
930
+ host: "inference.hetzner.com",
931
+ method: ["POST"],
932
+ path: { exact: "/api/v1/chat/completions" }
933
+ }]
934
+ },
935
+ {
936
+ id: "hpc-ai",
937
+ name: "HPC-AI",
938
+ env: "HPC_AI_API_KEY",
939
+ headers: [{
940
+ name: "authorization",
941
+ scheme: "bearer"
942
+ }],
943
+ endpoints: [{
944
+ host: "api.hpc-ai.com",
945
+ method: ["POST"],
946
+ path: { exact: "/inference/v1/chat/completions" }
947
+ }]
948
+ },
949
+ {
950
+ id: "huggingface",
951
+ name: "Hugging Face",
952
+ env: "HF_TOKEN",
953
+ headers: [{
954
+ name: "authorization",
955
+ scheme: "bearer"
956
+ }],
957
+ endpoints: [{
958
+ host: "router.huggingface.co",
959
+ method: ["POST"],
960
+ path: { exact: "/v1/chat/completions" }
961
+ }]
962
+ },
963
+ {
964
+ id: "hyper",
965
+ name: "Charm Hyper",
966
+ env: "HYPER_API_KEY",
967
+ headers: [{
968
+ name: "authorization",
969
+ scheme: "bearer"
970
+ }],
971
+ endpoints: [{
972
+ host: "hyper.charm.land",
973
+ method: ["POST"],
974
+ path: { exact: "/v1/chat/completions" }
975
+ }]
976
+ },
977
+ {
978
+ id: "iflowcn",
979
+ name: "iFlow",
980
+ env: "IFLOW_API_KEY",
981
+ headers: [{
982
+ name: "authorization",
983
+ scheme: "bearer"
984
+ }],
985
+ endpoints: [{
986
+ host: "apis.iflow.cn",
987
+ method: ["POST"],
988
+ path: { exact: "/v1/chat/completions" }
989
+ }]
990
+ },
991
+ {
992
+ id: "impossibl",
993
+ name: "Impossibl",
994
+ env: "IMPOSSIBL_API_KEY",
995
+ headers: [{
996
+ name: "authorization",
997
+ scheme: "bearer"
998
+ }],
999
+ endpoints: [{
1000
+ host: "api.impossibl.com",
1001
+ method: ["POST"],
1002
+ path: { exact: "/v1/chat/completions" }
1003
+ }]
1004
+ },
1005
+ {
1006
+ id: "inception",
1007
+ name: "Inception",
1008
+ env: "INCEPTION_API_KEY",
1009
+ headers: [{
1010
+ name: "authorization",
1011
+ scheme: "bearer"
1012
+ }],
1013
+ endpoints: [{
1014
+ host: "api.inceptionlabs.ai",
1015
+ method: ["POST"],
1016
+ path: { exact: "/v1/chat/completions" }
1017
+ }]
1018
+ },
1019
+ {
1020
+ id: "inceptron",
1021
+ name: "Inceptron",
1022
+ env: "INCEPTRON_API_KEY",
1023
+ headers: [{
1024
+ name: "authorization",
1025
+ scheme: "bearer"
1026
+ }],
1027
+ endpoints: [{
1028
+ host: "api.inceptron.io",
1029
+ method: ["POST"],
1030
+ path: { exact: "/v1/chat/completions" }
1031
+ }]
1032
+ },
1033
+ {
1034
+ id: "inco",
1035
+ name: "Inco",
1036
+ env: "INCO_API_KEY",
1037
+ headers: [{
1038
+ name: "authorization",
1039
+ scheme: "bearer"
1040
+ }],
1041
+ endpoints: [{
1042
+ host: "api.inco.ai",
1043
+ method: ["POST"],
1044
+ path: { exact: "/v1/chat/completions" }
1045
+ }]
1046
+ },
1047
+ {
1048
+ id: "infer",
1049
+ name: "Infer by Flow7",
1050
+ env: "INFER_API_KEY",
1051
+ headers: [{
1052
+ name: "authorization",
1053
+ scheme: "bearer"
1054
+ }],
1055
+ endpoints: [{
1056
+ host: "infer.flow7.org",
1057
+ method: ["POST"],
1058
+ path: { exact: "/v1/responses" }
1059
+ }]
1060
+ },
1061
+ {
1062
+ id: "inference",
1063
+ name: "Inference",
1064
+ env: "INFERENCE_API_KEY",
1065
+ headers: [{
1066
+ name: "authorization",
1067
+ scheme: "bearer"
1068
+ }],
1069
+ endpoints: [{
1070
+ host: "inference.net",
1071
+ method: ["POST"],
1072
+ path: { exact: "/v1/chat/completions" }
1073
+ }]
1074
+ },
1075
+ {
1076
+ id: "inferx",
1077
+ name: "InferX",
1078
+ env: "INFERX_API_KEY",
1079
+ headers: [{
1080
+ name: "authorization",
1081
+ scheme: "bearer"
1082
+ }],
1083
+ endpoints: [{
1084
+ host: "model.inferx.net",
1085
+ method: ["POST"],
1086
+ path: { exact: "/endpoints/v1/chat/completions" }
1087
+ }]
1088
+ },
1089
+ {
1090
+ id: "io-net",
1091
+ name: "IO.NET",
1092
+ env: "IOINTELLIGENCE_API_KEY",
1093
+ headers: [{
1094
+ name: "authorization",
1095
+ scheme: "bearer"
1096
+ }],
1097
+ endpoints: [{
1098
+ host: "api.intelligence.io.solutions",
1099
+ method: ["POST"],
1100
+ path: { exact: "/api/v1/chat/completions" }
1101
+ }]
1102
+ },
1103
+ {
1104
+ id: "iteracompute",
1105
+ name: "IteraCompute",
1106
+ env: "ITERACOMPUTE_API_KEY",
1107
+ headers: [{
1108
+ name: "authorization",
1109
+ scheme: "bearer"
1110
+ }],
1111
+ endpoints: [{
1112
+ host: "api.iteracompute.com",
1113
+ method: ["POST"],
1114
+ path: { exact: "/v1/chat/completions" }
1115
+ }]
1116
+ },
1117
+ {
1118
+ id: "jalapeno",
1119
+ name: "Jalapeno Cloud",
1120
+ env: "JALAPENO_API_KEY",
1121
+ headers: [{
1122
+ name: "authorization",
1123
+ scheme: "bearer"
1124
+ }],
1125
+ endpoints: [{
1126
+ host: "api.jalapeno-cloud.ai",
1127
+ method: ["POST"],
1128
+ path: { exact: "/v1/chat/completions" }
1129
+ }]
1130
+ },
1131
+ {
1132
+ id: "jiekou",
1133
+ name: "Jiekou.AI",
1134
+ env: "JIEKOU_API_KEY",
1135
+ headers: [{
1136
+ name: "authorization",
1137
+ scheme: "bearer"
1138
+ }],
1139
+ endpoints: [{
1140
+ host: "api.jiekou.ai",
1141
+ method: ["POST"],
1142
+ path: { exact: "/openai/chat/completions" }
1143
+ }]
1144
+ },
1145
+ {
1146
+ id: "kenari",
1147
+ name: "Kenari",
1148
+ env: "KENARI_API_KEY",
1149
+ headers: [{
1150
+ name: "authorization",
1151
+ scheme: "bearer"
1152
+ }],
1153
+ endpoints: [{
1154
+ host: "kenari.id",
1155
+ method: ["POST"],
1156
+ path: { exact: "/v1/chat/completions" }
1157
+ }]
1158
+ },
1159
+ {
1160
+ id: "kilo",
1161
+ name: "Kilo Gateway",
1162
+ env: "KILO_API_KEY",
1163
+ headers: [{
1164
+ name: "authorization",
1165
+ scheme: "bearer"
1166
+ }],
1167
+ endpoints: [{
1168
+ host: "api.kilo.ai",
1169
+ method: ["POST"],
1170
+ path: { exact: "/api/gateway/chat/completions" }
1171
+ }]
1172
+ },
1173
+ {
1174
+ id: "kimi-code-plan-cn",
1175
+ name: "Kimi For Coding (kimi.com)",
1176
+ env: "KIMI_API_KEY",
1177
+ headers: [{
1178
+ name: "authorization",
1179
+ scheme: "bearer"
1180
+ }],
1181
+ endpoints: [{
1182
+ host: "api.kimi.com",
1183
+ method: ["POST"],
1184
+ path: { exact: "/coding/v1/chat/completions" }
1185
+ }]
1186
+ },
1187
+ {
1188
+ id: "kimi-code-plan-global",
1189
+ name: "Kimi For Coding (kimi.ai)",
1190
+ env: "KIMI_API_KEY",
1191
+ headers: [{
1192
+ name: "authorization",
1193
+ scheme: "bearer"
1194
+ }],
1195
+ endpoints: [{
1196
+ host: "api.kimi.ai",
1197
+ method: ["POST"],
1198
+ path: { exact: "/coding/v1/chat/completions" }
1199
+ }]
1200
+ },
1201
+ {
1202
+ id: "klokintegration",
1203
+ name: "klokintegration.se",
1204
+ env: "KLOKINTEGRATION_API_KEY",
1205
+ headers: [{
1206
+ name: "authorization",
1207
+ scheme: "bearer"
1208
+ }],
1209
+ endpoints: [{
1210
+ host: "api-gw.klok.ipaas.se",
1211
+ method: ["POST"],
1212
+ path: { exact: "/proxy/kloker-key/v1/chat/completions" }
1213
+ }]
1214
+ },
1215
+ {
1216
+ id: "kosmik",
1217
+ name: "Kosmik Compute",
1218
+ env: "KOSMIK_API_KEY",
1219
+ headers: [{
1220
+ name: "authorization",
1221
+ scheme: "bearer"
1222
+ }],
1223
+ endpoints: [{
1224
+ host: "api.koscompute.com",
1225
+ method: ["POST"],
1226
+ path: { exact: "/v1/chat/completions" }
1227
+ }]
1228
+ },
1229
+ {
1230
+ id: "kuae-cloud-coding-plan",
1231
+ name: "KUAE Cloud Coding Plan",
1232
+ env: "KUAE_API_KEY",
1233
+ headers: [{
1234
+ name: "authorization",
1235
+ scheme: "bearer"
1236
+ }],
1237
+ endpoints: [{
1238
+ host: "coding-plan-endpoint.kuaecloud.net",
1239
+ method: ["POST"],
1240
+ path: { exact: "/v1/chat/completions" }
1241
+ }]
1242
+ },
1243
+ {
1244
+ id: "lilac",
1245
+ name: "Lilac",
1246
+ env: "LILAC_API_KEY",
1247
+ headers: [{
1248
+ name: "authorization",
1249
+ scheme: "bearer"
1250
+ }],
1251
+ endpoints: [{
1252
+ host: "api.getlilac.com",
1253
+ method: ["POST"],
1254
+ path: { exact: "/v1/chat/completions" }
1255
+ }]
1256
+ },
1257
+ {
1258
+ id: "llama",
1259
+ name: "Llama",
1260
+ env: "LLAMA_API_KEY",
1261
+ headers: [{
1262
+ name: "authorization",
1263
+ scheme: "bearer"
1264
+ }],
1265
+ endpoints: [{
1266
+ host: "api.llama.com",
1267
+ method: ["POST"],
1268
+ path: { exact: "/compat/v1/chat/completions" }
1269
+ }]
1270
+ },
1271
+ {
1272
+ id: "llmgateway",
1273
+ name: "DevPass (LLM Gateway)",
1274
+ env: "LLMGATEWAY_API_KEY",
1275
+ headers: [{
1276
+ name: "authorization",
1277
+ scheme: "bearer"
1278
+ }],
1279
+ endpoints: [{
1280
+ host: "api.llmgateway.io",
1281
+ method: ["POST"],
1282
+ path: { exact: "/v1/chat/completions" }
1283
+ }]
1284
+ },
1285
+ {
1286
+ id: "llmgateway-providers",
1287
+ name: "LLM Gateway",
1288
+ env: "LLMGATEWAY_API_KEY",
1289
+ headers: [{
1290
+ name: "authorization",
1291
+ scheme: "bearer"
1292
+ }],
1293
+ endpoints: [{
1294
+ host: "api.llmgateway.io",
1295
+ method: ["POST"],
1296
+ path: { exact: "/v1/chat/completions" }
1297
+ }]
1298
+ },
1299
+ {
1300
+ id: "llmtech",
1301
+ name: "LLM Tech",
1302
+ env: "LLMTECH_API_KEY",
1303
+ headers: [{
1304
+ name: "authorization",
1305
+ scheme: "bearer"
1306
+ }],
1307
+ endpoints: [{
1308
+ host: "api.llmtech.eu",
1309
+ method: ["POST"],
1310
+ path: { exact: "/v1/chat/completions" }
1311
+ }]
1312
+ },
1313
+ {
1314
+ id: "llmtr",
1315
+ name: "LLMTR",
1316
+ env: "LLMTR_API_KEY",
1317
+ headers: [{
1318
+ name: "authorization",
1319
+ scheme: "bearer"
1320
+ }],
1321
+ endpoints: [{
1322
+ host: "llmtr.com",
1323
+ method: ["POST"],
1324
+ path: { exact: "/v1/chat/completions" }
1325
+ }]
1326
+ },
1327
+ {
1328
+ id: "longcat",
1329
+ name: "LongCat",
1330
+ env: "LONGCAT_API_KEY",
1331
+ headers: [{
1332
+ name: "authorization",
1333
+ scheme: "bearer"
1334
+ }],
1335
+ endpoints: [{
1336
+ host: "api.longcat.chat",
1337
+ method: ["POST"],
1338
+ path: { exact: "/openai/chat/completions" }
1339
+ }]
1340
+ },
1341
+ {
1342
+ id: "lucidquery",
1343
+ name: "LucidQuery",
1344
+ env: "LUCIDQUERY_API_KEY",
1345
+ headers: [{
1346
+ name: "authorization",
1347
+ scheme: "bearer"
1348
+ }],
1349
+ endpoints: [{
1350
+ host: "api.lucidquery.com",
1351
+ method: ["POST"],
1352
+ path: { exact: "/v1/chat/completions" }
1353
+ }]
1354
+ },
1355
+ {
1356
+ id: "meganova",
1357
+ name: "Meganova",
1358
+ env: "MEGANOVA_API_KEY",
1359
+ headers: [{
1360
+ name: "authorization",
1361
+ scheme: "bearer"
1362
+ }],
1363
+ endpoints: [{
1364
+ host: "api.meganova.ai",
1365
+ method: ["POST"],
1366
+ path: { exact: "/v1/chat/completions" }
1367
+ }]
1368
+ },
1369
+ {
1370
+ id: "melious",
1371
+ name: "Melious",
1372
+ env: "MELIOUS_API_KEY",
1373
+ headers: [{
1374
+ name: "authorization",
1375
+ scheme: "bearer"
1376
+ }],
1377
+ endpoints: [{
1378
+ host: "api.melious.ai",
1379
+ method: ["POST"],
1380
+ path: { exact: "/v1/chat/completions" }
1381
+ }]
1382
+ },
1383
+ {
1384
+ id: "meta",
1385
+ name: "Meta",
1386
+ env: "META_MODEL_API_KEY",
1387
+ headers: [{
1388
+ name: "authorization",
1389
+ scheme: "bearer"
1390
+ }],
1391
+ endpoints: [{
1392
+ host: "api.meta.ai",
1393
+ method: ["POST"],
1394
+ path: { exact: "/v1/responses" }
1395
+ }]
1396
+ },
1397
+ {
1398
+ id: "minimax",
1399
+ name: "MiniMax (minimax.io)",
1400
+ env: "MINIMAX_API_KEY",
1401
+ headers: [{
1402
+ name: "authorization",
1403
+ scheme: "bearer"
1404
+ }],
1405
+ endpoints: [{
1406
+ host: "api.minimax.io",
1407
+ method: ["POST"],
1408
+ path: { exact: "/anthropic/v1/messages" }
1409
+ }]
1410
+ },
1411
+ {
1412
+ id: "minimax-cn",
1413
+ name: "MiniMax (minimax.cn)",
1414
+ env: "MINIMAX_API_KEY",
1415
+ headers: [{
1416
+ name: "authorization",
1417
+ scheme: "bearer"
1418
+ }],
1419
+ endpoints: [{
1420
+ host: "api.minimax.cn",
1421
+ method: ["POST"],
1422
+ path: { exact: "/anthropic/v1/messages" }
1423
+ }]
1424
+ },
1425
+ {
1426
+ id: "minimax-cn-coding-plan",
1427
+ name: "MiniMax Token Plan (minimax.cn)",
1428
+ env: "MINIMAX_API_KEY",
1429
+ headers: [{
1430
+ name: "authorization",
1431
+ scheme: "bearer"
1432
+ }],
1433
+ endpoints: [{
1434
+ host: "api.minimax.cn",
1435
+ method: ["POST"],
1436
+ path: { exact: "/anthropic/v1/messages" }
1437
+ }]
1438
+ },
1439
+ {
1440
+ id: "minimax-coding-plan",
1441
+ name: "MiniMax Token Plan (minimax.io)",
1442
+ env: "MINIMAX_API_KEY",
1443
+ headers: [{
1444
+ name: "authorization",
1445
+ scheme: "bearer"
1446
+ }],
1447
+ endpoints: [{
1448
+ host: "api.minimax.io",
1449
+ method: ["POST"],
1450
+ path: { exact: "/anthropic/v1/messages" }
1451
+ }]
1452
+ },
1453
+ {
1454
+ id: "mistral",
1455
+ name: "Mistral",
1456
+ env: "MISTRAL_API_KEY",
1457
+ headers: [{
1458
+ name: "authorization",
1459
+ scheme: "bearer"
1460
+ }],
1461
+ endpoints: [{
1462
+ host: "api.mistral.ai",
1463
+ method: ["POST"],
1464
+ path: { exact: "/v1/chat/completions" }
1465
+ }]
1466
+ },
1467
+ {
1468
+ id: "mixlayer",
1469
+ name: "Mixlayer",
1470
+ env: "MIXLAYER_API_KEY",
1471
+ headers: [{
1472
+ name: "authorization",
1473
+ scheme: "bearer"
1474
+ }],
1475
+ endpoints: [{
1476
+ host: "models.mixlayer.ai",
1477
+ method: ["POST"],
1478
+ path: { exact: "/v1/chat/completions" }
1479
+ }]
1480
+ },
1481
+ {
1482
+ id: "moark",
1483
+ name: "Moark",
1484
+ env: "MOARK_API_KEY",
1485
+ headers: [{
1486
+ name: "authorization",
1487
+ scheme: "bearer"
1488
+ }],
1489
+ endpoints: [{
1490
+ host: "moark.com",
1491
+ method: ["POST"],
1492
+ path: { exact: "/v1/chat/completions" }
1493
+ }]
1494
+ },
1495
+ {
1496
+ id: "modal",
1497
+ name: "Modal",
1498
+ env: "MODAL_PROXY_TOKEN",
1499
+ headers: [{
1500
+ name: "authorization",
1501
+ scheme: "bearer"
1502
+ }],
1503
+ endpoints: [{
1504
+ host: "inference.us-west.modal.direct",
1505
+ method: ["GET"],
1506
+ path: { exact: "/v1/models" }
1507
+ }, {
1508
+ host: "inference.us-west.modal.direct",
1509
+ method: ["POST"],
1510
+ path: { exact: "/v1/chat/completions" }
1511
+ }]
1512
+ },
1513
+ {
1514
+ id: "model-oracle-ai",
1515
+ name: "Model Oracle AI",
1516
+ env: "MODEL_ORACLE_API_KEY",
1517
+ headers: [{
1518
+ name: "authorization",
1519
+ scheme: "bearer"
1520
+ }],
1521
+ endpoints: [{
1522
+ host: "api.modeloracle.com",
1523
+ method: ["POST"],
1524
+ path: { exact: "/api/v1/chat/completions" }
1525
+ }]
1526
+ },
1527
+ {
1528
+ id: "modelis",
1529
+ name: "Modelis",
1530
+ env: "MODELIS_API_KEY",
1531
+ headers: [{
1532
+ name: "authorization",
1533
+ scheme: "bearer"
1534
+ }],
1535
+ endpoints: [{
1536
+ host: "modelishub.com",
1537
+ method: ["POST"],
1538
+ path: { exact: "/v1/chat/completions" }
1539
+ }]
1540
+ },
1541
+ {
1542
+ id: "modelscope",
1543
+ name: "ModelScope",
1544
+ env: "MODELSCOPE_API_KEY",
1545
+ headers: [{
1546
+ name: "authorization",
1547
+ scheme: "bearer"
1548
+ }],
1549
+ endpoints: [{
1550
+ host: "api-inference.modelscope.cn",
1551
+ method: ["POST"],
1552
+ path: { exact: "/v1/chat/completions" }
1553
+ }]
1554
+ },
1555
+ {
1556
+ id: "moonshotai",
1557
+ name: "Moonshot AI",
1558
+ env: "MOONSHOT_API_KEY",
1559
+ headers: [{
1560
+ name: "authorization",
1561
+ scheme: "bearer"
1562
+ }],
1563
+ endpoints: [{
1564
+ host: "api.moonshot.ai",
1565
+ method: ["POST"],
1566
+ path: { exact: "/v1/chat/completions" }
1567
+ }]
1568
+ },
1569
+ {
1570
+ id: "moonshotai-cn",
1571
+ name: "Moonshot AI (China)",
1572
+ env: "MOONSHOT_API_KEY",
1573
+ headers: [{
1574
+ name: "authorization",
1575
+ scheme: "bearer"
1576
+ }],
1577
+ endpoints: [{
1578
+ host: "api.moonshot.cn",
1579
+ method: ["POST"],
1580
+ path: { exact: "/v1/chat/completions" }
1581
+ }]
1582
+ },
1583
+ {
1584
+ id: "nan",
1585
+ name: "NaN",
1586
+ env: "NAN_API_KEY",
1587
+ headers: [{
1588
+ name: "authorization",
1589
+ scheme: "bearer"
1590
+ }],
1591
+ endpoints: [{
1592
+ host: "api.nan.builders",
1593
+ method: ["POST"],
1594
+ path: { exact: "/v1/chat/completions" }
1595
+ }]
1596
+ },
1597
+ {
1598
+ id: "nano-gpt",
1599
+ name: "NanoGPT",
1600
+ env: "NANO_GPT_API_KEY",
1601
+ headers: [{
1602
+ name: "authorization",
1603
+ scheme: "bearer"
1604
+ }],
1605
+ endpoints: [{
1606
+ host: "nano-gpt.com",
1607
+ method: ["POST"],
1608
+ path: { exact: "/api/v1/chat/completions" }
1609
+ }]
1610
+ },
1611
+ {
1612
+ id: "nearai",
1613
+ name: "NEAR AI Cloud",
1614
+ env: "NEARAI_API_KEY",
1615
+ headers: [{
1616
+ name: "authorization",
1617
+ scheme: "bearer"
1618
+ }],
1619
+ endpoints: [{
1620
+ host: "cloud-api.near.ai",
1621
+ method: ["POST"],
1622
+ path: { exact: "/v1/chat/completions" }
1623
+ }]
1624
+ },
1625
+ {
1626
+ id: "nebius",
1627
+ name: "Nebius Token Factory",
1628
+ env: "NEBIUS_API_KEY",
1629
+ headers: [{
1630
+ name: "authorization",
1631
+ scheme: "bearer"
1632
+ }],
1633
+ endpoints: [{
1634
+ host: "api.tokenfactory.nebius.com",
1635
+ method: ["POST"],
1636
+ path: { exact: "/v1/chat/completions" }
1637
+ }]
1638
+ },
1639
+ {
1640
+ id: "neosmith",
1641
+ name: "NeoSmith",
1642
+ env: "NEOSMITH_API_KEY",
1643
+ headers: [{
1644
+ name: "authorization",
1645
+ scheme: "bearer"
1646
+ }],
1647
+ endpoints: [{
1648
+ host: "router.neosmith.ai",
1649
+ method: ["POST"],
1650
+ path: { exact: "/v1/responses" }
1651
+ }]
1652
+ },
1653
+ {
1654
+ id: "neuralwatt",
1655
+ name: "Neuralwatt",
1656
+ env: "NEURALWATT_API_KEY",
1657
+ headers: [{
1658
+ name: "authorization",
1659
+ scheme: "bearer"
1660
+ }],
1661
+ endpoints: [{
1662
+ host: "api.neuralwatt.com",
1663
+ method: ["POST"],
1664
+ path: { exact: "/v1/chat/completions" }
1665
+ }]
1666
+ },
1667
+ {
1668
+ id: "nova",
1669
+ name: "Nova",
1670
+ env: "NOVA_API_KEY",
1671
+ headers: [{
1672
+ name: "authorization",
1673
+ scheme: "bearer"
1674
+ }],
1675
+ endpoints: [{
1676
+ host: "api.nova.amazon.com",
1677
+ method: ["POST"],
1678
+ path: { exact: "/v1/chat/completions" }
1679
+ }]
1680
+ },
1681
+ {
1682
+ id: "novita-ai",
1683
+ name: "NovitaAI",
1684
+ env: "NOVITA_API_KEY",
1685
+ headers: [{
1686
+ name: "authorization",
1687
+ scheme: "bearer"
1688
+ }],
1689
+ endpoints: [{
1690
+ host: "api.novita.ai",
1691
+ method: ["POST"],
1692
+ path: { exact: "/openai/chat/completions" }
1693
+ }]
1694
+ },
1695
+ {
1696
+ id: "nvidia",
1697
+ name: "Nvidia",
1698
+ env: "NVIDIA_API_KEY",
1699
+ headers: [{
1700
+ name: "authorization",
1701
+ scheme: "bearer"
1702
+ }],
1703
+ endpoints: [{
1704
+ host: "integrate.api.nvidia.com",
1705
+ method: ["POST"],
1706
+ path: { exact: "/v1/chat/completions" }
1707
+ }]
1708
+ },
1709
+ {
1710
+ id: "oci",
1711
+ name: "OCI Generative AI",
1712
+ env: "OCI_GENAI_API_KEY",
1713
+ headers: [{
1714
+ name: "authorization",
1715
+ scheme: "bearer"
1716
+ }],
1717
+ endpoints: [{
1718
+ host: "inference.generativeai.us-chicago-1.oci.oraclecloud.com",
1719
+ method: ["POST"],
1720
+ path: { exact: "/openai/v1/chat/completions" }
1721
+ }]
1722
+ },
1723
+ {
1724
+ id: "ofox",
1725
+ name: "Ofox",
1726
+ env: "OFOX_API_KEY",
1727
+ headers: [
1728
+ {
1729
+ name: "x-api-key",
1730
+ scheme: "raw"
1731
+ },
1732
+ {
1733
+ name: "authorization",
1734
+ scheme: "bearer"
1735
+ },
1736
+ {
1737
+ name: "x-goog-api-key",
1738
+ scheme: "raw"
1739
+ }
1740
+ ],
1741
+ endpoints: [
1742
+ {
1743
+ host: "api.ofox.ai",
1744
+ method: ["POST"],
1745
+ path: { exact: "/anthropic/v1/messages" }
1746
+ },
1747
+ {
1748
+ host: "api.ofox.ai",
1749
+ method: ["POST"],
1750
+ path: { exact: "/v1/chat/completions" }
1751
+ },
1752
+ {
1753
+ host: "api.ofox.ai",
1754
+ method: ["POST"],
1755
+ path: { exact: "/v1/responses" }
1756
+ },
1757
+ {
1758
+ host: "api.ofox.ai",
1759
+ method: ["POST"],
1760
+ path: { regex: "^/gemini/v1beta/models/([^/]+):streamGenerateContent$" }
1761
+ }
1762
+ ]
1763
+ },
1764
+ {
1765
+ id: "ollama-cloud",
1766
+ name: "Ollama Cloud",
1767
+ env: "OLLAMA_API_KEY",
1768
+ headers: [{
1769
+ name: "authorization",
1770
+ scheme: "bearer"
1771
+ }],
1772
+ endpoints: [{
1773
+ host: "ollama.com",
1774
+ method: ["POST"],
1775
+ path: { exact: "/v1/chat/completions" }
1776
+ }]
1777
+ },
1778
+ {
1779
+ id: "openai",
1780
+ name: "OpenAI",
1781
+ env: "OPENAI_API_KEY",
1782
+ headers: [{
1783
+ name: "authorization",
1784
+ scheme: "bearer"
1785
+ }],
1786
+ endpoints: [{
1787
+ host: "api.openai.com",
1788
+ method: ["POST"],
1789
+ path: { exact: "/v1/responses" }
1790
+ }]
1791
+ },
1792
+ {
1793
+ id: "opencode",
1794
+ name: "OpenCode Console",
1795
+ env: "OPENCODE_API_KEY",
1796
+ headers: [
1797
+ {
1798
+ name: "authorization",
1799
+ scheme: "bearer"
1800
+ },
1801
+ {
1802
+ name: "x-api-key",
1803
+ scheme: "raw"
1804
+ },
1805
+ {
1806
+ name: "x-goog-api-key",
1807
+ scheme: "raw"
1808
+ }
1809
+ ],
1810
+ endpoints: [
1811
+ {
1812
+ host: "opencode.ai",
1813
+ method: ["GET"],
1814
+ path: { exact: "/console/api/v2/config" }
1815
+ },
1816
+ {
1817
+ host: "opencode.ai",
1818
+ method: ["POST"],
1819
+ path: { exact: "/zen/v1/chat/completions" }
1820
+ },
1821
+ {
1822
+ host: "opencode.ai",
1823
+ method: ["POST"],
1824
+ path: { exact: "/zen/v1/messages" }
1825
+ },
1826
+ {
1827
+ host: "opencode.ai",
1828
+ method: ["POST"],
1829
+ path: { exact: "/zen/v1/responses" }
1830
+ },
1831
+ {
1832
+ host: "opencode.ai",
1833
+ method: ["POST"],
1834
+ path: { regex: "^/zen/v1/models/([^/]+):streamGenerateContent$" }
1835
+ }
1836
+ ]
1837
+ },
1838
+ {
1839
+ id: "opencode-go",
1840
+ name: "OpenCode Go",
1841
+ env: "OPENCODE_API_KEY",
1842
+ headers: [{
1843
+ name: "authorization",
1844
+ scheme: "bearer"
1845
+ }, {
1846
+ name: "x-api-key",
1847
+ scheme: "raw"
1848
+ }],
1849
+ endpoints: [
1850
+ {
1851
+ host: "opencode.ai",
1852
+ method: ["GET"],
1853
+ path: { exact: "/console/api/v2/config" }
1854
+ },
1855
+ {
1856
+ host: "opencode.ai",
1857
+ method: ["POST"],
1858
+ path: { exact: "/zen/go/v1/chat/completions" }
1859
+ },
1860
+ {
1861
+ host: "opencode.ai",
1862
+ method: ["POST"],
1863
+ path: { exact: "/zen/go/v1/messages" }
1864
+ },
1865
+ {
1866
+ host: "opencode.ai",
1867
+ method: ["POST"],
1868
+ path: { exact: "/zen/go/v1/responses" }
1869
+ }
1870
+ ]
1871
+ },
1872
+ {
1873
+ id: "openreason",
1874
+ name: "OpenReason",
1875
+ env: "OPENREASON_API_KEY",
1876
+ headers: [{
1877
+ name: "authorization",
1878
+ scheme: "bearer"
1879
+ }],
1880
+ endpoints: [{
1881
+ host: "api.openreason.app",
1882
+ method: ["POST"],
1883
+ path: { exact: "/v1/chat/completions" }
1884
+ }]
1885
+ },
1886
+ {
1887
+ id: "openrouter",
1888
+ name: "OpenRouter",
1889
+ env: "OPENROUTER_API_KEY",
1890
+ headers: [{
1891
+ name: "authorization",
1892
+ scheme: "bearer"
1893
+ }],
1894
+ endpoints: [{
1895
+ host: "openrouter.ai",
1896
+ method: ["POST"],
1897
+ path: { exact: "/api/v1/chat/completions" }
1898
+ }]
1899
+ },
1900
+ {
1901
+ id: "opper",
1902
+ name: "Opper",
1903
+ env: "OPPER_API_KEY",
1904
+ headers: [{
1905
+ name: "authorization",
1906
+ scheme: "bearer"
1907
+ }],
1908
+ endpoints: [{
1909
+ host: "api.opper.ai",
1910
+ method: ["POST"],
1911
+ path: { exact: "/v3/compat/chat/completions" }
1912
+ }]
1913
+ },
1914
+ {
1915
+ id: "orcarouter",
1916
+ name: "OrcaRouter",
1917
+ env: "ORCAROUTER_API_KEY",
1918
+ headers: [{
1919
+ name: "authorization",
1920
+ scheme: "bearer"
1921
+ }],
1922
+ endpoints: [{
1923
+ host: "api.orcarouter.ai",
1924
+ method: ["POST"],
1925
+ path: { exact: "/v1/chat/completions" }
1926
+ }]
1927
+ },
1928
+ {
1929
+ id: "ovhcloud",
1930
+ name: "OVHcloud AI Endpoints",
1931
+ env: "OVHCLOUD_API_KEY",
1932
+ headers: [{
1933
+ name: "authorization",
1934
+ scheme: "bearer"
1935
+ }],
1936
+ endpoints: [{
1937
+ host: "oai.endpoints.kepler.ai.cloud.ovh.net",
1938
+ method: ["POST"],
1939
+ path: { exact: "/v1/chat/completions" }
1940
+ }]
1941
+ },
1942
+ {
1943
+ id: "pendra",
1944
+ name: "Pendra",
1945
+ env: "PENDRA_API_KEY",
1946
+ headers: [{
1947
+ name: "authorization",
1948
+ scheme: "bearer"
1949
+ }],
1950
+ endpoints: [{
1951
+ host: "api.pendra.ai",
1952
+ method: ["POST"],
1953
+ path: { exact: "/api/v1/chat/completions" }
1954
+ }]
1955
+ },
1956
+ {
1957
+ id: "perplexity-agent",
1958
+ name: "Perplexity Agent",
1959
+ env: "PERPLEXITY_API_KEY",
1960
+ headers: [{
1961
+ name: "authorization",
1962
+ scheme: "bearer"
1963
+ }],
1964
+ endpoints: [{
1965
+ host: "api.perplexity.ai",
1966
+ method: ["POST"],
1967
+ path: { exact: "/v1/responses" }
1968
+ }]
1969
+ },
1970
+ {
1971
+ id: "pioneer",
1972
+ name: "Pioneer",
1973
+ env: "PIONEER_API_KEY",
1974
+ headers: [{
1975
+ name: "authorization",
1976
+ scheme: "bearer"
1977
+ }],
1978
+ endpoints: [{
1979
+ host: "api.pioneer.ai",
1980
+ method: ["POST"],
1981
+ path: { exact: "/v1/chat/completions" }
1982
+ }]
1983
+ },
1984
+ {
1985
+ id: "poe",
1986
+ name: "Poe",
1987
+ env: "POE_API_KEY",
1988
+ headers: [{
1989
+ name: "authorization",
1990
+ scheme: "bearer"
1991
+ }],
1992
+ endpoints: [{
1993
+ host: "api.poe.com",
1994
+ method: ["POST"],
1995
+ path: { exact: "/v1/chat/completions" }
1996
+ }]
1997
+ },
1998
+ {
1999
+ id: "poolside",
2000
+ name: "Poolside",
2001
+ env: "POOLSIDE_API_KEY",
2002
+ headers: [{
2003
+ name: "authorization",
2004
+ scheme: "bearer"
2005
+ }],
2006
+ endpoints: [{
2007
+ host: "inference.poolside.ai",
2008
+ method: ["POST"],
2009
+ path: { exact: "/v1/chat/completions" }
2010
+ }]
2011
+ },
2012
+ {
2013
+ id: "qihang-ai",
2014
+ name: "QiHang",
2015
+ env: "QIHANG_API_KEY",
2016
+ headers: [{
2017
+ name: "authorization",
2018
+ scheme: "bearer"
2019
+ }],
2020
+ endpoints: [{
2021
+ host: "api.qhaigc.net",
2022
+ method: ["POST"],
2023
+ path: { exact: "/v1/chat/completions" }
2024
+ }]
2025
+ },
2026
+ {
2027
+ id: "qiniu-ai",
2028
+ name: "Qiniu",
2029
+ env: "QINIU_API_KEY",
2030
+ headers: [{
2031
+ name: "authorization",
2032
+ scheme: "bearer"
2033
+ }],
2034
+ endpoints: [{
2035
+ host: "api.qnaigc.com",
2036
+ method: ["POST"],
2037
+ path: { exact: "/v1/chat/completions" }
2038
+ }]
2039
+ },
2040
+ {
2041
+ id: "regolo-ai",
2042
+ name: "Regolo AI",
2043
+ env: "REGOLO_API_KEY",
2044
+ headers: [{
2045
+ name: "authorization",
2046
+ scheme: "bearer"
2047
+ }],
2048
+ endpoints: [{
2049
+ host: "api.regolo.ai",
2050
+ method: ["POST"],
2051
+ path: { exact: "/v1/chat/completions" }
2052
+ }]
2053
+ },
2054
+ {
2055
+ id: "requesty",
2056
+ name: "Requesty",
2057
+ env: "REQUESTY_API_KEY",
2058
+ headers: [{
2059
+ name: "authorization",
2060
+ scheme: "bearer"
2061
+ }],
2062
+ endpoints: [{
2063
+ host: "router.requesty.ai",
2064
+ method: ["POST"],
2065
+ path: { exact: "/v1/chat/completions" }
2066
+ }]
2067
+ },
2068
+ {
2069
+ id: "routing-run",
2070
+ name: "routing.run",
2071
+ env: "ROUTING_RUN_API_KEY",
2072
+ headers: [{
2073
+ name: "authorization",
2074
+ scheme: "bearer"
2075
+ }],
2076
+ endpoints: [{
2077
+ host: "api.routing.run",
2078
+ method: ["POST"],
2079
+ path: { exact: "/v1/chat/completions" }
2080
+ }]
2081
+ },
2082
+ {
2083
+ id: "runinfra",
2084
+ name: "RunInfra",
2085
+ env: "RUNINFRA_GATEWAY_KEY",
2086
+ headers: [{
2087
+ name: "authorization",
2088
+ scheme: "bearer"
2089
+ }],
2090
+ endpoints: [{
2091
+ host: "api.runinfra.ai",
2092
+ method: ["POST"],
2093
+ path: { exact: "/v1/chat/completions" }
2094
+ }]
2095
+ },
2096
+ {
2097
+ id: "sakana",
2098
+ name: "Sakana AI",
2099
+ env: "SAKANA_API_KEY",
2100
+ headers: [{
2101
+ name: "authorization",
2102
+ scheme: "bearer"
2103
+ }],
2104
+ endpoints: [{
2105
+ host: "api.sakana.ai",
2106
+ method: ["POST"],
2107
+ path: { exact: "/v1/chat/completions" }
2108
+ }]
2109
+ },
2110
+ {
2111
+ id: "sarvam",
2112
+ name: "Sarvam AI",
2113
+ env: "SARVAM_API_KEY",
2114
+ headers: [{
2115
+ name: "authorization",
2116
+ scheme: "bearer"
2117
+ }],
2118
+ endpoints: [{
2119
+ host: "api.sarvam.ai",
2120
+ method: ["POST"],
2121
+ path: { exact: "/v1/chat/completions" }
2122
+ }]
2123
+ },
2124
+ {
2125
+ id: "scaleway",
2126
+ name: "Scaleway",
2127
+ env: "SCALEWAY_API_KEY",
2128
+ headers: [{
2129
+ name: "authorization",
2130
+ scheme: "bearer"
2131
+ }],
2132
+ endpoints: [{
2133
+ host: "api.scaleway.ai",
2134
+ method: ["POST"],
2135
+ path: { exact: "/v1/chat/completions" }
2136
+ }]
2137
+ },
2138
+ {
2139
+ id: "scnet-token-plan",
2140
+ name: "SCNet Token Plan",
2141
+ env: "SCNET_API_KEY",
2142
+ headers: [{
2143
+ name: "authorization",
2144
+ scheme: "bearer"
2145
+ }],
2146
+ endpoints: [{
2147
+ host: "api.scnet.cn",
2148
+ method: ["POST"],
2149
+ path: { exact: "/api/llm/v1/chat/completions" }
2150
+ }]
2151
+ },
2152
+ {
2153
+ id: "scx-ai",
2154
+ name: "SCX.ai",
2155
+ env: "SCX_API_KEY",
2156
+ headers: [{
2157
+ name: "authorization",
2158
+ scheme: "bearer"
2159
+ }],
2160
+ endpoints: [{
2161
+ host: "api.scx.ai",
2162
+ method: ["POST"],
2163
+ path: { exact: "/v1/chat/completions" }
2164
+ }]
2165
+ },
2166
+ {
2167
+ id: "sensenova",
2168
+ name: "SenseNova (China)",
2169
+ env: "SENSENOVA_API_KEY",
2170
+ headers: [{
2171
+ name: "authorization",
2172
+ scheme: "bearer"
2173
+ }],
2174
+ endpoints: [{
2175
+ host: "token.sensenova.cn",
2176
+ method: ["POST"],
2177
+ path: { exact: "/v1/chat/completions" }
2178
+ }]
2179
+ },
2180
+ {
2181
+ id: "siliconflow",
2182
+ name: "SiliconFlow",
2183
+ env: "SILICONFLOW_API_KEY",
2184
+ headers: [{
2185
+ name: "authorization",
2186
+ scheme: "bearer"
2187
+ }],
2188
+ endpoints: [{
2189
+ host: "api.siliconflow.com",
2190
+ method: ["POST"],
2191
+ path: { exact: "/v1/chat/completions" }
2192
+ }]
2193
+ },
2194
+ {
2195
+ id: "siliconflow-cn",
2196
+ name: "SiliconFlow (China)",
2197
+ env: "SILICONFLOW_CN_API_KEY",
2198
+ headers: [{
2199
+ name: "authorization",
2200
+ scheme: "bearer"
2201
+ }],
2202
+ endpoints: [{
2203
+ host: "api.siliconflow.cn",
2204
+ method: ["POST"],
2205
+ path: { exact: "/v1/chat/completions" }
2206
+ }]
2207
+ },
2208
+ {
2209
+ id: "stackit",
2210
+ name: "STACKIT",
2211
+ env: "STACKIT_API_KEY",
2212
+ headers: [{
2213
+ name: "authorization",
2214
+ scheme: "bearer"
2215
+ }],
2216
+ endpoints: [{
2217
+ host: "api.openai-compat.model-serving.eu01.onstackit.cloud",
2218
+ method: ["POST"],
2219
+ path: { exact: "/v1/chat/completions" }
2220
+ }]
2221
+ },
2222
+ {
2223
+ id: "standardcompute",
2224
+ name: "Standard Compute",
2225
+ env: "STANDARDCOMPUTE_API_KEY",
2226
+ headers: [{
2227
+ name: "authorization",
2228
+ scheme: "bearer"
2229
+ }],
2230
+ endpoints: [{
2231
+ host: "api.stdcmpt.com",
2232
+ method: ["POST"],
2233
+ path: { exact: "/v1/chat/completions" }
2234
+ }]
2235
+ },
2236
+ {
2237
+ id: "stepfun",
2238
+ name: "StepFun (China)",
2239
+ env: "STEPFUN_API_KEY",
2240
+ headers: [{
2241
+ name: "authorization",
2242
+ scheme: "bearer"
2243
+ }],
2244
+ endpoints: [{
2245
+ host: "api.stepfun.com",
2246
+ method: ["POST"],
2247
+ path: { exact: "/v1/chat/completions" }
2248
+ }]
2249
+ },
2250
+ {
2251
+ id: "stepfun-ai",
2252
+ name: "StepFun (Global)",
2253
+ env: "STEPFUN_API_KEY",
2254
+ headers: [{
2255
+ name: "authorization",
2256
+ scheme: "bearer"
2257
+ }],
2258
+ endpoints: [{
2259
+ host: "api.stepfun.ai",
2260
+ method: ["POST"],
2261
+ path: { exact: "/v1/chat/completions" }
2262
+ }]
2263
+ },
2264
+ {
2265
+ id: "stepfun-ai-step-plan",
2266
+ name: "StepFun Step Plan (Global)",
2267
+ env: "STEPFUN_API_KEY",
2268
+ headers: [{
2269
+ name: "authorization",
2270
+ scheme: "bearer"
2271
+ }],
2272
+ endpoints: [{
2273
+ host: "api.stepfun.ai",
2274
+ method: ["POST"],
2275
+ path: { exact: "/step_plan/v1/chat/completions" }
2276
+ }]
2277
+ },
2278
+ {
2279
+ id: "stepfun-step-plan",
2280
+ name: "StepFun Step Plan (China)",
2281
+ env: "STEPFUN_API_KEY",
2282
+ headers: [{
2283
+ name: "authorization",
2284
+ scheme: "bearer"
2285
+ }],
2286
+ endpoints: [{
2287
+ host: "api.stepfun.com",
2288
+ method: ["POST"],
2289
+ path: { exact: "/step_plan/v1/chat/completions" }
2290
+ }]
2291
+ },
2292
+ {
2293
+ id: "subconscious",
2294
+ name: "Subconscious",
2295
+ env: "SUBCONSCIOUS_API_KEY",
2296
+ headers: [{
2297
+ name: "x-api-key",
2298
+ scheme: "raw"
2299
+ }],
2300
+ endpoints: [{
2301
+ host: "api.subconscious.dev",
2302
+ method: ["POST"],
2303
+ path: { exact: "/v1/messages" }
2304
+ }]
2305
+ },
2306
+ {
2307
+ id: "submodel",
2308
+ name: "submodel",
2309
+ env: "SUBMODEL_INSTAGEN_ACCESS_KEY",
2310
+ headers: [{
2311
+ name: "authorization",
2312
+ scheme: "bearer"
2313
+ }],
2314
+ endpoints: [{
2315
+ host: "llm.submodel.ai",
2316
+ method: ["POST"],
2317
+ path: { exact: "/v1/chat/completions" }
2318
+ }]
2319
+ },
2320
+ {
2321
+ id: "synthetic",
2322
+ name: "Synthetic",
2323
+ env: "SYNTHETIC_API_KEY",
2324
+ headers: [{
2325
+ name: "authorization",
2326
+ scheme: "bearer"
2327
+ }],
2328
+ endpoints: [{
2329
+ host: "api.synthetic.new",
2330
+ method: ["POST"],
2331
+ path: { exact: "/openai/v1/chat/completions" }
2332
+ }]
2333
+ },
2334
+ {
2335
+ id: "tempr",
2336
+ name: "Tempr",
2337
+ env: "TEMPR_API_KEY",
2338
+ headers: [{
2339
+ name: "authorization",
2340
+ scheme: "bearer"
2341
+ }],
2342
+ endpoints: [{
2343
+ host: "api.temprhq.io",
2344
+ method: ["POST"],
2345
+ path: { exact: "/v1/chat/completions" }
2346
+ }]
2347
+ },
2348
+ {
2349
+ id: "tencent-coding-plan",
2350
+ name: "Tencent Coding Plan (China)",
2351
+ env: "TENCENT_CODING_PLAN_API_KEY",
2352
+ headers: [{
2353
+ name: "authorization",
2354
+ scheme: "bearer"
2355
+ }],
2356
+ endpoints: [{
2357
+ host: "api.lkeap.cloud.tencent.com",
2358
+ method: ["POST"],
2359
+ path: { exact: "/coding/v3/chat/completions" }
2360
+ }]
2361
+ },
2362
+ {
2363
+ id: "tencent-token-plan",
2364
+ name: "Tencent Token Plan",
2365
+ env: "TENCENT_TOKEN_PLAN_API_KEY",
2366
+ headers: [{
2367
+ name: "authorization",
2368
+ scheme: "bearer"
2369
+ }],
2370
+ endpoints: [{
2371
+ host: "api.lkeap.cloud.tencent.com",
2372
+ method: ["POST"],
2373
+ path: { exact: "/plan/v3/chat/completions" }
2374
+ }]
2375
+ },
2376
+ {
2377
+ id: "tencent-tokenhub",
2378
+ name: "Tencent TokenHub",
2379
+ env: "TENCENT_TOKENHUB_API_KEY",
2380
+ headers: [{
2381
+ name: "authorization",
2382
+ scheme: "bearer"
2383
+ }],
2384
+ endpoints: [{
2385
+ host: "tokenhub.tencentmaas.com",
2386
+ method: ["POST"],
2387
+ path: { exact: "/v1/chat/completions" }
2388
+ }]
2389
+ },
2390
+ {
2391
+ id: "tensorx",
2392
+ name: "TensorX",
2393
+ env: "TENSORX_API_KEY",
2394
+ headers: [{
2395
+ name: "authorization",
2396
+ scheme: "bearer"
2397
+ }],
2398
+ endpoints: [{
2399
+ host: "api.tensorx.ai",
2400
+ method: ["POST"],
2401
+ path: { exact: "/v1/chat/completions" }
2402
+ }]
2403
+ },
2404
+ {
2405
+ id: "the-grid-ai",
2406
+ name: "The Grid AI",
2407
+ env: "THEGRID_API_KEY",
2408
+ headers: [{
2409
+ name: "authorization",
2410
+ scheme: "bearer"
2411
+ }],
2412
+ endpoints: [{
2413
+ host: "api.thegrid.ai",
2414
+ method: ["POST"],
2415
+ path: { exact: "/v1/chat/completions" }
2416
+ }]
2417
+ },
2418
+ {
2419
+ id: "thinkingmachines",
2420
+ name: "Thinking Machines",
2421
+ env: "TINKER_API_KEY",
2422
+ headers: [{
2423
+ name: "x-api-key",
2424
+ scheme: "raw"
2425
+ }],
2426
+ endpoints: [{
2427
+ host: "tinker.thinkingmachines.dev",
2428
+ method: ["POST"],
2429
+ path: { exact: "/services/tinker-prod/anthropic/api/v1/messages" }
2430
+ }]
2431
+ },
2432
+ {
2433
+ id: "tinfoil",
2434
+ name: "Tinfoil",
2435
+ env: "TINFOIL_API_KEY",
2436
+ headers: [{
2437
+ name: "authorization",
2438
+ scheme: "bearer"
2439
+ }],
2440
+ endpoints: [{
2441
+ host: "inference.tinfoil.sh",
2442
+ method: ["POST"],
2443
+ path: { exact: "/v1/chat/completions" }
2444
+ }]
2445
+ },
2446
+ {
2447
+ id: "togetherai",
2448
+ name: "Together AI",
2449
+ env: "TOGETHER_API_KEY",
2450
+ headers: [{
2451
+ name: "authorization",
2452
+ scheme: "bearer"
2453
+ }],
2454
+ endpoints: [{
2455
+ host: "api.together.xyz",
2456
+ method: ["POST"],
2457
+ path: { exact: "/v1/chat/completions" }
2458
+ }]
2459
+ },
2460
+ {
2461
+ id: "tokengo",
2462
+ name: "TokenGo",
2463
+ env: "TOKENGO_API_KEY",
2464
+ headers: [{
2465
+ name: "authorization",
2466
+ scheme: "bearer"
2467
+ }],
2468
+ endpoints: [{
2469
+ host: "api.tokengo.com",
2470
+ method: ["POST"],
2471
+ path: { exact: "/v1/chat/completions" }
2472
+ }]
2473
+ },
2474
+ {
2475
+ id: "tokenrouter",
2476
+ name: "TokenRouter",
2477
+ env: "TOKENROUTER_API_KEY",
2478
+ headers: [{
2479
+ name: "authorization",
2480
+ scheme: "bearer"
2481
+ }],
2482
+ endpoints: [{
2483
+ host: "api.tokenrouter.com",
2484
+ method: ["POST"],
2485
+ path: { exact: "/v1/chat/completions" }
2486
+ }]
2487
+ },
2488
+ {
2489
+ id: "trustedrouter",
2490
+ name: "TrustedRouter",
2491
+ env: "TRUSTEDROUTER_API_KEY",
2492
+ headers: [{
2493
+ name: "authorization",
2494
+ scheme: "bearer"
2495
+ }],
2496
+ endpoints: [{
2497
+ host: "api.trustedrouter.com",
2498
+ method: ["POST"],
2499
+ path: { exact: "/v1/chat/completions" }
2500
+ }]
2501
+ },
2502
+ {
2503
+ id: "umans-ai",
2504
+ name: "Umans AI",
2505
+ env: "UMANS_AI_API_KEY",
2506
+ headers: [{
2507
+ name: "authorization",
2508
+ scheme: "bearer"
2509
+ }],
2510
+ endpoints: [{
2511
+ host: "api.code.umans.ai",
2512
+ method: ["POST"],
2513
+ path: { exact: "/v1/chat/completions" }
2514
+ }]
2515
+ },
2516
+ {
2517
+ id: "umans-ai-coding-plan",
2518
+ name: "Umans AI Coding Plan",
2519
+ env: "UMANS_AI_CODING_PLAN_API_KEY",
2520
+ headers: [{
2521
+ name: "authorization",
2522
+ scheme: "bearer"
2523
+ }],
2524
+ endpoints: [{
2525
+ host: "api.code.umans.ai",
2526
+ method: ["POST"],
2527
+ path: { exact: "/v1/chat/completions" }
2528
+ }]
2529
+ },
2530
+ {
2531
+ id: "unorouter",
2532
+ name: "UnoRouter",
2533
+ env: "UNOROUTER_API_KEY",
2534
+ headers: [{
2535
+ name: "authorization",
2536
+ scheme: "bearer"
2537
+ }],
2538
+ endpoints: [{
2539
+ host: "api.unorouter.com",
2540
+ method: ["POST"],
2541
+ path: { exact: "/v1/chat/completions" }
2542
+ }]
2543
+ },
2544
+ {
2545
+ id: "upstage",
2546
+ name: "Upstage",
2547
+ env: "UPSTAGE_API_KEY",
2548
+ headers: [{
2549
+ name: "authorization",
2550
+ scheme: "bearer"
2551
+ }],
2552
+ endpoints: [{
2553
+ host: "api.upstage.ai",
2554
+ method: ["POST"],
2555
+ path: { exact: "/v1/solar/chat/completions" }
2556
+ }]
2557
+ },
2558
+ {
2559
+ id: "v0",
2560
+ name: "v0",
2561
+ env: "V0_API_KEY",
2562
+ headers: [{
2563
+ name: "authorization",
2564
+ scheme: "bearer"
2565
+ }],
2566
+ endpoints: [{
2567
+ host: "api.v0.dev",
2568
+ method: ["POST"],
2569
+ path: { exact: "/v1/chat/completions" }
2570
+ }]
2571
+ },
2572
+ {
2573
+ id: "vancine",
2574
+ name: "Vancine",
2575
+ env: "VANCINE_API_KEY",
2576
+ headers: [{
2577
+ name: "authorization",
2578
+ scheme: "bearer"
2579
+ }],
2580
+ endpoints: [{
2581
+ host: "vancine.com",
2582
+ method: ["POST"],
2583
+ path: { exact: "/v1/chat/completions" }
2584
+ }]
2585
+ },
2586
+ {
2587
+ id: "venice",
2588
+ name: "Venice AI",
2589
+ env: "VENICE_API_KEY",
2590
+ headers: [{
2591
+ name: "authorization",
2592
+ scheme: "bearer"
2593
+ }],
2594
+ endpoints: [{
2595
+ host: "api.venice.ai",
2596
+ method: ["POST"],
2597
+ path: { exact: "/api/v1/chat/completions" }
2598
+ }]
2599
+ },
2600
+ {
2601
+ id: "vercel",
2602
+ name: "Vercel AI Gateway",
2603
+ env: "AI_GATEWAY_API_KEY",
2604
+ headers: [{
2605
+ name: "authorization",
2606
+ scheme: "bearer"
2607
+ }],
2608
+ endpoints: [{
2609
+ host: "ai-gateway.vercel.sh",
2610
+ method: ["POST"],
2611
+ path: { exact: "/v3/ai/language-model" }
2612
+ }]
2613
+ },
2614
+ {
2615
+ id: "vispark",
2616
+ name: "Vispark",
2617
+ env: "VISPARK_LAB_API_KEY",
2618
+ headers: [{
2619
+ name: "authorization",
2620
+ scheme: "bearer"
2621
+ }],
2622
+ endpoints: [{
2623
+ host: "api.lab.vispark.in",
2624
+ method: ["POST"],
2625
+ path: { exact: "/v1/chat/completions" }
2626
+ }]
2627
+ },
2628
+ {
2629
+ id: "vivgrid",
2630
+ name: "Vivgrid",
2631
+ env: "VIVGRID_API_KEY",
2632
+ headers: [{
2633
+ name: "x-api-key",
2634
+ scheme: "raw"
2635
+ }, {
2636
+ name: "authorization",
2637
+ scheme: "bearer"
2638
+ }],
2639
+ endpoints: [
2640
+ {
2641
+ host: "api.vivgrid.com",
2642
+ method: ["POST"],
2643
+ path: { exact: "/v1/chat/completions" }
2644
+ },
2645
+ {
2646
+ host: "api.vivgrid.com",
2647
+ method: ["POST"],
2648
+ path: { exact: "/v1/messages" }
2649
+ },
2650
+ {
2651
+ host: "api.vivgrid.com",
2652
+ method: ["POST"],
2653
+ path: { exact: "/v1/responses" }
2654
+ }
2655
+ ]
2656
+ },
2657
+ {
2658
+ id: "volcengine",
2659
+ name: "Volcengine Ark",
2660
+ env: "ARK_API_KEY",
2661
+ headers: [{
2662
+ name: "authorization",
2663
+ scheme: "bearer"
2664
+ }],
2665
+ endpoints: [{
2666
+ host: "ark.cn-beijing.volces.com",
2667
+ method: ["POST"],
2668
+ path: { exact: "/api/v3/chat/completions" }
2669
+ }]
2670
+ },
2671
+ {
2672
+ id: "volcengine-coding-plan",
2673
+ name: "Volcengine Ark Coding Plan",
2674
+ env: "ARK_CODING_PLAN_API_KEY",
2675
+ headers: [{
2676
+ name: "authorization",
2677
+ scheme: "bearer"
2678
+ }],
2679
+ endpoints: [{
2680
+ host: "ark.cn-beijing.volces.com",
2681
+ method: ["POST"],
2682
+ path: { exact: "/api/coding/v3/chat/completions" }
2683
+ }]
2684
+ },
2685
+ {
2686
+ id: "vultr",
2687
+ name: "Vultr",
2688
+ env: "VULTR_API_KEY",
2689
+ headers: [{
2690
+ name: "authorization",
2691
+ scheme: "bearer"
2692
+ }],
2693
+ endpoints: [{
2694
+ host: "api.vultrinference.com",
2695
+ method: ["POST"],
2696
+ path: { exact: "/v1/chat/completions" }
2697
+ }]
2698
+ },
2699
+ {
2700
+ id: "wafer.ai",
2701
+ name: "Wafer",
2702
+ env: "WAFER_API_KEY",
2703
+ headers: [{
2704
+ name: "authorization",
2705
+ scheme: "bearer"
2706
+ }],
2707
+ endpoints: [{
2708
+ host: "pass.wafer.ai",
2709
+ method: ["POST"],
2710
+ path: { exact: "/v1/chat/completions" }
2711
+ }]
2712
+ },
2713
+ {
2714
+ id: "wallaby",
2715
+ name: "Wallaby",
2716
+ env: "WALLABY_API_KEY",
2717
+ headers: [{
2718
+ name: "authorization",
2719
+ scheme: "bearer"
2720
+ }],
2721
+ endpoints: [{
2722
+ host: "api.wallabytoken.com",
2723
+ method: ["POST"],
2724
+ path: { exact: "/v1/chat/completions" }
2725
+ }]
2726
+ },
2727
+ {
2728
+ id: "wandb",
2729
+ name: "CoreWeave",
2730
+ env: "WANDB_API_KEY",
2731
+ headers: [{
2732
+ name: "authorization",
2733
+ scheme: "bearer"
2734
+ }],
2735
+ endpoints: [{
2736
+ host: "api.inference.wandb.ai",
2737
+ method: ["POST"],
2738
+ path: { exact: "/v1/chat/completions" }
2739
+ }]
2740
+ },
2741
+ {
2742
+ id: "xai",
2743
+ name: "xAI",
2744
+ env: "XAI_API_KEY",
2745
+ headers: [{
2746
+ name: "authorization",
2747
+ scheme: "bearer"
2748
+ }],
2749
+ endpoints: [{
2750
+ host: "api.x.ai",
2751
+ method: ["POST"],
2752
+ path: { exact: "/v1/responses" }
2753
+ }]
2754
+ },
2755
+ {
2756
+ id: "xiaomi",
2757
+ name: "Xiaomi",
2758
+ env: "XIAOMI_API_KEY",
2759
+ headers: [{
2760
+ name: "authorization",
2761
+ scheme: "bearer"
2762
+ }],
2763
+ endpoints: [{
2764
+ host: "api.xiaomimimo.com",
2765
+ method: ["POST"],
2766
+ path: { exact: "/v1/chat/completions" }
2767
+ }]
2768
+ },
2769
+ {
2770
+ id: "xiaomi-token-plan-ams",
2771
+ name: "Xiaomi Token Plan (Europe)",
2772
+ env: "XIAOMI_API_KEY",
2773
+ headers: [{
2774
+ name: "authorization",
2775
+ scheme: "bearer"
2776
+ }],
2777
+ endpoints: [{
2778
+ host: "token-plan-ams.xiaomimimo.com",
2779
+ method: ["POST"],
2780
+ path: { exact: "/v1/chat/completions" }
2781
+ }]
2782
+ },
2783
+ {
2784
+ id: "xiaomi-token-plan-cn",
2785
+ name: "Xiaomi Token Plan (China)",
2786
+ env: "XIAOMI_API_KEY",
2787
+ headers: [{
2788
+ name: "authorization",
2789
+ scheme: "bearer"
2790
+ }],
2791
+ endpoints: [{
2792
+ host: "token-plan-cn.xiaomimimo.com",
2793
+ method: ["POST"],
2794
+ path: { exact: "/v1/chat/completions" }
2795
+ }]
2796
+ },
2797
+ {
2798
+ id: "xiaomi-token-plan-sgp",
2799
+ name: "Xiaomi Token Plan (Singapore)",
2800
+ env: "XIAOMI_API_KEY",
2801
+ headers: [{
2802
+ name: "authorization",
2803
+ scheme: "bearer"
2804
+ }],
2805
+ endpoints: [{
2806
+ host: "token-plan-sgp.xiaomimimo.com",
2807
+ method: ["POST"],
2808
+ path: { exact: "/v1/chat/completions" }
2809
+ }]
2810
+ },
2811
+ {
2812
+ id: "xpersona",
2813
+ name: "Xpersona",
2814
+ env: "XPERSONA_API_KEY",
2815
+ headers: [{
2816
+ name: "authorization",
2817
+ scheme: "bearer"
2818
+ }],
2819
+ endpoints: [{
2820
+ host: "www.xpersona.co",
2821
+ method: ["POST"],
2822
+ path: { exact: "/v1/chat/completions" }
2823
+ }]
2824
+ },
2825
+ {
2826
+ id: "zai",
2827
+ name: "Z.AI",
2828
+ env: "ZHIPU_API_KEY",
2829
+ headers: [{
2830
+ name: "authorization",
2831
+ scheme: "bearer"
2832
+ }],
2833
+ endpoints: [{
2834
+ host: "api.z.ai",
2835
+ method: ["POST"],
2836
+ path: { exact: "/api/paas/v4/chat/completions" }
2837
+ }]
2838
+ },
2839
+ {
2840
+ id: "zai-coding-plan",
2841
+ name: "Z.AI Coding Plan",
2842
+ env: "ZHIPU_API_KEY",
2843
+ headers: [{
2844
+ name: "authorization",
2845
+ scheme: "bearer"
2846
+ }],
2847
+ endpoints: [{
2848
+ host: "api.z.ai",
2849
+ method: ["POST"],
2850
+ path: { exact: "/api/coding/paas/v4/chat/completions" }
2851
+ }]
2852
+ },
2853
+ {
2854
+ id: "zeldoc",
2855
+ name: "Zeldoc",
2856
+ env: "ZELDOC_API_KEY",
2857
+ headers: [{
2858
+ name: "authorization",
2859
+ scheme: "bearer"
2860
+ }],
2861
+ endpoints: [{
2862
+ host: "api.zeldoc.ai",
2863
+ method: ["POST"],
2864
+ path: { exact: "/v1/chat/completions" }
2865
+ }]
2866
+ },
2867
+ {
2868
+ id: "zenifra",
2869
+ name: "Zenifra",
2870
+ env: "ZENIFRA_AI_KEY",
2871
+ headers: [{
2872
+ name: "authorization",
2873
+ scheme: "bearer"
2874
+ }],
2875
+ endpoints: [{
2876
+ host: "ai.zenifra.com",
2877
+ method: ["POST"],
2878
+ path: { exact: "/v1/chat/completions" }
2879
+ }]
2880
+ },
2881
+ {
2882
+ id: "zenmux",
2883
+ name: "ZenMux",
2884
+ env: "ZENMUX_API_KEY",
2885
+ headers: [{
2886
+ name: "x-api-key",
2887
+ scheme: "raw"
2888
+ }, {
2889
+ name: "authorization",
2890
+ scheme: "bearer"
2891
+ }],
2892
+ endpoints: [
2893
+ {
2894
+ host: "zenmux.ai",
2895
+ method: ["POST"],
2896
+ path: { exact: "/api/anthropic/v1/messages" }
2897
+ },
2898
+ {
2899
+ host: "zenmux.ai",
2900
+ method: ["POST"],
2901
+ path: { exact: "/api/v1/chat/completions" }
2902
+ },
2903
+ {
2904
+ host: "zenmux.ai",
2905
+ method: ["POST"],
2906
+ path: { exact: "/api/v1/responses" }
2907
+ }
2908
+ ]
2909
+ },
2910
+ {
2911
+ id: "zhipuai",
2912
+ name: "Zhipu AI",
2913
+ env: "ZHIPU_API_KEY",
2914
+ headers: [{
2915
+ name: "authorization",
2916
+ scheme: "bearer"
2917
+ }],
2918
+ endpoints: [{
2919
+ host: "open.bigmodel.cn",
2920
+ method: ["POST"],
2921
+ path: { exact: "/api/paas/v4/chat/completions" }
2922
+ }]
2923
+ },
2924
+ {
2925
+ id: "zhipuai-coding-plan",
2926
+ name: "Zhipu AI Coding Plan",
2927
+ env: "ZHIPU_API_KEY",
2928
+ headers: [{
2929
+ name: "authorization",
2930
+ scheme: "bearer"
2931
+ }],
2932
+ endpoints: [{
2933
+ host: "open.bigmodel.cn",
2934
+ method: ["POST"],
2935
+ path: { exact: "/api/coding/paas/v4/chat/completions" }
2936
+ }]
2937
+ }
2938
+ ];
2939
+ /** Every other provider OpenCode knows, and why reeval can't broker its key. */
2940
+ const REFUSED_OPENCODE_PROVIDERS = [
2941
+ {
2942
+ id: "aihubmix",
2943
+ name: "AIHubMix",
2944
+ why: "OpenCode installs its provider package from npm when it starts, so where it sends the key is unknown"
2945
+ },
2946
+ {
2947
+ id: "atomic-chat",
2948
+ name: "Atomic Chat",
2949
+ why: "it runs on your machine, and the sandbox can't reach the host's localhost"
2950
+ },
2951
+ {
2952
+ id: "azure",
2953
+ name: "Azure",
2954
+ why: "its API host is per account (AZURE_RESOURCE_NAME), which reeval doesn't pass"
2955
+ },
2956
+ {
2957
+ id: "cloudflare-ai-gateway",
2958
+ name: "Cloudflare AI Gateway",
2959
+ why: "its API host is per account (CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_GATEWAY_ID), which reeval doesn't pass"
2960
+ },
2961
+ {
2962
+ id: "cloudflare-workers-ai",
2963
+ name: "Cloudflare Workers AI",
2964
+ why: "its API host is per account (CLOUDFLARE_ACCOUNT_ID), which reeval doesn't pass"
2965
+ },
2966
+ {
2967
+ id: "databricks",
2968
+ name: "Databricks",
2969
+ why: "its API host is per account (DATABRICKS_HOST), which reeval doesn't pass"
2970
+ },
2971
+ {
2972
+ id: "github-copilot",
2973
+ name: "GitHub Copilot",
2974
+ why: "it runs on a GitHub Copilot subscription, through a GitHub login"
2975
+ },
2976
+ {
2977
+ id: "gitlab",
2978
+ name: "GitLab Duo",
2979
+ why: "it runs on a GitLab Duo subscription, through a GitLab login"
2980
+ },
2981
+ {
2982
+ id: "google-vertex",
2983
+ name: "Vertex",
2984
+ why: "it takes a service account (Vertex refuses API keys for most models), not a key in a header"
2985
+ },
2986
+ {
2987
+ id: "infomaniak",
2988
+ name: "Infomaniak",
2989
+ why: "its API host is per account (INFOMANIAK_PRODUCT_ID), which reeval doesn't pass"
2990
+ },
2991
+ {
2992
+ id: "lmstudio",
2993
+ name: "LMStudio",
2994
+ why: "it runs on your machine, and the sandbox can't reach the host's localhost"
2995
+ },
2996
+ {
2997
+ id: "lynkr",
2998
+ name: "Lynkr",
2999
+ why: "it runs on your machine, and the sandbox can't reach the host's localhost"
3000
+ },
3001
+ {
3002
+ id: "merge-gateway",
3003
+ name: "Merge Gateway",
3004
+ why: "OpenCode installs its provider package from npm when it starts, so where it sends the key is unknown"
3005
+ },
3006
+ {
3007
+ id: "morph",
3008
+ name: "Morph",
3009
+ why: "none of its models can call tools, so they can't run an agent"
3010
+ },
3011
+ {
3012
+ id: "neon",
3013
+ name: "Neon",
3014
+ why: "its API host is per account (NEON_AI_GATEWAY_BASE_URL), which reeval doesn't pass"
3015
+ },
3016
+ {
3017
+ id: "perplexity",
3018
+ name: "Perplexity",
3019
+ why: "none of its models can call tools, so they can't run an agent"
3020
+ },
3021
+ {
3022
+ id: "privatemode-ai",
3023
+ name: "Privatemode AI",
3024
+ why: "it runs on your machine, and the sandbox can't reach the host's localhost"
3025
+ },
3026
+ {
3027
+ id: "qvac",
3028
+ name: "QVAC",
3029
+ why: "OpenCode installs its provider package from npm when it starts, so where it sends the key is unknown"
3030
+ },
3031
+ {
3032
+ id: "salad-cloud",
3033
+ name: "SaladCloud AI Gateway",
3034
+ why: "OpenCode installs its provider package from npm when it starts, so where it sends the key is unknown"
3035
+ },
3036
+ {
3037
+ id: "sap-ai-core",
3038
+ name: "SAP AI Core",
3039
+ why: "its service key is JSON that OpenCode trades for OAuth tokens"
3040
+ },
3041
+ {
3042
+ id: "snowflake-cortex",
3043
+ name: "Snowflake Cortex",
3044
+ why: "its API host is per account (SNOWFLAKE_ACCOUNT), which reeval doesn't pass"
3045
+ },
3046
+ {
3047
+ id: "watsonx",
3048
+ name: "watsonx.ai",
3049
+ why: "OpenCode installs its provider package from npm when it starts, so where it sends the key is unknown"
3050
+ }
3051
+ ];
3052
+ //#endregion
3053
+ //#region ../harness-opencode/src/opencode-providers.ts
3054
+ const byId = new Map(OPENCODE_PROVIDERS.map((p) => [p.id, p]));
3055
+ const refusedById = new Map(REFUSED_OPENCODE_PROVIDERS.map((p) => [p.id, p]));
3056
+ /** A model id's provider and the model within it: `openrouter/anthropic/x` is `openrouter`. */
3057
+ function splitModel(model) {
3058
+ if (typeof model !== "string") return void 0;
3059
+ const at = model.indexOf("/");
3060
+ if (at <= 0 || at === model.length - 1) return void 0;
3061
+ return {
3062
+ provider: model.slice(0, at),
3063
+ model: model.slice(at + 1)
3064
+ };
3065
+ }
3066
+ /**
3067
+ * The provider a model id runs on, with its hosts built from `env`'s values for its variables
3068
+ * (or their defaults), and those values, which go into the sandbox as they are. Or why it can't
3069
+ * run: the id has no provider, OpenCode doesn't know the provider, reeval can't broker its key, or a
3070
+ * variable's value can't be part of a host name.
3071
+ */
3072
+ function resolveOpenCodeProvider(model, env = {}) {
3073
+ const split = splitModel(model);
3074
+ if (!split) return { error: `an OpenCode model id names its provider, <provider>/<model>, such as 'google/gemini-3.8-flash' or 'anthropic/claude-haiku-4-5' (got ${JSON.stringify(model)})` };
3075
+ const provider = byId.get(split.provider);
3076
+ if (provider) {
3077
+ const vars = {};
3078
+ for (const v of provider.vars ?? []) {
3079
+ const value = env[v.name] || v.default;
3080
+ if (!new RegExp(v.pattern).test(value)) return { error: `${v.name} is ${JSON.stringify(value)}, which isn't one ${provider.name} (${provider.id}) takes: OpenCode builds its API's host from it, so it must match /${v.pattern}/, such as ${JSON.stringify(v.default)}` };
3081
+ vars[v.name] = value;
3082
+ }
3083
+ const fill = (host) => Object.entries(vars).reduce((h, [name, value]) => h.replaceAll(`{${name}}`, value), host);
3084
+ const endpoints = provider.endpoints.map((e) => ({
3085
+ ...e,
3086
+ host: fill(e.host)
3087
+ }));
3088
+ return {
3089
+ provider: {
3090
+ ...provider,
3091
+ endpoints
3092
+ },
3093
+ vars
3094
+ };
3095
+ }
3096
+ const refused = refusedById.get(split.provider);
3097
+ if (refused) return { error: `reeval can't run OpenCode on ${refused.name} (${refused.id}): ${refused.why}, so the gateway can't keep its key out of the sandbox` };
3098
+ return { error: `OpenCode has no provider ${JSON.stringify(split.provider)} (in ${JSON.stringify(model)}); a model id is <provider>/<model>, such as 'google/gemini-3.8-flash'` };
3099
+ }
3100
+ /** Like {@link resolveOpenCodeProvider}, throwing its reason. */
3101
+ function openCodeProvider(model, env = {}) {
3102
+ const resolved = resolveOpenCodeProvider(model, env);
3103
+ if ("error" in resolved) throw new Error(resolved.error);
3104
+ return resolved.provider;
3105
+ }
3106
+ /** The hosts a provider's key goes to, which a restricted egress policy allows for it. */
3107
+ const providerHosts = (provider) => [...new Set(provider.endpoints.map((e) => e.host))];
3108
+ const headerValue = (header, key) => header.scheme === "bearer" ? `Bearer ${key}` : key;
3109
+ /**
3110
+ * The gateway rules that swap the key in: on each of the provider's hosts, for each header it
3111
+ * sends the key in, the placeholder for the real key.
3112
+ */
3113
+ function providerTransformations(provider, { key, placeholder, headers = {} }) {
3114
+ return providerHosts(provider).flatMap((host) => provider.headers.map((header) => ({
3115
+ matchUrl: `https://${host}`,
3116
+ matchHeaders: { [header.name]: headerValue(header, placeholder) },
3117
+ transformHeaders: {
3118
+ ...headers,
3119
+ [header.name]: headerValue(header, key)
3120
+ }
3121
+ })));
3122
+ }
3123
+ const pathOf = (e) => "exact" in e.path ? { exact: e.path.exact } : { regex: e.path.regex };
3124
+ /** The endpoints as a gateway matches them. */
3125
+ const providerEndpoints = (provider) => provider.endpoints.map((e) => ({
3126
+ host: e.host,
3127
+ method: [...e.method],
3128
+ path: pathOf(e)
3129
+ }));
3130
+ /** The model calls whose URL doesn't name the model: their response body does. */
3131
+ const providerModelResponses = (provider) => providerEndpoints(provider).filter((e) => e.method.includes("POST") && "exact" in e.path);
3132
+ /**
3133
+ * The model a request to the provider's API says served it: from the URL where the path names
3134
+ * it (Gemini's API), else from the response's `model`, with the reasoning effort it reports.
3135
+ */
3136
+ function providerServedModel(provider, request) {
3137
+ const path = request.path.split("?")[0] ?? request.path;
3138
+ for (const e of provider.endpoints) {
3139
+ if (e.host !== request.host || !e.method.includes(request.method) || request.method !== "POST") continue;
3140
+ if ("regex" in e.path) {
3141
+ const model = new RegExp(e.path.regex).exec(path)?.[1];
3142
+ if (model) return decodeURIComponent(model);
3143
+ } else if (e.path.exact === path && request.responseModel) return `${request.responseModel}${request.responseEffort ? `[effort=${request.responseEffort}]` : ""}`;
3144
+ }
3145
+ }
3146
+ //#endregion
3147
+ export { providerServedModel as a, splitModel as c, providerModelResponses as i, OPENCODE_PROVIDERS as l, providerEndpoints as n, providerTransformations as o, providerHosts as r, resolveOpenCodeProvider as s, openCodeProvider as t, REFUSED_OPENCODE_PROVIDERS as u };
3148
+
3149
+ //# sourceMappingURL=opencode-providers-DZuD_oYt.js.map