zevairouter 1.0.11 → 1.0.13
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/README.md +125 -44
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +3 -3
- package/cli/app/.next-cli-build/build-manifest.json +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback.html +1 -1
- package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.html +1 -1
- package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/landing.html +1 -1
- package/cli/app/.next-cli-build/server/app/landing.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/login.html +1 -1
- package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app-paths-manifest.json +3 -3
- package/cli/app/.next-cli-build/server/chunks/3104.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3110.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3159.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/318.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/{7879.js → 3188.js} +3 -3
- package/cli/app/.next-cli-build/server/chunks/4161.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5024.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/5949.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/7153.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/{1517.js → 8255.js} +1 -1
- package/cli/app/.next-cli-build/server/chunks/8590.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/891.js +1 -1
- package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/pages/404.html +1 -1
- package/cli/app/.next-cli-build/server/pages/500.html +1 -1
- package/cli/app/.next-cli-build/static/chunks/1321-1ea0cba0e1dc93f9.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/{page-be4721f0e8d602c8.js → page-bb8cd39cef8dc67a.js} +1 -1
- package/cli/app/cli/hooks/camoufoxRuntime.js +66 -14
- package/cli/app/package.json +3 -3
- package/cli/hooks/camoufoxRuntime.js +66 -14
- package/cli/package.json +1 -1
- package/open-sse/config/appConstants.js +27 -2
- package/open-sse/config/providers.js +2 -1
- package/open-sse/executors/antigravity.js +39 -8
- package/open-sse/services/antigravityHeaderScrub.js +75 -0
- package/open-sse/services/antigravityIdentity.js +115 -0
- package/open-sse/services/antigravityObfuscation.js +92 -0
- package/open-sse/services/usage.js +150 -45
- package/package.json +3 -3
- package/src/app/api/oauth/antigravity/bulk-import/route.js +2 -0
- package/src/lib/oauth/services/antigravityBulkImportManager.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/1051.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/1322.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/5723.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/6064.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/6505.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/1321-e0f25297ad8cfdb9.js +0 -1
- /package/cli/app/.next-cli-build/static/{rFg7NNDeIRDKXofMeqQQ1 → PMzBo5bAkklvn1QHwZSHz}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{rFg7NNDeIRDKXofMeqQQ1 → PMzBo5bAkklvn1QHwZSHz}/_ssgManifest.js +0 -0
|
@@ -57,8 +57,10 @@ function findCamoufoxCli() {
|
|
|
57
57
|
|
|
58
58
|
function getCamoufoxBinaryDir() {
|
|
59
59
|
const homeDir = os.homedir();
|
|
60
|
+
// Mirror camoufox-js's userCacheDir() exactly (dist/pkgman.js) so we look in
|
|
61
|
+
// the same place it installs to, on every platform.
|
|
60
62
|
if (process.platform === "win32") {
|
|
61
|
-
return path.join(
|
|
63
|
+
return path.join(homeDir, "AppData", "Local", "camoufox", "camoufox", "Cache");
|
|
62
64
|
}
|
|
63
65
|
if (process.platform === "darwin") {
|
|
64
66
|
return path.join(homeDir, "Library", "Caches", "camoufox");
|
|
@@ -66,20 +68,21 @@ function getCamoufoxBinaryDir() {
|
|
|
66
68
|
return path.join(homeDir, ".cache", "camoufox");
|
|
67
69
|
}
|
|
68
70
|
|
|
69
|
-
|
|
71
|
+
// The launch binary camoufox-js resolves per OS (dist/pkgman.js LAUNCH_FILE),
|
|
72
|
+
// relative to the install dir. Linux is the primary target (Ubuntu VPS).
|
|
73
|
+
function getCamoufoxLaunchBinary() {
|
|
70
74
|
const dir = getCamoufoxBinaryDir();
|
|
71
|
-
if (
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
});
|
|
75
|
+
if (process.platform === "win32") return path.join(dir, "camoufox.exe");
|
|
76
|
+
if (process.platform === "darwin") return path.join(dir, "Camoufox.app", "Contents", "MacOS", "camoufox");
|
|
77
|
+
return path.join(dir, "camoufox-bin");
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function isCamoufoxBinaryAvailable() {
|
|
81
|
+
try {
|
|
82
|
+
return fs.existsSync(getCamoufoxLaunchBinary());
|
|
83
|
+
} catch {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
83
86
|
}
|
|
84
87
|
|
|
85
88
|
function ensureCamoufoxPackage({ silent = false } = {}) {
|
|
@@ -132,6 +135,50 @@ function fetchCamoufoxBinary({ silent = false, timeout = 600_000 } = {}) {
|
|
|
132
135
|
return { ok: false, reason };
|
|
133
136
|
}
|
|
134
137
|
|
|
138
|
+
function findPlaywrightCli() {
|
|
139
|
+
const candidates = [];
|
|
140
|
+
for (const pkg of ["playwright", "playwright-core"]) {
|
|
141
|
+
try {
|
|
142
|
+
candidates.push(path.join(path.dirname(nodeRequire.resolve(`${pkg}/package.json`)), "cli.js"));
|
|
143
|
+
} catch {}
|
|
144
|
+
try {
|
|
145
|
+
candidates.push(path.join(getRuntimeNodeModules(), pkg, "cli.js"));
|
|
146
|
+
} catch {}
|
|
147
|
+
}
|
|
148
|
+
for (const candidate of candidates) {
|
|
149
|
+
if (candidate && fs.existsSync(candidate)) return candidate;
|
|
150
|
+
}
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Camoufox is a patched Firefox; on a fresh Linux host it fails to launch with
|
|
155
|
+
// "libgtk-3.so.0: cannot open shared object file" because the GUI/X libraries
|
|
156
|
+
// aren't present. `playwright install-deps firefox` apt-installs them. This is
|
|
157
|
+
// idempotent (no-op once satisfied) and only attempted on Linux as root, where
|
|
158
|
+
// apt is available without a sudo prompt. Non-fatal: a missing lib surfaces as
|
|
159
|
+
// a clear launch error later, and the user can run the command themselves.
|
|
160
|
+
function ensureLinuxBrowserDeps({ silent = false } = {}) {
|
|
161
|
+
if (process.platform !== "linux") return { ok: true, skipped: "not-linux" };
|
|
162
|
+
if (typeof process.getuid === "function" && process.getuid() !== 0) {
|
|
163
|
+
if (!silent) console.log("\u2139 Skipping auto-install of Camoufox system libs (not root). If Camoufox fails to launch, run: npx playwright install-deps firefox");
|
|
164
|
+
return { ok: true, skipped: "not-root" };
|
|
165
|
+
}
|
|
166
|
+
const cliPath = findPlaywrightCli();
|
|
167
|
+
if (!cliPath) return { ok: true, skipped: "no-playwright-cli" };
|
|
168
|
+
if (!silent) console.log("\u23f3 Installing Camoufox system libraries (Linux, first run)...");
|
|
169
|
+
const res = spawnSync(process.execPath, [cliPath, "install-deps", "firefox"], {
|
|
170
|
+
stdio: silent ? ["ignore", "pipe", "pipe"] : "inherit",
|
|
171
|
+
timeout: 300_000,
|
|
172
|
+
encoding: "utf8",
|
|
173
|
+
});
|
|
174
|
+
if (res.status === 0) {
|
|
175
|
+
if (!silent) console.log("\u2705 Camoufox system libraries ready");
|
|
176
|
+
return { ok: true };
|
|
177
|
+
}
|
|
178
|
+
if (!silent) console.log("\u26a0 Could not auto-install system libs; if Camoufox fails to launch run: npx playwright install-deps firefox");
|
|
179
|
+
return { ok: false, reason: String(res.stderr || "").trim().split(/\r?\n/).pop()?.slice(0, 200) };
|
|
180
|
+
}
|
|
181
|
+
|
|
135
182
|
function ensureCamoufoxRuntime({ silent = false } = {}) {
|
|
136
183
|
if (cachedReady === true) return { ok: true };
|
|
137
184
|
|
|
@@ -161,6 +208,11 @@ function ensureCamoufoxRuntime({ silent = false } = {}) {
|
|
|
161
208
|
}
|
|
162
209
|
}
|
|
163
210
|
|
|
211
|
+
// Ensure Linux GUI libraries are present (idempotent). Runs even when the
|
|
212
|
+
// binary already existed — a host can have the binary but miss the libs (the
|
|
213
|
+
// libgtk-3.so.0 launch failure). Non-fatal; we cache readiness regardless.
|
|
214
|
+
ensureLinuxBrowserDeps({ silent });
|
|
215
|
+
|
|
164
216
|
cachedReady = true;
|
|
165
217
|
return { ok: true, module: pkg.module };
|
|
166
218
|
}
|
package/cli/app/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zevairouter",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.13",
|
|
4
4
|
"description": "ZevaiRouter - AI Router with provider automation, multi-account workflows, and quota tracking",
|
|
5
5
|
"bin": {
|
|
6
6
|
"zevai": "./cli/cli.js"
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"socks-proxy-agent": "^10.1.0",
|
|
63
63
|
"sql.js": "^1.14.1",
|
|
64
64
|
"undici": "^8.4.1",
|
|
65
|
-
"uuid": "^
|
|
65
|
+
"uuid": "^14.0.1",
|
|
66
66
|
"zustand": "^5.0.10"
|
|
67
67
|
},
|
|
68
68
|
"optionalDependencies": {
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"comment_camoufox_js": "optional stealth-Firefox engine for bulk-import; runtime auto-installs to user data dir if user picks Camoufox in the modal but the package is missing — Chromium remains the default and works without this dep",
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"@tailwindcss/postcss": "^4.1.18",
|
|
77
|
-
"esbuild": "^0.
|
|
77
|
+
"esbuild": "^0.28.1",
|
|
78
78
|
"eslint": "^9",
|
|
79
79
|
"eslint-config-next": "16.2.9",
|
|
80
80
|
"postcss": "^8.5.6",
|
|
@@ -57,8 +57,10 @@ function findCamoufoxCli() {
|
|
|
57
57
|
|
|
58
58
|
function getCamoufoxBinaryDir() {
|
|
59
59
|
const homeDir = os.homedir();
|
|
60
|
+
// Mirror camoufox-js's userCacheDir() exactly (dist/pkgman.js) so we look in
|
|
61
|
+
// the same place it installs to, on every platform.
|
|
60
62
|
if (process.platform === "win32") {
|
|
61
|
-
return path.join(
|
|
63
|
+
return path.join(homeDir, "AppData", "Local", "camoufox", "camoufox", "Cache");
|
|
62
64
|
}
|
|
63
65
|
if (process.platform === "darwin") {
|
|
64
66
|
return path.join(homeDir, "Library", "Caches", "camoufox");
|
|
@@ -66,20 +68,21 @@ function getCamoufoxBinaryDir() {
|
|
|
66
68
|
return path.join(homeDir, ".cache", "camoufox");
|
|
67
69
|
}
|
|
68
70
|
|
|
69
|
-
|
|
71
|
+
// The launch binary camoufox-js resolves per OS (dist/pkgman.js LAUNCH_FILE),
|
|
72
|
+
// relative to the install dir. Linux is the primary target (Ubuntu VPS).
|
|
73
|
+
function getCamoufoxLaunchBinary() {
|
|
70
74
|
const dir = getCamoufoxBinaryDir();
|
|
71
|
-
if (
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
});
|
|
75
|
+
if (process.platform === "win32") return path.join(dir, "camoufox.exe");
|
|
76
|
+
if (process.platform === "darwin") return path.join(dir, "Camoufox.app", "Contents", "MacOS", "camoufox");
|
|
77
|
+
return path.join(dir, "camoufox-bin");
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function isCamoufoxBinaryAvailable() {
|
|
81
|
+
try {
|
|
82
|
+
return fs.existsSync(getCamoufoxLaunchBinary());
|
|
83
|
+
} catch {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
83
86
|
}
|
|
84
87
|
|
|
85
88
|
function ensureCamoufoxPackage({ silent = false } = {}) {
|
|
@@ -132,6 +135,50 @@ function fetchCamoufoxBinary({ silent = false, timeout = 600_000 } = {}) {
|
|
|
132
135
|
return { ok: false, reason };
|
|
133
136
|
}
|
|
134
137
|
|
|
138
|
+
function findPlaywrightCli() {
|
|
139
|
+
const candidates = [];
|
|
140
|
+
for (const pkg of ["playwright", "playwright-core"]) {
|
|
141
|
+
try {
|
|
142
|
+
candidates.push(path.join(path.dirname(nodeRequire.resolve(`${pkg}/package.json`)), "cli.js"));
|
|
143
|
+
} catch {}
|
|
144
|
+
try {
|
|
145
|
+
candidates.push(path.join(getRuntimeNodeModules(), pkg, "cli.js"));
|
|
146
|
+
} catch {}
|
|
147
|
+
}
|
|
148
|
+
for (const candidate of candidates) {
|
|
149
|
+
if (candidate && fs.existsSync(candidate)) return candidate;
|
|
150
|
+
}
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Camoufox is a patched Firefox; on a fresh Linux host it fails to launch with
|
|
155
|
+
// "libgtk-3.so.0: cannot open shared object file" because the GUI/X libraries
|
|
156
|
+
// aren't present. `playwright install-deps firefox` apt-installs them. This is
|
|
157
|
+
// idempotent (no-op once satisfied) and only attempted on Linux as root, where
|
|
158
|
+
// apt is available without a sudo prompt. Non-fatal: a missing lib surfaces as
|
|
159
|
+
// a clear launch error later, and the user can run the command themselves.
|
|
160
|
+
function ensureLinuxBrowserDeps({ silent = false } = {}) {
|
|
161
|
+
if (process.platform !== "linux") return { ok: true, skipped: "not-linux" };
|
|
162
|
+
if (typeof process.getuid === "function" && process.getuid() !== 0) {
|
|
163
|
+
if (!silent) console.log("\u2139 Skipping auto-install of Camoufox system libs (not root). If Camoufox fails to launch, run: npx playwright install-deps firefox");
|
|
164
|
+
return { ok: true, skipped: "not-root" };
|
|
165
|
+
}
|
|
166
|
+
const cliPath = findPlaywrightCli();
|
|
167
|
+
if (!cliPath) return { ok: true, skipped: "no-playwright-cli" };
|
|
168
|
+
if (!silent) console.log("\u23f3 Installing Camoufox system libraries (Linux, first run)...");
|
|
169
|
+
const res = spawnSync(process.execPath, [cliPath, "install-deps", "firefox"], {
|
|
170
|
+
stdio: silent ? ["ignore", "pipe", "pipe"] : "inherit",
|
|
171
|
+
timeout: 300_000,
|
|
172
|
+
encoding: "utf8",
|
|
173
|
+
});
|
|
174
|
+
if (res.status === 0) {
|
|
175
|
+
if (!silent) console.log("\u2705 Camoufox system libraries ready");
|
|
176
|
+
return { ok: true };
|
|
177
|
+
}
|
|
178
|
+
if (!silent) console.log("\u26a0 Could not auto-install system libs; if Camoufox fails to launch run: npx playwright install-deps firefox");
|
|
179
|
+
return { ok: false, reason: String(res.stderr || "").trim().split(/\r?\n/).pop()?.slice(0, 200) };
|
|
180
|
+
}
|
|
181
|
+
|
|
135
182
|
function ensureCamoufoxRuntime({ silent = false } = {}) {
|
|
136
183
|
if (cachedReady === true) return { ok: true };
|
|
137
184
|
|
|
@@ -161,6 +208,11 @@ function ensureCamoufoxRuntime({ silent = false } = {}) {
|
|
|
161
208
|
}
|
|
162
209
|
}
|
|
163
210
|
|
|
211
|
+
// Ensure Linux GUI libraries are present (idempotent). Runs even when the
|
|
212
|
+
// binary already existed — a host can have the binary but miss the libs (the
|
|
213
|
+
// libgtk-3.so.0 launch failure). Non-fatal; we cache readiness regardless.
|
|
214
|
+
ensureLinuxBrowserDeps({ silent });
|
|
215
|
+
|
|
164
216
|
cachedReady = true;
|
|
165
217
|
return { ok: true, module: pkg.module };
|
|
166
218
|
}
|
package/cli/package.json
CHANGED
|
@@ -56,7 +56,7 @@ export function getPlatformEnum() {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
export function getPlatformUserAgent() {
|
|
59
|
-
return
|
|
59
|
+
return antigravityUserAgent();
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
export const CLIENT_METADATA = {
|
|
@@ -124,9 +124,34 @@ export const AG_DEFAULT_TOOLS = new Set([
|
|
|
124
124
|
"write_to_file"
|
|
125
125
|
]);
|
|
126
126
|
|
|
127
|
+
// Antigravity desktop client fingerprint. The real Antigravity app is an
|
|
128
|
+
// Electron/Chromium build; matching its User-Agent (instead of a bare
|
|
129
|
+
// "antigravity/x.y.z linux/x64") avoids the third-party-client signal Google
|
|
130
|
+
// uses to flag accounts. Chrome/Electron versions synced with the Antigravity
|
|
131
|
+
// desktop build (see OmniRoute antigravityHeaders.ts).
|
|
132
|
+
export const ANTIGRAVITY_VERSION = "1.107.0";
|
|
133
|
+
export const ANTIGRAVITY_CHROME_VERSION = "142.0.7444.175";
|
|
134
|
+
export const ANTIGRAVITY_ELECTRON_VERSION = "39.2.3";
|
|
135
|
+
|
|
136
|
+
function antigravityPlatformInfo() {
|
|
137
|
+
switch (platform()) {
|
|
138
|
+
case "darwin":
|
|
139
|
+
return "Macintosh; Intel Mac OS X 10_15_7";
|
|
140
|
+
case "win32":
|
|
141
|
+
return "Windows NT 10.0; Win64; x64";
|
|
142
|
+
case "linux":
|
|
143
|
+
default:
|
|
144
|
+
return "X11; Linux x86_64";
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export function antigravityUserAgent() {
|
|
149
|
+
return `Antigravity/${ANTIGRAVITY_VERSION} (${antigravityPlatformInfo()}) Chrome/${ANTIGRAVITY_CHROME_VERSION} Electron/${ANTIGRAVITY_ELECTRON_VERSION}`;
|
|
150
|
+
}
|
|
151
|
+
|
|
127
152
|
// Antigravity chat/stream headers
|
|
128
153
|
export const ANTIGRAVITY_HEADERS = {
|
|
129
|
-
"User-Agent":
|
|
154
|
+
"User-Agent": antigravityUserAgent()
|
|
130
155
|
};
|
|
131
156
|
|
|
132
157
|
// Cloud Code Assist API
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { platform, arch } from "os";
|
|
2
|
+
import { antigravityUserAgent } from "./appConstants.js";
|
|
2
3
|
|
|
3
4
|
// === OS/Arch helpers ===
|
|
4
5
|
function mapStainlessOs() {
|
|
@@ -108,7 +109,7 @@ export const PROVIDERS = {
|
|
|
108
109
|
"https://daily-cloudcode-pa.sandbox.googleapis.com",
|
|
109
110
|
],
|
|
110
111
|
format: "antigravity",
|
|
111
|
-
headers: { "User-Agent":
|
|
112
|
+
headers: { "User-Agent": antigravityUserAgent() },
|
|
112
113
|
clientId: "1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",
|
|
113
114
|
clientSecret: "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"
|
|
114
115
|
},
|
|
@@ -3,9 +3,16 @@ import { BaseExecutor } from "./base.js";
|
|
|
3
3
|
import { PROVIDERS } from "../config/providers.js";
|
|
4
4
|
import { OAUTH_ENDPOINTS, ANTIGRAVITY_HEADERS, INTERNAL_REQUEST_HEADER, AG_DEFAULT_TOOLS, AG_TOOL_SUFFIX } from "../config/appConstants.js";
|
|
5
5
|
import { HTTP_STATUS } from "../config/runtimeConfig.js";
|
|
6
|
-
import { deriveSessionId } from "../utils/sessionManager.js";
|
|
7
6
|
import { proxyAwareFetch } from "../utils/proxyFetch.js";
|
|
8
7
|
import { cleanJSONSchemaForAntigravity } from "../translator/helpers/geminiHelper.js";
|
|
8
|
+
import { obfuscateRequestBody } from "../services/antigravityObfuscation.js";
|
|
9
|
+
import { scrubProxyAndFingerprintHeaders } from "../services/antigravityHeaderScrub.js";
|
|
10
|
+
import {
|
|
11
|
+
getAntigravitySessionId,
|
|
12
|
+
generateAntigravityRequestId,
|
|
13
|
+
getAntigravityEnvelopeUserAgent,
|
|
14
|
+
deriveAntigravityMachineId,
|
|
15
|
+
} from "../services/antigravityIdentity.js";
|
|
9
16
|
|
|
10
17
|
// Sanitize function name: Gemini requires [a-zA-Z_][a-zA-Z0-9_.:\-]{0,63}
|
|
11
18
|
function sanitizeFunctionName(name) {
|
|
@@ -31,11 +38,13 @@ export class AntigravityExecutor extends BaseExecutor {
|
|
|
31
38
|
}
|
|
32
39
|
|
|
33
40
|
buildHeaders(credentials, stream = true, sessionId = null) {
|
|
41
|
+
const machineId = deriveAntigravityMachineId();
|
|
34
42
|
return {
|
|
35
43
|
"Content-Type": "application/json",
|
|
36
44
|
"Authorization": `Bearer ${credentials.accessToken}`,
|
|
37
45
|
"User-Agent": this.config.headers?.["User-Agent"] || ANTIGRAVITY_HEADERS["User-Agent"],
|
|
38
46
|
[INTERNAL_REQUEST_HEADER.name]: INTERNAL_REQUEST_HEADER.value,
|
|
47
|
+
...(machineId && { "x-machine-id": machineId }),
|
|
39
48
|
...(sessionId && { "X-Machine-Session-Id": sessionId }),
|
|
40
49
|
"Accept": stream ? "text/event-stream" : "application/json"
|
|
41
50
|
};
|
|
@@ -91,7 +100,7 @@ export class AntigravityExecutor extends BaseExecutor {
|
|
|
91
100
|
generationConfig,
|
|
92
101
|
...(contents && { contents }),
|
|
93
102
|
...(tools && { tools }),
|
|
94
|
-
sessionId: body.request?.sessionId ||
|
|
103
|
+
sessionId: body.request?.sessionId || getAntigravitySessionId(credentials),
|
|
95
104
|
safetySettings: undefined,
|
|
96
105
|
...(tools?.length > 0 && { toolConfig: { functionCallingConfig: { mode: "VALIDATED" } } })
|
|
97
106
|
};
|
|
@@ -100,9 +109,9 @@ export class AntigravityExecutor extends BaseExecutor {
|
|
|
100
109
|
...body,
|
|
101
110
|
project: projectId,
|
|
102
111
|
model: model,
|
|
103
|
-
userAgent:
|
|
112
|
+
userAgent: getAntigravityEnvelopeUserAgent(credentials),
|
|
104
113
|
requestType: "agent",
|
|
105
|
-
requestId:
|
|
114
|
+
requestId: generateAntigravityRequestId(),
|
|
106
115
|
request: transformedRequest
|
|
107
116
|
};
|
|
108
117
|
}
|
|
@@ -204,12 +213,20 @@ export class AntigravityExecutor extends BaseExecutor {
|
|
|
204
213
|
const MAX_RETRY_AFTER_RETRIES = 3;
|
|
205
214
|
const retryAttemptsByUrl = {}; // Track retry attempts per URL
|
|
206
215
|
const retryAfterAttemptsByUrl = {}; // Track Retry-After retries per URL
|
|
216
|
+
let creditsRetried = false; // GOOGLE_ONE_AI credits fallback attempted once per request
|
|
217
|
+
let injectCredits = false; // when true, transformRequest output gets enabledCreditTypes
|
|
207
218
|
|
|
208
219
|
for (let urlIndex = 0; urlIndex < fallbackCount; urlIndex++) {
|
|
209
220
|
const url = this.buildUrl(model, stream, urlIndex);
|
|
210
|
-
|
|
221
|
+
let transformedBody = this.transformRequest(model, body, stream, credentials);
|
|
222
|
+
// On a quota_exhausted 429, retry once using the account's Google One AI
|
|
223
|
+
// credit balance (often available on Pro accounts) instead of giving up.
|
|
224
|
+
if (injectCredits && transformedBody.request) {
|
|
225
|
+
transformedBody.enabledCreditTypes = ["GOOGLE_ONE_AI"];
|
|
226
|
+
}
|
|
227
|
+
transformedBody = obfuscateRequestBody(transformedBody);
|
|
211
228
|
const sessionId = transformedBody.request?.sessionId;
|
|
212
|
-
const headers = this.buildHeaders(credentials, stream, sessionId);
|
|
229
|
+
const headers = scrubProxyAndFingerprintHeaders(this.buildHeaders(credentials, stream, sessionId));
|
|
213
230
|
|
|
214
231
|
// Initialize retry counters for this URL
|
|
215
232
|
if (!retryAttemptsByUrl[urlIndex]) {
|
|
@@ -232,17 +249,31 @@ export class AntigravityExecutor extends BaseExecutor {
|
|
|
232
249
|
let retryMs = this.parseRetryHeaders(response.headers);
|
|
233
250
|
|
|
234
251
|
// If no retry time in headers, try to parse from error message body
|
|
252
|
+
let errorMessageText = "";
|
|
235
253
|
if (!retryMs) {
|
|
236
254
|
try {
|
|
237
255
|
const errorBody = await response.clone().text();
|
|
238
256
|
const errorJson = JSON.parse(errorBody);
|
|
239
|
-
|
|
240
|
-
retryMs = this.parseRetryFromErrorMessage(
|
|
257
|
+
errorMessageText = errorJson?.error?.message || errorJson?.message || "";
|
|
258
|
+
retryMs = this.parseRetryFromErrorMessage(errorMessageText);
|
|
241
259
|
} catch (e) {
|
|
242
260
|
// Ignore parse errors, will fall back to exponential backoff
|
|
243
261
|
}
|
|
244
262
|
}
|
|
245
263
|
|
|
264
|
+
// Quota exhausted → retry once with Google One AI credits injected.
|
|
265
|
+
if (
|
|
266
|
+
response.status === HTTP_STATUS.RATE_LIMITED &&
|
|
267
|
+
!creditsRetried &&
|
|
268
|
+
/quota[_ ]?exhausted|quota reached|individual quota|enable overages/i.test(errorMessageText)
|
|
269
|
+
) {
|
|
270
|
+
creditsRetried = true;
|
|
271
|
+
injectCredits = true;
|
|
272
|
+
log?.debug?.("RETRY", "429 quota exhausted → retrying once with GOOGLE_ONE_AI credits");
|
|
273
|
+
urlIndex--;
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
|
|
246
277
|
if (retryMs && retryMs <= MAX_RETRY_AFTER_MS && retryAfterAttemptsByUrl[urlIndex] < MAX_RETRY_AFTER_RETRIES) {
|
|
247
278
|
retryAfterAttemptsByUrl[urlIndex]++;
|
|
248
279
|
log?.debug?.("RETRY", `${response.status} with Retry-After: ${Math.ceil(retryMs / 1000)}s, waiting... (${retryAfterAttemptsByUrl[urlIndex]}/${MAX_RETRY_AFTER_RETRIES})`);
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity header scrubbing.
|
|
3
|
+
*
|
|
4
|
+
* Real Antigravity is a Node.js desktop app. Its outbound HTTP requests never
|
|
5
|
+
* include proxy-tracing headers, Stainless SDK headers, or Chromium Sec-Ch-*
|
|
6
|
+
* fingerprint headers. Sending any of these reveals that the request came
|
|
7
|
+
* through a third-party proxy/tool, which Google can use to flag the account.
|
|
8
|
+
*
|
|
9
|
+
* Ported from OmniRoute's antigravityHeaderScrub.ts (mirrors CLIProxyAPI's
|
|
10
|
+
* ScrubProxyAndFingerprintHeaders in misc/header_utils.go).
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
const HEADERS_TO_REMOVE = new Set([
|
|
14
|
+
// Proxy tracing
|
|
15
|
+
"x-forwarded-for",
|
|
16
|
+
"x-forwarded-host",
|
|
17
|
+
"x-forwarded-proto",
|
|
18
|
+
"x-forwarded-port",
|
|
19
|
+
"x-real-ip",
|
|
20
|
+
"forwarded",
|
|
21
|
+
"via",
|
|
22
|
+
// Client identity (Stainless SDK — Claude Code specific, not Antigravity)
|
|
23
|
+
"x-title",
|
|
24
|
+
"x-stainless-lang",
|
|
25
|
+
"x-stainless-package-version",
|
|
26
|
+
"x-stainless-os",
|
|
27
|
+
"x-stainless-arch",
|
|
28
|
+
"x-stainless-runtime",
|
|
29
|
+
"x-stainless-runtime-version",
|
|
30
|
+
"x-stainless-timeout",
|
|
31
|
+
"x-stainless-retry-count",
|
|
32
|
+
"x-stainless-helper-method",
|
|
33
|
+
"http-referer",
|
|
34
|
+
"referer",
|
|
35
|
+
// Browser / Chromium fingerprint (Electron clients, NOT Node.js)
|
|
36
|
+
"sec-ch-ua",
|
|
37
|
+
"sec-ch-ua-mobile",
|
|
38
|
+
"sec-ch-ua-platform",
|
|
39
|
+
"sec-fetch-mode",
|
|
40
|
+
"sec-fetch-site",
|
|
41
|
+
"sec-fetch-dest",
|
|
42
|
+
"priority",
|
|
43
|
+
// Encoding: Antigravity (Node.js) sends "gzip, deflate, br"; Electron adds
|
|
44
|
+
// "zstd" which is a fingerprint mismatch.
|
|
45
|
+
"accept-encoding",
|
|
46
|
+
]);
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Remove headers that reveal proxy infrastructure or a non-native client
|
|
50
|
+
* identity from an outgoing Antigravity upstream request. Returns a new object;
|
|
51
|
+
* the input is not mutated. Authorization is deferred so it serializes last,
|
|
52
|
+
* matching the native Antigravity request fingerprint.
|
|
53
|
+
*/
|
|
54
|
+
export function scrubProxyAndFingerprintHeaders(headers) {
|
|
55
|
+
const cleaned = {};
|
|
56
|
+
let authorizationValue;
|
|
57
|
+
for (const [key, value] of Object.entries(headers || {})) {
|
|
58
|
+
const lowerKey = key.toLowerCase();
|
|
59
|
+
if (lowerKey.startsWith("x-zevai-") || HEADERS_TO_REMOVE.has(lowerKey)) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (lowerKey === "authorization") {
|
|
63
|
+
authorizationValue = value;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
cleaned[key] = value;
|
|
67
|
+
}
|
|
68
|
+
cleaned["Accept-Encoding"] = "gzip, deflate, br";
|
|
69
|
+
if (authorizationValue !== undefined) {
|
|
70
|
+
cleaned["Authorization"] = authorizationValue;
|
|
71
|
+
}
|
|
72
|
+
return cleaned;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export const __HEADERS_SCRUBBED = HEADERS_TO_REMOVE;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity request identity helpers.
|
|
3
|
+
*
|
|
4
|
+
* Antigravity's real client sends a stable per-account session id, a machine id,
|
|
5
|
+
* a request id, and an "envelope" client tag (antigravity vs jetski). Matching
|
|
6
|
+
* these makes our requests look like the native client instead of a proxy.
|
|
7
|
+
*
|
|
8
|
+
* Ported from OmniRoute's antigravityIdentity.ts (mirrors Antigravity-Manager).
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import crypto from "crypto";
|
|
12
|
+
import { createRequire } from "module";
|
|
13
|
+
|
|
14
|
+
// 64-bit FNV-1a constants (as signed int64) — must match Antigravity-Manager's
|
|
15
|
+
// session-id derivation so the same email always yields the same session id.
|
|
16
|
+
const FNV_OFFSET_I64 = -3750763034362895579n;
|
|
17
|
+
const FNV_PRIME_I64 = 1099511628211n;
|
|
18
|
+
|
|
19
|
+
// One random VS Code session id per process, like a running IDE instance.
|
|
20
|
+
const PROCESS_SESSION_ID = crypto.randomUUID();
|
|
21
|
+
|
|
22
|
+
const nodeRequire = createRequire(import.meta.url);
|
|
23
|
+
let systemMachineIdSync = null;
|
|
24
|
+
try {
|
|
25
|
+
const mod = nodeRequire("node-machine-id");
|
|
26
|
+
systemMachineIdSync = mod.machineIdSync || mod.default?.machineIdSync || null;
|
|
27
|
+
} catch {
|
|
28
|
+
systemMachineIdSync = null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function toNonEmptyString(value) {
|
|
32
|
+
return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function getProviderDataString(credentials, key) {
|
|
36
|
+
const data = credentials?.providerSpecificData;
|
|
37
|
+
return data && typeof data === "object" ? toNonEmptyString(data[key]) : null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Stable key identifying the account (email preferred, then id). */
|
|
41
|
+
export function getAntigravityAccountKey(credentials) {
|
|
42
|
+
return (
|
|
43
|
+
toNonEmptyString(credentials?.email) ||
|
|
44
|
+
getProviderDataString(credentials, "email") ||
|
|
45
|
+
getProviderDataString(credentials, "accountId") ||
|
|
46
|
+
toNonEmptyString(credentials?.connectionId) ||
|
|
47
|
+
null
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** Non-gmail accounts are treated as enterprise ("jetski" envelope). */
|
|
52
|
+
export function isAntigravityEnterpriseAccount(credentials) {
|
|
53
|
+
const email =
|
|
54
|
+
toNonEmptyString(credentials?.email) || getProviderDataString(credentials, "email") || "";
|
|
55
|
+
return !!email && !/@(?:gmail|googlemail)\.com$/i.test(email);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** Envelope client tag the native client sends per account type. */
|
|
59
|
+
export function getAntigravityEnvelopeUserAgent(credentials) {
|
|
60
|
+
return isAntigravityEnterpriseAccount(credentials) ? "jetski" : "antigravity";
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** Request id: "agent/<epoch-ms>/<hex>" — matches the native client format. */
|
|
64
|
+
export function generateAntigravityRequestId() {
|
|
65
|
+
return `agent/${Date.now()}/${crypto.randomBytes(4).toString("hex")}`;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Random signed-int64-ish session id (used only when no account key exists). */
|
|
69
|
+
export function generateAntigravitySessionId() {
|
|
70
|
+
const max = 18446744073709551615n; // 2^64 - 1
|
|
71
|
+
const target = 9_000_000_000_000_000_000n;
|
|
72
|
+
// Rejection sampling to avoid modulo bias.
|
|
73
|
+
const limit = max - (max % target);
|
|
74
|
+
let value;
|
|
75
|
+
do {
|
|
76
|
+
value = crypto.randomBytes(8).readBigUInt64BE();
|
|
77
|
+
} while (value >= limit);
|
|
78
|
+
return `-${(value % target).toString()}`;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** Deterministic session id derived from the account key via 64-bit FNV-1a. */
|
|
82
|
+
export function deriveAntigravitySessionId(accountKey) {
|
|
83
|
+
const key = toNonEmptyString(accountKey);
|
|
84
|
+
if (!key) return null;
|
|
85
|
+
let hash = FNV_OFFSET_I64;
|
|
86
|
+
for (const byte of Buffer.from(key, "utf8")) {
|
|
87
|
+
hash = BigInt.asIntN(64, hash ^ BigInt(byte));
|
|
88
|
+
hash = BigInt.asIntN(64, hash * FNV_PRIME_I64);
|
|
89
|
+
}
|
|
90
|
+
return hash.toString();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** Session id for a request: derived-from-account → fallback → random. */
|
|
94
|
+
export function getAntigravitySessionId(credentials, fallback) {
|
|
95
|
+
return (
|
|
96
|
+
deriveAntigravitySessionId(getAntigravityAccountKey(credentials)) ||
|
|
97
|
+
toNonEmptyString(fallback) ||
|
|
98
|
+
generateAntigravitySessionId()
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/** OS machine id, or null (native client omits x-machine-id when unavailable). */
|
|
103
|
+
export function deriveAntigravityMachineId() {
|
|
104
|
+
try {
|
|
105
|
+
const id = toNonEmptyString(systemMachineIdSync?.(true));
|
|
106
|
+
if (id) return id;
|
|
107
|
+
} catch {
|
|
108
|
+
// omit header when the OS machine id can't be read
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export function getAntigravityVscodeSessionId() {
|
|
114
|
+
return PROCESS_SESSION_ID;
|
|
115
|
+
}
|