@wenathlan/devthink 2.0.12 → 2.0.14
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 +20 -0
- package/accounts.ts +2087 -0
- package/agent.ts +2331 -0
- package/antigravity.ts +2139 -0
- package/apifreeze.ts +4146 -0
- package/auth.ts +642 -0
- package/background.ts +16837 -0
- package/bridge.ts +2080 -0
- package/build.ts +54 -0
- package/bun.ts +26 -0
- package/capture.ts +1614 -0
- package/checksecrets.ts +72 -0
- package/cjs.ts +9 -0
- package/cli.ts +3500 -0
- package/commands.ts +1101 -0
- package/companion.ts +450 -0
- package/compatibility.ts +37 -0
- package/config.ts +3137 -0
- package/constants.ts +943 -0
- package/core.ts +1473 -0
- package/crossbrowser.ts +1359 -0
- package/dashdone.ts +605 -0
- package/data.ts +943 -0
- package/database.ts +133 -0
- package/debug.ts +850 -0
- package/deno.ts +27 -0
- package/devthink.ts +707 -0
- package/dist/accounts.d.ts +409 -0
- package/dist/agent.d.ts +837 -0
- package/dist/antigravity.d.ts +380 -0
- package/dist/apifreeze.d.ts +113 -0
- package/dist/auth.d.ts +224 -0
- package/{bridge.d.ts → dist/bridge.d.ts} +1 -1
- package/dist/capture.d.ts +595 -0
- package/dist/cjs.d.ts +6 -0
- package/{cli.js → dist/cli.js} +2 -2
- package/dist/commands.d.ts +310 -0
- package/dist/compatibility.d.ts +17 -0
- package/dist/config.d.ts +1853 -0
- package/dist/constants.d.ts +637 -0
- package/dist/core.d.ts +361 -0
- package/dist/data.d.ts +330 -0
- package/dist/database.d.ts +24 -0
- package/dist/debug.d.ts +270 -0
- package/dist/engine.d.ts +74 -0
- package/dist/environments.d.ts +244 -0
- package/dist/evidence.d.ts +277 -0
- package/dist/export.d.ts +311 -0
- package/dist/fingerprint.d.ts +594 -0
- package/dist/flow.d.ts +300 -0
- package/dist/gates.d.ts +103 -0
- package/dist/identity.d.ts +51 -0
- package/dist/ids.d.ts +7 -0
- package/dist/llm.d.ts +652 -0
- package/dist/models.d.ts +1807 -0
- package/dist/net.d.ts +325 -0
- package/dist/neutral.d.ts +41 -0
- package/dist/oauth.d.ts +703 -0
- package/dist/page.d.ts +1166 -0
- package/dist/perf.d.ts +481 -0
- package/dist/plan.d.ts +134 -0
- package/dist/project.d.ts +395 -0
- package/dist/providers.d.ts +37 -0
- package/dist/quota.d.ts +453 -0
- package/dist/recovery.d.ts +621 -0
- package/dist/request.d.ts +1492 -0
- package/dist/run.d.ts +779 -0
- package/dist/runtime.d.ts +212 -0
- package/dist/search.d.ts +375 -0
- package/dist/security.d.ts +534 -0
- package/dist/serve.d.ts +136 -0
- package/dist/session.d.ts +296 -0
- package/dist/storage.d.ts +53 -0
- package/dist/streaming.d.ts +1119 -0
- package/dist/swarm.d.ts +328 -0
- package/dist/tools.d.ts +170 -0
- package/dist/types.d.ts +8357 -0
- package/dist/utils.d.ts +82 -0
- package/dist/version.d.ts +7 -0
- package/dist/versionregistry.d.ts +406 -0
- package/dist/views.d.ts +579 -0
- package/dist/workbenchsession.d.ts +69 -0
- package/dist/workflow.d.ts +649 -0
- package/docs/readme.md +92 -0
- package/docs/schemas/antigravity.json +192 -0
- package/engine.ts +1524 -0
- package/environments.ts +1005 -0
- package/evidence.ts +643 -0
- package/export.ts +889 -0
- package/fingerprint.ts +1458 -0
- package/flow.ts +1190 -0
- package/gates.ts +307 -0
- package/gateway.ts +34 -0
- package/hardening.ts +191 -0
- package/headless.ts +369 -0
- package/http.ts +2110 -0
- package/identity.ts +246 -0
- package/ids.ts +26 -0
- package/index.ts +369 -0
- package/llm.ts +2682 -0
- package/mcp.ts +1835 -0
- package/{memory.js → memory.ts} +3834 -2310
- package/models.ts +3805 -0
- package/modes.ts +43 -0
- package/net.ts +1214 -0
- package/neutral.ts +362 -0
- package/node.ts +26 -0
- package/oauth.ts +2216 -0
- package/offscreen.ts +170 -0
- package/pack.ts +956 -0
- package/package.json +175 -82
- package/page.ts +7824 -0
- package/pagebridge.ts +1116 -0
- package/perf.ts +957 -0
- package/plan.ts +672 -0
- package/plugin.ts +76 -0
- package/{policy.js → policy.ts} +5073 -4679
- package/prisma.config.ts +27 -0
- package/progress.ts +1308 -0
- package/project.ts +1291 -0
- package/protocol.ts +4187 -0
- package/providers.ts +246 -0
- package/quota.ts +1887 -0
- package/recovery.ts +2433 -0
- package/request.ts +4482 -0
- package/run.ts +2135 -0
- package/runtime.ts +526 -0
- package/search.ts +1760 -0
- package/security.ts +1673 -0
- package/serve.ts +419 -0
- package/server.ts +5538 -0
- package/session.ts +1162 -0
- package/storage.ts +182 -0
- package/streaming.ts +4101 -0
- package/swarm.ts +884 -0
- package/sync.ts +56 -0
- package/tests/agentcert.test.ts +128 -0
- package/tests/agentfleet.test.ts +214 -0
- package/tests/agentreview.test.ts +241 -0
- package/tests/agentstream.test.ts +335 -0
- package/tests/agentwork.test.ts +356 -0
- package/tests/apifreeze.test.ts +290 -0
- package/tests/apimap.test.ts +112 -0
- package/tests/approvalgate.test.ts +175 -0
- package/tests/artifactmanifest.test.ts +204 -0
- package/tests/attentionfeed.test.ts +163 -0
- package/tests/backgroundruns.test.ts +100 -0
- package/tests/batchscheduling.test.ts +131 -0
- package/tests/blackboard.test.ts +238 -0
- package/tests/bridge.test.ts +1088 -0
- package/tests/browsercoverage.test.ts +134 -0
- package/tests/browserpolyfills.test.ts +124 -0
- package/tests/build.mjs +1260 -0
- package/tests/clientauth.test.ts +223 -0
- package/tests/clitools.test.ts +578 -0
- package/tests/confirmgates.test.ts +190 -0
- package/tests/containerpack.test.ts +143 -0
- package/tests/controlflow.test.ts +2120 -0
- package/tests/coordination.test.ts +345 -0
- package/tests/copyscreen.test.ts +139 -0
- package/tests/core.test.ts +417 -0
- package/tests/costcert.test.ts +95 -0
- package/tests/crossbrowser.test.ts +115 -0
- package/tests/cspaudit.test.ts +79 -0
- package/tests/dashdone.test.ts +615 -0
- package/tests/datagrid.test.ts +137 -0
- package/tests/doccheck.test.ts +107 -0
- package/tests/dombatch.test.ts +109 -0
- package/tests/emulation.test.ts +282 -0
- package/tests/environments.test.ts +259 -0
- package/tests/evidenceviews.test.ts +88 -0
- package/tests/exporttools.test.ts +185 -0
- package/tests/firefoxprep.test.ts +134 -0
- package/tests/flowlibrary.test.ts +242 -0
- package/tests/flowrun.test.ts +303 -0
- package/tests/forensics.test.ts +439 -0
- package/tests/gateway.test.ts +939 -0
- package/tests/headlesslib.test.ts +171 -0
- package/tests/httpstream.test.ts +277 -0
- package/tests/immutablelog.test.ts +157 -0
- package/tests/inboundguard.test.ts +177 -0
- package/tests/lazyload.test.ts +72 -0
- package/tests/librarymodes.test.ts +623 -0
- package/tests/llm.test.ts +696 -0
- package/tests/manifest.test.ts +226 -0
- package/tests/maskinputs.test.ts +150 -0
- package/tests/matrixverify.test.ts +111 -0
- package/tests/mavenpack.test.ts +75 -0
- package/tests/mcpserver.test.ts +704 -0
- package/tests/memory.test.ts +4155 -0
- package/tests/memorycare.test.ts +230 -0
- package/tests/migrateplan.test.ts +349 -0
- package/tests/minimization.test.ts +414 -0
- package/tests/modelroute.test.ts +112 -0
- package/tests/multiagent.test.ts +440 -0
- package/tests/nativebridge.test.ts +807 -0
- package/tests/navigation.test.ts +284 -0
- package/tests/nugetpack.test.ts +83 -0
- package/tests/orchestration.test.ts +449 -0
- package/tests/originpolicy.test.ts +405 -0
- package/tests/outputcompare.test.ts +97 -0
- package/tests/package.test.ts +91 -0
- package/tests/pagebridge.test.ts +5909 -0
- package/tests/pentest.test.ts +75 -0
- package/tests/perfrecords.test.ts +257 -0
- package/tests/permdiff.test.ts +85 -0
- package/tests/phishguard.test.ts +128 -0
- package/tests/pickerviews.test.ts +155 -0
- package/tests/pipelines.test.ts +381 -0
- package/tests/planlint.test.ts +240 -0
- package/tests/planreview.test.ts +383 -0
- package/tests/platformtargets.test.ts +56 -0
- package/tests/policy.test.ts +8284 -0
- package/tests/portability.test.ts +96 -0
- package/tests/progress.test.ts +1036 -0
- package/tests/promptlibrary.test.ts +116 -0
- package/tests/protocol.test.ts +4793 -0
- package/tests/publishingpipeline.test.ts +314 -0
- package/tests/quickactions.test.ts +164 -0
- package/tests/readiness.test.ts +78 -0
- package/tests/recipes.test.ts +163 -0
- package/tests/redactshots.test.ts +216 -0
- package/tests/registernvidiakeys.ts +51 -0
- package/tests/relayserve.test.ts +304 -0
- package/tests/releasenotes.test.ts +276 -0
- package/tests/resilience.test.ts +467 -0
- package/tests/resourceaware.test.ts +187 -0
- package/tests/runbudget.test.ts +125 -0
- package/tests/runhistory.test.ts +299 -0
- package/tests/runreplay.test.ts +113 -0
- package/tests/runresume.test.ts +184 -0
- package/tests/runstate.test.ts +288 -0
- package/tests/runtimeadapters.test.ts +251 -0
- package/tests/safariskeleton.test.ts +115 -0
- package/tests/sandboxframe.test.ts +196 -0
- package/tests/sbom.test.ts +105 -0
- package/tests/secretvault.test.ts +188 -0
- package/tests/selcache.test.ts +111 -0
- package/tests/sessioninterface.test.ts +791 -0
- package/tests/sessions.test.ts +591 -0
- package/tests/siteprefs.test.ts +228 -0
- package/tests/snapshotdelta.test.ts +165 -0
- package/tests/statusviews.test.ts +237 -0
- package/tests/stepmeter.test.ts +200 -0
- package/tests/streamparse.test.ts +163 -0
- package/tests/stylepruning.test.ts +90 -0
- package/tests/surfaces.test.ts +282 -0
- package/tests/sweep.test.ts +78 -0
- package/tests/syncbridge.test.ts +164 -0
- package/tests/taskqueue.test.ts +206 -0
- package/tests/toolcalls.test.ts +336 -0
- package/tests/toolcatalog.test.ts +201 -0
- package/tests/torture-agent.test.ts +706 -0
- package/tests/torture-auth.test.ts +461 -0
- package/tests/torture-commands.test.ts +895 -0
- package/tests/torture-data.test.ts +923 -0
- package/tests/torture-environments.test.ts +285 -0
- package/tests/torture-export.test.ts +263 -0
- package/tests/torture-http.test.ts +1379 -0
- package/tests/torture-llm.test.ts +808 -0
- package/tests/torture-memory.test.ts +1084 -0
- package/tests/torture-plan.test.ts +829 -0
- package/tests/torture-run.test.ts +626 -0
- package/tests/torture-session.test.ts +928 -0
- package/tests/torture-swarm.test.ts +1245 -0
- package/tests/torture-tools.test.ts +964 -0
- package/tests/torture-workflow.test.ts +2354 -0
- package/tests/tourviews.test.ts +52 -0
- package/tests/transparency.test.ts +147 -0
- package/tests/trigger.test.ts +941 -0
- package/tests/v1sunset.test.ts +428 -0
- package/tests/virtlist.test.ts +94 -0
- package/tests/vision.test.ts +540 -0
- package/tests/vsixpack.test.ts +145 -0
- package/tests/webapi.test.ts +523 -0
- package/tests/workflow.test.ts +1785 -0
- package/tests/workfloweditor.test.ts +759 -0
- package/tests/xpipack.test.ts +128 -0
- package/tools.ts +734 -0
- package/types.ts +9908 -0
- package/umd.ts +9 -0
- package/utils.ts +249 -0
- package/version.ts +8 -0
- package/versionregistry.ts +1310 -0
- package/views.ts +2153 -0
- package/vitest.config.ts +12 -0
- package/web/App.tsx +78 -0
- package/web/README.md +47 -0
- package/web/capacitor.config.ts +46 -0
- package/web/const.ts +19 -0
- package/web/control.shell.tsx +66 -0
- package/web/dashboardpage.ts +554 -0
- package/web/db.ts +493 -0
- package/web/design.html +541 -0
- package/web/gatewayview/Gateway.tsx +345 -0
- package/web/gatewayview/config.ts +1042 -0
- package/web/gatewayview/definition.ts +174 -0
- package/web/icons.ts +15 -0
- package/{manifest.json → web/manifest.json} +1 -1
- package/web/optionspage.ts +691 -0
- package/web/popup.ts +1651 -0
- package/web/schema.prisma +176 -0
- package/web/sidepanel.ts +7941 -0
- package/web/sitemanifest.json +13 -0
- package/web/terminal-ui.tsx +622 -0
- package/web/transparencypage.ts +541 -0
- package/web/vite.config.ts +39 -0
- package/web/workspace.ts +23 -0
- package/workbenchmemory.ts +104 -0
- package/workbenchsession.ts +304 -0
- package/workflow.ts +4495 -0
- package/bridge.d.ts.map +0 -1
- package/bridge.js +0 -1877
- package/bun.d.ts.map +0 -1
- package/bun.js +0 -52329
- package/caps/background.json +0 -712
- package/caps/cli.json +0 -360
- package/caps/library.json +0 -3611
- package/caps/mcp.json +0 -126
- package/caps/pagebridge.json +0 -377
- package/caps/popup.json +0 -51
- package/caps/sidepanel.json +0 -522
- package/checksums.txt +0 -142
- package/cli.d.ts.map +0 -1
- package/companion.d.ts.map +0 -1
- package/companion.js +0 -389
- package/crossbrowser.d.ts.map +0 -1
- package/crossbrowser.js +0 -1191
- package/dashdone.d.ts.map +0 -1
- package/dashdone.js +0 -368
- package/deno.d.ts.map +0 -1
- package/deno.js +0 -52325
- package/devthink.umd.js +0 -52346
- package/fixtures/bun.ts +0 -7
- package/fixtures/cjs.js +0 -6
- package/fixtures/deno.ts +0 -6
- package/fixtures/example-org-pagestate.json +0 -22
- package/fixtures/importers/automa-workflow.json +0 -18
- package/fixtures/importers/selenium-side.json +0 -20
- package/fixtures/importers/tabular-plan.csv +0 -7
- package/fixtures/importers/uivision-macro.json +0 -10
- package/fixtures/importers/v1-plan.json +0 -13
- package/fixtures/mcp-client.mjs +0 -14
- package/fixtures/pages/checkout.html +0 -192
- package/fixtures/pages/dashboard.html +0 -110
- package/fixtures/pages/feed.html +0 -113
- package/fixtures/pages/product-grid.html +0 -150
- package/fixtures/plans/form-inventory-plan.json +0 -11
- package/fixtures/plans/release-notes-plan.json +0 -11
- package/fixtures/recipes/agentscompete.json +0 -11
- package/fixtures/recipes/agentsforms.json +0 -11
- package/fixtures/recipes/agentsmonitor.json +0 -11
- package/fixtures/recipes/agentsreview.json +0 -29
- package/fixtures/recipes/agentswarm.json +0 -11
- package/fixtures/recipes/fillcalendar.json +0 -12
- package/fixtures/recipes/fillcheckout.json +0 -13
- package/fixtures/recipes/filldependentdropdowns.json +0 -12
- package/fixtures/recipes/fillfromcsv.json +0 -13
- package/fixtures/recipes/fillloginform.json +0 -12
- package/fixtures/recipes/fillmultistepwizard.json +0 -13
- package/fixtures/recipes/fillregistration.json +0 -12
- package/fixtures/recipes/fillsearchfilters.json +0 -12
- package/fixtures/recipes/filltypeahead.json +0 -11
- package/fixtures/recipes/monitoralerts.json +0 -12
- package/fixtures/recipes/monitoravailability.json +0 -11
- package/fixtures/recipes/monitornetworkquiet.json +0 -12
- package/fixtures/recipes/monitorpagechanges.json +0 -11
- package/fixtures/recipes/monitorpricechange.json +0 -11
- package/fixtures/recipes/monitorschedule.json +0 -12
- package/fixtures/recipes/scrapedynamicprices.json +0 -13
- package/fixtures/recipes/scrapeimagegallery.json +0 -12
- package/fixtures/recipes/scrapeinfinitefeed.json +0 -13
- package/fixtures/recipes/scrapenestedlists.json +0 -12
- package/fixtures/recipes/scrapeproductgrid.json +0 -12
- package/fixtures/recipes/scrapereviews.json +0 -12
- package/fixtures/recipes/scrapesearchresults.json +0 -12
- package/fixtures/recipes/scrapetablepagination.json +0 -12
- package/fixtures/recipes/testaccessibility.json +0 -34
- package/fixtures/recipes/testconsoleerrors.json +0 -12
- package/fixtures/recipes/testdeeplinks.json +0 -12
- package/fixtures/recipes/testformvalidation.json +0 -13
- package/fixtures/recipes/testlayoutshift.json +0 -12
- package/fixtures/recipes/testlinkcheck.json +0 -12
- package/fixtures/recipes/testloadtiming.json +0 -12
- package/fixtures/recipes/testvisualdiff.json +0 -12
- package/fixtures/workflows/changelog-digest-workflow.json +0 -13
- package/fixtures/workflows/form-survey-workflow.json +0 -13
- package/gallery.json +0 -706
- package/hardening.d.ts.map +0 -1
- package/hardening.js +0 -188
- package/headless.d.ts.map +0 -1
- package/headless.js +0 -11522
- package/http.d.ts.map +0 -1
- package/http.js +0 -2165
- package/index.cjs +0 -54682
- package/index.d.ts.map +0 -1
- package/index.js +0 -52310
- package/index.neutral.js +0 -46343
- package/mcp.d.ts.map +0 -1
- package/mcp.js +0 -20515
- package/memory.d.ts.map +0 -1
- package/nativehost.template.json +0 -10
- package/node.cjs +0 -54686
- package/node.d.ts.map +0 -1
- package/pack.d.ts.map +0 -1
- package/pack.js +0 -805
- package/policy.d.ts.map +0 -1
- package/progress.d.ts.map +0 -1
- package/progress.js +0 -645
- package/protocol.d.ts.map +0 -1
- package/protocol.js +0 -8334
- package/schemas/audit.schema.json +0 -226
- package/schemas/capability.schema.json +0 -113
- package/schemas/envelope.schema.json +0 -162
- package/schemas/memory.schema.json +0 -51
- package/schemas/observation.schema.json +0 -113
- package/schemas/plan.schema.json +0 -208
- package/schemas/progress.schema.json +0 -126
- package/schemas/proposal.schema.json +0 -68
- package/schemas/session.schema.json +0 -82
- package/schemas/tool.schema.json +0 -94
- package/server.d.ts.map +0 -1
- package/server.js +0 -28877
- package/umd-example.html +0 -18
- package/umd.d.ts.map +0 -1
- /package/{bun.d.ts → dist/bun.d.ts} +0 -0
- /package/{cli.d.ts → dist/cli.d.ts} +0 -0
- /package/{companion.d.ts → dist/companion.d.ts} +0 -0
- /package/{crossbrowser.d.ts → dist/crossbrowser.d.ts} +0 -0
- /package/{dashdone.d.ts → dist/dashdone.d.ts} +0 -0
- /package/{deno.d.ts → dist/deno.d.ts} +0 -0
- /package/{hardening.d.ts → dist/hardening.d.ts} +0 -0
- /package/{headless.d.ts → dist/headless.d.ts} +0 -0
- /package/{http.d.ts → dist/http.d.ts} +0 -0
- /package/{index.d.ts → dist/index.d.ts} +0 -0
- /package/{mcp.d.ts → dist/mcp.d.ts} +0 -0
- /package/{memory.d.ts → dist/memory.d.ts} +0 -0
- /package/{node.d.ts → dist/node.d.ts} +0 -0
- /package/{pack.d.ts → dist/pack.d.ts} +0 -0
- /package/{policy.d.ts → dist/policy.d.ts} +0 -0
- /package/{progress.d.ts → dist/progress.d.ts} +0 -0
- /package/{protocol.d.ts → dist/protocol.d.ts} +0 -0
- /package/{server.d.ts → dist/server.d.ts} +0 -0
- /package/{umd.d.ts → dist/umd.d.ts} +0 -0
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file fingerprint.ts
|
|
3
|
+
* @module provider/fingerprint
|
|
4
|
+
* @description
|
|
5
|
+
* Anti-detection fingerprint generator mimicking Gemini CLI / Antigravity
|
|
6
|
+
* traffic against cloudcode-pa.googleapis.com (merged superset of the two
|
|
7
|
+
* prior variants).
|
|
8
|
+
*
|
|
9
|
+
* v2.1.15 Phase B: this module is THE single owner of identity masquerade —
|
|
10
|
+
* it absorbed getDynamicUserAgent (+Async), fetchRemoteAntigravityVersion,
|
|
11
|
+
* normalizePlatform/normalizeArch, getXGoogApiClient + X_GOOG_API_CLIENT (+
|
|
12
|
+
* the accurately split X_GOOG_API_CLIENT_GEMINI_CLI snapshot),
|
|
13
|
+
* buildClientMetadata, buildGeminiUserAgent, ua/apiClient (auth lineage),
|
|
14
|
+
* getRandomPlatformString, getGeminiCLIHeaders(WithOptions),
|
|
15
|
+
* getAntigravityHeaders(WithOptions), buildAntagravityHeaders (canonical of
|
|
16
|
+
* the five plugin/project/quota/search/models variants) and the hex/limit
|
|
17
|
+
* utility re-exports from core.js. Raw values stay in constants.ts; generic
|
|
18
|
+
* utilities live in core.js.
|
|
19
|
+
*
|
|
20
|
+
* Merged responsibilities:
|
|
21
|
+
* - OAuth constants, endpoints, 2026 model list
|
|
22
|
+
* - Weighted coherent platform pools (win32/x64, linux/x64, darwin/arm64)
|
|
23
|
+
* plus a keyed PLATFORM_POOLS record with Go-style amd64 naming
|
|
24
|
+
* - Deterministic FNV-1a hashing for session_id / user_prompt_id
|
|
25
|
+
* - Jitter 0-80ms anti-rate-limit (sync value + async sleep + instance API)
|
|
26
|
+
* - Gemini CLI style User-Agent with google-api-nodejs-client pairing
|
|
27
|
+
* - Antigravity style User-Agent (`antigravity/{version} {os}/{arch}`)
|
|
28
|
+
* - X-Goog-Api-Client generation (simplified and full chains)
|
|
29
|
+
* - Client-Metadata (fixed IDE_UNSPECIFIED form and structured JSON form)
|
|
30
|
+
* - Unified FingerprintGenerator constructor accepting BOTH option shapes:
|
|
31
|
+
* new FingerprintGenerator({ directory, allowExtendedPlatforms, ... })
|
|
32
|
+
* new FingerprintGenerator("1.19.2" | "antigravity/1.19.2 darwin/arm64")
|
|
33
|
+
* - defaultFingerprintGenerator singleton + getFingerprintHeaders() wrapper
|
|
34
|
+
*
|
|
35
|
+
* Runtime constraint: only node:* builtins + global fetch/Headers.
|
|
36
|
+
*
|
|
37
|
+
* @license MIT
|
|
38
|
+
*/
|
|
39
|
+
import { ANTIGRAVITY_CLI_VERSION_POOL, ANTIGRAVITY_VERSION_FALLBACK, CLOUDCODE_BASE_URL, FINGERPRINT_IDE_TYPES, FINGERPRINT_PLATFORMS, FINGERPRINT_PLUGIN_TYPES, GEMINI_CLI_OAUTH_CLIENT_ID as OAUTH_CLIENT_ID, GEMINI_CLI_OAUTH_CLIENT_SECRET as OAUTH_CLIENT_SECRET, GEMINI_CLI_VERSION_POOL, GL_NODE_VERSION_POOL, PLATFORM_POOL, PROJECT_FALLBACK } from "./constants.js";
|
|
40
|
+
import type { AntigravityVersion, SupportedArch, SupportedPlatform } from "./constants.js";
|
|
41
|
+
export { ANTIGRAVITY_VERSION_FALLBACK, OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET, PROJECT_FALLBACK };
|
|
42
|
+
/** Scopes required by the Gemini CLI auth flow. */
|
|
43
|
+
/** Base URL for the Cloud Code API (imported from constants.js — canonical owner since v2.1.15 Phase B). */
|
|
44
|
+
export { CLOUDCODE_BASE_URL };
|
|
45
|
+
export type { AntigravityVersion, SupportedArch, SupportedPlatform };
|
|
46
|
+
/**
|
|
47
|
+
* v1internal endpoints used by Gemini CLI.
|
|
48
|
+
* All POST, requiring OAuth2 auth plus fingerprint headers.
|
|
49
|
+
*/
|
|
50
|
+
declare const FINGERPRINT_API_PATHS: {
|
|
51
|
+
readonly loadCodeAssist: "https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist";
|
|
52
|
+
};
|
|
53
|
+
import { MODELS_2026_LEGACY as MODELS_2026 } from "./models.js";
|
|
54
|
+
import type { ModelId2026 } from "./models.js";
|
|
55
|
+
export { MODELS_2026 };
|
|
56
|
+
export type { ModelId2026 };
|
|
57
|
+
export type PlatformOS = "win32" | "linux" | "darwin";
|
|
58
|
+
export type PlatformArch = "x64" | "arm64";
|
|
59
|
+
export type FingerprintType = "gemini-cli" | "antigravity";
|
|
60
|
+
/**
|
|
61
|
+
* Supported header generation styles (observer naming for FingerprintType).
|
|
62
|
+
* - antigravity: emulates Antigravity Manager content requests
|
|
63
|
+
* - gemini-cli: emulates Gemini CLI quota pool (includes X-Goog-Api-Client)
|
|
64
|
+
*/
|
|
65
|
+
export type HeaderStyle = "antigravity" | "gemini-cli";
|
|
66
|
+
/** OS name normalized for keyed fingerprint pools. */
|
|
67
|
+
export type OsName = "windows" | "darwin" | "linux";
|
|
68
|
+
/** Architecture name normalized for keyed fingerprint pools. */
|
|
69
|
+
export type ArchName = "amd64" | "arm64" | "x64";
|
|
70
|
+
/**
|
|
71
|
+
* Coherent platform profile for the weighted UA pools.
|
|
72
|
+
* Guarantees win32 never pairs with arm64 and that darwin prefers arm64.
|
|
73
|
+
*/
|
|
74
|
+
export interface PlatformProfile {
|
|
75
|
+
/** Node.js OS identifier, exact `process.platform` value */
|
|
76
|
+
os: PlatformOS;
|
|
77
|
+
/** Node.js architecture identifier */
|
|
78
|
+
arch: PlatformArch;
|
|
79
|
+
/** Formatted string inside the UA parenthesis: "win32; x64" */
|
|
80
|
+
uaSegment: string;
|
|
81
|
+
/** Distribution source - GitHub dominant for coherence */
|
|
82
|
+
source: string;
|
|
83
|
+
/** Randomization weight - darwin arm64 more common among developers */
|
|
84
|
+
weight: number;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Keyed coherent platform pool entry (Go-style amd64 naming on Windows,
|
|
88
|
+
* matching observed AM traffic).
|
|
89
|
+
*/
|
|
90
|
+
export interface PlatformPool {
|
|
91
|
+
/** Logical key e.g. "windows/amd64" */
|
|
92
|
+
readonly key: string;
|
|
93
|
+
/** Normalized OS name used in User-Agent */
|
|
94
|
+
readonly os: OsName;
|
|
95
|
+
/** Normalized arch name used in User-Agent */
|
|
96
|
+
readonly arch: ArchName;
|
|
97
|
+
/** Node.js platform identifier */
|
|
98
|
+
readonly nodePlatform: NodeJS.Platform;
|
|
99
|
+
/** Node.js arch identifier */
|
|
100
|
+
readonly nodeArch: string;
|
|
101
|
+
/** Electron/Chrome OS display fragment */
|
|
102
|
+
readonly displayOs: string;
|
|
103
|
+
}
|
|
104
|
+
/** Map of all known keyed pools. */
|
|
105
|
+
export type PoolMap = Record<string, PlatformPool>;
|
|
106
|
+
/**
|
|
107
|
+
* Keyed pool record. Windows uses Go-convention amd64 naming to match AM
|
|
108
|
+
* traffic; darwin uses arm64 (Apple Silicon primary for 2026); linux x64.
|
|
109
|
+
*/
|
|
110
|
+
export declare const PLATFORM_POOLS: PoolMap;
|
|
111
|
+
/** Weighted pool of real-world valid combinations. */
|
|
112
|
+
export declare const PLATFORM_PROFILE_POOL: readonly PlatformProfile[];
|
|
113
|
+
export { PLATFORM_POOL };
|
|
114
|
+
export declare const PLATFORM_POOL_EXTENDED: readonly PlatformProfile[];
|
|
115
|
+
/** Preferred plugin version for new installs / Client-Metadata payloads. */
|
|
116
|
+
export declare const PLUGIN_VERSION_FALLBACK = "2.1.16";
|
|
117
|
+
export { ANTIGRAVITY_CLI_VERSION_POOL, GEMINI_CLI_VERSION_POOL, GL_NODE_VERSION_POOL };
|
|
118
|
+
export declare const ANTIGRAVITY_VERSION_POOL: readonly ["1.12.8", "1.12.7", "1.12.5", "1.11.9", "1.11.4"];
|
|
119
|
+
/** google-api-nodejs-client versions - lockstep with GeminiCLI releases. */
|
|
120
|
+
export declare const GOOGLE_API_CLIENT_VERSION_POOL: readonly ["9.15.1", "9.15.0", "9.14.1", "9.14.0", "9.13.0"];
|
|
121
|
+
/** Complementary gax version pool. */
|
|
122
|
+
export declare const GAX_VERSION_POOL: readonly ["5.0.4", "5.0.3", "4.3.6"];
|
|
123
|
+
import { fnv1a32, fnv1a32Hex, fnv1a64, getJitterMs, pickRandom } from "./core.js";
|
|
124
|
+
export { fnv1a32, fnv1a32Hex, fnv1a64, getJitterMs, pickRandom };
|
|
125
|
+
/**
|
|
126
|
+
* Generates a deterministic session_id based on the current directory.
|
|
127
|
+
* Same folder => same session_id => avoids device-hopping flags.
|
|
128
|
+
*
|
|
129
|
+
* @param directory - base path (defaults to process.cwd())
|
|
130
|
+
*/
|
|
131
|
+
export declare function generateSessionUuid(directory?: string): string;
|
|
132
|
+
/**
|
|
133
|
+
* Secure random float in [0,1) using crypto.randomInt with Math.random fallback.
|
|
134
|
+
*/
|
|
135
|
+
export declare function secureRandom(): number;
|
|
136
|
+
/** Picks a random element honoring optional weights. */
|
|
137
|
+
export declare function pickRandomWeighted<T extends {
|
|
138
|
+
weight: number;
|
|
139
|
+
}>(pool: readonly T[]): T;
|
|
140
|
+
/**
|
|
141
|
+
* Async jitter SLEEP in [minMs, maxMs] for anti-rate-limit / anti-ban delays
|
|
142
|
+
* (renamed from `jitter` in v2.1.15 Phase B: core.js owns the sync `jitter`
|
|
143
|
+
* number draw, so this async sleep variant carries an accurate distinct name).
|
|
144
|
+
*/
|
|
145
|
+
export declare function jitterSleep(minMs?: number, maxMs?: number): Promise<void>;
|
|
146
|
+
/**
|
|
147
|
+
* Normalizes a Node platform identifier for UA emission (identity-form
|
|
148
|
+
* canonical: darwin/win32/linux pass through; exotic values pass through
|
|
149
|
+
* unchanged as well — this is a stable lowercase identity map, not a filter).
|
|
150
|
+
*/
|
|
151
|
+
export declare function normalizePlatform(p: string): string;
|
|
152
|
+
/**
|
|
153
|
+
* Normalizes a Node arch identifier for UA emission
|
|
154
|
+
* (arm64/x64/ia32 identity; exotic values pass through unchanged).
|
|
155
|
+
*/
|
|
156
|
+
export declare function normalizeArch(a: string): string;
|
|
157
|
+
/**
|
|
158
|
+
* Dynamic Antigravity User-Agent: `antigravity/{version} {os}/{arch}`.
|
|
159
|
+
* Invalid/absent versions fall back to ANTIGRAVITY_VERSION_FALLBACK.
|
|
160
|
+
* Canonical of the getDynamicUserAgent family (v2.1.15 Phase B: the
|
|
161
|
+
* constants.ts, models.ts, plugin.ts and quota.ts locals deleted; the
|
|
162
|
+
* async version.ts GeminiCLI-template variant stays in version.ts under its
|
|
163
|
+
* own accurate name because it is a semantically distinct async builder).
|
|
164
|
+
*/
|
|
165
|
+
export declare function getDynamicUserAgent(version?: string, opts?: {
|
|
166
|
+
os?: string;
|
|
167
|
+
arch?: string;
|
|
168
|
+
}): string;
|
|
169
|
+
/**
|
|
170
|
+
* Async dynamic Antigravity User-Agent — resolves the remote Antigravity
|
|
171
|
+
* version when no cached version qualifies, then builds the UA via
|
|
172
|
+
* {@link getDynamicUserAgent}. (Absorbed from constants.ts in v2.1.15
|
|
173
|
+
* Phase B; version.ts's own remote chain remains the version-detection
|
|
174
|
+
* owner and may dedupe with {@link fetchRemoteAntigravityVersion} later.)
|
|
175
|
+
*/
|
|
176
|
+
export declare function getDynamicUserAgentAsync(cachedVersion?: string): Promise<string>;
|
|
177
|
+
/**
|
|
178
|
+
* Fetches the latest Antigravity version across the known update sources
|
|
179
|
+
* (absorbed from constants.ts in v2.1.15 Phase B). Returns null when every
|
|
180
|
+
* source fails; never throws.
|
|
181
|
+
*/
|
|
182
|
+
export declare function fetchRemoteAntigravityVersion(): Promise<string | null>;
|
|
183
|
+
/**
|
|
184
|
+
* Builds the antigravity-style X-Goog-Api-Client chain:
|
|
185
|
+
* `antigravity/{version} gl-node/{node} gax/4.9.0 grpc/1.14.0`.
|
|
186
|
+
* Canonical of the getXGoogApiClient family (constants.ts lineage — the same
|
|
187
|
+
* chain request.ts's buildApiClient and plugin.ts's buildCommonHeaders
|
|
188
|
+
* compose inline; the bare `gl-node/22.19.0` snapshot has its own accurate
|
|
189
|
+
* name below).
|
|
190
|
+
*/
|
|
191
|
+
export declare function getXGoogApiClient(version?: string): string;
|
|
192
|
+
/**
|
|
193
|
+
* Canonical X_GOOG_API_CLIENT computed value — the dynamic
|
|
194
|
+
* {@link getXGoogApiClient} result (v2.1.15 Phase B: the constants.ts
|
|
195
|
+
* computed export moved here; the static "gl-node/22.19.0" copies in
|
|
196
|
+
* config/project/recovery/request/streaming were NOT the same value and
|
|
197
|
+
* keep their exact wire behavior through the accurately named
|
|
198
|
+
* {@link X_GOOG_API_CLIENT_GEMINI_CLI}).
|
|
199
|
+
*/
|
|
200
|
+
export declare const X_GOOG_API_CLIENT: string;
|
|
201
|
+
/**
|
|
202
|
+
* Bare gl-node X-Goog-Api-Client snapshot observed on real Gemini CLI
|
|
203
|
+
* traffic (`gl-node/22.19.0`). Distinct value from {@link X_GOOG_API_CLIENT}
|
|
204
|
+
* — the former static "stale" copies in project.ts, quota.ts, request.ts,
|
|
205
|
+
* streaming.ts, recovery.ts, accounts.ts and config.ts resolve HERE so every
|
|
206
|
+
* live chain keeps sending exactly the bytes it sent before the merge.
|
|
207
|
+
*/
|
|
208
|
+
export declare const X_GOOG_API_CLIENT_GEMINI_CLI: "gl-node/22.19.0";
|
|
209
|
+
/**
|
|
210
|
+
* Builds the Antigravity Client-Metadata header string — the quota.ts
|
|
211
|
+
* lineage (live-validated quota chain): uppercase platform/arch,
|
|
212
|
+
* pluginVersion taken from the constants template, osVersion before arch.
|
|
213
|
+
* Canonical of the buildClientMetadata family (v2.1.15 Phase B: the
|
|
214
|
+
* constants.ts, quota.ts, request.ts and search.ts locals deleted).
|
|
215
|
+
*/
|
|
216
|
+
export declare function buildClientMetadata(version?: string): string;
|
|
217
|
+
/**
|
|
218
|
+
* Builds the GeminiCLI User-Agent dynamically, varying the platform:
|
|
219
|
+
* `GeminiCLI/<cliVersion>/<model> (<platform>; <arch>; GitHub)
|
|
220
|
+
* google-api-nodejs-client/<gclientVersion>`. Canonical of the
|
|
221
|
+
* buildGeminiUserAgent family (v2.1.15 Phase B: config.ts lineage body —
|
|
222
|
+
* overrides accepted; the auth.ts win32->"windows" mapping is expressed by
|
|
223
|
+
* auth.ts passing the pre-mapped platform, so one implementation serves
|
|
224
|
+
* both historical call shapes).
|
|
225
|
+
*/
|
|
226
|
+
export declare function buildGeminiUserAgent(overrides?: {
|
|
227
|
+
cliVersion?: string;
|
|
228
|
+
model?: string;
|
|
229
|
+
platform?: string;
|
|
230
|
+
arch?: string;
|
|
231
|
+
gclientVersion?: string;
|
|
232
|
+
}): string;
|
|
233
|
+
/**
|
|
234
|
+
* Antigravity User-Agent short form (auth.ts lineage):
|
|
235
|
+
* `antigravity/{version} {platform}/{arch}`. Thin alias of
|
|
236
|
+
* {@link getDynamicUserAgent} kept under its historical auth surface name;
|
|
237
|
+
* the auth call sites always invoke it without arguments, where the two
|
|
238
|
+
* implementations are byte-identical.
|
|
239
|
+
*/
|
|
240
|
+
export declare const ua: (v?: string) => string;
|
|
241
|
+
/**
|
|
242
|
+
* Antigravity X-Goog-Api-Client short form (auth.ts lineage):
|
|
243
|
+
* `antigravity/{version} gl-node/{node} gccl/1.0.0 gax/1.0.0`. Distinct
|
|
244
|
+
* segment chain from {@link getXGoogApiClient} (gccl/gax-1.0.0 vs
|
|
245
|
+
* gax-4.9.0/grpc) — the live auth retrieveQuota path sends exactly this
|
|
246
|
+
* form, so it keeps its own accurate implementation here.
|
|
247
|
+
*/
|
|
248
|
+
export declare const apiClient: (v?: string) => string;
|
|
249
|
+
/**
|
|
250
|
+
* Builds a platform string in the format expected by the Gemini CLI
|
|
251
|
+
* User-Agent, e.g. "linux; x64; GitHub" (absorbed from constants.ts in
|
|
252
|
+
* v2.1.15 Phase B).
|
|
253
|
+
*/
|
|
254
|
+
export declare function getRandomPlatformString(platformOverride?: SupportedPlatform, archOverride?: SupportedArch): string;
|
|
255
|
+
export interface GeminiCliHeaderOptions {
|
|
256
|
+
/** model to include in the User-Agent (e.g. gemini-3-pro-preview) */
|
|
257
|
+
model?: string | undefined;
|
|
258
|
+
/** platform override (randomizes / uses process.platform when absent) */
|
|
259
|
+
platform?: SupportedPlatform | undefined;
|
|
260
|
+
/** arch override */
|
|
261
|
+
arch?: SupportedArch;
|
|
262
|
+
/** specific Gemini CLI version to spoof */
|
|
263
|
+
cliVersion?: string;
|
|
264
|
+
/** specific gapi client version */
|
|
265
|
+
gapiVersion?: string;
|
|
266
|
+
/** specific gl-node version */
|
|
267
|
+
glNodeVersion?: string;
|
|
268
|
+
/** access token for Authorization */
|
|
269
|
+
accessToken?: string;
|
|
270
|
+
/** custom ideType */
|
|
271
|
+
ideType?: (typeof FINGERPRINT_IDE_TYPES)[number];
|
|
272
|
+
/** custom platform metadata */
|
|
273
|
+
platformMeta?: (typeof FINGERPRINT_PLATFORMS)[number];
|
|
274
|
+
/** custom pluginType */
|
|
275
|
+
pluginType?: (typeof FINGERPRINT_PLUGIN_TYPES)[number];
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Generates headers identical to the official Gemini CLI for detection
|
|
279
|
+
* bypass (canonical of the family: the richer constants.ts WithOptions
|
|
280
|
+
* lineage; plugin.ts's legacy terminal-platform variant had zero callers
|
|
281
|
+
* and was deleted in v2.1.15 Phase B).
|
|
282
|
+
*
|
|
283
|
+
* @param model - optional, defaults to gemini-3-pro-preview
|
|
284
|
+
* @param platform - optional, randomized with linux bias by default
|
|
285
|
+
*/
|
|
286
|
+
export declare function getGeminiCLIHeaders(model?: string, platform?: SupportedPlatform): Record<string, string>;
|
|
287
|
+
/** Object-style variant, more robust for internal plugin usage. */
|
|
288
|
+
export declare function getGeminiCLIHeadersWithOptions(opts?: GeminiCliHeaderOptions): Record<string, string>;
|
|
289
|
+
/** Headers specialized for Antigravity versioning. */
|
|
290
|
+
export interface AntigravityHeaderOptions {
|
|
291
|
+
version?: AntigravityVersion;
|
|
292
|
+
accessToken?: string;
|
|
293
|
+
cliVersion?: string;
|
|
294
|
+
model?: string;
|
|
295
|
+
platform?: SupportedPlatform;
|
|
296
|
+
}
|
|
297
|
+
export declare function getAntigravityHeaders(version?: AntigravityVersion | string): Record<string, string>;
|
|
298
|
+
export declare function getAntigravityHeadersWithOptions(opts?: AntigravityHeaderOptions): Record<string, string>;
|
|
299
|
+
/**
|
|
300
|
+
* Options for {@link buildAntagravityHeaders} — the canonical of the
|
|
301
|
+
* buildAntagravityHeaders family (v2.1.15 Phase B). The flags preserve each
|
|
302
|
+
* historical variant's exact effective header set:
|
|
303
|
+
* - plugin.ts / project.ts lineage (default): Authorization, Content-Type,
|
|
304
|
+
* User-Agent + extras;
|
|
305
|
+
* - quota.ts lineage: `accept: true` adds Accept: application/json;
|
|
306
|
+
* - search.ts lineage: `identityHeaders: true` adds X-Goog-Api-Client
|
|
307
|
+
* (dynamic getXGoogApiClient) and Client-Metadata (buildClientMetadata);
|
|
308
|
+
* - the models.ts strip-variant had zero consumers and was deleted.
|
|
309
|
+
*/
|
|
310
|
+
export interface AntigravityHeadersOptions {
|
|
311
|
+
userAgent?: string | undefined;
|
|
312
|
+
extra?: Record<string, string>;
|
|
313
|
+
/** Include Accept: application/json (quota/search lineage). Default false. */
|
|
314
|
+
accept?: boolean;
|
|
315
|
+
/** Include X-Goog-Api-Client + Client-Metadata (search lineage). Default false. */
|
|
316
|
+
identityHeaders?: boolean;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Builds the Antigravity content-request header map (Authorization bearer,
|
|
320
|
+
* JSON content type, dynamic Antigravity UA, optional Accept and bypass
|
|
321
|
+
* identity headers, extras merged last with x-goog-user-project always
|
|
322
|
+
* filtered per the observer requirement).
|
|
323
|
+
*/
|
|
324
|
+
export declare function buildAntagravityHeaders(accessToken: string, opts?: AntigravityHeadersOptions): Record<string, string>;
|
|
325
|
+
export interface FingerprintOptions {
|
|
326
|
+
/** Directory for deterministic seed (defaults to cwd) */
|
|
327
|
+
directory?: string;
|
|
328
|
+
/** Allow rare extended platform combos (default false) */
|
|
329
|
+
allowExtendedPlatforms?: boolean;
|
|
330
|
+
/** Pin a specific platform (for tests) */
|
|
331
|
+
fixedPlatform?: PlatformProfile | undefined;
|
|
332
|
+
/** Pin the Gemini CLI version */
|
|
333
|
+
fixedCliVersion?: string | undefined;
|
|
334
|
+
/** Pin the google-api-client version */
|
|
335
|
+
fixedGoogleApiVersion?: string | undefined;
|
|
336
|
+
/** Pin the gl-node version */
|
|
337
|
+
fixedNodeVersion?: string | undefined;
|
|
338
|
+
/**
|
|
339
|
+
* Antigravity app version embedded in observer-style UAs.
|
|
340
|
+
* Accepts bare semver ("1.19.2") or full UA strings
|
|
341
|
+
* ("antigravity/1.19.2 darwin/arm64"); invalid values fall back to
|
|
342
|
+
* ANTIGRAVITY_VERSION_FALLBACK.
|
|
343
|
+
*/
|
|
344
|
+
antigravityVersion?: string;
|
|
345
|
+
}
|
|
346
|
+
export interface FullHeadersResult {
|
|
347
|
+
/** Exact Gemini CLI User-Agent */
|
|
348
|
+
"User-Agent": string;
|
|
349
|
+
/** X-Goog-Api-Client fingerprint */
|
|
350
|
+
"X-Goog-Api-Client": string;
|
|
351
|
+
/** Hardened Client-Metadata */
|
|
352
|
+
"Client-Metadata": string;
|
|
353
|
+
/** Standard Content-Type */
|
|
354
|
+
"Content-Type": string;
|
|
355
|
+
/** Accept */
|
|
356
|
+
Accept: string;
|
|
357
|
+
/** Optional for some endpoints */
|
|
358
|
+
"X-Client-Details"?: string;
|
|
359
|
+
/** Extra metadata for internal debug/tracing */
|
|
360
|
+
__meta: {
|
|
361
|
+
platform: PlatformProfile;
|
|
362
|
+
cliVersion: string;
|
|
363
|
+
googleApiVersion: string;
|
|
364
|
+
glNodeVersion: string;
|
|
365
|
+
gaxVersion: string;
|
|
366
|
+
sessionId: string;
|
|
367
|
+
model: string;
|
|
368
|
+
type: FingerprintType;
|
|
369
|
+
jitterMs: number;
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Anti-detection generator that mimics Gemini CLI exactly while also exposing
|
|
374
|
+
* the observer-style Antigravity header set.
|
|
375
|
+
*
|
|
376
|
+
* Coherence guarantees:
|
|
377
|
+
* - Chosen platform drives the UA segment consistently
|
|
378
|
+
* - Node / gax / google-api-client versions pair like a real release
|
|
379
|
+
* - session_id is deterministic per directory (avoids device hopping)
|
|
380
|
+
* - Observer mode never mutates global state
|
|
381
|
+
*
|
|
382
|
+
* Usage:
|
|
383
|
+
* ```ts
|
|
384
|
+
* const fp = new FingerprintGenerator({ directory: process.cwd() });
|
|
385
|
+
* const headers = fp.getFullHeaders('gemini-3-pro-preview', 'gemini-cli');
|
|
386
|
+
* // or observer style:
|
|
387
|
+
* const fp2 = new FingerprintGenerator('1.19.2');
|
|
388
|
+
* const h2 = fp2.getFingerprintHeaders('gemini-cli');
|
|
389
|
+
* ```
|
|
390
|
+
*/
|
|
391
|
+
export declare class FingerprintGenerator {
|
|
392
|
+
private readonly directory;
|
|
393
|
+
private readonly allowExtended;
|
|
394
|
+
private readonly fixedPlatform?;
|
|
395
|
+
private readonly fixedCliVersion?;
|
|
396
|
+
private readonly fixedGoogleApiVersion?;
|
|
397
|
+
private readonly fixedNodeVersion?;
|
|
398
|
+
private readonly sessionId;
|
|
399
|
+
private cachedPlatform;
|
|
400
|
+
/** Antigravity app version used in observer User-Agents. */
|
|
401
|
+
private readonly version;
|
|
402
|
+
private poolCache;
|
|
403
|
+
/**
|
|
404
|
+
* Unified constructor accepting BOTH historical option shapes:
|
|
405
|
+
*
|
|
406
|
+
* @param opts - either an options object ({@link FingerprintOptions}) or a
|
|
407
|
+
* plain version string ("1.19.2", "antigravity/1.19.2 ...",
|
|
408
|
+
* falls back to ANTIGRAVITY_VERSION_FALLBACK when invalid).
|
|
409
|
+
*/
|
|
410
|
+
constructor(opts?: FingerprintOptions | string);
|
|
411
|
+
/** Validates / extracts the Antigravity version from raw input. */
|
|
412
|
+
private normalizeAntigravityVersion;
|
|
413
|
+
/** Numeric 32-bit FNV-1a (deterministic, fast, no crypto overhead). */
|
|
414
|
+
private fnv1a32m;
|
|
415
|
+
/** Numeric 64-bit FNV-1a for longer session identifiers. */
|
|
416
|
+
private fnv1a64b;
|
|
417
|
+
/** Hex representation (8 chars) of the 32-bit FNV-1a hash. */
|
|
418
|
+
fnv1aHex(input: string): string;
|
|
419
|
+
/**
|
|
420
|
+
* Deterministic session id from a seed (sess_ prefixed, FNV-based). When no
|
|
421
|
+
* seed is supplied, falls back to randomUUID + hostname + timestamp hashed
|
|
422
|
+
* into the same format. Never throws.
|
|
423
|
+
*
|
|
424
|
+
* v2.1.16 divergence note: {@link generateUserPromptId} below is the
|
|
425
|
+
* structural twin of this method, kept separate (not parametrized into one
|
|
426
|
+
* prefix+salt helper) because the outputs intentionally differ in four
|
|
427
|
+
* places: the prefix (sess_ vs up_), the secondary hash salt (`:sess` vs
|
|
428
|
+
* `:up`), the unseeded base (Date.now() vs process.pid) and the catch-path
|
|
429
|
+
* fallback shape (sess_ appends a base36 timestamp, up_ does not).
|
|
430
|
+
*/
|
|
431
|
+
generateSessionId(seed?: string): string;
|
|
432
|
+
/**
|
|
433
|
+
* Deterministic user_prompt_id mirroring Antigravity Manager behavior where
|
|
434
|
+
* prompt IDs stay stable per request content. Never throws.
|
|
435
|
+
*/
|
|
436
|
+
generateUserPromptId(seed?: string): string;
|
|
437
|
+
/**
|
|
438
|
+
* Returns a coherent platform with per-instance caching for stability.
|
|
439
|
+
* A fixedPlatform always wins (deterministic tests); an explicit override
|
|
440
|
+
* bypasses the cache entirely.
|
|
441
|
+
*/
|
|
442
|
+
getPlatform(override?: PlatformProfile): PlatformProfile;
|
|
443
|
+
/** Forces a platform rotation (useful for anti-ban testing). */
|
|
444
|
+
rotatePlatform(): PlatformProfile;
|
|
445
|
+
/**
|
|
446
|
+
* Runtime-detected keyed pool (cached):
|
|
447
|
+
* win32 -> windows/amd64, darwin -> darwin/arm64 (even under Rosetta),
|
|
448
|
+
* everything else -> linux/x64.
|
|
449
|
+
*/
|
|
450
|
+
getPlatformPool(): PlatformPool;
|
|
451
|
+
/** Static accessor for all keyed pools (testing / CLI listing). */
|
|
452
|
+
static getPlatformPools(): PoolMap;
|
|
453
|
+
/** Current keyed pool key, e.g. "darwin/arm64". */
|
|
454
|
+
getCurrentPoolKey(): string;
|
|
455
|
+
/** Cryptographically strong jitter in the inclusive 0..80ms range. */
|
|
456
|
+
getJitterMs(): number;
|
|
457
|
+
/** Applies jitter asynchronously - awaits 0..80ms. */
|
|
458
|
+
applyJitter(): Promise<void>;
|
|
459
|
+
/**
|
|
460
|
+
* Produces a coherent version set that actually shipped together.
|
|
461
|
+
* 70% recent-user slice, 30% long-tail for realistic distribution.
|
|
462
|
+
*/
|
|
463
|
+
private getCoherentVersionPair;
|
|
464
|
+
/**
|
|
465
|
+
* User-Agent identical to the official Gemini CLI:
|
|
466
|
+
* `GeminiCLI/0.57.0/gemini-3-pro-preview (win32; x64; GitHub) google-api-nodejs-client/9.15.1`
|
|
467
|
+
*/
|
|
468
|
+
getGeminiCLIUserAgent(model?: string, platform?: PlatformProfile): string;
|
|
469
|
+
/**
|
|
470
|
+
* Antigravity-flavored User-Agent observed in fetchAvailableModels traces:
|
|
471
|
+
* `Antigravity/1.12.8 (linux; x64) CodeAssist/0.9.2 google-api-nodejs-client/9.15.1 gl-node/22.19.0`
|
|
472
|
+
*/
|
|
473
|
+
getAntigravityUserAgent(version?: string, platform?: PlatformProfile): string;
|
|
474
|
+
/**
|
|
475
|
+
* X-Goog-Api-Client identical to the Node.js Google client. 80% simplified
|
|
476
|
+
* (`gl-node/22.19.0`), 20% full chain with gccl/gax/grpc segments.
|
|
477
|
+
*/
|
|
478
|
+
getXGoogApiClient(): string;
|
|
479
|
+
/**
|
|
480
|
+
* Hardened fixed Client-Metadata validated by onboarding/loadCodeAssist:
|
|
481
|
+
* `ideType=IDE_UNSPECIFIED,platform=PLATFORM_UNSPECIFIED,pluginType=GEMINI`
|
|
482
|
+
*/
|
|
483
|
+
getClientMetadata(): string;
|
|
484
|
+
/**
|
|
485
|
+
* Structured JSON Client-Metadata used by observer-style requests
|
|
486
|
+
* (ideType ANTIGRAVITY + plugin/arch/node details). Falls back to a compact
|
|
487
|
+
* key=value form and never throws.
|
|
488
|
+
*/
|
|
489
|
+
private buildClientMetadata;
|
|
490
|
+
/**
|
|
491
|
+
* Observer-style X-Goog-Api-Client:
|
|
492
|
+
* `gl-node/<node> antigravity/<version> gccl/1.0.0`. Never throws.
|
|
493
|
+
*/
|
|
494
|
+
private buildApiClient;
|
|
495
|
+
/**
|
|
496
|
+
* Complete Gemini CLI-compatible header set including coherent UA,
|
|
497
|
+
* X-Goog-Api-Client jitter, hardened Client-Metadata and Content-Type.
|
|
498
|
+
*/
|
|
499
|
+
getFullHeaders(model?: string, type?: FingerprintType, platformOverride?: PlatformProfile): FullHeadersResult;
|
|
500
|
+
/** Native Fetch API Headers instance ready for direct fetch() usage. */
|
|
501
|
+
toFetchHeaders(model?: string, type?: FingerprintType): Headers;
|
|
502
|
+
/**
|
|
503
|
+
* Generates observer-style fingerprint headers.
|
|
504
|
+
*
|
|
505
|
+
* Enforced requirements:
|
|
506
|
+
* - User-Agent: `antigravity/{version} {os}/{arch}` (coherent keyed pool)
|
|
507
|
+
* - Client-Metadata: always included (structured JSON, AM observed)
|
|
508
|
+
* - X-Goog-Api-Client ONLY when headerStyle === 'gemini-cli'
|
|
509
|
+
* - Never includes X-Goog-QuotaUser nor X-Client-Device-Id
|
|
510
|
+
*
|
|
511
|
+
* @param headerStyle - 'antigravity' (default content path) or 'gemini-cli'
|
|
512
|
+
*/
|
|
513
|
+
getFingerprintHeaders(headerStyle?: HeaderStyle): Record<string, string>;
|
|
514
|
+
/** Antigravity version currently embedded in observer fingerprints. */
|
|
515
|
+
getVersion(): string;
|
|
516
|
+
/** Deterministic session_id of this instance. */
|
|
517
|
+
getSessionId(): string;
|
|
518
|
+
/** Full OAuth config for the auth flow. */
|
|
519
|
+
getOAuthConfig(): {
|
|
520
|
+
clientId: string;
|
|
521
|
+
clientSecret: string;
|
|
522
|
+
scopes: readonly string[];
|
|
523
|
+
projectFallback: string;
|
|
524
|
+
};
|
|
525
|
+
/** Endpoint map (v2.1.15 Phase D: derives from the constants.js parts). */
|
|
526
|
+
getEndpoints(): typeof FINGERPRINT_API_PATHS;
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* Default shared generator using ANTIGRAVITY_VERSION_FALLBACK until
|
|
530
|
+
* version.ts resolves the remote version. Consumers may create their own
|
|
531
|
+
* instances with a dynamic version. The grand merge folded this module into
|
|
532
|
+
* the shared core graph the platform-portable bundles ship, so the singleton
|
|
533
|
+
* constructs on first use (the constructor resolves the cwd through the node
|
|
534
|
+
* path builtin): under node and bun the behavior is identical while a stubbed
|
|
535
|
+
* browser bundle never instantiates the generator at import time.
|
|
536
|
+
*/
|
|
537
|
+
export declare const defaultFingerprintGenerator: FingerprintGenerator;
|
|
538
|
+
/**
|
|
539
|
+
* Convenience wrapper matching the original plugin export names. Uses the
|
|
540
|
+
* default singleton, or a temporary generator when a version is supplied.
|
|
541
|
+
*
|
|
542
|
+
* @param style - 'antigravity' (default) or 'gemini-cli'
|
|
543
|
+
* @param version - optional Antigravity version override
|
|
544
|
+
*/
|
|
545
|
+
export declare function getFingerprintHeaders(style?: HeaderStyle, version?: string): Record<string, string>;
|
|
546
|
+
/**
|
|
547
|
+
* Short helper generating Gemini CLI compatible headers for project bypass.
|
|
548
|
+
*
|
|
549
|
+
* @param model - model id (default gemini-3-pro-preview)
|
|
550
|
+
* @param type - 'gemini-cli' or 'antigravity'
|
|
551
|
+
* @param platform - profile object, "win32 x64" string, or plain OS string
|
|
552
|
+
*/
|
|
553
|
+
export declare function generateHeaders(model?: string, type?: FingerprintType, platform?: PlatformProfile | `${PlatformOS} ${PlatformArch}` | PlatformOS): Record<string, string>;
|
|
554
|
+
/** Variant returning a native Fetch API Headers instance (Node 20+). */
|
|
555
|
+
export declare function generateFetchHeaders(model?: string, type?: FingerprintType, platform?: PlatformProfile | `${PlatformOS} ${PlatformArch}`): Headers;
|
|
556
|
+
/**
|
|
557
|
+
* Full fingerprint with metadata for debugging/tracing; validates bypasses
|
|
558
|
+
* during development.
|
|
559
|
+
*/
|
|
560
|
+
export declare function generateFullFingerprint(model?: string, type?: FingerprintType, directory?: string): FullHeadersResult;
|
|
561
|
+
/**
|
|
562
|
+
* Creates an instance bound to a specific directory (deterministic
|
|
563
|
+
* session_id). Essential for multi-workspace setups.
|
|
564
|
+
*/
|
|
565
|
+
export declare function createFingerprintForDirectory(directory: string): FingerprintGenerator;
|
|
566
|
+
/**
|
|
567
|
+
* Bypass helper producing headers plus the base body for loadCodeAssist,
|
|
568
|
+
* including the blinded project fallback.
|
|
569
|
+
*/
|
|
570
|
+
export declare function buildLoadCodeAssistRequest(projectId?: string, model?: string): {
|
|
571
|
+
url: string;
|
|
572
|
+
method: "POST";
|
|
573
|
+
headers: Record<string, string>;
|
|
574
|
+
body: string;
|
|
575
|
+
sessionId: string;
|
|
576
|
+
};
|
|
577
|
+
export declare const FingerprintConstants: {
|
|
578
|
+
readonly OAUTH_CLIENT_ID: string;
|
|
579
|
+
readonly OAUTH_CLIENT_SECRET: string;
|
|
580
|
+
readonly GEMINI_CLI_SCOPES: readonly ["https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile"];
|
|
581
|
+
readonly PROJECT_FALLBACK: "rising-fact-p41fc";
|
|
582
|
+
readonly CLOUDCODE_BASE_URL: "https://cloudcode-pa.googleapis.com";
|
|
583
|
+
/** Lazy through the models.js import cycle: the aggregate reads the owner at access time, so every module evaluation order stays legal (the models → core → config → fingerprint cycle of the merged graph never evaluates this read during import). */
|
|
584
|
+
readonly MODELS_2026: readonly ["antigravity-gemini-3-pro", "antigravity-gemini-3.1-pro", "antigravity-gemini-3-flash", "antigravity-claude-sonnet-4-6", "antigravity-claude-opus-4-6-thinking", "gemini-2.5-flash", "gemini-2.5-pro", "gemini-3-flash-preview", "gemini-3-pro-preview", "gemini-3.1-pro-preview", "gemini-3.1-pro-preview-customtools"];
|
|
585
|
+
readonly PLATFORM_PROFILE_POOL: readonly PlatformProfile[];
|
|
586
|
+
readonly PLATFORM_POOLS: PoolMap;
|
|
587
|
+
readonly GEMINI_CLI_VERSION_POOL: readonly ["0.57.0", "0.56.0", "0.55.1", "0.54.0", "0.53.0", "0.52.0", "0.51.2", "0.50.0"];
|
|
588
|
+
readonly GOOGLE_API_CLIENT_VERSION_POOL: readonly ["9.15.1", "9.15.0", "9.14.1", "9.14.0", "9.13.0"];
|
|
589
|
+
readonly GL_NODE_VERSION_POOL: readonly ["22.19.0", "22.16.0", "22.14.0", "20.19.3", "20.18.1", "20.17.0", "20.11.0", "18.20.4"];
|
|
590
|
+
readonly ANTIGRAVITY_VERSION_FALLBACK: "1.19.2";
|
|
591
|
+
readonly PLUGIN_VERSION_FALLBACK: "2.1.16";
|
|
592
|
+
};
|
|
593
|
+
export default FingerprintGenerator;
|
|
594
|
+
//# sourceMappingURL=fingerprint.d.ts.map
|