@lenylvt/pi-ai 0.64.0

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 (167) hide show
  1. package/README.md +203 -0
  2. package/dist/api-registry.d.ts +20 -0
  3. package/dist/api-registry.d.ts.map +1 -0
  4. package/dist/api-registry.js +44 -0
  5. package/dist/api-registry.js.map +1 -0
  6. package/dist/cli.d.ts +3 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +119 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/env-api-keys.d.ts +7 -0
  11. package/dist/env-api-keys.d.ts.map +1 -0
  12. package/dist/env-api-keys.js +13 -0
  13. package/dist/env-api-keys.js.map +1 -0
  14. package/dist/index.d.ts +20 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +14 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/models.d.ts +24 -0
  19. package/dist/models.d.ts.map +1 -0
  20. package/dist/models.generated.d.ts +2332 -0
  21. package/dist/models.generated.d.ts.map +1 -0
  22. package/dist/models.generated.js +2186 -0
  23. package/dist/models.generated.js.map +1 -0
  24. package/dist/models.js +60 -0
  25. package/dist/models.js.map +1 -0
  26. package/dist/oauth.d.ts +2 -0
  27. package/dist/oauth.d.ts.map +1 -0
  28. package/dist/oauth.js +2 -0
  29. package/dist/oauth.js.map +1 -0
  30. package/dist/providers/anthropic.d.ts +40 -0
  31. package/dist/providers/anthropic.d.ts.map +1 -0
  32. package/dist/providers/anthropic.js +749 -0
  33. package/dist/providers/anthropic.js.map +1 -0
  34. package/dist/providers/faux.d.ts +56 -0
  35. package/dist/providers/faux.d.ts.map +1 -0
  36. package/dist/providers/faux.js +367 -0
  37. package/dist/providers/faux.js.map +1 -0
  38. package/dist/providers/github-copilot-headers.d.ts +8 -0
  39. package/dist/providers/github-copilot-headers.d.ts.map +1 -0
  40. package/dist/providers/github-copilot-headers.js +29 -0
  41. package/dist/providers/github-copilot-headers.js.map +1 -0
  42. package/dist/providers/openai-codex-responses.d.ts +9 -0
  43. package/dist/providers/openai-codex-responses.d.ts.map +1 -0
  44. package/dist/providers/openai-codex-responses.js +741 -0
  45. package/dist/providers/openai-codex-responses.js.map +1 -0
  46. package/dist/providers/openai-completions.d.ts +15 -0
  47. package/dist/providers/openai-completions.d.ts.map +1 -0
  48. package/dist/providers/openai-completions.js +687 -0
  49. package/dist/providers/openai-completions.js.map +1 -0
  50. package/dist/providers/openai-responses-shared.d.ts +17 -0
  51. package/dist/providers/openai-responses-shared.d.ts.map +1 -0
  52. package/dist/providers/openai-responses-shared.js +458 -0
  53. package/dist/providers/openai-responses-shared.js.map +1 -0
  54. package/dist/providers/openai-responses.d.ts +13 -0
  55. package/dist/providers/openai-responses.d.ts.map +1 -0
  56. package/dist/providers/openai-responses.js +190 -0
  57. package/dist/providers/openai-responses.js.map +1 -0
  58. package/dist/providers/register-builtins.d.ts +16 -0
  59. package/dist/providers/register-builtins.d.ts.map +1 -0
  60. package/dist/providers/register-builtins.js +140 -0
  61. package/dist/providers/register-builtins.js.map +1 -0
  62. package/dist/providers/simple-options.d.ts +8 -0
  63. package/dist/providers/simple-options.d.ts.map +1 -0
  64. package/dist/providers/simple-options.js +35 -0
  65. package/dist/providers/simple-options.js.map +1 -0
  66. package/dist/providers/transform-messages.d.ts +8 -0
  67. package/dist/providers/transform-messages.d.ts.map +1 -0
  68. package/dist/providers/transform-messages.js +155 -0
  69. package/dist/providers/transform-messages.js.map +1 -0
  70. package/dist/stream.d.ts +8 -0
  71. package/dist/stream.d.ts.map +1 -0
  72. package/dist/stream.js +27 -0
  73. package/dist/stream.js.map +1 -0
  74. package/dist/types.d.ts +283 -0
  75. package/dist/types.d.ts.map +1 -0
  76. package/dist/types.js +2 -0
  77. package/dist/types.js.map +1 -0
  78. package/dist/utils/event-stream.d.ts +21 -0
  79. package/dist/utils/event-stream.d.ts.map +1 -0
  80. package/dist/utils/event-stream.js +81 -0
  81. package/dist/utils/event-stream.js.map +1 -0
  82. package/dist/utils/hash.d.ts +3 -0
  83. package/dist/utils/hash.d.ts.map +1 -0
  84. package/dist/utils/hash.js +14 -0
  85. package/dist/utils/hash.js.map +1 -0
  86. package/dist/utils/json-parse.d.ts +9 -0
  87. package/dist/utils/json-parse.d.ts.map +1 -0
  88. package/dist/utils/json-parse.js +29 -0
  89. package/dist/utils/json-parse.js.map +1 -0
  90. package/dist/utils/oauth/anthropic.d.ts +25 -0
  91. package/dist/utils/oauth/anthropic.d.ts.map +1 -0
  92. package/dist/utils/oauth/anthropic.js +335 -0
  93. package/dist/utils/oauth/anthropic.js.map +1 -0
  94. package/dist/utils/oauth/github-copilot.d.ts +30 -0
  95. package/dist/utils/oauth/github-copilot.d.ts.map +1 -0
  96. package/dist/utils/oauth/github-copilot.js +292 -0
  97. package/dist/utils/oauth/github-copilot.js.map +1 -0
  98. package/dist/utils/oauth/index.d.ts +36 -0
  99. package/dist/utils/oauth/index.d.ts.map +1 -0
  100. package/dist/utils/oauth/index.js +92 -0
  101. package/dist/utils/oauth/index.js.map +1 -0
  102. package/dist/utils/oauth/oauth-page.d.ts +3 -0
  103. package/dist/utils/oauth/oauth-page.d.ts.map +1 -0
  104. package/dist/utils/oauth/oauth-page.js +105 -0
  105. package/dist/utils/oauth/oauth-page.js.map +1 -0
  106. package/dist/utils/oauth/openai-codex.d.ts +34 -0
  107. package/dist/utils/oauth/openai-codex.d.ts.map +1 -0
  108. package/dist/utils/oauth/openai-codex.js +373 -0
  109. package/dist/utils/oauth/openai-codex.js.map +1 -0
  110. package/dist/utils/oauth/pkce.d.ts +13 -0
  111. package/dist/utils/oauth/pkce.d.ts.map +1 -0
  112. package/dist/utils/oauth/pkce.js +31 -0
  113. package/dist/utils/oauth/pkce.js.map +1 -0
  114. package/dist/utils/oauth/types.d.ts +47 -0
  115. package/dist/utils/oauth/types.d.ts.map +1 -0
  116. package/dist/utils/oauth/types.js +2 -0
  117. package/dist/utils/oauth/types.js.map +1 -0
  118. package/dist/utils/overflow.d.ts +53 -0
  119. package/dist/utils/overflow.d.ts.map +1 -0
  120. package/dist/utils/overflow.js +119 -0
  121. package/dist/utils/overflow.js.map +1 -0
  122. package/dist/utils/sanitize-unicode.d.ts +22 -0
  123. package/dist/utils/sanitize-unicode.d.ts.map +1 -0
  124. package/dist/utils/sanitize-unicode.js +26 -0
  125. package/dist/utils/sanitize-unicode.js.map +1 -0
  126. package/dist/utils/typebox-helpers.d.ts +17 -0
  127. package/dist/utils/typebox-helpers.d.ts.map +1 -0
  128. package/dist/utils/typebox-helpers.js +21 -0
  129. package/dist/utils/typebox-helpers.js.map +1 -0
  130. package/dist/utils/validation.d.ts +18 -0
  131. package/dist/utils/validation.d.ts.map +1 -0
  132. package/dist/utils/validation.js +80 -0
  133. package/dist/utils/validation.js.map +1 -0
  134. package/package.json +89 -0
  135. package/src/api-registry.ts +98 -0
  136. package/src/cli.ts +136 -0
  137. package/src/env-api-keys.ts +22 -0
  138. package/src/index.ts +29 -0
  139. package/src/models.generated.ts +2188 -0
  140. package/src/models.ts +82 -0
  141. package/src/oauth.ts +1 -0
  142. package/src/providers/anthropic.ts +905 -0
  143. package/src/providers/faux.ts +498 -0
  144. package/src/providers/github-copilot-headers.ts +37 -0
  145. package/src/providers/openai-codex-responses.ts +929 -0
  146. package/src/providers/openai-completions.ts +811 -0
  147. package/src/providers/openai-responses-shared.ts +513 -0
  148. package/src/providers/openai-responses.ts +251 -0
  149. package/src/providers/register-builtins.ts +232 -0
  150. package/src/providers/simple-options.ts +46 -0
  151. package/src/providers/transform-messages.ts +172 -0
  152. package/src/stream.ts +59 -0
  153. package/src/types.ts +294 -0
  154. package/src/utils/event-stream.ts +87 -0
  155. package/src/utils/hash.ts +13 -0
  156. package/src/utils/json-parse.ts +28 -0
  157. package/src/utils/oauth/anthropic.ts +402 -0
  158. package/src/utils/oauth/github-copilot.ts +396 -0
  159. package/src/utils/oauth/index.ts +123 -0
  160. package/src/utils/oauth/oauth-page.ts +109 -0
  161. package/src/utils/oauth/openai-codex.ts +450 -0
  162. package/src/utils/oauth/pkce.ts +34 -0
  163. package/src/utils/oauth/types.ts +59 -0
  164. package/src/utils/overflow.ts +125 -0
  165. package/src/utils/sanitize-unicode.ts +25 -0
  166. package/src/utils/typebox-helpers.ts +24 -0
  167. package/src/utils/validation.ts +93 -0
