@jeffreycao/copilot-api 1.12.5 → 1.12.7

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.
@@ -1,4 +1,4 @@
1
- import { b as setProviderConfig, h as isResponsesApiWebSocketEnabled, l as getRawProviderConfig, x as PATHS } from "./config-DA-Jdm0G.js";
1
+ import { S as PATHS, f as isCopilotUseLocalModelsEnabled, g as isResponsesApiWebSocketEnabled, l as getRawProviderConfig, x as setProviderConfig } from "./config-B-_X-1gj.js";
2
2
  import consola from "consola";
3
3
  import { createHash, randomBytes, randomUUID } from "node:crypto";
4
4
  import { createServer } from "node:http";
@@ -6,8 +6,8 @@ import { events } from "fetch-event-stream";
6
6
  import fs, { readFile } from "node:fs/promises";
7
7
  import { networkInterfaces } from "node:os";
8
8
  import path from "node:path";
9
- import { Agent, ProxyAgent, WebSocket, setGlobalDispatcher } from "undici";
10
9
  import { getProxyForUrl } from "proxy-from-env";
10
+ import { WebSocket } from "undici";
11
11
  import { AsyncLocalStorage } from "node:async_hooks";
12
12
  import { setTimeout as setTimeout$1 } from "node:timers/promises";
13
13
  import { exec } from "node:child_process";
@@ -55,59 +55,6 @@ const state = {
55
55
  vsCodeDeviceId: randomUUID()
56
56
  };
57
57
  //#endregion
58
- //#region src/lib/proxy.ts
59
- let proxyEnvDispatcher;
60
- function getProxyEnvDispatcher() {
61
- return proxyEnvDispatcher;
62
- }
63
- function initProxyFromEnv() {
64
- try {
65
- const direct = new Agent();
66
- const proxies = /* @__PURE__ */ new Map();
67
- proxyEnvDispatcher = {
68
- dispatch(options, handler) {
69
- try {
70
- const origin = typeof options.origin === "string" ? new URL(options.origin) : options.origin;
71
- const raw = getProxyForUrl(origin.toString());
72
- const proxyUrl = raw && raw.length > 0 ? raw : void 0;
73
- if (!proxyUrl) {
74
- consola.debug(`HTTP proxy bypass: ${origin.hostname}`);
75
- return direct.dispatch(options, handler);
76
- }
77
- let agent = proxies.get(proxyUrl);
78
- if (!agent) {
79
- agent = new ProxyAgent(proxyUrl);
80
- proxies.set(proxyUrl, agent);
81
- }
82
- let label = proxyUrl;
83
- try {
84
- const u = new URL(proxyUrl);
85
- label = `${u.protocol}//${u.host}`;
86
- } catch {}
87
- consola.debug(`HTTP proxy route: ${origin.hostname} via ${label}`);
88
- return agent.dispatch(options, handler);
89
- } catch {
90
- return direct.dispatch(options, handler);
91
- }
92
- },
93
- close() {
94
- return direct.close();
95
- },
96
- destroy() {
97
- return direct.destroy();
98
- }
99
- };
100
- if (typeof Bun !== "undefined") {
101
- consola.debug("WebSocket proxy configured from environment (per-URL)");
102
- return;
103
- }
104
- setGlobalDispatcher(proxyEnvDispatcher);
105
- consola.debug("HTTP proxy configured from environment (per-URL)");
106
- } catch (err) {
107
- consola.debug("Proxy setup skipped:", err);
108
- }
109
- }
110
- //#endregion
111
58
  //#region src/services/responses-websocket.ts
112
59
  const DEFAULT_WEBSOCKET_IDLE_TIMEOUT_MS = 6e4;
113
60
  const websocketPool = /* @__PURE__ */ new Map();
@@ -254,11 +201,11 @@ const createWebSocketError = (message, event) => {
254
201
  return new Error(`${message}: ${cause.message}`, { cause });
255
202
  };
