@bitkyc08/opencodex 2.73.0 → 2.74.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.
- package/gui/dist/assets/{App-mHGa7dE1.js → App-B00Yq11u.js} +15 -15
- package/gui/dist/assets/App-KLz1TAXi.css +1 -0
- package/gui/dist/assets/{Tray-BxY_RYZg.js → Tray-D3Ij1Cvf.js} +1 -1
- package/gui/dist/assets/{index-ur_BPgK1.js → index-BYQQfBGK.js} +12 -12
- package/gui/dist/assets/index-DBT3Q31Y.css +1 -0
- package/gui/dist/assets/{quota-summary-D1Vq7N9H.js → quota-summary-yPtcEhGI.js} +1 -1
- package/gui/dist/index.html +2 -2
- package/package.json +1 -1
- package/src/adapters/kiro/stream.ts +49 -28
- package/src/adapters/openai-chat.ts +3 -5
- package/src/adapters/openai-responses/passthrough.ts +2 -5
- package/src/codex/auth-api/account-list.ts +14 -2
- package/src/codex/auth-api/main-account-probe.ts +2 -0
- package/src/codex/auth-api/pool-quota-probe.ts +4 -0
- package/src/codex/autostart-health.ts +15 -3
- package/src/codex/catalog/discovered-natives.ts +166 -0
- package/src/codex/catalog/metadata.ts +25 -6
- package/src/codex/catalog/model-hints.ts +8 -0
- package/src/codex/catalog/model-visibility.ts +4 -0
- package/src/codex/catalog/native-models.ts +46 -19
- package/src/codex/catalog-auto-refresh-sources.ts +71 -0
- package/src/codex/catalog-auto-refresh.ts +42 -6
- package/src/codex/catalog-refresh-status.ts +4 -0
- package/src/codex/credits.ts +86 -0
- package/src/codex/main-account-hard-lock.ts +2 -2
- package/src/codex/model-entitlements.ts +122 -1
- package/src/codex/quota-types.ts +1 -0
- package/src/codex/quota.ts +4 -3
- package/src/codex/shim-probe.ts +5 -1
- package/src/codex/shim-templates.ts +10 -4
- package/src/config/derived-registries.ts +4 -2
- package/src/config/diagnostics.ts +9 -0
- package/src/config/feature-flags.ts +6 -4
- package/src/config/schema/config-schema.ts +1 -0
- package/src/config/schema/leaf-validators.ts +1 -0
- package/src/generated/compatibility-version.json +67 -43
- package/src/generated/model-metadata.ts +1 -1
- package/src/lib/test-home-guard.ts +47 -3
- package/src/providers/fastwire.ts +22 -0
- package/src/providers/model-rename-startup.ts +7 -5
- package/src/providers/registry/entries-core.ts +13 -6
- package/src/providers/registry/entries-extended.ts +14 -8
- package/src/providers/registry/model-seeds.ts +14 -1
- package/src/providers/stale-model-roster-migration.ts +101 -0
- package/src/providers/xai-fast-model.ts +85 -0
- package/src/server/auth-cors.ts +1 -0
- package/src/server/background-lifecycle.ts +2 -2
- package/src/server/management/config-routes.ts +13 -1
- package/src/server/management/oauth-account-routes.ts +8 -2
- package/src/server/responses/core-normalize.ts +3 -0
- package/src/server/startup-health-cache.ts +7 -2
- package/src/service/desktop-startup.ts +93 -0
- package/src/types/config.ts +12 -11
- package/src/types/provider.ts +3 -1
- package/src/types/request.ts +2 -0
- package/src/usage/log.ts +3 -1
- package/gui/dist/assets/App-DCBismRi.css +0 -1
- package/gui/dist/assets/index-pWYJt_vL.css +0 -1
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
"path": "package.json",
|
|
13
|
-
"sha256": "
|
|
13
|
+
"sha256": "74cbb03f17637817c63923c697f1ff394f69c2431a7da67b0bed378482ef52bc"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"path": "scripts/model-metadata.source.json",
|
|
17
|
-
"sha256": "
|
|
17
|
+
"sha256": "af5d7df96d7a7c50dcdce0702e50f4a8597fac17713b7fad97c93e36cdef2fbb"
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
"path": "src/AGENTS.md",
|
|
@@ -506,7 +506,7 @@
|
|
|
506
506
|
},
|
|
507
507
|
{
|
|
508
508
|
"path": "src/adapters/kiro/stream.ts",
|
|
509
|
-
"sha256": "
|
|
509
|
+
"sha256": "211db2aba99a5f0d615d331a4495050e782e0e5ef4e9ef40ec9981142e19ab35"
|
|
510
510
|
},
|
|
511
511
|
{
|
|
512
512
|
"path": "src/adapters/kiro/usage.ts",
|
|
@@ -538,7 +538,7 @@
|
|
|
538
538
|
},
|
|
539
539
|
{
|
|
540
540
|
"path": "src/adapters/openai-chat.ts",
|
|
541
|
-
"sha256": "
|
|
541
|
+
"sha256": "3e29e9a40ae570b7016d4e90a7569de0d15fb1790fea160e5eeb189d91f53abc"
|
|
542
542
|
},
|
|
543
543
|
{
|
|
544
544
|
"path": "src/adapters/openai-chat/deepseek-artifact-schema.ts",
|
|
@@ -626,7 +626,7 @@
|
|
|
626
626
|
},
|
|
627
627
|
{
|
|
628
628
|
"path": "src/adapters/openai-responses/passthrough.ts",
|
|
629
|
-
"sha256": "
|
|
629
|
+
"sha256": "085a7aeb87366f879c46795e7768a620c54000cec34e3e643b0d54f3689fd3e8"
|
|
630
630
|
},
|
|
631
631
|
{
|
|
632
632
|
"path": "src/adapters/openai-responses/prompt-cache.ts",
|
|
@@ -1538,7 +1538,7 @@
|
|
|
1538
1538
|
},
|
|
1539
1539
|
{
|
|
1540
1540
|
"path": "src/codex/auth-api/account-list.ts",
|
|
1541
|
-
"sha256": "
|
|
1541
|
+
"sha256": "9fd529c34bfc5268e70f3a041527c9753f72fb0484f38b879a8c4d0a314b779f"
|
|
1542
1542
|
},
|
|
1543
1543
|
{
|
|
1544
1544
|
"path": "src/codex/auth-api/http.ts",
|
|
@@ -1554,7 +1554,7 @@
|
|
|
1554
1554
|
},
|
|
1555
1555
|
{
|
|
1556
1556
|
"path": "src/codex/auth-api/main-account-probe.ts",
|
|
1557
|
-
"sha256": "
|
|
1557
|
+
"sha256": "e2b29369438a590c0046414a13452833d02d060dbcd998723f0efbac9bce5807"
|
|
1558
1558
|
},
|
|
1559
1559
|
{
|
|
1560
1560
|
"path": "src/codex/auth-api/pool-mode-gate.ts",
|
|
@@ -1562,7 +1562,7 @@
|
|
|
1562
1562
|
},
|
|
1563
1563
|
{
|
|
1564
1564
|
"path": "src/codex/auth-api/pool-quota-probe.ts",
|
|
1565
|
-
"sha256": "
|
|
1565
|
+
"sha256": "5bb57f8f33b007cc8039cf69b29b9203bb47f495855b453ec1a2b8d338d8da99"
|
|
1566
1566
|
},
|
|
1567
1567
|
{
|
|
1568
1568
|
"path": "src/codex/auth-api/reset-credit-service.ts",
|
|
@@ -1586,19 +1586,23 @@
|
|
|
1586
1586
|
},
|
|
1587
1587
|
{
|
|
1588
1588
|
"path": "src/codex/autostart-health.ts",
|
|
1589
|
-
"sha256": "
|
|
1589
|
+
"sha256": "c4ca8ca25b8087a2b6fd8e11c3a41c04a445a381c23b1f720f5ecf813d6c1287"
|
|
1590
1590
|
},
|
|
1591
1591
|
{
|
|
1592
1592
|
"path": "src/codex/catalog-admission.ts",
|
|
1593
1593
|
"sha256": "56409c9d41b58e990a35f8b4305ec58ff1ffad173e2a43a7ff0e0b671546b2ba"
|
|
1594
1594
|
},
|
|
1595
|
+
{
|
|
1596
|
+
"path": "src/codex/catalog-auto-refresh-sources.ts",
|
|
1597
|
+
"sha256": "d7ac4d953a49249fe1cb5e0d8ee90c67f6e2dca7a99dd7f888d87285b198a724"
|
|
1598
|
+
},
|
|
1595
1599
|
{
|
|
1596
1600
|
"path": "src/codex/catalog-auto-refresh.ts",
|
|
1597
|
-
"sha256": "
|
|
1601
|
+
"sha256": "75cdfa052e5fd4328729e01c0c7d64d9b163f40a3f1ef24d53099f73b416958f"
|
|
1598
1602
|
},
|
|
1599
1603
|
{
|
|
1600
1604
|
"path": "src/codex/catalog-refresh-status.ts",
|
|
1601
|
-
"sha256": "
|
|
1605
|
+
"sha256": "0608ee249b699d0fc5aa8da32ba64447d1a6ea3444d56b0d37bbcad511e2cebc"
|
|
1602
1606
|
},
|
|
1603
1607
|
{
|
|
1604
1608
|
"path": "src/codex/catalog-write-serialization.ts",
|
|
@@ -1640,6 +1644,10 @@
|
|
|
1640
1644
|
"path": "src/codex/catalog/derive-entry.ts",
|
|
1641
1645
|
"sha256": "e08b6a6ffadaa9e382933f0c4e176071a4e055c6bce4b770ccd086f3df6a3447"
|
|
1642
1646
|
},
|
|
1647
|
+
{
|
|
1648
|
+
"path": "src/codex/catalog/discovered-natives.ts",
|
|
1649
|
+
"sha256": "b964fa7321c14a93a4e0ef0227795082b38ac408bbfc03f671eee84021cab86d"
|
|
1650
|
+
},
|
|
1643
1651
|
{
|
|
1644
1652
|
"path": "src/codex/catalog/effort.ts",
|
|
1645
1653
|
"sha256": "f2fb7bbb0e3688adcebf5d7bd944e51688240d93bfe456a7e5f2f95b9f9395b2"
|
|
@@ -1662,19 +1670,19 @@
|
|
|
1662
1670
|
},
|
|
1663
1671
|
{
|
|
1664
1672
|
"path": "src/codex/catalog/metadata.ts",
|
|
1665
|
-
"sha256": "
|
|
1673
|
+
"sha256": "238855a124c4304a848673d2978978a58b00034c882e02265e3e458632422362"
|
|
1666
1674
|
},
|
|
1667
1675
|
{
|
|
1668
1676
|
"path": "src/codex/catalog/model-hints.ts",
|
|
1669
|
-
"sha256": "
|
|
1677
|
+
"sha256": "4aeb758214244ad34356e2630b526e6c69ae735d3347acbbef88322640388cb4"
|
|
1670
1678
|
},
|
|
1671
1679
|
{
|
|
1672
1680
|
"path": "src/codex/catalog/model-visibility.ts",
|
|
1673
|
-
"sha256": "
|
|
1681
|
+
"sha256": "8ca7a7c0a241551d2c8a6c3d9d0302086e7e1c454b1666716dea3e995462ba6a"
|
|
1674
1682
|
},
|
|
1675
1683
|
{
|
|
1676
1684
|
"path": "src/codex/catalog/native-models.ts",
|
|
1677
|
-
"sha256": "
|
|
1685
|
+
"sha256": "51600fc0cf0599bd56a459f7f414b7c9022aceaf85235a26a5f6d2bc851f293f"
|
|
1678
1686
|
},
|
|
1679
1687
|
{
|
|
1680
1688
|
"path": "src/codex/catalog/parsing.ts",
|
|
@@ -1768,6 +1776,10 @@
|
|
|
1768
1776
|
"path": "src/codex/credential-mutation-epoch.ts",
|
|
1769
1777
|
"sha256": "fa23b49b0c53eceee61f0bcc5d74685aa5052031cc40e2c0cdab6b72bd478b51"
|
|
1770
1778
|
},
|
|
1779
|
+
{
|
|
1780
|
+
"path": "src/codex/credits.ts",
|
|
1781
|
+
"sha256": "a185fae8f9945b54ea98de0958bd1b547cc960c0187f87799feb176f6a0e09d5"
|
|
1782
|
+
},
|
|
1771
1783
|
{
|
|
1772
1784
|
"path": "src/codex/custom-model-catalog-migration.ts",
|
|
1773
1785
|
"sha256": "eb6c1420bc61b27c67772255a20192cb94605c988f6b597608e69b6346464c77"
|
|
@@ -2006,7 +2018,7 @@
|
|
|
2006
2018
|
},
|
|
2007
2019
|
{
|
|
2008
2020
|
"path": "src/codex/main-account-hard-lock.ts",
|
|
2009
|
-
"sha256": "
|
|
2021
|
+
"sha256": "11c7a5f729a8db12dfc0b17a0ace643bed33ea11a43237487f91c34c20674552"
|
|
2010
2022
|
},
|
|
2011
2023
|
{
|
|
2012
2024
|
"path": "src/codex/main-account-policy-wait.ts",
|
|
@@ -2038,7 +2050,7 @@
|
|
|
2038
2050
|
},
|
|
2039
2051
|
{
|
|
2040
2052
|
"path": "src/codex/model-entitlements.ts",
|
|
2041
|
-
"sha256": "
|
|
2053
|
+
"sha256": "a7ae154690c4786ffb7c7e727e0067e84e4e1bfc78bbf600fc74702136252d15"
|
|
2042
2054
|
},
|
|
2043
2055
|
{
|
|
2044
2056
|
"path": "src/codex/multi-agent-mode-policy.ts",
|
|
@@ -2222,11 +2234,11 @@
|
|
|
2222
2234
|
},
|
|
2223
2235
|
{
|
|
2224
2236
|
"path": "src/codex/quota-types.ts",
|
|
2225
|
-
"sha256": "
|
|
2237
|
+
"sha256": "e2ae7ef5f237af5826b7648e8014a45aa1ddcc1ce1282465669e69311f0ab9bc"
|
|
2226
2238
|
},
|
|
2227
2239
|
{
|
|
2228
2240
|
"path": "src/codex/quota.ts",
|
|
2229
|
-
"sha256": "
|
|
2241
|
+
"sha256": "898e4100742e9d1a98aca7e9463e0c917166afe51a5eab02c4e64175879b47c6"
|
|
2230
2242
|
},
|
|
2231
2243
|
{
|
|
2232
2244
|
"path": "src/codex/refresh.ts",
|
|
@@ -2322,7 +2334,7 @@
|
|
|
2322
2334
|
},
|
|
2323
2335
|
{
|
|
2324
2336
|
"path": "src/codex/shim-probe.ts",
|
|
2325
|
-
"sha256": "
|
|
2337
|
+
"sha256": "5842ef302a9d909d5d024c71a2ece0ba34ab8fc4e565e44be152d6ada92edfa4"
|
|
2326
2338
|
},
|
|
2327
2339
|
{
|
|
2328
2340
|
"path": "src/codex/shim-restore-lock.ts",
|
|
@@ -2334,7 +2346,7 @@
|
|
|
2334
2346
|
},
|
|
2335
2347
|
{
|
|
2336
2348
|
"path": "src/codex/shim-templates.ts",
|
|
2337
|
-
"sha256": "
|
|
2349
|
+
"sha256": "9c94207aafd2ea377bb7e27a3169a6a2bbcd98a3522fbda8c032dd0af2ca8a84"
|
|
2338
2350
|
},
|
|
2339
2351
|
{
|
|
2340
2352
|
"path": "src/codex/shim.ts",
|
|
@@ -2454,15 +2466,15 @@
|
|
|
2454
2466
|
},
|
|
2455
2467
|
{
|
|
2456
2468
|
"path": "src/config/derived-registries.ts",
|
|
2457
|
-
"sha256": "
|
|
2469
|
+
"sha256": "df60699f4248426cce2e569517f5474a8557049fc59d249c9fc3e9f85e4708f7"
|
|
2458
2470
|
},
|
|
2459
2471
|
{
|
|
2460
2472
|
"path": "src/config/diagnostics.ts",
|
|
2461
|
-
"sha256": "
|
|
2473
|
+
"sha256": "604474e6d9c54b1e1ab118ddf8aa5f70239dcf8b403aeabb1d7986e2d6f56b06"
|
|
2462
2474
|
},
|
|
2463
2475
|
{
|
|
2464
2476
|
"path": "src/config/feature-flags.ts",
|
|
2465
|
-
"sha256": "
|
|
2477
|
+
"sha256": "d71a4582a5e6d21585c74a534eb13e841522157a4a31574df0497d25c1c42e1d"
|
|
2466
2478
|
},
|
|
2467
2479
|
{
|
|
2468
2480
|
"path": "src/config/initialize.ts",
|
|
@@ -2562,11 +2574,11 @@
|
|
|
2562
2574
|
},
|
|
2563
2575
|
{
|
|
2564
2576
|
"path": "src/config/schema/config-schema.ts",
|
|
2565
|
-
"sha256": "
|
|
2577
|
+
"sha256": "389a1f63819e7e07dec8c7a0aa61afda102e93c1724a3c82a5424ea510091592"
|
|
2566
2578
|
},
|
|
2567
2579
|
{
|
|
2568
2580
|
"path": "src/config/schema/leaf-validators.ts",
|
|
2569
|
-
"sha256": "
|
|
2581
|
+
"sha256": "62e532eb3d9015ba3384eb13062b52c0a000ffd77429d210d503383328247f33"
|
|
2570
2582
|
},
|
|
2571
2583
|
{
|
|
2572
2584
|
"path": "src/config/serving-runtimes.ts",
|
|
@@ -2582,7 +2594,7 @@
|
|
|
2582
2594
|
},
|
|
2583
2595
|
{
|
|
2584
2596
|
"path": "src/generated/model-metadata.ts",
|
|
2585
|
-
"sha256": "
|
|
2597
|
+
"sha256": "8a0751740eff38087eab73559da832a2fe743863839b6a6fc37af40388ad975a"
|
|
2586
2598
|
},
|
|
2587
2599
|
{
|
|
2588
2600
|
"path": "src/generated/worker-bundles.gen.ts",
|
|
@@ -3610,7 +3622,7 @@
|
|
|
3610
3622
|
},
|
|
3611
3623
|
{
|
|
3612
3624
|
"path": "src/lib/test-home-guard.ts",
|
|
3613
|
-
"sha256": "
|
|
3625
|
+
"sha256": "05a51025339da867890ad570f245895ab0a825facae9adfd4d847ef10429b5f9"
|
|
3614
3626
|
},
|
|
3615
3627
|
{
|
|
3616
3628
|
"path": "src/lib/token-estimate.ts",
|
|
@@ -4150,7 +4162,7 @@
|
|
|
4150
4162
|
},
|
|
4151
4163
|
{
|
|
4152
4164
|
"path": "src/providers/fastwire.ts",
|
|
4153
|
-
"sha256": "
|
|
4165
|
+
"sha256": "eb55cf546c8535ddef6535133ffb036a0281e1067900ae00d1c0153fd9189d25"
|
|
4154
4166
|
},
|
|
4155
4167
|
{
|
|
4156
4168
|
"path": "src/providers/free-directory.ts",
|
|
@@ -4234,7 +4246,7 @@
|
|
|
4234
4246
|
},
|
|
4235
4247
|
{
|
|
4236
4248
|
"path": "src/providers/model-rename-startup.ts",
|
|
4237
|
-
"sha256": "
|
|
4249
|
+
"sha256": "e3d334570cdc524735d0444f1e6619b1d58d0589e2419fdccc8c00c654ee68d0"
|
|
4238
4250
|
},
|
|
4239
4251
|
{
|
|
4240
4252
|
"path": "src/providers/muse-key-quota.ts",
|
|
@@ -4354,11 +4366,11 @@
|
|
|
4354
4366
|
},
|
|
4355
4367
|
{
|
|
4356
4368
|
"path": "src/providers/registry/entries-core.ts",
|
|
4357
|
-
"sha256": "
|
|
4369
|
+
"sha256": "62c363bd05f81c79b47d172255906f4dd1c1ab5f875f0b7c3f7e5700471f42d6"
|
|
4358
4370
|
},
|
|
4359
4371
|
{
|
|
4360
4372
|
"path": "src/providers/registry/entries-extended.ts",
|
|
4361
|
-
"sha256": "
|
|
4373
|
+
"sha256": "c0ebb73844bab9caf464b9c9e7478384907e448a13ec9ef192b7ef281e6fde8d"
|
|
4362
4374
|
},
|
|
4363
4375
|
{
|
|
4364
4376
|
"path": "src/providers/registry/model-ids.ts",
|
|
@@ -4366,7 +4378,7 @@
|
|
|
4366
4378
|
},
|
|
4367
4379
|
{
|
|
4368
4380
|
"path": "src/providers/registry/model-seeds.ts",
|
|
4369
|
-
"sha256": "
|
|
4381
|
+
"sha256": "4b72d7fc2cc7b97ee32c6850562523921016a7e7bd2a5079f10adaaa71dc8e39"
|
|
4370
4382
|
},
|
|
4371
4383
|
{
|
|
4372
4384
|
"path": "src/providers/registry/types.ts",
|
|
@@ -4400,6 +4412,10 @@
|
|
|
4400
4412
|
"path": "src/providers/stale-context-window-migration.ts",
|
|
4401
4413
|
"sha256": "88c78ba52cad292183f7c07925635fa4634a492d831430b7cd71de9c1a6c494e"
|
|
4402
4414
|
},
|
|
4415
|
+
{
|
|
4416
|
+
"path": "src/providers/stale-model-roster-migration.ts",
|
|
4417
|
+
"sha256": "9e58a8e107e3aeeed4cc80b12538dfe5f7b5faacc7db3db6203d2b866fbed489"
|
|
4418
|
+
},
|
|
4403
4419
|
{
|
|
4404
4420
|
"path": "src/providers/stale-vision-classification-migration.ts",
|
|
4405
4421
|
"sha256": "9603e1ed749d1e3f324807e17e3e30e73ee277a1ebf7ed23742bef214b479a07"
|
|
@@ -4412,6 +4428,10 @@
|
|
|
4412
4428
|
"path": "src/providers/vercel-gateway-routing.ts",
|
|
4413
4429
|
"sha256": "dd6fedd791a6cbc371f2cc93cdb081090b339fe452a80bc8d4b8b100ff7bfd19"
|
|
4414
4430
|
},
|
|
4431
|
+
{
|
|
4432
|
+
"path": "src/providers/xai-fast-model.ts",
|
|
4433
|
+
"sha256": "a9a0438cdfdc83681d0b6a9ff5a4fecf11d8745a5de96312d52ba63a753ecb18"
|
|
4434
|
+
},
|
|
4415
4435
|
{
|
|
4416
4436
|
"path": "src/providers/xai-responses-opt-in.ts",
|
|
4417
4437
|
"sha256": "eb5a2f9e0a2f08f2951054df71686c954ad9b3aa27377b177b032216a8647867"
|
|
@@ -4902,11 +4922,11 @@
|
|
|
4902
4922
|
},
|
|
4903
4923
|
{
|
|
4904
4924
|
"path": "src/server/auth-cors.ts",
|
|
4905
|
-
"sha256": "
|
|
4925
|
+
"sha256": "0770993a480b81e2bb8b5862fa2b4daf2f2e097ccdb0f239e8f70492fe27407a"
|
|
4906
4926
|
},
|
|
4907
4927
|
{
|
|
4908
4928
|
"path": "src/server/background-lifecycle.ts",
|
|
4909
|
-
"sha256": "
|
|
4929
|
+
"sha256": "759c5a0e1a909c122e04627f99eba4327b4e5d460d22c0b197f1433be3087290"
|
|
4910
4930
|
},
|
|
4911
4931
|
{
|
|
4912
4932
|
"path": "src/server/catalog-download.ts",
|
|
@@ -5166,7 +5186,7 @@
|
|
|
5166
5186
|
},
|
|
5167
5187
|
{
|
|
5168
5188
|
"path": "src/server/management/config-routes.ts",
|
|
5169
|
-
"sha256": "
|
|
5189
|
+
"sha256": "04bfe51a9f99d41f76bd16b6efa063a435febf495077f7c9a8f927c8dfd72cf6"
|
|
5170
5190
|
},
|
|
5171
5191
|
{
|
|
5172
5192
|
"path": "src/server/management/context.ts",
|
|
@@ -5222,7 +5242,7 @@
|
|
|
5222
5242
|
},
|
|
5223
5243
|
{
|
|
5224
5244
|
"path": "src/server/management/oauth-account-routes.ts",
|
|
5225
|
-
"sha256": "
|
|
5245
|
+
"sha256": "9c7446ad100634fc3e379d3353d239e84000b90810f49f7662e64d323c87b7e8"
|
|
5226
5246
|
},
|
|
5227
5247
|
{
|
|
5228
5248
|
"path": "src/server/management/protocol-routes.ts",
|
|
@@ -5602,7 +5622,7 @@
|
|
|
5602
5622
|
},
|
|
5603
5623
|
{
|
|
5604
5624
|
"path": "src/server/responses/core-normalize.ts",
|
|
5605
|
-
"sha256": "
|
|
5625
|
+
"sha256": "a209d99b5820a3a8276ed5fa6998684aaad7108f19ecd443660908b8e979238d"
|
|
5606
5626
|
},
|
|
5607
5627
|
{
|
|
5608
5628
|
"path": "src/server/responses/core-opaque-recovery.ts",
|
|
@@ -5810,7 +5830,7 @@
|
|
|
5810
5830
|
},
|
|
5811
5831
|
{
|
|
5812
5832
|
"path": "src/server/startup-health-cache.ts",
|
|
5813
|
-
"sha256": "
|
|
5833
|
+
"sha256": "d811b597d5fe44de11f80a526dc1e1437a154d7461fe1bad2b04bdc5c274613f"
|
|
5814
5834
|
},
|
|
5815
5835
|
{
|
|
5816
5836
|
"path": "src/server/stop-teardown.ts",
|
|
@@ -5872,6 +5892,10 @@
|
|
|
5872
5892
|
"path": "src/service/cli.ts",
|
|
5873
5893
|
"sha256": "a6a14faf051d0d8e522aa85151ccec369fe8c3660a7fcbd6f8d802cad59d706a"
|
|
5874
5894
|
},
|
|
5895
|
+
{
|
|
5896
|
+
"path": "src/service/desktop-startup.ts",
|
|
5897
|
+
"sha256": "b20f9d4c158906832c25f0ea2577215745d2d75e8d3cf03a93dac31ed14c4389"
|
|
5898
|
+
},
|
|
5875
5899
|
{
|
|
5876
5900
|
"path": "src/service/diagnostics.ts",
|
|
5877
5901
|
"sha256": "6ca63e3be0cdb4f0cf0fa51eb42d453673496bdf97caec65f5a8cdde50ec2617"
|
|
@@ -6114,15 +6138,15 @@
|
|
|
6114
6138
|
},
|
|
6115
6139
|
{
|
|
6116
6140
|
"path": "src/types/config.ts",
|
|
6117
|
-
"sha256": "
|
|
6141
|
+
"sha256": "6d7fb36229bc8f7ca84e4d99e983037b28943bf310d829462b001daaf6b00eaa"
|
|
6118
6142
|
},
|
|
6119
6143
|
{
|
|
6120
6144
|
"path": "src/types/provider.ts",
|
|
6121
|
-
"sha256": "
|
|
6145
|
+
"sha256": "020d0435bbd88ab6341ddbb6e547ae0643071bf119dc5d0b794165b4adefc9cd"
|
|
6122
6146
|
},
|
|
6123
6147
|
{
|
|
6124
6148
|
"path": "src/types/request.ts",
|
|
6125
|
-
"sha256": "
|
|
6149
|
+
"sha256": "178e5e60ee3632e8d727e9f5e4235be48f5aff49f694ed3220134b48f1fad70e"
|
|
6126
6150
|
},
|
|
6127
6151
|
{
|
|
6128
6152
|
"path": "src/types/tools.ts",
|
|
@@ -6350,7 +6374,7 @@
|
|
|
6350
6374
|
},
|
|
6351
6375
|
{
|
|
6352
6376
|
"path": "src/usage/log.ts",
|
|
6353
|
-
"sha256": "
|
|
6377
|
+
"sha256": "e919d307303d617ebdc982fa90de2c58368fe409c42fbcdc4d412996505caf50"
|
|
6354
6378
|
},
|
|
6355
6379
|
{
|
|
6356
6380
|
"path": "src/usage/model-identity.ts",
|
|
@@ -47,7 +47,7 @@ const DATA: Record<string, readonly Row[]> = {
|
|
|
47
47
|
"cerebras": [["gemma-4-31b",131072,40960,"text,image",1,null,0.99,1.49,0,0],["gpt-oss-120b",131072,40960,"text",1,null,0.35,0.75,0,0],["llama3.1-8b",32000,8000,"text",0,null,0.1,0.1,0,0],["qwen-3-235b-a22b-instruct-2507",131000,32000,"text",0,null,0.6,1.2,0,0],["qwen-3-coder-480b",131072,32768,"text",0,null,0,0,0,0],["zai-glm-4.6",131072,32768,"text",0,null,0,0,0,0],["zai-glm-4.7",131072,40960,"text",1,null,2.25,2.75,2.25,0]],
|
|
48
48
|
"deepseek": [["deepseek-v4-flash",1048576,384000,"text",1,null,0.14,0.28,0.0028,0],["deepseek-v4-pro",1048576,384000,"text",1,null,0.435,0.87,0.003625,0]],
|
|
49
49
|
"google": [["deep-research-max-preview-04-2026",131072,65536,"text,image",1,null,2,12,0.2,0],["deep-research-preview-04-2026",131072,65536,"text,image",1,null,2,12,0.2,0],["gemini-1.5-flash",1000000,8192,"text,image",0,null,0.075,0.3,0.01875,0],["gemini-1.5-flash-8b",1000000,8192,"text,image",0,null,0.0375,0.15,0.01,0],["gemini-1.5-pro",1000000,8192,"text,image",0,null,1.25,5,0.3125,0],["gemini-2.0-flash",1048576,8192,"text,image",0,null,0.1,0.4,0.025,0],["gemini-2.0-flash-lite",1048576,8192,"text,image",0,null,0.075,0.3,0,0],["gemini-2.5-computer-use-preview-10-2025",131072,65536,"text,image",1,null,1.25,10,0,0],["gemini-2.5-flash",1048576,65536,"text,image",1,null,0.3,2.5,0.03,0],["gemini-2.5-flash-lite",1048576,65536,"text,image",1,null,0.1,0.4,0.01,0],["gemini-2.5-flash-lite-preview-06-17",1048576,65536,"text,image",1,null,0.1,0.4,0.025,0],["gemini-2.5-flash-lite-preview-09-2025",1048576,65536,"text,image",1,null,0.1,0.4,0.025,0],["gemini-2.5-flash-preview-04-17",1048576,65536,"text,image",1,null,0.15,0.6,0.0375,0],["gemini-2.5-flash-preview-05-20",1048576,65536,"text,image",1,null,0.15,0.6,0.0375,0],["gemini-2.5-flash-preview-09-2025",1048576,65536,"text,image",1,null,0.3,2.5,0.075,0],["gemini-2.5-pro",1048576,65536,"text,image",1,null,1.25,10,0.125,0],["gemini-2.5-pro-preview-05-06",1048576,65536,"text,image",1,null,1.25,10,0.31,0],["gemini-2.5-pro-preview-06-05",1048576,65536,"text,image",1,null,1.25,10,0.31,0],["gemini-3-flash-preview",1048576,65536,"text,image",1,null,0.5,3,0.05,0],["gemini-3-pro-preview",1048576,65536,"text,image",1,null,2,12,0.2,0],["gemini-3.1-flash-lite",1048576,65536,"text,image",1,null,0.25,1.5,0.025,0],["gemini-3.1-flash-lite-image",65536,65536,"text,image",1,null,0.25,30,0,0],["gemini-3.1-flash-lite-preview",1048576,65536,"text,image",1,null,0.25,1.5,0.025,0],["gemini-3.1-flash-live-preview",131072,65536,"text,image",1,null,0.75,4.5,0,0],["gemini-3.1-pro-preview",1048576,65536,"text,image",1,null,2,12,0.2,0],["gemini-3.1-pro-preview-customtools",1048576,65536,"text,image",1,null,2,12,0.2,0],["gemini-3.5-flash",1048576,65536,"text,image",1,null,1.5,9,0.15,0],["gemini-3.5-flash-lite",1048576,65536,"text,image",1,null,0.3,2.5,0.03,0],["gemini-3.6-flash",1048576,65536,"text,image",1,null,1.5,7.5,0.15,0],["gemini-3.7-flash",1048576,65536,"text,image",1],["gemini-3.8-flash",1048576,65536,"text,image",1],["gemini-flash-latest",1048576,65536,"text,image",1,null,1.5,9,0.15,0],["gemini-flash-lite-latest",1048576,65536,"text,image",1,null,0.25,1.5,0.025,0],["gemini-live-2.5-flash",128000,8000,"text,image",1,null,0.5,2,0,0],["gemini-live-2.5-flash-preview-native-audio",131072,65536,"text",1,null,0.5,2,0,0],["gemini-robotics-er-1.6-preview",131072,65536,"text,image",1,null,1,5,0,0],["gemma-3-27b-it",131072,8192,"text,image",0,null,0,0,0,0],["gemma-4-26b",256000,8192,"text,image",1,null,0,0,0,0],["gemma-4-26b-a4b-it",262144,32768,"text,image",1,null,0,0,0,0],["gemma-4-26b-it",256000,8192,"text,image",1,null,0,0,0,0],["gemma-4-31b",256000,8192,"text,image",1,null,0,0,0,0],["gemma-4-31b-it",262144,32768,"text,image",1,null,0,0,0,0],["gemma-4-E2B-it",131072,8192,"text,image",1,null,0,0,0,0],["gemma-4-E4B-it",131072,8192,"text,image",1,null,0,0,0,0]],
|
|
50
|
-
"minimax": [["MiniMax-M2",196608,128000,"text",1,null,0.3,1.2,0,0],["MiniMax-M2.1",204800,131072,"text",1,null,0.3,1.2,0,0],["MiniMax-M2.5",204800,131072,"text",1,null,0.3,1.2,0.03,0.375],["MiniMax-M2.5-highspeed",204800,131072,"text",1,null,0.6,2.4,0.06,0.375],["MiniMax-M2.5-lightning",204800,32000,"text",1,null,0.3,2.4,0,0],["MiniMax-M2.7",204800,131072,"text",1,null,0.3,1.2,0.06,0.375],["MiniMax-M2.7-highspeed",204800,131072,"text",1,null,0.6,2.4,0.06,0.375],["minimax-m3",512000,128000,"text,image",1,null,0.6,2.4,0.12,0],["MiniMax-M3",1000000,128000,"text,image,video",1,null,0.3,1.2,0.06,0]],
|
|
50
|
+
"minimax": [["MiniMax-M2",196608,128000,"text",1,null,0.3,1.2,0,0],["MiniMax-M2.1",204800,131072,"text",1,null,0.3,1.2,0,0],["MiniMax-M2.5",204800,131072,"text",1,null,0.3,1.2,0.03,0.375],["MiniMax-M2.5-highspeed",204800,131072,"text",1,null,0.6,2.4,0.06,0.375],["MiniMax-M2.5-lightning",204800,32000,"text",1,null,0.3,2.4,0,0],["MiniMax-M2.7",204800,131072,"text",1,null,0.3,1.2,0.06,0.375],["MiniMax-M2.7-highspeed",204800,131072,"text",1,null,0.6,2.4,0.06,0.375],["minimax-m3",512000,128000,"text,image",1,null,0.6,2.4,0.12,0],["MiniMax-M3",1000000,128000,"text,image,video",1,null,0.3,1.2,0.06,0],["MiniMax-M3.1-Flash-Preview",1000000,null,"text,image,video",1]],
|
|
51
51
|
"mistral": [["codestral-latest",256000,4096,"text",0,null,0.3,0.9,0,0],["devstral-2512",262144,262144,"text",0,null,0.4,2,0,0],["devstral-latest",262144,262144,"text",0,null,0.4,2,0,0],["devstral-medium-2507",128000,128000,"text",0,null,0.4,2,0,0],["devstral-medium-latest",262144,262144,"text",0,null,0.4,2,0,0],["devstral-small-2505",128000,128000,"text",0,null,0.1,0.3,0,0],["devstral-small-2507",128000,128000,"text",0,null,0.1,0.3,0,0],["labs-devstral-small-2512",256000,256000,"text,image",0,null,0,0,0,0],["magistral-medium-latest",128000,16384,"text",1,null,2,5,0,0],["magistral-small",128000,128000,"text",1,null,0.5,1.5,0,0],["ministral-3b-latest",128000,128000,"text",0,null,0.04,0.04,0,0],["ministral-8b-latest",128000,128000,"text",0,null,0.1,0.1,0,0],["mistral-large-2411",131072,16384,"text",0,null,2,6,0,0],["mistral-large-2512",262144,262144,"text,image",0,null,0.5,1.5,0,0],["mistral-large-latest",262144,262144,"text,image",0,null,0.5,1.5,0,0],["mistral-medium-2505",131072,131072,"text,image",0,null,0.4,2,0,0],["mistral-medium-2508",262144,262144,"text,image",0,null,0.4,2,0,0],["mistral-medium-2604",262144,262144,"text,image",1,null,1.5,7.5,0,0],["mistral-medium-latest",262144,262144,"text,image",1,null,1.5,7.5,0,0],["mistral-nemo",128000,128000,"text",0,null,0.15,0.15,0,0],["mistral-small-2506",128000,16384,"text,image",0,null,0.1,0.3,0,0],["mistral-small-2603",256000,256000,"text,image",1,null,0.15,0.6,0,0],["mistral-small-latest",256000,256000,"text,image",1,null,0.15,0.6,0,0],["open-mistral-7b",8000,8000,"text",0,null,0.25,0.25,0,0],["open-mistral-nemo",128000,128000,"text",0,null,0.15,0.15,0,0],["open-mixtral-8x22b",64000,64000,"text",0,null,2,6,0,0],["open-mixtral-8x7b",32000,32000,"text",0,null,0.7,0.7,0,0],["pixtral-12b",128000,128000,"text,image",0,null,0.15,0.15,0,0],["pixtral-large-latest",128000,128000,"text,image",0,null,2,6,0,0]],
|
|
52
52
|
"moonshot": [["kimi-k2.5",262144,65536,"text,image",1,null,0,0,0,0]],
|
|
53
53
|
"openai": [["codex-mini-latest",200000,100000,"text",1,null,1.5,6,0.375,0],["gpt-4",8192,8192,"text",0,null,30,60,0,0],["gpt-4-turbo",128000,4096,"text,image",0,null,10,30,0,0],["gpt-4.1",1047576,32768,"text,image",0,null,2,8,0.5,0],["gpt-4.1-mini",1047576,32768,"text,image",0,null,0.4,1.6,0.1,0],["gpt-4.1-nano",1047576,32768,"text,image",0,null,0.1,0.4,0.025,0],["gpt-4o",128000,16384,"text,image",0,null,2.5,10,1.25,0],["gpt-4o-2024-05-13",128000,4096,"text,image",0,null,5,15,0,0],["gpt-4o-2024-08-06",128000,16384,"text,image",0,null,2.5,10,1.25,0],["gpt-4o-2024-11-20",128000,16384,"text,image",0,null,2.5,10,1.25,0],["gpt-4o-mini",128000,16384,"text,image",0,null,0.15,0.6,0.075,0],["gpt-5",400000,128000,"text,image",1,null,1.25,10,0.125,0],["gpt-5-chat-latest",128000,16384,"text,image",0,null,1.25,10,0.125,0],["gpt-5-codex",272000,128000,"text,image",1,null,1.25,10,0.125,0],["gpt-5-mini",400000,128000,"text,image",1,null,0.25,2,0.025,0],["gpt-5-nano",400000,128000,"text,image",1,null,0.05,0.4,0.005,0],["gpt-5-pro",400000,272000,"text,image",1,null,15,120,0,0],["gpt-5.1",400000,128000,"text,image",1,null,1.25,10,0.125,0],["gpt-5.1-chat-latest",128000,16384,"text,image",1,null,1.25,10,0.125,0],["gpt-5.1-codex",272000,128000,"text,image",1,null,1.25,10,0.125,0],["gpt-5.1-codex-max",272000,128000,"text,image",1,null,1.25,10,0.125,0],["gpt-5.1-codex-mini",272000,128000,"text,image",1,null,0.25,2,0.025,0],["gpt-5.2",400000,128000,"text,image",1,null,1.75,14,0.175,0],["gpt-5.2-chat-latest",128000,16384,"text,image",1,null,1.75,14,0.175,0],["gpt-5.2-codex",272000,128000,"text,image",1,null,1.75,14,0.175,0],["gpt-5.2-pro",400000,128000,"text,image",1,null,21,168,0,0],["gpt-5.3-chat-latest",128000,16384,"text,image",0,null,1.75,14,0.175,0],["gpt-5.3-codex",272000,128000,"text,image",1,null,1.75,14,0.175,0],["gpt-5.3-codex-spark",128000,32000,"text,image",1,null,1.75,14,0.175,0],["gpt-5.4",1050000,128000,"text,image",1,null,2.5,15,0.25,0],["gpt-5.4-mini",400000,128000,"text,image",1,null,0.75,4.5,0.075,0],["gpt-5.4-nano",400000,128000,"text,image",1,null,0.2,1.25,0.02,0],["gpt-5.4-pro",1050000,128000,"text,image",1,null,30,180,0,0],["gpt-5.5",1050000,128000,"text,image",1,null,5,30,0.5,0],["gpt-5.5-pro",1050000,128000,"text,image",1,null,30,180,0,0],["gpt-5.6",373000,128000,"text,image",1,null,5,30,0.5,6.25],["gpt-5.6-luna",373000,128000,"text,image",1,null,0.2,1.2,0.02,0.25],["gpt-5.6-sol",373000,128000,"text,image",1,null,5,30,0.5,6.25],["gpt-5.6-terra",373000,128000,"text,image",1,null,2,12,0.2,2.5],["gpt-6-luna",373000,128000,"text,image",1,null,0.1,0.5,0.01,0.125],["gpt-6-sol",373000,128000,"text,image",1,null,2,10,0.2,2.5],["gpt-6.1-sol",373000,128000,"text,image",1,null,2,10,0.1,2.5],["gpt-realtime-2.1",128000,32000,"text,image",1,null,4,24,0.4,0],["o1",200000,100000,"text,image",1,null,15,60,7.5,0],["o1-pro",200000,100000,"text,image",1,null,150,600,0,0],["o3",200000,100000,"text,image",1,null,2,8,0.5,0],["o3-deep-research",200000,100000,"text,image",1,null,10,40,2.5,0],["o3-mini",200000,100000,"text",1,null,1.1,4.4,0.55,0],["o3-pro",200000,100000,"text,image",1,null,20,80,0,0],["o4-mini",200000,100000,"text,image",1,null,1.1,4.4,0.275,0],["o4-mini-deep-research",200000,100000,"text,image",1,null,2,8,0.5,0]],
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
import { homedir } from "node:os";
|
|
23
23
|
import { dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
24
24
|
import { realpathSync } from "node:fs";
|
|
25
|
+
import { fileURLToPath } from "node:url";
|
|
25
26
|
|
|
26
27
|
const GUARD_ENV = "OCX_TEST_HOME_GUARD";
|
|
27
28
|
/**
|
|
@@ -185,16 +186,57 @@ function isInside(parent: string, child: string): boolean {
|
|
|
185
186
|
return rel !== "" && !rel.startsWith("..") && !isAbsolute(rel);
|
|
186
187
|
}
|
|
187
188
|
|
|
189
|
+
let checkoutRootSpellings: readonly string[] | undefined;
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Both spellings of the checkout that loaded this module (`src/lib` -> repository root).
|
|
193
|
+
*
|
|
194
|
+
* Lazy so a production process, which never removes anything through this guard, does no work
|
|
195
|
+
* for it at module load. In a compiled binary the module URL sits under a virtual root, so the
|
|
196
|
+
* result names no real checkout and the exemption below can never apply.
|
|
197
|
+
*/
|
|
198
|
+
function checkoutRoots(): readonly string[] {
|
|
199
|
+
if (checkoutRootSpellings === undefined) {
|
|
200
|
+
let lexical: string | null = null;
|
|
201
|
+
try {
|
|
202
|
+
lexical = resolve(fileURLToPath(new URL("../..", import.meta.url)));
|
|
203
|
+
} catch {
|
|
204
|
+
// A non-file module URL names no checkout: no exemption.
|
|
205
|
+
}
|
|
206
|
+
checkoutRootSpellings = lexical === null ? [] : [...new Set([canonicalize(lexical), lexical])];
|
|
207
|
+
}
|
|
208
|
+
return checkoutRootSpellings;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Whether `candidate` is repository content of a checkout that itself lives inside `protectedPath`.
|
|
213
|
+
*
|
|
214
|
+
* A Codex-app worktree is a checkout under `~/.codex/worktrees/`, and forty suites keep their
|
|
215
|
+
* fixture directory beside the test file. Refusing every path inside `~/.codex` refused those
|
|
216
|
+
* suites' own cleanup, 863 failures in one run, although nothing there is Codex state. The lift
|
|
217
|
+
* is deliberately narrow: it applies to one tree, only when a checkout spelling is strictly
|
|
218
|
+
* inside that tree and the candidate is strictly inside that checkout. The checkout root itself,
|
|
219
|
+
* its ancestors and every sibling stay refused, and a checkout that merely CONTAINS a protected
|
|
220
|
+
* tree (one at `$HOME`, or the virtual root of a compiled build) never qualifies.
|
|
221
|
+
*/
|
|
222
|
+
function isOwnCheckoutContent(protectedPath: string, candidate: string): boolean {
|
|
223
|
+
return checkoutRoots().some(root => isInside(protectedPath, root) && isInside(root, candidate));
|
|
224
|
+
}
|
|
225
|
+
|
|
188
226
|
/**
|
|
189
227
|
* Why removing `target` is refused, or `null` when it is not a protected location.
|
|
190
228
|
*
|
|
191
229
|
* Three relations are refused, not one. Equality alone would still permit
|
|
192
230
|
* `rmSync(getConfigPath())` against a live `config.json`, and it would permit
|
|
193
231
|
* `rmSync(homedir())`, which takes the protected tree with it. So a target is refused when it
|
|
194
|
-
* IS a protected tree, when it sits INSIDE one, or when it is an ANCESTOR of one.
|
|
232
|
+
* IS a protected tree, when it sits INSIDE one, or when it is an ANCESTOR of one. The one lift is
|
|
233
|
+
* content of the running checkout when that checkout lives inside the tree
|
|
234
|
+
* ({@link isOwnCheckoutContent}); it never applies to equality or ancestry.
|
|
195
235
|
*
|
|
196
236
|
* Canonicalization is what makes a symlink useless as a bypass: a temp path that merely points
|
|
197
|
-
* at the real home resolves to the real home before any comparison happens.
|
|
237
|
+
* at the real home resolves to the real home before any comparison happens. Each spelling is
|
|
238
|
+
* judged on its own and any refusal wins, so a link inside the checkout that resolves into the
|
|
239
|
+
* protected tree is refused through its canonical form.
|
|
198
240
|
*/
|
|
199
241
|
export function protectedRemovalReason(target: string): string | null {
|
|
200
242
|
// Both spellings are judged, not just the canonical one. Canonicalization is what defeats a
|
|
@@ -209,7 +251,9 @@ export function protectedRemovalReason(target: string): string | null {
|
|
|
209
251
|
for (const tree of PROTECTED_TREES) {
|
|
210
252
|
for (const protectedPath of [tree.path, tree.lexical]) {
|
|
211
253
|
if (candidate === protectedPath) return `${tree.label} (${protectedPath})`;
|
|
212
|
-
if (isInside(protectedPath, candidate)
|
|
254
|
+
if (isInside(protectedPath, candidate) && !isOwnCheckoutContent(protectedPath, candidate)) {
|
|
255
|
+
return `a path inside ${tree.label} (${protectedPath})`;
|
|
256
|
+
}
|
|
213
257
|
if (isInside(candidate, protectedPath)) return `an ancestor of ${tree.label} (${protectedPath})`;
|
|
214
258
|
}
|
|
215
259
|
}
|
|
@@ -18,6 +18,8 @@ const FAST_WIRE_ADAPTERS: Readonly<Record<FastWire["kind"], ReadonlySet<string>>
|
|
|
18
18
|
// Cursor expresses Fast as a variant dimension of the picked model, resolved in the
|
|
19
19
|
// request builder, so the adapter set is exactly the cursor adapter.
|
|
20
20
|
"cursor-variant": new Set(["cursor"]),
|
|
21
|
+
// Internal xAI OAuth lane switch (xai-fast-model.ts): the OpenAI-family adapters serialize the id.
|
|
22
|
+
"model-variant": SERVICE_TIER_ADAPTERS,
|
|
21
23
|
};
|
|
22
24
|
|
|
23
25
|
const DEFAULT_SERVICE_TIER_FAST_WIRE: FastWire = Object.freeze({
|
|
@@ -437,6 +439,26 @@ export function createAdapterTierMetadata(
|
|
|
437
439
|
};
|
|
438
440
|
}
|
|
439
441
|
|
|
442
|
+
/**
|
|
443
|
+
* The Fast wire an OpenAI-family adapter actually serialized, as `createAdapterTierMetadata`'s last two
|
|
444
|
+
* arguments. A model-variant lane counts only when the observation declares it and the body really carries
|
|
445
|
+
* that id; otherwise the historical service_tier reading applies unchanged.
|
|
446
|
+
*/
|
|
447
|
+
export function emittedFastWire(
|
|
448
|
+
parsed: { _wireModelOverride?: string; options?: { tierObservation?: TierObservationContext } },
|
|
449
|
+
body: unknown,
|
|
450
|
+
): [FastWire["kind"] | null, string | null] {
|
|
451
|
+
const record = body && typeof body === "object" && !Array.isArray(body) ? body as Record<string, unknown> : undefined;
|
|
452
|
+
const variant = parsed._wireModelOverride;
|
|
453
|
+
if (variant !== undefined
|
|
454
|
+
&& parsed.options?.tierObservation?.fastWire?.kind === "model-variant"
|
|
455
|
+
&& record?.model === variant) {
|
|
456
|
+
return ["model-variant", variant];
|
|
457
|
+
}
|
|
458
|
+
const tier = typeof record?.service_tier === "string" ? record.service_tier : null;
|
|
459
|
+
return [tier === null ? null : "service-tier", tier];
|
|
460
|
+
}
|
|
461
|
+
|
|
440
462
|
/** Pure tier state machine. B1 normalizes canonical Fast on classified inherit routes. */
|
|
441
463
|
export function decideTier(
|
|
442
464
|
policy: ResolvedFastPolicy,
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { mutatePersistedConfig } from "../config";
|
|
2
2
|
import { projectModelRenames } from "./model-rename-migration";
|
|
3
3
|
import { projectStaleContextWindows } from "./stale-context-window-migration";
|
|
4
|
+
import { projectStaleModelRosters } from "./stale-model-roster-migration";
|
|
4
5
|
import { projectStaleVisionClassifications } from "./stale-vision-classification-migration";
|
|
5
6
|
import { projectDevinCliAuthMode } from "./devin-cli-authmode-migration";
|
|
6
7
|
import type { OcxConfig } from "../types";
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
|
-
* The startup projection: registry model renames, then the context-window
|
|
10
|
-
*
|
|
10
|
+
* The startup projection: registry model renames, then the context-window, vision-classification
|
|
11
|
+
* and model-roster repairs. Each fixes a saved row the registry can no longer reach on its own —
|
|
11
12
|
* `enrichProviderFromRegistry` backfills a missing field and never rewrites a
|
|
12
13
|
* present one — so they share this pass rather than adding a second boot step
|
|
13
14
|
* with its own persistence, adopt, and failure handling.
|
|
@@ -16,11 +17,12 @@ export function projectStartupConfigRepairs(config: OcxConfig): ReturnType<typeo
|
|
|
16
17
|
const renames = projectModelRenames(config);
|
|
17
18
|
const windows = projectStaleContextWindows(renames.config);
|
|
18
19
|
const vision = projectStaleVisionClassifications(windows.config);
|
|
19
|
-
const
|
|
20
|
+
const rosters = projectStaleModelRosters(vision.config);
|
|
21
|
+
const devinCli = projectDevinCliAuthMode(rosters.config);
|
|
20
22
|
return {
|
|
21
23
|
config: devinCli.config,
|
|
22
|
-
changed: renames.changed || windows.changed || vision.changed || devinCli.changed,
|
|
23
|
-
warnings: [...renames.warnings, ...windows.warnings, ...vision.warnings, ...devinCli.warnings],
|
|
24
|
+
changed: renames.changed || windows.changed || vision.changed || rosters.changed || devinCli.changed,
|
|
25
|
+
warnings: [...renames.warnings, ...windows.warnings, ...vision.warnings, ...rosters.warnings, ...devinCli.warnings],
|
|
24
26
|
};
|
|
25
27
|
}
|
|
26
28
|
|
|
@@ -267,12 +267,14 @@ export const PROVIDER_REGISTRY_CORE: readonly ProviderRegistryEntry[] = [
|
|
|
267
267
|
// 260813: grok-4.6 added per docs.x.ai/developers/grok-4-6. Context/vision still match
|
|
268
268
|
// grok-4.5; the reasoning ladder does not — 4.6 adds the documented xhigh rung.
|
|
269
269
|
models: XAI_MODELS,
|
|
270
|
-
// grok-4.7-build-fast arrives only through OAuth discovery
|
|
271
|
-
//
|
|
272
|
-
//
|
|
273
|
-
//
|
|
274
|
-
//
|
|
275
|
-
//
|
|
270
|
+
// grok-4.7-build-fast arrives only through OAuth discovery: xAI's Grok 4.7 Fast, "the same model
|
|
271
|
+
// served on faster infrastructure" (docs.x.ai/developers/grok-4-7). Probed 2026-09-30
|
|
272
|
+
// (devlog/_plan/260930_grok47_build_unify/010_probe-evidence.md): identical effort ladder, image
|
|
273
|
+
// input, 500k limit and advertised defaults, 1.5-1.7x faster, ~2x the ticks per output token. It is
|
|
274
|
+
// not a second model row: shouldExposeProviderModel hides it, and grok-4.7's Fast selection on OAuth
|
|
275
|
+
// serializes it (src/providers/xai-fast-model.ts). It keeps grok-4.7's facts in the lists below so an
|
|
276
|
+
// explicit legacy request still works, plus the probed OAuth Responses wire. No service-tier claim:
|
|
277
|
+
// priority multiplied its ticks ~5.9x for no measured gain.
|
|
276
278
|
// Live 2026-09-20: Chat Completions rejects `stop` on grok-4.6
|
|
277
279
|
// (`400 invalid-argument "Model grok-4.6 does not support parameter stop."`).
|
|
278
280
|
// xAI documents `stop` as unsupported for reasoning models. Claude Code
|
|
@@ -329,6 +331,11 @@ export const PROVIDER_REGISTRY_CORE: readonly ProviderRegistryEntry[] = [
|
|
|
329
331
|
inbound: ["responses"],
|
|
330
332
|
authModes: ["oauth"],
|
|
331
333
|
},
|
|
334
|
+
"grok-4.7-build-fast": {
|
|
335
|
+
wire: "openai-responses",
|
|
336
|
+
inbound: ["responses"],
|
|
337
|
+
authModes: ["oauth"],
|
|
338
|
+
},
|
|
332
339
|
"grok-4.6": {
|
|
333
340
|
wire: "openai-responses",
|
|
334
341
|
inbound: ["responses"],
|