@wenathlan/devthink 2.0.14 → 2.0.19
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/CHANGELOG.md +60 -0
- package/{dist/bridge.d.ts → bridge.d.ts} +1 -1
- package/bridge.d.ts.map +1 -0
- package/bridge.js +1877 -0
- package/bun.d.ts.map +1 -0
- package/bun.js +52329 -0
- package/caps/background.json +712 -0
- package/caps/cli.json +360 -0
- package/caps/library.json +3611 -0
- package/caps/mcp.json +126 -0
- package/caps/pagebridge.json +377 -0
- package/caps/popup.json +51 -0
- package/caps/sidepanel.json +522 -0
- package/checksums.txt +142 -0
- package/cli.d.ts.map +1 -0
- package/{dist/cli.js → cli.js} +2 -2
- package/companion.d.ts.map +1 -0
- package/companion.js +389 -0
- package/crossbrowser.d.ts.map +1 -0
- package/crossbrowser.js +1191 -0
- package/dashdone.d.ts.map +1 -0
- package/dashdone.js +368 -0
- package/deno.d.ts.map +1 -0
- package/deno.js +52325 -0
- package/devthink.umd.js +52346 -0
- package/fixtures/bun.ts +7 -0
- package/fixtures/cjs.js +6 -0
- package/fixtures/deno.ts +6 -0
- package/fixtures/example-org-pagestate.json +22 -0
- package/fixtures/importers/automa-workflow.json +18 -0
- package/fixtures/importers/selenium-side.json +20 -0
- package/fixtures/importers/tabular-plan.csv +7 -0
- package/fixtures/importers/uivision-macro.json +10 -0
- package/fixtures/importers/v1-plan.json +13 -0
- package/fixtures/mcp-client.mjs +14 -0
- package/fixtures/pages/checkout.html +192 -0
- package/fixtures/pages/dashboard.html +110 -0
- package/fixtures/pages/feed.html +113 -0
- package/fixtures/pages/product-grid.html +150 -0
- package/fixtures/plans/form-inventory-plan.json +11 -0
- package/fixtures/plans/release-notes-plan.json +11 -0
- package/fixtures/recipes/agentscompete.json +11 -0
- package/fixtures/recipes/agentsforms.json +11 -0
- package/fixtures/recipes/agentsmonitor.json +11 -0
- package/fixtures/recipes/agentsreview.json +29 -0
- package/fixtures/recipes/agentswarm.json +11 -0
- package/fixtures/recipes/fillcalendar.json +12 -0
- package/fixtures/recipes/fillcheckout.json +13 -0
- package/fixtures/recipes/filldependentdropdowns.json +12 -0
- package/fixtures/recipes/fillfromcsv.json +13 -0
- package/fixtures/recipes/fillloginform.json +12 -0
- package/fixtures/recipes/fillmultistepwizard.json +13 -0
- package/fixtures/recipes/fillregistration.json +12 -0
- package/fixtures/recipes/fillsearchfilters.json +12 -0
- package/fixtures/recipes/filltypeahead.json +11 -0
- package/fixtures/recipes/monitoralerts.json +12 -0
- package/fixtures/recipes/monitoravailability.json +11 -0
- package/fixtures/recipes/monitornetworkquiet.json +12 -0
- package/fixtures/recipes/monitorpagechanges.json +11 -0
- package/fixtures/recipes/monitorpricechange.json +11 -0
- package/fixtures/recipes/monitorschedule.json +12 -0
- package/fixtures/recipes/scrapedynamicprices.json +13 -0
- package/fixtures/recipes/scrapeimagegallery.json +12 -0
- package/fixtures/recipes/scrapeinfinitefeed.json +13 -0
- package/fixtures/recipes/scrapenestedlists.json +12 -0
- package/fixtures/recipes/scrapeproductgrid.json +12 -0
- package/fixtures/recipes/scrapereviews.json +12 -0
- package/fixtures/recipes/scrapesearchresults.json +12 -0
- package/fixtures/recipes/scrapetablepagination.json +12 -0
- package/fixtures/recipes/testaccessibility.json +34 -0
- package/fixtures/recipes/testconsoleerrors.json +12 -0
- package/fixtures/recipes/testdeeplinks.json +12 -0
- package/fixtures/recipes/testformvalidation.json +13 -0
- package/fixtures/recipes/testlayoutshift.json +12 -0
- package/fixtures/recipes/testlinkcheck.json +12 -0
- package/fixtures/recipes/testloadtiming.json +12 -0
- package/fixtures/recipes/testvisualdiff.json +12 -0
- package/fixtures/workflows/changelog-digest-workflow.json +13 -0
- package/fixtures/workflows/form-survey-workflow.json +13 -0
- package/gallery.json +706 -0
- package/hardening.d.ts.map +1 -0
- package/hardening.js +188 -0
- package/headless.d.ts.map +1 -0
- package/headless.js +11522 -0
- package/http.d.ts.map +1 -0
- package/http.js +2165 -0
- package/index.cjs +54682 -0
- package/index.d.ts.map +1 -0
- package/index.js +52310 -0
- package/index.neutral.js +46343 -0
- package/{web/manifest.json → manifest.json} +1 -1
- package/mcp.d.ts.map +1 -0
- package/mcp.js +20515 -0
- package/memory.d.ts.map +1 -0
- package/{memory.ts → memory.js} +2310 -3834
- package/nativehost.template.json +10 -0
- package/node.cjs +54686 -0
- package/node.d.ts.map +1 -0
- package/pack.d.ts.map +1 -0
- package/pack.js +805 -0
- package/package.json +83 -176
- package/policy.d.ts.map +1 -0
- package/{policy.ts → policy.js} +4679 -5073
- package/progress.d.ts.map +1 -0
- package/progress.js +645 -0
- package/protocol.d.ts.map +1 -0
- package/protocol.js +8334 -0
- package/schemas/audit.schema.json +226 -0
- package/schemas/capability.schema.json +113 -0
- package/schemas/envelope.schema.json +162 -0
- package/schemas/memory.schema.json +51 -0
- package/schemas/observation.schema.json +113 -0
- package/schemas/plan.schema.json +208 -0
- package/schemas/progress.schema.json +126 -0
- package/schemas/proposal.schema.json +68 -0
- package/schemas/session.schema.json +82 -0
- package/schemas/tool.schema.json +94 -0
- package/server.d.ts.map +1 -0
- package/server.js +28877 -0
- package/umd-example.html +18 -0
- package/umd.d.ts.map +1 -0
- package/accounts.ts +0 -2087
- package/agent.ts +0 -2331
- package/antigravity.ts +0 -2139
- package/apifreeze.ts +0 -4146
- package/auth.ts +0 -642
- package/background.ts +0 -16837
- package/bridge.ts +0 -2080
- package/build.ts +0 -54
- package/bun.ts +0 -26
- package/capture.ts +0 -1614
- package/checksecrets.ts +0 -72
- package/cjs.ts +0 -9
- package/cli.ts +0 -3500
- package/commands.ts +0 -1101
- package/companion.ts +0 -450
- package/compatibility.ts +0 -37
- package/config.ts +0 -3137
- package/constants.ts +0 -943
- package/core.ts +0 -1473
- package/crossbrowser.ts +0 -1359
- package/dashdone.ts +0 -605
- package/data.ts +0 -943
- package/database.ts +0 -133
- package/debug.ts +0 -850
- package/deno.ts +0 -27
- package/devthink.ts +0 -707
- package/dist/accounts.d.ts +0 -409
- package/dist/agent.d.ts +0 -837
- package/dist/antigravity.d.ts +0 -380
- package/dist/apifreeze.d.ts +0 -113
- package/dist/auth.d.ts +0 -224
- package/dist/capture.d.ts +0 -595
- package/dist/cjs.d.ts +0 -6
- package/dist/commands.d.ts +0 -310
- package/dist/compatibility.d.ts +0 -17
- package/dist/config.d.ts +0 -1853
- package/dist/constants.d.ts +0 -637
- package/dist/core.d.ts +0 -361
- package/dist/data.d.ts +0 -330
- package/dist/database.d.ts +0 -24
- package/dist/debug.d.ts +0 -270
- package/dist/engine.d.ts +0 -74
- package/dist/environments.d.ts +0 -244
- package/dist/evidence.d.ts +0 -277
- package/dist/export.d.ts +0 -311
- package/dist/fingerprint.d.ts +0 -594
- package/dist/flow.d.ts +0 -300
- package/dist/gates.d.ts +0 -103
- package/dist/identity.d.ts +0 -51
- package/dist/ids.d.ts +0 -7
- package/dist/llm.d.ts +0 -652
- package/dist/models.d.ts +0 -1807
- package/dist/net.d.ts +0 -325
- package/dist/neutral.d.ts +0 -41
- package/dist/oauth.d.ts +0 -703
- package/dist/page.d.ts +0 -1166
- package/dist/perf.d.ts +0 -481
- package/dist/plan.d.ts +0 -134
- package/dist/project.d.ts +0 -395
- package/dist/providers.d.ts +0 -37
- package/dist/quota.d.ts +0 -453
- package/dist/recovery.d.ts +0 -621
- package/dist/request.d.ts +0 -1492
- package/dist/run.d.ts +0 -779
- package/dist/runtime.d.ts +0 -212
- package/dist/search.d.ts +0 -375
- package/dist/security.d.ts +0 -534
- package/dist/serve.d.ts +0 -136
- package/dist/session.d.ts +0 -296
- package/dist/storage.d.ts +0 -53
- package/dist/streaming.d.ts +0 -1119
- package/dist/swarm.d.ts +0 -328
- package/dist/tools.d.ts +0 -170
- package/dist/types.d.ts +0 -8357
- package/dist/utils.d.ts +0 -82
- package/dist/version.d.ts +0 -7
- package/dist/versionregistry.d.ts +0 -406
- package/dist/views.d.ts +0 -579
- package/dist/workbenchsession.d.ts +0 -69
- package/dist/workflow.d.ts +0 -649
- package/docs/readme.md +0 -92
- package/docs/schemas/antigravity.json +0 -192
- package/engine.ts +0 -1524
- package/environments.ts +0 -1005
- package/evidence.ts +0 -643
- package/export.ts +0 -889
- package/fingerprint.ts +0 -1458
- package/flow.ts +0 -1190
- package/gates.ts +0 -307
- package/gateway.ts +0 -34
- package/hardening.ts +0 -191
- package/headless.ts +0 -369
- package/http.ts +0 -2110
- package/identity.ts +0 -246
- package/ids.ts +0 -26
- package/index.ts +0 -369
- package/llm.ts +0 -2682
- package/mcp.ts +0 -1835
- package/models.ts +0 -3805
- package/modes.ts +0 -43
- package/net.ts +0 -1214
- package/neutral.ts +0 -362
- package/node.ts +0 -26
- package/oauth.ts +0 -2216
- package/offscreen.ts +0 -170
- package/pack.ts +0 -956
- package/page.ts +0 -7824
- package/pagebridge.ts +0 -1116
- package/perf.ts +0 -957
- package/plan.ts +0 -672
- package/plugin.ts +0 -76
- package/prisma.config.ts +0 -27
- package/progress.ts +0 -1308
- package/project.ts +0 -1291
- package/protocol.ts +0 -4187
- package/providers.ts +0 -246
- package/quota.ts +0 -1887
- package/recovery.ts +0 -2433
- package/request.ts +0 -4482
- package/run.ts +0 -2135
- package/runtime.ts +0 -526
- package/search.ts +0 -1760
- package/security.ts +0 -1673
- package/serve.ts +0 -419
- package/server.ts +0 -5538
- package/session.ts +0 -1162
- package/storage.ts +0 -182
- package/streaming.ts +0 -4101
- package/swarm.ts +0 -884
- package/sync.ts +0 -56
- package/tests/agentcert.test.ts +0 -128
- package/tests/agentfleet.test.ts +0 -214
- package/tests/agentreview.test.ts +0 -241
- package/tests/agentstream.test.ts +0 -335
- package/tests/agentwork.test.ts +0 -356
- package/tests/apifreeze.test.ts +0 -290
- package/tests/apimap.test.ts +0 -112
- package/tests/approvalgate.test.ts +0 -175
- package/tests/artifactmanifest.test.ts +0 -204
- package/tests/attentionfeed.test.ts +0 -163
- package/tests/backgroundruns.test.ts +0 -100
- package/tests/batchscheduling.test.ts +0 -131
- package/tests/blackboard.test.ts +0 -238
- package/tests/bridge.test.ts +0 -1088
- package/tests/browsercoverage.test.ts +0 -134
- package/tests/browserpolyfills.test.ts +0 -124
- package/tests/build.mjs +0 -1260
- package/tests/clientauth.test.ts +0 -223
- package/tests/clitools.test.ts +0 -578
- package/tests/confirmgates.test.ts +0 -190
- package/tests/containerpack.test.ts +0 -143
- package/tests/controlflow.test.ts +0 -2120
- package/tests/coordination.test.ts +0 -345
- package/tests/copyscreen.test.ts +0 -139
- package/tests/core.test.ts +0 -417
- package/tests/costcert.test.ts +0 -95
- package/tests/crossbrowser.test.ts +0 -115
- package/tests/cspaudit.test.ts +0 -79
- package/tests/dashdone.test.ts +0 -615
- package/tests/datagrid.test.ts +0 -137
- package/tests/doccheck.test.ts +0 -107
- package/tests/dombatch.test.ts +0 -109
- package/tests/emulation.test.ts +0 -282
- package/tests/environments.test.ts +0 -259
- package/tests/evidenceviews.test.ts +0 -88
- package/tests/exporttools.test.ts +0 -185
- package/tests/firefoxprep.test.ts +0 -134
- package/tests/flowlibrary.test.ts +0 -242
- package/tests/flowrun.test.ts +0 -303
- package/tests/forensics.test.ts +0 -439
- package/tests/gateway.test.ts +0 -939
- package/tests/headlesslib.test.ts +0 -171
- package/tests/httpstream.test.ts +0 -277
- package/tests/immutablelog.test.ts +0 -157
- package/tests/inboundguard.test.ts +0 -177
- package/tests/lazyload.test.ts +0 -72
- package/tests/librarymodes.test.ts +0 -623
- package/tests/llm.test.ts +0 -696
- package/tests/manifest.test.ts +0 -226
- package/tests/maskinputs.test.ts +0 -150
- package/tests/matrixverify.test.ts +0 -111
- package/tests/mavenpack.test.ts +0 -75
- package/tests/mcpserver.test.ts +0 -704
- package/tests/memory.test.ts +0 -4155
- package/tests/memorycare.test.ts +0 -230
- package/tests/migrateplan.test.ts +0 -349
- package/tests/minimization.test.ts +0 -414
- package/tests/modelroute.test.ts +0 -112
- package/tests/multiagent.test.ts +0 -440
- package/tests/nativebridge.test.ts +0 -807
- package/tests/navigation.test.ts +0 -284
- package/tests/nugetpack.test.ts +0 -83
- package/tests/orchestration.test.ts +0 -449
- package/tests/originpolicy.test.ts +0 -405
- package/tests/outputcompare.test.ts +0 -97
- package/tests/package.test.ts +0 -91
- package/tests/pagebridge.test.ts +0 -5909
- package/tests/pentest.test.ts +0 -75
- package/tests/perfrecords.test.ts +0 -257
- package/tests/permdiff.test.ts +0 -85
- package/tests/phishguard.test.ts +0 -128
- package/tests/pickerviews.test.ts +0 -155
- package/tests/pipelines.test.ts +0 -381
- package/tests/planlint.test.ts +0 -240
- package/tests/planreview.test.ts +0 -383
- package/tests/platformtargets.test.ts +0 -56
- package/tests/policy.test.ts +0 -8284
- package/tests/portability.test.ts +0 -96
- package/tests/progress.test.ts +0 -1036
- package/tests/promptlibrary.test.ts +0 -116
- package/tests/protocol.test.ts +0 -4793
- package/tests/publishingpipeline.test.ts +0 -314
- package/tests/quickactions.test.ts +0 -164
- package/tests/readiness.test.ts +0 -78
- package/tests/recipes.test.ts +0 -163
- package/tests/redactshots.test.ts +0 -216
- package/tests/registernvidiakeys.ts +0 -51
- package/tests/relayserve.test.ts +0 -304
- package/tests/releasenotes.test.ts +0 -276
- package/tests/resilience.test.ts +0 -467
- package/tests/resourceaware.test.ts +0 -187
- package/tests/runbudget.test.ts +0 -125
- package/tests/runhistory.test.ts +0 -299
- package/tests/runreplay.test.ts +0 -113
- package/tests/runresume.test.ts +0 -184
- package/tests/runstate.test.ts +0 -288
- package/tests/runtimeadapters.test.ts +0 -251
- package/tests/safariskeleton.test.ts +0 -115
- package/tests/sandboxframe.test.ts +0 -196
- package/tests/sbom.test.ts +0 -105
- package/tests/secretvault.test.ts +0 -188
- package/tests/selcache.test.ts +0 -111
- package/tests/sessioninterface.test.ts +0 -791
- package/tests/sessions.test.ts +0 -591
- package/tests/siteprefs.test.ts +0 -228
- package/tests/snapshotdelta.test.ts +0 -165
- package/tests/statusviews.test.ts +0 -237
- package/tests/stepmeter.test.ts +0 -200
- package/tests/streamparse.test.ts +0 -163
- package/tests/stylepruning.test.ts +0 -90
- package/tests/surfaces.test.ts +0 -282
- package/tests/sweep.test.ts +0 -78
- package/tests/syncbridge.test.ts +0 -164
- package/tests/taskqueue.test.ts +0 -206
- package/tests/toolcalls.test.ts +0 -336
- package/tests/toolcatalog.test.ts +0 -201
- package/tests/torture-agent.test.ts +0 -706
- package/tests/torture-auth.test.ts +0 -461
- package/tests/torture-commands.test.ts +0 -895
- package/tests/torture-data.test.ts +0 -923
- package/tests/torture-environments.test.ts +0 -285
- package/tests/torture-export.test.ts +0 -263
- package/tests/torture-http.test.ts +0 -1379
- package/tests/torture-llm.test.ts +0 -808
- package/tests/torture-memory.test.ts +0 -1084
- package/tests/torture-plan.test.ts +0 -829
- package/tests/torture-run.test.ts +0 -626
- package/tests/torture-session.test.ts +0 -928
- package/tests/torture-swarm.test.ts +0 -1245
- package/tests/torture-tools.test.ts +0 -964
- package/tests/torture-workflow.test.ts +0 -2354
- package/tests/tourviews.test.ts +0 -52
- package/tests/transparency.test.ts +0 -147
- package/tests/trigger.test.ts +0 -941
- package/tests/v1sunset.test.ts +0 -428
- package/tests/virtlist.test.ts +0 -94
- package/tests/vision.test.ts +0 -540
- package/tests/vsixpack.test.ts +0 -145
- package/tests/webapi.test.ts +0 -523
- package/tests/workflow.test.ts +0 -1785
- package/tests/workfloweditor.test.ts +0 -759
- package/tests/xpipack.test.ts +0 -128
- package/tools.ts +0 -734
- package/types.ts +0 -9908
- package/umd.ts +0 -9
- package/utils.ts +0 -249
- package/version.ts +0 -8
- package/versionregistry.ts +0 -1310
- package/views.ts +0 -2153
- package/vitest.config.ts +0 -12
- package/web/App.tsx +0 -78
- package/web/README.md +0 -47
- package/web/capacitor.config.ts +0 -46
- package/web/const.ts +0 -19
- package/web/control.shell.tsx +0 -66
- package/web/dashboardpage.ts +0 -554
- package/web/db.ts +0 -493
- package/web/design.html +0 -541
- package/web/gatewayview/Gateway.tsx +0 -345
- package/web/gatewayview/config.ts +0 -1042
- package/web/gatewayview/definition.ts +0 -174
- package/web/icons.ts +0 -15
- package/web/optionspage.ts +0 -691
- package/web/popup.ts +0 -1651
- package/web/schema.prisma +0 -176
- package/web/sidepanel.ts +0 -7941
- package/web/sitemanifest.json +0 -13
- package/web/terminal-ui.tsx +0 -622
- package/web/transparencypage.ts +0 -541
- package/web/vite.config.ts +0 -39
- package/web/workspace.ts +0 -23
- package/workbenchmemory.ts +0 -104
- package/workbenchsession.ts +0 -304
- package/workflow.ts +0 -4495
- /package/{dist/bun.d.ts → bun.d.ts} +0 -0
- /package/{dist/cli.d.ts → cli.d.ts} +0 -0
- /package/{dist/companion.d.ts → companion.d.ts} +0 -0
- /package/{dist/crossbrowser.d.ts → crossbrowser.d.ts} +0 -0
- /package/{dist/dashdone.d.ts → dashdone.d.ts} +0 -0
- /package/{dist/deno.d.ts → deno.d.ts} +0 -0
- /package/{dist/hardening.d.ts → hardening.d.ts} +0 -0
- /package/{dist/headless.d.ts → headless.d.ts} +0 -0
- /package/{dist/http.d.ts → http.d.ts} +0 -0
- /package/{dist/index.d.ts → index.d.ts} +0 -0
- /package/{dist/mcp.d.ts → mcp.d.ts} +0 -0
- /package/{dist/memory.d.ts → memory.d.ts} +0 -0
- /package/{dist/node.d.ts → node.d.ts} +0 -0
- /package/{dist/pack.d.ts → pack.d.ts} +0 -0
- /package/{dist/policy.d.ts → policy.d.ts} +0 -0
- /package/{dist/progress.d.ts → progress.d.ts} +0 -0
- /package/{dist/protocol.d.ts → protocol.d.ts} +0 -0
- /package/{dist/server.d.ts → server.d.ts} +0 -0
- /package/{dist/umd.d.ts → umd.d.ts} +0 -0
package/models.ts
DELETED
|
@@ -1,3805 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file models.ts
|
|
3
|
-
* @module provider/models
|
|
4
|
-
* @description
|
|
5
|
-
* Third-person observer view - library-first root-first, production-ready.
|
|
6
|
-
* Complete merged model catalog frozen at 25/08/2026.
|
|
7
|
-
*
|
|
8
|
-
* v2.1.15 Phase A consolidation (models + project domain merge):
|
|
9
|
-
* this file is now THE single owner of every model-identification family —
|
|
10
|
-
* catalogs (MODELS_2026, MODELS_2026_BASE, MODELS_2026_08_25,
|
|
11
|
-
* ALL_MODELS_2026, ANTIGRAVITY_MODELS_2026, ANTIGRAVITY_MODELS,
|
|
12
|
-
* ANTIGRAVITY_MODEL_IDS_2026, GEMINI_CLI_ONLY_MODELS, BYPASS/SUPPORTED/
|
|
13
|
-
* LEGACY lists), types (ModelDefinition, LegacyModelDefinition,
|
|
14
|
-
* AntigravityModelDefinition, Model2026, ModelId2026, ThinkingLevel),
|
|
15
|
-
* classifiers (isGeminiCLIOnlyModel, isCLIOnly, isThinkingModel,
|
|
16
|
-
* isImageModel, isImageGenModel, normalizeModelId, mapModelToGroup),
|
|
17
|
-
* thinking tables (THINKING_LEVELS, THINKING_BUDGET_MAP, ceilings),
|
|
18
|
-
* search/default model ids (SEARCH_MODEL*, DEFAULT_MODEL), image-gen
|
|
19
|
-
* helpers (buildImageGenConfig) and endpoint routing constants
|
|
20
|
-
* (CODE_ASSIST_ENDPOINTS host map + ENDPOINT_ORDER* derived from the
|
|
21
|
-
* constants.ts ENDPOINTS raw map, getEndpointsForModel, endpointsForModel).
|
|
22
|
-
* The project-discovery block that used to live here (loadCodeAssist,
|
|
23
|
-
* onboardUser, project-id caches, resolveProjectId*) relocated to
|
|
24
|
-
* project.ts — this module is completely project-free.
|
|
25
|
-
*
|
|
26
|
-
* v2.1.16 single-owner fix: absorbed the cli.ts MODELS_2026_CATALOG family
|
|
27
|
-
* (the 8-entry rich provider catalog + ModelCatalogEntry interface) — cli.ts
|
|
28
|
-
* imports and re-exports them under the historical names.
|
|
29
|
-
*
|
|
30
|
-
* MERGED CATALOG - superset of every previous duplicate:
|
|
31
|
-
* - Base schema: rich ModelDefinition catalog (models-2026.ts lineage).
|
|
32
|
-
* - Added every missing id from the flat catalogs:
|
|
33
|
-
* whole gemini-3.7-flash family (GA Aug 13 2026): gemini-3.7-flash,
|
|
34
|
-
* -high, -low, -medium, -tiered, -preview, -minimal,
|
|
35
|
-
* antigravity-gemini-3.7-flash, antigravity-gemini-3.7-flash-high;
|
|
36
|
-
* antigravity-gemini-3.6-flash(-high), antigravity-gemini-3.5-flash,
|
|
37
|
-
* antigravity-claude-sonnet-4-6, antigravity-claude-opus-4-6-thinking,
|
|
38
|
-
* antigravity-gemini-3.1-flash-image, antigravity-gpt-oss-120b-medium/-high,
|
|
39
|
-
* claude-sonnet-4-6, claude-opus-4-6, claude-sonnet-4-6-thinking,
|
|
40
|
-
* gemini-2.5-pro-preview, gemini-3.5-flash-low/-preview,
|
|
41
|
-
* gemini-3.6-flash-minimal/-preview, gemini-3.7-flash-minimal, gpt-oss-120b.
|
|
42
|
-
* - Ported flat-catalog exports: MODELS_2026_08_25 (modelDef[]),
|
|
43
|
-
* ALL_MODELS_WITH_PREFIX, ANTIGRAVITY_MODELS, GEMINICLI_MODELS, isCLIOnly,
|
|
44
|
-
* DEFAULT_MODEL, SEARCH_MODEL, FALLBACKS, modelDef/thinkingVariant and
|
|
45
|
-
* ModelDef/ThinkingVariant types.
|
|
46
|
-
*
|
|
47
|
-
* The observer watched:
|
|
48
|
-
* - opencode.txt timeline (original repo + 5 waves) showing ban of antagravity/1.11.5,
|
|
49
|
-
* dynamic version fallback to 1.19.2, and requirement of direct cloudcode-pa
|
|
50
|
-
* without localhost v1 proxy.
|
|
51
|
-
* - Gemini CLI binary behavior for Project ID bypass: it NEVER sets
|
|
52
|
-
* x-goog-user-project, calls v1internal:loadCodeAssist directly on
|
|
53
|
-
* https://cloudcode-pa.googleapis.com to obtain cloudaicompanionProject,
|
|
54
|
-
* falls back to onboardUser tier FREE, then loadCodeAssist again.
|
|
55
|
-
* For gemini-3+ / preview models it MUST skip SANDBOX to avoid 403/404 cascade
|
|
56
|
-
* (issue #233, pi-mono #1830).
|
|
57
|
-
* - pi-antigravity-auth: reference implementation of bypass via loadCodeAssist
|
|
58
|
-
* + stripped headers, compatible with 9router and OmniRoute routing layers.
|
|
59
|
-
* - 9router (github.com/9router): model routing table that maps logical ids like
|
|
60
|
-
* gemini-3.6-flash-high to physical cloudcode-pa endpoints.
|
|
61
|
-
* - OmniRoute: layer that decides group antigravity vs gemini-cli and endpoint order.
|
|
62
|
-
* - Wikipedia timeline:
|
|
63
|
-
* - Gemini 2.5 Pro - Dec 10 2025
|
|
64
|
-
* - Gemini 3 family - Feb 12 2026
|
|
65
|
-
* - Gemini 3.1 Pro - Feb 19 2026 [Wikipedia Gemini 3.1 Pro Feb 19 2026]
|
|
66
|
-
* - Gemini 3.6 Flash family - July 21 2026 [Wikipedia Gemini 3.6 Flash July 21 2026]
|
|
67
|
-
* - Gemini 3.7 Flash GA - Aug 13 2026
|
|
68
|
-
* - Catalog freeze - Aug 25 2026 - this file.
|
|
69
|
-
*
|
|
70
|
-
* Constraints:
|
|
71
|
-
* - Only node:* builtins + global fetch (Node >=18). Zero external deps.
|
|
72
|
-
* - Direct cloudcode-pa: PROD https://cloudcode-pa.googleapis.com,
|
|
73
|
-
* DAILY https://daily-cloudcode-pa.googleapis.com,
|
|
74
|
-
* SANDBOX https://daily-cloudcode-pa.sandbox.googleapis.com,
|
|
75
|
-
* AUTOPUSH https://autopush-cloudcode-pa.sandbox.googleapis.com
|
|
76
|
-
* - No localhost v1 proxy (explicit WAVE 5 requirement).
|
|
77
|
-
* - Project ID bypass exactly as Gemini CLI would act.
|
|
78
|
-
*
|
|
79
|
-
* Model metadata:
|
|
80
|
-
* - context window: Gemini 1048576, Claude/GPT-OSS 200000
|
|
81
|
-
* - output limit: Gemini 65535, Claude/GPT-OSS 64000
|
|
82
|
-
* - thinkingLevel variants: minimal/low/medium/high/tiered/max
|
|
83
|
-
* - group: antigravity vs gemini-cli
|
|
84
|
-
* - provider: google (routed via google cloudaicompanion), with originalProvider hint
|
|
85
|
-
* - modalities: input [text,image,pdf], output [text] or [text,image] for image models
|
|
86
|
-
* - bilingual pt/en description
|
|
87
|
-
* - isPreview flag for -preview / -lite-preview models
|
|
88
|
-
* - aliases for OmniRoute / 9router compatibility
|
|
89
|
-
*
|
|
90
|
-
* @author devthink
|
|
91
|
-
* @license MIT
|
|
92
|
-
* @version 3.0.0
|
|
93
|
-
* @date 2026-08-25
|
|
94
|
-
* @references pi-antigravity-auth, 9router, OmniRoute,
|
|
95
|
-
* Wikipedia Gemini 3.1 Pro Feb 19 2026,
|
|
96
|
-
* Wikipedia Gemini 3.6 Flash July 21 2026
|
|
97
|
-
*/
|
|
98
|
-
|
|
99
|
-
import { createHash, randomInt } from "node:crypto";
|
|
100
|
-
import { platform as osPlatform, arch as osArch } from "node:os";
|
|
101
|
-
// v2.1.15 Phase A: models.ts owns every model substrate locally (flat id
|
|
102
|
-
// lists, rich definition lists, the v1 routing catalog). Only generic
|
|
103
|
-
// non-model constants come from constants.ts (layer 0).
|
|
104
|
-
import { fnv1a32 } from "./core.js";
|
|
105
|
-
import {
|
|
106
|
-
ANTIGRAVITY_USER_AGENT_FALLBACK,
|
|
107
|
-
ANTIGRAVITY_VERSION_FALLBACK,
|
|
108
|
-
CODE_ASSIST_PATH_MAP,
|
|
109
|
-
ENDPOINTS,
|
|
110
|
-
FNV_OFFSET_BASIS,
|
|
111
|
-
FNV_PRIME,
|
|
112
|
-
PROJECT_FALLBACK,
|
|
113
|
-
} from "./constants.js";
|
|
114
|
-
import type { AntigravityVersion, CodeAssistEndpointPath, QuotaGroup } from "./constants.js";
|
|
115
|
-
|
|
116
|
-
// ===========================================================================
|
|
117
|
-
// Raw model substrates (v2.1.15 Phase A — moved from constants.ts so that
|
|
118
|
-
// model identification lives ONLY in models.ts; values byte-identical)
|
|
119
|
-
// ===========================================================================
|
|
120
|
-
|
|
121
|
-
// ---------------------------------------------------------------------------
|
|
122
|
-
// Models 2026-08-25 — complete taxonomy
|
|
123
|
-
// ---------------------------------------------------------------------------
|
|
124
|
-
// Gemini 3.6 Flash
|
|
125
|
-
export const GEMINI_36_MODELS = [
|
|
126
|
-
"gemini-3.6-flash-high",
|
|
127
|
-
"gemini-3.6-flash-medium",
|
|
128
|
-
"gemini-3.6-flash-low",
|
|
129
|
-
"gemini-3.6-flash-tiered",
|
|
130
|
-
"gemini-3.6-flash",
|
|
131
|
-
"antigravity-gemini-3.6-flash-high",
|
|
132
|
-
"antigravity-gemini-3.6-flash-medium",
|
|
133
|
-
"antigravity-gemini-3.6-flash-low",
|
|
134
|
-
"antigravity-gemini-3.6-flash-tiered",
|
|
135
|
-
"antigravity-gemini-3.6-flash",
|
|
136
|
-
] as const;
|
|
137
|
-
|
|
138
|
-
export const GEMINI_36_MODEL_DEFINITIONS: readonly AntigravityModelDefinition[] = [
|
|
139
|
-
{
|
|
140
|
-
id: "gemini-3.6-flash-high",
|
|
141
|
-
displayName: "Gemini 3.6 Flash High",
|
|
142
|
-
group: "antigravity",
|
|
143
|
-
contextWindow: 1_048_576,
|
|
144
|
-
outputLimit: 65_535,
|
|
145
|
-
supportsThinking: true,
|
|
146
|
-
supportsTools: true,
|
|
147
|
-
supportsVision: true,
|
|
148
|
-
isPreview: false,
|
|
149
|
-
isClaude: false,
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
id: "gemini-3.6-flash-medium",
|
|
153
|
-
displayName: "Gemini 3.6 Flash Medium",
|
|
154
|
-
group: "antigravity",
|
|
155
|
-
contextWindow: 1_048_576,
|
|
156
|
-
outputLimit: 65_535,
|
|
157
|
-
supportsThinking: true,
|
|
158
|
-
supportsTools: true,
|
|
159
|
-
supportsVision: true,
|
|
160
|
-
isPreview: false,
|
|
161
|
-
isClaude: false,
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
id: "gemini-3.6-flash-low",
|
|
165
|
-
displayName: "Gemini 3.6 Flash Low",
|
|
166
|
-
group: "antigravity",
|
|
167
|
-
contextWindow: 1_048_576,
|
|
168
|
-
outputLimit: 65_535,
|
|
169
|
-
supportsThinking: false,
|
|
170
|
-
supportsTools: true,
|
|
171
|
-
supportsVision: true,
|
|
172
|
-
isPreview: false,
|
|
173
|
-
isClaude: false,
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
id: "gemini-3.6-flash-tiered",
|
|
177
|
-
displayName: "Gemini 3.6 Flash Tiered",
|
|
178
|
-
group: "antigravity",
|
|
179
|
-
contextWindow: 1_048_576,
|
|
180
|
-
outputLimit: 65_535,
|
|
181
|
-
supportsThinking: true,
|
|
182
|
-
supportsTools: true,
|
|
183
|
-
supportsVision: true,
|
|
184
|
-
isPreview: false,
|
|
185
|
-
isClaude: false,
|
|
186
|
-
},
|
|
187
|
-
{
|
|
188
|
-
id: "gemini-3.6-flash",
|
|
189
|
-
displayName: "Gemini 3.6 Flash",
|
|
190
|
-
group: "antigravity",
|
|
191
|
-
contextWindow: 1_048_576,
|
|
192
|
-
outputLimit: 65_535,
|
|
193
|
-
supportsThinking: true,
|
|
194
|
-
supportsTools: true,
|
|
195
|
-
supportsVision: true,
|
|
196
|
-
isPreview: false,
|
|
197
|
-
isClaude: false,
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
id: "antigravity-gemini-3.6-flash",
|
|
201
|
-
displayName: "Gemini 3.6 Flash (Antigravity)",
|
|
202
|
-
group: "antigravity",
|
|
203
|
-
contextWindow: 1_048_576,
|
|
204
|
-
outputLimit: 65_535,
|
|
205
|
-
supportsThinking: true,
|
|
206
|
-
supportsTools: true,
|
|
207
|
-
supportsVision: true,
|
|
208
|
-
isPreview: false,
|
|
209
|
-
isClaude: false,
|
|
210
|
-
},
|
|
211
|
-
{
|
|
212
|
-
id: "antigravity-gemini-3.6-flash-high",
|
|
213
|
-
displayName: "Gemini 3.6 Flash High (Antigravity)",
|
|
214
|
-
group: "antigravity",
|
|
215
|
-
contextWindow: 1_048_576,
|
|
216
|
-
outputLimit: 65_535,
|
|
217
|
-
supportsThinking: true,
|
|
218
|
-
supportsTools: true,
|
|
219
|
-
supportsVision: true,
|
|
220
|
-
isPreview: false,
|
|
221
|
-
isClaude: false,
|
|
222
|
-
},
|
|
223
|
-
] as const;
|
|
224
|
-
|
|
225
|
-
// Gemini 3.5 Flash
|
|
226
|
-
export const GEMINI_35_MODELS = [
|
|
227
|
-
"gemini-3.5-flash-high",
|
|
228
|
-
"gemini-3.5-flash-medium",
|
|
229
|
-
"gemini-3.5-flash",
|
|
230
|
-
"gemini-3.5-flash-lite",
|
|
231
|
-
"gemini-3.5-flash-lite-preview",
|
|
232
|
-
"antigravity-gemini-3.5-flash-high",
|
|
233
|
-
"antigravity-gemini-3.5-flash-medium",
|
|
234
|
-
"antigravity-gemini-3.5-flash",
|
|
235
|
-
"antigravity-gemini-3.5-flash-lite",
|
|
236
|
-
"antigravity-gemini-3.5-flash-lite-preview",
|
|
237
|
-
] as const;
|
|
238
|
-
|
|
239
|
-
export const GEMINI_35_MODEL_DEFINITIONS: readonly AntigravityModelDefinition[] = [
|
|
240
|
-
{
|
|
241
|
-
id: "gemini-3.5-flash-high",
|
|
242
|
-
displayName: "Gemini 3.5 Flash High",
|
|
243
|
-
group: "antigravity",
|
|
244
|
-
contextWindow: 1_048_576,
|
|
245
|
-
outputLimit: 65_535,
|
|
246
|
-
supportsThinking: true,
|
|
247
|
-
supportsTools: true,
|
|
248
|
-
supportsVision: true,
|
|
249
|
-
isPreview: false,
|
|
250
|
-
isClaude: false,
|
|
251
|
-
},
|
|
252
|
-
{
|
|
253
|
-
id: "gemini-3.5-flash-medium",
|
|
254
|
-
displayName: "Gemini 3.5 Flash Medium",
|
|
255
|
-
group: "antigravity",
|
|
256
|
-
contextWindow: 1_048_576,
|
|
257
|
-
outputLimit: 65_535,
|
|
258
|
-
supportsThinking: true,
|
|
259
|
-
supportsTools: true,
|
|
260
|
-
supportsVision: true,
|
|
261
|
-
isPreview: false,
|
|
262
|
-
isClaude: false,
|
|
263
|
-
},
|
|
264
|
-
{
|
|
265
|
-
id: "gemini-3.5-flash",
|
|
266
|
-
displayName: "Gemini 3.5 Flash",
|
|
267
|
-
group: "antigravity",
|
|
268
|
-
contextWindow: 1_048_576,
|
|
269
|
-
outputLimit: 65_535,
|
|
270
|
-
supportsThinking: true,
|
|
271
|
-
supportsTools: true,
|
|
272
|
-
supportsVision: true,
|
|
273
|
-
isPreview: false,
|
|
274
|
-
isClaude: false,
|
|
275
|
-
},
|
|
276
|
-
{
|
|
277
|
-
id: "gemini-3.5-flash-lite",
|
|
278
|
-
displayName: "Gemini 3.5 Flash Lite",
|
|
279
|
-
group: "antigravity",
|
|
280
|
-
contextWindow: 1_048_576,
|
|
281
|
-
outputLimit: 32_768,
|
|
282
|
-
supportsThinking: false,
|
|
283
|
-
supportsTools: true,
|
|
284
|
-
supportsVision: true,
|
|
285
|
-
isPreview: false,
|
|
286
|
-
isClaude: false,
|
|
287
|
-
},
|
|
288
|
-
{
|
|
289
|
-
id: "gemini-3.5-flash-lite-preview",
|
|
290
|
-
displayName: "Gemini 3.5 Flash Lite Preview",
|
|
291
|
-
group: "gemini-cli",
|
|
292
|
-
contextWindow: 1_048_576,
|
|
293
|
-
outputLimit: 32_768,
|
|
294
|
-
supportsThinking: false,
|
|
295
|
-
supportsTools: true,
|
|
296
|
-
supportsVision: true,
|
|
297
|
-
isPreview: true,
|
|
298
|
-
isClaude: false,
|
|
299
|
-
},
|
|
300
|
-
{
|
|
301
|
-
id: "antigravity-gemini-3.5-flash",
|
|
302
|
-
displayName: "Gemini 3.5 Flash (Antigravity)",
|
|
303
|
-
group: "antigravity",
|
|
304
|
-
contextWindow: 1_048_576,
|
|
305
|
-
outputLimit: 65_535,
|
|
306
|
-
supportsThinking: true,
|
|
307
|
-
supportsTools: true,
|
|
308
|
-
supportsVision: true,
|
|
309
|
-
isPreview: false,
|
|
310
|
-
isClaude: false,
|
|
311
|
-
},
|
|
312
|
-
] as const;
|
|
313
|
-
|
|
314
|
-
// Gemini 3.1
|
|
315
|
-
export const GEMINI_31_MODELS = [
|
|
316
|
-
"gemini-3.1-pro-high",
|
|
317
|
-
"gemini-3.1-pro-low",
|
|
318
|
-
"gemini-3.1-pro",
|
|
319
|
-
"gemini-3.1-flash-image",
|
|
320
|
-
"gemini-3.1-flash-lite",
|
|
321
|
-
"antigravity-gemini-3.1-pro-high",
|
|
322
|
-
"antigravity-gemini-3.1-pro-low",
|
|
323
|
-
"antigravity-gemini-3.1-pro",
|
|
324
|
-
"antigravity-gemini-3.1-flash-image",
|
|
325
|
-
"antigravity-gemini-3.1-flash-lite",
|
|
326
|
-
] as const;
|
|
327
|
-
|
|
328
|
-
export const GEMINI_31_MODEL_DEFINITIONS: readonly AntigravityModelDefinition[] = [
|
|
329
|
-
{
|
|
330
|
-
id: "gemini-3.1-pro-high",
|
|
331
|
-
displayName: "Gemini 3.1 Pro High",
|
|
332
|
-
group: "antigravity",
|
|
333
|
-
contextWindow: 1_048_576,
|
|
334
|
-
outputLimit: 65_535,
|
|
335
|
-
supportsThinking: true,
|
|
336
|
-
supportsTools: true,
|
|
337
|
-
supportsVision: true,
|
|
338
|
-
isPreview: false,
|
|
339
|
-
isClaude: false,
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
id: "gemini-3.1-pro-low",
|
|
343
|
-
displayName: "Gemini 3.1 Pro Low",
|
|
344
|
-
group: "antigravity",
|
|
345
|
-
contextWindow: 1_048_576,
|
|
346
|
-
outputLimit: 65_535,
|
|
347
|
-
supportsThinking: false,
|
|
348
|
-
supportsTools: true,
|
|
349
|
-
supportsVision: true,
|
|
350
|
-
isPreview: false,
|
|
351
|
-
isClaude: false,
|
|
352
|
-
},
|
|
353
|
-
{
|
|
354
|
-
id: "gemini-3.1-pro",
|
|
355
|
-
displayName: "Gemini 3.1 Pro",
|
|
356
|
-
group: "antigravity",
|
|
357
|
-
contextWindow: 1_048_576,
|
|
358
|
-
outputLimit: 65_535,
|
|
359
|
-
supportsThinking: true,
|
|
360
|
-
supportsTools: true,
|
|
361
|
-
supportsVision: true,
|
|
362
|
-
isPreview: false,
|
|
363
|
-
isClaude: false,
|
|
364
|
-
},
|
|
365
|
-
{
|
|
366
|
-
id: "gemini-3.1-flash-image",
|
|
367
|
-
displayName: "Gemini 3.1 Flash Image",
|
|
368
|
-
group: "antigravity",
|
|
369
|
-
contextWindow: 1_048_576,
|
|
370
|
-
outputLimit: 65_535,
|
|
371
|
-
supportsThinking: false,
|
|
372
|
-
supportsTools: false,
|
|
373
|
-
supportsVision: true,
|
|
374
|
-
isPreview: false,
|
|
375
|
-
isClaude: false,
|
|
376
|
-
},
|
|
377
|
-
{
|
|
378
|
-
id: "gemini-3.1-flash-lite",
|
|
379
|
-
displayName: "Gemini 3.1 Flash Lite",
|
|
380
|
-
group: "antigravity",
|
|
381
|
-
contextWindow: 1_048_576,
|
|
382
|
-
outputLimit: 32_768,
|
|
383
|
-
supportsThinking: false,
|
|
384
|
-
supportsTools: true,
|
|
385
|
-
supportsVision: true,
|
|
386
|
-
isPreview: false,
|
|
387
|
-
isClaude: false,
|
|
388
|
-
},
|
|
389
|
-
{
|
|
390
|
-
id: "antigravity-gemini-3.1-pro",
|
|
391
|
-
displayName: "Gemini 3.1 Pro (Antigravity)",
|
|
392
|
-
group: "antigravity",
|
|
393
|
-
contextWindow: 1_048_576,
|
|
394
|
-
outputLimit: 65_535,
|
|
395
|
-
supportsThinking: true,
|
|
396
|
-
supportsTools: true,
|
|
397
|
-
supportsVision: true,
|
|
398
|
-
isPreview: false,
|
|
399
|
-
isClaude: false,
|
|
400
|
-
},
|
|
401
|
-
] as const;
|
|
402
|
-
|
|
403
|
-
// Gemini 3
|
|
404
|
-
export const GEMINI_3_MODELS = [
|
|
405
|
-
"gemini-3-flash",
|
|
406
|
-
"gemini-3-pro",
|
|
407
|
-
"gemini-3-deep-think",
|
|
408
|
-
"antigravity-gemini-3-flash",
|
|
409
|
-
"antigravity-gemini-3-pro",
|
|
410
|
-
"antigravity-gemini-3-deep-think",
|
|
411
|
-
] as const;
|
|
412
|
-
|
|
413
|
-
export const GEMINI_3_MODEL_DEFINITIONS: readonly AntigravityModelDefinition[] = [
|
|
414
|
-
{
|
|
415
|
-
id: "gemini-3-flash",
|
|
416
|
-
displayName: "Gemini 3 Flash",
|
|
417
|
-
group: "antigravity",
|
|
418
|
-
contextWindow: 1_048_576,
|
|
419
|
-
outputLimit: 65_535,
|
|
420
|
-
supportsThinking: false,
|
|
421
|
-
supportsTools: true,
|
|
422
|
-
supportsVision: true,
|
|
423
|
-
isPreview: false,
|
|
424
|
-
isClaude: false,
|
|
425
|
-
},
|
|
426
|
-
{
|
|
427
|
-
id: "gemini-3-pro",
|
|
428
|
-
displayName: "Gemini 3 Pro",
|
|
429
|
-
group: "antigravity",
|
|
430
|
-
contextWindow: 1_048_576,
|
|
431
|
-
outputLimit: 65_535,
|
|
432
|
-
supportsThinking: true,
|
|
433
|
-
supportsTools: true,
|
|
434
|
-
supportsVision: true,
|
|
435
|
-
isPreview: false,
|
|
436
|
-
isClaude: false,
|
|
437
|
-
},
|
|
438
|
-
{
|
|
439
|
-
id: "gemini-3-deep-think",
|
|
440
|
-
displayName: "Gemini 3 Deep Think",
|
|
441
|
-
group: "antigravity",
|
|
442
|
-
contextWindow: 1_048_576,
|
|
443
|
-
outputLimit: 65_535,
|
|
444
|
-
supportsThinking: true,
|
|
445
|
-
supportsTools: true,
|
|
446
|
-
supportsVision: true,
|
|
447
|
-
isPreview: false,
|
|
448
|
-
isClaude: false,
|
|
449
|
-
},
|
|
450
|
-
{
|
|
451
|
-
id: "antigravity-gemini-3-pro",
|
|
452
|
-
displayName: "Gemini 3 Pro (Antigravity)",
|
|
453
|
-
group: "antigravity",
|
|
454
|
-
contextWindow: 1_048_576,
|
|
455
|
-
outputLimit: 65_535,
|
|
456
|
-
supportsThinking: true,
|
|
457
|
-
supportsTools: true,
|
|
458
|
-
supportsVision: true,
|
|
459
|
-
isPreview: false,
|
|
460
|
-
isClaude: false,
|
|
461
|
-
},
|
|
462
|
-
{
|
|
463
|
-
id: "antigravity-gemini-3-flash",
|
|
464
|
-
displayName: "Gemini 3 Flash (Antigravity)",
|
|
465
|
-
group: "antigravity",
|
|
466
|
-
contextWindow: 1_048_576,
|
|
467
|
-
outputLimit: 65_535,
|
|
468
|
-
supportsThinking: false,
|
|
469
|
-
supportsTools: true,
|
|
470
|
-
supportsVision: true,
|
|
471
|
-
isPreview: false,
|
|
472
|
-
isClaude: false,
|
|
473
|
-
},
|
|
474
|
-
] as const;
|
|
475
|
-
|
|
476
|
-
// Gemini 2.5
|
|
477
|
-
export const GEMINI_25_MODELS = [
|
|
478
|
-
"gemini-2.5-pro",
|
|
479
|
-
"gemini-2.5-flash",
|
|
480
|
-
"gemini-2.5-flash-lite",
|
|
481
|
-
"antigravity-gemini-2.5-pro",
|
|
482
|
-
"antigravity-gemini-2.5-flash",
|
|
483
|
-
"antigravity-gemini-2.5-flash-lite",
|
|
484
|
-
"gemini-2.5",
|
|
485
|
-
] as const;
|
|
486
|
-
|
|
487
|
-
export const GEMINI_25_MODEL_DEFINITIONS: readonly AntigravityModelDefinition[] = [
|
|
488
|
-
{
|
|
489
|
-
id: "gemini-2.5-pro",
|
|
490
|
-
displayName: "Gemini 2.5 Pro",
|
|
491
|
-
group: "antigravity",
|
|
492
|
-
contextWindow: 1_048_576,
|
|
493
|
-
outputLimit: 65_535,
|
|
494
|
-
supportsThinking: true,
|
|
495
|
-
supportsTools: true,
|
|
496
|
-
supportsVision: true,
|
|
497
|
-
isPreview: false,
|
|
498
|
-
isClaude: false,
|
|
499
|
-
},
|
|
500
|
-
{
|
|
501
|
-
id: "gemini-2.5-flash",
|
|
502
|
-
displayName: "Gemini 2.5 Flash",
|
|
503
|
-
group: "antigravity",
|
|
504
|
-
contextWindow: 1_048_576,
|
|
505
|
-
outputLimit: 65_535,
|
|
506
|
-
supportsThinking: true,
|
|
507
|
-
supportsTools: true,
|
|
508
|
-
supportsVision: true,
|
|
509
|
-
isPreview: false,
|
|
510
|
-
isClaude: false,
|
|
511
|
-
},
|
|
512
|
-
{
|
|
513
|
-
id: "gemini-2.5-flash-lite",
|
|
514
|
-
displayName: "Gemini 2.5 Flash Lite",
|
|
515
|
-
group: "antigravity",
|
|
516
|
-
contextWindow: 1_048_576,
|
|
517
|
-
outputLimit: 32_768,
|
|
518
|
-
supportsThinking: false,
|
|
519
|
-
supportsTools: true,
|
|
520
|
-
supportsVision: true,
|
|
521
|
-
isPreview: false,
|
|
522
|
-
isClaude: false,
|
|
523
|
-
},
|
|
524
|
-
] as const;
|
|
525
|
-
|
|
526
|
-
// Claude 4.6
|
|
527
|
-
export const CLAUDE_46_MODELS = [
|
|
528
|
-
"claude-sonnet-4-6-thinking",
|
|
529
|
-
"claude-sonnet-4-6-thinking-low",
|
|
530
|
-
"claude-sonnet-4-6-thinking-high",
|
|
531
|
-
"claude-sonnet-4-6",
|
|
532
|
-
"claude-opus-4-6-thinking",
|
|
533
|
-
"claude-opus-4-6-thinking-low",
|
|
534
|
-
"claude-opus-4-6-thinking-high",
|
|
535
|
-
"claude-opus-4-6-thinking-max",
|
|
536
|
-
"claude-opus-4-6",
|
|
537
|
-
"antigravity-claude-sonnet-4-6",
|
|
538
|
-
"antigravity-claude-sonnet-4-6-thinking",
|
|
539
|
-
"antigravity-claude-opus-4-6-thinking",
|
|
540
|
-
"antigravity-claude-opus-4-6-thinking-low",
|
|
541
|
-
"antigravity-claude-opus-4-6-thinking-max",
|
|
542
|
-
] as const;
|
|
543
|
-
|
|
544
|
-
export const CLAUDE_46_MODEL_DEFINITIONS: readonly AntigravityModelDefinition[] = [
|
|
545
|
-
{
|
|
546
|
-
id: "claude-sonnet-4-6-thinking",
|
|
547
|
-
displayName: "Claude Sonnet 4.6 Thinking",
|
|
548
|
-
group: "antigravity",
|
|
549
|
-
contextWindow: 200_000,
|
|
550
|
-
outputLimit: 64_000,
|
|
551
|
-
supportsThinking: true,
|
|
552
|
-
supportsTools: true,
|
|
553
|
-
supportsVision: true,
|
|
554
|
-
isPreview: false,
|
|
555
|
-
isClaude: true,
|
|
556
|
-
},
|
|
557
|
-
{
|
|
558
|
-
id: "claude-sonnet-4-6-thinking-low",
|
|
559
|
-
displayName: "Claude Sonnet 4.6 Thinking Low",
|
|
560
|
-
group: "antigravity",
|
|
561
|
-
contextWindow: 200_000,
|
|
562
|
-
outputLimit: 64_000,
|
|
563
|
-
supportsThinking: true,
|
|
564
|
-
supportsTools: true,
|
|
565
|
-
supportsVision: true,
|
|
566
|
-
isPreview: false,
|
|
567
|
-
isClaude: true,
|
|
568
|
-
},
|
|
569
|
-
{
|
|
570
|
-
id: "claude-sonnet-4-6-thinking-high",
|
|
571
|
-
displayName: "Claude Sonnet 4.6 Thinking High",
|
|
572
|
-
group: "antigravity",
|
|
573
|
-
contextWindow: 200_000,
|
|
574
|
-
outputLimit: 64_000,
|
|
575
|
-
supportsThinking: true,
|
|
576
|
-
supportsTools: true,
|
|
577
|
-
supportsVision: true,
|
|
578
|
-
isPreview: false,
|
|
579
|
-
isClaude: true,
|
|
580
|
-
},
|
|
581
|
-
{
|
|
582
|
-
id: "claude-sonnet-4-6",
|
|
583
|
-
displayName: "Claude Sonnet 4.6",
|
|
584
|
-
group: "antigravity",
|
|
585
|
-
contextWindow: 200_000,
|
|
586
|
-
outputLimit: 64_000,
|
|
587
|
-
supportsThinking: false,
|
|
588
|
-
supportsTools: true,
|
|
589
|
-
supportsVision: true,
|
|
590
|
-
isPreview: false,
|
|
591
|
-
isClaude: true,
|
|
592
|
-
},
|
|
593
|
-
{
|
|
594
|
-
id: "claude-opus-4-6-thinking",
|
|
595
|
-
displayName: "Claude Opus 4.6 Thinking",
|
|
596
|
-
group: "antigravity",
|
|
597
|
-
contextWindow: 200_000,
|
|
598
|
-
outputLimit: 64_000,
|
|
599
|
-
supportsThinking: true,
|
|
600
|
-
supportsTools: true,
|
|
601
|
-
supportsVision: true,
|
|
602
|
-
isPreview: false,
|
|
603
|
-
isClaude: true,
|
|
604
|
-
},
|
|
605
|
-
{
|
|
606
|
-
id: "claude-opus-4-6-thinking-low",
|
|
607
|
-
displayName: "Claude Opus 4.6 Thinking Low",
|
|
608
|
-
group: "antigravity",
|
|
609
|
-
contextWindow: 200_000,
|
|
610
|
-
outputLimit: 64_000,
|
|
611
|
-
supportsThinking: true,
|
|
612
|
-
supportsTools: true,
|
|
613
|
-
supportsVision: true,
|
|
614
|
-
isPreview: false,
|
|
615
|
-
isClaude: true,
|
|
616
|
-
},
|
|
617
|
-
{
|
|
618
|
-
id: "claude-opus-4-6-thinking-high",
|
|
619
|
-
displayName: "Claude Opus 4.6 Thinking High",
|
|
620
|
-
group: "antigravity",
|
|
621
|
-
contextWindow: 200_000,
|
|
622
|
-
outputLimit: 64_000,
|
|
623
|
-
supportsThinking: true,
|
|
624
|
-
supportsTools: true,
|
|
625
|
-
supportsVision: true,
|
|
626
|
-
isPreview: false,
|
|
627
|
-
isClaude: true,
|
|
628
|
-
},
|
|
629
|
-
{
|
|
630
|
-
id: "claude-opus-4-6-thinking-max",
|
|
631
|
-
displayName: "Claude Opus 4.6 Thinking Max",
|
|
632
|
-
group: "antigravity",
|
|
633
|
-
contextWindow: 200_000,
|
|
634
|
-
outputLimit: 64_000,
|
|
635
|
-
supportsThinking: true,
|
|
636
|
-
supportsTools: true,
|
|
637
|
-
supportsVision: true,
|
|
638
|
-
isPreview: false,
|
|
639
|
-
isClaude: true,
|
|
640
|
-
},
|
|
641
|
-
{
|
|
642
|
-
id: "antigravity-claude-sonnet-4-6",
|
|
643
|
-
displayName: "Claude Sonnet 4.6 (Antigravity)",
|
|
644
|
-
group: "antigravity",
|
|
645
|
-
contextWindow: 200_000,
|
|
646
|
-
outputLimit: 64_000,
|
|
647
|
-
supportsThinking: true,
|
|
648
|
-
supportsTools: true,
|
|
649
|
-
supportsVision: true,
|
|
650
|
-
isPreview: false,
|
|
651
|
-
isClaude: true,
|
|
652
|
-
},
|
|
653
|
-
{
|
|
654
|
-
id: "antigravity-claude-opus-4-6-thinking",
|
|
655
|
-
displayName: "Claude Opus 4.6 Thinking (Antigravity)",
|
|
656
|
-
group: "antigravity",
|
|
657
|
-
contextWindow: 200_000,
|
|
658
|
-
outputLimit: 64_000,
|
|
659
|
-
supportsThinking: true,
|
|
660
|
-
supportsTools: true,
|
|
661
|
-
supportsVision: true,
|
|
662
|
-
isPreview: false,
|
|
663
|
-
isClaude: true,
|
|
664
|
-
},
|
|
665
|
-
] as const;
|
|
666
|
-
|
|
667
|
-
// Claude 4.5 legacy
|
|
668
|
-
export const CLAUDE_45_MODELS = [
|
|
669
|
-
"claude-sonnet-4-5",
|
|
670
|
-
"claude-sonnet-4-5-thinking",
|
|
671
|
-
"claude-opus-4-5-thinking",
|
|
672
|
-
"claude-opus-4-5-thinking-low",
|
|
673
|
-
"claude-opus-4-5",
|
|
674
|
-
] as const;
|
|
675
|
-
|
|
676
|
-
export const CLAUDE_45_MODEL_DEFINITIONS: readonly AntigravityModelDefinition[] = [
|
|
677
|
-
{
|
|
678
|
-
id: "claude-sonnet-4-5",
|
|
679
|
-
displayName: "Claude Sonnet 4.5",
|
|
680
|
-
group: "antigravity",
|
|
681
|
-
contextWindow: 200_000,
|
|
682
|
-
outputLimit: 64_000,
|
|
683
|
-
supportsThinking: false,
|
|
684
|
-
supportsTools: true,
|
|
685
|
-
supportsVision: true,
|
|
686
|
-
isPreview: false,
|
|
687
|
-
isClaude: true,
|
|
688
|
-
},
|
|
689
|
-
{
|
|
690
|
-
id: "claude-sonnet-4-5-thinking",
|
|
691
|
-
displayName: "Claude Sonnet 4.5 Thinking",
|
|
692
|
-
group: "antigravity",
|
|
693
|
-
contextWindow: 200_000,
|
|
694
|
-
outputLimit: 64_000,
|
|
695
|
-
supportsThinking: true,
|
|
696
|
-
supportsTools: true,
|
|
697
|
-
supportsVision: true,
|
|
698
|
-
isPreview: false,
|
|
699
|
-
isClaude: true,
|
|
700
|
-
},
|
|
701
|
-
{
|
|
702
|
-
id: "claude-opus-4-5-thinking",
|
|
703
|
-
displayName: "Claude Opus 4.5 Thinking (Legacy)",
|
|
704
|
-
group: "antigravity",
|
|
705
|
-
contextWindow: 200_000,
|
|
706
|
-
outputLimit: 64_000,
|
|
707
|
-
supportsThinking: true,
|
|
708
|
-
supportsTools: true,
|
|
709
|
-
supportsVision: true,
|
|
710
|
-
isPreview: false,
|
|
711
|
-
isClaude: true,
|
|
712
|
-
},
|
|
713
|
-
{
|
|
714
|
-
id: "claude-opus-4-5-thinking-low",
|
|
715
|
-
displayName: "Claude Opus 4.5 Thinking Low",
|
|
716
|
-
group: "antigravity",
|
|
717
|
-
contextWindow: 200_000,
|
|
718
|
-
outputLimit: 64_000,
|
|
719
|
-
supportsThinking: true,
|
|
720
|
-
supportsTools: true,
|
|
721
|
-
supportsVision: true,
|
|
722
|
-
isPreview: false,
|
|
723
|
-
isClaude: true,
|
|
724
|
-
},
|
|
725
|
-
] as const;
|
|
726
|
-
|
|
727
|
-
// gpt-oss-120b
|
|
728
|
-
export const GPT_OSS_MODELS = [
|
|
729
|
-
"gpt-oss-120b-medium",
|
|
730
|
-
"gpt-oss-120b-high",
|
|
731
|
-
"gpt-oss-120b",
|
|
732
|
-
"antigravity-gpt-oss-120b-medium",
|
|
733
|
-
"antigravity-gpt-oss-120b-high",
|
|
734
|
-
] as const;
|
|
735
|
-
|
|
736
|
-
export const GPT_OSS_MODEL_DEFINITIONS: readonly AntigravityModelDefinition[] = [
|
|
737
|
-
{
|
|
738
|
-
id: "gpt-oss-120b-medium",
|
|
739
|
-
displayName: "GPT OSS 120B Medium",
|
|
740
|
-
group: "antigravity",
|
|
741
|
-
contextWindow: 131_072,
|
|
742
|
-
outputLimit: 32_768,
|
|
743
|
-
supportsThinking: true,
|
|
744
|
-
supportsTools: true,
|
|
745
|
-
supportsVision: false,
|
|
746
|
-
isPreview: false,
|
|
747
|
-
isClaude: false,
|
|
748
|
-
isGptOss: true,
|
|
749
|
-
},
|
|
750
|
-
{
|
|
751
|
-
id: "gpt-oss-120b-high",
|
|
752
|
-
displayName: "GPT OSS 120B High",
|
|
753
|
-
group: "antigravity",
|
|
754
|
-
contextWindow: 131_072,
|
|
755
|
-
outputLimit: 32_768,
|
|
756
|
-
supportsThinking: true,
|
|
757
|
-
supportsTools: true,
|
|
758
|
-
supportsVision: false,
|
|
759
|
-
isPreview: false,
|
|
760
|
-
isClaude: false,
|
|
761
|
-
isGptOss: true,
|
|
762
|
-
},
|
|
763
|
-
{
|
|
764
|
-
id: "gpt-oss-120b",
|
|
765
|
-
displayName: "GPT OSS 120B",
|
|
766
|
-
group: "antigravity",
|
|
767
|
-
contextWindow: 131_072,
|
|
768
|
-
outputLimit: 32_768,
|
|
769
|
-
supportsThinking: true,
|
|
770
|
-
supportsTools: true,
|
|
771
|
-
supportsVision: false,
|
|
772
|
-
isPreview: false,
|
|
773
|
-
isClaude: false,
|
|
774
|
-
isGptOss: true,
|
|
775
|
-
},
|
|
776
|
-
] as const;
|
|
777
|
-
|
|
778
|
-
// Preview models
|
|
779
|
-
export const PREVIEW_MODELS_2026_08 = [
|
|
780
|
-
"gemini-3-pro-preview",
|
|
781
|
-
"gemini-3-flash-preview",
|
|
782
|
-
"gemini-3.1-pro-preview",
|
|
783
|
-
"gemini-3.1-pro-preview-customtools",
|
|
784
|
-
"gemini-3.5-flash-lite-preview",
|
|
785
|
-
"gemini-3.6-flash-preview",
|
|
786
|
-
"antigravity-gemini-3-pro-preview",
|
|
787
|
-
"antigravity-gemini-3-flash-preview",
|
|
788
|
-
"antigravity-gemini-3.1-pro-preview",
|
|
789
|
-
] as const;
|
|
790
|
-
|
|
791
|
-
export const PREVIEW_MODEL_DEFINITIONS: readonly AntigravityModelDefinition[] = [
|
|
792
|
-
{
|
|
793
|
-
id: "gemini-3-pro-preview",
|
|
794
|
-
displayName: "Gemini 3 Pro Preview",
|
|
795
|
-
group: "gemini-cli",
|
|
796
|
-
contextWindow: 1_048_576,
|
|
797
|
-
outputLimit: 65_535,
|
|
798
|
-
supportsThinking: true,
|
|
799
|
-
supportsTools: true,
|
|
800
|
-
supportsVision: true,
|
|
801
|
-
isPreview: true,
|
|
802
|
-
isClaude: false,
|
|
803
|
-
},
|
|
804
|
-
{
|
|
805
|
-
id: "gemini-3-flash-preview",
|
|
806
|
-
displayName: "Gemini 3 Flash Preview",
|
|
807
|
-
group: "gemini-cli",
|
|
808
|
-
contextWindow: 1_048_576,
|
|
809
|
-
outputLimit: 65_535,
|
|
810
|
-
supportsThinking: false,
|
|
811
|
-
supportsTools: true,
|
|
812
|
-
supportsVision: true,
|
|
813
|
-
isPreview: true,
|
|
814
|
-
isClaude: false,
|
|
815
|
-
},
|
|
816
|
-
{
|
|
817
|
-
id: "gemini-3.1-pro-preview",
|
|
818
|
-
displayName: "Gemini 3.1 Pro Preview",
|
|
819
|
-
group: "gemini-cli",
|
|
820
|
-
contextWindow: 1_048_576,
|
|
821
|
-
outputLimit: 65_535,
|
|
822
|
-
supportsThinking: true,
|
|
823
|
-
supportsTools: true,
|
|
824
|
-
supportsVision: true,
|
|
825
|
-
isPreview: true,
|
|
826
|
-
isClaude: false,
|
|
827
|
-
},
|
|
828
|
-
{
|
|
829
|
-
id: "gemini-3.1-pro-preview-customtools",
|
|
830
|
-
displayName: "Gemini 3.1 Pro Preview CustomTools",
|
|
831
|
-
group: "gemini-cli",
|
|
832
|
-
contextWindow: 1_048_576,
|
|
833
|
-
outputLimit: 65_535,
|
|
834
|
-
supportsThinking: true,
|
|
835
|
-
supportsTools: true,
|
|
836
|
-
supportsVision: true,
|
|
837
|
-
isPreview: true,
|
|
838
|
-
isClaude: false,
|
|
839
|
-
},
|
|
840
|
-
{
|
|
841
|
-
id: "gemini-3.6-flash-preview",
|
|
842
|
-
displayName: "Gemini 3.6 Flash Preview",
|
|
843
|
-
group: "gemini-cli",
|
|
844
|
-
contextWindow: 1_048_576,
|
|
845
|
-
outputLimit: 65_535,
|
|
846
|
-
supportsThinking: true,
|
|
847
|
-
supportsTools: true,
|
|
848
|
-
supportsVision: true,
|
|
849
|
-
isPreview: true,
|
|
850
|
-
isClaude: false,
|
|
851
|
-
},
|
|
852
|
-
] as const;
|
|
853
|
-
|
|
854
|
-
// v2.1.15 Phase A: the exported family names MODELS_2026_08_25 (flat modelDef
|
|
855
|
-
// projection), ANTIGRAVITY_MODELS_2026, ANTIGRAVITY_MODELS,
|
|
856
|
-
// ANTIGRAVITY_MODEL_IDS_2026, GEMINI_CLI_ONLY_MODELS and
|
|
857
|
-
// isGeminiCLIOnlyModel moved to models.ts. The raw aggregates below keep
|
|
858
|
-
// their exact values as the layer-0 substrate models.ts derives from.
|
|
859
|
-
|
|
860
|
-
/** Raw flat string-id aggregate of the 2026-08-25 catalog (bare + antigravity aliases). */
|
|
861
|
-
const MODELS_2026_08_25_IDS = [
|
|
862
|
-
...GEMINI_36_MODELS,
|
|
863
|
-
...GEMINI_35_MODELS,
|
|
864
|
-
...GEMINI_31_MODELS,
|
|
865
|
-
...GEMINI_3_MODELS,
|
|
866
|
-
...GEMINI_25_MODELS,
|
|
867
|
-
...PREVIEW_MODELS_2026_08,
|
|
868
|
-
...CLAUDE_46_MODELS,
|
|
869
|
-
...CLAUDE_45_MODELS,
|
|
870
|
-
...GPT_OSS_MODELS,
|
|
871
|
-
] as const;
|
|
872
|
-
|
|
873
|
-
export const MODELS_2026_08_25_DEDUP = Array.from(
|
|
874
|
-
new Set<string>(MODELS_2026_08_25_IDS),
|
|
875
|
-
) as unknown as readonly string[];
|
|
876
|
-
|
|
877
|
-
/** Raw rich-definition aggregate consumed by models.ts (ANTIGRAVITY_MODELS_2026 family). */
|
|
878
|
-
export const MODEL_DEFINITIONS_2026 = [
|
|
879
|
-
...GEMINI_36_MODEL_DEFINITIONS,
|
|
880
|
-
...GEMINI_35_MODEL_DEFINITIONS,
|
|
881
|
-
...GEMINI_31_MODEL_DEFINITIONS,
|
|
882
|
-
...GEMINI_3_MODEL_DEFINITIONS,
|
|
883
|
-
...GEMINI_25_MODEL_DEFINITIONS,
|
|
884
|
-
...PREVIEW_MODEL_DEFINITIONS,
|
|
885
|
-
...CLAUDE_46_MODEL_DEFINITIONS,
|
|
886
|
-
...CLAUDE_45_MODEL_DEFINITIONS,
|
|
887
|
-
...GPT_OSS_MODEL_DEFINITIONS,
|
|
888
|
-
] as const satisfies readonly AntigravityModelDefinition[];
|
|
889
|
-
|
|
890
|
-
export const ANTIGRAVITY_MODELS_2026_08 = MODEL_DEFINITIONS_2026;
|
|
891
|
-
|
|
892
|
-
export const MODEL_IDS_2026_08_25 = MODELS_2026_08_25_DEDUP;
|
|
893
|
-
|
|
894
|
-
/**
|
|
895
|
-
* Quota module model roster (v2.1.15 Phase A move from quota.ts — model data
|
|
896
|
-
* lives only in models.ts). Lineage B subset used by the quota grouping map;
|
|
897
|
-
* values byte-identical to the former quota.ts ANTIGRAVITY_MODELS_2026.
|
|
898
|
-
*/
|
|
899
|
-
export const QUOTA_MODEL_ROSTER: readonly AntigravityModelDefinition[] = [
|
|
900
|
-
{
|
|
901
|
-
id: "antigravity-gemini-3-pro",
|
|
902
|
-
displayName: "Gemini 3 Pro (Antigravity)",
|
|
903
|
-
group: "antigravity",
|
|
904
|
-
contextWindow: 1_048_576,
|
|
905
|
-
outputLimit: 65_535,
|
|
906
|
-
supportsThinking: true,
|
|
907
|
-
supportsTools: true,
|
|
908
|
-
supportsVision: true,
|
|
909
|
-
isPreview: false,
|
|
910
|
-
isClaude: false,
|
|
911
|
-
},
|
|
912
|
-
{
|
|
913
|
-
id: "antigravity-gemini-3-flash",
|
|
914
|
-
displayName: "Gemini 3 Flash (Antigravity)",
|
|
915
|
-
group: "antigravity",
|
|
916
|
-
contextWindow: 1_048_576,
|
|
917
|
-
outputLimit: 65_535,
|
|
918
|
-
supportsThinking: true,
|
|
919
|
-
supportsTools: true,
|
|
920
|
-
supportsVision: true,
|
|
921
|
-
isPreview: false,
|
|
922
|
-
isClaude: false,
|
|
923
|
-
},
|
|
924
|
-
{
|
|
925
|
-
id: "antigravity-gemini-3.1-pro",
|
|
926
|
-
displayName: "Gemini 3.1 Pro (Antigravity)",
|
|
927
|
-
group: "antigravity",
|
|
928
|
-
contextWindow: 1_048_576,
|
|
929
|
-
outputLimit: 65_535,
|
|
930
|
-
supportsThinking: true,
|
|
931
|
-
supportsTools: true,
|
|
932
|
-
supportsVision: true,
|
|
933
|
-
isPreview: false,
|
|
934
|
-
isClaude: false,
|
|
935
|
-
},
|
|
936
|
-
{
|
|
937
|
-
id: "gemini-2.5-flash",
|
|
938
|
-
displayName: "Gemini 2.5 Flash",
|
|
939
|
-
group: "antigravity",
|
|
940
|
-
contextWindow: 1_048_576,
|
|
941
|
-
outputLimit: 65_535,
|
|
942
|
-
supportsThinking: true,
|
|
943
|
-
supportsTools: true,
|
|
944
|
-
supportsVision: true,
|
|
945
|
-
isPreview: false,
|
|
946
|
-
isClaude: false,
|
|
947
|
-
},
|
|
948
|
-
{
|
|
949
|
-
id: "gemini-2.5-pro",
|
|
950
|
-
displayName: "Gemini 2.5 Pro",
|
|
951
|
-
group: "antigravity",
|
|
952
|
-
contextWindow: 1_048_576,
|
|
953
|
-
outputLimit: 65_535,
|
|
954
|
-
supportsThinking: true,
|
|
955
|
-
supportsTools: true,
|
|
956
|
-
supportsVision: true,
|
|
957
|
-
isPreview: false,
|
|
958
|
-
isClaude: false,
|
|
959
|
-
},
|
|
960
|
-
{
|
|
961
|
-
id: "gemini-3-flash-preview",
|
|
962
|
-
displayName: "Gemini 3 Flash Preview",
|
|
963
|
-
group: "gemini-cli",
|
|
964
|
-
contextWindow: 1_048_576,
|
|
965
|
-
outputLimit: 65_535,
|
|
966
|
-
supportsThinking: true,
|
|
967
|
-
supportsTools: true,
|
|
968
|
-
supportsVision: true,
|
|
969
|
-
isPreview: true,
|
|
970
|
-
isClaude: false,
|
|
971
|
-
},
|
|
972
|
-
{
|
|
973
|
-
id: "gemini-3-pro-preview",
|
|
974
|
-
displayName: "Gemini 3 Pro Preview",
|
|
975
|
-
group: "gemini-cli",
|
|
976
|
-
contextWindow: 1_048_576,
|
|
977
|
-
outputLimit: 65_535,
|
|
978
|
-
supportsThinking: true,
|
|
979
|
-
supportsTools: true,
|
|
980
|
-
supportsVision: true,
|
|
981
|
-
isPreview: true,
|
|
982
|
-
isClaude: false,
|
|
983
|
-
},
|
|
984
|
-
{
|
|
985
|
-
id: "gemini-3.1-pro-preview",
|
|
986
|
-
displayName: "Gemini 3.1 Pro Preview",
|
|
987
|
-
group: "gemini-cli",
|
|
988
|
-
contextWindow: 1_048_576,
|
|
989
|
-
outputLimit: 65_535,
|
|
990
|
-
supportsThinking: true,
|
|
991
|
-
supportsTools: true,
|
|
992
|
-
supportsVision: true,
|
|
993
|
-
isPreview: true,
|
|
994
|
-
isClaude: false,
|
|
995
|
-
},
|
|
996
|
-
{
|
|
997
|
-
id: "gemini-3.1-pro-preview-customtools",
|
|
998
|
-
displayName: "Gemini 3.1 Pro Preview CustomTools",
|
|
999
|
-
group: "gemini-cli",
|
|
1000
|
-
contextWindow: 1_048_576,
|
|
1001
|
-
outputLimit: 65_535,
|
|
1002
|
-
supportsThinking: true,
|
|
1003
|
-
supportsTools: true,
|
|
1004
|
-
supportsVision: true,
|
|
1005
|
-
isPreview: true,
|
|
1006
|
-
isClaude: false,
|
|
1007
|
-
},
|
|
1008
|
-
{
|
|
1009
|
-
id: "claude-opus-4-6-thinking",
|
|
1010
|
-
displayName: "Claude Opus 4.6 Thinking",
|
|
1011
|
-
group: "antigravity",
|
|
1012
|
-
contextWindow: 200_000,
|
|
1013
|
-
outputLimit: 64_000,
|
|
1014
|
-
supportsThinking: true,
|
|
1015
|
-
supportsTools: true,
|
|
1016
|
-
supportsVision: true,
|
|
1017
|
-
isPreview: false,
|
|
1018
|
-
isClaude: true,
|
|
1019
|
-
},
|
|
1020
|
-
{
|
|
1021
|
-
id: "claude-opus-4-6-thinking-low",
|
|
1022
|
-
displayName: "Claude Opus 4.6 Thinking Low",
|
|
1023
|
-
group: "antigravity",
|
|
1024
|
-
contextWindow: 200_000,
|
|
1025
|
-
outputLimit: 64_000,
|
|
1026
|
-
supportsThinking: true,
|
|
1027
|
-
supportsTools: true,
|
|
1028
|
-
supportsVision: true,
|
|
1029
|
-
isPreview: false,
|
|
1030
|
-
isClaude: true,
|
|
1031
|
-
},
|
|
1032
|
-
{
|
|
1033
|
-
id: "claude-opus-4-6-thinking-max",
|
|
1034
|
-
displayName: "Claude Opus 4.6 Thinking Max",
|
|
1035
|
-
group: "antigravity",
|
|
1036
|
-
contextWindow: 200_000,
|
|
1037
|
-
outputLimit: 64_000,
|
|
1038
|
-
supportsThinking: true,
|
|
1039
|
-
supportsTools: true,
|
|
1040
|
-
supportsVision: true,
|
|
1041
|
-
isPreview: false,
|
|
1042
|
-
isClaude: true,
|
|
1043
|
-
},
|
|
1044
|
-
{
|
|
1045
|
-
id: "claude-sonnet-4-6",
|
|
1046
|
-
displayName: "Claude Sonnet 4.6",
|
|
1047
|
-
group: "antigravity",
|
|
1048
|
-
contextWindow: 200_000,
|
|
1049
|
-
outputLimit: 64_000,
|
|
1050
|
-
supportsThinking: true,
|
|
1051
|
-
supportsTools: true,
|
|
1052
|
-
supportsVision: true,
|
|
1053
|
-
isPreview: false,
|
|
1054
|
-
isClaude: true,
|
|
1055
|
-
},
|
|
1056
|
-
{
|
|
1057
|
-
id: "claude-opus-4-5-thinking",
|
|
1058
|
-
displayName: "Claude Opus 4.5 Thinking (Legacy)",
|
|
1059
|
-
group: "antigravity",
|
|
1060
|
-
contextWindow: 200_000,
|
|
1061
|
-
outputLimit: 64_000,
|
|
1062
|
-
supportsThinking: true,
|
|
1063
|
-
supportsTools: true,
|
|
1064
|
-
supportsVision: true,
|
|
1065
|
-
isPreview: false,
|
|
1066
|
-
isClaude: true,
|
|
1067
|
-
},
|
|
1068
|
-
// Aliases bare gemini-3-* without antigravity- prefix - server accepts both
|
|
1069
|
-
{
|
|
1070
|
-
id: "gemini-3-flash",
|
|
1071
|
-
displayName: "Gemini 3 Flash",
|
|
1072
|
-
group: "gemini-cli",
|
|
1073
|
-
contextWindow: 1_048_576,
|
|
1074
|
-
outputLimit: 65_535,
|
|
1075
|
-
supportsThinking: true,
|
|
1076
|
-
supportsTools: true,
|
|
1077
|
-
supportsVision: true,
|
|
1078
|
-
isPreview: false,
|
|
1079
|
-
isClaude: false,
|
|
1080
|
-
},
|
|
1081
|
-
{
|
|
1082
|
-
id: "gemini-3-pro",
|
|
1083
|
-
displayName: "Gemini 3 Pro",
|
|
1084
|
-
group: "gemini-cli",
|
|
1085
|
-
contextWindow: 1_048_576,
|
|
1086
|
-
outputLimit: 65_535,
|
|
1087
|
-
supportsThinking: true,
|
|
1088
|
-
supportsTools: true,
|
|
1089
|
-
supportsVision: true,
|
|
1090
|
-
isPreview: false,
|
|
1091
|
-
isClaude: false,
|
|
1092
|
-
},
|
|
1093
|
-
{
|
|
1094
|
-
id: "gemini-3.1-pro",
|
|
1095
|
-
displayName: "Gemini 3.1 Pro",
|
|
1096
|
-
group: "gemini-cli",
|
|
1097
|
-
contextWindow: 1_048_576,
|
|
1098
|
-
outputLimit: 65_535,
|
|
1099
|
-
supportsThinking: true,
|
|
1100
|
-
supportsTools: true,
|
|
1101
|
-
supportsVision: true,
|
|
1102
|
-
isPreview: false,
|
|
1103
|
-
isClaude: false,
|
|
1104
|
-
},
|
|
1105
|
-
];
|
|
1106
|
-
|
|
1107
|
-
// v2.1.15 Phase A: isThinkingModel and normalizeModelId moved to models.ts
|
|
1108
|
-
// (single canonical implementations; these local variants had no consumers).
|
|
1109
|
-
|
|
1110
|
-
export function isGemini36Model(modelId: string): boolean {
|
|
1111
|
-
return modelId.toLowerCase().includes("gemini-3.6");
|
|
1112
|
-
}
|
|
1113
|
-
export function isGemini35Model(modelId: string): boolean {
|
|
1114
|
-
return modelId.toLowerCase().includes("gemini-3.5");
|
|
1115
|
-
}
|
|
1116
|
-
export function isGemini31Model(modelId: string): boolean {
|
|
1117
|
-
return modelId.toLowerCase().includes("gemini-3.1");
|
|
1118
|
-
}
|
|
1119
|
-
export function isClaude46Model(modelId: string): boolean {
|
|
1120
|
-
const l = modelId.toLowerCase();
|
|
1121
|
-
return l.includes("claude") && (l.includes("4-6") || l.includes("4.6"));
|
|
1122
|
-
}
|
|
1123
|
-
export function isClaude45Model(modelId: string): boolean {
|
|
1124
|
-
const l = modelId.toLowerCase();
|
|
1125
|
-
return l.includes("claude") && (l.includes("4-5") || l.includes("4.5"));
|
|
1126
|
-
}
|
|
1127
|
-
export function isGptOssModel(modelId: string): boolean {
|
|
1128
|
-
return modelId.toLowerCase().includes("gpt-oss");
|
|
1129
|
-
}
|
|
1130
|
-
export function isPreviewModel(modelId: string): boolean {
|
|
1131
|
-
return modelId.toLowerCase().includes("preview") || modelId.toLowerCase().includes("customtools");
|
|
1132
|
-
}
|
|
1133
|
-
export const MODEL_ALIASES_2026: Record<string, string> = {
|
|
1134
|
-
"gemini-3-pro": "antigravity-gemini-3-pro",
|
|
1135
|
-
"gemini-3-flash": "antigravity-gemini-3-flash",
|
|
1136
|
-
"gemini-3.1-pro": "antigravity-gemini-3.1-pro",
|
|
1137
|
-
"claude-opus-4-6": "claude-opus-4-6-thinking",
|
|
1138
|
-
"claude-sonnet-4-6": "antigravity-claude-sonnet-4-6",
|
|
1139
|
-
"claude-opus-4-5": "claude-opus-4-5-thinking",
|
|
1140
|
-
"gemini-3.6-flash-high": "antigravity-gemini-3.6-flash-high",
|
|
1141
|
-
"gemini-3.5-flash-high": "antigravity-gemini-3.5-flash-high",
|
|
1142
|
-
"gemini-3.1-pro-high": "antigravity-gemini-3.1-pro-high",
|
|
1143
|
-
} as const;
|
|
1144
|
-
|
|
1145
|
-
// v2.1.15 Phase A: SEARCH_MODEL, SEARCH_MODEL_PREVIEW, SEARCH_MODEL_FALLBACKS
|
|
1146
|
-
// and DEFAULT_MODEL moved to models.ts. The two unlisted fallback names below
|
|
1147
|
-
// keep their historical values here.
|
|
1148
|
-
export const DEFAULT_MODEL_FALLBACK = "gemini-3-flash-preview" as const;
|
|
1149
|
-
export const DEFAULT_MODEL_2026_08 = "antigravity-gemini-3.6-flash" as const;
|
|
1150
|
-
|
|
1151
|
-
// ---------------------------------------------------------------------------
|
|
1152
|
-
// V1-05. Model catalog 2026 — Antigravity + Gemini CLI routing definitions
|
|
1153
|
-
// ---------------------------------------------------------------------------
|
|
1154
|
-
|
|
1155
|
-
export type ApiProvider = "antigravity" | "gemini-cli";
|
|
1156
|
-
// v2.1.15 Phase A: this whole V1-05 block (ApiProvider, ModelVendor and the
|
|
1157
|
-
// raw catalog) moved from constants.ts into models.ts — model data lives
|
|
1158
|
-
// ONLY in models.ts. The legacy catalog shape is LegacyModelDefinition.
|
|
1159
|
-
export type ModelVendor = "google" | "anthropic";
|
|
1160
|
-
|
|
1161
|
-
/**
|
|
1162
|
-
* Raw v1 routing catalog (11 rich entries). models.ts imports this list and
|
|
1163
|
-
* owns the family name ALL_MODELS_2026; the legacy shape is LegacyModelDefinition.
|
|
1164
|
-
*/
|
|
1165
|
-
export const V1_CATALOG_MODELS = [
|
|
1166
|
-
{
|
|
1167
|
-
id: "antigravity-gemini-3-pro",
|
|
1168
|
-
name: "Antigravity Gemini 3.0 Pro",
|
|
1169
|
-
context: 1_048_576,
|
|
1170
|
-
output: 65_536,
|
|
1171
|
-
provider: "google",
|
|
1172
|
-
api: "antigravity",
|
|
1173
|
-
family: "gemini-3-pro",
|
|
1174
|
-
quotaGroup: "gemini-3-pro",
|
|
1175
|
-
},
|
|
1176
|
-
{
|
|
1177
|
-
id: "antigravity-gemini-3.1-pro",
|
|
1178
|
-
name: "Antigravity Gemini 3.1 Pro",
|
|
1179
|
-
context: 2_097_152,
|
|
1180
|
-
output: 65_536,
|
|
1181
|
-
provider: "google",
|
|
1182
|
-
api: "antigravity",
|
|
1183
|
-
family: "gemini-3.1-pro",
|
|
1184
|
-
preview: true,
|
|
1185
|
-
quotaGroup: "gemini-3.1-pro",
|
|
1186
|
-
},
|
|
1187
|
-
{
|
|
1188
|
-
id: "antigravity-gemini-3-flash",
|
|
1189
|
-
name: "Antigravity Gemini 3.0 Flash",
|
|
1190
|
-
context: 1_048_576,
|
|
1191
|
-
output: 32_768,
|
|
1192
|
-
provider: "google",
|
|
1193
|
-
api: "antigravity",
|
|
1194
|
-
family: "gemini-3-flash",
|
|
1195
|
-
quotaGroup: "gemini-3-flash",
|
|
1196
|
-
},
|
|
1197
|
-
{
|
|
1198
|
-
id: "antigravity-claude-sonnet-4-6",
|
|
1199
|
-
name: "Antigravity Claude Sonnet 4.6",
|
|
1200
|
-
context: 200_000,
|
|
1201
|
-
output: 32_768,
|
|
1202
|
-
provider: "google",
|
|
1203
|
-
api: "antigravity",
|
|
1204
|
-
family: "claude-sonnet-4-6",
|
|
1205
|
-
quotaGroup: "claude-sonnet",
|
|
1206
|
-
},
|
|
1207
|
-
{
|
|
1208
|
-
id: "antigravity-claude-opus-4-6-thinking",
|
|
1209
|
-
name: "Antigravity Claude Opus 4.6 Thinking",
|
|
1210
|
-
context: 200_000,
|
|
1211
|
-
output: 65_536,
|
|
1212
|
-
provider: "google",
|
|
1213
|
-
api: "antigravity",
|
|
1214
|
-
family: "claude-opus-4-6",
|
|
1215
|
-
thinking: true,
|
|
1216
|
-
quotaGroup: "claude-opus",
|
|
1217
|
-
},
|
|
1218
|
-
{
|
|
1219
|
-
id: "gemini-2.5-flash",
|
|
1220
|
-
name: "Gemini 2.5 Flash",
|
|
1221
|
-
context: 1_048_576,
|
|
1222
|
-
output: 8_192,
|
|
1223
|
-
provider: "google",
|
|
1224
|
-
api: "gemini-cli",
|
|
1225
|
-
family: "gemini-2.5-flash",
|
|
1226
|
-
quotaGroup: "gemini-2.5-flash",
|
|
1227
|
-
},
|
|
1228
|
-
{
|
|
1229
|
-
id: "gemini-2.5-pro",
|
|
1230
|
-
name: "Gemini 2.5 Pro",
|
|
1231
|
-
context: 1_048_576,
|
|
1232
|
-
output: 32_768,
|
|
1233
|
-
provider: "google",
|
|
1234
|
-
api: "gemini-cli",
|
|
1235
|
-
family: "gemini-2.5-pro",
|
|
1236
|
-
quotaGroup: "gemini-2.5-pro",
|
|
1237
|
-
},
|
|
1238
|
-
{
|
|
1239
|
-
id: "gemini-3-flash-preview",
|
|
1240
|
-
name: "Gemini 3.0 Flash Preview",
|
|
1241
|
-
context: 1_048_576,
|
|
1242
|
-
output: 32_768,
|
|
1243
|
-
provider: "google",
|
|
1244
|
-
api: "gemini-cli",
|
|
1245
|
-
family: "gemini-3-flash",
|
|
1246
|
-
preview: true,
|
|
1247
|
-
quotaGroup: "gemini-3-flash",
|
|
1248
|
-
},
|
|
1249
|
-
{
|
|
1250
|
-
id: "gemini-3-pro-preview",
|
|
1251
|
-
name: "Gemini 3.0 Pro Preview",
|
|
1252
|
-
context: 1_048_576,
|
|
1253
|
-
output: 65_536,
|
|
1254
|
-
provider: "google",
|
|
1255
|
-
api: "gemini-cli",
|
|
1256
|
-
family: "gemini-3-pro",
|
|
1257
|
-
preview: true,
|
|
1258
|
-
quotaGroup: "gemini-3-pro",
|
|
1259
|
-
},
|
|
1260
|
-
{
|
|
1261
|
-
id: "gemini-3.1-pro-preview",
|
|
1262
|
-
name: "Gemini 3.1 Pro Preview",
|
|
1263
|
-
context: 2_097_152,
|
|
1264
|
-
output: 65_536,
|
|
1265
|
-
provider: "google",
|
|
1266
|
-
api: "gemini-cli",
|
|
1267
|
-
family: "gemini-3.1-pro",
|
|
1268
|
-
preview: true,
|
|
1269
|
-
quotaGroup: "gemini-3.1-pro",
|
|
1270
|
-
},
|
|
1271
|
-
{
|
|
1272
|
-
id: "gemini-3.1-pro-preview-customtools",
|
|
1273
|
-
name: "Gemini 3.1 Pro Preview Custom Tools",
|
|
1274
|
-
context: 2_097_152,
|
|
1275
|
-
output: 65_536,
|
|
1276
|
-
provider: "google",
|
|
1277
|
-
api: "gemini-cli",
|
|
1278
|
-
family: "gemini-3.1-pro",
|
|
1279
|
-
preview: true,
|
|
1280
|
-
customTools: true,
|
|
1281
|
-
quotaGroup: "gemini-3.1-pro",
|
|
1282
|
-
},
|
|
1283
|
-
] as const satisfies readonly LegacyModelDefinition[];
|
|
1284
|
-
|
|
1285
|
-
// v2.1.15 Phase A: MODEL_BY_ID (fast catalog lookup) and the V1-06 model
|
|
1286
|
-
// routing map (RoutingConfig + MODEL_ROUTING) moved to models.ts — model
|
|
1287
|
-
// identification lives only in models.ts. The raw V1_CATALOG_MODELS list
|
|
1288
|
-
// stays here as the layer-0 substrate models.ts indexes.
|
|
1289
|
-
|
|
1290
|
-
export const DEFAULT_MODEL_ID = "antigravity-gemini-3-pro" as const;
|
|
1291
|
-
export const DEFAULT_FALLBACK_MODEL_IDS = [
|
|
1292
|
-
"gemini-3-pro-preview",
|
|
1293
|
-
"gemini-3-flash-preview",
|
|
1294
|
-
"gemini-2.5-pro",
|
|
1295
|
-
"gemini-2.5-flash",
|
|
1296
|
-
] as const;
|
|
1297
|
-
|
|
1298
|
-
/**
|
|
1299
|
-
* Default model id embedded in the Gemini CLI User-Agent masquerade
|
|
1300
|
-
* (`GeminiCLI/0.57.0/<model> ...`). v2.1.16 single-owner fix: the
|
|
1301
|
-
* "gemini-3-pro-preview" literal used to be repeated as a default parameter
|
|
1302
|
-
* across fingerprint.ts, auth.ts and streaming.ts — those sites now import
|
|
1303
|
-
* this constant (model identification lives only in models.ts).
|
|
1304
|
-
*/
|
|
1305
|
-
export const UA_DEFAULT_MODEL = "gemini-3-pro-preview" as const;
|
|
1306
|
-
|
|
1307
|
-
/**
|
|
1308
|
-
* Linear-time trailing-slash strip (regex-free; safe on uncontrolled input —
|
|
1309
|
-
* the former /\/+$/.replace was polynomial and flagged as ReDoS-prone).
|
|
1310
|
-
*/
|
|
1311
|
-
function stripTrailingSlashes(value: string): string {
|
|
1312
|
-
let end = value.length;
|
|
1313
|
-
while (end > 0 && value.charCodeAt(end - 1) === 47 /* "/" */) end--;
|
|
1314
|
-
return end === value.length ? value : value.slice(0, end);
|
|
1315
|
-
}
|
|
1316
|
-
|
|
1317
|
-
// ---------------------------------------------------------------------------
|
|
1318
|
-
// Section 01. Governance dates & references
|
|
1319
|
-
// ---------------------------------------------------------------------------
|
|
1320
|
-
|
|
1321
|
-
export const CATALOG_DATE_ISO = "2026-08-25" as const;
|
|
1322
|
-
export const CATALOG_DATE_BR = "25/08/2026" as const;
|
|
1323
|
-
export const CATALOG_VERSION = "3.0.0" as const;
|
|
1324
|
-
export const WIKIPEDIA_GEMINI_3_1_PRO_DATE = "2026-02-19" as const;
|
|
1325
|
-
export const WIKIPEDIA_GEMINI_3_6_FLASH_DATE = "2026-07-21" as const;
|
|
1326
|
-
|
|
1327
|
-
export const REFERENCES = [
|
|
1328
|
-
"pi-antigravity-auth - bypass Project ID via loadCodeAssist without x-goog-user-project",
|
|
1329
|
-
"9router - github.com/9router - routing table for logical -> physical model ids",
|
|
1330
|
-
"OmniRoute - routing layer for antigravity vs gemini-cli endpoint order",
|
|
1331
|
-
"Wikipedia Gemini 3.1 Pro - Feb 19 2026 release",
|
|
1332
|
-
"Wikipedia Gemini 3.6 Flash - July 21 2026 release",
|
|
1333
|
-
"Gemini CLI binary - loadCodeAssist + onboardUser, direct cloudcode-pa",
|
|
1334
|
-
"the upstream research lineage - 11k stars, original failure User-Agent 1.11.5",
|
|
1335
|
-
"cloudcode-pa.googleapis.com - PROD authoritative per 2026-08-25",
|
|
1336
|
-
] as const;
|
|
1337
|
-
|
|
1338
|
-
export const OPENCODE_TXT_TIMELINE = [
|
|
1339
|
-
{
|
|
1340
|
-
date: "2024-11-10",
|
|
1341
|
-
event: { pt: "Lançamento inicial da linhagem provedora", en: "Initial provider lineage release" },
|
|
1342
|
-
detail: "Antigravity IDE auth via cloudcode-pa, User-Agent antigravity/1.11.5",
|
|
1343
|
-
source: "the upstream research repository",
|
|
1344
|
-
models: ["antigravity-gemini-2.0", "claude-3.5-sonnet"],
|
|
1345
|
-
},
|
|
1346
|
-
{
|
|
1347
|
-
date: "2025-01-15",
|
|
1348
|
-
event: { pt: "Ban em massa versoes <1.15.8", en: "Mass ban versions <1.15.8" },
|
|
1349
|
-
detail: "Google returned 'This version of Antigravity is no longer supported' - UA fix required",
|
|
1350
|
-
source: "GitHub Issues #233, #411",
|
|
1351
|
-
models: ["gemini-2.0-pro", "gemini-2.0-flash"],
|
|
1352
|
-
},
|
|
1353
|
-
{
|
|
1354
|
-
date: "2025-03-20",
|
|
1355
|
-
event: { pt: "Dual quota Antigravity + Gemini CLI", en: "Dual quota Antigravity + Gemini CLI pools" },
|
|
1356
|
-
detail: "cli_first routing, pid_offset_enabled, round-robin multi-account",
|
|
1357
|
-
source: "pi-antigravity-auth, RESEARCH.md",
|
|
1358
|
-
models: ["gemini-2.5-pro", "gemini-2.5-flash", "claude-opus-4-5-thinking"],
|
|
1359
|
-
},
|
|
1360
|
-
{
|
|
1361
|
-
date: "2026-02-19",
|
|
1362
|
-
event: { pt: "Gemini 3.1 Pro lancamento (Wikipedia)", en: "Gemini 3.1 Pro release (Wikipedia)" },
|
|
1363
|
-
detail: "Wikipedia registers Gemini 3.1 Pro on February 19 2026, context 1M, thinking high/low variants",
|
|
1364
|
-
source: "Wikipedia Gemini 3.1 Pro Feb 19 2026",
|
|
1365
|
-
models: ["gemini-3.1-pro-high", "gemini-3.1-pro-low", "gemini-3.1-pro", "gemini-3.1-pro-preview"],
|
|
1366
|
-
},
|
|
1367
|
-
{
|
|
1368
|
-
date: "2026-05-11",
|
|
1369
|
-
event: { pt: "Gemini 3 Pro/Flash e Deep Think", en: "Gemini 3 Pro/Flash and Deep Think" },
|
|
1370
|
-
detail: "Gemini 3 family GA, deep-think variant with mandatory thinkingLevel high",
|
|
1371
|
-
source: "Google Blog, Antigravity Manager binary",
|
|
1372
|
-
models: ["gemini-3-pro", "gemini-3-flash", "gemini-3-deep-think", "gemini-3-pro-preview", "gemini-3-flash-preview"],
|
|
1373
|
-
},
|
|
1374
|
-
{
|
|
1375
|
-
date: "2026-07-21",
|
|
1376
|
-
event: { pt: "Familia Gemini 3.6 Flash (Wikipedia)", en: "Gemini 3.6 Flash family (Wikipedia)" },
|
|
1377
|
-
detail: "Wikipedia registers Gemini 3.6 Flash on July 21 2026 - variants high/medium/low/tiered, 1M window",
|
|
1378
|
-
source: "Wikipedia Gemini 3.6 Flash July 21 2026",
|
|
1379
|
-
models: [
|
|
1380
|
-
"gemini-3.6-flash-high",
|
|
1381
|
-
"gemini-3.6-flash-medium",
|
|
1382
|
-
"gemini-3.6-flash-low",
|
|
1383
|
-
"gemini-3.6-flash-tiered",
|
|
1384
|
-
"gemini-3.6-flash",
|
|
1385
|
-
],
|
|
1386
|
-
},
|
|
1387
|
-
{
|
|
1388
|
-
date: "2026-08-01",
|
|
1389
|
-
event: { pt: "Integracao 9router + OmniRoute", en: "9router + OmniRoute integration" },
|
|
1390
|
-
detail:
|
|
1391
|
-
"Routing table: antigravity- prefix forces Antigravity pool, preview forces Gemini CLI PROD-only, strip x-goog-user-project",
|
|
1392
|
-
source: "9router github, OmniRoute docs, pi-antigravity-auth",
|
|
1393
|
-
models: ["antigravity-gemini-3.6-flash", "antigravity-gemini-3-flash", "antigravity-claude-opus-4-6-thinking"],
|
|
1394
|
-
},
|
|
1395
|
-
{
|
|
1396
|
-
date: "2026-08-13",
|
|
1397
|
-
event: { pt: "Gemini 3.7 Flash GA", en: "Gemini 3.7 Flash GA" },
|
|
1398
|
-
detail:
|
|
1399
|
-
"Gemini 3.7 Flash general availability Aug 13 2026 - most intelligent workhorse, minimal/low/medium/high/tiered variants, intro pricing until Dec 31 2026",
|
|
1400
|
-
source: "Google Blog, Antigravity Manager binary, flat catalogs v3/v4/v5",
|
|
1401
|
-
models: [
|
|
1402
|
-
"gemini-3.7-flash",
|
|
1403
|
-
"gemini-3.7-flash-high",
|
|
1404
|
-
"gemini-3.7-flash-medium",
|
|
1405
|
-
"gemini-3.7-flash-low",
|
|
1406
|
-
"gemini-3.7-flash-tiered",
|
|
1407
|
-
"gemini-3.7-flash-minimal",
|
|
1408
|
-
"gemini-3.7-flash-preview",
|
|
1409
|
-
"antigravity-gemini-3.7-flash",
|
|
1410
|
-
"antigravity-gemini-3.7-flash-high",
|
|
1411
|
-
],
|
|
1412
|
-
},
|
|
1413
|
-
{
|
|
1414
|
-
date: "2026-08-25",
|
|
1415
|
-
event: { pt: "Freeze catalogo v3 - ONDA 5 CORRECAO V3", en: "Catalog freeze v3 - WAVE 5 FIX V3" },
|
|
1416
|
-
detail:
|
|
1417
|
-
"Merged complete list at 25/08/2026: full 3.6/3.5/3.1/3/2.5 families + gemini-3.7-flash family + Claude 4.5/4.6 (+ non-thinking) + GPT-OSS 120B (+bare) + previews. Bypass Project ID as Gemini CLI via loadCodeAssist, direct cloudcode-pa without localhost v1.",
|
|
1418
|
-
source: "opencode.txt timeline, pi-antigravity-auth, 9router, OmniRoute, flat catalogs v3/v4/v5",
|
|
1419
|
-
models: [
|
|
1420
|
-
"gemini-3.7-flash",
|
|
1421
|
-
"gemini-3.7-flash-high",
|
|
1422
|
-
"gemini-3.7-flash-medium",
|
|
1423
|
-
"gemini-3.7-flash-low",
|
|
1424
|
-
"gemini-3.7-flash-minimal",
|
|
1425
|
-
"gemini-3.7-flash-preview",
|
|
1426
|
-
"gemini-3.6-flash-high",
|
|
1427
|
-
"gemini-3.6-flash-medium",
|
|
1428
|
-
"gemini-3.6-flash-low",
|
|
1429
|
-
"gemini-3.6-flash-tiered",
|
|
1430
|
-
"gemini-3.6-flash",
|
|
1431
|
-
"gemini-3.5-flash-high",
|
|
1432
|
-
"gemini-3.5-flash-medium",
|
|
1433
|
-
"gemini-3.5-flash-low",
|
|
1434
|
-
"gemini-3.5-flash",
|
|
1435
|
-
"gemini-3.5-flash-lite",
|
|
1436
|
-
"gemini-3.5-flash-lite-preview",
|
|
1437
|
-
"gemini-3.1-pro-high",
|
|
1438
|
-
"gemini-3.1-pro-low",
|
|
1439
|
-
"gemini-3.1-pro",
|
|
1440
|
-
"gemini-3.1-flash-image",
|
|
1441
|
-
"gemini-3.1-flash-lite",
|
|
1442
|
-
"gemini-3-flash",
|
|
1443
|
-
"gemini-3-pro",
|
|
1444
|
-
"gemini-3-deep-think",
|
|
1445
|
-
"gemini-2.5-pro",
|
|
1446
|
-
"gemini-2.5-flash",
|
|
1447
|
-
"gemini-2.5-flash-lite",
|
|
1448
|
-
"claude-sonnet-4-6",
|
|
1449
|
-
"claude-sonnet-4-6-thinking",
|
|
1450
|
-
"claude-opus-4-6",
|
|
1451
|
-
"claude-opus-4-6-thinking",
|
|
1452
|
-
"claude-sonnet-4-5",
|
|
1453
|
-
"claude-opus-4-5-thinking",
|
|
1454
|
-
"gpt-oss-120b",
|
|
1455
|
-
"gpt-oss-120b-medium",
|
|
1456
|
-
"gpt-oss-120b-high",
|
|
1457
|
-
"gemini-2.5-pro-preview",
|
|
1458
|
-
"gemini-3.5-flash-preview",
|
|
1459
|
-
"gemini-3.6-flash-preview",
|
|
1460
|
-
"gemini-3-pro-preview",
|
|
1461
|
-
"gemini-3-flash-preview",
|
|
1462
|
-
"gemini-3.1-pro-preview",
|
|
1463
|
-
"gemini-3.1-pro-preview-customtools",
|
|
1464
|
-
],
|
|
1465
|
-
},
|
|
1466
|
-
] as const;
|
|
1467
|
-
|
|
1468
|
-
// ---------------------------------------------------------------------------
|
|
1469
|
-
// Section 02. Cloud Code Endpoints - direct, no localhost v1 proxy
|
|
1470
|
-
// v2.1.15 Phase A: canonical host map (aliased to the constants.ts ENDPOINTS
|
|
1471
|
-
// raw map) plus the three per-family routing orders owned by this module.
|
|
1472
|
-
// ---------------------------------------------------------------------------
|
|
1473
|
-
|
|
1474
|
-
/**
|
|
1475
|
-
* Canonical Cloud Code Assist host map (PROD/DAILY/SANDBOX/AUTOPUSH).
|
|
1476
|
-
* Merged in v2.1.15 from the constants.ts (5-key with the dead
|
|
1477
|
-
* DAILY_SANDBOX alias), models.ts and request.ts variants — the raw value
|
|
1478
|
-
* lives in constants.ts as ENDPOINTS and this is the family-name alias.
|
|
1479
|
-
*/
|
|
1480
|
-
export const CODE_ASSIST_ENDPOINTS: typeof ENDPOINTS = ENDPOINTS;
|
|
1481
|
-
|
|
1482
|
-
/**
|
|
1483
|
-
* Default cascade for the Antigravity pool: PROD, DAILY then SANDBOX.
|
|
1484
|
-
* Merged from constants.ts/models.ts/plugin.ts/project.ts/request.ts
|
|
1485
|
-
* variants (all identical values).
|
|
1486
|
-
*/
|
|
1487
|
-
export const ENDPOINT_ORDER: readonly string[] = [ENDPOINTS.PROD, ENDPOINTS.DAILY, ENDPOINTS.SANDBOX] as const;
|
|
1488
|
-
|
|
1489
|
-
/** Cascade for the Antigravity pool: PROD, DAILY then SANDBOX (fallback project allowed). */
|
|
1490
|
-
export const ENDPOINT_ORDER_ANTIGRAVITY: readonly string[] = [
|
|
1491
|
-
ENDPOINTS.PROD,
|
|
1492
|
-
ENDPOINTS.DAILY,
|
|
1493
|
-
ENDPOINTS.SANDBOX,
|
|
1494
|
-
] as const;
|
|
1495
|
-
|
|
1496
|
-
/** Cascade for the Gemini CLI pool — sandbox is explicitly skipped for preview/gemini-3. */
|
|
1497
|
-
export const ENDPOINT_ORDER_GEMINI_CLI: readonly string[] = [ENDPOINTS.PROD, ENDPOINTS.DAILY] as const;
|
|
1498
|
-
|
|
1499
|
-
// v2.1.15 Phase B: PROJECT_FALLBACK and ANTIGRAVITY_VERSION_FALLBACK moved
|
|
1500
|
-
// to constants.js (raw value owner) — imported at the top of this file.
|
|
1501
|
-
export const ANTIGRAVITY_VERSION_MIN = "1.15.8" as const;
|
|
1502
|
-
|
|
1503
|
-
// v2.1.15 Phase B: FETCH_TIMEOUT_MS and QUOTA_TIMEOUT_MS moved to
|
|
1504
|
-
// constants.js (generic timeout values); the 6-entry strict FORBIDDEN_HEADERS
|
|
1505
|
-
// variant lost its last consumer when the identity helpers left this module
|
|
1506
|
-
// and was deleted — constants.js owns the header-strip lists.
|
|
1507
|
-
|
|
1508
|
-
// ---------------------------------------------------------------------------
|
|
1509
|
-
// Section 03. Thinking levels & budgets - Gemini + Claude + GPT-OSS
|
|
1510
|
-
// ---------------------------------------------------------------------------
|
|
1511
|
-
|
|
1512
|
-
export const THINKING_LEVELS = ["minimal", "low", "medium", "high", "tiered", "max"] as const;
|
|
1513
|
-
export type ThinkingLevel = (typeof THINKING_LEVELS)[number];
|
|
1514
|
-
|
|
1515
|
-
export const THINKING_BUDGET_MAP: Record<ThinkingLevel, number> = {
|
|
1516
|
-
minimal: 1024,
|
|
1517
|
-
low: 8192,
|
|
1518
|
-
medium: 16384,
|
|
1519
|
-
high: 32768,
|
|
1520
|
-
tiered: 24576, // adaptive tiered - observer sees OmniRoute uses 24k as middle tier
|
|
1521
|
-
max: 64000, // Claude max + GPT-OSS high
|
|
1522
|
-
} as const;
|
|
1523
|
-
|
|
1524
|
-
export const CONTEXT_WINDOW_GEMINI = 1_048_576 as const;
|
|
1525
|
-
export const CONTEXT_WINDOW_CLAUDE = 200_000 as const;
|
|
1526
|
-
export const CONTEXT_WINDOW_GPT_OSS = 200_000 as const;
|
|
1527
|
-
export const OUTPUT_LIMIT_GEMINI = 65_535 as const;
|
|
1528
|
-
export const OUTPUT_LIMIT_CLAUDE = 64_000 as const;
|
|
1529
|
-
export const OUTPUT_LIMIT_GPT_OSS = 64_000 as const;
|
|
1530
|
-
|
|
1531
|
-
/**
|
|
1532
|
-
* Maximum thinking budget for Claude-family models (v2.1.15 Phase A merge
|
|
1533
|
-
* of the identical constants.ts and request.ts variants).
|
|
1534
|
-
*/
|
|
1535
|
-
export const THINKING_BUDGET_MAX_CLAUDE = 64_000 as const;
|
|
1536
|
-
|
|
1537
|
-
/**
|
|
1538
|
-
* Maximum thinking budget ceiling for Gemini-family models (v2.1.15 Phase A
|
|
1539
|
-
* merge of the identical constants.ts and request.ts variants).
|
|
1540
|
-
*/
|
|
1541
|
-
export const THINKING_BUDGET_MAX_GEMINI = 32_768 as const;
|
|
1542
|
-
|
|
1543
|
-
export type ModelGroup = "antigravity" | "gemini-cli";
|
|
1544
|
-
export type Provider = "google";
|
|
1545
|
-
export type OriginalProvider = "google" | "anthropic" | "openai-oss";
|
|
1546
|
-
export type Modality = "text" | "image" | "pdf";
|
|
1547
|
-
|
|
1548
|
-
/**
|
|
1549
|
-
* Rich canonical model definition - single source of truth for the catalog.
|
|
1550
|
-
*/
|
|
1551
|
-
export interface ModelDefinition {
|
|
1552
|
-
/** Canonical id - ex: gemini-3.6-flash-high */
|
|
1553
|
-
id: string;
|
|
1554
|
-
/** Display name */
|
|
1555
|
-
displayName: string;
|
|
1556
|
-
/** Family: gemini-3.7, gemini-3.6, gemini-3.5, gemini-3.1, gemini-3, gemini-2.5, claude-4-6, gpt-oss-120b ... */
|
|
1557
|
-
family: string;
|
|
1558
|
-
/** Version / catalog date */
|
|
1559
|
-
catalogDate: typeof CATALOG_DATE_ISO;
|
|
1560
|
-
/** Release date ISO (Wikipedia dates for 3.1 Pro Feb 19 2026, 3.6 Flash July 21 2026) */
|
|
1561
|
-
releaseDate: string;
|
|
1562
|
-
/** Context window tokens */
|
|
1563
|
-
contextWindow: number;
|
|
1564
|
-
/** Output limit tokens */
|
|
1565
|
-
outputLimit: number;
|
|
1566
|
-
/** Provider routed via Google */
|
|
1567
|
-
provider: Provider;
|
|
1568
|
-
/** Original lab */
|
|
1569
|
-
originalProvider: OriginalProvider;
|
|
1570
|
-
/** Routing group */
|
|
1571
|
-
group: ModelGroup;
|
|
1572
|
-
/** Thinking level variant */
|
|
1573
|
-
thinkingLevel: ThinkingLevel;
|
|
1574
|
-
/** Budget in tokens */
|
|
1575
|
-
thinkingBudget: number;
|
|
1576
|
-
/** Is thinking required? */
|
|
1577
|
-
isThinking: boolean;
|
|
1578
|
-
/** Is preview? */
|
|
1579
|
-
isPreview: boolean;
|
|
1580
|
-
/** Is image output? ex: gemini-3.1-flash-image */
|
|
1581
|
-
isImage: boolean;
|
|
1582
|
-
/** Modalities */
|
|
1583
|
-
modalities: { input: Modality[]; output: Modality[] };
|
|
1584
|
-
/** Bilingual description */
|
|
1585
|
-
description: { pt: string; en: string };
|
|
1586
|
-
/** Aliases for 9router / OmniRoute */
|
|
1587
|
-
aliases: string[];
|
|
1588
|
-
/** Endpoint hints - third-person observer notes */
|
|
1589
|
-
endpointHints: {
|
|
1590
|
-
prodOnly: boolean; // gemini-3+ preview MUST be prod-only (+ daily), skip sandbox
|
|
1591
|
-
skipSandbox: boolean;
|
|
1592
|
-
fallbackProjectAllowed: boolean; // rising-fact-p41fc works for antigravity, fails 403 for gemini-cli
|
|
1593
|
-
allowedEndpoints: readonly string[];
|
|
1594
|
-
defaultEndpoint: string;
|
|
1595
|
-
};
|
|
1596
|
-
/** Tags for search */
|
|
1597
|
-
tags: string[];
|
|
1598
|
-
/** References */
|
|
1599
|
-
references: string[];
|
|
1600
|
-
/** Deprecated? */
|
|
1601
|
-
deprecated?: boolean | undefined;
|
|
1602
|
-
}
|
|
1603
|
-
|
|
1604
|
-
/**
|
|
1605
|
-
* Rich per-model routing/quota definition used by the layered definition
|
|
1606
|
-
* substrate lists (GEMINI_36_MODEL_DEFINITIONS ... GPT_OSS_MODEL_DEFINITIONS
|
|
1607
|
-
* in constants.ts) and by the quota group routing table
|
|
1608
|
-
* (QUOTA_GROUP_MODEL_DEFINITIONS below). Absorbed from constants.ts and
|
|
1609
|
-
* quota.ts in v2.1.15 Phase A (identical field set in both lineages;
|
|
1610
|
-
* isGptOss stayed optional).
|
|
1611
|
-
*/
|
|
1612
|
-
export interface AntigravityModelDefinition {
|
|
1613
|
-
readonly id: string;
|
|
1614
|
-
readonly displayName: string;
|
|
1615
|
-
readonly group: QuotaGroup;
|
|
1616
|
-
readonly contextWindow: number;
|
|
1617
|
-
readonly outputLimit: number;
|
|
1618
|
-
readonly supportsThinking: boolean;
|
|
1619
|
-
readonly supportsTools: boolean;
|
|
1620
|
-
readonly supportsVision: boolean;
|
|
1621
|
-
readonly isPreview: boolean;
|
|
1622
|
-
readonly isClaude: boolean;
|
|
1623
|
-
readonly isGptOss?: boolean;
|
|
1624
|
-
}
|
|
1625
|
-
|
|
1626
|
-
/**
|
|
1627
|
-
* v1 flat routing-catalog entry (historical name: ModelDefinition) used by
|
|
1628
|
-
* ALL_MODELS_2026 / V1_CATALOG_MODELS. Renamed LegacyModelDefinition in
|
|
1629
|
-
* v2.1.15 Phase A so the rich catalog ModelDefinition above keeps the bare
|
|
1630
|
-
* name (one name, one meaning).
|
|
1631
|
-
*/
|
|
1632
|
-
export interface LegacyModelDefinition {
|
|
1633
|
-
/** internal ID used for routing */
|
|
1634
|
-
id: string;
|
|
1635
|
-
/** display name */
|
|
1636
|
-
name: string;
|
|
1637
|
-
/** context window in tokens */
|
|
1638
|
-
context: number;
|
|
1639
|
-
/** max output tokens */
|
|
1640
|
-
output: number;
|
|
1641
|
-
/** billing provider — always google for bypass */
|
|
1642
|
-
provider: "google" | "anthropic";
|
|
1643
|
-
/** which API routes the call */
|
|
1644
|
-
api: "antigravity" | "gemini-cli";
|
|
1645
|
-
/** base family */
|
|
1646
|
-
family: string;
|
|
1647
|
-
/** preview / thinking flag */
|
|
1648
|
-
preview?: boolean;
|
|
1649
|
-
/** thinking / extended reasoning */
|
|
1650
|
-
thinking?: boolean;
|
|
1651
|
-
/** custom tools support */
|
|
1652
|
-
customTools?: boolean;
|
|
1653
|
-
/** label for quota group */
|
|
1654
|
-
quotaGroup: string;
|
|
1655
|
-
}
|
|
1656
|
-
|
|
1657
|
-
// ---------------------------------------------------------------------------
|
|
1658
|
-
// Section 04. Flat catalog compat types (ported from flat catalogs)
|
|
1659
|
-
// ---------------------------------------------------------------------------
|
|
1660
|
-
|
|
1661
|
-
/** Flat thinking variant union - identical value set as ThinkingLevel */
|
|
1662
|
-
export type thinkingVariant = "minimal" | "low" | "medium" | "high" | "max" | "tiered";
|
|
1663
|
-
|
|
1664
|
-
/** Flat model definition shape used by MODELS_2026_08_25 consumers */
|
|
1665
|
-
export type modelDef = {
|
|
1666
|
-
id: string;
|
|
1667
|
-
name: string;
|
|
1668
|
-
context: number;
|
|
1669
|
-
output: number;
|
|
1670
|
-
group: ModelGroup;
|
|
1671
|
-
provider: Provider;
|
|
1672
|
-
thinking: thinkingVariant[];
|
|
1673
|
-
modalities: { input: string[]; output: string[] };
|
|
1674
|
-
preview: boolean;
|
|
1675
|
-
release: string;
|
|
1676
|
-
notes: string;
|
|
1677
|
-
};
|
|
1678
|
-
|
|
1679
|
-
/**
|
|
1680
|
-
* Sandbox-skip classifier for the fetch cascade (v2.1.15 Phase D move from
|
|
1681
|
-
* plugin.ts — model classification lives only in models.ts). Distinct from
|
|
1682
|
-
* shouldSkipSandboxForModel: this variant also flags the deep-think and
|
|
1683
|
-
* flash-image families.
|
|
1684
|
-
*/
|
|
1685
|
-
export function shouldSkipSandbox(modelId: string): boolean {
|
|
1686
|
-
const lower = (modelId ?? "").toLowerCase();
|
|
1687
|
-
return (
|
|
1688
|
-
lower.includes("3.6") ||
|
|
1689
|
-
lower.includes("3.5") ||
|
|
1690
|
-
lower.includes("preview") ||
|
|
1691
|
-
lower.includes("gemini-3-flash") ||
|
|
1692
|
-
lower.includes("gemini-3-pro") ||
|
|
1693
|
-
lower.includes("gemini-3.1") ||
|
|
1694
|
-
lower.includes("deep-think") ||
|
|
1695
|
-
lower.includes("flash-image")
|
|
1696
|
-
);
|
|
1697
|
-
}
|
|
1698
|
-
|
|
1699
|
-
/** PascalCase aliases kept for flat-catalog import compatibility */
|
|
1700
|
-
export type ThinkingVariant = thinkingVariant;
|
|
1701
|
-
export type ModelDef = modelDef;
|
|
1702
|
-
|
|
1703
|
-
// ---------------------------------------------------------------------------
|
|
1704
|
-
// Section 05. Observer helpers - FNV-1a, hash, headers, jitter, UA
|
|
1705
|
-
// ---------------------------------------------------------------------------
|
|
1706
|
-
|
|
1707
|
-
// v2.1.15 Phase B: FNV_OFFSET_BASIS and FNV_PRIME moved to constants.js
|
|
1708
|
-
// (raw value owner).
|
|
1709
|
-
|
|
1710
|
-
function hashToken(token: string): string {
|
|
1711
|
-
try {
|
|
1712
|
-
return createHash("sha256").update(token).digest("hex").slice(0, 32);
|
|
1713
|
-
} catch {
|
|
1714
|
-
return fnv1a32(token).toString(16).padStart(8, "0");
|
|
1715
|
-
}
|
|
1716
|
-
}
|
|
1717
|
-
|
|
1718
|
-
function normalizeArch(a: string): string {
|
|
1719
|
-
switch (a) {
|
|
1720
|
-
case "arm64":
|
|
1721
|
-
return "arm64";
|
|
1722
|
-
case "x64":
|
|
1723
|
-
return "x64";
|
|
1724
|
-
case "ia32":
|
|
1725
|
-
return "ia32";
|
|
1726
|
-
default:
|
|
1727
|
-
return a;
|
|
1728
|
-
}
|
|
1729
|
-
}
|
|
1730
|
-
|
|
1731
|
-
// ---------------------------------------------------------------------------
|
|
1732
|
-
// v2.1.15 Phase A: the entire project-discovery block (ProjectDiscoveryError,
|
|
1733
|
-
// loadCodeAssist, onboardUser, the project-id cache, resolveProjectIdAsGeminiCliBypass
|
|
1734
|
-
// and fetchAvailableModelsDirect) RELOCATED to project.ts — the single owner of
|
|
1735
|
-
// project discovery. models.ts is completely project-free by design.
|
|
1736
|
-
// ---------------------------------------------------------------------------
|
|
1737
|
-
|
|
1738
|
-
// ---------------------------------------------------------------------------
|
|
1739
|
-
// Section 08. Model helpers - normalize, thinking, context
|
|
1740
|
-
// ---------------------------------------------------------------------------
|
|
1741
|
-
|
|
1742
|
-
export function normalizeModelId(id: string): string {
|
|
1743
|
-
return String(id ?? "")
|
|
1744
|
-
.trim()
|
|
1745
|
-
.toLowerCase()
|
|
1746
|
-
.replace(/^antigravity-/, "");
|
|
1747
|
-
}
|
|
1748
|
-
|
|
1749
|
-
export function parseThinkingLevelFromId(id: string): ThinkingLevel {
|
|
1750
|
-
const lower = String(id).toLowerCase();
|
|
1751
|
-
if (lower.endsWith("-high")) return "high";
|
|
1752
|
-
if (lower.endsWith("-medium")) return "medium";
|
|
1753
|
-
if (lower.endsWith("-low")) return "low";
|
|
1754
|
-
if (lower.endsWith("-tiered")) return "tiered";
|
|
1755
|
-
if (lower.endsWith("-minimal")) return "minimal";
|
|
1756
|
-
if (lower.endsWith("-lite")) return "low";
|
|
1757
|
-
if (lower.includes("deep-think")) return "high";
|
|
1758
|
-
if (lower.includes("flash-image")) return "minimal";
|
|
1759
|
-
if (lower.includes("thinking")) return "high";
|
|
1760
|
-
if (lower.includes("lite")) return "low";
|
|
1761
|
-
if (lower.includes("preview") && lower.includes("flash")) return "medium";
|
|
1762
|
-
return "medium";
|
|
1763
|
-
}
|
|
1764
|
-
|
|
1765
|
-
export function getThinkingBudgetForLevel(level: ThinkingLevel, originalProvider: OriginalProvider = "google"): number {
|
|
1766
|
-
if (originalProvider === "anthropic" && level === "high") return 32768; // Claude high observed 32k, max 64k optional
|
|
1767
|
-
if (originalProvider === "anthropic" && level === "max") return 64000;
|
|
1768
|
-
return THINKING_BUDGET_MAP[level] ?? THINKING_BUDGET_MAP.medium;
|
|
1769
|
-
}
|
|
1770
|
-
|
|
1771
|
-
export function isGeminiCliOnlyId(id: string): boolean {
|
|
1772
|
-
const lower = String(id).toLowerCase();
|
|
1773
|
-
// Observer: preview, gemini-3, gemini-3.1, gemini-3.5, gemini-3.6, gemini-3.7 MUST be prod-only (+ daily) - skip sandbox
|
|
1774
|
-
return (
|
|
1775
|
-
lower.includes("preview") ||
|
|
1776
|
-
lower.startsWith("gemini-3.") ||
|
|
1777
|
-
lower.startsWith("gemini-3-") ||
|
|
1778
|
-
lower === "gemini-3-flash" ||
|
|
1779
|
-
lower === "gemini-3-pro" ||
|
|
1780
|
-
lower.includes("gemini-3.5") ||
|
|
1781
|
-
lower.includes("gemini-3.6") ||
|
|
1782
|
-
lower.includes("gemini-3.7") ||
|
|
1783
|
-
lower.includes("deep-think")
|
|
1784
|
-
);
|
|
1785
|
-
}
|
|
1786
|
-
|
|
1787
|
-
// ---------------------------------------------------------------------------
|
|
1788
|
-
// Section 09. Factory for ModelDefinition - bilingual pt/en
|
|
1789
|
-
// ---------------------------------------------------------------------------
|
|
1790
|
-
|
|
1791
|
-
function makeDescription(
|
|
1792
|
-
id: string,
|
|
1793
|
-
family: string,
|
|
1794
|
-
thinking: ThinkingLevel,
|
|
1795
|
-
isPreview: boolean,
|
|
1796
|
-
isImage: boolean,
|
|
1797
|
-
group: ModelGroup,
|
|
1798
|
-
releaseDate: string,
|
|
1799
|
-
): { pt: string; en: string } {
|
|
1800
|
-
const previewTagPt = isPreview ? " (preview - pode mudar, sem SLA)" : "";
|
|
1801
|
-
const previewTagEn = isPreview ? " (preview - may change, no SLA)" : "";
|
|
1802
|
-
const imageTagPt = isImage ? " Saida imagem + texto." : "";
|
|
1803
|
-
const imageTagEn = isImage ? " Image + text output." : "";
|
|
1804
|
-
const groupPt =
|
|
1805
|
-
group === "gemini-cli"
|
|
1806
|
-
? "grupo gemini-cli (PROD-only, bypass Project ID via loadCodeAssist)"
|
|
1807
|
-
: "grupo antigravity (PROD/DAILY/SANDBOX, fallback rising-fact-p41fc)";
|
|
1808
|
-
const groupEn =
|
|
1809
|
-
group === "gemini-cli"
|
|
1810
|
-
? "gemini-cli group (PROD-only, bypasses Project ID via loadCodeAssist)"
|
|
1811
|
-
: "antigravity group (PROD/DAILY/SANDBOX, fallback rising-fact-p41fc)";
|
|
1812
|
-
const windowPt = family.includes("claude") || family.includes("gpt-oss") ? "janela 200k" : "janela 1.048.576";
|
|
1813
|
-
const windowEn = family.includes("claude") || family.includes("gpt-oss") ? "200k window" : "1,048,576 window";
|
|
1814
|
-
const outPt = family.includes("claude") || family.includes("gpt-oss") ? "saida 64k" : "saida 65.535";
|
|
1815
|
-
const outEn = family.includes("claude") || family.includes("gpt-oss") ? "64k output" : "65,535 output";
|
|
1816
|
-
const thinkingPt = `thinking ${thinking}`;
|
|
1817
|
-
const thinkingEn = `thinking ${thinking}`;
|
|
1818
|
-
|
|
1819
|
-
const pt = `${id} - ${family}${previewTagPt} - ${windowPt}, ${outPt}, ${thinkingPt}, ${groupPt}. Multimodal texto/imagem/PDF${imageTagPt}. Bypass Project ID direto cloudcode-pa.googleapis.com sem localhost v1 proxy. Ref: pi-antigravity-auth, 9router, OmniRoute. Release ${releaseDate}. Catalogo ${CATALOG_DATE_BR}.`;
|
|
1820
|
-
const en = `${id} - ${family}${previewTagEn} - ${windowEn}, ${outEn}, ${thinkingEn}, ${groupEn}. Multimodal text/image/PDF${imageTagEn}. Bypasses Project ID directly via cloudcode-pa.googleapis.com without localhost v1 proxy. Ref: pi-antigravity-auth, 9router, OmniRoute. Release ${releaseDate}. Catalog ${CATALOG_DATE_ISO}.`;
|
|
1821
|
-
return { pt, en };
|
|
1822
|
-
}
|
|
1823
|
-
|
|
1824
|
-
function defineModel(
|
|
1825
|
-
id: string,
|
|
1826
|
-
family: string,
|
|
1827
|
-
originalProvider: OriginalProvider,
|
|
1828
|
-
group: ModelGroup,
|
|
1829
|
-
releaseDate: string,
|
|
1830
|
-
opts: {
|
|
1831
|
-
thinkingLevel?: ThinkingLevel | undefined;
|
|
1832
|
-
isPreview?: boolean | undefined;
|
|
1833
|
-
isImage?: boolean | undefined;
|
|
1834
|
-
isThinking?: boolean | undefined;
|
|
1835
|
-
contextWindow?: number | undefined;
|
|
1836
|
-
outputLimit?: number | undefined;
|
|
1837
|
-
aliases?: string[] | undefined;
|
|
1838
|
-
tags?: string[] | undefined;
|
|
1839
|
-
deprecated?: boolean | undefined;
|
|
1840
|
-
} = {},
|
|
1841
|
-
): ModelDefinition {
|
|
1842
|
-
const thinkingLevel = opts.thinkingLevel ?? parseThinkingLevelFromId(id);
|
|
1843
|
-
const isPreview = opts.isPreview ?? id.toLowerCase().includes("preview");
|
|
1844
|
-
const isImage =
|
|
1845
|
-
opts.isImage ??
|
|
1846
|
-
(id.toLowerCase().includes("flash-image") ||
|
|
1847
|
-
(id.toLowerCase().includes("image") && !id.toLowerCase().includes("lite")));
|
|
1848
|
-
const isThinking =
|
|
1849
|
-
opts.isThinking ??
|
|
1850
|
-
(thinkingLevel !== "minimal" ||
|
|
1851
|
-
id.toLowerCase().includes("thinking") ||
|
|
1852
|
-
id.toLowerCase().includes("deep-think") ||
|
|
1853
|
-
id.toLowerCase().includes("high") ||
|
|
1854
|
-
id.toLowerCase().includes("low") ||
|
|
1855
|
-
id.toLowerCase().includes("medium") ||
|
|
1856
|
-
id.toLowerCase().includes("tiered"));
|
|
1857
|
-
const contextWindow =
|
|
1858
|
-
opts.contextWindow ??
|
|
1859
|
-
(originalProvider === "google"
|
|
1860
|
-
? CONTEXT_WINDOW_GEMINI
|
|
1861
|
-
: originalProvider === "anthropic"
|
|
1862
|
-
? CONTEXT_WINDOW_CLAUDE
|
|
1863
|
-
: CONTEXT_WINDOW_GPT_OSS);
|
|
1864
|
-
const outputLimit =
|
|
1865
|
-
opts.outputLimit ??
|
|
1866
|
-
(originalProvider === "google"
|
|
1867
|
-
? OUTPUT_LIMIT_GEMINI
|
|
1868
|
-
: originalProvider === "anthropic"
|
|
1869
|
-
? OUTPUT_LIMIT_CLAUDE
|
|
1870
|
-
: OUTPUT_LIMIT_GPT_OSS);
|
|
1871
|
-
const thinkingBudget = getThinkingBudgetForLevel(thinkingLevel, originalProvider);
|
|
1872
|
-
const prodOnly = group === "gemini-cli" || isGeminiCliOnlyId(id);
|
|
1873
|
-
const allowedEndpoints = prodOnly ? ENDPOINT_ORDER_GEMINI_CLI : ENDPOINT_ORDER_ANTIGRAVITY;
|
|
1874
|
-
const fallbackAllowed = group === "antigravity";
|
|
1875
|
-
|
|
1876
|
-
const description = makeDescription(id, family, thinkingLevel, isPreview, isImage, group, releaseDate);
|
|
1877
|
-
|
|
1878
|
-
const baseAliases = opts.aliases ?? [];
|
|
1879
|
-
// OmniRoute / 9router aliases
|
|
1880
|
-
const omniAliases = [
|
|
1881
|
-
normalizeModelId(id),
|
|
1882
|
-
id.toLowerCase(),
|
|
1883
|
-
`google/${normalizeModelId(id)}`,
|
|
1884
|
-
`antigravity/${normalizeModelId(id)}`,
|
|
1885
|
-
`9router/${normalizeModelId(id)}`,
|
|
1886
|
-
];
|
|
1887
|
-
|
|
1888
|
-
return {
|
|
1889
|
-
id,
|
|
1890
|
-
displayName: id,
|
|
1891
|
-
family,
|
|
1892
|
-
catalogDate: CATALOG_DATE_ISO,
|
|
1893
|
-
releaseDate,
|
|
1894
|
-
contextWindow,
|
|
1895
|
-
outputLimit,
|
|
1896
|
-
provider: "google",
|
|
1897
|
-
originalProvider,
|
|
1898
|
-
group,
|
|
1899
|
-
thinkingLevel,
|
|
1900
|
-
thinkingBudget,
|
|
1901
|
-
isThinking,
|
|
1902
|
-
isPreview,
|
|
1903
|
-
isImage,
|
|
1904
|
-
modalities: {
|
|
1905
|
-
input: ["text", "image", "pdf"],
|
|
1906
|
-
output: isImage ? ["text", "image"] : ["text"],
|
|
1907
|
-
},
|
|
1908
|
-
description,
|
|
1909
|
-
aliases: Array.from(new Set([...baseAliases, ...omniAliases, id])),
|
|
1910
|
-
endpointHints: {
|
|
1911
|
-
prodOnly,
|
|
1912
|
-
skipSandbox: prodOnly,
|
|
1913
|
-
fallbackProjectAllowed: fallbackAllowed,
|
|
1914
|
-
allowedEndpoints,
|
|
1915
|
-
defaultEndpoint: CODE_ASSIST_ENDPOINTS.PROD,
|
|
1916
|
-
},
|
|
1917
|
-
tags: [
|
|
1918
|
-
family,
|
|
1919
|
-
group,
|
|
1920
|
-
originalProvider,
|
|
1921
|
-
thinkingLevel,
|
|
1922
|
-
isPreview ? "preview" : "stable",
|
|
1923
|
-
isImage ? "image" : "text",
|
|
1924
|
-
isThinking ? "thinking" : "no-thinking",
|
|
1925
|
-
`release-${releaseDate}`,
|
|
1926
|
-
"direct-cloudcode-pa",
|
|
1927
|
-
"no-localhost-proxy",
|
|
1928
|
-
"bypass-project-id-loadCodeAssist",
|
|
1929
|
-
"pi-antigravity-auth",
|
|
1930
|
-
"9router",
|
|
1931
|
-
"OmniRoute",
|
|
1932
|
-
...(opts.tags ?? []),
|
|
1933
|
-
],
|
|
1934
|
-
references: [...REFERENCES],
|
|
1935
|
-
deprecated: opts.deprecated,
|
|
1936
|
-
};
|
|
1937
|
-
}
|
|
1938
|
-
|
|
1939
|
-
// ---------------------------------------------------------------------------
|
|
1940
|
-
// Section 10. COMPLETE CATALOG frozen at 25/08/2026 - WAVE 5 FIX V3
|
|
1941
|
-
// Base list (incl. merged flat-catalog ids) + antigravity- variants
|
|
1942
|
-
// ---------------------------------------------------------------------------
|
|
1943
|
-
|
|
1944
|
-
// Helper to create antigravity variant id
|
|
1945
|
-
function antigravityId(baseId: string): string {
|
|
1946
|
-
return baseId.startsWith("antigravity-") ? baseId : `antigravity-${baseId}`;
|
|
1947
|
-
}
|
|
1948
|
-
|
|
1949
|
-
// Release date mapping based on Wikipedia + timeline + flat catalogs
|
|
1950
|
-
const RELEASE_DATES: Record<string, string> = {
|
|
1951
|
-
// Aug 13 2026 - Gemini 3.7 Flash family GA
|
|
1952
|
-
"gemini-3.7-flash": "2026-08-13",
|
|
1953
|
-
"gemini-3.7-flash-high": "2026-08-13",
|
|
1954
|
-
"gemini-3.7-flash-medium": "2026-08-13",
|
|
1955
|
-
"gemini-3.7-flash-low": "2026-08-13",
|
|
1956
|
-
"gemini-3.7-flash-tiered": "2026-08-13",
|
|
1957
|
-
"gemini-3.7-flash-minimal": "2026-08-13",
|
|
1958
|
-
"gemini-3.7-flash-preview": "2026-08-13",
|
|
1959
|
-
// July 21 2026 - Gemini 3.6 Flash family
|
|
1960
|
-
"gemini-3.6-flash-high": WIKIPEDIA_GEMINI_3_6_FLASH_DATE,
|
|
1961
|
-
"gemini-3.6-flash-medium": WIKIPEDIA_GEMINI_3_6_FLASH_DATE,
|
|
1962
|
-
"gemini-3.6-flash-low": WIKIPEDIA_GEMINI_3_6_FLASH_DATE,
|
|
1963
|
-
"gemini-3.6-flash-tiered": WIKIPEDIA_GEMINI_3_6_FLASH_DATE,
|
|
1964
|
-
"gemini-3.6-flash-minimal": WIKIPEDIA_GEMINI_3_6_FLASH_DATE,
|
|
1965
|
-
"gemini-3.6-flash-preview": WIKIPEDIA_GEMINI_3_6_FLASH_DATE,
|
|
1966
|
-
"gemini-3.6-flash": WIKIPEDIA_GEMINI_3_6_FLASH_DATE,
|
|
1967
|
-
// Gemini 3.5 - approx June 2026
|
|
1968
|
-
"gemini-3.5-flash-high": "2026-06-15",
|
|
1969
|
-
"gemini-3.5-flash-medium": "2026-06-15",
|
|
1970
|
-
"gemini-3.5-flash-low": "2026-06-15",
|
|
1971
|
-
"gemini-3.5-flash-preview": "2026-06-20",
|
|
1972
|
-
"gemini-3.5-flash": "2026-06-15",
|
|
1973
|
-
"gemini-3.5-flash-lite": "2026-06-15",
|
|
1974
|
-
"gemini-3.5-flash-lite-preview": "2026-06-20",
|
|
1975
|
-
// Gemini 3.1 Pro - Feb 19 2026 Wikipedia
|
|
1976
|
-
"gemini-3.1-pro-high": WIKIPEDIA_GEMINI_3_1_PRO_DATE,
|
|
1977
|
-
"gemini-3.1-pro-low": WIKIPEDIA_GEMINI_3_1_PRO_DATE,
|
|
1978
|
-
"gemini-3.1-pro": WIKIPEDIA_GEMINI_3_1_PRO_DATE,
|
|
1979
|
-
"gemini-3.1-flash-image": "2026-03-10",
|
|
1980
|
-
"gemini-3.1-flash-lite": "2026-03-10",
|
|
1981
|
-
// Gemini 3
|
|
1982
|
-
"gemini-3-flash": "2026-05-11",
|
|
1983
|
-
"gemini-3-pro": "2026-05-11",
|
|
1984
|
-
"gemini-3-deep-think": "2026-05-20",
|
|
1985
|
-
"gemini-3-pro-preview": "2026-04-20",
|
|
1986
|
-
"gemini-3-flash-preview": "2026-04-20",
|
|
1987
|
-
"gemini-3.1-pro-preview": "2026-02-19",
|
|
1988
|
-
"gemini-3.1-pro-preview-customtools": "2026-02-25",
|
|
1989
|
-
// Gemini 2.5
|
|
1990
|
-
"gemini-2.5-pro": "2025-12-10",
|
|
1991
|
-
"gemini-2.5-pro-preview": "2025-12-10",
|
|
1992
|
-
"gemini-2.5-flash": "2025-12-10",
|
|
1993
|
-
"gemini-2.5-flash-lite": "2025-12-15",
|
|
1994
|
-
// Claude 4.5 / 4.6 - 2026 Q2
|
|
1995
|
-
"claude-sonnet-4-6": "2026-04-15",
|
|
1996
|
-
"claude-sonnet-4-6-thinking": "2026-04-15",
|
|
1997
|
-
"claude-opus-4-6": "2026-04-15",
|
|
1998
|
-
"claude-opus-4-6-thinking": "2026-04-15",
|
|
1999
|
-
"claude-sonnet-4-5": "2026-02-10",
|
|
2000
|
-
"claude-opus-4-5-thinking": "2026-02-10",
|
|
2001
|
-
// GPT-OSS 120B - 2026
|
|
2002
|
-
"gpt-oss-120b": "2026-05-01",
|
|
2003
|
-
"gpt-oss-120b-medium": "2026-05-01",
|
|
2004
|
-
"gpt-oss-120b-high": "2026-05-01",
|
|
2005
|
-
};
|
|
2006
|
-
|
|
2007
|
-
function releaseDateFor(id: string): string {
|
|
2008
|
-
const base = normalizeModelId(id);
|
|
2009
|
-
return RELEASE_DATES[base] ?? RELEASE_DATES[id] ?? "2026-08-25";
|
|
2010
|
-
}
|
|
2011
|
-
|
|
2012
|
-
// Build base models list - includes every id merged from flat catalogs v3/v4/v5
|
|
2013
|
-
|
|
2014
|
-
const BASE_MODELS: Array<{
|
|
2015
|
-
id: string;
|
|
2016
|
-
family: string;
|
|
2017
|
-
originalProvider: OriginalProvider;
|
|
2018
|
-
group: ModelGroup;
|
|
2019
|
-
thinkingLevel?: ThinkingLevel;
|
|
2020
|
-
isPreview?: boolean;
|
|
2021
|
-
isImage?: boolean;
|
|
2022
|
-
isThinking?: boolean;
|
|
2023
|
-
}> = [
|
|
2024
|
-
// Gemini 3.7 Flash - GA Aug 13 2026 - most intelligent workhorse
|
|
2025
|
-
{
|
|
2026
|
-
id: "gemini-3.7-flash",
|
|
2027
|
-
family: "gemini-3.7-flash",
|
|
2028
|
-
originalProvider: "google",
|
|
2029
|
-
group: "antigravity",
|
|
2030
|
-
thinkingLevel: "medium",
|
|
2031
|
-
},
|
|
2032
|
-
{
|
|
2033
|
-
id: "gemini-3.7-flash-high",
|
|
2034
|
-
family: "gemini-3.7-flash",
|
|
2035
|
-
originalProvider: "google",
|
|
2036
|
-
group: "antigravity",
|
|
2037
|
-
thinkingLevel: "high",
|
|
2038
|
-
},
|
|
2039
|
-
{
|
|
2040
|
-
id: "gemini-3.7-flash-medium",
|
|
2041
|
-
family: "gemini-3.7-flash",
|
|
2042
|
-
originalProvider: "google",
|
|
2043
|
-
group: "antigravity",
|
|
2044
|
-
thinkingLevel: "medium",
|
|
2045
|
-
},
|
|
2046
|
-
{
|
|
2047
|
-
id: "gemini-3.7-flash-low",
|
|
2048
|
-
family: "gemini-3.7-flash",
|
|
2049
|
-
originalProvider: "google",
|
|
2050
|
-
group: "antigravity",
|
|
2051
|
-
thinkingLevel: "low",
|
|
2052
|
-
},
|
|
2053
|
-
{
|
|
2054
|
-
id: "gemini-3.7-flash-tiered",
|
|
2055
|
-
family: "gemini-3.7-flash",
|
|
2056
|
-
originalProvider: "google",
|
|
2057
|
-
group: "antigravity",
|
|
2058
|
-
thinkingLevel: "tiered",
|
|
2059
|
-
},
|
|
2060
|
-
{
|
|
2061
|
-
id: "gemini-3.7-flash-minimal",
|
|
2062
|
-
family: "gemini-3.7-flash",
|
|
2063
|
-
originalProvider: "google",
|
|
2064
|
-
group: "antigravity",
|
|
2065
|
-
thinkingLevel: "minimal",
|
|
2066
|
-
},
|
|
2067
|
-
{
|
|
2068
|
-
id: "gemini-3.7-flash-preview",
|
|
2069
|
-
family: "gemini-3.7-flash",
|
|
2070
|
-
originalProvider: "google",
|
|
2071
|
-
group: "gemini-cli",
|
|
2072
|
-
thinkingLevel: "medium",
|
|
2073
|
-
isPreview: true,
|
|
2074
|
-
},
|
|
2075
|
-
|
|
2076
|
-
// Gemini 3.6 Flash - 7 variants - Wikipedia July 21 2026
|
|
2077
|
-
{
|
|
2078
|
-
id: "gemini-3.6-flash-high",
|
|
2079
|
-
family: "gemini-3.6-flash",
|
|
2080
|
-
originalProvider: "google",
|
|
2081
|
-
group: "gemini-cli",
|
|
2082
|
-
thinkingLevel: "high",
|
|
2083
|
-
},
|
|
2084
|
-
{
|
|
2085
|
-
id: "gemini-3.6-flash-medium",
|
|
2086
|
-
family: "gemini-3.6-flash",
|
|
2087
|
-
originalProvider: "google",
|
|
2088
|
-
group: "gemini-cli",
|
|
2089
|
-
thinkingLevel: "medium",
|
|
2090
|
-
},
|
|
2091
|
-
{
|
|
2092
|
-
id: "gemini-3.6-flash-low",
|
|
2093
|
-
family: "gemini-3.6-flash",
|
|
2094
|
-
originalProvider: "google",
|
|
2095
|
-
group: "gemini-cli",
|
|
2096
|
-
thinkingLevel: "low",
|
|
2097
|
-
},
|
|
2098
|
-
{
|
|
2099
|
-
id: "gemini-3.6-flash-tiered",
|
|
2100
|
-
family: "gemini-3.6-flash",
|
|
2101
|
-
originalProvider: "google",
|
|
2102
|
-
group: "gemini-cli",
|
|
2103
|
-
thinkingLevel: "tiered",
|
|
2104
|
-
},
|
|
2105
|
-
{
|
|
2106
|
-
id: "gemini-3.6-flash-minimal",
|
|
2107
|
-
family: "gemini-3.6-flash",
|
|
2108
|
-
originalProvider: "google",
|
|
2109
|
-
group: "gemini-cli",
|
|
2110
|
-
thinkingLevel: "minimal",
|
|
2111
|
-
},
|
|
2112
|
-
{
|
|
2113
|
-
id: "gemini-3.6-flash-preview",
|
|
2114
|
-
family: "gemini-3.6-flash",
|
|
2115
|
-
originalProvider: "google",
|
|
2116
|
-
group: "gemini-cli",
|
|
2117
|
-
thinkingLevel: "medium",
|
|
2118
|
-
isPreview: true,
|
|
2119
|
-
},
|
|
2120
|
-
{
|
|
2121
|
-
id: "gemini-3.6-flash",
|
|
2122
|
-
family: "gemini-3.6-flash",
|
|
2123
|
-
originalProvider: "google",
|
|
2124
|
-
group: "gemini-cli",
|
|
2125
|
-
thinkingLevel: "medium",
|
|
2126
|
-
},
|
|
2127
|
-
|
|
2128
|
-
// Gemini 3.5 Flash - 7 variants
|
|
2129
|
-
{
|
|
2130
|
-
id: "gemini-3.5-flash-high",
|
|
2131
|
-
family: "gemini-3.5-flash",
|
|
2132
|
-
originalProvider: "google",
|
|
2133
|
-
group: "gemini-cli",
|
|
2134
|
-
thinkingLevel: "high",
|
|
2135
|
-
},
|
|
2136
|
-
{
|
|
2137
|
-
id: "gemini-3.5-flash-medium",
|
|
2138
|
-
family: "gemini-3.5-flash",
|
|
2139
|
-
originalProvider: "google",
|
|
2140
|
-
group: "gemini-cli",
|
|
2141
|
-
thinkingLevel: "medium",
|
|
2142
|
-
},
|
|
2143
|
-
{
|
|
2144
|
-
id: "gemini-3.5-flash-low",
|
|
2145
|
-
family: "gemini-3.5-flash",
|
|
2146
|
-
originalProvider: "google",
|
|
2147
|
-
group: "gemini-cli",
|
|
2148
|
-
thinkingLevel: "low",
|
|
2149
|
-
},
|
|
2150
|
-
{
|
|
2151
|
-
id: "gemini-3.5-flash",
|
|
2152
|
-
family: "gemini-3.5-flash",
|
|
2153
|
-
originalProvider: "google",
|
|
2154
|
-
group: "gemini-cli",
|
|
2155
|
-
thinkingLevel: "medium",
|
|
2156
|
-
},
|
|
2157
|
-
{
|
|
2158
|
-
id: "gemini-3.5-flash-lite",
|
|
2159
|
-
family: "gemini-3.5-flash",
|
|
2160
|
-
originalProvider: "google",
|
|
2161
|
-
group: "gemini-cli",
|
|
2162
|
-
thinkingLevel: "low",
|
|
2163
|
-
},
|
|
2164
|
-
{
|
|
2165
|
-
id: "gemini-3.5-flash-lite-preview",
|
|
2166
|
-
family: "gemini-3.5-flash",
|
|
2167
|
-
originalProvider: "google",
|
|
2168
|
-
group: "gemini-cli",
|
|
2169
|
-
thinkingLevel: "low",
|
|
2170
|
-
isPreview: true,
|
|
2171
|
-
},
|
|
2172
|
-
{
|
|
2173
|
-
id: "gemini-3.5-flash-preview",
|
|
2174
|
-
family: "gemini-3.5-flash",
|
|
2175
|
-
originalProvider: "google",
|
|
2176
|
-
group: "gemini-cli",
|
|
2177
|
-
thinkingLevel: "medium",
|
|
2178
|
-
isPreview: true,
|
|
2179
|
-
},
|
|
2180
|
-
|
|
2181
|
-
// Gemini 3.1 Pro / Flash - Feb 19 2026 Wikipedia
|
|
2182
|
-
{
|
|
2183
|
-
id: "gemini-3.1-pro-high",
|
|
2184
|
-
family: "gemini-3.1-pro",
|
|
2185
|
-
originalProvider: "google",
|
|
2186
|
-
group: "gemini-cli",
|
|
2187
|
-
thinkingLevel: "high",
|
|
2188
|
-
},
|
|
2189
|
-
{
|
|
2190
|
-
id: "gemini-3.1-pro-low",
|
|
2191
|
-
family: "gemini-3.1-pro",
|
|
2192
|
-
originalProvider: "google",
|
|
2193
|
-
group: "gemini-cli",
|
|
2194
|
-
thinkingLevel: "low",
|
|
2195
|
-
},
|
|
2196
|
-
{
|
|
2197
|
-
id: "gemini-3.1-pro",
|
|
2198
|
-
family: "gemini-3.1-pro",
|
|
2199
|
-
originalProvider: "google",
|
|
2200
|
-
group: "gemini-cli",
|
|
2201
|
-
thinkingLevel: "medium",
|
|
2202
|
-
},
|
|
2203
|
-
{
|
|
2204
|
-
id: "gemini-3.1-flash-image",
|
|
2205
|
-
family: "gemini-3.1-flash",
|
|
2206
|
-
originalProvider: "google",
|
|
2207
|
-
group: "gemini-cli",
|
|
2208
|
-
thinkingLevel: "minimal",
|
|
2209
|
-
isImage: true,
|
|
2210
|
-
},
|
|
2211
|
-
{
|
|
2212
|
-
id: "gemini-3.1-flash-lite",
|
|
2213
|
-
family: "gemini-3.1-flash",
|
|
2214
|
-
originalProvider: "google",
|
|
2215
|
-
group: "gemini-cli",
|
|
2216
|
-
thinkingLevel: "low",
|
|
2217
|
-
},
|
|
2218
|
-
|
|
2219
|
-
// Gemini 3 family - May 2026
|
|
2220
|
-
{
|
|
2221
|
-
id: "gemini-3-flash",
|
|
2222
|
-
family: "gemini-3-flash",
|
|
2223
|
-
originalProvider: "google",
|
|
2224
|
-
group: "gemini-cli",
|
|
2225
|
-
thinkingLevel: "medium",
|
|
2226
|
-
},
|
|
2227
|
-
{
|
|
2228
|
-
id: "gemini-3-pro",
|
|
2229
|
-
family: "gemini-3-pro",
|
|
2230
|
-
originalProvider: "google",
|
|
2231
|
-
group: "gemini-cli",
|
|
2232
|
-
thinkingLevel: "medium",
|
|
2233
|
-
},
|
|
2234
|
-
{
|
|
2235
|
-
id: "gemini-3-deep-think",
|
|
2236
|
-
family: "gemini-3-deep-think",
|
|
2237
|
-
originalProvider: "google",
|
|
2238
|
-
group: "gemini-cli",
|
|
2239
|
-
thinkingLevel: "high",
|
|
2240
|
-
},
|
|
2241
|
-
|
|
2242
|
-
// Gemini 2.5 - Dec 2025, routed via antigravity pool but also valid via gemini-cli
|
|
2243
|
-
{
|
|
2244
|
-
id: "gemini-2.5-pro",
|
|
2245
|
-
family: "gemini-2.5-pro",
|
|
2246
|
-
originalProvider: "google",
|
|
2247
|
-
group: "antigravity",
|
|
2248
|
-
thinkingLevel: "medium",
|
|
2249
|
-
},
|
|
2250
|
-
{
|
|
2251
|
-
id: "gemini-2.5-pro-preview",
|
|
2252
|
-
family: "gemini-2.5-pro",
|
|
2253
|
-
originalProvider: "google",
|
|
2254
|
-
group: "gemini-cli",
|
|
2255
|
-
thinkingLevel: "medium",
|
|
2256
|
-
isPreview: true,
|
|
2257
|
-
},
|
|
2258
|
-
{
|
|
2259
|
-
id: "gemini-2.5-flash",
|
|
2260
|
-
family: "gemini-2.5-flash",
|
|
2261
|
-
originalProvider: "google",
|
|
2262
|
-
group: "antigravity",
|
|
2263
|
-
thinkingLevel: "medium",
|
|
2264
|
-
},
|
|
2265
|
-
{
|
|
2266
|
-
id: "gemini-2.5-flash-lite",
|
|
2267
|
-
family: "gemini-2.5-flash",
|
|
2268
|
-
originalProvider: "google",
|
|
2269
|
-
group: "antigravity",
|
|
2270
|
-
thinkingLevel: "low",
|
|
2271
|
-
},
|
|
2272
|
-
|
|
2273
|
-
// Claude Sonnet/Opus 4.6 (plain + thinking) / 4.5
|
|
2274
|
-
{
|
|
2275
|
-
id: "claude-sonnet-4-6",
|
|
2276
|
-
family: "claude-4-6-sonnet",
|
|
2277
|
-
originalProvider: "anthropic",
|
|
2278
|
-
group: "antigravity",
|
|
2279
|
-
thinkingLevel: "medium",
|
|
2280
|
-
isThinking: false,
|
|
2281
|
-
},
|
|
2282
|
-
{
|
|
2283
|
-
id: "claude-sonnet-4-6-thinking",
|
|
2284
|
-
family: "claude-4-6-sonnet",
|
|
2285
|
-
originalProvider: "anthropic",
|
|
2286
|
-
group: "antigravity",
|
|
2287
|
-
thinkingLevel: "high",
|
|
2288
|
-
},
|
|
2289
|
-
{
|
|
2290
|
-
id: "claude-opus-4-6",
|
|
2291
|
-
family: "claude-4-6-opus",
|
|
2292
|
-
originalProvider: "anthropic",
|
|
2293
|
-
group: "antigravity",
|
|
2294
|
-
thinkingLevel: "medium",
|
|
2295
|
-
isThinking: false,
|
|
2296
|
-
},
|
|
2297
|
-
{
|
|
2298
|
-
id: "claude-opus-4-6-thinking",
|
|
2299
|
-
family: "claude-4-6-opus",
|
|
2300
|
-
originalProvider: "anthropic",
|
|
2301
|
-
group: "antigravity",
|
|
2302
|
-
thinkingLevel: "high",
|
|
2303
|
-
},
|
|
2304
|
-
{
|
|
2305
|
-
id: "claude-sonnet-4-5",
|
|
2306
|
-
family: "claude-4-5-sonnet",
|
|
2307
|
-
originalProvider: "anthropic",
|
|
2308
|
-
group: "antigravity",
|
|
2309
|
-
thinkingLevel: "medium",
|
|
2310
|
-
},
|
|
2311
|
-
{
|
|
2312
|
-
id: "claude-opus-4-5-thinking",
|
|
2313
|
-
family: "claude-4-5-opus",
|
|
2314
|
-
originalProvider: "anthropic",
|
|
2315
|
-
group: "antigravity",
|
|
2316
|
-
thinkingLevel: "high",
|
|
2317
|
-
},
|
|
2318
|
-
|
|
2319
|
-
// GPT-OSS 120B (bare + variants) - routed via Antigravity as gpt-oss
|
|
2320
|
-
{
|
|
2321
|
-
id: "gpt-oss-120b",
|
|
2322
|
-
family: "gpt-oss-120b",
|
|
2323
|
-
originalProvider: "openai-oss",
|
|
2324
|
-
group: "antigravity",
|
|
2325
|
-
thinkingLevel: "minimal",
|
|
2326
|
-
isThinking: false,
|
|
2327
|
-
},
|
|
2328
|
-
{
|
|
2329
|
-
id: "gpt-oss-120b-medium",
|
|
2330
|
-
family: "gpt-oss-120b",
|
|
2331
|
-
originalProvider: "openai-oss",
|
|
2332
|
-
group: "antigravity",
|
|
2333
|
-
thinkingLevel: "medium",
|
|
2334
|
-
},
|
|
2335
|
-
{
|
|
2336
|
-
id: "gpt-oss-120b-high",
|
|
2337
|
-
family: "gpt-oss-120b",
|
|
2338
|
-
originalProvider: "openai-oss",
|
|
2339
|
-
group: "antigravity",
|
|
2340
|
-
thinkingLevel: "high",
|
|
2341
|
-
},
|
|
2342
|
-
|
|
2343
|
-
// Preview - April 2026 - prod-only
|
|
2344
|
-
{
|
|
2345
|
-
id: "gemini-3-pro-preview",
|
|
2346
|
-
family: "gemini-3-pro",
|
|
2347
|
-
originalProvider: "google",
|
|
2348
|
-
group: "gemini-cli",
|
|
2349
|
-
thinkingLevel: "medium",
|
|
2350
|
-
isPreview: true,
|
|
2351
|
-
},
|
|
2352
|
-
{
|
|
2353
|
-
id: "gemini-3-flash-preview",
|
|
2354
|
-
family: "gemini-3-flash",
|
|
2355
|
-
originalProvider: "google",
|
|
2356
|
-
group: "gemini-cli",
|
|
2357
|
-
thinkingLevel: "medium",
|
|
2358
|
-
isPreview: true,
|
|
2359
|
-
},
|
|
2360
|
-
{
|
|
2361
|
-
id: "gemini-3.1-pro-preview",
|
|
2362
|
-
family: "gemini-3.1-pro",
|
|
2363
|
-
originalProvider: "google",
|
|
2364
|
-
group: "gemini-cli",
|
|
2365
|
-
thinkingLevel: "medium",
|
|
2366
|
-
isPreview: true,
|
|
2367
|
-
},
|
|
2368
|
-
{
|
|
2369
|
-
id: "gemini-3.1-pro-preview-customtools",
|
|
2370
|
-
family: "gemini-3.1-pro",
|
|
2371
|
-
originalProvider: "google",
|
|
2372
|
-
group: "gemini-cli",
|
|
2373
|
-
thinkingLevel: "medium",
|
|
2374
|
-
isPreview: true,
|
|
2375
|
-
},
|
|
2376
|
-
];
|
|
2377
|
-
|
|
2378
|
-
function buildCatalog(): ModelDefinition[] {
|
|
2379
|
-
const list: ModelDefinition[] = [];
|
|
2380
|
-
|
|
2381
|
-
for (const b of BASE_MODELS) {
|
|
2382
|
-
const rd = releaseDateFor(b.id);
|
|
2383
|
-
list.push(
|
|
2384
|
-
defineModel(b.id, b.family, b.originalProvider, b.group, rd, {
|
|
2385
|
-
thinkingLevel: b.thinkingLevel,
|
|
2386
|
-
isPreview: b.isPreview,
|
|
2387
|
-
isImage: b.isImage,
|
|
2388
|
-
isThinking: b.isThinking,
|
|
2389
|
-
}),
|
|
2390
|
-
);
|
|
2391
|
-
// antigravity- variant - same metadata but forced antigravity group for compatibility with the older lineage
|
|
2392
|
-
// Observer: 9router maps antigravity-* to antigravity pool, skipping gemini-cli prod-only rule for fallback
|
|
2393
|
-
const agId = antigravityId(b.id);
|
|
2394
|
-
if (agId !== b.id) {
|
|
2395
|
-
// For antigravity- variants, group forced to antigravity, but keep prodOnly hint if original was prodOnly
|
|
2396
|
-
// This allows cli_first: false to still work with fallback project
|
|
2397
|
-
const agGroup: ModelGroup = "antigravity";
|
|
2398
|
-
list.push(
|
|
2399
|
-
defineModel(agId, b.family, b.originalProvider, agGroup, rd, {
|
|
2400
|
-
thinkingLevel: b.thinkingLevel,
|
|
2401
|
-
isPreview: b.isPreview,
|
|
2402
|
-
isImage: b.isImage,
|
|
2403
|
-
isThinking: b.isThinking,
|
|
2404
|
-
aliases: [b.id, normalizeModelId(b.id)],
|
|
2405
|
-
}),
|
|
2406
|
-
);
|
|
2407
|
-
}
|
|
2408
|
-
}
|
|
2409
|
-
|
|
2410
|
-
// Add extra historical models that opencode.txt mentions as supported (to avoid missing timeline)
|
|
2411
|
-
const extraHistorical: Array<{
|
|
2412
|
-
id: string;
|
|
2413
|
-
family: string;
|
|
2414
|
-
originalProvider: OriginalProvider;
|
|
2415
|
-
group: ModelGroup;
|
|
2416
|
-
rd: string;
|
|
2417
|
-
}> = [
|
|
2418
|
-
{ id: "gemini-2.5", family: "gemini-2.5", originalProvider: "google", group: "antigravity", rd: "2025-12-01" },
|
|
2419
|
-
{
|
|
2420
|
-
id: "antigravity-gemini-3-pro",
|
|
2421
|
-
family: "gemini-3-pro",
|
|
2422
|
-
originalProvider: "google",
|
|
2423
|
-
group: "antigravity",
|
|
2424
|
-
rd: "2026-05-11",
|
|
2425
|
-
},
|
|
2426
|
-
{
|
|
2427
|
-
id: "antigravity-gemini-3-flash",
|
|
2428
|
-
family: "gemini-3-flash",
|
|
2429
|
-
originalProvider: "google",
|
|
2430
|
-
group: "antigravity",
|
|
2431
|
-
rd: "2026-05-11",
|
|
2432
|
-
},
|
|
2433
|
-
{
|
|
2434
|
-
id: "antigravity-gemini-3.1-pro",
|
|
2435
|
-
family: "gemini-3.1-pro",
|
|
2436
|
-
originalProvider: "google",
|
|
2437
|
-
group: "antigravity",
|
|
2438
|
-
rd: "2026-02-19",
|
|
2439
|
-
},
|
|
2440
|
-
];
|
|
2441
|
-
|
|
2442
|
-
for (const h of extraHistorical) {
|
|
2443
|
-
if (!list.some((m) => m.id === h.id)) {
|
|
2444
|
-
list.push(defineModel(h.id, h.family, h.originalProvider, h.group, h.rd, { thinkingLevel: "medium" }));
|
|
2445
|
-
}
|
|
2446
|
-
}
|
|
2447
|
-
|
|
2448
|
-
// Deduplicate by id (keep first)
|
|
2449
|
-
const seen = new Set<string>();
|
|
2450
|
-
const deduped: ModelDefinition[] = [];
|
|
2451
|
-
for (const m of list) {
|
|
2452
|
-
if (seen.has(m.id)) continue;
|
|
2453
|
-
seen.add(m.id);
|
|
2454
|
-
deduped.push(m);
|
|
2455
|
-
}
|
|
2456
|
-
|
|
2457
|
-
// Sort by release date desc then id asc for deterministic catalog freeze
|
|
2458
|
-
deduped.sort((a, b) => {
|
|
2459
|
-
if (a.releaseDate !== b.releaseDate) return b.releaseDate.localeCompare(a.releaseDate);
|
|
2460
|
-
return a.id.localeCompare(b.id);
|
|
2461
|
-
});
|
|
2462
|
-
|
|
2463
|
-
return deduped;
|
|
2464
|
-
}
|
|
2465
|
-
|
|
2466
|
-
// Frozen catalog - single source of truth at 25/08/2026
|
|
2467
|
-
export const MODEL_CATALOG_2026_08_25: readonly ModelDefinition[] = Object.freeze(
|
|
2468
|
-
buildCatalog(),
|
|
2469
|
-
) as readonly ModelDefinition[];
|
|
2470
|
-
|
|
2471
|
-
// MAP - id lowercase + aliases -> definition
|
|
2472
|
-
export const MODEL_MAP_2026_08_25: ReadonlyMap<string, ModelDefinition> = (() => {
|
|
2473
|
-
const map = new Map<string, ModelDefinition>();
|
|
2474
|
-
for (const m of MODEL_CATALOG_2026_08_25) {
|
|
2475
|
-
map.set(m.id.toLowerCase(), m);
|
|
2476
|
-
map.set(m.id, m);
|
|
2477
|
-
for (const alias of m.aliases) {
|
|
2478
|
-
if (!alias) continue;
|
|
2479
|
-
const low = alias.toLowerCase();
|
|
2480
|
-
if (!map.has(low)) map.set(low, m);
|
|
2481
|
-
// also bare normalized
|
|
2482
|
-
const norm = normalizeModelId(alias).toLowerCase();
|
|
2483
|
-
if (!map.has(norm)) map.set(norm, m);
|
|
2484
|
-
}
|
|
2485
|
-
}
|
|
2486
|
-
return map;
|
|
2487
|
-
})();
|
|
2488
|
-
|
|
2489
|
-
// Aliases map for 9router / OmniRoute routing
|
|
2490
|
-
export const MODEL_ALIASES_2026_08_25: ReadonlyMap<string, string> = (() => {
|
|
2491
|
-
const map = new Map<string, string>();
|
|
2492
|
-
for (const m of MODEL_CATALOG_2026_08_25) {
|
|
2493
|
-
for (const alias of m.aliases) {
|
|
2494
|
-
if (!alias) continue;
|
|
2495
|
-
map.set(alias.toLowerCase(), m.id);
|
|
2496
|
-
}
|
|
2497
|
-
}
|
|
2498
|
-
return map;
|
|
2499
|
-
})();
|
|
2500
|
-
|
|
2501
|
-
// ---------------------------------------------------------------------------
|
|
2502
|
-
// Section 11. Public getters - production-ready, library-first
|
|
2503
|
-
// ---------------------------------------------------------------------------
|
|
2504
|
-
|
|
2505
|
-
export function getModel(id: string): ModelDefinition | undefined {
|
|
2506
|
-
if (!id) return undefined;
|
|
2507
|
-
const low = String(id).trim().toLowerCase();
|
|
2508
|
-
return MODEL_MAP_2026_08_25.get(low) ?? MODEL_MAP_2026_08_25.get(normalizeModelId(low));
|
|
2509
|
-
}
|
|
2510
|
-
|
|
2511
|
-
export function hasModel(id: string): boolean {
|
|
2512
|
-
return !!getModel(id);
|
|
2513
|
-
}
|
|
2514
|
-
|
|
2515
|
-
export function isPreview(id: string): boolean {
|
|
2516
|
-
const m = getModel(id);
|
|
2517
|
-
return m ? m.isPreview : String(id).toLowerCase().includes("preview");
|
|
2518
|
-
}
|
|
2519
|
-
|
|
2520
|
-
export function isThinkingModel(id: string): boolean {
|
|
2521
|
-
const m = getModel(id);
|
|
2522
|
-
if (m) return m.isThinking;
|
|
2523
|
-
const lower = String(id).toLowerCase();
|
|
2524
|
-
return (
|
|
2525
|
-
lower.includes("thinking") ||
|
|
2526
|
-
lower.includes("high") ||
|
|
2527
|
-
lower.includes("medium") ||
|
|
2528
|
-
lower.includes("low") ||
|
|
2529
|
-
lower.includes("tiered") ||
|
|
2530
|
-
lower.includes("deep-think") ||
|
|
2531
|
-
lower.includes("claude") ||
|
|
2532
|
-
lower.includes("gpt-oss")
|
|
2533
|
-
);
|
|
2534
|
-
}
|
|
2535
|
-
|
|
2536
|
-
export function isImageModel(id: string): boolean {
|
|
2537
|
-
const m = getModel(id);
|
|
2538
|
-
if (m) return m.isImage;
|
|
2539
|
-
return String(id).toLowerCase().includes("image") || String(id).toLowerCase().includes("flash-image");
|
|
2540
|
-
}
|
|
2541
|
-
|
|
2542
|
-
export function isAntagravityGroup(id: string): boolean {
|
|
2543
|
-
const m = getModel(id);
|
|
2544
|
-
if (!m)
|
|
2545
|
-
return (
|
|
2546
|
-
String(id).toLowerCase().startsWith("antigravity-") ||
|
|
2547
|
-
String(id).toLowerCase().includes("claude") ||
|
|
2548
|
-
String(id).toLowerCase().includes("gpt-oss")
|
|
2549
|
-
);
|
|
2550
|
-
return m.group === "antigravity";
|
|
2551
|
-
}
|
|
2552
|
-
|
|
2553
|
-
export function isGeminiCliGroup(id: string): boolean {
|
|
2554
|
-
const m = getModel(id);
|
|
2555
|
-
if (!m) return isGeminiCliOnlyId(id);
|
|
2556
|
-
return m.group === "gemini-cli";
|
|
2557
|
-
}
|
|
2558
|
-
|
|
2559
|
-
export function getModelsByGroup(group: ModelGroup): readonly ModelDefinition[] {
|
|
2560
|
-
return MODEL_CATALOG_2026_08_25.filter((m) => m.group === group);
|
|
2561
|
-
}
|
|
2562
|
-
|
|
2563
|
-
export function getModelsByThinkingLevel(level: ThinkingLevel): readonly ModelDefinition[] {
|
|
2564
|
-
return MODEL_CATALOG_2026_08_25.filter((m) => m.thinkingLevel === level);
|
|
2565
|
-
}
|
|
2566
|
-
|
|
2567
|
-
export function getPreviewModels(): readonly ModelDefinition[] {
|
|
2568
|
-
return MODEL_CATALOG_2026_08_25.filter((m) => m.isPreview);
|
|
2569
|
-
}
|
|
2570
|
-
|
|
2571
|
-
export function getStableModels(): readonly ModelDefinition[] {
|
|
2572
|
-
return MODEL_CATALOG_2026_08_25.filter((m) => !m.isPreview);
|
|
2573
|
-
}
|
|
2574
|
-
|
|
2575
|
-
export function getAntagravityModels(): readonly ModelDefinition[] {
|
|
2576
|
-
return getModelsByGroup("antigravity");
|
|
2577
|
-
}
|
|
2578
|
-
|
|
2579
|
-
export function getGeminiCliModels(): readonly ModelDefinition[] {
|
|
2580
|
-
return getModelsByGroup("gemini-cli");
|
|
2581
|
-
}
|
|
2582
|
-
|
|
2583
|
-
export function getThinkingBudget(id: string): number {
|
|
2584
|
-
const m = getModel(id);
|
|
2585
|
-
if (m) return m.thinkingBudget;
|
|
2586
|
-
const lvl = parseThinkingLevelFromId(id);
|
|
2587
|
-
return THINKING_BUDGET_MAP[lvl] ?? THINKING_BUDGET_MAP.medium;
|
|
2588
|
-
}
|
|
2589
|
-
|
|
2590
|
-
export function getContextWindow(id: string): number {
|
|
2591
|
-
const m = getModel(id);
|
|
2592
|
-
if (m) return m.contextWindow;
|
|
2593
|
-
const low = String(id).toLowerCase();
|
|
2594
|
-
if (low.includes("claude") || low.includes("gpt-oss")) return CONTEXT_WINDOW_CLAUDE;
|
|
2595
|
-
return CONTEXT_WINDOW_GEMINI;
|
|
2596
|
-
}
|
|
2597
|
-
|
|
2598
|
-
export function getOutputLimit(id: string): number {
|
|
2599
|
-
const m = getModel(id);
|
|
2600
|
-
if (m) return m.outputLimit;
|
|
2601
|
-
const low = String(id).toLowerCase();
|
|
2602
|
-
if (low.includes("claude") || low.includes("gpt-oss")) return OUTPUT_LIMIT_CLAUDE;
|
|
2603
|
-
return OUTPUT_LIMIT_GEMINI;
|
|
2604
|
-
}
|
|
2605
|
-
|
|
2606
|
-
export function getEndpointForModel(id: string, overrides?: string[]): readonly string[] {
|
|
2607
|
-
const m = getModel(id);
|
|
2608
|
-
if (overrides && overrides.length > 0) return overrides;
|
|
2609
|
-
if (m) return m.endpointHints.allowedEndpoints;
|
|
2610
|
-
// fallback logic: gemini-cli only -> prod+daily
|
|
2611
|
-
if (isGeminiCliOnlyId(id)) return ENDPOINT_ORDER_GEMINI_CLI;
|
|
2612
|
-
return ENDPOINT_ORDER_ANTIGRAVITY;
|
|
2613
|
-
}
|
|
2614
|
-
|
|
2615
|
-
export function shouldSkipSandboxForModel(id: string): boolean {
|
|
2616
|
-
const m = getModel(id);
|
|
2617
|
-
if (m) return m.endpointHints.skipSandbox;
|
|
2618
|
-
return isGeminiCliOnlyId(id);
|
|
2619
|
-
}
|
|
2620
|
-
|
|
2621
|
-
export function listModelIds(): readonly string[] {
|
|
2622
|
-
return MODEL_CATALOG_2026_08_25.map((m) => m.id);
|
|
2623
|
-
}
|
|
2624
|
-
|
|
2625
|
-
export function listBareModelIds(): readonly string[] {
|
|
2626
|
-
// Without antigravity- prefix - for OmniRoute base routing
|
|
2627
|
-
return BASE_MODELS.map((b) => b.id);
|
|
2628
|
-
}
|
|
2629
|
-
|
|
2630
|
-
export function searchModels(query: string): readonly ModelDefinition[] {
|
|
2631
|
-
if (!query) return MODEL_CATALOG_2026_08_25;
|
|
2632
|
-
const q = query.trim().toLowerCase();
|
|
2633
|
-
return MODEL_CATALOG_2026_08_25.filter((m) => {
|
|
2634
|
-
return (
|
|
2635
|
-
m.id.toLowerCase().includes(q) ||
|
|
2636
|
-
m.family.toLowerCase().includes(q) ||
|
|
2637
|
-
m.tags.some((t) => t.toLowerCase().includes(q)) ||
|
|
2638
|
-
m.aliases.some((a) => a.toLowerCase().includes(q)) ||
|
|
2639
|
-
m.description.en.toLowerCase().includes(q) ||
|
|
2640
|
-
m.description.pt.toLowerCase().includes(q)
|
|
2641
|
-
);
|
|
2642
|
-
});
|
|
2643
|
-
}
|
|
2644
|
-
|
|
2645
|
-
// OmniRoute compatible routing: returns physical model id + endpoint hint
|
|
2646
|
-
export function routeModelViaOmniRoute(logicalId: string): {
|
|
2647
|
-
physicalId: string;
|
|
2648
|
-
group: ModelGroup;
|
|
2649
|
-
endpoints: readonly string[];
|
|
2650
|
-
prodOnly: boolean;
|
|
2651
|
-
fallbackAllowed: boolean;
|
|
2652
|
-
} {
|
|
2653
|
-
const m = getModel(logicalId);
|
|
2654
|
-
if (!m) {
|
|
2655
|
-
// unknown - fallback to the GA workhorse per OMNIROUTE_FALLBACK_MODEL
|
|
2656
|
-
return {
|
|
2657
|
-
physicalId: OMNIROUTE_FALLBACK_MODEL,
|
|
2658
|
-
group: "gemini-cli",
|
|
2659
|
-
endpoints: ENDPOINT_ORDER_GEMINI_CLI,
|
|
2660
|
-
prodOnly: true,
|
|
2661
|
-
fallbackAllowed: false,
|
|
2662
|
-
};
|
|
2663
|
-
}
|
|
2664
|
-
return {
|
|
2665
|
-
physicalId: m.id,
|
|
2666
|
-
group: m.group,
|
|
2667
|
-
endpoints: m.endpointHints.allowedEndpoints,
|
|
2668
|
-
prodOnly: m.endpointHints.prodOnly,
|
|
2669
|
-
fallbackAllowed: m.endpointHints.fallbackProjectAllowed,
|
|
2670
|
-
};
|
|
2671
|
-
}
|
|
2672
|
-
|
|
2673
|
-
// 9router compatible mapper
|
|
2674
|
-
export function mapModelFor9Router(id: string): { provider: string; model: string; group: ModelGroup } {
|
|
2675
|
-
const m = getModel(id);
|
|
2676
|
-
if (!m) return { provider: "google", model: normalizeModelId(id), group: "gemini-cli" };
|
|
2677
|
-
return { provider: m.provider, model: m.id, group: m.group };
|
|
2678
|
-
}
|
|
2679
|
-
|
|
2680
|
-
// ---------------------------------------------------------------------------
|
|
2681
|
-
// Section 12. Catalog grouped exports for convenience
|
|
2682
|
-
// ---------------------------------------------------------------------------
|
|
2683
|
-
|
|
2684
|
-
export const MODEL_CATALOG_GROUPED = {
|
|
2685
|
-
antigravity: getAntagravityModels(),
|
|
2686
|
-
"gemini-cli": getGeminiCliModels(),
|
|
2687
|
-
preview: getPreviewModels(),
|
|
2688
|
-
stable: getStableModels(),
|
|
2689
|
-
high: getModelsByThinkingLevel("high"),
|
|
2690
|
-
medium: getModelsByThinkingLevel("medium"),
|
|
2691
|
-
low: getModelsByThinkingLevel("low"),
|
|
2692
|
-
tiered: getModelsByThinkingLevel("tiered"),
|
|
2693
|
-
minimal: getModelsByThinkingLevel("minimal"),
|
|
2694
|
-
max: getModelsByThinkingLevel("max"),
|
|
2695
|
-
image: MODEL_CATALOG_2026_08_25.filter((m) => m.isImage),
|
|
2696
|
-
thinking: MODEL_CATALOG_2026_08_25.filter((m) => m.isThinking),
|
|
2697
|
-
} as const;
|
|
2698
|
-
|
|
2699
|
-
// ---------------------------------------------------------------------------
|
|
2700
|
-
// Section 13. Flat-catalog compat exports (ported from flat catalogs v3/v4/v5)
|
|
2701
|
-
// ---------------------------------------------------------------------------
|
|
2702
|
-
|
|
2703
|
-
/**
|
|
2704
|
-
* Default model - Antigravity wrapper of the GA workhorse (Aug 13 2026).
|
|
2705
|
-
*/
|
|
2706
|
-
export const DEFAULT_MODEL = "antigravity-gemini-3.7-flash" as const;
|
|
2707
|
-
|
|
2708
|
-
/**
|
|
2709
|
-
* Search-grounding default model. v2.1.15 Phase A merge: the constants.ts /
|
|
2710
|
-
* request.ts / search.ts variants (all "gemini-3-flash") win the family name
|
|
2711
|
-
* — the live-validated search-chain value; this module's former local
|
|
2712
|
-
* meaning (OmniRoute unknown-id fallback "gemini-3.7-flash") moved to
|
|
2713
|
-
* {@link OMNIROUTE_FALLBACK_MODEL} (same name, different semantics split).
|
|
2714
|
-
*/
|
|
2715
|
-
export const SEARCH_MODEL = "gemini-3-flash" as const;
|
|
2716
|
-
|
|
2717
|
-
/**
|
|
2718
|
-
* Preview variant of the search model (constants.ts + request.ts lineage —
|
|
2719
|
-
* identical value in both).
|
|
2720
|
-
*/
|
|
2721
|
-
export const SEARCH_MODEL_PREVIEW = "gemini-3-flash-preview" as const;
|
|
2722
|
-
|
|
2723
|
-
/**
|
|
2724
|
-
* Fallback chain tried when the primary search model is unavailable.
|
|
2725
|
-
* v2.1.15 Phase A merge: canonical is the search.ts live-iteration order
|
|
2726
|
-
* (preview first, dated -2026 tail); the constants.ts variant (led with
|
|
2727
|
-
* gemini-3.6-flash, no -2026 tail) had zero consumers and was dropped.
|
|
2728
|
-
*/
|
|
2729
|
-
export const SEARCH_MODEL_FALLBACKS = [
|
|
2730
|
-
"gemini-3-flash-preview",
|
|
2731
|
-
"gemini-3-flash",
|
|
2732
|
-
"antigravity-gemini-3-flash",
|
|
2733
|
-
"gemini-3-flash-preview-2026",
|
|
2734
|
-
] as const;
|
|
2735
|
-
|
|
2736
|
-
/**
|
|
2737
|
-
* OmniRoute unknown-id fallback (the former local SEARCH_MODEL semantic of
|
|
2738
|
-
* this module): the bare GA workhorse id.
|
|
2739
|
-
*/
|
|
2740
|
-
export const OMNIROUTE_FALLBACK_MODEL = "gemini-3.7-flash" as const;
|
|
2741
|
-
|
|
2742
|
-
/**
|
|
2743
|
-
* Hardened fallbacks - project id, antigravity version and User-Agent.
|
|
2744
|
-
*/
|
|
2745
|
-
export const FALLBACKS = {
|
|
2746
|
-
project: PROJECT_FALLBACK,
|
|
2747
|
-
version: ANTIGRAVITY_VERSION_FALLBACK,
|
|
2748
|
-
ua: ANTIGRAVITY_USER_AGENT_FALLBACK,
|
|
2749
|
-
} as const;
|
|
2750
|
-
|
|
2751
|
-
/**
|
|
2752
|
-
* Flat model list (modelDef[]) derived from the rich frozen catalog.
|
|
2753
|
-
* Single source of truth stays MODEL_CATALOG_2026_08_25; this is the
|
|
2754
|
-
* lightweight projection consumed by cli/plugin modules.
|
|
2755
|
-
*/
|
|
2756
|
-
export const MODELS_2026_08_25: modelDef[] = MODEL_CATALOG_2026_08_25.map((m) => ({
|
|
2757
|
-
id: m.id,
|
|
2758
|
-
name: m.displayName,
|
|
2759
|
-
context: m.contextWindow,
|
|
2760
|
-
output: m.outputLimit,
|
|
2761
|
-
group: m.group,
|
|
2762
|
-
provider: m.provider,
|
|
2763
|
-
thinking: [m.thinkingLevel],
|
|
2764
|
-
modalities: { input: [...m.modalities.input], output: [...m.modalities.output] },
|
|
2765
|
-
preview: m.isPreview,
|
|
2766
|
-
release: m.releaseDate,
|
|
2767
|
-
notes: m.description.en,
|
|
2768
|
-
}));
|
|
2769
|
-
|
|
2770
|
-
/**
|
|
2771
|
-
* All antigravity-group ids normalized to antigravity- prefixed form.
|
|
2772
|
-
*/
|
|
2773
|
-
export const ANTIGRAVITY_MODELS: string[] = MODELS_2026_08_25.filter((m) => m.group === "antigravity").map(
|
|
2774
|
-
(m) => `antigravity-${m.id.replace(/^antigravity-/, "")}`,
|
|
2775
|
-
);
|
|
2776
|
-
|
|
2777
|
-
/**
|
|
2778
|
-
* All gemini-cli-group ids (CLI-quota only).
|
|
2779
|
-
*/
|
|
2780
|
-
export const GEMINICLI_MODELS: string[] = MODELS_2026_08_25.filter((m) => m.group === "gemini-cli").map((m) => m.id);
|
|
2781
|
-
|
|
2782
|
-
/**
|
|
2783
|
-
* Every routable id: plain ids + antigravity-prefixed + google/ prefixed.
|
|
2784
|
-
*/
|
|
2785
|
-
export const ALL_MODELS_WITH_PREFIX: string[] = [
|
|
2786
|
-
...MODELS_2026_08_25.map((m) => m.id),
|
|
2787
|
-
...ANTIGRAVITY_MODELS,
|
|
2788
|
-
...MODELS_2026_08_25.map((m) => `google/${m.id}`),
|
|
2789
|
-
];
|
|
2790
|
-
|
|
2791
|
-
/**
|
|
2792
|
-
* True when an id is restricted to the Gemini CLI pool
|
|
2793
|
-
* (previews and gemini-3.x families are PROD/DAILY only - skip sandbox).
|
|
2794
|
-
*/
|
|
2795
|
-
export function isCLIOnly(id: string): boolean {
|
|
2796
|
-
const l = String(id ?? "").toLowerCase();
|
|
2797
|
-
return (
|
|
2798
|
-
l.includes("preview") ||
|
|
2799
|
-
l.startsWith("gemini-3.7") ||
|
|
2800
|
-
l.startsWith("gemini-3.6") ||
|
|
2801
|
-
l.startsWith("gemini-3.5") ||
|
|
2802
|
-
l.startsWith("gemini-3.1") ||
|
|
2803
|
-
l.startsWith("gemini-3") ||
|
|
2804
|
-
l.includes("customtools")
|
|
2805
|
-
);
|
|
2806
|
-
}
|
|
2807
|
-
|
|
2808
|
-
// ---------------------------------------------------------------------------
|
|
2809
|
-
// Section 14. Absorbed flat catalogs + legacy compat exports (v2.1.15 Phase A)
|
|
2810
|
-
// Every flat model-id list that used to be duplicated under one name across
|
|
2811
|
-
// plugin.ts, project.ts, accounts.ts, config.ts, fingerprint.ts, quota.ts,
|
|
2812
|
-
// recovery.ts, streaming.ts, auth.ts, request.ts and constants.ts lives here
|
|
2813
|
-
// exactly once, under an accurate name (one name, one meaning). Consumers
|
|
2814
|
-
// import their exact list and re-export their historical alias.
|
|
2815
|
-
// ---------------------------------------------------------------------------
|
|
2816
|
-
|
|
2817
|
-
/**
|
|
2818
|
-
* Canonical MODELS_2026 family value: the full catalog union — bare gemini
|
|
2819
|
-
* ids plus antigravity aliases — derived from the ModelDefinition catalog
|
|
2820
|
-
* (plan-mandated canonical). The former models.ts local value
|
|
2821
|
-
* (listBareModelIds(), bare ids only) moved to GEMINI_BARE_MODEL_IDS.
|
|
2822
|
-
*/
|
|
2823
|
-
export const MODELS_2026 = listModelIds() as unknown as readonly string[];
|
|
2824
|
-
|
|
2825
|
-
/**
|
|
2826
|
-
* Bare catalog ids without the antigravity- prefix (the pre-Phase-A local
|
|
2827
|
-
* MODELS_2026 semantic of this module; projection of listBareModelIds()).
|
|
2828
|
-
*/
|
|
2829
|
-
export const GEMINI_BARE_MODEL_IDS = listBareModelIds() as unknown as readonly string[];
|
|
2830
|
-
|
|
2831
|
-
/**
|
|
2832
|
-
* Bare base list up to 2026-08-25 (31 ids; best-effort validated via
|
|
2833
|
-
* fetchAvailableModels). Shared verbatim by the former plugin.ts and
|
|
2834
|
-
* project.ts MODELS_2026_BASE copies.
|
|
2835
|
-
*/
|
|
2836
|
-
export const MODELS_2026_BASE = [
|
|
2837
|
-
// gemini-3.6 family (new ONDA5)
|
|
2838
|
-
"gemini-3.6-flash-high",
|
|
2839
|
-
"gemini-3.6-flash-medium",
|
|
2840
|
-
"gemini-3.6-flash-low",
|
|
2841
|
-
"gemini-3.6-flash-tiered",
|
|
2842
|
-
"gemini-3.6-flash",
|
|
2843
|
-
// gemini-3.5 family
|
|
2844
|
-
"gemini-3.5-flash-high",
|
|
2845
|
-
"gemini-3.5-flash-medium",
|
|
2846
|
-
"gemini-3.5-flash",
|
|
2847
|
-
"gemini-3.5-flash-lite",
|
|
2848
|
-
"gemini-3.5-flash-lite-preview",
|
|
2849
|
-
// gemini-3.1 family
|
|
2850
|
-
"gemini-3.1-pro-high",
|
|
2851
|
-
"gemini-3.1-pro-low",
|
|
2852
|
-
"gemini-3.1-pro",
|
|
2853
|
-
"gemini-3.1-flash-image",
|
|
2854
|
-
"gemini-3.1-flash-lite",
|
|
2855
|
-
// gemini-3 family
|
|
2856
|
-
"gemini-3-flash",
|
|
2857
|
-
"gemini-3-pro",
|
|
2858
|
-
"gemini-3-deep-think",
|
|
2859
|
-
// gemini-2.5 family
|
|
2860
|
-
"gemini-2.5-pro",
|
|
2861
|
-
"gemini-2.5-flash",
|
|
2862
|
-
"gemini-2.5-flash-lite",
|
|
2863
|
-
// claude 4.5 / 4.6 thinking
|
|
2864
|
-
"claude-sonnet-4-6-thinking",
|
|
2865
|
-
"claude-opus-4-6-thinking",
|
|
2866
|
-
"claude-sonnet-4-5",
|
|
2867
|
-
"claude-opus-4-5-thinking",
|
|
2868
|
-
// gpt-oss open models via Antigravity router
|
|
2869
|
-
"gpt-oss-120b-medium",
|
|
2870
|
-
"gpt-oss-120b-high",
|
|
2871
|
-
// preview
|
|
2872
|
-
"gemini-3-pro-preview",
|
|
2873
|
-
"gemini-3-flash-preview",
|
|
2874
|
-
"gemini-3.1-pro-preview",
|
|
2875
|
-
"gemini-3.1-pro-preview-customtools",
|
|
2876
|
-
] as const;
|
|
2877
|
-
|
|
2878
|
-
/**
|
|
2879
|
-
* Antigravity alias list of the former plugin.ts copy (36 entries, kept
|
|
2880
|
-
* verbatim including the two historical duplicate ids; router convention
|
|
2881
|
-
* antigravity- prefix plus short legacy aliases).
|
|
2882
|
-
*/
|
|
2883
|
-
export const MODELS_2026_ANTIGRAVITY_ALIAS = [
|
|
2884
|
-
// antigravity- prefix for all gemini + claude (router convention)
|
|
2885
|
-
"antigravity-gemini-3.6-flash-high",
|
|
2886
|
-
"antigravity-gemini-3.6-flash-medium",
|
|
2887
|
-
"antigravity-gemini-3.6-flash-low",
|
|
2888
|
-
"antigravity-gemini-3.6-flash-tiered",
|
|
2889
|
-
"antigravity-gemini-3.6-flash",
|
|
2890
|
-
"antigravity-gemini-3.5-flash-high",
|
|
2891
|
-
"antigravity-gemini-3.5-flash-medium",
|
|
2892
|
-
"antigravity-gemini-3.5-flash",
|
|
2893
|
-
"antigravity-gemini-3.5-flash-lite",
|
|
2894
|
-
"antigravity-gemini-3.5-flash-lite-preview",
|
|
2895
|
-
"antigravity-gemini-3.1-pro-high",
|
|
2896
|
-
"antigravity-gemini-3.1-pro-low",
|
|
2897
|
-
"antigravity-gemini-3.1-pro",
|
|
2898
|
-
"antigravity-gemini-3.1-flash-image",
|
|
2899
|
-
"antigravity-gemini-3.1-flash-lite",
|
|
2900
|
-
"antigravity-gemini-3-flash",
|
|
2901
|
-
"antigravity-gemini-3-pro",
|
|
2902
|
-
"antigravity-gemini-3-deep-think",
|
|
2903
|
-
"antigravity-gemini-2.5-pro",
|
|
2904
|
-
"antigravity-gemini-2.5-flash",
|
|
2905
|
-
"antigravity-gemini-2.5-flash-lite",
|
|
2906
|
-
"antigravity-gemini-3-pro-preview",
|
|
2907
|
-
"antigravity-gemini-3-flash-preview",
|
|
2908
|
-
"antigravity-gemini-3.1-pro-preview",
|
|
2909
|
-
"antigravity-gemini-3.1-pro-preview-customtools",
|
|
2910
|
-
"antigravity-claude-sonnet-4-6-thinking",
|
|
2911
|
-
"antigravity-claude-opus-4-6-thinking",
|
|
2912
|
-
"antigravity-claude-sonnet-4-5",
|
|
2913
|
-
"antigravity-claude-opus-4-5-thinking",
|
|
2914
|
-
"antigravity-claude-sonnet-4-6",
|
|
2915
|
-
"antigravity-claude-opus-4-6",
|
|
2916
|
-
// short aliases legacy
|
|
2917
|
-
"antigravity-gemini-3-pro",
|
|
2918
|
-
"antigravity-gemini-3-flash",
|
|
2919
|
-
"antigravity-gemini-3.1-pro",
|
|
2920
|
-
"antigravity-claude-opus-4-6-thinking",
|
|
2921
|
-
"antigravity-claude-sonnet-4-6",
|
|
2922
|
-
] as const;
|
|
2923
|
-
|
|
2924
|
-
/**
|
|
2925
|
-
* Provider injection union of the former plugin.ts MODELS_2026 (67 entries =
|
|
2926
|
-
* MODELS_2026_BASE + MODELS_2026_ANTIGRAVITY_ALIAS, duplicates preserved so
|
|
2927
|
-
* the opencode provider models list stays byte-identical).
|
|
2928
|
-
*/
|
|
2929
|
-
export const MODELS_2026_PROVIDER = [...MODELS_2026_BASE, ...MODELS_2026_ANTIGRAVITY_ALIAS] as const;
|
|
2930
|
-
|
|
2931
|
-
/**
|
|
2932
|
-
* Antigravity alias list of the former project.ts copy (31 prefixed base ids
|
|
2933
|
-
* plus 7 legacy variants still seen in 07/2026 traffic dumps).
|
|
2934
|
-
*/
|
|
2935
|
-
export const MODELS_2026_ANTIGRAVITY = [
|
|
2936
|
-
...MODELS_2026_BASE.map((m) => `antigravity-${m}` as const),
|
|
2937
|
-
// Legacy variants still seen in traffic dumps 07/2026
|
|
2938
|
-
"antigravity-gemini-3-pro",
|
|
2939
|
-
"antigravity-gemini-3-flash",
|
|
2940
|
-
"antigravity-gemini-3.1-pro",
|
|
2941
|
-
"antigravity-claude-opus-4-6-thinking",
|
|
2942
|
-
"antigravity-claude-sonnet-4-6",
|
|
2943
|
-
"antigravity-claude-sonnet-4-5",
|
|
2944
|
-
"antigravity-claude-opus-4-5-thinking",
|
|
2945
|
-
] as const;
|
|
2946
|
-
|
|
2947
|
-
/**
|
|
2948
|
-
* Full union of the former project.ts MODELS_2026_ALL (69 entries =
|
|
2949
|
-
* MODELS_2026_BASE + MODELS_2026_ANTIGRAVITY).
|
|
2950
|
-
*/
|
|
2951
|
-
export const MODELS_2026_ALL = [...MODELS_2026_BASE, ...MODELS_2026_ANTIGRAVITY] as const;
|
|
2952
|
-
|
|
2953
|
-
/**
|
|
2954
|
-
* v1 static fallback bypass list (11 ids — antigravity customs plus native
|
|
2955
|
-
* gemini/claude). Formerly duplicated as MODELS_2026 in accounts.ts,
|
|
2956
|
-
* config.ts, fingerprint.ts, quota.ts, recovery.ts and streaming.ts and as
|
|
2957
|
-
* MODELS_2026_LEGACY in project.ts (all byte-identical); also equals the id
|
|
2958
|
-
* projection of the V1_CATALOG_MODELS rich substrate.
|
|
2959
|
-
*/
|
|
2960
|
-
export const MODELS_2026_LEGACY = [
|
|
2961
|
-
// Antigravity custom - Gemini
|
|
2962
|
-
"antigravity-gemini-3-pro",
|
|
2963
|
-
"antigravity-gemini-3.1-pro",
|
|
2964
|
-
"antigravity-gemini-3-flash",
|
|
2965
|
-
// Antigravity custom - Claude via bypass
|
|
2966
|
-
"antigravity-claude-sonnet-4-6",
|
|
2967
|
-
"antigravity-claude-opus-4-6-thinking",
|
|
2968
|
-
// Google Native - 2.5
|
|
2969
|
-
"gemini-2.5-flash",
|
|
2970
|
-
"gemini-2.5-pro",
|
|
2971
|
-
// Google Native - 3.x preview
|
|
2972
|
-
"gemini-3-flash-preview",
|
|
2973
|
-
"gemini-3-pro-preview",
|
|
2974
|
-
"gemini-3.1-pro-preview",
|
|
2975
|
-
"gemini-3.1-pro-preview-customtools",
|
|
2976
|
-
] as const;
|
|
2977
|
-
|
|
2978
|
-
/**
|
|
2979
|
-
* Auth-module supported list (13 ids): the legacy bypass list plus the two
|
|
2980
|
-
* bare claude ids folded in from the former oauth(2).ts
|
|
2981
|
-
* SUPPORTED_MODELS_2026 (auth.ts v2.1.14 merge).
|
|
2982
|
-
*/
|
|
2983
|
-
export const SUPPORTED_MODELS_2026 = [...MODELS_2026_LEGACY, "claude-opus-4-6-thinking", "claude-sonnet-4-6"] as const;
|
|
2984
|
-
|
|
2985
|
-
/**
|
|
2986
|
-
* Models observed live through fetchAvailableModels on 2026-08-25 (22 ids;
|
|
2987
|
-
* the former request.ts MODELS_2026 — the live-validated E2E list, strict
|
|
2988
|
-
* superset of the 11-id legacy list).
|
|
2989
|
-
*/
|
|
2990
|
-
export const FETCH_AVAILABLE_MODELS_2026 = [
|
|
2991
|
-
"gemini-3-pro-preview",
|
|
2992
|
-
"gemini-3-flash-preview",
|
|
2993
|
-
"gemini-3.1-pro-preview",
|
|
2994
|
-
"gemini-3.1-pro-preview-customtools",
|
|
2995
|
-
"gemini-3-flash",
|
|
2996
|
-
"gemini-3-pro",
|
|
2997
|
-
"gemini-2.5-pro",
|
|
2998
|
-
"gemini-2.5-flash",
|
|
2999
|
-
"gemini-2.5",
|
|
3000
|
-
"claude-opus-4-6-thinking",
|
|
3001
|
-
"claude-opus-4-6-thinking-low",
|
|
3002
|
-
"claude-opus-4-6-thinking-max",
|
|
3003
|
-
"claude-sonnet-4-6",
|
|
3004
|
-
"claude-sonnet-4-6-thinking",
|
|
3005
|
-
"claude-opus-4-5-thinking",
|
|
3006
|
-
"antigravity-gemini-3-pro",
|
|
3007
|
-
"antigravity-gemini-3-flash",
|
|
3008
|
-
"antigravity-gemini-3.1-pro",
|
|
3009
|
-
"antigravity-gemini-3-pro-preview",
|
|
3010
|
-
"antigravity-gemini-3-flash-preview",
|
|
3011
|
-
"antigravity-claude-opus-4-6-thinking",
|
|
3012
|
-
"antigravity-claude-sonnet-4-6",
|
|
3013
|
-
] as const;
|
|
3014
|
-
|
|
3015
|
-
/**
|
|
3016
|
-
* v1 rich routing catalog (constants.ts lineage, 11 entries with
|
|
3017
|
-
* context/output/provider/api/family/quotaGroup metadata). Owner value of
|
|
3018
|
-
* the ALL_MODELS_2026 family; ids equal MODELS_2026_LEGACY.
|
|
3019
|
-
*/
|
|
3020
|
-
export const ALL_MODELS_2026: readonly LegacyModelDefinition[] = V1_CATALOG_MODELS;
|
|
3021
|
-
|
|
3022
|
-
/**
|
|
3023
|
-
* Fast lookup by model id over the v1 routing catalog (v2.1.15 Phase A move
|
|
3024
|
-
* from constants.ts — model identification lives only in models.ts).
|
|
3025
|
-
*/
|
|
3026
|
-
export const MODEL_BY_ID: Readonly<Record<string, LegacyModelDefinition>> = Object.fromEntries(
|
|
3027
|
-
V1_CATALOG_MODELS.map((m) => [m.id, m]),
|
|
3028
|
-
) as Record<string, LegacyModelDefinition>;
|
|
3029
|
-
|
|
3030
|
-
/**
|
|
3031
|
-
* Per-model routing configuration (v2.1.15 Phase A move from constants.ts
|
|
3032
|
-
* V1-06 block; values byte-identical). Endpoint paths come from the
|
|
3033
|
-
* constants.ts CODE_ASSIST_PATH_MAP raw substrate.
|
|
3034
|
-
*/
|
|
3035
|
-
export interface RoutingConfig {
|
|
3036
|
-
endpoint: CodeAssistEndpointPath;
|
|
3037
|
-
antigravityVersion: AntigravityVersion;
|
|
3038
|
-
requiresOnboard: boolean;
|
|
3039
|
-
stream: boolean;
|
|
3040
|
-
api: ApiProvider;
|
|
3041
|
-
/** internal model mapped to the Cloud API (some need aliasing) */
|
|
3042
|
-
cloudModelId: string;
|
|
3043
|
-
}
|
|
3044
|
-
|
|
3045
|
-
export const MODEL_ROUTING: Readonly<Record<string, RoutingConfig>> = {
|
|
3046
|
-
"antigravity-gemini-3-pro": {
|
|
3047
|
-
endpoint: CODE_ASSIST_PATH_MAP.STREAM_GENERATE_CONTENT,
|
|
3048
|
-
antigravityVersion: "v1internal",
|
|
3049
|
-
requiresOnboard: true,
|
|
3050
|
-
stream: true,
|
|
3051
|
-
api: "antigravity",
|
|
3052
|
-
cloudModelId: "gemini-3-pro-preview",
|
|
3053
|
-
},
|
|
3054
|
-
"antigravity-gemini-3.1-pro": {
|
|
3055
|
-
endpoint: CODE_ASSIST_PATH_MAP.STREAM_GENERATE_CONTENT,
|
|
3056
|
-
antigravityVersion: "v1internal",
|
|
3057
|
-
requiresOnboard: true,
|
|
3058
|
-
stream: true,
|
|
3059
|
-
api: "antigravity",
|
|
3060
|
-
cloudModelId: "gemini-3.1-pro-preview",
|
|
3061
|
-
},
|
|
3062
|
-
"antigravity-gemini-3-flash": {
|
|
3063
|
-
endpoint: CODE_ASSIST_PATH_MAP.STREAM_GENERATE_CONTENT,
|
|
3064
|
-
antigravityVersion: "v1internal",
|
|
3065
|
-
requiresOnboard: true,
|
|
3066
|
-
stream: true,
|
|
3067
|
-
api: "antigravity",
|
|
3068
|
-
cloudModelId: "gemini-3-flash-preview",
|
|
3069
|
-
},
|
|
3070
|
-
"antigravity-claude-sonnet-4-6": {
|
|
3071
|
-
endpoint: CODE_ASSIST_PATH_MAP.STREAM_GENERATE_CONTENT,
|
|
3072
|
-
antigravityVersion: "daily-v1internal",
|
|
3073
|
-
requiresOnboard: true,
|
|
3074
|
-
stream: true,
|
|
3075
|
-
api: "antigravity",
|
|
3076
|
-
cloudModelId: "claude-sonnet-4-6",
|
|
3077
|
-
},
|
|
3078
|
-
"antigravity-claude-opus-4-6-thinking": {
|
|
3079
|
-
endpoint: CODE_ASSIST_PATH_MAP.STREAM_GENERATE_CONTENT,
|
|
3080
|
-
antigravityVersion: "daily-v1internal",
|
|
3081
|
-
requiresOnboard: true,
|
|
3082
|
-
stream: true,
|
|
3083
|
-
api: "antigravity",
|
|
3084
|
-
cloudModelId: "claude-opus-4-6-thinking",
|
|
3085
|
-
},
|
|
3086
|
-
"gemini-2.5-flash": {
|
|
3087
|
-
endpoint: CODE_ASSIST_PATH_MAP.GENERATE_CONTENT,
|
|
3088
|
-
antigravityVersion: "v1internal",
|
|
3089
|
-
requiresOnboard: true,
|
|
3090
|
-
stream: false,
|
|
3091
|
-
api: "gemini-cli",
|
|
3092
|
-
cloudModelId: "gemini-2.5-flash",
|
|
3093
|
-
},
|
|
3094
|
-
"gemini-2.5-pro": {
|
|
3095
|
-
endpoint: CODE_ASSIST_PATH_MAP.GENERATE_CONTENT,
|
|
3096
|
-
antigravityVersion: "v1internal",
|
|
3097
|
-
requiresOnboard: true,
|
|
3098
|
-
stream: false,
|
|
3099
|
-
api: "gemini-cli",
|
|
3100
|
-
cloudModelId: "gemini-2.5-pro",
|
|
3101
|
-
},
|
|
3102
|
-
"gemini-3-flash-preview": {
|
|
3103
|
-
endpoint: CODE_ASSIST_PATH_MAP.STREAM_GENERATE_CONTENT,
|
|
3104
|
-
antigravityVersion: "v1internal",
|
|
3105
|
-
requiresOnboard: true,
|
|
3106
|
-
stream: true,
|
|
3107
|
-
api: "gemini-cli",
|
|
3108
|
-
cloudModelId: "gemini-3-flash-preview",
|
|
3109
|
-
},
|
|
3110
|
-
"gemini-3-pro-preview": {
|
|
3111
|
-
endpoint: CODE_ASSIST_PATH_MAP.STREAM_GENERATE_CONTENT,
|
|
3112
|
-
antigravityVersion: "v1internal",
|
|
3113
|
-
requiresOnboard: true,
|
|
3114
|
-
stream: true,
|
|
3115
|
-
api: "gemini-cli",
|
|
3116
|
-
cloudModelId: "gemini-3-pro-preview",
|
|
3117
|
-
},
|
|
3118
|
-
"gemini-3.1-pro-preview": {
|
|
3119
|
-
endpoint: CODE_ASSIST_PATH_MAP.STREAM_GENERATE_CONTENT,
|
|
3120
|
-
antigravityVersion: "v1internal",
|
|
3121
|
-
requiresOnboard: true,
|
|
3122
|
-
stream: true,
|
|
3123
|
-
api: "gemini-cli",
|
|
3124
|
-
cloudModelId: "gemini-3.1-pro-preview",
|
|
3125
|
-
},
|
|
3126
|
-
"gemini-3.1-pro-preview-customtools": {
|
|
3127
|
-
endpoint: CODE_ASSIST_PATH_MAP.STREAM_GENERATE_CONTENT,
|
|
3128
|
-
antigravityVersion: "v1internal",
|
|
3129
|
-
requiresOnboard: true,
|
|
3130
|
-
stream: true,
|
|
3131
|
-
api: "gemini-cli",
|
|
3132
|
-
cloudModelId: "gemini-3.1-pro-preview-customtools",
|
|
3133
|
-
},
|
|
3134
|
-
};
|
|
3135
|
-
|
|
3136
|
-
/**
|
|
3137
|
-
* One entry of the 2026 antigravity model catalog (rich provider metadata
|
|
3138
|
-
* consumed by the opencode.json configure flow).
|
|
3139
|
-
* v2.1.16 single-owner fix: moved from cli.ts — model identification lives
|
|
3140
|
-
* only in models.ts; cli.ts imports and re-exports it under the historical
|
|
3141
|
-
* name.
|
|
3142
|
-
*/
|
|
3143
|
-
export interface ModelCatalogEntry {
|
|
3144
|
-
id: string;
|
|
3145
|
-
name: string;
|
|
3146
|
-
provider: "antigravity";
|
|
3147
|
-
family: "gemini" | "claude";
|
|
3148
|
-
context: number;
|
|
3149
|
-
output: number;
|
|
3150
|
-
thinking: boolean;
|
|
3151
|
-
variants: string[];
|
|
3152
|
-
aliases: string[];
|
|
3153
|
-
}
|
|
3154
|
-
|
|
3155
|
-
/**
|
|
3156
|
-
* 2026 awareness catalog (8 entries; former cli.ts MODELS_2026_CATALOG,
|
|
3157
|
-
* originally ported there from cli(2).ts).
|
|
3158
|
-
* v2.1.16 single-owner fix: moved from cli.ts to models.ts — model
|
|
3159
|
-
* identification lives only in models.ts; cli.ts keeps
|
|
3160
|
-
* buildOpenCodeModelDefinitions (entry orchestration) and re-exports this
|
|
3161
|
-
* catalog under the historical exported name. Data byte-identical to the
|
|
3162
|
-
* former cli.ts literal.
|
|
3163
|
-
*/
|
|
3164
|
-
export const MODELS_2026_CATALOG: readonly ModelCatalogEntry[] = [
|
|
3165
|
-
{
|
|
3166
|
-
id: "gemini-3-pro-preview",
|
|
3167
|
-
name: "Gemini 3 Pro Preview (Antigravity)",
|
|
3168
|
-
provider: "antigravity",
|
|
3169
|
-
family: "gemini",
|
|
3170
|
-
context: 1_048_576,
|
|
3171
|
-
output: 65_535,
|
|
3172
|
-
thinking: true,
|
|
3173
|
-
variants: ["antigravity-gemini-3-pro-preview", "antigravity-gemini-3-pro"],
|
|
3174
|
-
aliases: ["gemini-3-pro", "antigravity-gemini-3-pro"],
|
|
3175
|
-
},
|
|
3176
|
-
{
|
|
3177
|
-
id: "gemini-3-flash-preview",
|
|
3178
|
-
name: "Gemini 3 Flash Preview (Antigravity)",
|
|
3179
|
-
provider: "antigravity",
|
|
3180
|
-
family: "gemini",
|
|
3181
|
-
context: 1_048_576,
|
|
3182
|
-
output: 65_535,
|
|
3183
|
-
thinking: false,
|
|
3184
|
-
variants: ["antigravity-gemini-3-flash-preview", "antigravity-gemini-3-flash"],
|
|
3185
|
-
aliases: ["gemini-3-flash", "antigravity-gemini-3-flash"],
|
|
3186
|
-
},
|
|
3187
|
-
{
|
|
3188
|
-
id: "gemini-3.1-pro-preview",
|
|
3189
|
-
name: "Gemini 3.1 Pro Preview (Antigravity)",
|
|
3190
|
-
provider: "antigravity",
|
|
3191
|
-
family: "gemini",
|
|
3192
|
-
context: 1_048_576,
|
|
3193
|
-
output: 65_535,
|
|
3194
|
-
thinking: true,
|
|
3195
|
-
variants: ["antigravity-gemini-3.1-pro-preview", "antigravity-gemini-3.1-pro"],
|
|
3196
|
-
aliases: ["gemini-3.1-pro-preview", "gemini-3.1-pro", "antigravity-gemini-3.1-pro"],
|
|
3197
|
-
},
|
|
3198
|
-
{
|
|
3199
|
-
id: "gemini-3.1-pro-preview-customtools",
|
|
3200
|
-
name: "Gemini 3.1 Pro Preview CustomTools (Antigravity)",
|
|
3201
|
-
provider: "antigravity",
|
|
3202
|
-
family: "gemini",
|
|
3203
|
-
context: 1_048_576,
|
|
3204
|
-
output: 65_535,
|
|
3205
|
-
thinking: true,
|
|
3206
|
-
variants: [],
|
|
3207
|
-
aliases: [],
|
|
3208
|
-
},
|
|
3209
|
-
{
|
|
3210
|
-
id: "gemini-2.5-pro",
|
|
3211
|
-
name: "Gemini 2.5 Pro (Antigravity)",
|
|
3212
|
-
provider: "antigravity",
|
|
3213
|
-
family: "gemini",
|
|
3214
|
-
context: 1_048_576,
|
|
3215
|
-
output: 65_535,
|
|
3216
|
-
thinking: true,
|
|
3217
|
-
variants: ["antigravity-gemini-2.5-pro"],
|
|
3218
|
-
aliases: ["gemini-2.5", "gemini-2.5-pro-preview"],
|
|
3219
|
-
},
|
|
3220
|
-
{
|
|
3221
|
-
id: "gemini-2.5-flash",
|
|
3222
|
-
name: "Gemini 2.5 Flash (Antigravity)",
|
|
3223
|
-
provider: "antigravity",
|
|
3224
|
-
family: "gemini",
|
|
3225
|
-
context: 1_048_576,
|
|
3226
|
-
output: 65_535,
|
|
3227
|
-
thinking: false,
|
|
3228
|
-
variants: ["antigravity-gemini-2.5-flash"],
|
|
3229
|
-
aliases: ["gemini-2.5-flash-preview"],
|
|
3230
|
-
},
|
|
3231
|
-
{
|
|
3232
|
-
id: "claude-opus-4-6-thinking",
|
|
3233
|
-
name: "Claude Opus 4.6 Thinking (Antigravity)",
|
|
3234
|
-
provider: "antigravity",
|
|
3235
|
-
family: "claude",
|
|
3236
|
-
context: 200_000,
|
|
3237
|
-
output: 64_000,
|
|
3238
|
-
thinking: true,
|
|
3239
|
-
variants: ["antigravity-claude-opus-4-6-thinking", "claude-opus-4-6-thinking-low", "claude-opus-4-6-thinking-max"],
|
|
3240
|
-
aliases: ["claude-opus-4-6", "antigravity-claude-opus-4-6"],
|
|
3241
|
-
},
|
|
3242
|
-
{
|
|
3243
|
-
id: "claude-sonnet-4-6",
|
|
3244
|
-
name: "Claude Sonnet 4.6 (Antigravity)",
|
|
3245
|
-
provider: "antigravity",
|
|
3246
|
-
family: "claude",
|
|
3247
|
-
context: 200_000,
|
|
3248
|
-
output: 64_000,
|
|
3249
|
-
thinking: false,
|
|
3250
|
-
variants: ["antigravity-claude-sonnet-4-6", "claude-sonnet-4-6-thinking"],
|
|
3251
|
-
aliases: ["claude-sonnet-4-6", "antigravity-claude-sonnet-4-6"],
|
|
3252
|
-
},
|
|
3253
|
-
];
|
|
3254
|
-
|
|
3255
|
-
/**
|
|
3256
|
-
* Id projection of the constants.ts rich definition substrate
|
|
3257
|
-
* (MODEL_DEFINITIONS_2026, 49 entries) — the former constants.ts
|
|
3258
|
-
* ANTIGRAVITY_MODEL_IDS_2026 semantic.
|
|
3259
|
-
*/
|
|
3260
|
-
export const ANTIGRAVITY_MODEL_IDS_2026 = MODEL_DEFINITIONS_2026.map((m) => m.id) as unknown as readonly string[];
|
|
3261
|
-
|
|
3262
|
-
/**
|
|
3263
|
-
* Explicit prod-only list of the former plugin.ts copy (43 ids — the most
|
|
3264
|
-
* complete explicit GEMINI_CLI_ONLY_MODELS variant; strict superset of the
|
|
3265
|
-
* request.ts 8-entry and quota.ts derived lists).
|
|
3266
|
-
*/
|
|
3267
|
-
export const GEMINI_CLI_ONLY_MODELS = [
|
|
3268
|
-
"gemini-3.6-flash-high",
|
|
3269
|
-
"gemini-3.6-flash-medium",
|
|
3270
|
-
"gemini-3.6-flash-low",
|
|
3271
|
-
"gemini-3.6-flash-tiered",
|
|
3272
|
-
"gemini-3.6-flash",
|
|
3273
|
-
"gemini-3.5-flash-high",
|
|
3274
|
-
"gemini-3.5-flash-medium",
|
|
3275
|
-
"gemini-3.5-flash",
|
|
3276
|
-
"gemini-3.5-flash-lite",
|
|
3277
|
-
"gemini-3.5-flash-lite-preview",
|
|
3278
|
-
"gemini-3.1-pro-high",
|
|
3279
|
-
"gemini-3.1-pro-low",
|
|
3280
|
-
"gemini-3.1-pro",
|
|
3281
|
-
"gemini-3.1-flash-image",
|
|
3282
|
-
"gemini-3.1-flash-lite",
|
|
3283
|
-
"gemini-3-flash",
|
|
3284
|
-
"gemini-3-pro",
|
|
3285
|
-
"gemini-3-deep-think",
|
|
3286
|
-
"gemini-3-pro-preview",
|
|
3287
|
-
"gemini-3-flash-preview",
|
|
3288
|
-
"gemini-3.1-pro-preview",
|
|
3289
|
-
"gemini-3.1-pro-preview-customtools",
|
|
3290
|
-
"antigravity-gemini-3.6-flash-high",
|
|
3291
|
-
"antigravity-gemini-3.6-flash-medium",
|
|
3292
|
-
"antigravity-gemini-3.6-flash-low",
|
|
3293
|
-
"antigravity-gemini-3.6-flash-tiered",
|
|
3294
|
-
"antigravity-gemini-3.6-flash",
|
|
3295
|
-
"antigravity-gemini-3.5-flash-high",
|
|
3296
|
-
"antigravity-gemini-3.5-flash-medium",
|
|
3297
|
-
"antigravity-gemini-3.5-flash",
|
|
3298
|
-
"antigravity-gemini-3.5-flash-lite",
|
|
3299
|
-
"antigravity-gemini-3.5-flash-lite-preview",
|
|
3300
|
-
"antigravity-gemini-3.1-pro-high",
|
|
3301
|
-
"antigravity-gemini-3.1-pro-low",
|
|
3302
|
-
"antigravity-gemini-3.1-pro",
|
|
3303
|
-
"antigravity-gemini-3.1-flash-image",
|
|
3304
|
-
"antigravity-gemini-3.1-flash-lite",
|
|
3305
|
-
"antigravity-gemini-3-flash",
|
|
3306
|
-
"antigravity-gemini-3-pro",
|
|
3307
|
-
"antigravity-gemini-3-deep-think",
|
|
3308
|
-
"antigravity-gemini-3-pro-preview",
|
|
3309
|
-
"antigravity-gemini-3-flash-preview",
|
|
3310
|
-
"antigravity-gemini-3.1-pro-preview",
|
|
3311
|
-
] as const;
|
|
3312
|
-
|
|
3313
|
-
/**
|
|
3314
|
-
* Quota-group routing table (the former quota.ts ANTIGRAVITY_MODELS_2026 —
|
|
3315
|
-
* 17 rich entries with quota-pool group assignments that diverge from the
|
|
3316
|
-
* constants.ts catalog lineage, so it keeps its own accurate name). Drives
|
|
3317
|
-
* quota pool resolution; verbatim value merge.
|
|
3318
|
-
*/
|
|
3319
|
-
export const QUOTA_GROUP_MODEL_DEFINITIONS = [
|
|
3320
|
-
{
|
|
3321
|
-
id: "antigravity-gemini-3-pro",
|
|
3322
|
-
displayName: "Gemini 3 Pro (Antigravity)",
|
|
3323
|
-
group: "antigravity",
|
|
3324
|
-
contextWindow: 1_048_576,
|
|
3325
|
-
outputLimit: 65_535,
|
|
3326
|
-
supportsThinking: true,
|
|
3327
|
-
supportsTools: true,
|
|
3328
|
-
supportsVision: true,
|
|
3329
|
-
isPreview: false,
|
|
3330
|
-
isClaude: false,
|
|
3331
|
-
},
|
|
3332
|
-
{
|
|
3333
|
-
id: "antigravity-gemini-3-flash",
|
|
3334
|
-
displayName: "Gemini 3 Flash (Antigravity)",
|
|
3335
|
-
group: "antigravity",
|
|
3336
|
-
contextWindow: 1_048_576,
|
|
3337
|
-
outputLimit: 65_535,
|
|
3338
|
-
supportsThinking: true,
|
|
3339
|
-
supportsTools: true,
|
|
3340
|
-
supportsVision: true,
|
|
3341
|
-
isPreview: false,
|
|
3342
|
-
isClaude: false,
|
|
3343
|
-
},
|
|
3344
|
-
{
|
|
3345
|
-
id: "antigravity-gemini-3.1-pro",
|
|
3346
|
-
displayName: "Gemini 3.1 Pro (Antigravity)",
|
|
3347
|
-
group: "antigravity",
|
|
3348
|
-
contextWindow: 1_048_576,
|
|
3349
|
-
outputLimit: 65_535,
|
|
3350
|
-
supportsThinking: true,
|
|
3351
|
-
supportsTools: true,
|
|
3352
|
-
supportsVision: true,
|
|
3353
|
-
isPreview: false,
|
|
3354
|
-
isClaude: false,
|
|
3355
|
-
},
|
|
3356
|
-
{
|
|
3357
|
-
id: "gemini-2.5-flash",
|
|
3358
|
-
displayName: "Gemini 2.5 Flash",
|
|
3359
|
-
group: "antigravity",
|
|
3360
|
-
contextWindow: 1_048_576,
|
|
3361
|
-
outputLimit: 65_535,
|
|
3362
|
-
supportsThinking: true,
|
|
3363
|
-
supportsTools: true,
|
|
3364
|
-
supportsVision: true,
|
|
3365
|
-
isPreview: false,
|
|
3366
|
-
isClaude: false,
|
|
3367
|
-
},
|
|
3368
|
-
{
|
|
3369
|
-
id: "gemini-2.5-pro",
|
|
3370
|
-
displayName: "Gemini 2.5 Pro",
|
|
3371
|
-
group: "antigravity",
|
|
3372
|
-
contextWindow: 1_048_576,
|
|
3373
|
-
outputLimit: 65_535,
|
|
3374
|
-
supportsThinking: true,
|
|
3375
|
-
supportsTools: true,
|
|
3376
|
-
supportsVision: true,
|
|
3377
|
-
isPreview: false,
|
|
3378
|
-
isClaude: false,
|
|
3379
|
-
},
|
|
3380
|
-
{
|
|
3381
|
-
id: "gemini-3-flash-preview",
|
|
3382
|
-
displayName: "Gemini 3 Flash Preview",
|
|
3383
|
-
group: "gemini-cli",
|
|
3384
|
-
contextWindow: 1_048_576,
|
|
3385
|
-
outputLimit: 65_535,
|
|
3386
|
-
supportsThinking: true,
|
|
3387
|
-
supportsTools: true,
|
|
3388
|
-
supportsVision: true,
|
|
3389
|
-
isPreview: true,
|
|
3390
|
-
isClaude: false,
|
|
3391
|
-
},
|
|
3392
|
-
{
|
|
3393
|
-
id: "gemini-3-pro-preview",
|
|
3394
|
-
displayName: "Gemini 3 Pro Preview",
|
|
3395
|
-
group: "gemini-cli",
|
|
3396
|
-
contextWindow: 1_048_576,
|
|
3397
|
-
outputLimit: 65_535,
|
|
3398
|
-
supportsThinking: true,
|
|
3399
|
-
supportsTools: true,
|
|
3400
|
-
supportsVision: true,
|
|
3401
|
-
isPreview: true,
|
|
3402
|
-
isClaude: false,
|
|
3403
|
-
},
|
|
3404
|
-
{
|
|
3405
|
-
id: "gemini-3.1-pro-preview",
|
|
3406
|
-
displayName: "Gemini 3.1 Pro Preview",
|
|
3407
|
-
group: "gemini-cli",
|
|
3408
|
-
contextWindow: 1_048_576,
|
|
3409
|
-
outputLimit: 65_535,
|
|
3410
|
-
supportsThinking: true,
|
|
3411
|
-
supportsTools: true,
|
|
3412
|
-
supportsVision: true,
|
|
3413
|
-
isPreview: true,
|
|
3414
|
-
isClaude: false,
|
|
3415
|
-
},
|
|
3416
|
-
{
|
|
3417
|
-
id: "gemini-3.1-pro-preview-customtools",
|
|
3418
|
-
displayName: "Gemini 3.1 Pro Preview CustomTools",
|
|
3419
|
-
group: "gemini-cli",
|
|
3420
|
-
contextWindow: 1_048_576,
|
|
3421
|
-
outputLimit: 65_535,
|
|
3422
|
-
supportsThinking: true,
|
|
3423
|
-
supportsTools: true,
|
|
3424
|
-
supportsVision: true,
|
|
3425
|
-
isPreview: true,
|
|
3426
|
-
isClaude: false,
|
|
3427
|
-
},
|
|
3428
|
-
{
|
|
3429
|
-
id: "claude-opus-4-6-thinking",
|
|
3430
|
-
displayName: "Claude Opus 4.6 Thinking",
|
|
3431
|
-
group: "antigravity",
|
|
3432
|
-
contextWindow: 200_000,
|
|
3433
|
-
outputLimit: 64_000,
|
|
3434
|
-
supportsThinking: true,
|
|
3435
|
-
supportsTools: true,
|
|
3436
|
-
supportsVision: true,
|
|
3437
|
-
isPreview: false,
|
|
3438
|
-
isClaude: true,
|
|
3439
|
-
},
|
|
3440
|
-
{
|
|
3441
|
-
id: "claude-opus-4-6-thinking-low",
|
|
3442
|
-
displayName: "Claude Opus 4.6 Thinking Low",
|
|
3443
|
-
group: "antigravity",
|
|
3444
|
-
contextWindow: 200_000,
|
|
3445
|
-
outputLimit: 64_000,
|
|
3446
|
-
supportsThinking: true,
|
|
3447
|
-
supportsTools: true,
|
|
3448
|
-
supportsVision: true,
|
|
3449
|
-
isPreview: false,
|
|
3450
|
-
isClaude: true,
|
|
3451
|
-
},
|
|
3452
|
-
{
|
|
3453
|
-
id: "claude-opus-4-6-thinking-max",
|
|
3454
|
-
displayName: "Claude Opus 4.6 Thinking Max",
|
|
3455
|
-
group: "antigravity",
|
|
3456
|
-
contextWindow: 200_000,
|
|
3457
|
-
outputLimit: 64_000,
|
|
3458
|
-
supportsThinking: true,
|
|
3459
|
-
supportsTools: true,
|
|
3460
|
-
supportsVision: true,
|
|
3461
|
-
isPreview: false,
|
|
3462
|
-
isClaude: true,
|
|
3463
|
-
},
|
|
3464
|
-
{
|
|
3465
|
-
id: "claude-sonnet-4-6",
|
|
3466
|
-
displayName: "Claude Sonnet 4.6",
|
|
3467
|
-
group: "antigravity",
|
|
3468
|
-
contextWindow: 200_000,
|
|
3469
|
-
outputLimit: 64_000,
|
|
3470
|
-
supportsThinking: true,
|
|
3471
|
-
supportsTools: true,
|
|
3472
|
-
supportsVision: true,
|
|
3473
|
-
isPreview: false,
|
|
3474
|
-
isClaude: true,
|
|
3475
|
-
},
|
|
3476
|
-
{
|
|
3477
|
-
id: "claude-opus-4-5-thinking",
|
|
3478
|
-
displayName: "Claude Opus 4.5 Thinking (Legacy)",
|
|
3479
|
-
group: "antigravity",
|
|
3480
|
-
contextWindow: 200_000,
|
|
3481
|
-
outputLimit: 64_000,
|
|
3482
|
-
supportsThinking: true,
|
|
3483
|
-
supportsTools: true,
|
|
3484
|
-
supportsVision: true,
|
|
3485
|
-
isPreview: false,
|
|
3486
|
-
isClaude: true,
|
|
3487
|
-
},
|
|
3488
|
-
// Aliases bare gemini-3-* without antigravity- prefix - server accepts both
|
|
3489
|
-
{
|
|
3490
|
-
id: "gemini-3-flash",
|
|
3491
|
-
displayName: "Gemini 3 Flash",
|
|
3492
|
-
group: "gemini-cli",
|
|
3493
|
-
contextWindow: 1_048_576,
|
|
3494
|
-
outputLimit: 65_535,
|
|
3495
|
-
supportsThinking: true,
|
|
3496
|
-
supportsTools: true,
|
|
3497
|
-
supportsVision: true,
|
|
3498
|
-
isPreview: false,
|
|
3499
|
-
isClaude: false,
|
|
3500
|
-
},
|
|
3501
|
-
{
|
|
3502
|
-
id: "gemini-3-pro",
|
|
3503
|
-
displayName: "Gemini 3 Pro",
|
|
3504
|
-
group: "gemini-cli",
|
|
3505
|
-
contextWindow: 1_048_576,
|
|
3506
|
-
outputLimit: 65_535,
|
|
3507
|
-
supportsThinking: true,
|
|
3508
|
-
supportsTools: true,
|
|
3509
|
-
supportsVision: true,
|
|
3510
|
-
isPreview: false,
|
|
3511
|
-
isClaude: false,
|
|
3512
|
-
},
|
|
3513
|
-
{
|
|
3514
|
-
id: "gemini-3.1-pro",
|
|
3515
|
-
displayName: "Gemini 3.1 Pro",
|
|
3516
|
-
group: "gemini-cli",
|
|
3517
|
-
contextWindow: 1_048_576,
|
|
3518
|
-
outputLimit: 65_535,
|
|
3519
|
-
supportsThinking: true,
|
|
3520
|
-
supportsTools: true,
|
|
3521
|
-
supportsVision: true,
|
|
3522
|
-
isPreview: false,
|
|
3523
|
-
isClaude: false,
|
|
3524
|
-
},
|
|
3525
|
-
] as const satisfies readonly AntigravityModelDefinition[];
|
|
3526
|
-
|
|
3527
|
-
/**
|
|
3528
|
-
* Id projection of the quota group routing table (the former quota.ts
|
|
3529
|
-
* ANTIGRAVITY_MODEL_IDS_2026).
|
|
3530
|
-
*/
|
|
3531
|
-
export const QUOTA_GROUP_MODEL_IDS_2026 = QUOTA_GROUP_MODEL_DEFINITIONS.map(
|
|
3532
|
-
(m) => m.id,
|
|
3533
|
-
) as unknown as readonly string[];
|
|
3534
|
-
|
|
3535
|
-
/**
|
|
3536
|
-
* Gemini-CLI-pool subset of the quota group routing table (the former
|
|
3537
|
-
* quota.ts GEMINI_CLI_ONLY_MODELS).
|
|
3538
|
-
*/
|
|
3539
|
-
export const QUOTA_GROUP_GEMINI_CLI_ONLY_MODELS = QUOTA_GROUP_MODEL_DEFINITIONS.filter(
|
|
3540
|
-
(m) => m.group === "gemini-cli",
|
|
3541
|
-
).map((m) => m.id) as unknown as readonly string[];
|
|
3542
|
-
|
|
3543
|
-
/**
|
|
3544
|
-
* Catalog id list (93 ids — bare + antigravity aliases of the frozen
|
|
3545
|
-
* catalog); the historical models.ts ANTIGRAVITY_MODELS_2026 semantic.
|
|
3546
|
-
*/
|
|
3547
|
-
export const ANTIGRAVITY_MODELS_2026 = MODEL_CATALOG_2026_08_25.map((m) => m.id) as unknown as readonly string[];
|
|
3548
|
-
|
|
3549
|
-
/**
|
|
3550
|
-
* Catalog prodOnly projection — the historical models.ts
|
|
3551
|
-
* GEMINI_CLI_ONLY_MODELS_2026 semantic (distinct name from the explicit
|
|
3552
|
-
* plugin-lineage GEMINI_CLI_ONLY_MODELS above).
|
|
3553
|
-
*/
|
|
3554
|
-
export const GEMINI_CLI_ONLY_MODELS_2026 = MODEL_CATALOG_2026_08_25.filter((m) => m.endpointHints.prodOnly).map(
|
|
3555
|
-
(m) => m.id,
|
|
3556
|
-
) as unknown as readonly string[];
|
|
3557
|
-
|
|
3558
|
-
/**
|
|
3559
|
-
* Preview slice of the catalog (id projection).
|
|
3560
|
-
*/
|
|
3561
|
-
export const PREVIEW_MODELS_2026 = getPreviewModels().map((m) => m.id) as unknown as readonly string[];
|
|
3562
|
-
|
|
3563
|
-
/**
|
|
3564
|
-
* Union of the legacy bypass list ids (the former accounts.ts / config.ts /
|
|
3565
|
-
* project.ts / quota.ts Model2026 and fingerprint.ts / recovery.ts /
|
|
3566
|
-
* streaming.ts ModelId2026 semantics — 11 literals).
|
|
3567
|
-
*/
|
|
3568
|
-
export type Model2026 = (typeof MODELS_2026_LEGACY)[number];
|
|
3569
|
-
|
|
3570
|
-
/** Historical alias of {@link Model2026} (same union, parallel name). */
|
|
3571
|
-
export type ModelId2026 = Model2026;
|
|
3572
|
-
|
|
3573
|
-
/** Union of {@link SUPPORTED_MODELS_2026} (auth lineage). */
|
|
3574
|
-
export type SupportedModel2026 = (typeof SUPPORTED_MODELS_2026)[number];
|
|
3575
|
-
|
|
3576
|
-
/** Union of {@link FETCH_AVAILABLE_MODELS_2026} (request lineage). */
|
|
3577
|
-
export type FetchAvailableModel2026 = (typeof FETCH_AVAILABLE_MODELS_2026)[number];
|
|
3578
|
-
|
|
3579
|
-
export const MODEL_CATALOG = MODEL_CATALOG_2026_08_25;
|
|
3580
|
-
export const MODEL_MAP = MODEL_MAP_2026_08_25;
|
|
3581
|
-
|
|
3582
|
-
// ---------------------------------------------------------------------------
|
|
3583
|
-
// Section 15. Absorbed classifiers (plugin.ts / request.ts / search.ts /
|
|
3584
|
-
// auth.ts lineage — v2.1.15 Phase A)
|
|
3585
|
-
// ---------------------------------------------------------------------------
|
|
3586
|
-
|
|
3587
|
-
/**
|
|
3588
|
-
* Determines whether a model must use the prod-only Gemini CLI pool (skip
|
|
3589
|
-
* sandbox). Canonical merge of the constants.ts, plugin.ts, quota.ts and
|
|
3590
|
-
* request.ts variants: the request.ts implementation wins (live-validated
|
|
3591
|
-
* v2.1.14 E2E chain and classification superset — it adds the customtools
|
|
3592
|
-
* policy and matches every gemini-3* form anywhere in the id). The explicit
|
|
3593
|
-
* GEMINI_CLI_ONLY_MODELS list is retained above for documentation/surface;
|
|
3594
|
-
* every entry of every historical variant is also covered by the policy
|
|
3595
|
-
* checks, so all consumers keep their exact classification behavior.
|
|
3596
|
-
*
|
|
3597
|
-
* Rule from RESEARCH:
|
|
3598
|
-
* - any model containing preview → cli only
|
|
3599
|
-
* - any gemini-3 or gemini-3.1 → cli only (2026 policy)
|
|
3600
|
-
* - explicit list GEMINI_CLI_ONLY_MODELS
|
|
3601
|
-
* Third-person observer: emulates behavior that fixed #233
|
|
3602
|
-
*
|
|
3603
|
-
* @param modelId - model id to test
|
|
3604
|
-
* @returns true if must skip sandbox
|
|
3605
|
-
*/
|
|
3606
|
-
export function isGeminiCLIOnlyModel(modelId: string): boolean {
|
|
3607
|
-
if (!modelId || typeof modelId !== "string") return false;
|
|
3608
|
-
const lower = modelId.trim().toLowerCase();
|
|
3609
|
-
if (!lower) return false;
|
|
3610
|
-
|
|
3611
|
-
// explicit list match
|
|
3612
|
-
if ((GEMINI_CLI_ONLY_MODELS as readonly string[]).includes(lower as any)) return true;
|
|
3613
|
-
if ((GEMINI_CLI_ONLY_MODELS as readonly string[]).some((m) => lower.includes(m))) return true;
|
|
3614
|
-
|
|
3615
|
-
// policy: preview → prod only
|
|
3616
|
-
if (lower.includes("preview")) return true;
|
|
3617
|
-
|
|
3618
|
-
// policy: customtools variants are Antigravity 2026 features — prod only
|
|
3619
|
-
// (union merged from request-helpers.ts in v2.1.14)
|
|
3620
|
-
if (lower.includes("customtools")) return true;
|
|
3621
|
-
|
|
3622
|
-
// policy: gemini-3+ only prod — covers gemini-3-pro-preview, gemini-3-flash, gemini-3.1-pro-preview, antigravity-gemini-3-*
|
|
3623
|
-
if (lower.includes("gemini-3") || lower.startsWith("antigravity-gemini-3")) return true;
|
|
3624
|
-
|
|
3625
|
-
// also antigravity-gemini-3 aliases
|
|
3626
|
-
if (lower.includes("gemini-3.") || lower.includes("antigravity-gemini-3.")) return true;
|
|
3627
|
-
|
|
3628
|
-
return false;
|
|
3629
|
-
}
|
|
3630
|
-
|
|
3631
|
-
/**
|
|
3632
|
-
* Detects image-generation-capable models (image variants and flash-image /
|
|
3633
|
-
* imagen families). Merged from plugin.ts (image || imagen, null-safe) and
|
|
3634
|
-
* search.ts (image || 3.1-flash-image — the second clause is subsumed by
|
|
3635
|
-
* the first, so the union is behavior-identical for both consumers).
|
|
3636
|
-
*/
|
|
3637
|
-
export function isImageGenModel(modelId: string): boolean {
|
|
3638
|
-
const l = String(modelId ?? "").toLowerCase();
|
|
3639
|
-
return l.includes("image") || l.includes("imagen");
|
|
3640
|
-
}
|
|
3641
|
-
|
|
3642
|
-
/**
|
|
3643
|
-
* Builds the Gemini image-generation request fragment: aspect ratio from
|
|
3644
|
-
* argument or OPENCODE_IMAGE_ASPECT_RATIO env (default 1:1), TEXT+IMAGE
|
|
3645
|
-
* modalities and permissive safety settings. Canonical is the plugin.ts
|
|
3646
|
-
* shape (top-level responseModalities — the live-used variant); the
|
|
3647
|
-
* search.ts variant wrapped them in generationConfig and had no in-repo
|
|
3648
|
-
* consumers.
|
|
3649
|
-
*/
|
|
3650
|
-
export function buildImageGenConfig(aspect?: string): any {
|
|
3651
|
-
const ar = aspect || process.env.OPENCODE_IMAGE_ASPECT_RATIO || "1:1";
|
|
3652
|
-
return {
|
|
3653
|
-
imageConfig: { aspectRatio: ar },
|
|
3654
|
-
responseModalities: ["TEXT", "IMAGE"],
|
|
3655
|
-
safetySettings: [
|
|
3656
|
-
{ category: "HARM_CATEGORY_HARASSMENT", threshold: "BLOCK_NONE" },
|
|
3657
|
-
{ category: "HARM_CATEGORY_HATE_SPEECH", threshold: "BLOCK_NONE" },
|
|
3658
|
-
{ category: "HARM_CATEGORY_SEXUALLY_EXPLICIT", threshold: "BLOCK_NONE" },
|
|
3659
|
-
{ category: "HARM_CATEGORY_DANGEROUS_CONTENT", threshold: "BLOCK_NONE" },
|
|
3660
|
-
],
|
|
3661
|
-
};
|
|
3662
|
-
}
|
|
3663
|
-
|
|
3664
|
-
/**
|
|
3665
|
-
* Maps a model id to its routing group ("gemini-cli" when the model contains
|
|
3666
|
-
* "preview" or starts with a gemini-3.x prefix (3, 3.1, 3.5, 3.6, 3.7);
|
|
3667
|
-
* otherwise "antigravity" — claude and gpt-oss always antigravity).
|
|
3668
|
-
* Canonical merge of the auth.ts (gemini-3.7-aware) and plugin.ts
|
|
3669
|
-
* (claude/gpt-oss precedence) variants: equivalent on every real catalog id
|
|
3670
|
-
* and a classification superset of both on synthetic ids.
|
|
3671
|
-
*/
|
|
3672
|
-
export const mapModelToGroup = (m: string): "antigravity" | "gemini-cli" => {
|
|
3673
|
-
const l = String(m ?? "").toLowerCase();
|
|
3674
|
-
if (l.includes("claude") || l.includes("gpt-oss")) return "antigravity";
|
|
3675
|
-
if (l.includes("gemini")) {
|
|
3676
|
-
return l.includes("preview") ||
|
|
3677
|
-
l.includes("3-") ||
|
|
3678
|
-
l.startsWith("gemini-3.7") ||
|
|
3679
|
-
l.startsWith("gemini-3.6") ||
|
|
3680
|
-
l.startsWith("gemini-3.5") ||
|
|
3681
|
-
l.startsWith("gemini-3.1") ||
|
|
3682
|
-
l.startsWith("gemini-3")
|
|
3683
|
-
? "gemini-cli"
|
|
3684
|
-
: "antigravity";
|
|
3685
|
-
}
|
|
3686
|
-
return "antigravity";
|
|
3687
|
-
};
|
|
3688
|
-
|
|
3689
|
-
/**
|
|
3690
|
-
* Ordered endpoint cascade for a model: explicit overrides win; Gemini-CLI
|
|
3691
|
-
* -only models get the PROD+DAILY order; everything else gets the full
|
|
3692
|
-
* PROD/DAILY/SANDBOX order. Canonical is the request.ts variant
|
|
3693
|
-
* (live-validated E2E chain); the plugin.ts variant's extra shouldSkipSandbox
|
|
3694
|
-
* consultation is subsumed by the canonical isGeminiCLIOnlyModel classifier.
|
|
3695
|
-
*/
|
|
3696
|
-
export function getEndpointsForModel(modelId: string, overrides?: string[]): string[] {
|
|
3697
|
-
if (overrides && overrides.length > 0) {
|
|
3698
|
-
return overrides.map((e) => stripTrailingSlashes(e)).filter(Boolean);
|
|
3699
|
-
}
|
|
3700
|
-
if (isGeminiCLIOnlyModel(modelId)) {
|
|
3701
|
-
return [...ENDPOINT_ORDER_GEMINI_CLI];
|
|
3702
|
-
}
|
|
3703
|
-
return [...ENDPOINT_ORDER_ANTIGRAVITY];
|
|
3704
|
-
}
|
|
3705
|
-
|
|
3706
|
-
// ---------------------------------------------------------------------------
|
|
3707
|
-
// Section 16. Barrel export for library-first root-first usage
|
|
3708
|
-
// ---------------------------------------------------------------------------
|
|
3709
|
-
|
|
3710
|
-
export const ModelsModule = {
|
|
3711
|
-
CATALOG_DATE_ISO,
|
|
3712
|
-
CATALOG_DATE_BR,
|
|
3713
|
-
CATALOG_VERSION,
|
|
3714
|
-
REFERENCES,
|
|
3715
|
-
TIMELINE: OPENCODE_TXT_TIMELINE,
|
|
3716
|
-
ENDPOINTS: CODE_ASSIST_ENDPOINTS,
|
|
3717
|
-
ENDPOINT_ORDER,
|
|
3718
|
-
ENDPOINT_ORDER_ANTIGRAVITY,
|
|
3719
|
-
ENDPOINT_ORDER_GEMINI_CLI,
|
|
3720
|
-
PROJECT_FALLBACK,
|
|
3721
|
-
ANTIGRAVITY_VERSION_FALLBACK,
|
|
3722
|
-
THINKING_LEVELS,
|
|
3723
|
-
THINKING_BUDGET_MAP,
|
|
3724
|
-
CONTEXT_WINDOW_GEMINI,
|
|
3725
|
-
CONTEXT_WINDOW_CLAUDE,
|
|
3726
|
-
OUTPUT_LIMIT_GEMINI,
|
|
3727
|
-
OUTPUT_LIMIT_CLAUDE,
|
|
3728
|
-
CATALOG: MODEL_CATALOG_2026_08_25,
|
|
3729
|
-
MAP: MODEL_MAP_2026_08_25,
|
|
3730
|
-
ALIASES: MODEL_ALIASES_2026_08_25,
|
|
3731
|
-
GROUPED: MODEL_CATALOG_GROUPED,
|
|
3732
|
-
FLAT: MODELS_2026_08_25,
|
|
3733
|
-
DEFAULT_MODEL,
|
|
3734
|
-
SEARCH_MODEL,
|
|
3735
|
-
SEARCH_MODEL_PREVIEW,
|
|
3736
|
-
SEARCH_MODEL_FALLBACKS,
|
|
3737
|
-
OMNIROUTE_FALLBACK_MODEL,
|
|
3738
|
-
FALLBACKS,
|
|
3739
|
-
MODELS_2026,
|
|
3740
|
-
GEMINI_BARE_MODEL_IDS,
|
|
3741
|
-
MODELS_2026_BASE,
|
|
3742
|
-
MODELS_2026_ANTIGRAVITY_ALIAS,
|
|
3743
|
-
MODELS_2026_PROVIDER,
|
|
3744
|
-
MODELS_2026_ANTIGRAVITY,
|
|
3745
|
-
MODELS_2026_ALL,
|
|
3746
|
-
MODELS_2026_LEGACY,
|
|
3747
|
-
SUPPORTED_MODELS_2026,
|
|
3748
|
-
FETCH_AVAILABLE_MODELS_2026,
|
|
3749
|
-
ALL_MODELS_2026,
|
|
3750
|
-
ANTIGRAVITY_MODEL_IDS_2026,
|
|
3751
|
-
ANTIGRAVITY_MODELS_2026,
|
|
3752
|
-
GEMINI_CLI_ONLY_MODELS,
|
|
3753
|
-
GEMINI_CLI_ONLY_MODELS_2026,
|
|
3754
|
-
PREVIEW_MODELS_2026,
|
|
3755
|
-
QUOTA_GROUP_MODEL_DEFINITIONS,
|
|
3756
|
-
QUOTA_GROUP_MODEL_IDS_2026,
|
|
3757
|
-
QUOTA_GROUP_GEMINI_CLI_ONLY_MODELS,
|
|
3758
|
-
// getters
|
|
3759
|
-
getModel,
|
|
3760
|
-
hasModel,
|
|
3761
|
-
isPreview,
|
|
3762
|
-
isThinkingModel,
|
|
3763
|
-
isImageModel,
|
|
3764
|
-
isAntagravityGroup,
|
|
3765
|
-
isGeminiCliGroup,
|
|
3766
|
-
isCLIOnly,
|
|
3767
|
-
getModelsByGroup,
|
|
3768
|
-
getModelsByThinkingLevel,
|
|
3769
|
-
getPreviewModels,
|
|
3770
|
-
getStableModels,
|
|
3771
|
-
getAntagravityModels,
|
|
3772
|
-
getGeminiCliModels,
|
|
3773
|
-
getThinkingBudget,
|
|
3774
|
-
getContextWindow,
|
|
3775
|
-
getOutputLimit,
|
|
3776
|
-
getEndpointForModel,
|
|
3777
|
-
shouldSkipSandboxForModel,
|
|
3778
|
-
listModelIds,
|
|
3779
|
-
listBareModelIds,
|
|
3780
|
-
searchModels,
|
|
3781
|
-
routeModelViaOmniRoute,
|
|
3782
|
-
mapModelFor9Router,
|
|
3783
|
-
normalizeModelId,
|
|
3784
|
-
parseThinkingLevelFromId,
|
|
3785
|
-
getThinkingBudgetForLevel,
|
|
3786
|
-
isGeminiCliOnlyId,
|
|
3787
|
-
isGeminiCLIOnlyModel,
|
|
3788
|
-
isImageGenModel,
|
|
3789
|
-
buildImageGenConfig,
|
|
3790
|
-
mapModelToGroup,
|
|
3791
|
-
getEndpointsForModel,
|
|
3792
|
-
fnv1a32,
|
|
3793
|
-
};
|
|
3794
|
-
|
|
3795
|
-
/** Back-compat alias of ModelsModule (previous barrel name). */
|
|
3796
|
-
export const Models2026Module = ModelsModule;
|
|
3797
|
-
|
|
3798
|
-
export default ModelsModule;
|
|
3799
|
-
|
|
3800
|
-
// v2.1.15 Phase B: the identity-masquerade helpers (getDynamicUserAgent,
|
|
3801
|
-
// normalizePlatform, normalizeArch, buildAntagravityHeaders), the header
|
|
3802
|
-
// stripper, isRetryableStatus, getJitterMs and fetchWithTimeout moved out —
|
|
3803
|
-
// identity logic lives in fingerprint.ts, generic utilities in core.ts,
|
|
3804
|
-
// request utilities in request.ts. models.ts contains model identification
|
|
3805
|
-
// ONLY.
|