256
203
  const openWebSocket = async ({ headers, openErrorMessage, url }) => await new Promise((resolve, reject) => {
257
- const dispatcher = getProxyEnvDispatcher();
258
- const websocket = new WebSocket(url, dispatcher ? {
259
- dispatcher,
260
- headers
261
- } : { headers });
204
+ const proxy = typeof Bun === "undefined" ? void 0 : getProxyUrl(url);
205
+ const websocket = new WebSocket(url, {
206
+ headers,
207
+ ...proxy ? { proxy } : {}
208
+ });
262
209
  const cleanup = () => {
263
210
  websocket.removeEventListener("open", onOpen);
264
211
  websocket.removeEventListener("error", onError);
@@ -338,6 +285,9 @@ const toError = (value) => {
338
285
  const closeWebSocket = (websocket) => {
339
286
  if (websocket.readyState === WebSocket.CONNECTING || websocket.readyState === WebSocket.OPEN) websocket.close();
340
287
  };
288
+ const getProxyUrl = (url) => {
289
+ return getProxyForUrl(url.replace(/^wss:/, "https:").replace(/^ws:/, "http:"));
290
+ };
341
291
  //#endregion
342
292
  //#region src/lib/request-context.ts
343
293
  const TRACE_ID_MAX_LENGTH = 64;
@@ -1266,8 +1216,1935 @@ async function getGitHubUser(githubToken) {
1266
1216
  return await response.json();
1267
1217
  }
1268
1218
  //#endregion
1219
+ //#region src/services/copilot/local-models.json
1220
+ var local_models_default = {
1221
+ data: [
1222
+ {
1223
+ "billing": {
1224
+ "restricted_to": [
1225
+ "pro_plus",
1226
+ "business",
1227
+ "enterprise",
1228
+ "max"
1229
+ ],
1230
+ "token_prices": {
1231
+ "batch_size": 1e6,
1232
+ "default": {
1233
+ "cache_price": 50,
1234
+ "cache_write_price": 625,
1235
+ "context_max": 2e5,
1236
+ "input_price": 500,
1237
+ "output_price": 2500
1238
+ },
1239
+ "long_context": {
1240
+ "cache_price": 50,
1241
+ "cache_write_price": 625,
1242
+ "context_max": 936e3,
1243
+ "input_price": 500,
1244
+ "output_price": 2500
1245
+ }
1246
+ }
1247
+ },
1248
+ "capabilities": {
1249
+ "family": "claude-opus-4.7",
1250
+ "limits": {
1251
+ "max_context_window_tokens": 1e6,
1252
+ "max_non_streaming_output_tokens": 16e3,
1253
+ "max_output_tokens": 64e3,
1254
+ "max_prompt_tokens": 936e3,
1255
+ "vision": {
1256
+ "max_prompt_image_size": 3145728,
1257
+ "max_prompt_images": 1,
1258
+ "supported_media_types": [
1259
+ "image/jpeg",
1260
+ "image/png",
1261
+ "image/webp",
1262
+ "image/gif"
1263
+ ]
1264
+ }
1265
+ },
1266
+ "object": "model_capabilities",
1267
+ "supports": {
1268
+ "adaptive_thinking": true,
1269
+ "max_thinking_budget": 32e3,
1270
+ "min_thinking_budget": 1024,
1271
+ "parallel_tool_calls": true,
1272
+ "reasoning_effort": [
1273
+ "low",
1274
+ "medium",
1275
+ "high",
1276
+ "xhigh",
1277
+ "max"
1278
+ ],
1279
+ "streaming": true,
1280
+ "structured_outputs": true,
1281
+ "tool_calls": true,
1282
+ "vision": true
1283
+ },
1284
+ "tokenizer": "o200k_base",
1285
+ "type": "chat"
1286
+ },
1287
+ "id": "claude-opus-4.7",
1288
+ "is_chat_default": false,
1289
+ "is_chat_fallback": false,
1290
+ "model_picker_category": "powerful",
1291
+ "model_picker_enabled": false,
1292
+ "model_picker_price_category": "high",
1293
+ "name": "Claude Opus 4.7",
1294
+ "object": "model",
1295
+ "policy": {
1296
+ "state": "disabled",
1297
+ "terms": "Enable access to the latest Claude Opus 4.7 model from Anthropic. [Learn more about how GitHub Copilot serves Claude Opus 4.7](https://gh.io/copilot-claude-opus)."
1298
+ },
1299
+ "preview": false,
1300
+ "supported_endpoints": ["/v1/messages", "/chat/completions"],
1301
+ "vendor": "Anthropic",
1302
+ "version": "claude-opus-4.7"
1303
+ },
1304
+ {
1305
+ "billing": {
1306
+ "restricted_to": [
1307
+ "pro_plus",
1308
+ "business",
1309
+ "enterprise",
1310
+ "max"
1311
+ ],
1312
+ "token_prices": {
1313
+ "batch_size": 1e6,
1314
+ "default": {
1315
+ "cache_price": 50,
1316
+ "cache_write_price": 625,
1317
+ "context_max": 2e5,
1318
+ "input_price": 500,
1319
+ "output_price": 2500
1320
+ },
1321
+ "long_context": {
1322
+ "cache_price": 50,
1323
+ "cache_write_price": 625,
1324
+ "context_max": 936e3,
1325
+ "input_price": 500,
1326
+ "output_price": 2500
1327
+ }
1328
+ }
1329
+ },
1330
+ "capabilities": {
1331
+ "family": "claude-opus-4.8",
1332
+ "limits": {
1333
+ "max_context_window_tokens": 1e6,
1334
+ "max_non_streaming_output_tokens": 16e3,
1335
+ "max_output_tokens": 64e3,
1336
+ "max_prompt_tokens": 936e3,
1337
+ "vision": {
1338
+ "max_prompt_image_size": 3145728,
1339
+ "max_prompt_images": 1,
1340
+ "supported_media_types": [
1341
+ "image/jpeg",
1342
+ "image/png",
1343
+ "image/webp",
1344
+ "image/gif"
1345
+ ]
1346
+ }
1347
+ },
1348
+ "object": "model_capabilities",
1349
+ "supports": {
1350
+ "adaptive_thinking": true,
1351
+ "max_thinking_budget": 32e3,
1352
+ "min_thinking_budget": 1024,
1353
+ "parallel_tool_calls": true,
1354
+ "reasoning_effort": [
1355
+ "low",
1356
+ "medium",
1357
+ "high",
1358
+ "xhigh",
1359
+ "max"
1360
+ ],
1361
+ "streaming": true,
1362
+ "structured_outputs": true,
1363
+ "tool_calls": true,
1364
+ "vision": true
1365
+ },
1366
+ "tokenizer": "o200k_base",
1367
+ "type": "chat"
1368
+ },
1369
+ "id": "claude-opus-4.8",
1370
+ "is_chat_default": false,
1371
+ "is_chat_fallback": false,
1372
+ "model_picker_category": "powerful",
1373
+ "model_picker_enabled": false,
1374
+ "model_picker_price_category": "high",
1375
+ "name": "Claude Opus 4.8",
1376
+ "object": "model",
1377
+ "policy": {
1378
+ "state": "disabled",
1379
+ "terms": "Enable access to the latest Claude Opus 4.8 model from Anthropic. [Learn more about how GitHub Copilot serves Claude Opus 4.8](https://gh.io/copilot-claude-opus)."
1380
+ },
1381
+ "preview": false,
1382
+ "supported_endpoints": ["/v1/messages", "/chat/completions"],
1383
+ "vendor": "Anthropic",
1384
+ "version": "claude-opus-4.8"
1385
+ },
1386
+ {
1387
+ "billing": {
1388
+ "restricted_to": [
1389
+ "pro",
1390
+ "pro_plus",
1391
+ "individual_trial",
1392
+ "business",
1393
+ "enterprise",
1394
+ "max"
1395
+ ],
1396
+ "token_prices": {
1397
+ "batch_size": 1e6,
1398
+ "default": {
1399
+ "cache_price": 30,
1400
+ "cache_write_price": 375,
1401
+ "context_max": 2e5,
1402
+ "input_price": 300,
1403
+ "output_price": 1500
1404
+ },
1405
+ "long_context": {
1406
+ "cache_price": 30,
1407
+ "cache_write_price": 375,
1408
+ "context_max": 936e3,
1409
+ "input_price": 300,
1410
+ "output_price": 1500
1411
+ }
1412
+ }
1413
+ },
1414
+ "capabilities": {
1415
+ "family": "claude-sonnet-4.6",
1416
+ "limits": {
1417
+ "max_context_window_tokens": 1e6,
1418
+ "max_non_streaming_output_tokens": 16e3,
1419
+ "max_output_tokens": 64e3,
1420
+ "max_prompt_tokens": 936e3,
1421
+ "vision": {
1422
+ "max_prompt_image_size": 3145728,
1423
+ "max_prompt_images": 5,
1424
+ "supported_media_types": [
1425
+ "image/jpeg",
1426
+ "image/png",
1427
+ "image/webp",
1428
+ "image/gif"
1429
+ ]
1430
+ }
1431
+ },
1432
+ "object": "model_capabilities",
1433
+ "supports": {
1434
+ "adaptive_thinking": true,
1435
+ "max_thinking_budget": 32e3,
1436
+ "min_thinking_budget": 1024,
1437
+ "parallel_tool_calls": true,
1438
+ "reasoning_effort": [
1439
+ "low",
1440
+ "medium",
1441
+ "high",
1442
+ "max"
1443
+ ],
1444
+ "streaming": true,
1445
+ "structured_outputs": true,
1446
+ "tool_calls": true,
1447
+ "vision": true
1448
+ },
1449
+ "tokenizer": "o200k_base",
1450
+ "type": "chat"
1451
+ },
1452
+ "id": "claude-sonnet-4.6",
1453
+ "is_chat_default": false,
1454
+ "is_chat_fallback": false,
1455
+ "model_picker_category": "versatile",
1456
+ "model_picker_enabled": true,
1457
+ "model_picker_price_category": "medium",
1458
+ "name": "Claude Sonnet 4.6",
1459
+ "object": "model",
1460
+ "policy": {
1461
+ "state": "enabled",
1462
+ "terms": "Enable access to the latest Claude Sonnet 4.6 model from Anthropic. [Learn more about how GitHub Copilot serves Claude Sonnet 4.6](https://gh.io/copilot-claude-opus)."
1463
+ },
1464
+ "preview": false,
1465
+ "supported_endpoints": ["/chat/completions", "/v1/messages"],
1466
+ "vendor": "Anthropic",
1467
+ "version": "claude-sonnet-4.6"
1468
+ },
1469
+ {
1470
+ "billing": {
1471
+ "restricted_to": [
1472
+ "edu",
1473
+ "pro",
1474
+ "pro_plus",
1475
+ "individual_trial",
1476
+ "business",
1477
+ "enterprise",
1478
+ "max"
1479
+ ],
1480
+ "token_prices": {
1481
+ "batch_size": 1e6,
1482
+ "default": {
1483
+ "cache_price": 20,
1484
+ "context_max": 2e5,
1485
+ "input_price": 200,
1486
+ "output_price": 1200
1487
+ },
1488
+ "long_context": {
1489
+ "cache_price": 40,
1490
+ "context_max": 936e3,
1491
+ "input_price": 400,
1492
+ "output_price": 1800
1493
+ }
1494
+ }
1495
+ },
1496
+ "capabilities": {
1497
+ "family": "gemini-3.1-pro-preview",
1498
+ "limits": {
1499
+ "max_context_window_tokens": 1e6,
1500
+ "max_output_tokens": 64e3,
1501
+ "max_prompt_tokens": 936e3,
1502
+ "vision": {
1503
+ "max_prompt_image_size": 3145728,
1504
+ "max_prompt_images": 10,
1505
+ "supported_media_types": [
1506
+ "image/jpeg",
1507
+ "image/png",
1508
+ "image/webp",
1509
+ "image/heic",
1510
+ "image/heif"
1511
+ ]
1512
+ }
1513
+ },
1514
+ "object": "model_capabilities",
1515
+ "supports": {
1516
+ "max_thinking_budget": 32e3,
1517
+ "min_thinking_budget": 256,
1518
+ "parallel_tool_calls": true,
1519
+ "reasoning_effort": [
1520
+ "low",
1521
+ "medium",
1522
+ "high"
1523
+ ],
1524
+ "streaming": true,
1525
+ "tool_calls": true,
1526
+ "vision": true
1527
+ },
1528
+ "tokenizer": "o200k_base",
1529
+ "type": "chat"
1530
+ },
1531
+ "id": "gemini-3.1-pro-preview",
1532
+ "is_chat_default": false,
1533
+ "is_chat_fallback": false,
1534
+ "model_picker_category": "powerful",
1535
+ "model_picker_enabled": true,
1536
+ "model_picker_price_category": "medium",
1537
+ "name": "Gemini 3.1 Pro",
1538
+ "object": "model",
1539
+ "policy": {
1540
+ "state": "enabled",
1541
+ "terms": "Enable access to the latest Gemini 3 Pro model from Google. [Learn more about how GitHub Copilot serves Gemini 3 Pro](https://docs.github.com/en/copilot/reference/ai-models/model-hosting#google-models)."
1542
+ },
1543
+ "preview": true,
1544
+ "supported_endpoints": ["/chat/completions"],
1545
+ "vendor": "Google",
1546
+ "version": "gemini-3.1-pro-preview"
1547
+ },
1548
+ {
1549
+ "billing": {
1550
+ "restricted_to": [
1551
+ "pro",
1552
+ "pro_plus",
1553
+ "business",
1554
+ "enterprise",
1555
+ "max"
1556
+ ],
1557
+ "token_prices": {
1558
+ "batch_size": 1e6,
1559
+ "default": {
1560
+ "cache_price": 15,
1561
+ "context_max": 2e5,
1562
+ "input_price": 150,
1563
+ "output_price": 900
1564
+ },
1565
+ "long_context": {
1566
+ "cache_price": 15,
1567
+ "context_max": 936e3,
1568
+ "input_price": 150,
1569
+ "output_price": 900
1570
+ }
1571
+ }
1572
+ },
1573
+ "capabilities": {
1574
+ "family": "gemini-3.5-flash",
1575
+ "limits": {
1576
+ "max_context_window_tokens": 1e6,
1577
+ "max_output_tokens": 64e3,
1578
+ "max_prompt_tokens": 936e3,
1579
+ "vision": {
1580
+ "max_prompt_image_size": 3145728,
1581
+ "max_prompt_images": 10,
1582
+ "supported_media_types": [
1583
+ "image/jpeg",
1584
+ "image/png",
1585
+ "image/webp",
1586
+ "image/heic",
1587
+ "image/heif"
1588
+ ]
1589
+ }
1590
+ },
1591
+ "object": "model_capabilities",
1592
+ "supports": {
1593
+ "max_thinking_budget": 24e3,
1594
+ "min_thinking_budget": 256,
1595
+ "parallel_tool_calls": true,
1596
+ "reasoning_effort": [
1597
+ "minimal",
1598
+ "low",
1599
+ "medium",
1600
+ "high"
1601
+ ],
1602
+ "streaming": true,
1603
+ "tool_calls": true,
1604
+ "vision": true
1605
+ },
1606
+ "tokenizer": "o200k_base",
1607
+ "type": "chat"
1608
+ },
1609
+ "id": "gemini-3.5-flash",
1610
+ "is_chat_default": false,
1611
+ "is_chat_fallback": false,
1612
+ "model_picker_category": "lightweight",
1613
+ "model_picker_enabled": true,
1614
+ "model_picker_price_category": "medium",
1615
+ "name": "Gemini 3.5 Flash",
1616
+ "object": "model",
1617
+ "policy": {
1618
+ "state": "enabled",
1619
+ "terms": "Enable access to the latest Gemini 3.5 Flash model from Google. [Learn more about how GitHub Copilot serves Gemini 3.5 Flash](https://docs.github.com/en/copilot/reference/ai-models/model-hosting#google-models)."
1620
+ },
1621
+ "preview": false,
1622
+ "supported_endpoints": ["/chat/completions"],
1623
+ "vendor": "Google",
1624
+ "version": "gemini-3.5-flash"
1625
+ },
1626
+ {
1627
+ "billing": {
1628
+ "restricted_to": [
1629
+ "pro",
1630
+ "edu",
1631
+ "pro_plus",
1632
+ "individual_trial",
1633
+ "business",
1634
+ "enterprise",
1635
+ "max"
1636
+ ],
1637
+ "token_prices": {
1638
+ "batch_size": 1e6,
1639
+ "default": {
1640
+ "cache_price": 17,
1641
+ "context_max": 272e3,
1642
+ "input_price": 175,
1643
+ "output_price": 1400
1644
+ }
1645
+ }
1646
+ },
1647
+ "capabilities": {
1648
+ "family": "gpt-5.3-codex",
1649
+ "limits": {
1650
+ "max_context_window_tokens": 4e5,
1651
+ "max_output_tokens": 128e3,
1652
+ "max_prompt_tokens": 272e3,
1653
+ "vision": {
1654
+ "max_prompt_image_size": 3145728,
1655
+ "max_prompt_images": 1,
1656
+ "supported_media_types": [
1657
+ "image/jpeg",
1658
+ "image/png",
1659
+ "image/webp",
1660
+ "image/gif"
1661
+ ]
1662
+ }
1663
+ },
1664
+ "object": "model_capabilities",
1665
+ "supports": {
1666
+ "parallel_tool_calls": true,
1667
+ "reasoning_effort": [
1668
+ "low",
1669
+ "medium",
1670
+ "high",
1671
+ "xhigh"
1672
+ ],
1673
+ "streaming": true,
1674
+ "structured_outputs": true,
1675
+ "tool_calls": true,
1676
+ "vision": true
1677
+ },
1678
+ "tokenizer": "o200k_base",
1679
+ "type": "chat"
1680
+ },
1681
+ "id": "gpt-5.3-codex",
1682
+ "is_chat_default": false,
1683
+ "is_chat_fallback": true,
1684
+ "model_picker_category": "powerful",
1685
+ "model_picker_enabled": true,
1686
+ "model_picker_price_category": "medium",
1687
+ "name": "GPT-5.3-Codex",
1688
+ "object": "model",
1689
+ "preview": false,
1690
+ "supported_endpoints": ["/responses", "ws:/responses"],
1691
+ "vendor": "OpenAI",
1692
+ "version": "gpt-5.3-codex"
1693
+ },
1694
+ {
1695
+ "billing": {
1696
+ "restricted_to": [
1697
+ "pro",
1698
+ "pro_plus",
1699
+ "individual_trial",
1700
+ "edu",
1701
+ "business",
1702
+ "enterprise",
1703
+ "max"
1704
+ ],
1705
+ "token_prices": {
1706
+ "batch_size": 1e6,
1707
+ "default": {
1708
+ "cache_price": 7,
1709
+ "context_max": 272e3,
1710
+ "input_price": 75,
1711
+ "output_price": 450
1712
+ }
1713
+ }
1714
+ },
1715
+ "capabilities": {
1716
+ "family": "gpt-5.4-mini",
1717
+ "limits": {
1718
+ "max_context_window_tokens": 4e5,
1719
+ "max_output_tokens": 128e3,
1720
+ "max_prompt_tokens": 272e3,
1721
+ "vision": {
1722
+ "max_prompt_image_size": 3145728,
1723
+ "max_prompt_images": 1,
1724
+ "supported_media_types": [
1725
+ "image/jpeg",
1726
+ "image/png",
1727
+ "image/webp",
1728
+ "image/gif"
1729
+ ]
1730
+ }
1731
+ },
1732
+ "object": "model_capabilities",
1733
+ "supports": {
1734
+ "parallel_tool_calls": true,
1735
+ "reasoning_effort": [
1736
+ "none",
1737
+ "low",
1738
+ "medium",
1739
+ "high",
1740
+ "xhigh"
1741
+ ],
1742
+ "streaming": true,
1743
+ "structured_outputs": true,
1744
+ "tool_calls": true,
1745
+ "vision": true
1746
+ },
1747
+ "tokenizer": "o200k_base",
1748
+ "type": "chat"
1749
+ },
1750
+ "id": "gpt-5.4-mini",
1751
+ "is_chat_default": false,
1752
+ "is_chat_fallback": false,
1753
+ "model_picker_category": "lightweight",
1754
+ "model_picker_enabled": true,
1755
+ "model_picker_price_category": "low",
1756
+ "name": "GPT-5.4 mini",
1757
+ "object": "model",
1758
+ "policy": {
1759
+ "state": "enabled",
1760
+ "terms": "Enable access to the latest GPT-5.4 mini model from OpenAI. [Learn more about how GitHub Copilot serves GPT-5.4 mini](https://gh.io/copilot-openai)."
1761
+ },
1762
+ "preview": false,
1763
+ "supported_endpoints": ["/responses", "ws:/responses"],
1764
+ "vendor": "OpenAI",
1765
+ "version": "gpt-5.4-mini"
1766
+ },
1767
+ {
1768
+ "billing": {
1769
+ "restricted_to": [
1770
+ "pro",
1771
+ "pro_plus",
1772
+ "individual_trial",
1773
+ "business",
1774
+ "enterprise",
1775
+ "max"
1776
+ ],
1777
+ "token_prices": {
1778
+ "batch_size": 1e6,
1779
+ "default": {
1780
+ "cache_price": 25,
1781
+ "context_max": 272e3,
1782
+ "input_price": 250,
1783
+ "output_price": 1500
1784
+ },
1785
+ "long_context": {
1786
+ "cache_price": 50,
1787
+ "context_max": 922e3,
1788
+ "input_price": 500,
1789
+ "output_price": 2250
1790
+ }
1791
+ }
1792
+ },
1793
+ "capabilities": {
1794
+ "family": "gpt-5.4",
1795
+ "limits": {
1796
+ "max_context_window_tokens": 105e4,
1797
+ "max_output_tokens": 128e3,
1798
+ "max_prompt_tokens": 922e3,
1799
+ "vision": {
1800
+ "max_prompt_image_size": 3145728,
1801
+ "max_prompt_images": 1,
1802
+ "supported_media_types": [
1803
+ "image/jpeg",
1804
+ "image/png",
1805
+ "image/webp",
1806
+ "image/gif"
1807
+ ]
1808
+ }
1809
+ },
1810
+ "object": "model_capabilities",
1811
+ "supports": {
1812
+ "parallel_tool_calls": true,
1813
+ "reasoning_effort": [
1814
+ "none",
1815
+ "low",
1816
+ "medium",
1817
+ "high",
1818
+ "xhigh"
1819
+ ],
1820
+ "streaming": true,
1821
+ "structured_outputs": true,
1822
+ "tool_calls": true,
1823
+ "vision": true
1824
+ },
1825
+ "tokenizer": "o200k_base",
1826
+ "type": "chat"
1827
+ },
1828
+ "id": "gpt-5.4",
1829
+ "is_chat_default": false,
1830
+ "is_chat_fallback": false,
1831
+ "model_picker_category": "powerful",
1832
+ "model_picker_enabled": true,
1833
+ "model_picker_price_category": "medium",
1834
+ "name": "GPT-5.4",
1835
+ "object": "model",
1836
+ "policy": {
1837
+ "state": "enabled",
1838
+ "terms": "Enable access to the latest GPT-5.4 model from OpenAI. [Learn more about how GitHub Copilot serves GPT-5.4](https://gh.io/copilot-openai)."
1839
+ },
1840
+ "preview": false,
1841
+ "supported_endpoints": [
1842
+ "/responses",
1843
+ "/chat/completions",
1844
+ "ws:/responses"
1845
+ ],
1846
+ "vendor": "OpenAI",
1847
+ "version": "gpt-5.4"
1848
+ },
1849
+ {
1850
+ "billing": {
1851
+ "restricted_to": [
1852
+ "pro_plus",
1853
+ "business",
1854
+ "enterprise",
1855
+ "max"
1856
+ ],
1857
+ "token_prices": {
1858
+ "batch_size": 1e6,
1859
+ "default": {
1860
+ "cache_price": 50,
1861
+ "context_max": 272e3,
1862
+ "input_price": 500,
1863
+ "output_price": 3e3
1864
+ },
1865
+ "long_context": {
1866
+ "cache_price": 100,
1867
+ "context_max": 922e3,
1868
+ "input_price": 1e3,
1869
+ "output_price": 4500
1870
+ }
1871
+ }
1872
+ },
1873
+ "capabilities": {
1874
+ "family": "gpt-5.5",
1875
+ "limits": {
1876
+ "max_context_window_tokens": 105e4,
1877
+ "max_output_tokens": 128e3,
1878
+ "max_prompt_tokens": 922e3,
1879
+ "vision": {
1880
+ "max_prompt_image_size": 3145728,
1881
+ "max_prompt_images": 1,
1882
+ "supported_media_types": [
1883
+ "image/jpeg",
1884
+ "image/png",
1885
+ "image/webp",
1886
+ "image/gif"
1887
+ ]
1888
+ }
1889
+ },
1890
+ "object": "model_capabilities",
1891
+ "supports": {
1892
+ "parallel_tool_calls": true,
1893
+ "reasoning_effort": [
1894
+ "none",
1895
+ "low",
1896
+ "medium",
1897
+ "high",
1898
+ "xhigh"
1899
+ ],
1900
+ "streaming": true,
1901
+ "structured_outputs": true,
1902
+ "tool_calls": true,
1903
+ "vision": true
1904
+ },
1905
+ "tokenizer": "o200k_base",
1906
+ "type": "chat"
1907
+ },
1908
+ "id": "gpt-5.5",
1909
+ "is_chat_default": false,
1910
+ "is_chat_fallback": false,
1911
+ "model_picker_category": "powerful",
1912
+ "model_picker_enabled": false,
1913
+ "model_picker_price_category": "high",
1914
+ "name": "GPT-5.5",
1915
+ "object": "model",
1916
+ "policy": {
1917
+ "state": "disabled",
1918
+ "terms": "Enable access to the latest GPT-5.5 model from OpenAI. [Learn more about how GitHub Copilot serves GPT-5.5](https://gh.io/copilot-openai)."
1919
+ },
1920
+ "preview": false,
1921
+ "supported_endpoints": ["/responses", "ws:/responses"],
1922
+ "vendor": "OpenAI",
1923
+ "version": "gpt-5.5"
1924
+ },
1925
+ {
1926
+ "billing": {
1927
+ "restricted_to": [
1928
+ "free",
1929
+ "edu",
1930
+ "pro",
1931
+ "pro_plus",
1932
+ "max"
1933
+ ],
1934
+ "token_prices": {
1935
+ "batch_size": 1e6,
1936
+ "default": {
1937
+ "cache_price": 7,
1938
+ "context_max": 128e3,
1939
+ "input_price": 75,
1940
+ "output_price": 450
1941
+ }
1942
+ }
1943
+ },
1944
+ "capabilities": {
1945
+ "family": "oswe-vscode-modelD",
1946
+ "limits": {
1947
+ "max_context_window_tokens": 256e3,
1948
+ "max_output_tokens": 128e3,
1949
+ "max_prompt_tokens": 128e3
1950
+ },
1951
+ "object": "model_capabilities",
1952
+ "supports": {
1953
+ "parallel_tool_calls": true,
1954
+ "reasoning_effort": [
1955
+ "low",
1956
+ "medium",
1957
+ "high"
1958
+ ],
1959
+ "streaming": true,
1960
+ "structured_outputs": true,
1961
+ "tool_calls": true
1962
+ },
1963
+ "tokenizer": "o200k_base",
1964
+ "type": "chat"
1965
+ },
1966
+ "id": "mai-code-1-flash-picker",
1967
+ "is_chat_default": false,
1968
+ "is_chat_fallback": false,
1969
+ "model_picker_category": "versatile",
1970
+ "model_picker_enabled": true,
1971
+ "model_picker_price_category": "low",
1972
+ "name": "MAI-Code-1-Flash",
1973
+ "object": "model",
1974
+ "policy": {
1975
+ "state": "enabled",
1976
+ "terms": ""
1977
+ },
1978
+ "preview": false,
1979
+ "supported_endpoints": ["/responses"],
1980
+ "vendor": "Azure OpenAI",
1981
+ "version": "mai-code-1-flash-picker"
1982
+ },
1983
+ {
1984
+ "billing": { "token_prices": {
1985
+ "batch_size": 0,
1986
+ "default": {
1987
+ "cache_price": 0,
1988
+ "input_price": 0,
1989
+ "output_price": 0
1990
+ }
1991
+ } },
1992
+ "capabilities": {
1993
+ "family": "trajectory-compaction",
1994
+ "limits": {
1995
+ "max_context_window_tokens": 262144,
1996
+ "max_output_tokens": 16384,
1997
+ "max_prompt_tokens": 245760
1998
+ },
1999
+ "object": "model_capabilities",
2000
+ "supports": {
2001
+ "parallel_tool_calls": true,
2002
+ "streaming": true,
2003
+ "tool_calls": true
2004
+ },
2005
+ "tokenizer": "o200k_base",
2006
+ "type": "chat"
2007
+ },
2008
+ "id": "trajectory-compaction",
2009
+ "is_chat_default": false,
2010
+ "is_chat_fallback": false,
2011
+ "model_picker_enabled": false,
2012
+ "model_picker_price_category": "low",
2013
+ "name": "Trajectory Compaction",
2014
+ "object": "model",
2015
+ "preview": true,
2016
+ "supported_endpoints": ["/chat/completions"],
2017
+ "vendor": "Experimental",
2018
+ "version": "trajectory-compaction"
2019
+ },
2020
+ {
2021
+ "billing": { "token_prices": {
2022
+ "batch_size": 1e6,
2023
+ "default": {
2024
+ "cache_price": 2,
2025
+ "input_price": 25,
2026
+ "output_price": 200
2027
+ }
2028
+ } },
2029
+ "capabilities": {
2030
+ "family": "gpt-5-mini",
2031
+ "limits": {
2032
+ "max_context_window_tokens": 264e3,
2033
+ "max_output_tokens": 64e3,
2034
+ "max_prompt_tokens": 128e3,
2035
+ "vision": {
2036
+ "max_prompt_image_size": 3145728,
2037
+ "max_prompt_images": 1,
2038
+ "supported_media_types": [
2039
+ "image/jpeg",
2040
+ "image/png",
2041
+ "image/webp",
2042
+ "image/gif"
2043
+ ]
2044
+ }
2045
+ },
2046
+ "object": "model_capabilities",
2047
+ "supports": {
2048
+ "parallel_tool_calls": true,
2049
+ "reasoning_effort": [
2050
+ "low",
2051
+ "medium",
2052
+ "high"
2053
+ ],
2054
+ "streaming": true,
2055
+ "structured_outputs": true,
2056
+ "tool_calls": true,
2057
+ "vision": true
2058
+ },
2059
+ "tokenizer": "o200k_base",
2060
+ "type": "chat"
2061
+ },
2062
+ "id": "gpt-5-mini",
2063
+ "is_chat_default": true,
2064
+ "is_chat_fallback": false,
2065
+ "model_picker_category": "lightweight",
2066
+ "model_picker_enabled": true,
2067
+ "model_picker_price_category": "low",
2068
+ "name": "GPT-5 mini",
2069
+ "object": "model",
2070
+ "policy": {
2071
+ "state": "enabled",
2072
+ "terms": "Enable access to the latest GPT-5 mini model from OpenAI. [Learn more about how GitHub Copilot serves GPT-5 mini](https://gh.io/copilot-openai)."
2073
+ },
2074
+ "preview": false,
2075
+ "supported_endpoints": [
2076
+ "/chat/completions",
2077
+ "/responses",
2078
+ "ws:/responses"
2079
+ ],
2080
+ "vendor": "Azure OpenAI",
2081
+ "version": "gpt-5-mini"
2082
+ },
2083
+ {
2084
+ "billing": { "token_prices": {
2085
+ "batch_size": 0,
2086
+ "default": {
2087
+ "cache_price": 0,
2088
+ "input_price": 0,
2089
+ "output_price": 0
2090
+ }
2091
+ } },
2092
+ "capabilities": {
2093
+ "family": "gpt-4o-mini",
2094
+ "limits": {
2095
+ "max_context_window_tokens": 128e3,
2096
+ "max_output_tokens": 4096,
2097
+ "max_prompt_tokens": 12288
2098
+ },
2099
+ "object": "model_capabilities",
2100
+ "supports": {
2101
+ "parallel_tool_calls": true,
2102
+ "streaming": true,
2103
+ "tool_calls": true
2104
+ },
2105
+ "tokenizer": "o200k_base",
2106
+ "type": "chat"
2107
+ },
2108
+ "id": "gpt-4o-mini-2024-07-18",
2109
+ "is_chat_default": false,
2110
+ "is_chat_fallback": false,
2111
+ "model_picker_enabled": false,
2112
+ "model_picker_price_category": "low",
2113
+ "name": "GPT-4o mini",
2114
+ "object": "model",
2115
+ "preview": false,
2116
+ "vendor": "Azure OpenAI",
2117
+ "version": "gpt-4o-mini-2024-07-18"
2118
+ },
2119
+ {
2120
+ "billing": { "token_prices": {
2121
+ "batch_size": 0,
2122
+ "default": {
2123
+ "cache_price": 0,
2124
+ "input_price": 0,
2125
+ "output_price": 0
2126
+ }
2127
+ } },
2128
+ "capabilities": {
2129
+ "family": "gpt-4o",
2130
+ "limits": {
2131
+ "max_context_window_tokens": 128e3,
2132
+ "max_output_tokens": 16384,
2133
+ "max_prompt_tokens": 64e3
2134
+ },
2135
+ "object": "model_capabilities",
2136
+ "supports": {
2137
+ "parallel_tool_calls": true,
2138
+ "streaming": true,
2139
+ "tool_calls": true
2140
+ },
2141
+ "tokenizer": "o200k_base",
2142
+ "type": "chat"
2143
+ },
2144
+ "id": "gpt-4o-2024-11-20",
2145
+ "is_chat_default": false,
2146
+ "is_chat_fallback": false,
2147
+ "model_picker_enabled": false,
2148
+ "model_picker_price_category": "medium",
2149
+ "name": "GPT-4o",
2150
+ "object": "model",
2151
+ "preview": false,
2152
+ "vendor": "Azure OpenAI",
2153
+ "version": "gpt-4o-2024-11-20"
2154
+ },
2155
+ {
2156
+ "billing": { "token_prices": {
2157
+ "batch_size": 0,
2158
+ "default": {
2159
+ "cache_price": 0,
2160
+ "input_price": 0,
2161
+ "output_price": 0
2162
+ }
2163
+ } },
2164
+ "capabilities": {
2165
+ "family": "gpt-4o",
2166
+ "limits": {
2167
+ "max_context_window_tokens": 128e3,
2168
+ "max_output_tokens": 16384,
2169
+ "max_prompt_tokens": 64e3
2170
+ },
2171
+ "object": "model_capabilities",
2172
+ "supports": {
2173
+ "parallel_tool_calls": true,
2174
+ "streaming": true,
2175
+ "tool_calls": true
2176
+ },
2177
+ "tokenizer": "o200k_base",
2178
+ "type": "chat"
2179
+ },
2180
+ "id": "gpt-4o-2024-08-06",
2181
+ "is_chat_default": false,
2182
+ "is_chat_fallback": false,
2183
+ "model_picker_enabled": false,
2184
+ "model_picker_price_category": "high",
2185
+ "name": "GPT-4o",
2186
+ "object": "model",
2187
+ "preview": false,
2188
+ "vendor": "Azure OpenAI",
2189
+ "version": "gpt-4o-2024-08-06"
2190
+ },
2191
+ {
2192
+ "billing": { "token_prices": {
2193
+ "batch_size": 0,
2194
+ "default": {
2195
+ "cache_price": 0,
2196
+ "input_price": 0,
2197
+ "output_price": 0
2198
+ }
2199
+ } },
2200
+ "capabilities": {
2201
+ "family": "text-embedding-3-small",
2202
+ "limits": { "max_inputs": 512 },
2203
+ "object": "model_capabilities",
2204
+ "supports": { "dimensions": true },
2205
+ "tokenizer": "cl100k_base",
2206
+ "type": "embeddings"
2207
+ },
2208
+ "id": "text-embedding-3-small",
2209
+ "is_chat_default": false,
2210
+ "is_chat_fallback": false,
2211
+ "model_picker_enabled": false,
2212
+ "name": "Embedding V3 small",
2213
+ "object": "model",
2214
+ "preview": false,
2215
+ "vendor": "Azure OpenAI",
2216
+ "version": "text-embedding-3-small"
2217
+ },
2218
+ {
2219
+ "billing": { "token_prices": {
2220
+ "batch_size": 0,
2221
+ "default": {
2222
+ "cache_price": 0,
2223
+ "input_price": 0,
2224
+ "output_price": 0
2225
+ }
2226
+ } },
2227
+ "capabilities": {
2228
+ "family": "text-embedding-3-small",
2229
+ "object": "model_capabilities",
2230
+ "supports": { "dimensions": true },
2231
+ "tokenizer": "cl100k_base",
2232
+ "type": "embeddings"
2233
+ },
2234
+ "id": "text-embedding-3-small-inference",
2235
+ "is_chat_default": false,
2236
+ "is_chat_fallback": false,
2237
+ "model_picker_enabled": false,
2238
+ "name": "Embedding V3 small (Inference)",
2239
+ "object": "model",
2240
+ "preview": false,
2241
+ "vendor": "Azure OpenAI",
2242
+ "version": "text-embedding-3-small"
2243
+ },
2244
+ {
2245
+ "billing": {
2246
+ "restricted_to": [
2247
+ "pro",
2248
+ "pro_plus",
2249
+ "max",
2250
+ "business",
2251
+ "enterprise"
2252
+ ],
2253
+ "token_prices": {
2254
+ "batch_size": 1e6,
2255
+ "default": {
2256
+ "cache_price": 30,
2257
+ "cache_write_price": 375,
2258
+ "input_price": 300,
2259
+ "output_price": 1500
2260
+ }
2261
+ }
2262
+ },
2263
+ "capabilities": {
2264
+ "family": "claude-sonnet-4.5",
2265
+ "limits": {
2266
+ "max_context_window_tokens": 2e5,
2267
+ "max_non_streaming_output_tokens": 16e3,
2268
+ "max_output_tokens": 32e3,
2269
+ "max_prompt_tokens": 128e3,
2270
+ "vision": {
2271
+ "max_prompt_image_size": 3145728,
2272
+ "max_prompt_images": 5,
2273
+ "supported_media_types": [
2274
+ "image/jpeg",
2275
+ "image/png",
2276
+ "image/webp"
2277
+ ]
2278
+ }
2279
+ },
2280
+ "object": "model_capabilities",
2281
+ "supports": {
2282
+ "max_thinking_budget": 32e3,
2283
+ "min_thinking_budget": 1024,
2284
+ "parallel_tool_calls": true,
2285
+ "streaming": true,
2286
+ "tool_calls": true,
2287
+ "vision": true
2288
+ },
2289
+ "tokenizer": "o200k_base",
2290
+ "type": "chat"
2291
+ },
2292
+ "id": "claude-sonnet-4.5",
2293
+ "is_chat_default": false,
2294
+ "is_chat_fallback": false,
2295
+ "model_picker_category": "versatile",
2296
+ "model_picker_enabled": true,
2297
+ "model_picker_price_category": "medium",
2298
+ "name": "Claude Sonnet 4.5",
2299
+ "object": "model",
2300
+ "policy": {
2301
+ "state": "enabled",
2302
+ "terms": "Enable access to the latest Claude Sonnet 4.5 model from Anthropic. [Learn more about how GitHub Copilot serves Claude Sonnet 4.5](https://docs.github.com/en/copilot/using-github-copilot/ai-models/using-claude-sonnet-in-github-copilot)."
2303
+ },
2304
+ "preview": false,
2305
+ "supported_endpoints": ["/chat/completions", "/v1/messages"],
2306
+ "vendor": "Anthropic",
2307
+ "version": "claude-sonnet-4.5"
2308
+ },
2309
+ {
2310
+ "billing": {
2311
+ "restricted_to": [
2312
+ "max",
2313
+ "business",
2314
+ "enterprise"
2315
+ ],
2316
+ "token_prices": {
2317
+ "batch_size": 1e6,
2318
+ "default": {
2319
+ "cache_price": 50,
2320
+ "cache_write_price": 625,
2321
+ "input_price": 500,
2322
+ "output_price": 2500
2323
+ }
2324
+ }
2325
+ },
2326
+ "capabilities": {
2327
+ "family": "claude-opus-4.5",
2328
+ "limits": {
2329
+ "max_context_window_tokens": 2e5,
2330
+ "max_non_streaming_output_tokens": 16e3,
2331
+ "max_output_tokens": 32e3,
2332
+ "max_prompt_tokens": 128e3,
2333
+ "vision": {
2334
+ "max_prompt_image_size": 3145728,
2335
+ "max_prompt_images": 5,
2336
+ "supported_media_types": [
2337
+ "image/jpeg",
2338
+ "image/png",
2339
+ "image/webp"
2340
+ ]
2341
+ }
2342
+ },
2343
+ "object": "model_capabilities",
2344
+ "supports": {
2345
+ "max_thinking_budget": 32e3,
2346
+ "min_thinking_budget": 1024,
2347
+ "parallel_tool_calls": true,
2348
+ "streaming": true,
2349
+ "tool_calls": true,
2350
+ "vision": true
2351
+ },
2352
+ "tokenizer": "o200k_base",
2353
+ "type": "chat"
2354
+ },
2355
+ "id": "claude-opus-4.5",
2356
+ "is_chat_default": false,
2357
+ "is_chat_fallback": false,
2358
+ "model_picker_category": "powerful",
2359
+ "model_picker_enabled": false,
2360
+ "model_picker_price_category": "high",
2361
+ "name": "Claude Opus 4.5",
2362
+ "object": "model",
2363
+ "policy": {
2364
+ "state": "enabled",
2365
+ "terms": "Enable access to the latest Claude Opus 4.5 model from Anthropic. [Learn more about how GitHub Copilot serves Claude Opus 4.5](https://gh.io/copilot-anthropic)."
2366
+ },
2367
+ "preview": false,
2368
+ "supported_endpoints": ["/chat/completions", "/v1/messages"],
2369
+ "vendor": "Anthropic",
2370
+ "version": "claude-opus-4.5"
2371
+ },
2372
+ {
2373
+ "billing": { "token_prices": {
2374
+ "batch_size": 1e6,
2375
+ "default": {
2376
+ "cache_price": 10,
2377
+ "cache_write_price": 125,
2378
+ "input_price": 100,
2379
+ "output_price": 500
2380
+ }
2381
+ } },
2382
+ "capabilities": {
2383
+ "family": "claude-haiku-4.5",
2384
+ "limits": {
2385
+ "max_context_window_tokens": 2e5,
2386
+ "max_non_streaming_output_tokens": 16e3,
2387
+ "max_output_tokens": 32e3,
2388
+ "max_prompt_tokens": 128e3,
2389
+ "vision": {
2390
+ "max_prompt_image_size": 3145728,
2391
+ "max_prompt_images": 5,
2392
+ "supported_media_types": [
2393
+ "image/jpeg",
2394
+ "image/png",
2395
+ "image/webp"
2396
+ ]
2397
+ }
2398
+ },
2399
+ "object": "model_capabilities",
2400
+ "supports": {
2401
+ "max_thinking_budget": 32e3,
2402
+ "min_thinking_budget": 1024,
2403
+ "parallel_tool_calls": true,
2404
+ "streaming": true,
2405
+ "tool_calls": true,
2406
+ "vision": true
2407
+ },
2408
+ "tokenizer": "o200k_base",
2409
+ "type": "chat"
2410
+ },
2411
+ "id": "claude-haiku-4.5",
2412
+ "is_chat_default": false,
2413
+ "is_chat_fallback": false,
2414
+ "model_picker_category": "lightweight",
2415
+ "model_picker_enabled": true,
2416
+ "model_picker_price_category": "low",
2417
+ "name": "Claude Haiku 4.5",
2418
+ "object": "model",
2419
+ "policy": {
2420
+ "state": "enabled",
2421
+ "terms": "Enable access to the latest Claude Haiku 4.5 model from Anthropic. [Learn more about how GitHub Copilot serves Claude Haiku 4.5](https://gh.io/copilot-anthropic)."
2422
+ },
2423
+ "preview": false,
2424
+ "supported_endpoints": ["/chat/completions", "/v1/messages"],
2425
+ "vendor": "Anthropic",
2426
+ "version": "claude-haiku-4.5"
2427
+ },
2428
+ {
2429
+ "billing": {
2430
+ "restricted_to": [
2431
+ "pro",
2432
+ "pro_plus",
2433
+ "max",
2434
+ "business",
2435
+ "enterprise",
2436
+ "individual_trial",
2437
+ "edu"
2438
+ ],
2439
+ "token_prices": {
2440
+ "batch_size": 1e6,
2441
+ "default": {
2442
+ "cache_price": 5,
2443
+ "input_price": 50,
2444
+ "output_price": 300
2445
+ }
2446
+ }
2447
+ },
2448
+ "capabilities": {
2449
+ "family": "gemini-3-flash",
2450
+ "limits": {
2451
+ "max_context_window_tokens": 128e3,
2452
+ "max_output_tokens": 64e3,
2453
+ "max_prompt_tokens": 128e3,
2454
+ "vision": {
2455
+ "max_prompt_image_size": 3145728,
2456
+ "max_prompt_images": 10,
2457
+ "supported_media_types": [
2458
+ "image/jpeg",
2459
+ "image/png",
2460
+ "image/webp",
2461
+ "image/heic",
2462
+ "image/heif"
2463
+ ]
2464
+ }
2465
+ },
2466
+ "object": "model_capabilities",
2467
+ "supports": {
2468
+ "max_thinking_budget": 32e3,
2469
+ "min_thinking_budget": 256,
2470
+ "parallel_tool_calls": true,
2471
+ "reasoning_effort": [
2472
+ "low",
2473
+ "medium",
2474
+ "high"
2475
+ ],
2476
+ "streaming": true,
2477
+ "tool_calls": true,
2478
+ "vision": true
2479
+ },
2480
+ "tokenizer": "o200k_base",
2481
+ "type": "chat"
2482
+ },
2483
+ "id": "gemini-3-flash-preview",
2484
+ "is_chat_default": false,
2485
+ "is_chat_fallback": false,
2486
+ "model_picker_category": "lightweight",
2487
+ "model_picker_enabled": true,
2488
+ "model_picker_price_category": "low",
2489
+ "name": "Gemini 3 Flash (Preview)",
2490
+ "object": "model",
2491
+ "policy": {
2492
+ "state": "enabled",
2493
+ "terms": "Enable access to the latest Gemini 3 Flash model from Google. [Learn more about how GitHub Copilot serves Gemini 3 Flash](https://docs.github.com/en/copilot/reference/ai-models/model-hosting#google-models)"
2494
+ },
2495
+ "preview": true,
2496
+ "vendor": "Google",
2497
+ "version": "gemini-3-flash-preview"
2498
+ },
2499
+ {
2500
+ "billing": {
2501
+ "restricted_to": [
2502
+ "pro",
2503
+ "pro_plus",
2504
+ "max",
2505
+ "business",
2506
+ "enterprise",
2507
+ "individual_trial",
2508
+ "edu"
2509
+ ],
2510
+ "token_prices": {
2511
+ "batch_size": 1e6,
2512
+ "default": {
2513
+ "cache_price": 12,
2514
+ "input_price": 125,
2515
+ "output_price": 1e3
2516
+ }
2517
+ }
2518
+ },
2519
+ "capabilities": {
2520
+ "family": "gemini-2.5-pro",
2521
+ "limits": {
2522
+ "max_context_window_tokens": 128e3,
2523
+ "max_output_tokens": 64e3,
2524
+ "max_prompt_tokens": 128e3,
2525
+ "vision": {
2526
+ "max_prompt_image_size": 3145728,
2527
+ "max_prompt_images": 10,
2528
+ "supported_media_types": [
2529
+ "image/jpeg",
2530
+ "image/png",
2531
+ "image/webp",
2532
+ "image/heic",
2533
+ "image/heif"
2534
+ ]
2535
+ }
2536
+ },
2537
+ "object": "model_capabilities",
2538
+ "supports": {
2539
+ "max_thinking_budget": 32768,
2540
+ "min_thinking_budget": 128,
2541
+ "parallel_tool_calls": true,
2542
+ "streaming": true,
2543
+ "tool_calls": true,
2544
+ "vision": true
2545
+ },
2546
+ "tokenizer": "o200k_base",
2547
+ "type": "chat"
2548
+ },
2549
+ "id": "gemini-2.5-pro",
2550
+ "is_chat_default": false,
2551
+ "is_chat_fallback": false,
2552
+ "model_picker_category": "powerful",
2553
+ "model_picker_enabled": true,
2554
+ "model_picker_price_category": "medium",
2555
+ "name": "Gemini 2.5 Pro",
2556
+ "object": "model",
2557
+ "policy": {
2558
+ "state": "enabled",
2559
+ "terms": "Enable access to the latest Gemini 2.5 Pro model from Google. [Learn more about how GitHub Copilot serves Gemini 2.5 Pro](https://docs.github.com/en/copilot/using-github-copilot/ai-models/choosing-the-right-ai-model-for-your-task#gemini-25-pro)."
2560
+ },
2561
+ "preview": false,
2562
+ "vendor": "Google",
2563
+ "version": "gemini-2.5-pro"
2564
+ },
2565
+ {
2566
+ "billing": { "token_prices": {
2567
+ "batch_size": 0,
2568
+ "default": {
2569
+ "cache_price": 0,
2570
+ "input_price": 0,
2571
+ "output_price": 0
2572
+ }
2573
+ } },
2574
+ "capabilities": {
2575
+ "family": "gpt-4.1",
2576
+ "limits": {
2577
+ "max_context_window_tokens": 128e3,
2578
+ "max_output_tokens": 16384,
2579
+ "max_prompt_tokens": 128e3,
2580
+ "vision": {
2581
+ "max_prompt_image_size": 3145728,
2582
+ "max_prompt_images": 1,
2583
+ "supported_media_types": [
2584
+ "image/jpeg",
2585
+ "image/png",
2586
+ "image/webp",
2587
+ "image/gif"
2588
+ ]
2589
+ }
2590
+ },
2591
+ "object": "model_capabilities",
2592
+ "supports": {
2593
+ "parallel_tool_calls": true,
2594
+ "streaming": true,
2595
+ "structured_outputs": true,
2596
+ "tool_calls": true,
2597
+ "vision": true
2598
+ },
2599
+ "tokenizer": "o200k_base",
2600
+ "type": "chat"
2601
+ },
2602
+ "id": "gpt-4.1-2025-04-14",
2603
+ "is_chat_default": false,
2604
+ "is_chat_fallback": false,
2605
+ "model_picker_enabled": false,
2606
+ "model_picker_price_category": "medium",
2607
+ "name": "GPT-4.1",
2608
+ "object": "model",
2609
+ "policy": {
2610
+ "state": "enabled",
2611
+ "terms": "Enable access to the latest GPT-4.1 model from OpenAI. [Learn more about how GitHub Copilot serves GPT-4.1](https://docs.github.com/en/copilot/using-github-copilot/ai-models/choosing-the-right-ai-model-for-your-task#gpt-41)."
2612
+ },
2613
+ "preview": false,
2614
+ "vendor": "Azure OpenAI",
2615
+ "version": "gpt-4.1-2025-04-14"
2616
+ },
2617
+ {
2618
+ "billing": { "token_prices": {
2619
+ "batch_size": 1e6,
2620
+ "default": {
2621
+ "cache_price": 2,
2622
+ "input_price": 25,
2623
+ "output_price": 200
2624
+ }
2625
+ } },
2626
+ "capabilities": {
2627
+ "family": "oswe-vscode",
2628
+ "limits": {
2629
+ "max_context_window_tokens": 264e3,
2630
+ "max_output_tokens": 64e3,
2631
+ "max_prompt_tokens": 2e5,
2632
+ "vision": {
2633
+ "max_prompt_image_size": 3145728,
2634
+ "max_prompt_images": 1,
2635
+ "supported_media_types": [
2636
+ "image/jpeg",
2637
+ "image/png",
2638
+ "image/webp",
2639
+ "image/gif"
2640
+ ]
2641
+ }
2642
+ },
2643
+ "object": "model_capabilities",
2644
+ "supports": {
2645
+ "parallel_tool_calls": true,
2646
+ "streaming": true,
2647
+ "structured_outputs": true,
2648
+ "tool_calls": true,
2649
+ "vision": true
2650
+ },
2651
+ "tokenizer": "o200k_base",
2652
+ "type": "chat"
2653
+ },
2654
+ "id": "oswe-vscode-prime",
2655
+ "is_chat_default": false,
2656
+ "is_chat_fallback": false,
2657
+ "model_picker_category": "versatile",
2658
+ "model_picker_enabled": true,
2659
+ "model_picker_price_category": "low",
2660
+ "name": "Raptor mini (Preview)",
2661
+ "object": "model",
2662
+ "policy": {
2663
+ "state": "enabled",
2664
+ "terms": "Enable access to the latest Raptor mini model from Microsoft. [Learn more about how GitHub Copilot serves Raptor mini](https://gh.io/copilot-openai-fine-tuned-by-microsoft)."
2665
+ },
2666
+ "preview": true,
2667
+ "supported_endpoints": ["/chat/completions", "/responses"],
2668
+ "vendor": "Azure OpenAI",
2669
+ "version": "raptor-mini"
2670
+ },
2671
+ {
2672
+ "billing": { "token_prices": {
2673
+ "batch_size": 1e6,
2674
+ "default": {
2675
+ "cache_price": 50,
2676
+ "input_price": 200,
2677
+ "output_price": 800
2678
+ }
2679
+ } },
2680
+ "capabilities": {
2681
+ "family": "gpt-4.1",
2682
+ "object": "model_capabilities",
2683
+ "supports": { "streaming": true },
2684
+ "tokenizer": "o200k_base",
2685
+ "type": "completion"
2686
+ },
2687
+ "id": "gpt-41-copilot",
2688
+ "is_chat_default": false,
2689
+ "is_chat_fallback": false,
2690
+ "model_picker_category": "versatile",
2691
+ "model_picker_enabled": false,
2692
+ "model_picker_price_category": "medium",
2693
+ "name": "GPT-4.1 Copilot",
2694
+ "object": "model",
2695
+ "preview": false,
2696
+ "vendor": "Azure OpenAI",
2697
+ "version": "gpt-41-copilot"
2698
+ },
2699
+ {
2700
+ "billing": { "token_prices": {
2701
+ "batch_size": 0,
2702
+ "default": {
2703
+ "cache_price": 0,
2704
+ "input_price": 0,
2705
+ "output_price": 0
2706
+ }
2707
+ } },
2708
+ "capabilities": {
2709
+ "family": "gpt-3.5-turbo",
2710
+ "limits": {
2711
+ "max_context_window_tokens": 16384,
2712
+ "max_output_tokens": 4096,
2713
+ "max_prompt_tokens": 12288
2714
+ },
2715
+ "object": "model_capabilities",
2716
+ "supports": {
2717
+ "streaming": true,
2718
+ "tool_calls": true
2719
+ },
2720
+ "tokenizer": "cl100k_base",
2721
+ "type": "chat"
2722
+ },
2723
+ "id": "gpt-3.5-turbo-0613",
2724
+ "is_chat_default": false,
2725
+ "is_chat_fallback": false,
2726
+ "model_picker_enabled": false,
2727
+ "model_picker_price_category": "medium",
2728
+ "name": "GPT 3.5 Turbo",
2729
+ "object": "model",
2730
+ "preview": false,
2731
+ "vendor": "Azure OpenAI",
2732
+ "version": "gpt-3.5-turbo-0613"
2733
+ },
2734
+ {
2735
+ "billing": { "token_prices": {
2736
+ "batch_size": 1e6,
2737
+ "default": {
2738
+ "cache_price": 125,
2739
+ "input_price": 250,
2740
+ "output_price": 1e3
2741
+ }
2742
+ } },
2743
+ "capabilities": {
2744
+ "family": "gpt-4",
2745
+ "limits": {
2746
+ "max_context_window_tokens": 32768,
2747
+ "max_output_tokens": 4096,
2748
+ "max_prompt_tokens": 32768
2749
+ },
2750
+ "object": "model_capabilities",
2751
+ "supports": {
2752
+ "streaming": true,
2753
+ "tool_calls": true
2754
+ },
2755
+ "tokenizer": "cl100k_base",
2756
+ "type": "chat"
2757
+ },
2758
+ "id": "gpt-4",
2759
+ "is_chat_default": false,
2760
+ "is_chat_fallback": false,
2761
+ "model_picker_enabled": false,
2762
+ "model_picker_price_category": "medium",
2763
+ "name": "GPT 4",
2764
+ "object": "model",
2765
+ "preview": false,
2766
+ "vendor": "Azure OpenAI",
2767
+ "version": "gpt-4-0613"
2768
+ },
2769
+ {
2770
+ "billing": { "token_prices": {
2771
+ "batch_size": 1e6,
2772
+ "default": {
2773
+ "cache_price": 125,
2774
+ "input_price": 250,
2775
+ "output_price": 1e3
2776
+ }
2777
+ } },
2778
+ "capabilities": {
2779
+ "family": "gpt-4",
2780
+ "limits": {
2781
+ "max_context_window_tokens": 32768,
2782
+ "max_output_tokens": 4096,
2783
+ "max_prompt_tokens": 32768
2784
+ },
2785
+ "object": "model_capabilities",
2786
+ "supports": {
2787
+ "streaming": true,
2788
+ "tool_calls": true
2789
+ },
2790
+ "tokenizer": "cl100k_base",
2791
+ "type": "chat"
2792
+ },
2793
+ "id": "gpt-4-0613",
2794
+ "is_chat_default": false,
2795
+ "is_chat_fallback": false,
2796
+ "model_picker_enabled": false,
2797
+ "model_picker_price_category": "medium",
2798
+ "name": "GPT 4",
2799
+ "object": "model",
2800
+ "preview": false,
2801
+ "vendor": "Azure OpenAI",
2802
+ "version": "gpt-4-0613"
2803
+ },
2804
+ {
2805
+ "billing": { "token_prices": {
2806
+ "batch_size": 1e6,
2807
+ "default": {
2808
+ "cache_price": 0,
2809
+ "input_price": 1e3,
2810
+ "output_price": 3e3
2811
+ }
2812
+ } },
2813
+ "capabilities": {
2814
+ "family": "gpt-4-turbo",
2815
+ "limits": {
2816
+ "max_context_window_tokens": 128e3,
2817
+ "max_output_tokens": 4096,
2818
+ "max_prompt_tokens": 64e3
2819
+ },
2820
+ "object": "model_capabilities",
2821
+ "supports": {
2822
+ "parallel_tool_calls": true,
2823
+ "streaming": true,
2824
+ "tool_calls": true
2825
+ },
2826
+ "tokenizer": "cl100k_base",
2827
+ "type": "chat"
2828
+ },
2829
+ "id": "gpt-4-0125-preview",
2830
+ "is_chat_default": false,
2831
+ "is_chat_fallback": false,
2832
+ "model_picker_enabled": false,
2833
+ "model_picker_price_category": "very_high",
2834
+ "name": "GPT 4 Turbo",
2835
+ "object": "model",
2836
+ "preview": false,
2837
+ "vendor": "Azure OpenAI",
2838
+ "version": "gpt-4-0125-preview"
2839
+ },
2840
+ {
2841
+ "billing": { "token_prices": {
2842
+ "batch_size": 0,
2843
+ "default": {
2844
+ "cache_price": 0,
2845
+ "input_price": 0,
2846
+ "output_price": 0
2847
+ }
2848
+ } },
2849
+ "capabilities": {
2850
+ "family": "gpt-4o",
2851
+ "limits": {
2852
+ "max_context_window_tokens": 128e3,
2853
+ "max_output_tokens": 4096,
2854
+ "max_prompt_tokens": 64e3,
2855
+ "vision": {
2856
+ "max_prompt_image_size": 3145728,
2857
+ "max_prompt_images": 1,
2858
+ "supported_media_types": [
2859
+ "image/jpeg",
2860
+ "image/png",
2861
+ "image/webp",
2862
+ "image/gif"
2863
+ ]
2864
+ }
2865
+ },
2866
+ "object": "model_capabilities",
2867
+ "supports": {
2868
+ "parallel_tool_calls": true,
2869
+ "streaming": true,
2870
+ "tool_calls": true,
2871
+ "vision": true
2872
+ },
2873
+ "tokenizer": "o200k_base",
2874
+ "type": "chat"
2875
+ },
2876
+ "id": "gpt-4o-2024-05-13",
2877
+ "is_chat_default": false,
2878
+ "is_chat_fallback": false,
2879
+ "model_picker_enabled": false,
2880
+ "model_picker_price_category": "medium",
2881
+ "name": "GPT-4o",
2882
+ "object": "model",
2883
+ "preview": false,
2884
+ "vendor": "Azure OpenAI",
2885
+ "version": "gpt-4o-2024-05-13"
2886
+ },
2887
+ {
2888
+ "billing": { "token_prices": {
2889
+ "batch_size": 0,
2890
+ "default": {
2891
+ "cache_price": 0,
2892
+ "input_price": 0,
2893
+ "output_price": 0
2894
+ }
2895
+ } },
2896
+ "capabilities": {
2897
+ "family": "gpt-4o",
2898
+ "limits": {
2899
+ "max_context_window_tokens": 128e3,
2900
+ "max_output_tokens": 4096,
2901
+ "max_prompt_tokens": 64e3
2902
+ },
2903
+ "object": "model_capabilities",
2904
+ "supports": {
2905
+ "parallel_tool_calls": true,
2906
+ "streaming": true,
2907
+ "tool_calls": true
2908
+ },
2909
+ "tokenizer": "o200k_base",
2910
+ "type": "chat"
2911
+ },
2912
+ "id": "gpt-4-o-preview",
2913
+ "is_chat_default": false,
2914
+ "is_chat_fallback": false,
2915
+ "model_picker_enabled": false,
2916
+ "model_picker_price_category": "high",
2917
+ "name": "GPT-4o",
2918
+ "object": "model",
2919
+ "preview": false,
2920
+ "vendor": "Azure OpenAI",
2921
+ "version": "gpt-4o-2024-05-13"
2922
+ },
2923
+ {
2924
+ "billing": { "token_prices": {
2925
+ "batch_size": 0,
2926
+ "default": {
2927
+ "cache_price": 0,
2928
+ "input_price": 0,
2929
+ "output_price": 0
2930
+ }
2931
+ } },
2932
+ "capabilities": {
2933
+ "family": "gpt-4.1",
2934
+ "limits": {
2935
+ "max_context_window_tokens": 128e3,
2936
+ "max_output_tokens": 16384,
2937
+ "max_prompt_tokens": 128e3,
2938
+ "vision": {
2939
+ "max_prompt_image_size": 3145728,
2940
+ "max_prompt_images": 1,
2941
+ "supported_media_types": [
2942
+ "image/jpeg",
2943
+ "image/png",
2944
+ "image/webp",
2945
+ "image/gif"
2946
+ ]
2947
+ }
2948
+ },
2949
+ "object": "model_capabilities",
2950
+ "supports": {
2951
+ "parallel_tool_calls": true,
2952
+ "streaming": true,
2953
+ "structured_outputs": true,
2954
+ "tool_calls": true,
2955
+ "vision": true
2956
+ },
2957
+ "tokenizer": "o200k_base",
2958
+ "type": "chat"
2959
+ },
2960
+ "id": "gpt-4.1",
2961
+ "info_messages": [{
2962
+ "code": "model_pending_deprecation",
2963
+ "message": "GPT-4.1 has a planned deprecation date of 2026-06-01."
2964
+ }],
2965
+ "is_chat_default": false,
2966
+ "is_chat_fallback": false,
2967
+ "model_picker_category": "versatile",
2968
+ "model_picker_enabled": false,
2969
+ "model_picker_price_category": "medium",
2970
+ "name": "GPT-4.1",
2971
+ "object": "model",
2972
+ "policy": {
2973
+ "state": "enabled",
2974
+ "terms": "Enable access to the latest GPT-4.1 model from OpenAI. [Learn more about how GitHub Copilot serves GPT-4.1](https://docs.github.com/en/copilot/using-github-copilot/ai-models/choosing-the-right-ai-model-for-your-task#gpt-41)."
2975
+ },
2976
+ "preview": false,
2977
+ "vendor": "Azure OpenAI",
2978
+ "version": "gpt-4.1-2025-04-14"
2979
+ },
2980
+ {
2981
+ "billing": {
2982
+ "restricted_to": [
2983
+ "pro",
2984
+ "pro_plus",
2985
+ "max",
2986
+ "business",
2987
+ "enterprise",
2988
+ "individual_trial",
2989
+ "edu"
2990
+ ],
2991
+ "token_prices": {
2992
+ "batch_size": 0,
2993
+ "default": {
2994
+ "cache_price": 0,
2995
+ "input_price": 0,
2996
+ "output_price": 0
2997
+ }
2998
+ }
2999
+ },
3000
+ "capabilities": {
3001
+ "family": "gpt-3.5-turbo",
3002
+ "limits": {
3003
+ "max_context_window_tokens": 16384,
3004
+ "max_output_tokens": 4096,
3005
+ "max_prompt_tokens": 12288
3006
+ },
3007
+ "object": "model_capabilities",
3008
+ "supports": {
3009
+ "streaming": true,
3010
+ "tool_calls": true
3011
+ },
3012
+ "tokenizer": "cl100k_base",
3013
+ "type": "chat"
3014
+ },
3015
+ "id": "gpt-3.5-turbo",
3016
+ "is_chat_default": false,
3017
+ "is_chat_fallback": false,
3018
+ "model_picker_enabled": false,
3019
+ "model_picker_price_category": "medium",
3020
+ "name": "GPT 3.5 Turbo",
3021
+ "object": "model",
3022
+ "preview": false,
3023
+ "vendor": "Azure OpenAI",
3024
+ "version": "gpt-3.5-turbo-0613"
3025
+ },
3026
+ {
3027
+ "billing": { "token_prices": {
3028
+ "batch_size": 0,
3029
+ "default": {
3030
+ "cache_price": 0,
3031
+ "input_price": 0,
3032
+ "output_price": 0
3033
+ }
3034
+ } },
3035
+ "capabilities": {
3036
+ "family": "gpt-4o-mini",
3037
+ "limits": {
3038
+ "max_context_window_tokens": 128e3,
3039
+ "max_output_tokens": 4096,
3040
+ "max_prompt_tokens": 12288
3041
+ },
3042
+ "object": "model_capabilities",
3043
+ "supports": {
3044
+ "parallel_tool_calls": true,
3045
+ "streaming": true,
3046
+ "tool_calls": true
3047
+ },
3048
+ "tokenizer": "o200k_base",
3049
+ "type": "chat"
3050
+ },
3051
+ "id": "gpt-4o-mini",
3052
+ "is_chat_default": false,
3053
+ "is_chat_fallback": false,
3054
+ "model_picker_enabled": false,
3055
+ "model_picker_price_category": "low",
3056
+ "name": "GPT-4o mini",
3057
+ "object": "model",
3058
+ "preview": false,
3059
+ "vendor": "Azure OpenAI",
3060
+ "version": "gpt-4o-mini-2024-07-18"
3061
+ },
3062
+ {
3063
+ "billing": { "token_prices": {
3064
+ "batch_size": 0,
3065
+ "default": {
3066
+ "cache_price": 0,
3067
+ "input_price": 0,
3068
+ "output_price": 0
3069
+ }
3070
+ } },
3071
+ "capabilities": {
3072
+ "family": "gpt-4o",
3073
+ "limits": {
3074
+ "max_context_window_tokens": 128e3,
3075
+ "max_output_tokens": 4096,
3076
+ "max_prompt_tokens": 64e3,
3077
+ "vision": {
3078
+ "max_prompt_image_size": 3145728,
3079
+ "max_prompt_images": 1,
3080
+ "supported_media_types": [
3081
+ "image/jpeg",
3082
+ "image/png",
3083
+ "image/webp",
3084
+ "image/gif"
3085
+ ]
3086
+ }
3087
+ },
3088
+ "object": "model_capabilities",
3089
+ "supports": {
3090
+ "parallel_tool_calls": true,
3091
+ "streaming": true,
3092
+ "tool_calls": true,
3093
+ "vision": true
3094
+ },
3095
+ "tokenizer": "o200k_base",
3096
+ "type": "chat"
3097
+ },
3098
+ "id": "gpt-4o",
3099
+ "is_chat_default": false,
3100
+ "is_chat_fallback": false,
3101
+ "model_picker_enabled": false,
3102
+ "model_picker_price_category": "medium",
3103
+ "name": "GPT-4o",
3104
+ "object": "model",
3105
+ "preview": false,
3106
+ "vendor": "Azure OpenAI",
3107
+ "version": "gpt-4o-2024-11-20"
3108
+ },
3109
+ {
3110
+ "billing": { "token_prices": {
3111
+ "batch_size": 0,
3112
+ "default": {
3113
+ "cache_price": 0,
3114
+ "input_price": 0,
3115
+ "output_price": 0
3116
+ }
3117
+ } },
3118
+ "capabilities": {
3119
+ "family": "text-embedding-ada-002",
3120
+ "limits": { "max_inputs": 512 },
3121
+ "object": "model_capabilities",
3122
+ "supports": {},
3123
+ "tokenizer": "cl100k_base",
3124
+ "type": "embeddings"
3125
+ },
3126
+ "id": "text-embedding-ada-002",
3127
+ "is_chat_default": false,
3128
+ "is_chat_fallback": false,
3129
+ "model_picker_enabled": false,
3130
+ "name": "Embedding V2 Ada",
3131
+ "object": "model",
3132
+ "preview": false,
3133
+ "vendor": "Azure OpenAI",
3134
+ "version": "text-embedding-3-small"
3135
+ }
3136
+ ],
3137
+ object: "list"
3138
+ };
3139
+ //#endregion
1269
3140
  //#region src/services/copilot/get-models.ts
1270
3141
  const getModels = async () => {
3142
+ if (isCopilotUseLocalModelsEnabled()) {
3143
+ const models = local_models_default;
3144
+ for (const model of models.data) if (model.policy?.state === "disabled") model.model_picker_enabled = true;
3145
+ consola.info(`Loaded ${models.data.length} models from local file`);
3146
+ return models;
3147
+ }
1271
3148
  consola.info(`Fetching models from ${copilotBaseUrl(state)}/models`);
1272
3149
  const response = await fetch(`${copilotBaseUrl(state)}/models`, { headers: copilotModelsHeaders(state) });
1273
3150
  if (!response.ok) {
@@ -1816,6 +3693,6 @@ async function logUser() {
1816
3693
  state.tokenBasedBilling = copilotUser.token_based_billing;
1817
3694
  }
1818
3695
  //#endregion
1819
- export { loginCodex as A, forwardError as B, prepareMessageProxyHeaders as C, compactSummaryPromptStart as D, compactMessageSections as E, createPooledWebSocketStream as F, createWebSocketUrl as I, initProxyFromEnv as L, generateTraceId as M, requestContext as N, compactSystemPromptStarts as O, resolveTraceId as P, state as R, prepareInteractionHeaders as S, compactAutoContinuePromptStarts as T, getCopilotUsage as _, setupGitHubToken as a, copilotWebSocketHeaders as b, cacheVSCodeVersion as c, generateRequestIdFromPayload as d, getRootSessionId as f, sleep as g, parseUserIdMetadata as h, setupCopilotToken as i, forwardCodexResponses as j, compactTextOnlyGuard as k, cacheVsCodeDeviceId as l, isNullish as m, persistCodexCredentials as n, cacheMacMachineId as o, getUUID as p, setupCodexToken as r, cacheModels as s, logUser as t, cacheVsCodeSessionId as u, copilotBaseUrl as v, initOpencodeVersion as w, prepareForCompact as x, copilotHeaders as y, HTTPError as z };
3696
+ export { loginCodex as A, prepareMessageProxyHeaders as C, compactSummaryPromptStart as D, compactMessageSections as E, createPooledWebSocketStream as F, createWebSocketUrl as I, state as L, generateTraceId as M, requestContext as N, compactSystemPromptStarts as O, resolveTraceId as P, HTTPError as R, prepareInteractionHeaders as S, compactAutoContinuePromptStarts as T, getCopilotUsage as _, setupGitHubToken as a, copilotWebSocketHeaders as b, cacheVSCodeVersion as c, generateRequestIdFromPayload as d, getRootSessionId as f, sleep as g, parseUserIdMetadata as h, setupCopilotToken as i, forwardCodexResponses as j, compactTextOnlyGuard as k, cacheVsCodeDeviceId as l, isNullish as m, persistCodexCredentials as n, cacheMacMachineId as o, getUUID as p, setupCodexToken as r, cacheModels as s, logUser as t, cacheVsCodeSessionId as u, copilotBaseUrl as v, initOpencodeVersion as w, prepareForCompact as x, copilotHeaders as y, forwardError as z };
1820
3697
 
1821
- //# sourceMappingURL=token-BiWRaRze.js.map
3698
+ //# sourceMappingURL=token-CIpQTF2M.js.map