@@ -0,0 +1,2186 @@
1
+ // This file is auto-generated by scripts/generate-models.ts
2
+ // Do not edit manually - run 'bun packages/ai/scripts/generate-models.ts' to update
3
+ export const MODELS = {
4
+ "anthropic": {
5
+ "claude-3-5-haiku-20241022": {
6
+ id: "claude-3-5-haiku-20241022",
7
+ name: "Claude Haiku 3.5",
8
+ api: "anthropic-messages",
9
+ provider: "anthropic",
10
+ baseUrl: "https://api.anthropic.com",
11
+ reasoning: false,
12
+ input: ["text", "image"],
13
+ cost: {
14
+ input: 0.8,
15
+ output: 4,
16
+ cacheRead: 0.08,
17
+ cacheWrite: 1,
18
+ },
19
+ contextWindow: 200000,
20
+ maxTokens: 8192,
21
+ },
22
+ "claude-3-5-haiku-latest": {
23
+ id: "claude-3-5-haiku-latest",
24
+ name: "Claude Haiku 3.5 (latest)",
25
+ api: "anthropic-messages",
26
+ provider: "anthropic",
27
+ baseUrl: "https://api.anthropic.com",
28
+ reasoning: false,
29
+ input: ["text", "image"],
30
+ cost: {
31
+ input: 0.8,
32
+ output: 4,
33
+ cacheRead: 0.08,
34
+ cacheWrite: 1,
35
+ },
36
+ contextWindow: 200000,
37
+ maxTokens: 8192,
38
+ },
39
+ "claude-3-5-sonnet-20240620": {
40
+ id: "claude-3-5-sonnet-20240620",
41
+ name: "Claude Sonnet 3.5",
42
+ api: "anthropic-messages",
43
+ provider: "anthropic",
44
+ baseUrl: "https://api.anthropic.com",
45
+ reasoning: false,
46
+ input: ["text", "image"],
47
+ cost: {
48
+ input: 3,
49
+ output: 15,
50
+ cacheRead: 0.3,
51
+ cacheWrite: 3.75,
52
+ },
53
+ contextWindow: 200000,
54
+ maxTokens: 8192,
55
+ },
56
+ "claude-3-5-sonnet-20241022": {
57
+ id: "claude-3-5-sonnet-20241022",
58
+ name: "Claude Sonnet 3.5 v2",
59
+ api: "anthropic-messages",
60
+ provider: "anthropic",
61
+ baseUrl: "https://api.anthropic.com",
62
+ reasoning: false,
63
+ input: ["text", "image"],
64
+ cost: {
65
+ input: 3,
66
+ output: 15,
67
+ cacheRead: 0.3,
68
+ cacheWrite: 3.75,
69
+ },
70
+ contextWindow: 200000,
71
+ maxTokens: 8192,
72
+ },
73
+ "claude-3-7-sonnet-20250219": {
74
+ id: "claude-3-7-sonnet-20250219",
75
+ name: "Claude Sonnet 3.7",
76
+ api: "anthropic-messages",
77
+ provider: "anthropic",
78
+ baseUrl: "https://api.anthropic.com",
79
+ reasoning: true,
80
+ input: ["text", "image"],
81
+ cost: {
82
+ input: 3,
83
+ output: 15,
84
+ cacheRead: 0.3,
85
+ cacheWrite: 3.75,
86
+ },
87
+ contextWindow: 200000,
88
+ maxTokens: 64000,
89
+ },
90
+ "claude-3-haiku-20240307": {
91
+ id: "claude-3-haiku-20240307",
92
+ name: "Claude Haiku 3",
93
+ api: "anthropic-messages",
94
+ provider: "anthropic",
95
+ baseUrl: "https://api.anthropic.com",
96
+ reasoning: false,
97
+ input: ["text", "image"],
98
+ cost: {
99
+ input: 0.25,
100
+ output: 1.25,
101
+ cacheRead: 0.03,
102
+ cacheWrite: 0.3,
103
+ },
104
+ contextWindow: 200000,
105
+ maxTokens: 4096,
106
+ },
107
+ "claude-3-opus-20240229": {
108
+ id: "claude-3-opus-20240229",
109
+ name: "Claude Opus 3",
110
+ api: "anthropic-messages",
111
+ provider: "anthropic",
112
+ baseUrl: "https://api.anthropic.com",
113
+ reasoning: false,
114
+ input: ["text", "image"],
115
+ cost: {
116
+ input: 15,
117
+ output: 75,
118
+ cacheRead: 1.5,
119
+ cacheWrite: 18.75,
120
+ },
121
+ contextWindow: 200000,
122
+ maxTokens: 4096,
123
+ },
124
+ "claude-3-sonnet-20240229": {
125
+ id: "claude-3-sonnet-20240229",
126
+ name: "Claude Sonnet 3",
127
+ api: "anthropic-messages",
128
+ provider: "anthropic",
129
+ baseUrl: "https://api.anthropic.com",
130
+ reasoning: false,
131
+ input: ["text", "image"],
132
+ cost: {
133
+ input: 3,
134
+ output: 15,
135
+ cacheRead: 0.3,
136
+ cacheWrite: 0.3,
137
+ },
138
+ contextWindow: 200000,
139
+ maxTokens: 4096,
140
+ },
141
+ "claude-haiku-4-5": {
142
+ id: "claude-haiku-4-5",
143
+ name: "Claude Haiku 4.5 (latest)",
144
+ api: "anthropic-messages",
145
+ provider: "anthropic",
146
+ baseUrl: "https://api.anthropic.com",
147
+ reasoning: true,
148
+ input: ["text", "image"],
149
+ cost: {
150
+ input: 1,
151
+ output: 5,
152
+ cacheRead: 0.1,
153
+ cacheWrite: 1.25,
154
+ },
155
+ contextWindow: 200000,
156
+ maxTokens: 64000,
157
+ },
158
+ "claude-haiku-4-5-20251001": {
159
+ id: "claude-haiku-4-5-20251001",
160
+ name: "Claude Haiku 4.5",
161
+ api: "anthropic-messages",
162
+ provider: "anthropic",
163
+ baseUrl: "https://api.anthropic.com",
164
+ reasoning: true,
165
+ input: ["text", "image"],
166
+ cost: {
167
+ input: 1,
168
+ output: 5,
169
+ cacheRead: 0.1,
170
+ cacheWrite: 1.25,
171
+ },
172
+ contextWindow: 200000,
173
+ maxTokens: 64000,
174
+ },
175
+ "claude-opus-4-0": {
176
+ id: "claude-opus-4-0",
177
+ name: "Claude Opus 4 (latest)",
178
+ api: "anthropic-messages",
179
+ provider: "anthropic",
180
+ baseUrl: "https://api.anthropic.com",
181
+ reasoning: true,
182
+ input: ["text", "image"],
183
+ cost: {
184
+ input: 15,
185
+ output: 75,
186
+ cacheRead: 1.5,
187
+ cacheWrite: 18.75,
188
+ },
189
+ contextWindow: 200000,
190
+ maxTokens: 32000,
191
+ },
192
+ "claude-opus-4-1": {
193
+ id: "claude-opus-4-1",
194
+ name: "Claude Opus 4.1 (latest)",
195
+ api: "anthropic-messages",
196
+ provider: "anthropic",
197
+ baseUrl: "https://api.anthropic.com",
198
+ reasoning: true,
199
+ input: ["text", "image"],
200
+ cost: {
201
+ input: 15,
202
+ output: 75,
203
+ cacheRead: 1.5,
204
+ cacheWrite: 18.75,
205
+ },
206
+ contextWindow: 200000,
207
+ maxTokens: 32000,
208
+ },
209
+ "claude-opus-4-1-20250805": {
210
+ id: "claude-opus-4-1-20250805",
211
+ name: "Claude Opus 4.1",
212
+ api: "anthropic-messages",
213
+ provider: "anthropic",
214
+ baseUrl: "https://api.anthropic.com",
215
+ reasoning: true,
216
+ input: ["text", "image"],
217
+ cost: {
218
+ input: 15,
219
+ output: 75,
220
+ cacheRead: 1.5,
221
+ cacheWrite: 18.75,
222
+ },
223
+ contextWindow: 200000,
224
+ maxTokens: 32000,
225
+ },
226
+ "claude-opus-4-20250514": {
227
+ id: "claude-opus-4-20250514",
228
+ name: "Claude Opus 4",
229
+ api: "anthropic-messages",
230
+ provider: "anthropic",
231
+ baseUrl: "https://api.anthropic.com",
232
+ reasoning: true,
233
+ input: ["text", "image"],
234
+ cost: {
235
+ input: 15,
236
+ output: 75,
237
+ cacheRead: 1.5,
238
+ cacheWrite: 18.75,
239
+ },
240
+ contextWindow: 200000,
241
+ maxTokens: 32000,
242
+ },
243
+ "claude-opus-4-5": {
244
+ id: "claude-opus-4-5",
245
+ name: "Claude Opus 4.5 (latest)",
246
+ api: "anthropic-messages",
247
+ provider: "anthropic",
248
+ baseUrl: "https://api.anthropic.com",
249
+ reasoning: true,
250
+ input: ["text", "image"],
251
+ cost: {
252
+ input: 5,
253
+ output: 25,
254
+ cacheRead: 0.5,
255
+ cacheWrite: 6.25,
256
+ },
257
+ contextWindow: 200000,
258
+ maxTokens: 64000,
259
+ },
260
+ "claude-opus-4-5-20251101": {
261
+ id: "claude-opus-4-5-20251101",
262
+ name: "Claude Opus 4.5",
263
+ api: "anthropic-messages",
264
+ provider: "anthropic",
265
+ baseUrl: "https://api.anthropic.com",
266
+ reasoning: true,
267
+ input: ["text", "image"],
268
+ cost: {
269
+ input: 5,
270
+ output: 25,
271
+ cacheRead: 0.5,
272
+ cacheWrite: 6.25,
273
+ },
274
+ contextWindow: 200000,
275
+ maxTokens: 64000,
276
+ },
277
+ "claude-opus-4-6": {
278
+ id: "claude-opus-4-6",
279
+ name: "Claude Opus 4.6",
280
+ api: "anthropic-messages",
281
+ provider: "anthropic",
282
+ baseUrl: "https://api.anthropic.com",
283
+ reasoning: true,
284
+ input: ["text", "image"],
285
+ cost: {
286
+ input: 5,
287
+ output: 25,
288
+ cacheRead: 0.5,
289
+ cacheWrite: 6.25,
290
+ },
291
+ contextWindow: 1000000,
292
+ maxTokens: 128000,
293
+ },
294
+ "claude-sonnet-4-0": {
295
+ id: "claude-sonnet-4-0",
296
+ name: "Claude Sonnet 4 (latest)",
297
+ api: "anthropic-messages",
298
+ provider: "anthropic",
299
+ baseUrl: "https://api.anthropic.com",
300
+ reasoning: true,
301
+ input: ["text", "image"],
302
+ cost: {
303
+ input: 3,
304
+ output: 15,
305
+ cacheRead: 0.3,
306
+ cacheWrite: 3.75,
307
+ },
308
+ contextWindow: 200000,
309
+ maxTokens: 64000,
310
+ },
311
+ "claude-sonnet-4-20250514": {
312
+ id: "claude-sonnet-4-20250514",
313
+ name: "Claude Sonnet 4",
314
+ api: "anthropic-messages",
315
+ provider: "anthropic",
316
+ baseUrl: "https://api.anthropic.com",
317
+ reasoning: true,
318
+ input: ["text", "image"],
319
+ cost: {
320
+ input: 3,
321
+ output: 15,
322
+ cacheRead: 0.3,
323
+ cacheWrite: 3.75,
324
+ },
325
+ contextWindow: 200000,
326
+ maxTokens: 64000,
327
+ },
328
+ "claude-sonnet-4-5": {
329
+ id: "claude-sonnet-4-5",
330
+ name: "Claude Sonnet 4.5 (latest)",
331
+ api: "anthropic-messages",
332
+ provider: "anthropic",
333
+ baseUrl: "https://api.anthropic.com",
334
+ reasoning: true,
335
+ input: ["text", "image"],
336
+ cost: {
337
+ input: 3,
338
+ output: 15,
339
+ cacheRead: 0.3,
340
+ cacheWrite: 3.75,
341
+ },
342
+ contextWindow: 200000,
343
+ maxTokens: 64000,
344
+ },
345
+ "claude-sonnet-4-5-20250929": {
346
+ id: "claude-sonnet-4-5-20250929",
347
+ name: "Claude Sonnet 4.5",
348
+ api: "anthropic-messages",
349
+ provider: "anthropic",
350
+ baseUrl: "https://api.anthropic.com",
351
+ reasoning: true,
352
+ input: ["text", "image"],
353
+ cost: {
354
+ input: 3,
355
+ output: 15,
356
+ cacheRead: 0.3,
357
+ cacheWrite: 3.75,
358
+ },
359
+ contextWindow: 200000,
360
+ maxTokens: 64000,
361
+ },
362
+ "claude-sonnet-4-6": {
363
+ id: "claude-sonnet-4-6",
364
+ name: "Claude Sonnet 4.6",
365
+ api: "anthropic-messages",
366
+ provider: "anthropic",
367
+ baseUrl: "https://api.anthropic.com",
368
+ reasoning: true,
369
+ input: ["text", "image"],
370
+ cost: {
371
+ input: 3,
372
+ output: 15,
373
+ cacheRead: 0.3,
374
+ cacheWrite: 3.75,
375
+ },
376
+ contextWindow: 1000000,
377
+ maxTokens: 64000,
378
+ },
379
+ },
380
+ "github-copilot": {
381
+ "claude-haiku-4.5": {
382
+ id: "claude-haiku-4.5",
383
+ name: "Claude Haiku 4.5",
384
+ api: "anthropic-messages",
385
+ provider: "github-copilot",
386
+ baseUrl: "https://api.individual.githubcopilot.com",
387
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
388
+ reasoning: true,
389
+ input: ["text", "image"],
390
+ cost: {
391
+ input: 0,
392
+ output: 0,
393
+ cacheRead: 0,
394
+ cacheWrite: 0,
395
+ },
396
+ contextWindow: 144000,
397
+ maxTokens: 32000,
398
+ },
399
+ "claude-opus-4.5": {
400
+ id: "claude-opus-4.5",
401
+ name: "Claude Opus 4.5",
402
+ api: "anthropic-messages",
403
+ provider: "github-copilot",
404
+ baseUrl: "https://api.individual.githubcopilot.com",
405
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
406
+ reasoning: true,
407
+ input: ["text", "image"],
408
+ cost: {
409
+ input: 0,
410
+ output: 0,
411
+ cacheRead: 0,
412
+ cacheWrite: 0,
413
+ },
414
+ contextWindow: 160000,
415
+ maxTokens: 32000,
416
+ },
417
+ "claude-opus-4.6": {
418
+ id: "claude-opus-4.6",
419
+ name: "Claude Opus 4.6",
420
+ api: "anthropic-messages",
421
+ provider: "github-copilot",
422
+ baseUrl: "https://api.individual.githubcopilot.com",
423
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
424
+ reasoning: true,
425
+ input: ["text", "image"],
426
+ cost: {
427
+ input: 0,
428
+ output: 0,
429
+ cacheRead: 0,
430
+ cacheWrite: 0,
431
+ },
432
+ contextWindow: 144000,
433
+ maxTokens: 64000,
434
+ },
435
+ "claude-sonnet-4": {
436
+ id: "claude-sonnet-4",
437
+ name: "Claude Sonnet 4",
438
+ api: "anthropic-messages",
439
+ provider: "github-copilot",
440
+ baseUrl: "https://api.individual.githubcopilot.com",
441
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
442
+ reasoning: true,
443
+ input: ["text", "image"],
444
+ cost: {
445
+ input: 0,
446
+ output: 0,
447
+ cacheRead: 0,
448
+ cacheWrite: 0,
449
+ },
450
+ contextWindow: 216000,
451
+ maxTokens: 16000,
452
+ },
453
+ "claude-sonnet-4.5": {
454
+ id: "claude-sonnet-4.5",
455
+ name: "Claude Sonnet 4.5",
456
+ api: "anthropic-messages",
457
+ provider: "github-copilot",
458
+ baseUrl: "https://api.individual.githubcopilot.com",
459
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
460
+ reasoning: true,
461
+ input: ["text", "image"],
462
+ cost: {
463
+ input: 0,
464
+ output: 0,
465
+ cacheRead: 0,
466
+ cacheWrite: 0,
467
+ },
468
+ contextWindow: 144000,
469
+ maxTokens: 32000,
470
+ },
471
+ "claude-sonnet-4.6": {
472
+ id: "claude-sonnet-4.6",
473
+ name: "Claude Sonnet 4.6",
474
+ api: "anthropic-messages",
475
+ provider: "github-copilot",
476
+ baseUrl: "https://api.individual.githubcopilot.com",
477
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
478
+ reasoning: true,
479
+ input: ["text", "image"],
480
+ cost: {
481
+ input: 0,
482
+ output: 0,
483
+ cacheRead: 0,
484
+ cacheWrite: 0,
485
+ },
486
+ contextWindow: 200000,
487
+ maxTokens: 32000,
488
+ },
489
+ "gemini-2.5-pro": {
490
+ id: "gemini-2.5-pro",
491
+ name: "Gemini 2.5 Pro",
492
+ api: "openai-completions",
493
+ provider: "github-copilot",
494
+ baseUrl: "https://api.individual.githubcopilot.com",
495
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
496
+ compat: { "supportsStore": false, "supportsDeveloperRole": false, "supportsReasoningEffort": false },
497
+ reasoning: false,
498
+ input: ["text", "image"],
499
+ cost: {
500
+ input: 0,
501
+ output: 0,
502
+ cacheRead: 0,
503
+ cacheWrite: 0,
504
+ },
505
+ contextWindow: 128000,
506
+ maxTokens: 64000,
507
+ },
508
+ "gemini-3-flash-preview": {
509
+ id: "gemini-3-flash-preview",
510
+ name: "Gemini 3 Flash",
511
+ api: "openai-completions",
512
+ provider: "github-copilot",
513
+ baseUrl: "https://api.individual.githubcopilot.com",
514
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
515
+ compat: { "supportsStore": false, "supportsDeveloperRole": false, "supportsReasoningEffort": false },
516
+ reasoning: true,
517
+ input: ["text", "image"],
518
+ cost: {
519
+ input: 0,
520
+ output: 0,
521
+ cacheRead: 0,
522
+ cacheWrite: 0,
523
+ },
524
+ contextWindow: 128000,
525
+ maxTokens: 64000,
526
+ },
527
+ "gemini-3-pro-preview": {
528
+ id: "gemini-3-pro-preview",
529
+ name: "Gemini 3 Pro Preview",
530
+ api: "openai-completions",
531
+ provider: "github-copilot",
532
+ baseUrl: "https://api.individual.githubcopilot.com",
533
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
534
+ compat: { "supportsStore": false, "supportsDeveloperRole": false, "supportsReasoningEffort": false },
535
+ reasoning: true,
536
+ input: ["text", "image"],
537
+ cost: {
538
+ input: 0,
539
+ output: 0,
540
+ cacheRead: 0,
541
+ cacheWrite: 0,
542
+ },
543
+ contextWindow: 128000,
544
+ maxTokens: 64000,
545
+ },
546
+ "gemini-3.1-pro-preview": {
547
+ id: "gemini-3.1-pro-preview",
548
+ name: "Gemini 3.1 Pro Preview",
549
+ api: "openai-completions",
550
+ provider: "github-copilot",
551
+ baseUrl: "https://api.individual.githubcopilot.com",
552
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
553
+ compat: { "supportsStore": false, "supportsDeveloperRole": false, "supportsReasoningEffort": false },
554
+ reasoning: true,
555
+ input: ["text", "image"],
556
+ cost: {
557
+ input: 0,
558
+ output: 0,
559
+ cacheRead: 0,
560
+ cacheWrite: 0,
561
+ },
562
+ contextWindow: 128000,
563
+ maxTokens: 64000,
564
+ },
565
+ "gpt-4.1": {
566
+ id: "gpt-4.1",
567
+ name: "GPT-4.1",
568
+ api: "openai-completions",
569
+ provider: "github-copilot",
570
+ baseUrl: "https://api.individual.githubcopilot.com",
571
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
572
+ compat: { "supportsStore": false, "supportsDeveloperRole": false, "supportsReasoningEffort": false },
573
+ reasoning: false,
574
+ input: ["text", "image"],
575
+ cost: {
576
+ input: 0,
577
+ output: 0,
578
+ cacheRead: 0,
579
+ cacheWrite: 0,
580
+ },
581
+ contextWindow: 128000,
582
+ maxTokens: 16384,
583
+ },
584
+ "gpt-4o": {
585
+ id: "gpt-4o",
586
+ name: "GPT-4o",
587
+ api: "openai-completions",
588
+ provider: "github-copilot",
589
+ baseUrl: "https://api.individual.githubcopilot.com",
590
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
591
+ compat: { "supportsStore": false, "supportsDeveloperRole": false, "supportsReasoningEffort": false },
592
+ reasoning: false,
593
+ input: ["text", "image"],
594
+ cost: {
595
+ input: 0,
596
+ output: 0,
597
+ cacheRead: 0,
598
+ cacheWrite: 0,
599
+ },
600
+ contextWindow: 128000,
601
+ maxTokens: 4096,
602
+ },
603
+ "gpt-5": {
604
+ id: "gpt-5",
605
+ name: "GPT-5",
606
+ api: "openai-responses",
607
+ provider: "github-copilot",
608
+ baseUrl: "https://api.individual.githubcopilot.com",
609
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
610
+ reasoning: true,
611
+ input: ["text", "image"],
612
+ cost: {
613
+ input: 0,
614
+ output: 0,
615
+ cacheRead: 0,
616
+ cacheWrite: 0,
617
+ },
618
+ contextWindow: 128000,
619
+ maxTokens: 128000,
620
+ },
621
+ "gpt-5-mini": {
622
+ id: "gpt-5-mini",
623
+ name: "GPT-5-mini",
624
+ api: "openai-responses",
625
+ provider: "github-copilot",
626
+ baseUrl: "https://api.individual.githubcopilot.com",
627
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
628
+ reasoning: true,
629
+ input: ["text", "image"],
630
+ cost: {
631
+ input: 0,
632
+ output: 0,
633
+ cacheRead: 0,
634
+ cacheWrite: 0,
635
+ },
636
+ contextWindow: 264000,
637
+ maxTokens: 64000,
638
+ },
639
+ "gpt-5.1": {
640
+ id: "gpt-5.1",
641
+ name: "GPT-5.1",
642
+ api: "openai-responses",
643
+ provider: "github-copilot",
644
+ baseUrl: "https://api.individual.githubcopilot.com",
645
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
646
+ reasoning: true,
647
+ input: ["text", "image"],
648
+ cost: {
649
+ input: 0,
650
+ output: 0,
651
+ cacheRead: 0,
652
+ cacheWrite: 0,
653
+ },
654
+ contextWindow: 264000,
655
+ maxTokens: 64000,
656
+ },
657
+ "gpt-5.1-codex": {
658
+ id: "gpt-5.1-codex",
659
+ name: "GPT-5.1-Codex",
660
+ api: "openai-responses",
661
+ provider: "github-copilot",
662
+ baseUrl: "https://api.individual.githubcopilot.com",
663
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
664
+ reasoning: true,
665
+ input: ["text", "image"],
666
+ cost: {
667
+ input: 0,
668
+ output: 0,
669
+ cacheRead: 0,
670
+ cacheWrite: 0,
671
+ },
672
+ contextWindow: 400000,
673
+ maxTokens: 128000,
674
+ },
675
+ "gpt-5.1-codex-max": {
676
+ id: "gpt-5.1-codex-max",
677
+ name: "GPT-5.1-Codex-max",
678
+ api: "openai-responses",
679
+ provider: "github-copilot",
680
+ baseUrl: "https://api.individual.githubcopilot.com",
681
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
682
+ reasoning: true,
683
+ input: ["text", "image"],
684
+ cost: {
685
+ input: 0,
686
+ output: 0,
687
+ cacheRead: 0,
688
+ cacheWrite: 0,
689
+ },
690
+ contextWindow: 400000,
691
+ maxTokens: 128000,
692
+ },
693
+ "gpt-5.1-codex-mini": {
694
+ id: "gpt-5.1-codex-mini",
695
+ name: "GPT-5.1-Codex-mini",
696
+ api: "openai-responses",
697
+ provider: "github-copilot",
698
+ baseUrl: "https://api.individual.githubcopilot.com",
699
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
700
+ reasoning: true,
701
+ input: ["text", "image"],
702
+ cost: {
703
+ input: 0,
704
+ output: 0,
705
+ cacheRead: 0,
706
+ cacheWrite: 0,
707
+ },
708
+ contextWindow: 400000,
709
+ maxTokens: 128000,
710
+ },
711
+ "gpt-5.2": {
712
+ id: "gpt-5.2",
713
+ name: "GPT-5.2",
714
+ api: "openai-responses",
715
+ provider: "github-copilot",
716
+ baseUrl: "https://api.individual.githubcopilot.com",
717
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
718
+ reasoning: true,
719
+ input: ["text", "image"],
720
+ cost: {
721
+ input: 0,
722
+ output: 0,
723
+ cacheRead: 0,
724
+ cacheWrite: 0,
725
+ },
726
+ contextWindow: 264000,
727
+ maxTokens: 64000,
728
+ },
729
+ "gpt-5.2-codex": {
730
+ id: "gpt-5.2-codex",
731
+ name: "GPT-5.2-Codex",
732
+ api: "openai-responses",
733
+ provider: "github-copilot",
734
+ baseUrl: "https://api.individual.githubcopilot.com",
735
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
736
+ reasoning: true,
737
+ input: ["text", "image"],
738
+ cost: {
739
+ input: 0,
740
+ output: 0,
741
+ cacheRead: 0,
742
+ cacheWrite: 0,
743
+ },
744
+ contextWindow: 400000,
745
+ maxTokens: 128000,
746
+ },
747
+ "gpt-5.3-codex": {
748
+ id: "gpt-5.3-codex",
749
+ name: "GPT-5.3-Codex",
750
+ api: "openai-responses",
751
+ provider: "github-copilot",
752
+ baseUrl: "https://api.individual.githubcopilot.com",
753
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
754
+ reasoning: true,
755
+ input: ["text", "image"],
756
+ cost: {
757
+ input: 0,
758
+ output: 0,
759
+ cacheRead: 0,
760
+ cacheWrite: 0,
761
+ },
762
+ contextWindow: 400000,
763
+ maxTokens: 128000,
764
+ },
765
+ "gpt-5.4": {
766
+ id: "gpt-5.4",
767
+ name: "GPT-5.4",
768
+ api: "openai-responses",
769
+ provider: "github-copilot",
770
+ baseUrl: "https://api.individual.githubcopilot.com",
771
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
772
+ reasoning: true,
773
+ input: ["text", "image"],
774
+ cost: {
775
+ input: 0,
776
+ output: 0,
777
+ cacheRead: 0,
778
+ cacheWrite: 0,
779
+ },
780
+ contextWindow: 400000,
781
+ maxTokens: 128000,
782
+ },
783
+ "gpt-5.4-mini": {
784
+ id: "gpt-5.4-mini",
785
+ name: "GPT-5.4 mini",
786
+ api: "openai-responses",
787
+ provider: "github-copilot",
788
+ baseUrl: "https://api.individual.githubcopilot.com",
789
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
790
+ reasoning: true,
791
+ input: ["text", "image"],
792
+ cost: {
793
+ input: 0,
794
+ output: 0,
795
+ cacheRead: 0,
796
+ cacheWrite: 0,
797
+ },
798
+ contextWindow: 400000,
799
+ maxTokens: 128000,
800
+ },
801
+ "grok-code-fast-1": {
802
+ id: "grok-code-fast-1",
803
+ name: "Grok Code Fast 1",
804
+ api: "openai-completions",
805
+ provider: "github-copilot",
806
+ baseUrl: "https://api.individual.githubcopilot.com",
807
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
808
+ compat: { "supportsStore": false, "supportsDeveloperRole": false, "supportsReasoningEffort": false },
809
+ reasoning: true,
810
+ input: ["text"],
811
+ cost: {
812
+ input: 0,
813
+ output: 0,
814
+ cacheRead: 0,
815
+ cacheWrite: 0,
816
+ },
817
+ contextWindow: 128000,
818
+ maxTokens: 64000,
819
+ },
820
+ },
821
+ "openai-codex": {
822
+ "gpt-5.1": {
823
+ id: "gpt-5.1",
824
+ name: "GPT-5.1",
825
+ api: "openai-codex-responses",
826
+ provider: "openai-codex",
827
+ baseUrl: "https://chatgpt.com/backend-api",
828
+ reasoning: true,
829
+ input: ["text", "image"],
830
+ cost: {
831
+ input: 1.25,
832
+ output: 10,
833
+ cacheRead: 0.125,
834
+ cacheWrite: 0,
835
+ },
836
+ contextWindow: 272000,
837
+ maxTokens: 128000,
838
+ },
839
+ "gpt-5.1-codex-max": {
840
+ id: "gpt-5.1-codex-max",
841
+ name: "GPT-5.1 Codex Max",
842
+ api: "openai-codex-responses",
843
+ provider: "openai-codex",
844
+ baseUrl: "https://chatgpt.com/backend-api",
845
+ reasoning: true,
846
+ input: ["text", "image"],
847
+ cost: {
848
+ input: 1.25,
849
+ output: 10,
850
+ cacheRead: 0.125,
851
+ cacheWrite: 0,
852
+ },
853
+ contextWindow: 272000,
854
+ maxTokens: 128000,
855
+ },
856
+ "gpt-5.1-codex-mini": {
857
+ id: "gpt-5.1-codex-mini",
858
+ name: "GPT-5.1 Codex Mini",
859
+ api: "openai-codex-responses",
860
+ provider: "openai-codex",
861
+ baseUrl: "https://chatgpt.com/backend-api",
862
+ reasoning: true,
863
+ input: ["text", "image"],
864
+ cost: {
865
+ input: 0.25,
866
+ output: 2,
867
+ cacheRead: 0.025,
868
+ cacheWrite: 0,
869
+ },
870
+ contextWindow: 272000,
871
+ maxTokens: 128000,
872
+ },
873
+ "gpt-5.2": {
874
+ id: "gpt-5.2",
875
+ name: "GPT-5.2",
876
+ api: "openai-codex-responses",
877
+ provider: "openai-codex",
878
+ baseUrl: "https://chatgpt.com/backend-api",
879
+ reasoning: true,
880
+ input: ["text", "image"],
881
+ cost: {
882
+ input: 1.75,
883
+ output: 14,
884
+ cacheRead: 0.175,
885
+ cacheWrite: 0,
886
+ },
887
+ contextWindow: 272000,
888
+ maxTokens: 128000,
889
+ },
890
+ "gpt-5.2-codex": {
891
+ id: "gpt-5.2-codex",
892
+ name: "GPT-5.2 Codex",
893
+ api: "openai-codex-responses",
894
+ provider: "openai-codex",
895
+ baseUrl: "https://chatgpt.com/backend-api",
896
+ reasoning: true,
897
+ input: ["text", "image"],
898
+ cost: {
899
+ input: 1.75,
900
+ output: 14,
901
+ cacheRead: 0.175,
902
+ cacheWrite: 0,
903
+ },
904
+ contextWindow: 272000,
905
+ maxTokens: 128000,
906
+ },
907
+ "gpt-5.3-codex": {
908
+ id: "gpt-5.3-codex",
909
+ name: "GPT-5.3 Codex",
910
+ api: "openai-codex-responses",
911
+ provider: "openai-codex",
912
+ baseUrl: "https://chatgpt.com/backend-api",
913
+ reasoning: true,
914
+ input: ["text", "image"],
915
+ cost: {
916
+ input: 1.75,
917
+ output: 14,
918
+ cacheRead: 0.175,
919
+ cacheWrite: 0,
920
+ },
921
+ contextWindow: 272000,
922
+ maxTokens: 128000,
923
+ },
924
+ "gpt-5.3-codex-spark": {
925
+ id: "gpt-5.3-codex-spark",
926
+ name: "GPT-5.3 Codex Spark",
927
+ api: "openai-codex-responses",
928
+ provider: "openai-codex",
929
+ baseUrl: "https://chatgpt.com/backend-api",
930
+ reasoning: true,
931
+ input: ["text"],
932
+ cost: {
933
+ input: 0,
934
+ output: 0,
935
+ cacheRead: 0,
936
+ cacheWrite: 0,
937
+ },
938
+ contextWindow: 128000,
939
+ maxTokens: 128000,
940
+ },
941
+ "gpt-5.4": {
942
+ id: "gpt-5.4",
943
+ name: "GPT-5.4",
944
+ api: "openai-codex-responses",
945
+ provider: "openai-codex",
946
+ baseUrl: "https://chatgpt.com/backend-api",
947
+ reasoning: true,
948
+ input: ["text", "image"],
949
+ cost: {
950
+ input: 2.5,
951
+ output: 15,
952
+ cacheRead: 0.25,
953
+ cacheWrite: 0,
954
+ },
955
+ contextWindow: 272000,
956
+ maxTokens: 128000,
957
+ },
958
+ "gpt-5.4-mini": {
959
+ id: "gpt-5.4-mini",
960
+ name: "GPT-5.4 Mini",
961
+ api: "openai-codex-responses",
962
+ provider: "openai-codex",
963
+ baseUrl: "https://chatgpt.com/backend-api",
964
+ reasoning: true,
965
+ input: ["text", "image"],
966
+ cost: {
967
+ input: 0.75,
968
+ output: 4.5,
969
+ cacheRead: 0.075,
970
+ cacheWrite: 0,
971
+ },
972
+ contextWindow: 272000,
973
+ maxTokens: 128000,
974
+ },
975
+ },
976
+ "openrouter": {
977
+ "anthropic/claude-3-haiku": {
978
+ id: "anthropic/claude-3-haiku",
979
+ name: "Anthropic: Claude 3 Haiku",
980
+ api: "openai-completions",
981
+ provider: "openrouter",
982
+ baseUrl: "https://openrouter.ai/api/v1",
983
+ reasoning: false,
984
+ input: ["text", "image"],
985
+ cost: {
986
+ input: 0.25,
987
+ output: 1.25,
988
+ cacheRead: 0.03,
989
+ cacheWrite: 0.3,
990
+ },
991
+ contextWindow: 200000,
992
+ maxTokens: 4096,
993
+ },
994
+ "anthropic/claude-3.5-haiku": {
995
+ id: "anthropic/claude-3.5-haiku",
996
+ name: "Anthropic: Claude 3.5 Haiku",
997
+ api: "openai-completions",
998
+ provider: "openrouter",
999
+ baseUrl: "https://openrouter.ai/api/v1",
1000
+ reasoning: false,
1001
+ input: ["text", "image"],
1002
+ cost: {
1003
+ input: 0.7999999999999999,
1004
+ output: 4,
1005
+ cacheRead: 0.08,
1006
+ cacheWrite: 1,
1007
+ },
1008
+ contextWindow: 200000,
1009
+ maxTokens: 8192,
1010
+ },
1011
+ "anthropic/claude-3.5-sonnet": {
1012
+ id: "anthropic/claude-3.5-sonnet",
1013
+ name: "Anthropic: Claude 3.5 Sonnet",
1014
+ api: "openai-completions",
1015
+ provider: "openrouter",
1016
+ baseUrl: "https://openrouter.ai/api/v1",
1017
+ reasoning: false,
1018
+ input: ["text", "image"],
1019
+ cost: {
1020
+ input: 6,
1021
+ output: 30,
1022
+ cacheRead: 0.6,
1023
+ cacheWrite: 7.5,
1024
+ },
1025
+ contextWindow: 200000,
1026
+ maxTokens: 8192,
1027
+ },
1028
+ "anthropic/claude-3.7-sonnet": {
1029
+ id: "anthropic/claude-3.7-sonnet",
1030
+ name: "Anthropic: Claude 3.7 Sonnet",
1031
+ api: "openai-completions",
1032
+ provider: "openrouter",
1033
+ baseUrl: "https://openrouter.ai/api/v1",
1034
+ reasoning: true,
1035
+ input: ["text", "image"],
1036
+ cost: {
1037
+ input: 3,
1038
+ output: 15,
1039
+ cacheRead: 0.3,
1040
+ cacheWrite: 3.75,
1041
+ },
1042
+ contextWindow: 200000,
1043
+ maxTokens: 64000,
1044
+ },
1045
+ "anthropic/claude-3.7-sonnet:thinking": {
1046
+ id: "anthropic/claude-3.7-sonnet:thinking",
1047
+ name: "Anthropic: Claude 3.7 Sonnet (thinking)",
1048
+ api: "openai-completions",
1049
+ provider: "openrouter",
1050
+ baseUrl: "https://openrouter.ai/api/v1",
1051
+ reasoning: true,
1052
+ input: ["text", "image"],
1053
+ cost: {
1054
+ input: 3,
1055
+ output: 15,
1056
+ cacheRead: 0.3,
1057
+ cacheWrite: 3.75,
1058
+ },
1059
+ contextWindow: 200000,
1060
+ maxTokens: 64000,
1061
+ },
1062
+ "anthropic/claude-haiku-4.5": {
1063
+ id: "anthropic/claude-haiku-4.5",
1064
+ name: "Anthropic: Claude Haiku 4.5",
1065
+ api: "openai-completions",
1066
+ provider: "openrouter",
1067
+ baseUrl: "https://openrouter.ai/api/v1",
1068
+ reasoning: true,
1069
+ input: ["text", "image"],
1070
+ cost: {
1071
+ input: 1,
1072
+ output: 5,
1073
+ cacheRead: 0.09999999999999999,
1074
+ cacheWrite: 1.25,
1075
+ },
1076
+ contextWindow: 200000,
1077
+ maxTokens: 64000,
1078
+ },
1079
+ "anthropic/claude-opus-4": {
1080
+ id: "anthropic/claude-opus-4",
1081
+ name: "Anthropic: Claude Opus 4",
1082
+ api: "openai-completions",
1083
+ provider: "openrouter",
1084
+ baseUrl: "https://openrouter.ai/api/v1",
1085
+ reasoning: true,
1086
+ input: ["text", "image"],
1087
+ cost: {
1088
+ input: 15,
1089
+ output: 75,
1090
+ cacheRead: 1.5,
1091
+ cacheWrite: 18.75,
1092
+ },
1093
+ contextWindow: 200000,
1094
+ maxTokens: 32000,
1095
+ },
1096
+ "anthropic/claude-opus-4.1": {
1097
+ id: "anthropic/claude-opus-4.1",
1098
+ name: "Anthropic: Claude Opus 4.1",
1099
+ api: "openai-completions",
1100
+ provider: "openrouter",
1101
+ baseUrl: "https://openrouter.ai/api/v1",
1102
+ reasoning: true,
1103
+ input: ["text", "image"],
1104
+ cost: {
1105
+ input: 15,
1106
+ output: 75,
1107
+ cacheRead: 1.5,
1108
+ cacheWrite: 18.75,
1109
+ },
1110
+ contextWindow: 200000,
1111
+ maxTokens: 32000,
1112
+ },
1113
+ "anthropic/claude-opus-4.5": {
1114
+ id: "anthropic/claude-opus-4.5",
1115
+ name: "Anthropic: Claude Opus 4.5",
1116
+ api: "openai-completions",
1117
+ provider: "openrouter",
1118
+ baseUrl: "https://openrouter.ai/api/v1",
1119
+ reasoning: true,
1120
+ input: ["text", "image"],
1121
+ cost: {
1122
+ input: 5,
1123
+ output: 25,
1124
+ cacheRead: 0.5,
1125
+ cacheWrite: 6.25,
1126
+ },
1127
+ contextWindow: 200000,
1128
+ maxTokens: 64000,
1129
+ },
1130
+ "anthropic/claude-opus-4.6": {
1131
+ id: "anthropic/claude-opus-4.6",
1132
+ name: "Anthropic: Claude Opus 4.6",
1133
+ api: "openai-completions",
1134
+ provider: "openrouter",
1135
+ baseUrl: "https://openrouter.ai/api/v1",
1136
+ reasoning: true,
1137
+ input: ["text", "image"],
1138
+ cost: {
1139
+ input: 5,
1140
+ output: 25,
1141
+ cacheRead: 0.5,
1142
+ cacheWrite: 6.25,
1143
+ },
1144
+ contextWindow: 1000000,
1145
+ maxTokens: 128000,
1146
+ },
1147
+ "anthropic/claude-sonnet-4": {
1148
+ id: "anthropic/claude-sonnet-4",
1149
+ name: "Anthropic: Claude Sonnet 4",
1150
+ api: "openai-completions",
1151
+ provider: "openrouter",
1152
+ baseUrl: "https://openrouter.ai/api/v1",
1153
+ reasoning: true,
1154
+ input: ["text", "image"],
1155
+ cost: {
1156
+ input: 3,
1157
+ output: 15,
1158
+ cacheRead: 0.3,
1159
+ cacheWrite: 3.75,
1160
+ },
1161
+ contextWindow: 200000,
1162
+ maxTokens: 64000,
1163
+ },
1164
+ "anthropic/claude-sonnet-4.5": {
1165
+ id: "anthropic/claude-sonnet-4.5",
1166
+ name: "Anthropic: Claude Sonnet 4.5",
1167
+ api: "openai-completions",
1168
+ provider: "openrouter",
1169
+ baseUrl: "https://openrouter.ai/api/v1",
1170
+ reasoning: true,
1171
+ input: ["text", "image"],
1172
+ cost: {
1173
+ input: 3,
1174
+ output: 15,
1175
+ cacheRead: 0.3,
1176
+ cacheWrite: 3.75,
1177
+ },
1178
+ contextWindow: 1000000,
1179
+ maxTokens: 64000,
1180
+ },
1181
+ "anthropic/claude-sonnet-4.6": {
1182
+ id: "anthropic/claude-sonnet-4.6",
1183
+ name: "Anthropic: Claude Sonnet 4.6",
1184
+ api: "openai-completions",
1185
+ provider: "openrouter",
1186
+ baseUrl: "https://openrouter.ai/api/v1",
1187
+ reasoning: true,
1188
+ input: ["text", "image"],
1189
+ cost: {
1190
+ input: 3,
1191
+ output: 15,
1192
+ cacheRead: 0.3,
1193
+ cacheWrite: 3.75,
1194
+ },
1195
+ contextWindow: 1000000,
1196
+ maxTokens: 128000,
1197
+ },
1198
+ "auto": {
1199
+ id: "auto",
1200
+ name: "Auto",
1201
+ api: "openai-completions",
1202
+ provider: "openrouter",
1203
+ baseUrl: "https://openrouter.ai/api/v1",
1204
+ reasoning: true,
1205
+ input: ["text", "image"],
1206
+ cost: {
1207
+ input: 0,
1208
+ output: 0,
1209
+ cacheRead: 0,
1210
+ cacheWrite: 0,
1211
+ },
1212
+ contextWindow: 2000000,
1213
+ maxTokens: 30000,
1214
+ },
1215
+ "openai/gpt-3.5-turbo": {
1216
+ id: "openai/gpt-3.5-turbo",
1217
+ name: "OpenAI: GPT-3.5 Turbo",
1218
+ api: "openai-completions",
1219
+ provider: "openrouter",
1220
+ baseUrl: "https://openrouter.ai/api/v1",
1221
+ reasoning: false,
1222
+ input: ["text"],
1223
+ cost: {
1224
+ input: 0.5,
1225
+ output: 1.5,
1226
+ cacheRead: 0,
1227
+ cacheWrite: 0,
1228
+ },
1229
+ contextWindow: 16385,
1230
+ maxTokens: 4096,
1231
+ },
1232
+ "openai/gpt-3.5-turbo-0613": {
1233
+ id: "openai/gpt-3.5-turbo-0613",
1234
+ name: "OpenAI: GPT-3.5 Turbo (older v0613)",
1235
+ api: "openai-completions",
1236
+ provider: "openrouter",
1237
+ baseUrl: "https://openrouter.ai/api/v1",
1238
+ reasoning: false,
1239
+ input: ["text"],
1240
+ cost: {
1241
+ input: 1,
1242
+ output: 2,
1243
+ cacheRead: 0,
1244
+ cacheWrite: 0,
1245
+ },
1246
+ contextWindow: 4095,
1247
+ maxTokens: 4096,
1248
+ },
1249
+ "openai/gpt-3.5-turbo-16k": {
1250
+ id: "openai/gpt-3.5-turbo-16k",
1251
+ name: "OpenAI: GPT-3.5 Turbo 16k",
1252
+ api: "openai-completions",
1253
+ provider: "openrouter",
1254
+ baseUrl: "https://openrouter.ai/api/v1",
1255
+ reasoning: false,
1256
+ input: ["text"],
1257
+ cost: {
1258
+ input: 3,
1259
+ output: 4,
1260
+ cacheRead: 0,
1261
+ cacheWrite: 0,
1262
+ },
1263
+ contextWindow: 16385,
1264
+ maxTokens: 4096,
1265
+ },
1266
+ "openai/gpt-4": {
1267
+ id: "openai/gpt-4",
1268
+ name: "OpenAI: GPT-4",
1269
+ api: "openai-completions",
1270
+ provider: "openrouter",
1271
+ baseUrl: "https://openrouter.ai/api/v1",
1272
+ reasoning: false,
1273
+ input: ["text"],
1274
+ cost: {
1275
+ input: 30,
1276
+ output: 60,
1277
+ cacheRead: 0,
1278
+ cacheWrite: 0,
1279
+ },
1280
+ contextWindow: 8191,
1281
+ maxTokens: 4096,
1282
+ },
1283
+ "openai/gpt-4-0314": {
1284
+ id: "openai/gpt-4-0314",
1285
+ name: "OpenAI: GPT-4 (older v0314)",
1286
+ api: "openai-completions",
1287
+ provider: "openrouter",
1288
+ baseUrl: "https://openrouter.ai/api/v1",
1289
+ reasoning: false,
1290
+ input: ["text"],
1291
+ cost: {
1292
+ input: 30,
1293
+ output: 60,
1294
+ cacheRead: 0,
1295
+ cacheWrite: 0,
1296
+ },
1297
+ contextWindow: 8191,
1298
+ maxTokens: 4096,
1299
+ },
1300
+ "openai/gpt-4-1106-preview": {
1301
+ id: "openai/gpt-4-1106-preview",
1302
+ name: "OpenAI: GPT-4 Turbo (older v1106)",
1303
+ api: "openai-completions",
1304
+ provider: "openrouter",
1305
+ baseUrl: "https://openrouter.ai/api/v1",
1306
+ reasoning: false,
1307
+ input: ["text"],
1308
+ cost: {
1309
+ input: 10,
1310
+ output: 30,
1311
+ cacheRead: 0,
1312
+ cacheWrite: 0,
1313
+ },
1314
+ contextWindow: 128000,
1315
+ maxTokens: 4096,
1316
+ },
1317
+ "openai/gpt-4-turbo": {
1318
+ id: "openai/gpt-4-turbo",
1319
+ name: "OpenAI: GPT-4 Turbo",
1320
+ api: "openai-completions",
1321
+ provider: "openrouter",
1322
+ baseUrl: "https://openrouter.ai/api/v1",
1323
+ reasoning: false,
1324
+ input: ["text", "image"],
1325
+ cost: {
1326
+ input: 10,
1327
+ output: 30,
1328
+ cacheRead: 0,
1329
+ cacheWrite: 0,
1330
+ },
1331
+ contextWindow: 128000,
1332
+ maxTokens: 4096,
1333
+ },
1334
+ "openai/gpt-4-turbo-preview": {
1335
+ id: "openai/gpt-4-turbo-preview",
1336
+ name: "OpenAI: GPT-4 Turbo Preview",
1337
+ api: "openai-completions",
1338
+ provider: "openrouter",
1339
+ baseUrl: "https://openrouter.ai/api/v1",
1340
+ reasoning: false,
1341
+ input: ["text"],
1342
+ cost: {
1343
+ input: 10,
1344
+ output: 30,
1345
+ cacheRead: 0,
1346
+ cacheWrite: 0,
1347
+ },
1348
+ contextWindow: 128000,
1349
+ maxTokens: 4096,
1350
+ },
1351
+ "openai/gpt-4.1": {
1352
+ id: "openai/gpt-4.1",
1353
+ name: "OpenAI: GPT-4.1",
1354
+ api: "openai-completions",
1355
+ provider: "openrouter",
1356
+ baseUrl: "https://openrouter.ai/api/v1",
1357
+ reasoning: false,
1358
+ input: ["text", "image"],
1359
+ cost: {
1360
+ input: 2,
1361
+ output: 8,
1362
+ cacheRead: 0.5,
1363
+ cacheWrite: 0,
1364
+ },
1365
+ contextWindow: 1047576,
1366
+ maxTokens: 32768,
1367
+ },
1368
+ "openai/gpt-4.1-mini": {
1369
+ id: "openai/gpt-4.1-mini",
1370
+ name: "OpenAI: GPT-4.1 Mini",
1371
+ api: "openai-completions",
1372
+ provider: "openrouter",
1373
+ baseUrl: "https://openrouter.ai/api/v1",
1374
+ reasoning: false,
1375
+ input: ["text", "image"],
1376
+ cost: {
1377
+ input: 0.39999999999999997,
1378
+ output: 1.5999999999999999,
1379
+ cacheRead: 0.09999999999999999,
1380
+ cacheWrite: 0,
1381
+ },
1382
+ contextWindow: 1047576,
1383
+ maxTokens: 32768,
1384
+ },
1385
+ "openai/gpt-4.1-nano": {
1386
+ id: "openai/gpt-4.1-nano",
1387
+ name: "OpenAI: GPT-4.1 Nano",
1388
+ api: "openai-completions",
1389
+ provider: "openrouter",
1390
+ baseUrl: "https://openrouter.ai/api/v1",
1391
+ reasoning: false,
1392
+ input: ["text", "image"],
1393
+ cost: {
1394
+ input: 0.09999999999999999,
1395
+ output: 0.39999999999999997,
1396
+ cacheRead: 0.024999999999999998,
1397
+ cacheWrite: 0,
1398
+ },
1399
+ contextWindow: 1047576,
1400
+ maxTokens: 32768,
1401
+ },
1402
+ "openai/gpt-4o": {
1403
+ id: "openai/gpt-4o",
1404
+ name: "OpenAI: GPT-4o",
1405
+ api: "openai-completions",
1406
+ provider: "openrouter",
1407
+ baseUrl: "https://openrouter.ai/api/v1",
1408
+ reasoning: false,
1409
+ input: ["text", "image"],
1410
+ cost: {
1411
+ input: 2.5,
1412
+ output: 10,
1413
+ cacheRead: 1.25,
1414
+ cacheWrite: 0,
1415
+ },
1416
+ contextWindow: 128000,
1417
+ maxTokens: 16384,
1418
+ },
1419
+ "openai/gpt-4o-2024-05-13": {
1420
+ id: "openai/gpt-4o-2024-05-13",
1421
+ name: "OpenAI: GPT-4o (2024-05-13)",
1422
+ api: "openai-completions",
1423
+ provider: "openrouter",
1424
+ baseUrl: "https://openrouter.ai/api/v1",
1425
+ reasoning: false,
1426
+ input: ["text", "image"],
1427
+ cost: {
1428
+ input: 5,
1429
+ output: 15,
1430
+ cacheRead: 0,
1431
+ cacheWrite: 0,
1432
+ },
1433
+ contextWindow: 128000,
1434
+ maxTokens: 4096,
1435
+ },
1436
+ "openai/gpt-4o-2024-08-06": {
1437
+ id: "openai/gpt-4o-2024-08-06",
1438
+ name: "OpenAI: GPT-4o (2024-08-06)",
1439
+ api: "openai-completions",
1440
+ provider: "openrouter",
1441
+ baseUrl: "https://openrouter.ai/api/v1",
1442
+ reasoning: false,
1443
+ input: ["text", "image"],
1444
+ cost: {
1445
+ input: 2.5,
1446
+ output: 10,
1447
+ cacheRead: 1.25,
1448
+ cacheWrite: 0,
1449
+ },
1450
+ contextWindow: 128000,
1451
+ maxTokens: 16384,
1452
+ },
1453
+ "openai/gpt-4o-2024-11-20": {
1454
+ id: "openai/gpt-4o-2024-11-20",
1455
+ name: "OpenAI: GPT-4o (2024-11-20)",
1456
+ api: "openai-completions",
1457
+ provider: "openrouter",
1458
+ baseUrl: "https://openrouter.ai/api/v1",
1459
+ reasoning: false,
1460
+ input: ["text", "image"],
1461
+ cost: {
1462
+ input: 2.5,
1463
+ output: 10,
1464
+ cacheRead: 1.25,
1465
+ cacheWrite: 0,
1466
+ },
1467
+ contextWindow: 128000,
1468
+ maxTokens: 16384,
1469
+ },
1470
+ "openai/gpt-4o-audio-preview": {
1471
+ id: "openai/gpt-4o-audio-preview",
1472
+ name: "OpenAI: GPT-4o Audio",
1473
+ api: "openai-completions",
1474
+ provider: "openrouter",
1475
+ baseUrl: "https://openrouter.ai/api/v1",
1476
+ reasoning: false,
1477
+ input: ["text"],
1478
+ cost: {
1479
+ input: 2.5,
1480
+ output: 10,
1481
+ cacheRead: 0,
1482
+ cacheWrite: 0,
1483
+ },
1484
+ contextWindow: 128000,
1485
+ maxTokens: 16384,
1486
+ },
1487
+ "openai/gpt-4o-mini": {
1488
+ id: "openai/gpt-4o-mini",
1489
+ name: "OpenAI: GPT-4o-mini",
1490
+ api: "openai-completions",
1491
+ provider: "openrouter",
1492
+ baseUrl: "https://openrouter.ai/api/v1",
1493
+ reasoning: false,
1494
+ input: ["text", "image"],
1495
+ cost: {
1496
+ input: 0.15,
1497
+ output: 0.6,
1498
+ cacheRead: 0.075,
1499
+ cacheWrite: 0,
1500
+ },
1501
+ contextWindow: 128000,
1502
+ maxTokens: 16384,
1503
+ },
1504
+ "openai/gpt-4o-mini-2024-07-18": {
1505
+ id: "openai/gpt-4o-mini-2024-07-18",
1506
+ name: "OpenAI: GPT-4o-mini (2024-07-18)",
1507
+ api: "openai-completions",
1508
+ provider: "openrouter",
1509
+ baseUrl: "https://openrouter.ai/api/v1",
1510
+ reasoning: false,
1511
+ input: ["text", "image"],
1512
+ cost: {
1513
+ input: 0.15,
1514
+ output: 0.6,
1515
+ cacheRead: 0.075,
1516
+ cacheWrite: 0,
1517
+ },
1518
+ contextWindow: 128000,
1519
+ maxTokens: 16384,
1520
+ },
1521
+ "openai/gpt-4o:extended": {
1522
+ id: "openai/gpt-4o:extended",
1523
+ name: "OpenAI: GPT-4o (extended)",
1524
+ api: "openai-completions",
1525
+ provider: "openrouter",
1526
+ baseUrl: "https://openrouter.ai/api/v1",
1527
+ reasoning: false,
1528
+ input: ["text", "image"],
1529
+ cost: {
1530
+ input: 6,
1531
+ output: 18,
1532
+ cacheRead: 0,
1533
+ cacheWrite: 0,
1534
+ },
1535
+ contextWindow: 128000,
1536
+ maxTokens: 64000,
1537
+ },
1538
+ "openai/gpt-5": {
1539
+ id: "openai/gpt-5",
1540
+ name: "OpenAI: GPT-5",
1541
+ api: "openai-completions",
1542
+ provider: "openrouter",
1543
+ baseUrl: "https://openrouter.ai/api/v1",
1544
+ reasoning: true,
1545
+ input: ["text", "image"],
1546
+ cost: {
1547
+ input: 1.25,
1548
+ output: 10,
1549
+ cacheRead: 0.125,
1550
+ cacheWrite: 0,
1551
+ },
1552
+ contextWindow: 400000,
1553
+ maxTokens: 128000,
1554
+ },
1555
+ "openai/gpt-5-codex": {
1556
+ id: "openai/gpt-5-codex",
1557
+ name: "OpenAI: GPT-5 Codex",
1558
+ api: "openai-completions",
1559
+ provider: "openrouter",
1560
+ baseUrl: "https://openrouter.ai/api/v1",
1561
+ reasoning: true,
1562
+ input: ["text", "image"],
1563
+ cost: {
1564
+ input: 1.25,
1565
+ output: 10,
1566
+ cacheRead: 0.125,
1567
+ cacheWrite: 0,
1568
+ },
1569
+ contextWindow: 400000,
1570
+ maxTokens: 128000,
1571
+ },
1572
+ "openai/gpt-5-image": {
1573
+ id: "openai/gpt-5-image",
1574
+ name: "OpenAI: GPT-5 Image",
1575
+ api: "openai-completions",
1576
+ provider: "openrouter",
1577
+ baseUrl: "https://openrouter.ai/api/v1",
1578
+ reasoning: true,
1579
+ input: ["text", "image"],
1580
+ cost: {
1581
+ input: 10,
1582
+ output: 10,
1583
+ cacheRead: 1.25,
1584
+ cacheWrite: 0,
1585
+ },
1586
+ contextWindow: 400000,
1587
+ maxTokens: 128000,
1588
+ },
1589
+ "openai/gpt-5-image-mini": {
1590
+ id: "openai/gpt-5-image-mini",
1591
+ name: "OpenAI: GPT-5 Image Mini",
1592
+ api: "openai-completions",
1593
+ provider: "openrouter",
1594
+ baseUrl: "https://openrouter.ai/api/v1",
1595
+ reasoning: true,
1596
+ input: ["text", "image"],
1597
+ cost: {
1598
+ input: 2.5,
1599
+ output: 2,
1600
+ cacheRead: 0.25,
1601
+ cacheWrite: 0,
1602
+ },
1603
+ contextWindow: 400000,
1604
+ maxTokens: 128000,
1605
+ },
1606
+ "openai/gpt-5-mini": {
1607
+ id: "openai/gpt-5-mini",
1608
+ name: "OpenAI: GPT-5 Mini",
1609
+ api: "openai-completions",
1610
+ provider: "openrouter",
1611
+ baseUrl: "https://openrouter.ai/api/v1",
1612
+ reasoning: true,
1613
+ input: ["text", "image"],
1614
+ cost: {
1615
+ input: 0.25,
1616
+ output: 2,
1617
+ cacheRead: 0.024999999999999998,
1618
+ cacheWrite: 0,
1619
+ },
1620
+ contextWindow: 400000,
1621
+ maxTokens: 128000,
1622
+ },
1623
+ "openai/gpt-5-nano": {
1624
+ id: "openai/gpt-5-nano",
1625
+ name: "OpenAI: GPT-5 Nano",
1626
+ api: "openai-completions",
1627
+ provider: "openrouter",
1628
+ baseUrl: "https://openrouter.ai/api/v1",
1629
+ reasoning: true,
1630
+ input: ["text", "image"],
1631
+ cost: {
1632
+ input: 0.049999999999999996,
1633
+ output: 0.39999999999999997,
1634
+ cacheRead: 0.005,
1635
+ cacheWrite: 0,
1636
+ },
1637
+ contextWindow: 400000,
1638
+ maxTokens: 128000,
1639
+ },
1640
+ "openai/gpt-5-pro": {
1641
+ id: "openai/gpt-5-pro",
1642
+ name: "OpenAI: GPT-5 Pro",
1643
+ api: "openai-completions",
1644
+ provider: "openrouter",
1645
+ baseUrl: "https://openrouter.ai/api/v1",
1646
+ reasoning: true,
1647
+ input: ["text", "image"],
1648
+ cost: {
1649
+ input: 15,
1650
+ output: 120,
1651
+ cacheRead: 0,
1652
+ cacheWrite: 0,
1653
+ },
1654
+ contextWindow: 400000,
1655
+ maxTokens: 128000,
1656
+ },
1657
+ "openai/gpt-5.1": {
1658
+ id: "openai/gpt-5.1",
1659
+ name: "OpenAI: GPT-5.1",
1660
+ api: "openai-completions",
1661
+ provider: "openrouter",
1662
+ baseUrl: "https://openrouter.ai/api/v1",
1663
+ reasoning: true,
1664
+ input: ["text", "image"],
1665
+ cost: {
1666
+ input: 1.25,
1667
+ output: 10,
1668
+ cacheRead: 0.125,
1669
+ cacheWrite: 0,
1670
+ },
1671
+ contextWindow: 400000,
1672
+ maxTokens: 128000,
1673
+ },
1674
+ "openai/gpt-5.1-chat": {
1675
+ id: "openai/gpt-5.1-chat",
1676
+ name: "OpenAI: GPT-5.1 Chat",
1677
+ api: "openai-completions",
1678
+ provider: "openrouter",
1679
+ baseUrl: "https://openrouter.ai/api/v1",
1680
+ reasoning: false,
1681
+ input: ["text", "image"],
1682
+ cost: {
1683
+ input: 1.25,
1684
+ output: 10,
1685
+ cacheRead: 0.125,
1686
+ cacheWrite: 0,
1687
+ },
1688
+ contextWindow: 128000,
1689
+ maxTokens: 16384,
1690
+ },
1691
+ "openai/gpt-5.1-codex": {
1692
+ id: "openai/gpt-5.1-codex",
1693
+ name: "OpenAI: GPT-5.1-Codex",
1694
+ api: "openai-completions",
1695
+ provider: "openrouter",
1696
+ baseUrl: "https://openrouter.ai/api/v1",
1697
+ reasoning: true,
1698
+ input: ["text", "image"],
1699
+ cost: {
1700
+ input: 1.25,
1701
+ output: 10,
1702
+ cacheRead: 0.125,
1703
+ cacheWrite: 0,
1704
+ },
1705
+ contextWindow: 400000,
1706
+ maxTokens: 128000,
1707
+ },
1708
+ "openai/gpt-5.1-codex-max": {
1709
+ id: "openai/gpt-5.1-codex-max",
1710
+ name: "OpenAI: GPT-5.1-Codex-Max",
1711
+ api: "openai-completions",
1712
+ provider: "openrouter",
1713
+ baseUrl: "https://openrouter.ai/api/v1",
1714
+ reasoning: true,
1715
+ input: ["text", "image"],
1716
+ cost: {
1717
+ input: 1.25,
1718
+ output: 10,
1719
+ cacheRead: 0.125,
1720
+ cacheWrite: 0,
1721
+ },
1722
+ contextWindow: 400000,
1723
+ maxTokens: 128000,
1724
+ },
1725
+ "openai/gpt-5.1-codex-mini": {
1726
+ id: "openai/gpt-5.1-codex-mini",
1727
+ name: "OpenAI: GPT-5.1-Codex-Mini",
1728
+ api: "openai-completions",
1729
+ provider: "openrouter",
1730
+ baseUrl: "https://openrouter.ai/api/v1",
1731
+ reasoning: true,
1732
+ input: ["text", "image"],
1733
+ cost: {
1734
+ input: 0.25,
1735
+ output: 2,
1736
+ cacheRead: 0.024999999999999998,
1737
+ cacheWrite: 0,
1738
+ },
1739
+ contextWindow: 400000,
1740
+ maxTokens: 100000,
1741
+ },
1742
+ "openai/gpt-5.2": {
1743
+ id: "openai/gpt-5.2",
1744
+ name: "OpenAI: GPT-5.2",
1745
+ api: "openai-completions",
1746
+ provider: "openrouter",
1747
+ baseUrl: "https://openrouter.ai/api/v1",
1748
+ reasoning: true,
1749
+ input: ["text", "image"],
1750
+ cost: {
1751
+ input: 1.75,
1752
+ output: 14,
1753
+ cacheRead: 0.175,
1754
+ cacheWrite: 0,
1755
+ },
1756
+ contextWindow: 400000,
1757
+ maxTokens: 128000,
1758
+ },
1759
+ "openai/gpt-5.2-chat": {
1760
+ id: "openai/gpt-5.2-chat",
1761
+ name: "OpenAI: GPT-5.2 Chat",
1762
+ api: "openai-completions",
1763
+ provider: "openrouter",
1764
+ baseUrl: "https://openrouter.ai/api/v1",
1765
+ reasoning: false,
1766
+ input: ["text", "image"],
1767
+ cost: {
1768
+ input: 1.75,
1769
+ output: 14,
1770
+ cacheRead: 0.175,
1771
+ cacheWrite: 0,
1772
+ },
1773
+ contextWindow: 128000,
1774
+ maxTokens: 16384,
1775
+ },
1776
+ "openai/gpt-5.2-codex": {
1777
+ id: "openai/gpt-5.2-codex",
1778
+ name: "OpenAI: GPT-5.2-Codex",
1779
+ api: "openai-completions",
1780
+ provider: "openrouter",
1781
+ baseUrl: "https://openrouter.ai/api/v1",
1782
+ reasoning: true,
1783
+ input: ["text", "image"],
1784
+ cost: {
1785
+ input: 1.75,
1786
+ output: 14,
1787
+ cacheRead: 0.175,
1788
+ cacheWrite: 0,
1789
+ },
1790
+ contextWindow: 400000,
1791
+ maxTokens: 128000,
1792
+ },
1793
+ "openai/gpt-5.2-pro": {
1794
+ id: "openai/gpt-5.2-pro",
1795
+ name: "OpenAI: GPT-5.2 Pro",
1796
+ api: "openai-completions",
1797
+ provider: "openrouter",
1798
+ baseUrl: "https://openrouter.ai/api/v1",
1799
+ reasoning: true,
1800
+ input: ["text", "image"],
1801
+ cost: {
1802
+ input: 21,
1803
+ output: 168,
1804
+ cacheRead: 0,
1805
+ cacheWrite: 0,
1806
+ },
1807
+ contextWindow: 400000,
1808
+ maxTokens: 128000,
1809
+ },
1810
+ "openai/gpt-5.3-chat": {
1811
+ id: "openai/gpt-5.3-chat",
1812
+ name: "OpenAI: GPT-5.3 Chat",
1813
+ api: "openai-completions",
1814
+ provider: "openrouter",
1815
+ baseUrl: "https://openrouter.ai/api/v1",
1816
+ reasoning: false,
1817
+ input: ["text", "image"],
1818
+ cost: {
1819
+ input: 1.75,
1820
+ output: 14,
1821
+ cacheRead: 0.175,
1822
+ cacheWrite: 0,
1823
+ },
1824
+ contextWindow: 128000,
1825
+ maxTokens: 16384,
1826
+ },
1827
+ "openai/gpt-5.3-codex": {
1828
+ id: "openai/gpt-5.3-codex",
1829
+ name: "OpenAI: GPT-5.3-Codex",
1830
+ api: "openai-completions",
1831
+ provider: "openrouter",
1832
+ baseUrl: "https://openrouter.ai/api/v1",
1833
+ reasoning: true,
1834
+ input: ["text", "image"],
1835
+ cost: {
1836
+ input: 1.75,
1837
+ output: 14,
1838
+ cacheRead: 0.175,
1839
+ cacheWrite: 0,
1840
+ },
1841
+ contextWindow: 400000,
1842
+ maxTokens: 128000,
1843
+ },
1844
+ "openai/gpt-5.4": {
1845
+ id: "openai/gpt-5.4",
1846
+ name: "OpenAI: GPT-5.4",
1847
+ api: "openai-completions",
1848
+ provider: "openrouter",
1849
+ baseUrl: "https://openrouter.ai/api/v1",
1850
+ reasoning: true,
1851
+ input: ["text", "image"],
1852
+ cost: {
1853
+ input: 2.5,
1854
+ output: 15,
1855
+ cacheRead: 0.25,
1856
+ cacheWrite: 0,
1857
+ },
1858
+ contextWindow: 1050000,
1859
+ maxTokens: 128000,
1860
+ },
1861
+ "openai/gpt-5.4-mini": {
1862
+ id: "openai/gpt-5.4-mini",
1863
+ name: "OpenAI: GPT-5.4 Mini",
1864
+ api: "openai-completions",
1865
+ provider: "openrouter",
1866
+ baseUrl: "https://openrouter.ai/api/v1",
1867
+ reasoning: true,
1868
+ input: ["text", "image"],
1869
+ cost: {
1870
+ input: 0.75,
1871
+ output: 4.5,
1872
+ cacheRead: 0.075,
1873
+ cacheWrite: 0,
1874
+ },
1875
+ contextWindow: 400000,
1876
+ maxTokens: 128000,
1877
+ },
1878
+ "openai/gpt-5.4-nano": {
1879
+ id: "openai/gpt-5.4-nano",
1880
+ name: "OpenAI: GPT-5.4 Nano",
1881
+ api: "openai-completions",
1882
+ provider: "openrouter",
1883
+ baseUrl: "https://openrouter.ai/api/v1",
1884
+ reasoning: true,
1885
+ input: ["text", "image"],
1886
+ cost: {
1887
+ input: 0.19999999999999998,
1888
+ output: 1.25,
1889
+ cacheRead: 0.02,
1890
+ cacheWrite: 0,
1891
+ },
1892
+ contextWindow: 400000,
1893
+ maxTokens: 128000,
1894
+ },
1895
+ "openai/gpt-5.4-pro": {
1896
+ id: "openai/gpt-5.4-pro",
1897
+ name: "OpenAI: GPT-5.4 Pro",
1898
+ api: "openai-completions",
1899
+ provider: "openrouter",
1900
+ baseUrl: "https://openrouter.ai/api/v1",
1901
+ reasoning: true,
1902
+ input: ["text", "image"],
1903
+ cost: {
1904
+ input: 30,
1905
+ output: 180,
1906
+ cacheRead: 0,
1907
+ cacheWrite: 0,
1908
+ },
1909
+ contextWindow: 1050000,
1910
+ maxTokens: 128000,
1911
+ },
1912
+ "openai/gpt-audio": {
1913
+ id: "openai/gpt-audio",
1914
+ name: "OpenAI: GPT Audio",
1915
+ api: "openai-completions",
1916
+ provider: "openrouter",
1917
+ baseUrl: "https://openrouter.ai/api/v1",
1918
+ reasoning: false,
1919
+ input: ["text"],
1920
+ cost: {
1921
+ input: 2.5,
1922
+ output: 10,
1923
+ cacheRead: 0,
1924
+ cacheWrite: 0,
1925
+ },
1926
+ contextWindow: 128000,
1927
+ maxTokens: 16384,
1928
+ },
1929
+ "openai/gpt-audio-mini": {
1930
+ id: "openai/gpt-audio-mini",
1931
+ name: "OpenAI: GPT Audio Mini",
1932
+ api: "openai-completions",
1933
+ provider: "openrouter",
1934
+ baseUrl: "https://openrouter.ai/api/v1",
1935
+ reasoning: false,
1936
+ input: ["text"],
1937
+ cost: {
1938
+ input: 0.6,
1939
+ output: 2.4,
1940
+ cacheRead: 0,
1941
+ cacheWrite: 0,
1942
+ },
1943
+ contextWindow: 128000,
1944
+ maxTokens: 16384,
1945
+ },
1946
+ "openai/gpt-oss-120b": {
1947
+ id: "openai/gpt-oss-120b",
1948
+ name: "OpenAI: gpt-oss-120b",
1949
+ api: "openai-completions",
1950
+ provider: "openrouter",
1951
+ baseUrl: "https://openrouter.ai/api/v1",
1952
+ reasoning: true,
1953
+ input: ["text"],
1954
+ cost: {
1955
+ input: 0.039,
1956
+ output: 0.19,
1957
+ cacheRead: 0,
1958
+ cacheWrite: 0,
1959
+ },
1960
+ contextWindow: 131072,
1961
+ maxTokens: 4096,
1962
+ },
1963
+ "openai/gpt-oss-120b:free": {
1964
+ id: "openai/gpt-oss-120b:free",
1965
+ name: "OpenAI: gpt-oss-120b (free)",
1966
+ api: "openai-completions",
1967
+ provider: "openrouter",
1968
+ baseUrl: "https://openrouter.ai/api/v1",
1969
+ reasoning: true,
1970
+ input: ["text"],
1971
+ cost: {
1972
+ input: 0,
1973
+ output: 0,
1974
+ cacheRead: 0,
1975
+ cacheWrite: 0,
1976
+ },
1977
+ contextWindow: 131072,
1978
+ maxTokens: 131072,
1979
+ },
1980
+ "openai/gpt-oss-20b": {
1981
+ id: "openai/gpt-oss-20b",
1982
+ name: "OpenAI: gpt-oss-20b",
1983
+ api: "openai-completions",
1984
+ provider: "openrouter",
1985
+ baseUrl: "https://openrouter.ai/api/v1",
1986
+ reasoning: true,
1987
+ input: ["text"],
1988
+ cost: {
1989
+ input: 0.03,
1990
+ output: 0.11,
1991
+ cacheRead: 0.015,
1992
+ cacheWrite: 0,
1993
+ },
1994
+ contextWindow: 131072,
1995
+ maxTokens: 131072,
1996
+ },
1997
+ "openai/gpt-oss-20b:free": {
1998
+ id: "openai/gpt-oss-20b:free",
1999
+ name: "OpenAI: gpt-oss-20b (free)",
2000
+ api: "openai-completions",
2001
+ provider: "openrouter",
2002
+ baseUrl: "https://openrouter.ai/api/v1",
2003
+ reasoning: true,
2004
+ input: ["text"],
2005
+ cost: {
2006
+ input: 0,
2007
+ output: 0,
2008
+ cacheRead: 0,
2009
+ cacheWrite: 0,
2010
+ },
2011
+ contextWindow: 131072,
2012
+ maxTokens: 131072,
2013
+ },
2014
+ "openai/gpt-oss-safeguard-20b": {
2015
+ id: "openai/gpt-oss-safeguard-20b",
2016
+ name: "OpenAI: gpt-oss-safeguard-20b",
2017
+ api: "openai-completions",
2018
+ provider: "openrouter",
2019
+ baseUrl: "https://openrouter.ai/api/v1",
2020
+ reasoning: true,
2021
+ input: ["text"],
2022
+ cost: {
2023
+ input: 0.075,
2024
+ output: 0.3,
2025
+ cacheRead: 0.037,
2026
+ cacheWrite: 0,
2027
+ },
2028
+ contextWindow: 131072,
2029
+ maxTokens: 65536,
2030
+ },
2031
+ "openai/o1": {
2032
+ id: "openai/o1",
2033
+ name: "OpenAI: o1",
2034
+ api: "openai-completions",
2035
+ provider: "openrouter",
2036
+ baseUrl: "https://openrouter.ai/api/v1",
2037
+ reasoning: true,
2038
+ input: ["text", "image"],
2039
+ cost: {
2040
+ input: 15,
2041
+ output: 60,
2042
+ cacheRead: 7.5,
2043
+ cacheWrite: 0,
2044
+ },
2045
+ contextWindow: 200000,
2046
+ maxTokens: 100000,
2047
+ },
2048
+ "openai/o3": {
2049
+ id: "openai/o3",
2050
+ name: "OpenAI: o3",
2051
+ api: "openai-completions",
2052
+ provider: "openrouter",
2053
+ baseUrl: "https://openrouter.ai/api/v1",
2054
+ reasoning: true,
2055
+ input: ["text", "image"],
2056
+ cost: {
2057
+ input: 2,
2058
+ output: 8,
2059
+ cacheRead: 0.5,
2060
+ cacheWrite: 0,
2061
+ },
2062
+ contextWindow: 200000,
2063
+ maxTokens: 100000,
2064
+ },
2065
+ "openai/o3-deep-research": {
2066
+ id: "openai/o3-deep-research",
2067
+ name: "OpenAI: o3 Deep Research",
2068
+ api: "openai-completions",
2069
+ provider: "openrouter",
2070
+ baseUrl: "https://openrouter.ai/api/v1",
2071
+ reasoning: true,
2072
+ input: ["text", "image"],
2073
+ cost: {
2074
+ input: 10,
2075
+ output: 40,
2076
+ cacheRead: 2.5,
2077
+ cacheWrite: 0,
2078
+ },
2079
+ contextWindow: 200000,
2080
+ maxTokens: 100000,
2081
+ },
2082
+ "openai/o3-mini": {
2083
+ id: "openai/o3-mini",
2084
+ name: "OpenAI: o3 Mini",
2085
+ api: "openai-completions",
2086
+ provider: "openrouter",
2087
+ baseUrl: "https://openrouter.ai/api/v1",
2088
+ reasoning: true,
2089
+ input: ["text"],
2090
+ cost: {
2091
+ input: 1.1,
2092
+ output: 4.4,
2093
+ cacheRead: 0.55,
2094
+ cacheWrite: 0,
2095
+ },
2096
+ contextWindow: 200000,
2097
+ maxTokens: 100000,
2098
+ },
2099
+ "openai/o3-mini-high": {
2100
+ id: "openai/o3-mini-high",
2101
+ name: "OpenAI: o3 Mini High",
2102
+ api: "openai-completions",
2103
+ provider: "openrouter",
2104
+ baseUrl: "https://openrouter.ai/api/v1",
2105
+ reasoning: true,
2106
+ input: ["text"],
2107
+ cost: {
2108
+ input: 1.1,
2109
+ output: 4.4,
2110
+ cacheRead: 0.55,
2111
+ cacheWrite: 0,
2112
+ },
2113
+ contextWindow: 200000,
2114
+ maxTokens: 100000,
2115
+ },
2116
+ "openai/o3-pro": {
2117
+ id: "openai/o3-pro",
2118
+ name: "OpenAI: o3 Pro",
2119
+ api: "openai-completions",
2120
+ provider: "openrouter",
2121
+ baseUrl: "https://openrouter.ai/api/v1",
2122
+ reasoning: true,
2123
+ input: ["text", "image"],
2124
+ cost: {
2125
+ input: 20,
2126
+ output: 80,
2127
+ cacheRead: 0,
2128
+ cacheWrite: 0,
2129
+ },
2130
+ contextWindow: 200000,
2131
+ maxTokens: 100000,
2132
+ },
2133
+ "openai/o4-mini": {
2134
+ id: "openai/o4-mini",
2135
+ name: "OpenAI: o4 Mini",
2136
+ api: "openai-completions",
2137
+ provider: "openrouter",
2138
+ baseUrl: "https://openrouter.ai/api/v1",
2139
+ reasoning: true,
2140
+ input: ["text", "image"],
2141
+ cost: {
2142
+ input: 1.1,
2143
+ output: 4.4,
2144
+ cacheRead: 0.275,
2145
+ cacheWrite: 0,
2146
+ },
2147
+ contextWindow: 200000,
2148
+ maxTokens: 100000,
2149
+ },
2150
+ "openai/o4-mini-deep-research": {
2151
+ id: "openai/o4-mini-deep-research",
2152
+ name: "OpenAI: o4 Mini Deep Research",
2153
+ api: "openai-completions",
2154
+ provider: "openrouter",
2155
+ baseUrl: "https://openrouter.ai/api/v1",
2156
+ reasoning: true,
2157
+ input: ["text", "image"],
2158
+ cost: {
2159
+ input: 2,
2160
+ output: 8,
2161
+ cacheRead: 0.5,
2162
+ cacheWrite: 0,
2163
+ },
2164
+ contextWindow: 200000,
2165
+ maxTokens: 100000,
2166
+ },
2167
+ "openai/o4-mini-high": {
2168
+ id: "openai/o4-mini-high",
2169
+ name: "OpenAI: o4 Mini High",
2170
+ api: "openai-completions",
2171
+ provider: "openrouter",
2172
+ baseUrl: "https://openrouter.ai/api/v1",
2173
+ reasoning: true,
2174
+ input: ["text", "image"],
2175
+ cost: {
2176
+ input: 1.1,
2177
+ output: 4.4,
2178
+ cacheRead: 0.275,
2179
+ cacheWrite: 0,
2180
+ },
2181
+ contextWindow: 200000,
2182
+ maxTokens: 100000,
2183
+ },
2184
+ },
2185
+ };
2186
+ //# sourceMappingURL=models.generated.js.map