zevairouter 1.1.32 → 1.1.34
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 +44 -0
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +13 -12
- package/cli/app/.next-cli-build/build-manifest.json +2 -2
- package/cli/app/.next-cli-build/prerender-manifest.json +4 -4
- package/cli/app/.next-cli-build/routes-manifest.json +6 -0
- 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/context/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/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 +2 -2
- 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 +2 -2
- 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/playground/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/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 +2 -2
- 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 +2 -2
- 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/pxpipe/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
- 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/settings/pricing/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/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/terminal/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/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 +2 -2
- 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/_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 +4 -4
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +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 +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 +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 +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 +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/saml/acs/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/start/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/test/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +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/cache/stats/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/changelog/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -16
- 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 +2 -2
- 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 +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 +2 -2
- 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 +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 +1 -2
- 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 +2 -2
- 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 +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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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/grok-build-settings/route.js +3 -15
- package/cli/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -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 +2 -3
- 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 +2 -2
- 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/omp-settings/route.js +2 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/omp-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- 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 +2 -2
- 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 +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 +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/context/[id]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/media/videos/[id]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/media/videos/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/enable/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/enable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/health/ready/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/health/route.js +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 +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]/rotate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js +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 +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 +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 +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 +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 +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 +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 +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 +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 +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/metrics/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/alias/route.js +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 +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 +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 +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/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/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 +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 +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 +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 +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 +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 +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 +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/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/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 +2 -2
- 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 +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 +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/grok-cli/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-token/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +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/api-key/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +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 +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 +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 +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 +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 +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 +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/import-cli-proxy/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +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 +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 +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 +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 +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 +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 +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/oauth/xiaomi-mimo/auto-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pricing/route.js +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 +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 +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 +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 +51 -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/bulk-delete/route.js +51 -1
- package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/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/codebuddy/discover-models/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/providers/codebuddy/discover-models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +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/opencode/discover-models/route.js +1 -0
- package/cli/app/.next-cli-build/server/app/api/providers/opencode/discover-models/route.js.nft.json +1 -0
- package/cli/app/.next-cli-build/server/app/api/providers/opencode/discover-models/route_client-reference-manifest.js +1 -0
- package/cli/app/.next-cli-build/server/app/api/providers/route.js +2 -2
- 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 +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 -51
- 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 +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 +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 +2 -2
- 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 +2 -2
- 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 +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 +2 -2
- 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/pxpipe/health/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/logs/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +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 +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 +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 +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 +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 +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/terminal/auth/setup/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/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 +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 +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 +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 +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 +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 +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 +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 +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 +2 -2
- 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]/codex-reset-credits/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/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/aggregate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js +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 +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/logs/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js +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/quota-stream/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/usage/quota-stream/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js +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 +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/routing-stream/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/usage/routing-stream/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js +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 +2 -2
- 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 +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 +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 +51 -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/videos/[id]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +51 -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 +4 -4
- package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +2 -2
- 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 +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
- 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 +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- 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 +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- 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 +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- 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 +5 -5
- 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/_tree.segment.rsc +2 -2
- 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 +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- 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 +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/index.html +1 -1
- package/cli/app/.next-cli-build/server/app/index.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- 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 +4 -4
- package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
- 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/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
- 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/provider-icons/[provider]/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/provider-icons/[provider]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app-paths-manifest.json +13 -12
- package/cli/app/.next-cli-build/server/chunks/1131.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/1133.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/1283.js +7 -7
- package/cli/app/.next-cli-build/server/chunks/1350.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/1756.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/220.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/2339.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/2442.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/2456.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/{440.js → 3294.js} +3 -4
- package/cli/app/.next-cli-build/server/chunks/3477.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3593.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3721.js +4 -4
- package/cli/app/.next-cli-build/server/chunks/3792.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3949.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3999.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/40.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4055.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/412.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4236.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4322.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/437.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4493.js +2 -0
- package/cli/app/.next-cli-build/server/chunks/4586.js +3 -3
- package/cli/app/.next-cli-build/server/chunks/4720.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4780.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4827.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4897.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5019.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5024.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5217.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5224.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/5330.js +10 -13
- package/cli/app/.next-cli-build/server/chunks/5434.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5436.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5545.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5681.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5752.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5800.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5949.js +2 -2
- package/cli/app/.next-cli-build/server/chunks/6182.js +3 -3
- package/cli/app/.next-cli-build/server/chunks/6252.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/6846.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/6936.js +3 -3
- package/cli/app/.next-cli-build/server/chunks/7170.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/7319.js +24 -27
- package/cli/app/.next-cli-build/server/chunks/7432.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/773.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/8239.js +60 -0
- package/cli/app/.next-cli-build/server/chunks/8255.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8590.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/8655.js +2 -2
- package/cli/app/.next-cli-build/server/chunks/8895.js +4 -4
- package/cli/app/.next-cli-build/server/chunks/891.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/9489.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/{2750.js → 9528.js} +3 -2
- package/cli/app/.next-cli-build/server/chunks/9835.js +1 -1
- package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/middleware.js +5 -5
- 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/server/preview-props.json +3 -3
- package/cli/app/.next-cli-build/server/server-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/server-reference-manifest.json +1 -1
- package/cli/app/.next-cli-build/static/QnZGjZBbNqQkbGSTiHVnz/_buildManifest.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/{5497-a9a321ee476bd2ce.js → 5497-00e385b36b5faf04.js} +2 -2
- package/cli/app/.next-cli-build/static/chunks/620-f497c666bb6c6074.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-9c505cf411125a6a.js +3 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-4bd92dec9d25dff3.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/_global-error/page-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/omp-settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/context/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/cli-tools/keys/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/[operation]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/videos/[id]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/enable/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/health/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/init/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/models/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/latest/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-token/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/codebuddy/discover-models/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/opencode/discover-models/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/logs/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/quota-stream/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/routing-stream/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/version/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/page-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/provider-icons/[provider]/route-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-295bb7a0a231d3e2.js +1 -0
- package/cli/app/.next-cli-build/static/css/13d9e8c54ece137d.css +1 -0
- package/cli/app/CHANGELOG.md +44 -0
- package/cli/app/cli/hooks/postinstall.js +0 -12
- package/cli/app/cli/hooks/startupRuntime.js +0 -10
- package/cli/app/package.json +1 -1
- package/cli/app/src/lib/db/adapters/sqljsAdapter.js +82 -15
- package/cli/app/src/lib/db/migrate.js +27 -3
- package/cli/app/src/mitm/server.js +32 -34
- package/cli/cli.js +3 -7
- package/cli/hooks/postinstall.js +0 -12
- package/cli/hooks/startupRuntime.js +0 -10
- package/cli/package.json +1 -1
- package/cli/src/cli/terminalUI.js +21 -5
- package/package.json +1 -1
- package/cli/app/.next-cli-build/server/chunks/1585.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/1998.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/3912.js +0 -2
- package/cli/app/.next-cli-build/server/chunks/5295.js +0 -51
- package/cli/app/.next-cli-build/server/chunks/7634.js +0 -10
- package/cli/app/.next-cli-build/static/ZV1b0QFpI7Py60MZLjqfn/_buildManifest.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/620-e558cc55d89edd47.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-dda271970d82f452.js +0 -3
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-7b3b291fb9d2dc65.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/_global-error/page-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/omp-settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/context/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/cli-tools/keys/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/[operation]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/videos/[id]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/enable/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/health/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/init/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/models/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/latest/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-token/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/codebuddy/discover-models/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/logs/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/quota-stream/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/routing-stream/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/version/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/page-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/provider-icons/[provider]/route-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-5bba6c0b89069588.js +0 -1
- package/cli/app/.next-cli-build/static/css/2259cb9ea5269549.css +0 -1
- package/cli/app/cli/hooks/notionTlsRuntime.js +0 -57
- package/cli/app/public/providers/notion-ai.png +0 -0
- package/cli/hooks/notionTlsRuntime.js +0 -57
- /package/cli/app/.next-cli-build/static/{ZV1b0QFpI7Py60MZLjqfn → QnZGjZBbNqQkbGSTiHVnz}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=5752,exports.ids=[5752],exports.modules={75752:(a,b,c)=>{c.r(b),c.d(b,{TAILSCALE_SOCKET:()=>v,getTailscaleFunnelUrl:()=>K,installTailscale:()=>L,isTailscaleInstalled:()=>E,isTailscaleLoggedIn:()=>G,isTailscaleRunning:()=>H,isTailscaleRunningStrict:()=>I,provisionCert:()=>V,startDaemonWithPassword:()=>R,startFunnel:()=>U,startLogin:()=>T,stopDaemon:()=>X,stopFunnel:()=>W});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h),j=c(55511),k=c.n(j),l=c(79646),m=c(28354),n=c(
|
|
1
|
+
"use strict";exports.id=5752,exports.ids=[5752],exports.modules={75752:(a,b,c)=>{c.r(b),c.d(b,{TAILSCALE_SOCKET:()=>v,getTailscaleFunnelUrl:()=>K,installTailscale:()=>L,isTailscaleInstalled:()=>E,isTailscaleLoggedIn:()=>G,isTailscaleRunning:()=>H,isTailscaleRunningStrict:()=>I,provisionCert:()=>V,startDaemonWithPassword:()=>R,startFunnel:()=>U,startLogin:()=>T,stopDaemon:()=>X,stopFunnel:()=>W});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h),j=c(55511),k=c.n(j),l=c(79646),m=c(28354),n=c(81283),o=c(53859);let p=(0,m.promisify)(l.exec),q=g().join(o.n,"bin"),r="darwin"===i().platform();i().platform();let s="win32"===i().platform(),t=g().join(q,s?"tailscale.exe":"tailscale"),u=g().join(o.n,"tailscale"),v=g().join(u,"tailscaled.sock"),w=s?[]:["--socket",v],x="C:\\Program Files\\Tailscale\\tailscale.exe",y=["/usr/local/bin/tailscale","/opt/homebrew/bin/tailscale","/usr/bin/tailscale"],z={value:void 0,fetchedAt:0,refreshing:!1},A={value:!1,fetchedAt:0,refreshing:!1},B={value:null,port:null,fetchedAt:0,refreshing:!1};function C(){return e().existsSync(t)?t:s&&e().existsSync(x)?x:!s&&y.find(a=>e().existsSync(a))||null}function D(){return Date.now()-z.fetchedAt>1e4&&(z.refreshing||(z.refreshing=!0,p(s?"where tailscale 2>nul":"which tailscale 2>/dev/null",{windowsHide:!0,timeout:1500}).then(({stdout:a})=>{z.value=a.trim()||C()}).catch(()=>{z.value=C()}).finally(()=>{z.fetchedAt=Date.now(),z.refreshing=!1}))),void 0===z.value&&(e().existsSync(t)?z.value=t:s&&e().existsSync(x)?z.value=x:s?z.value=null:z.value=y.find(a=>e().existsSync(a))||null),z.value}function E(){return null!==D()}function F(...a){return[...w,...a]}function G(){let a=D();if(!a)return!1;try{let b=(0,l.execSync)(`"${a}" ${w.join(" ")} status --json`,{encoding:"utf8",windowsHide:!0,env:{...process.env,PATH:M},timeout:5e3}),c=JSON.parse(b);return"Running"===c.BackendState&&c.Self?.Online===!0}catch(a){return!1}}function H(){return Date.now()-A.fetchedAt>1e4&&function(){if(A.refreshing)return;let a=D();if(!a){A.value=!1,A.fetchedAt=Date.now();return}A.refreshing=!0,p(`"${a}" ${w.join(" ")} funnel status --json`,{windowsHide:!0,timeout:1500}).then(({stdout:a})=>{try{let b=JSON.parse(a);A.value=Object.keys(b.AllowFunnel||{}).length>0}catch{A.value=!1}}).catch(()=>{A.value=!1}).finally(()=>{A.fetchedAt=Date.now(),A.refreshing=!1})}(),A.value}function I(){let a=D();if(!a)return!1;try{let b=(0,l.execSync)(`"${a}" ${w.join(" ")} funnel status --json`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"],timeout:1500}),c=JSON.parse(b),d=Object.keys(c.AllowFunnel||{}).length>0;return A.value=d,A.fetchedAt=Date.now(),d}catch{return!1}}function J(){let a=D();if(!a)return null;try{let b=(0,l.execSync)(`"${a}" ${w.join(" ")} status --json`,{encoding:"utf8",windowsHide:!0,env:{...process.env,PATH:M},timeout:5e3}),c=JSON.parse(b),d=c.Self?.DNSName?.replace(/\.$/,"");return d?`https://${d}`:null}catch{return null}}function K(a){return(Date.now()-B.fetchedAt>1e4||B.port!==a)&&function(a){if(B.refreshing)return;let b=D();b&&(B.refreshing=!0,p(`"${b}" ${w.join(" ")} status --json`,{windowsHide:!0,timeout:1500}).then(({stdout:a})=>{try{let b=JSON.parse(a),c=b.Self?.DNSName?.replace(/\.$/,"");B.value=c?`https://${c}`:null}catch{}}).catch(()=>{}).finally(()=>{B.port=a,B.fetchedAt=Date.now(),B.refreshing=!1}))}(a),B.value}async function L(a,b,c){let d=c||(()=>{});return s?(await P(d),{success:!0}):(r?await N(a,d):await O(a,d),d("Starting daemon..."),await R(a),d("Logging in..."),T(b))}let M=`/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:${process.env.PATH||""}`;async function N(a,b){if(function(){try{return(0,l.execSync)("which brew",{stdio:"ignore",windowsHide:!0,env:{...process.env,PATH:M}}),!0}catch{return!1}}()){b("Installing via Homebrew..."),await new Promise((a,c)=>{let d=(0,l.spawn)("brew",["install","tailscale"],{stdio:["ignore","pipe","pipe"],windowsHide:!0,env:{...process.env,PATH:M}});d.stdout.on("data",a=>{let c=a.toString().trim();c&&b(c)}),d.stderr.on("data",a=>{let c=a.toString().trim();c&&b(c)}),d.on("close",b=>{0===b?a():c(Error(`brew install failed (code ${b})`))}),d.on("error",c)});return}let c=g().join(i().tmpdir(),"tailscale.pkg");b("Downloading Tailscale package..."),await new Promise((a,d)=>{let e=(0,l.spawn)("curl",["-fL","--progress-bar","https://pkgs.tailscale.com/stable/tailscale-latest.pkg","-o",c],{stdio:["ignore","pipe","pipe"],windowsHide:!0});e.stderr.on("data",a=>{let c=a.toString().trim();c&&b(c)}),e.on("close",b=>{0===b?a():d(Error("Download failed"))}),e.on("error",d)}),b("Installing package..."),await new Promise((d,e)=>{let f=(0,l.spawn)("sudo",["-S","installer","-pkg",c,"-target","/"],{stdio:["pipe","pipe","pipe"],windowsHide:!0}),g="";f.stderr.on("data",a=>{g+=a.toString()}),f.stdout.on("data",a=>{let c=a.toString().trim();c&&b(c)}),f.on("close",a=>{try{(0,l.execSync)(`rm -f ${c}`,{stdio:"ignore",windowsHide:!0})}catch{}0===a?d():e(Error(g.includes("incorrect password")||g.includes("Sorry")?"Wrong sudo password":g||`Exit code ${a}`))}),f.on("error",e),f.stdin.write(`${a}
|
|
2
2
|
`),f.stdin.end()})}async function O(a,b){if("string"!=typeof a||a.includes("\n"))throw Error("Invalid sudo password");return b("Downloading install script..."),new Promise((c,d)=>{let f=(0,l.spawn)("curl",["-fsSL","https://tailscale.com/install.sh"],{stdio:["ignore","pipe","pipe"],windowsHide:!0}),h="",j="";f.stdout.on("data",a=>{h+=a.toString()}),f.stderr.on("data",a=>{j+=a.toString()}),f.on("exit",f=>{if(0!==f)return d(Error(`Failed to download install script: ${j}`));b("Running install script...");let m=g().join(i().tmpdir(),`tailscale-install-${k().randomBytes(8).toString("hex")}.sh`);try{e().writeFileSync(m,h,{mode:448})}catch(a){return d(Error(`Failed to write install script: ${a.message}`))}let n=()=>{try{e().unlinkSync(m)}catch{}},o=(0,l.spawn)("sudo",["-S","sh",m],{stdio:["pipe","pipe","pipe"],windowsHide:!0}),p="";o.stdout.on("data",a=>{let c=a.toString().trim();c&&b(c)}),o.stderr.on("data",a=>{p+=a.toString()}),o.on("close",a=>{n(),0===a?c():d(Error(p.includes("incorrect password")||p.includes("Sorry")?"Wrong sudo password":p||`Exit code ${a}`))}),o.on("error",a=>{n(),d(a)}),o.stdin.write(`${a}
|
|
3
3
|
`),o.stdin.end()}),f.on("error",d)})}async function P(a){let b=g().join(i().tmpdir(),"tailscale-setup.msi");a("Downloading Tailscale installer..."),await new Promise((c,d)=>{let e=(0,l.spawn)("curl.exe",["-L","-#","-o",b,"https://pkgs.tailscale.com/stable/tailscale-setup-latest-amd64.msi"],{stdio:["ignore","pipe","pipe"],windowsHide:!0}),f="";e.stderr.on("data",b=>{let c=b.toString().match(/(\d+\.\d)%/);c&&c[1]!==f&&(f=c[1],a(`Downloading... ${f}%`))}),e.on("close",a=>0===a?c():d(Error("Download failed"))),e.on("error",d)}),a("Installing Tailscale (UAC prompt may appear)..."),await new Promise((c,d)=>{let f=`'/i','${b}','TS_NOLAUNCH=true','/quiet','/norestart'`,g=(0,l.spawn)("powershell",["-NoProfile","-NonInteractive","-Command",`Start-Process msiexec -ArgumentList ${f} -Verb RunAs -Wait`],{stdio:["ignore","pipe","pipe"],windowsHide:!0});g.stderr.on("data",b=>{let c=b.toString().trim();c&&a(c)}),g.on("close",a=>{try{e().unlinkSync(b)}catch{}0===a?c():d(Error(`msiexec failed (code ${a})`))}),g.on("error",d)}),a("Verifying installation...");let c=Date.now();for(;Date.now()-c<1e4;){if(e().existsSync(x))return void a("Installation complete.");await new Promise(a=>setTimeout(a,1e3))}throw Error("Installation finished but tailscale.exe not found")}async function Q(a){try{if(!e().existsSync(a))return void e().mkdirSync(a,{recursive:!0});let b=process.getuid(),c=process.getgid();if(!(()=>{let c=[a];for(;c.length;){let a=c.pop();try{let d=e().statSync(a);if(d.uid!==b)return!0;if(d.isDirectory())for(let b of e().readdirSync(a))c.push(g().join(a,b))}catch{}}return!1})())return;try{(0,l.execSync)(`chown -R ${b}:${c} "${a}"`,{stdio:"ignore",timeout:3e3})}catch{try{(0,l.execSync)(`sudo -n chown -R ${b}:${c} "${a}"`,{stdio:"ignore",timeout:3e3})}catch{}}}catch{}}async function R(a){if(s){let a=D();console.log("[Tailscale] win: net start Tailscale");try{(0,l.execSync)("net start Tailscale",{stdio:"ignore",windowsHide:!0,timeout:1e4})}catch{}if(!a)return;for(let b=0;b<20;b++){try{let c=(0,l.execSync)(`"${a}" status --json`,{encoding:"utf8",windowsHide:!0,timeout:2e3}),d=JSON.parse(c);if(d.BackendState&&"NoState"!==d.BackendState)return void console.log(`[Tailscale] win: BackendState=${d.BackendState} after ${500*b}ms`)}catch{}await new Promise(a=>setTimeout(a,500))}console.log("[Tailscale] win: BackendState still NoState after poll");return}let b=!!a,c=function(){try{let a=(0,l.execSync)(`pgrep -af "tailscaled.*${v}"`,{encoding:"utf8",timeout:2e3}).trim();if(!a)return null;return!a.includes("--tun=userspace-networking")}catch{return null}}();if(null!==c&&c===b)try{let a=D()||"tailscale";(0,l.execSync)(`"${a}" ${w.join(" ")} status --json`,{stdio:"ignore",windowsHide:!0,env:{...process.env,PATH:M},timeout:3e3});return}catch{}try{(0,l.execSync)(`pkill -9 -f "tailscaled.*${v}"`,{stdio:"ignore",timeout:3e3})}catch{}if(a)try{await (0,n.execWithPassword)(`pkill -9 -f "tailscaled.*${v}"`,a)}catch{}else try{(0,l.execSync)(`sudo -n pkill -9 -f "tailscaled.*${v}"`,{stdio:"ignore",timeout:3e3})}catch{}await new Promise(a=>setTimeout(a,1500)),await Q(u);let d=r?"/usr/local/bin/tailscaled":"tailscaled",e=[`--socket=${v}`,`--statedir=${u}`];if(b||e.push("--tun=userspace-networking"),b){let b=(0,l.spawn)("sudo",["-S",d,...e],{detached:!0,stdio:["pipe","ignore","ignore"],cwd:i().tmpdir(),env:{...process.env,PATH:M}});b.stdin.write(`${a}
|
|
4
4
|
`),b.stdin.end(),b.unref()}else(0,l.spawn)(d,e,{detached:!0,stdio:"ignore",cwd:i().tmpdir(),env:{...process.env,PATH:M}}).unref();await new Promise(a=>setTimeout(a,3e3))}function S(){let a=D();if(!a)return null;try{let b=(0,l.execSync)(`"${a}" ${w.join(" ")} status --json`,{encoding:"utf8",windowsHide:!0,timeout:2e3}),c=JSON.parse(b);if(c.AuthURL)return c.AuthURL;return null}catch{return null}}function T(a){let b=D();return b?new Promise((c,d)=>{if(R("").catch(()=>{}),G())return void c({alreadyLoggedIn:!0});let e=F("up","--accept-routes");a&&e.push(`--hostname=${a}`);let f=(0,l.spawn)(b,e,{stdio:["ignore","pipe","pipe"],detached:!0,windowsHide:!0}),g=!1,h="",i=a=>{let b=a.match(/https:\/\/login\.tailscale\.com\/a\/[a-zA-Z0-9]+/);return b?b[0]:null},j=(a,b)=>{g||(g=!0,clearTimeout(m),clearInterval(k),console.log(`[Tailscale] login authUrl detected (${b})`),f.unref(),c({authUrl:a}))},k=setInterval(()=>{if(g)return;let a=S();a&&j(a,"status")},500),m=setTimeout(()=>{if(g)return;g=!0,clearInterval(k),f.unref();let a=i(h)||S();a?c({authUrl:a}):d(Error("tailscale up timed out without auth URL"))},15e3),n=a=>{let b=i(h+=a.toString());b&&j(b,"stdout")};f.stdout.on("data",n),f.stderr.on("data",n),f.on("error",a=>{g||(g=!0,clearTimeout(m),clearInterval(k),console.error(`[Tailscale] login spawn error: ${a.message}`),d(a))}),f.on("exit",a=>{if(g)return;console.log(`[Tailscale] login exit code=${a}`);let b=i(h)||S();if(b)return void j(b,"exit");if(G()){g=!0,clearTimeout(m),clearInterval(k),c({alreadyLoggedIn:!0});return}})}):Promise.reject(Error("Tailscale not installed"))}async function U(a){let b=D();if(!b)throw Error("Tailscale not installed");try{(0,l.execSync)(`"${b}" ${w.join(" ")} funnel --bg reset`,{stdio:"ignore",windowsHide:!0})}catch(a){}return new Promise((c,d)=>{let e=(0,l.spawn)(b,F("funnel","--bg",`${a}`),{stdio:["ignore","pipe","pipe"],windowsHide:!0}),f=!1,g="",h=setTimeout(()=>{if(f)return;f=!0;let b=J()||K(a);b?c({tunnelUrl:b}):d(Error(`Tailscale funnel timed out: ${g.trim()||"no output"}`))},3e4),i=!1,j=a=>{if((g+=a.toString()).includes("Funnel is not enabled")&&(i=!0),i&&!f){let a=g.match(/https:\/\/login\.tailscale\.com\/[^\s]+/);if(a){f=!0,clearTimeout(h),e.kill(),c({funnelNotEnabled:!0,enableUrl:a[0]});return}}let b=J();b&&!f&&(f=!0,clearTimeout(h),c({tunnelUrl:b}))};e.stdout.on("data",j),e.stderr.on("data",j),e.on("exit",b=>{if(f)return;f=!0,clearTimeout(h),console.log(`[Tailscale] funnel exit code=${b} output="${g.trim().slice(0,200)}"`);let e=J()||K(a);e?c({tunnelUrl:e}):d(Error(`tailscale funnel failed (code ${b}): ${g.trim()}`))}),e.on("error",a=>{f||(f=!0,clearTimeout(h),d(a))})})}async function V(a){let b=D();if(!b||!a)return;let c=g().join(u,"certs");e().mkdirSync(c,{recursive:!0});let d=g().join(c,`${a}.crt`),f=g().join(c,`${a}.key`);try{await p(`"${b}" ${w.join(" ")} cert --cert-file "${d}" --key-file "${f}" "${a}"`,{windowsHide:!0,env:{...process.env,PATH:M},timeout:3e4}),console.log(`[Tailscale] cert provisioned for ${a}`)}catch(a){console.warn(`[Tailscale] cert provision failed (non-fatal): ${a.message}`)}}function W(){let a=D();if(a)try{(0,l.execSync)(`"${a}" ${w.join(" ")} funnel --bg reset`,{stdio:"ignore",windowsHide:!0})}catch(a){}}async function X(a){try{(0,l.execSync)("pkill -x tailscaled",{stdio:"ignore",windowsHide:!0,timeout:3e3})}catch{}try{(0,l.execSync)("pgrep -x tailscaled",{stdio:"ignore",windowsHide:!0,timeout:2e3})}catch{return}if(!s)try{await (0,n.execWithPassword)("pkill -x tailscaled",a||"")}catch{}try{e().existsSync(v)&&e().unlinkSync(v)}catch{}}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=5800,exports.ids=[5800],exports.modules={85800:(a,b,c)=>{c.d(b,{runMigrationOnce:()=>
|
|
1
|
+
"use strict";exports.id=5800,exports.ids=[5800],exports.modules={85800:(a,b,c)=>{c.d(b,{runMigrationOnce:()=>y});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(62239),i=c(34050);let j=[{version:1,name:"initial",up(a){for(let[b,c]of Object.entries(i.CG))for(let d of(a.exec((0,i.zE)(b,c)),c.indexes||[]))a.exec(d)}}].sort((a,b)=>a.version-b.version);function k(){return j.length?j[j.length-1].version:0}var l=c(8677);let m=null;function n(){if(m)return m;try{let a=g().join(process.cwd(),"package.json");m=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{m="0.0.0"}return m}function o(a){(0,h.Jh)();let b=n(),c=`${a}-${b}-${function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}()}`,d=g().join(h.KQ,c);return e().mkdirSync(d,{recursive:!0,mode:448}),d}function p(a,b,c=null,d=null){if(!e().existsSync(a))return null;d?.checkpoint?.();let f=c||g().basename(a),i=g().join(b,f);return e().copyFileSync(a,i),(0,h.lo)(i),i}function q(){if(e().existsSync(h.KQ))for(let a of e().readdirSync(h.KQ,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>({name:a.name,full:g().join(h.KQ,a.name),mtime:e().statSync(g().join(h.KQ,a.name)).mtimeMs})).sort((a,b)=>b.mtime-a.mtime).slice(5))try{e().rmSync(a.full,{recursive:!0,force:!0})}catch{}}var r=c(50743);let s=g().join(h.HG,".migrated-from-json"),t=new WeakSet;class u extends Error{constructor(a,b){super(a),this.name="MigrationAborted",this.droppedRows=b}}function v(a,b,c,d,e){let f=[];for(let a of c)try{d(a)}catch(b){f.push({...e(a),reason:b.message})}let g=a.get(`SELECT COUNT(*) as c FROM ${b}`)?.c??0;if(g!==c.length)throw console.warn(`[DB][migrate] ${b} row-count mismatch: expected ${c.length}, got ${g}. Dropped:`,f),new u(`${b} row-count mismatch: expected ${c.length}, got ${g}`,f)}function w(a){if(!e().existsSync(a))return null;try{return JSON.parse(e().readFileSync(a,"utf-8"))}catch{return x}}let x=Symbol("corrupt-json");async function y(a){if(t.has(a))return;let b=function(a){try{let b=a.get("SELECT COUNT(*) as c FROM _meta");return!b||0===b.c}catch{return!0}}(a);a.exec((0,i.zE)("_meta",i.CG._meta));let c=Number((0,l.dy)(a,"schemaVersion",0)),d=(0,l.dy)(a,"appVersion",null),f=n(),g=null;!b&&(c<k()||d&&d!==f)&&(g=o(c<k()?`schema-${c}-to-${k()}`:`upgrade-${d}-to-${f}`),p(h.AL,g,null,a));let m=function(a){a.exec((0,i.zE)("_meta",i.CG._meta));let b=parseInt((0,l.dy)(a,"schemaVersion","0"),10)||0;if(b>=k())return{applied:0,from:b,to:b};let c=j.filter(a=>a.version>b),d=b;for(let b of c)a.transaction(()=>{b.up(a),(0,l.np)(a,"schemaVersion",b.version)}),d=b.version,console.log(`[DB][migrate] applied #${b.version} ${b.name}`);return{applied:c.length,from:b,to:d}}(a);for(let[b,c]of Object.entries(i.CG)){a.exec((0,i.zE)(b,c));let d=new Set(a.all(`PRAGMA table_info(${b})`).map(a=>a.name));for(let[e,f]of Object.entries(c.columns))if(!d.has(e)){let c=f.replace(/PRIMARY KEY( AUTOINCREMENT)?/i,"").replace(/UNIQUE/i,"").trim();try{a.exec(`ALTER TABLE ${b} ADD COLUMN ${e} ${c}`),console.log(`[DB][sync] +column ${b}.${e}`)}catch(a){console.warn(`[DB][sync] add column ${b}.${e} failed: ${a.message}`)}}for(let b of c.indexes||[])try{a.exec(b)}catch{}}let y=e().existsSync(s),z=w(h.Or.main),A=w(h.Or.usage),B=w(h.Or.disabled),C=w(h.Or.details),D=[z,A,B,C],E=D.some(Boolean),F="1"===(0,l.dy)(a,"legacyImportPending",null),G=(b||F)&&!y;if(G&&D.includes(x)){let b=Object.entries(h.Or).filter(([,a])=>w(a)===x).map(([,a])=>a);(0,l.np)(a,"legacyImportPending","1"),console.error(`[DB][migrate] legacy JSON import skipped: cannot parse ${b.join(", ")} | fix or remove the file and restart`);return}if(G&&E){let b=Date.now(),c=o("migrate-from-json");for(let a of Object.values(h.Or))p(a,c);try{a.transaction(()=>{if(z&&"object"==typeof z){for(let[b,c]of(z.settings&&a.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,r.s)(z.settings)]),v(a,"providerConnections",z.providerConnections||[],b=>{let{id:c,provider:d,authType:e,name:f,email:g,priority:h,isActive:i,createdAt:j,updatedAt:k,...l}=b;a.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[c,d,e||"oauth",f||null,g||null,h||null,+(!1!==i),(0,r.s)(l),j||new Date().toISOString(),k||new Date().toISOString()])},a=>({id:a.id??null,provider:a.provider??null,name:a.name??null})),v(a,"providerNodes",z.providerNodes||[],b=>{let{id:c,type:d,name:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,d||null,e||null,(0,r.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null,type:a.type??null,name:a.name??null})),v(a,"proxyPools",z.proxyPools||[],b=>{let{id:c,isActive:d,testStatus:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,+(!1!==d),e||"unknown",(0,r.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null})),v(a,"apiKeys",z.apiKeys||[],b=>{a.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt, budgetDaily, budgetMonthly, requestsPerMinute, allowedModels, allowedConnectionIds) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[b.id,b.key,b.name||null,b.machineId||null,+(!1!==b.isActive),b.createdAt||new Date().toISOString(),Number(b.budgetDaily)||0,Number(b.budgetMonthly)||0,Number(b.requestsPerMinute)||0,(0,r.s)(b.allowedModels||[]),(0,r.s)(b.allowedConnectionIds||[])])},a=>({id:a.id??null,name:a.name??null})),v(a,"combos",z.combos||[],b=>{a.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.name,b.kind||null,(0,r.s)(b.models||[]),b.createdAt||new Date().toISOString(),b.updatedAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),Object.entries(z.modelAliases||{})))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[b,(0,r.s)(c)]);for(let b of z.customModels||[]){let c=`${b.providerAlias}|${b.id}|${b.type||"llm"}`;a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[c,(0,r.s)(b)])}for(let[b,c]of Object.entries(z.mitmAlias||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[b,(0,r.s)(c||{})]);for(let[b,c]of Object.entries(z.pricing||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[b,(0,r.s)(c||{})])}if(A&&"object"==typeof A){for(let b of A.history||[]){let c=b.tokens||{};a.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.apiKey||null,b.endpoint||null,c.prompt_tokens||c.input_tokens||0,c.completion_tokens||c.output_tokens||0,b.cost||0,b.status||"ok",(0,r.s)(c),(0,r.s)({})])}for(let[b,c]of Object.entries(A.dailySummary||{}))a.run("INSERT OR REPLACE INTO usageDaily(dateKey, data) VALUES(?, ?)",[b,(0,r.s)(c)]);"number"==typeof A.totalRequestsLifetime&&(0,l.np)(a,"totalRequestsLifetime",A.totalRequestsLifetime)}if(B&&"object"==typeof B.disabled)for(let[b,c]of Object.entries(B.disabled))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('disabledModels', ?, ?)",[b,(0,r.s)(c||[])]);if(C&&Array.isArray(C.records))for(let b of C.records)a.run("INSERT OR REPLACE INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?)",[b.id,b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.status||null,(0,r.s)(b)]);(0,l.np)(a,"appVersion",n()),(0,l.np)(a,"migratedAt",new Date().toISOString()),(0,l.np)(a,"legacyImportPending","0")})}catch(b){if(b instanceof u){(0,l.np)(a,"legacyImportPending","1"),console.error(`[DB][migrate] aborted: ${b.message} | legacy JSON kept | backup: ${c}`);return}throw b}try{e().writeFileSync(s,new Date().toISOString())}catch{}q(),console.log(`[DB][migrate] JSON → SQLite in ${Date.now()-b}ms | legacy JSON kept at DATA_DIR | backup: ${c}`),t.add(a);return}if(b){(0,l.np)(a,"appVersion",n()),t.add(a);return}d!==f&&(0,l.np)(a,"appVersion",f),g&&(q(),console.log(`[DB][migrate] App ${d} → ${f} | schema ${m.from} → ${m.to} | backup: ${g}`)),t.add(a)}}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
exports.id=5949,exports.ids=[5949],exports.modules={6848:(a,b,c)=>{"use strict";let d=c(29021),e=c(33873),{getRuntimeDir:f,getRuntimeNodeModules:g,runNpmInstall:h,summarizeNpmError:i}=c(24344),j="tls-client-node",k="0.2.0";function l(){return d.existsSync(e.join(g(),j,"package.json"))}a.exports={ensureNotionTlsRuntime:function({silent:a=!1,timeout:b=3e5}={}){let c,g;if(l())return{ok:!0,already:!0};let m=(c=f(),d.mkdirSync(c,{recursive:!0}),g=e.join(c,"package.json"),d.existsSync(g)||d.writeFileSync(g,JSON.stringify({name:"zevai-runtime",version:"1.0.0",private:!0},null,2)),c),n=h({cwd:m,pkgs:[`${j}@${k}`],timeout:b});return n.ok||a||(console.warn(`[zevai][runtime] Notion TLS install skipped: ${i(n.stderr||n.stdout)}`),console.warn(`[zevai][runtime] Retry: cd "${m}" && npm install ${j}@${k}`)),{ok:n.ok&&l()}},hasNotionTlsRuntime:l}},24344:(a,b,c)=>{"use strict";let{execSync:d,spawnSync:e}=c(79646),f=c(29021),g=c(21820),h=c(33873),i="zevai";function j(){return h.join(process.env.DATA_DIR?process.env.DATA_DIR:"win32"===process.platform?h.join(process.env.APPDATA||g.homedir(),i):h.join(g.homedir(),`.${i}`),"runtime")}function k(){return h.join(j(),"node_modules")}function l(){let a=j();f.existsSync(a)||f.mkdirSync(a,{recursive:!0});let b=h.join(a,"package.json");return f.existsSync(b)||f.writeFileSync(b,JSON.stringify({name:"zevai-runtime",version:"1.0.0",private:!0,description:"User-writable runtime deps for ZevaiRouter (better-sqlite3 native binary)"},null,2)),a}function m(a){return f.existsSync(h.join(k(),a,"package.json"))}function n(){let a=h.join(k(),"better-sqlite3","build","Release","better_sqlite3.node");if(!f.existsSync(a))return!1;try{let b=f.openSync(a,"r"),c=Buffer.alloc(4);f.readSync(b,c,0,4,0),f.closeSync(b);let d=c.toString("hex");if("linux"===process.platform)return d.startsWith("7f454c46");if("darwin"===process.platform)return d.startsWith("cffaedfe")||d.startsWith("cefaedfe");if("win32"===process.platform)return d.startsWith("4d5a");return!0}catch{return!1}}function o(a=""){let b=String(a);if(/ENOTFOUND|ETIMEDOUT|EAI_AGAIN|network|getaddrinfo/i.test(b))return"No internet connection or registry unreachable";if(/EACCES|EPERM|permission denied/i.test(b))return"Permission denied (check folder permissions)";if(/ENOSPC|no space/i.test(b))return"Not enough disk space";if(/node-gyp|gyp ERR|python|MSBuild|Visual Studio|Xcode/i.test(b))return"Missing build tools (Xcode CLT / Python / VS Build Tools)";if(/ETARGET|version.*not found/i.test(b))return"Package version not found on registry";let c=b.match(/npm ERR! (.+)/);if(c)return c[1].slice(0,200);let d=b.trim().split(/\r?\n/).filter(Boolean).pop();return d?d.slice(0,200):"Unknown error"}function p({cwd:a,pkgs:b,extraArgs:c=[],timeout:d=18e4}){let g=["install",...b,"--save","--no-audit","--no-fund","--prefer-online","--loglevel=error",...c.filter(a=>"--no-save"!==a)],i="win32"===process.platform?"npm.cmd":"npm",j=g,k="win32"===process.platform;try{let a=h.join(h.dirname(process.execPath),"..","lib","node_modules","npm","bin","npm-cli.js");f.existsSync(a)&&(i=process.execPath,j=[a,...g],k=!1)}catch{}let l=e(i,j,{cwd:a,stdio:["ignore","pipe","pipe"],timeout:d,shell:k,encoding:"utf8"});return{ok:0===l.status,code:l.status,stderr:l.stderr||"",stdout:l.stdout||""}}a.exports={ensureSqliteRuntime:function({silent:a=!1}={}){return(l(),m("better-sqlite3")&&n())?(a||console.log("✅ SQLite engine ready"),{betterSqlite:!0}):{betterSqlite:function(a,b={}){let c=l(),d=b.optional?["--no-save"]:[];b.silent||console.log("⏳ Installing SQLite engine (first run)...");let e=p({cwd:c,pkgs:a,extraArgs:d,timeout:b.timeout||18e4});if(!e.ok&&!b.silent){let b=o(e.stderr);console.warn("⚠️ SQLite engine install failed — using fallback"),console.warn(` Reason: ${b}`),console.warn(` Retry: cd "${c}" && npm install ${a.join(" ")}`)}return e.ok}(["better-sqlite3@12.6.2"],{optional:!0,silent:a})&&m("better-sqlite3")&&n()}},buildEnvWithRuntime:function(a=process.env){let b=[k(),h.join(__dirname,"..","app","node_modules"),h.join(__dirname,"..","..","node_modules"),a.NODE_PATH||""].filter(Boolean).join(h.delimiter);return{...a,NODE_PATH:b}},getRuntimeDir:j,getRuntimeNodeModules:k,runNpmInstall:p,summarizeNpmError:o}},50982:(a,b,c)=>{var d={"./cloakbrowserRuntime":99436,"./cloakbrowserRuntime.js":99436,"./notionTlsRuntime":6848,"./notionTlsRuntime.js":6848,"./postinstall":77897,"./postinstall.js":77897,"./safeGlobalInstall":65185,"./safeGlobalInstall.js":65185,"./sqliteRuntime":24344,"./sqliteRuntime.js":24344,"./startupRuntime":83445,"./startupRuntime.js":83445,"./streamCommand":69069,"./streamCommand.js":69069,"./trayRuntime":52784,"./trayRuntime.js":52784};function e(a){return c(f(a))}function f(a){if(!c.o(d,a)){var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b}return d[a]}e.keys=function(){return Object.keys(d)},e.resolve=f,a.exports=e,e.id=50982},51029:a=>{function b(a){var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b}b.keys=()=>[],b.resolve=b,b.id=51029,a.exports=b},52784:(a,b,c)=>{"use strict";let{spawnSync:d}=c(79646),e=c(29021),f=c(33873),{getRuntimeDir:g,getRuntimeNodeModules:h,runNpmInstall:i,summarizeNpmError:j}=c(24344),k="systray2",l="systray";function m(){return e.existsSync(f.join(h(),k,"package.json"))}function n({silent:a=!1}={}){if("win32"===process.platform)return;let b="darwin"===process.platform?"tray_darwin_release":"tray_linux_release",c=f.join(h(),k,"traybin",b);if(e.existsSync(c))try{e.chmodSync(c,493)}catch(b){a||console.warn(`[zevai][runtime] chmod tray bin failed: ${b.message}`)}}a.exports={ensureTrayRuntime:function({silent:a=!1}={}){if(!function({silent:a=!1}={}){for(let b of[f.join(h(),l),f.join(__dirname,"..","node_modules",l)])if(e.existsSync(b))try{e.rmSync(b,{recursive:!0,force:!0}),a||console.log(`[zevai][runtime] removed legacy systray: ${b}`)}catch(c){a||console.warn(`[zevai][runtime] failed to remove ${b}: ${c.message}`)}}({silent:a}),"win32"===process.platform)return{systray:!1,skipped:!0};if(m())return n({silent:a}),a||console.log("✅ System tray ready"),{systray:!0};let b=function(a,{silent:b=!1}={}){let c,d,h=(c=g(),e.existsSync(c)||e.mkdirSync(c,{recursive:!0}),d=f.join(c,"package.json"),e.existsSync(d)||e.writeFileSync(d,JSON.stringify({name:"zevai-runtime",version:"1.0.0",private:!0},null,2)),c);b||console.log("⏳ Installing system tray (first run)...");let k=i({cwd:h,pkgs:a,extraArgs:["--no-save"],timeout:12e4});if(!k.ok&&!b){let b=j(k.stderr);console.warn("⚠️ System tray install failed — tray disabled"),console.warn(` Reason: ${b}`),console.warn(` Retry: cd "${h}" && npm install ${a.join(" ")}`)}return k.ok}([`${k}@2.1.4`],{silent:a});return b&&n({silent:a}),{systray:b&&m()}}}},65185:(a,b,c)=>{"use strict";a=c.nmd(a);let{execFileSync:d,spawnSync:e}=c(79646),f=c(29021),g=c(21820),h=c(33873),i="zevairouter",j="zevai";function k(a){console.log(`[zevai-install] ${a}`)}function l(a){console.warn(`[zevai-install] ${a}`)}function m(){let a=process.platform;return"darwin"===a?{id:"mac",label:"macOS"}:"win32"===a?{id:"windows",label:"Windows"}:"linux"===a?{id:"linux",label:"Linux"}:{id:a,label:a}}function n(){let a=h.dirname(process.execPath);for(let b of"win32"===process.platform?[h.join(a,"node_modules","npm","bin","npm-cli.js"),h.join(a,"npm.cmd"),h.join(a,"npm"),"npm.cmd","npm"]:[h.join(a,"npm"),h.join(a,"..","lib","node_modules","npm","bin","npm-cli.js")])if("npm"!==b&&"npm.cmd"!==b&&f.existsSync(b))return b;try{let a="win32"===process.platform?"where":"which",b=d(a,["npm"],{encoding:"utf8"}).trim().split(/\r?\n/)[0];if(b)return b}catch{}return"win32"===process.platform?"npm.cmd":"npm"}function o(a,b,c={}){let d={...process.env,npm_config_fund:"false",npm_config_audit:"false",npm_config_update_notifier:"false",npm_node_execpath:process.execPath},i=a.endsWith("npm-cli.js"),j=i?process.execPath:a,k=i?[a,...b]:b;if(c.stream){let a=f.mkdtempSync(h.join(g.tmpdir(),"zevai-command-")),b=h.join(a,"result.json");try{let a=h.join(__dirname,"streamCommand.js"),g=e(process.execPath,[a,b,j,...k],{env:{...d,ZEVAI_STREAM_COMMAND_SHELL:"win32"!==process.platform||i?"0":"1"},stdio:"inherit",timeout:c.timeout||6e5,windowsHide:!0}),l={};try{l=JSON.parse(f.readFileSync(b,"utf8"))}catch{}return{ok:0===g.status&&0===l.status,status:l.status??g.status,stdout:l.stdout||"",stderr:l.stderr||"",error:g.error||l.error||null}}finally{try{f.rmSync(a,{recursive:!0,force:!0})}catch{}}}let l=e(j,k,{encoding:"utf8",env:d,shell:"win32"===process.platform&&!i,timeout:c.timeout||6e5});return{ok:0===l.status,status:l.status,stdout:l.stdout||"",stderr:l.stderr||"",error:l.error}}function p(a){let b=(o(a,["root","-g"],{timeout:3e4}).stdout||"").trim().split(/\r?\n/).filter(Boolean).pop();return b&&f.existsSync(b)?b:"win32"===process.platform?h.join(h.dirname(process.execPath),"node_modules"):h.join(h.dirname(process.execPath),"..","lib","node_modules")}function q(a){let b=(o(a,["prefix","-g"],{timeout:3e4}).stdout||"").trim().split(/\r?\n/).filter(Boolean).pop();if(b&&f.existsSync(b)){if("win32"===process.platform)return b;let a=h.join(b,"bin");if(f.existsSync(a))return a}return h.dirname(process.execPath)}function r(a){let b=h.join(a,i);f.existsSync(b)&&(k(`Removing previous install: ${b}`),f.rmSync(b,{recursive:!0,force:!0,maxRetries:5,retryDelay:200}));try{for(let b of f.readdirSync(a))if(b.startsWith(`.${i}-`)||b===`.${i}`){let c=h.join(a,b);k(`Removing leftover: ${c}`),f.rmSync(c,{recursive:!0,force:!0,maxRetries:5,retryDelay:200})}}catch{}}function s(a){for(let b of"win32"===process.platform?[`${j}.cmd`,`${j}`,`${j}.ps1`]:[j]){let c=h.join(a,b);try{f.existsSync(c)&&f.rmSync(c,{force:!0})}catch{}}}function t(){return"win32"===process.platform?[`${j}.cmd`,j,`${j}.ps1`]:[j]}function u(a,b=f){try{return b.lstatSync(a),!0}catch{return!1}}function v(a,b){let c=h.join(a,i);if(!f.existsSync(h.join(c,"package.json")))return null;let d=f.mkdtempSync(h.join(g.tmpdir(),"zevai-install-rollback-")),e=h.join(d,i),j=h.join(d,"bin");try{for(let a of(f.cpSync(c,e,{recursive:!0,preserveTimestamps:!0,verbatimSymlinks:!0}),f.mkdirSync(j,{recursive:!0}),t())){let c=h.join(b,a);u(c)&&f.cpSync(c,h.join(j,a),{preserveTimestamps:!0,verbatimSymlinks:!0})}return{backupRoot:d,packageBackup:e,binBackup:j}}catch(a){try{f.rmSync(d,{recursive:!0,force:!0})}catch{}throw a}}function w(a,b,c){if(!a)return;let d=h.join(b,i);for(let b of(f.rmSync(d,{recursive:!0,force:!0,maxRetries:5,retryDelay:200}),f.cpSync(a.packageBackup,d,{recursive:!0,preserveTimestamps:!0,verbatimSymlinks:!0}),s(c),t())){let d=h.join(a.binBackup,b);if(!u(d))continue;let e=h.join(c,b);f.lstatSync(d).isSymbolicLink()?f.symlinkSync(f.readlinkSync(d),e):f.cpSync(d,e,{preserveTimestamps:!0,verbatimSymlinks:!0})}}function x(a){if(a)try{f.rmSync(a.backupRoot,{recursive:!0,force:!0})}catch{}}function y(a,b=f){try{let c=h.join(a,i,"package.json"),d=JSON.parse(b.readFileSync(c,"utf8"));return{name:d?.name||null,version:d?.version||null}}catch{return null}}function z(a,b=f){return y(a,b)?.version||null}function A(a,b=f){try{return b.existsSync(h.join(a,i,"package.json"))}catch{return!1}}function B(a={},b=f){let c=String(a.version||"latest").replace(/^v(?=\d)/,""),d=/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/.test(c);if(!a.localArtifact){let b=a.packageSpec||`${i}@${c}`;return("latest"===c||d)&&b===`${i}@${c}`?{ok:!0,kind:"registry",packageSpec:b,expectedVersion:d?c:null}:{ok:!1,error:"Version must be 'latest' or an exact semantic version (for example 1.2.3)."}}if(!0!==a.allowLocalArtifact||!d)return{ok:!1,error:"Local artifacts require explicit opt-in and an exact expected version."};try{let d=h.resolve(String(a.localArtifact)),e=b.lstatSync(d);if(!e.isFile()||e.isSymbolicLink()||".tgz"!==h.extname(d))throw Error("Local artifact must be a regular .tgz file, not a directory or symlink.");let f=b.realpathSync(d);if(f!==d)throw Error("Local artifact path must already be canonical and contain no symlink components.");return{ok:!0,kind:"local-artifact",packageSpec:f,expectedVersion:c}}catch(a){return{ok:!1,error:a.message}}}function C(a={}){let b=m(),c=a.dependencies||{},d=c.fs||f,g=c.runNpm||o,t=c.resolveNpmForThisNode||n,u=c.getGlobalRoot||p,D=c.getGlobalBin||q,E=c.spawnSync||e,F=B(a,d);if(!F.ok)return{ok:!1,nodePath:process.execPath,npmPath:"",globalRoot:"",platform:b,error:F.error};let G=t(),H=u(G),I=D(G),J=A(H,d),K=J?z(H,d):null,L=null;if(J&&!a.externalRollback)try{L=v(H,I),k(`rollback snapshot: ${L.backupRoot}`)}catch(a){return{ok:!1,nodePath:process.execPath,npmPath:G,globalRoot:H,platform:b,version:K||void 0,error:`Refusing to update without a rollback snapshot: ${a.message}`}}k(`OS: ${b.label} (${process.platform}/${process.arch})`),k(`Node: ${process.version} @ ${process.execPath}`),k(`npm: ${G}`),k(`global root: ${H}`),k(`global bin: ${I}`),k(`installing: ${F.packageSpec}${K?` (was ${K})`:""}`);let M=!0===a.forceClean;M&&!J?(r(H),s(I)):M&&J&&l("forceClean requested but existing package kept until install succeeds (OOM-safe)");let N=["install","-g",F.packageSpec];"registry"===F.kind&&N.push("--prefer-online"),process.env.npm_config_registry||process.env.ZEVAI_NPM_REGISTRY&&N.push("--registry",process.env.ZEVAI_NPM_REGISTRY);let O=g(G,N,{timeout:6e5,stream:!0}),P=`${O.stderr}
|
|
1
|
+
exports.id=5949,exports.ids=[5949],exports.modules={24344:(a,b,c)=>{"use strict";let{execSync:d,spawnSync:e}=c(79646),f=c(29021),g=c(21820),h=c(33873),i="zevai";function j(){return h.join(process.env.DATA_DIR?process.env.DATA_DIR:"win32"===process.platform?h.join(process.env.APPDATA||g.homedir(),i):h.join(g.homedir(),`.${i}`),"runtime")}function k(){return h.join(j(),"node_modules")}function l(){let a=j();f.existsSync(a)||f.mkdirSync(a,{recursive:!0});let b=h.join(a,"package.json");return f.existsSync(b)||f.writeFileSync(b,JSON.stringify({name:"zevai-runtime",version:"1.0.0",private:!0,description:"User-writable runtime deps for ZevaiRouter (better-sqlite3 native binary)"},null,2)),a}function m(a){return f.existsSync(h.join(k(),a,"package.json"))}function n(){let a=h.join(k(),"better-sqlite3","build","Release","better_sqlite3.node");if(!f.existsSync(a))return!1;try{let b=f.openSync(a,"r"),c=Buffer.alloc(4);f.readSync(b,c,0,4,0),f.closeSync(b);let d=c.toString("hex");if("linux"===process.platform)return d.startsWith("7f454c46");if("darwin"===process.platform)return d.startsWith("cffaedfe")||d.startsWith("cefaedfe");if("win32"===process.platform)return d.startsWith("4d5a");return!0}catch{return!1}}function o(a=""){let b=String(a);if(/ENOTFOUND|ETIMEDOUT|EAI_AGAIN|network|getaddrinfo/i.test(b))return"No internet connection or registry unreachable";if(/EACCES|EPERM|permission denied/i.test(b))return"Permission denied (check folder permissions)";if(/ENOSPC|no space/i.test(b))return"Not enough disk space";if(/node-gyp|gyp ERR|python|MSBuild|Visual Studio|Xcode/i.test(b))return"Missing build tools (Xcode CLT / Python / VS Build Tools)";if(/ETARGET|version.*not found/i.test(b))return"Package version not found on registry";let c=b.match(/npm ERR! (.+)/);if(c)return c[1].slice(0,200);let d=b.trim().split(/\r?\n/).filter(Boolean).pop();return d?d.slice(0,200):"Unknown error"}function p({cwd:a,pkgs:b,extraArgs:c=[],timeout:d=18e4}){let g=["install",...b,"--save","--no-audit","--no-fund","--prefer-online","--loglevel=error",...c.filter(a=>"--no-save"!==a)],i="win32"===process.platform?"npm.cmd":"npm",j=g,k="win32"===process.platform;try{let a=h.join(h.dirname(process.execPath),"..","lib","node_modules","npm","bin","npm-cli.js");f.existsSync(a)&&(i=process.execPath,j=[a,...g],k=!1)}catch{}let l=e(i,j,{cwd:a,stdio:["ignore","pipe","pipe"],timeout:d,shell:k,encoding:"utf8"});return{ok:0===l.status,code:l.status,stderr:l.stderr||"",stdout:l.stdout||""}}a.exports={ensureSqliteRuntime:function({silent:a=!1}={}){return(l(),m("better-sqlite3")&&n())?(a||console.log("✅ SQLite engine ready"),{betterSqlite:!0}):{betterSqlite:function(a,b={}){let c=l(),d=b.optional?["--no-save"]:[];b.silent||console.log("⏳ Installing SQLite engine (first run)...");let e=p({cwd:c,pkgs:a,extraArgs:d,timeout:b.timeout||18e4});if(!e.ok&&!b.silent){let b=o(e.stderr);console.warn("⚠️ SQLite engine install failed — using fallback"),console.warn(` Reason: ${b}`),console.warn(` Retry: cd "${c}" && npm install ${a.join(" ")}`)}return e.ok}(["better-sqlite3@12.6.2"],{optional:!0,silent:a})&&m("better-sqlite3")&&n()}},buildEnvWithRuntime:function(a=process.env){let b=[k(),h.join(__dirname,"..","app","node_modules"),h.join(__dirname,"..","..","node_modules"),a.NODE_PATH||""].filter(Boolean).join(h.delimiter);return{...a,NODE_PATH:b}},getRuntimeDir:j,getRuntimeNodeModules:k,runNpmInstall:p,summarizeNpmError:o}},50982:(a,b,c)=>{var d={"./cloakbrowserRuntime":99436,"./cloakbrowserRuntime.js":99436,"./postinstall":77897,"./postinstall.js":77897,"./safeGlobalInstall":65185,"./safeGlobalInstall.js":65185,"./sqliteRuntime":24344,"./sqliteRuntime.js":24344,"./startupRuntime":83445,"./startupRuntime.js":83445,"./streamCommand":69069,"./streamCommand.js":69069,"./trayRuntime":52784,"./trayRuntime.js":52784};function e(a){return c(f(a))}function f(a){if(!c.o(d,a)){var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b}return d[a]}e.keys=function(){return Object.keys(d)},e.resolve=f,a.exports=e,e.id=50982},51029:a=>{function b(a){var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b}b.keys=()=>[],b.resolve=b,b.id=51029,a.exports=b},52784:(a,b,c)=>{"use strict";let{spawnSync:d}=c(79646),e=c(29021),f=c(33873),{getRuntimeDir:g,getRuntimeNodeModules:h,runNpmInstall:i,summarizeNpmError:j}=c(24344),k="systray2",l="systray";function m(){return e.existsSync(f.join(h(),k,"package.json"))}function n({silent:a=!1}={}){if("win32"===process.platform)return;let b="darwin"===process.platform?"tray_darwin_release":"tray_linux_release",c=f.join(h(),k,"traybin",b);if(e.existsSync(c))try{e.chmodSync(c,493)}catch(b){a||console.warn(`[zevai][runtime] chmod tray bin failed: ${b.message}`)}}a.exports={ensureTrayRuntime:function({silent:a=!1}={}){if(!function({silent:a=!1}={}){for(let b of[f.join(h(),l),f.join(__dirname,"..","node_modules",l)])if(e.existsSync(b))try{e.rmSync(b,{recursive:!0,force:!0}),a||console.log(`[zevai][runtime] removed legacy systray: ${b}`)}catch(c){a||console.warn(`[zevai][runtime] failed to remove ${b}: ${c.message}`)}}({silent:a}),"win32"===process.platform)return{systray:!1,skipped:!0};if(m())return n({silent:a}),a||console.log("✅ System tray ready"),{systray:!0};let b=function(a,{silent:b=!1}={}){let c,d,h=(c=g(),e.existsSync(c)||e.mkdirSync(c,{recursive:!0}),d=f.join(c,"package.json"),e.existsSync(d)||e.writeFileSync(d,JSON.stringify({name:"zevai-runtime",version:"1.0.0",private:!0},null,2)),c);b||console.log("⏳ Installing system tray (first run)...");let k=i({cwd:h,pkgs:a,extraArgs:["--no-save"],timeout:12e4});if(!k.ok&&!b){let b=j(k.stderr);console.warn("⚠️ System tray install failed — tray disabled"),console.warn(` Reason: ${b}`),console.warn(` Retry: cd "${h}" && npm install ${a.join(" ")}`)}return k.ok}([`${k}@2.1.4`],{silent:a});return b&&n({silent:a}),{systray:b&&m()}}}},65185:(a,b,c)=>{"use strict";a=c.nmd(a);let{execFileSync:d,spawnSync:e}=c(79646),f=c(29021),g=c(21820),h=c(33873),i="zevairouter",j="zevai";function k(a){console.log(`[zevai-install] ${a}`)}function l(a){console.warn(`[zevai-install] ${a}`)}function m(){let a=process.platform;return"darwin"===a?{id:"mac",label:"macOS"}:"win32"===a?{id:"windows",label:"Windows"}:"linux"===a?{id:"linux",label:"Linux"}:{id:a,label:a}}function n(){let a=h.dirname(process.execPath);for(let b of"win32"===process.platform?[h.join(a,"node_modules","npm","bin","npm-cli.js"),h.join(a,"npm.cmd"),h.join(a,"npm"),"npm.cmd","npm"]:[h.join(a,"npm"),h.join(a,"..","lib","node_modules","npm","bin","npm-cli.js")])if("npm"!==b&&"npm.cmd"!==b&&f.existsSync(b))return b;try{let a="win32"===process.platform?"where":"which",b=d(a,["npm"],{encoding:"utf8"}).trim().split(/\r?\n/)[0];if(b)return b}catch{}return"win32"===process.platform?"npm.cmd":"npm"}function o(a,b,c={}){let d={...process.env,npm_config_fund:"false",npm_config_audit:"false",npm_config_update_notifier:"false",npm_node_execpath:process.execPath},i=a.endsWith("npm-cli.js"),j=i?process.execPath:a,k=i?[a,...b]:b;if(c.stream){let a=f.mkdtempSync(h.join(g.tmpdir(),"zevai-command-")),b=h.join(a,"result.json");try{let a=h.join(__dirname,"streamCommand.js"),g=e(process.execPath,[a,b,j,...k],{env:{...d,ZEVAI_STREAM_COMMAND_SHELL:"win32"!==process.platform||i?"0":"1"},stdio:"inherit",timeout:c.timeout||6e5,windowsHide:!0}),l={};try{l=JSON.parse(f.readFileSync(b,"utf8"))}catch{}return{ok:0===g.status&&0===l.status,status:l.status??g.status,stdout:l.stdout||"",stderr:l.stderr||"",error:g.error||l.error||null}}finally{try{f.rmSync(a,{recursive:!0,force:!0})}catch{}}}let l=e(j,k,{encoding:"utf8",env:d,shell:"win32"===process.platform&&!i,timeout:c.timeout||6e5});return{ok:0===l.status,status:l.status,stdout:l.stdout||"",stderr:l.stderr||"",error:l.error}}function p(a){let b=(o(a,["root","-g"],{timeout:3e4}).stdout||"").trim().split(/\r?\n/).filter(Boolean).pop();return b&&f.existsSync(b)?b:"win32"===process.platform?h.join(h.dirname(process.execPath),"node_modules"):h.join(h.dirname(process.execPath),"..","lib","node_modules")}function q(a){let b=(o(a,["prefix","-g"],{timeout:3e4}).stdout||"").trim().split(/\r?\n/).filter(Boolean).pop();if(b&&f.existsSync(b)){if("win32"===process.platform)return b;let a=h.join(b,"bin");if(f.existsSync(a))return a}return h.dirname(process.execPath)}function r(a){let b=h.join(a,i);f.existsSync(b)&&(k(`Removing previous install: ${b}`),f.rmSync(b,{recursive:!0,force:!0,maxRetries:5,retryDelay:200}));try{for(let b of f.readdirSync(a))if(b.startsWith(`.${i}-`)||b===`.${i}`){let c=h.join(a,b);k(`Removing leftover: ${c}`),f.rmSync(c,{recursive:!0,force:!0,maxRetries:5,retryDelay:200})}}catch{}}function s(a){for(let b of"win32"===process.platform?[`${j}.cmd`,`${j}`,`${j}.ps1`]:[j]){let c=h.join(a,b);try{f.existsSync(c)&&f.rmSync(c,{force:!0})}catch{}}}function t(){return"win32"===process.platform?[`${j}.cmd`,j,`${j}.ps1`]:[j]}function u(a,b=f){try{return b.lstatSync(a),!0}catch{return!1}}function v(a,b){let c=h.join(a,i);if(!f.existsSync(h.join(c,"package.json")))return null;let d=f.mkdtempSync(h.join(g.tmpdir(),"zevai-install-rollback-")),e=h.join(d,i),j=h.join(d,"bin");try{for(let a of(f.cpSync(c,e,{recursive:!0,preserveTimestamps:!0,verbatimSymlinks:!0}),f.mkdirSync(j,{recursive:!0}),t())){let c=h.join(b,a);u(c)&&f.cpSync(c,h.join(j,a),{preserveTimestamps:!0,verbatimSymlinks:!0})}return{backupRoot:d,packageBackup:e,binBackup:j}}catch(a){try{f.rmSync(d,{recursive:!0,force:!0})}catch{}throw a}}function w(a,b,c){if(!a)return;let d=h.join(b,i);for(let b of(f.rmSync(d,{recursive:!0,force:!0,maxRetries:5,retryDelay:200}),f.cpSync(a.packageBackup,d,{recursive:!0,preserveTimestamps:!0,verbatimSymlinks:!0}),s(c),t())){let d=h.join(a.binBackup,b);if(!u(d))continue;let e=h.join(c,b);f.lstatSync(d).isSymbolicLink()?f.symlinkSync(f.readlinkSync(d),e):f.cpSync(d,e,{preserveTimestamps:!0,verbatimSymlinks:!0})}}function x(a){if(a)try{f.rmSync(a.backupRoot,{recursive:!0,force:!0})}catch{}}function y(a,b=f){try{let c=h.join(a,i,"package.json"),d=JSON.parse(b.readFileSync(c,"utf8"));return{name:d?.name||null,version:d?.version||null}}catch{return null}}function z(a,b=f){return y(a,b)?.version||null}function A(a,b=f){try{return b.existsSync(h.join(a,i,"package.json"))}catch{return!1}}function B(a={},b=f){let c=String(a.version||"latest").replace(/^v(?=\d)/,""),d=/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/.test(c);if(!a.localArtifact){let b=a.packageSpec||`${i}@${c}`;return("latest"===c||d)&&b===`${i}@${c}`?{ok:!0,kind:"registry",packageSpec:b,expectedVersion:d?c:null}:{ok:!1,error:"Version must be 'latest' or an exact semantic version (for example 1.2.3)."}}if(!0!==a.allowLocalArtifact||!d)return{ok:!1,error:"Local artifacts require explicit opt-in and an exact expected version."};try{let d=h.resolve(String(a.localArtifact)),e=b.lstatSync(d);if(!e.isFile()||e.isSymbolicLink()||".tgz"!==h.extname(d))throw Error("Local artifact must be a regular .tgz file, not a directory or symlink.");let f=b.realpathSync(d);if(f!==d)throw Error("Local artifact path must already be canonical and contain no symlink components.");return{ok:!0,kind:"local-artifact",packageSpec:f,expectedVersion:c}}catch(a){return{ok:!1,error:a.message}}}function C(a={}){let b=m(),c=a.dependencies||{},d=c.fs||f,g=c.runNpm||o,t=c.resolveNpmForThisNode||n,u=c.getGlobalRoot||p,D=c.getGlobalBin||q,E=c.spawnSync||e,F=B(a,d);if(!F.ok)return{ok:!1,nodePath:process.execPath,npmPath:"",globalRoot:"",platform:b,error:F.error};let G=t(),H=u(G),I=D(G),J=A(H,d),K=J?z(H,d):null,L=null;if(J&&!a.externalRollback)try{L=v(H,I),k(`rollback snapshot: ${L.backupRoot}`)}catch(a){return{ok:!1,nodePath:process.execPath,npmPath:G,globalRoot:H,platform:b,version:K||void 0,error:`Refusing to update without a rollback snapshot: ${a.message}`}}k(`OS: ${b.label} (${process.platform}/${process.arch})`),k(`Node: ${process.version} @ ${process.execPath}`),k(`npm: ${G}`),k(`global root: ${H}`),k(`global bin: ${I}`),k(`installing: ${F.packageSpec}${K?` (was ${K})`:""}`);let M=!0===a.forceClean;M&&!J?(r(H),s(I)):M&&J&&l("forceClean requested but existing package kept until install succeeds (OOM-safe)");let N=["install","-g",F.packageSpec];"registry"===F.kind&&N.push("--prefer-online"),process.env.npm_config_registry||process.env.ZEVAI_NPM_REGISTRY&&N.push("--registry",process.env.ZEVAI_NPM_REGISTRY);let O=g(G,N,{timeout:6e5,stream:!0}),P=`${O.stderr}
|
|
2
2
|
${O.stdout}
|
|
3
3
|
${O.error||""}`;if(!O.ok&&/ENOTEMPTY|directory not empty|rename/i.test(P)){l("ENOTEMPTY/rename failed — force-clean and retry once");try{r(H),s(I),O=g(G,N,{timeout:6e5,stream:!0}),P=`${O.stderr}
|
|
4
4
|
${O.stdout}
|
|
@@ -58,4 +58,4 @@ Done. Run: zevai --version`),d.zevaiPath&&console.log(`Binary: ${d.zevaiPath}`)
|
|
|
58
58
|
VPS has no display. Install a virtual screen then retry:
|
|
59
59
|
sudo apt-get update && sudo apt-get install -y xvfb
|
|
60
60
|
sudo systemctl restart zevairouter
|
|
61
|
-
ZevaiRouter auto-starts Xvfb when installed.`);throw c.code="NO_DISPLAY",c.cause=b,c}throw b}}async function K({engine:a=h,proxyUrl:b,headless:c=!1,windowSize:d=null,requireProxyGeoip:e=!1,timeoutMs:f=m}={}){return r(a),w(J({proxyUrl:b,headless:!0===c,windowSize:d,requireProxyGeoip:e}),{timeoutMs:f,message:`CloakBrowser launch timed out after ${Math.round(f/1e3)}s`,code:"BROWSER_LAUNCH_TIMEOUT",onLateResolve:a=>M(a)})}function L({engine:a,proxyUrl:b,headless:c=!1,windowSize:d=null}={}){return()=>K({engine:a,proxyUrl:b,headless:c,windowSize:d})}async function M(a,{timeoutMs:b=4e3}={}){if(!a)return;let c=G(a),d=Number(c?.pid),e=Number.isFinite(d)&&d>1?d:null;try{await w(Promise.resolve().then(()=>a.close()),{timeoutMs:b,message:`Browser close timed out after ${b}ms`,code:"BROWSER_CLOSE_TIMEOUT"})}catch{}let f=()=>{if(!c||null!=c.exitCode||null!=c.signalCode)return!1;if(!e)return!0;try{return process.kill(e,0),!0}catch{return!1}};if(c&&f()){let a=a=>{if(e&&"win32"!==process.platform)try{process.kill(-e,a)}catch{}try{"function"==typeof c.kill?c.kill(a):e&&process.kill(e,a)}catch{}};a("SIGTERM"),await new Promise(a=>setTimeout(a,400)),f()&&a("SIGKILL")}}},77897:(a,b,c)=>{let d=c(33873),e=c(29021);process.env.NPM_CONFIG_FUND="false",process.env.NPM_CONFIG_AUDIT="false",process.env.NPM_CONFIG_UPDATE_NOTIFIER="false",process.env.NPM_CONFIG_LOGLEVEL=process.env.NPM_CONFIG_LOGLEVEL||"error";let{ensureSqliteRuntime:f,runNpmInstall:g,getRuntimeDir:h}=c(24344),{ensureTrayRuntime:i}=c(52784),{ensureCloakbrowserRuntime:j}=c(99436),{
|
|
61
|
+
ZevaiRouter auto-starts Xvfb when installed.`);throw c.code="NO_DISPLAY",c.cause=b,c}throw b}}async function K({engine:a=h,proxyUrl:b,headless:c=!1,windowSize:d=null,requireProxyGeoip:e=!1,timeoutMs:f=m}={}){return r(a),w(J({proxyUrl:b,headless:!0===c,windowSize:d,requireProxyGeoip:e}),{timeoutMs:f,message:`CloakBrowser launch timed out after ${Math.round(f/1e3)}s`,code:"BROWSER_LAUNCH_TIMEOUT",onLateResolve:a=>M(a)})}function L({engine:a,proxyUrl:b,headless:c=!1,windowSize:d=null}={}){return()=>K({engine:a,proxyUrl:b,headless:c,windowSize:d})}async function M(a,{timeoutMs:b=4e3}={}){if(!a)return;let c=G(a),d=Number(c?.pid),e=Number.isFinite(d)&&d>1?d:null;try{await w(Promise.resolve().then(()=>a.close()),{timeoutMs:b,message:`Browser close timed out after ${b}ms`,code:"BROWSER_CLOSE_TIMEOUT"})}catch{}let f=()=>{if(!c||null!=c.exitCode||null!=c.signalCode)return!1;if(!e)return!0;try{return process.kill(e,0),!0}catch{return!1}};if(c&&f()){let a=a=>{if(e&&"win32"!==process.platform)try{process.kill(-e,a)}catch{}try{"function"==typeof c.kill?c.kill(a):e&&process.kill(e,a)}catch{}};a("SIGTERM"),await new Promise(a=>setTimeout(a,400)),f()&&a("SIGKILL")}}},77897:(a,b,c)=>{let d=c(33873),e=c(29021);process.env.NPM_CONFIG_FUND="false",process.env.NPM_CONFIG_AUDIT="false",process.env.NPM_CONFIG_UPDATE_NOTIFIER="false",process.env.NPM_CONFIG_LOGLEVEL=process.env.NPM_CONFIG_LOGLEVEL||"error";let{ensureSqliteRuntime:f,runNpmInstall:g,getRuntimeDir:h}=c(24344),{ensureTrayRuntime:i}=c(52784),{ensureCloakbrowserRuntime:j}=c(99436),{hasBuiltInNodeSqlite:k}=c(83445),l=String(process.env.ZEVAI_MINIMAL_POSTINSTALL||"").toLowerCase(),m="0"!==l&&"false"!==l,n="1"===process.env.ZEVAI_SKIP_RUNTIME_POSTINSTALL||"true"===process.env.ZEVAI_SKIP_RUNTIME_POSTINSTALL;function o(a){console.log(`[zevai] ${a}`)}function p(a){console.warn(`[zevai] ${a}`)}(async function(){if(n)return void o("Runtime warm-up skipped by ZEVAI_SKIP_RUNTIME_POSTINSTALL");if(o(m?"Minimal postinstall (ZEVAI_MINIMAL_POSTINSTALL=1) — browsers install on first use":"Preparing full runtime so all features work after this install…"),k())o("✓ Built-in node:sqlite engine ready");else try{f({silent:!0}).betterSqlite?o("✓ SQLite native engine ready"):p("SQLite native engine unavailable — the bundled sql.js fallback will be used")}catch(a){p(`SQLite native warm-up skipped: ${a.message} — the bundled fallback remains available`)}try{let a=i({silent:!0});a.systray||a.skipped?o(a.skipped?"\xb7 Native tray helper not required on Windows":"✓ System tray helper ready"):p("System tray helper unavailable — start with `zevai` in the terminal")}catch(a){p(`Tray warm-up skipped: ${a.message}`)}if(m)return void o("Done (minimal). Automation downloads CloakBrowser on first use.");try{let a=j({silent:!0});if(a.ok)if("function"!=typeof a.module?.ensureBinary)p("CloakBrowser package is installed but ensureBinary() is unavailable");else{let b=await a.module.ensureBinary();if(!b||!e.existsSync(b))throw Error("binary download completed without an executable path");o(`✓ CloakBrowser binary ready (${b})`),function(){try{let{getRuntimeNodeModules:a}=c(24344),b=a(),f=d.join(__dirname,"..","app","node_modules");if(!e.existsSync(d.join(f,"next")))return;for(let a of["playwright-core","cloakbrowser","mmdb-lib"]){let c=d.join(b,a),g=d.join(f,a);e.existsSync(d.join(c,"package.json"))&&(e.existsSync(g)&&e.rmSync(g,{recursive:!0,force:!0}),e.cpSync(c,g,{recursive:!0}))}o("CloakBrowser runtime linked into app bundle")}catch{}}()}else p(`CloakBrowser packages unavailable: ${a.error?.message||a.reason||"unknown"}`)}catch(a){p(`CloakBrowser binary warm-up failed: ${a.message}. Automation will retry on first use.`)}try{let a=function(){if("win32"===process.platform)return{ok:!0,skipped:"windows uses pipe shell"};try{return c(Object(function(){var a=Error("Cannot find module 'node-pty'");throw a.code="MODULE_NOT_FOUND",a}())),{ok:!0,already:!0}}catch{}return g({cwd:h(),pkgs:["node-pty@^1.1.0"],timeout:3e5}).ok?{ok:!0}:{ok:!1,reason:"native build failed (terminal still works via python PTY / pipe)"}}();a.ok?o(a.already?"✓ node-pty already available":"✓ node-pty ready (web terminal)"):a.skipped?o(`\xb7 node-pty skipped (${a.skipped})`):p(`node-pty skipped: ${a.reason||"unknown"} — terminal still works`)}catch(a){p(`node-pty skipped: ${a.message}`)}o("Runtime warm-up finished. Start with: zevai")})().catch(a=>{console.error(`[zevai] postinstall failed: ${a.stack||a.message}`),process.exitCode=1})},83445:(a,b,c)=>{"use strict";let{builtinModules:d}=c(98995);function e(a=d){return a.includes("node:sqlite")||a.includes("sqlite")}a.exports={hasBuiltInNodeSqlite:e,prepareStartupRuntime:function({trayMode:a=!1,modules:b=d,loadSqliteRuntime:f=()=>c(24344),loadTrayRuntime:g=()=>c(52784)}={}){let h=f();if(!e(b))try{h.ensureSqliteRuntime({silent:!0})}catch{}if(a)try{g().ensureTrayRuntime({silent:!0})}catch{}return{buildEnvWithRuntime:h.buildEnvWithRuntime}}}},99436:(a,b,c)=>{"use strict";let{createRequire:d}=c(8086),e=c(29021),f=c(33873),{runNpmInstall:g,getRuntimeDir:h,getRuntimeNodeModules:i,summarizeNpmError:j,buildEnvWithRuntime:k}=c(24344),l="cloakbrowser",m="^0.5.2",n="mmdb-lib",o="^3.0.2",p="playwright-core",q="^1.54.2",r="function"==typeof require?require:c(51029);function s(){try{let a=f.join(h(),"noop.js");return d(a)}catch{return null}}let t=null;function u(a){return e.existsSync(f.join(i(),a,"package.json"))}function v(a){let b=String(a||"").trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/);return b?{major:Number.parseInt(b[1],10),minor:Number.parseInt(b[2],10),patch:Number.parseInt(b[3],10),prerelease:b[4]?b[4].split("."):[]}:null}function w(a,b){for(let c of["major","minor","patch"])if(a[c]!==b[c])return a[c]<b[c]?-1:1;return function(a,b){if(0===a.length&&0===b.length)return 0;if(0===a.length)return 1;if(0===b.length)return -1;let c=Math.max(a.length,b.length);for(let d=0;d<c;d+=1){if(void 0===a[d])return -1;if(void 0===b[d])return 1;if(a[d]===b[d])continue;let c=/^\d+$/.test(a[d]),e=/^\d+$/.test(b[d]);if(c&&e)return Number.parseInt(a[d],10)<Number.parseInt(b[d],10)?-1:1;if(c!==e)return c?-1:1;return a[d]<b[d]?-1:1}return 0}(a.prerelease,b.prerelease)}function x(a,b){let c,d=v(a),e=String(b||"").trim().match(/^\^\s*(.+)$/),f=v(e?.[1]);return!!d&&!!f&&(!(d.prerelease.length>0)||0!==f.prerelease.length)&&(c=f.major>0?{major:f.major+1,minor:0,patch:0,prerelease:[]}:f.minor>0?{major:0,minor:f.minor+1,patch:0,prerelease:[]}:{major:0,minor:0,patch:f.patch+1,prerelease:[]},w(d,f)>=0&&0>w(d,c))}function y(a){try{let b=JSON.parse(e.readFileSync(f.join(i(),a,"package.json"),"utf8"));return"string"==typeof b.version?b.version:null}catch{return null}}function z(a,b){return!!a?.launch&&x(b,m)}function A(){try{let a=s(),b=f.join(i(),l);if(a&&e.existsSync(f.join(b,"package.json")))return a(b)}catch{}try{return r(l)}catch{}try{let a=f.join(i(),l);if(e.existsSync(f.join(a,"package.json")))return r(a)}catch{}return null}function B(){try{let a=s(),b=f.join(i(),n);if(a&&e.existsSync(f.join(b,"package.json")))return a(b)}catch{}try{return r(n)}catch{}return null}a.exports={ensureCloakbrowserRuntime:function({silent:a=!1}={}){let b=y(l);if(t?.ok&&z(t.module,b)&&B()&&u(p))return t;try{let a=k(process.env);if(a.NODE_PATH&&!process.env.NODE_PATH?.includes(i())){process.env.NODE_PATH=a.NODE_PATH;try{c(8086).Module._initPaths()}catch{}}}catch{}let d=A(),e=!z(d,b),r=!B()&&!u(n),s=!u(p);if(e||r||s){let b=[];e&&b.push(`${l}@${m}`),r&&b.push(`${n}@${o}`),s&&b.push(`${p}@${q}`),a||console.log(`[cloakbrowser] Installing ${b.join(", ")} into runtime…`);let d=g({cwd:h(),pkgs:b,timeout:3e5});if(!d.ok){let a=j(d.stderr||d.stdout||""),c=Error(`Failed to install ${b.join(", ")}. On the host run: cd "${h()}" && npm install ${b.join(" ")} — ${a}`);return c.code="CLOAKBROWSER_INSTALL_FAILED",{ok:!1,error:c}}e&&function(a){let b=`${f.join(i(),a)}${f.sep}`;for(let a of Object.keys(c.c))a.startsWith(b)&&delete c.c[a]}(l)}if(d=A(),b=y(l),!d?.launch){let a=Error(`cloakbrowser installed but launch() is missing. Reinstall: cd "${h()}" && npm install ${l}@${m} ${n}@${o} ${p}@${q}`);return a.code="CLOAKBROWSER_API_MISMATCH",{ok:!1,error:a}}if(!x(b,m)){let a=Error(`cloakbrowser version mismatch: installed ${b||"unknown"}, required ${m}. Reinstall: cd "${h()}" && npm install ${l}@${m}`);return a.code="CLOAKBROWSER_VERSION_MISMATCH",{ok:!1,error:a}}if(!B()&&!u(n)){let a=Error(`mmdb-lib is required for geoip: true. Install: cd "${h()}" && npm install ${n}@${o}`);return a.code="MMDB_MISSING",{ok:!1,error:a}}return t={ok:!0,module:d,version:b}},loadCloakbrowserModule:function(){return A()},CLOAKBROWSER_PACKAGE:l,CLOAKBROWSER_VERSION:m,MMDB_PACKAGE:n,MMDB_VERSION:o,PLAYWRIGHT_CORE_PACKAGE:p,PLAYWRIGHT_CORE_VERSION:q,__test__:{parseSemver:v,compareSemver:w,satisfiesCaretRange:x,isCloakbrowserRuntimeCompatible:z}}}};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"use strict";exports.id=6182,exports.ids=[6182],exports.modules={8578:(a,b,c)=>{let d=c(33873),e=c(29021),f=c(15296),{MITM_DIR:g}=c(82193),h=d.join(g,"rootCA.key"),i=d.join(g,"rootCA.crt");function j(a){try{let b=f.pki.certificateFromPem(e.readFileSync(a,"utf8")),c=new Date(Date.now()+2592e6);return b.validity.notAfter<c}catch{return!0}}a.exports={generateRootCA:async function a(){let a=e.existsSync(h)&&e.existsSync(i);if(a&&!j(i))return console.log("✅ Root CA already exists"),{key:h,cert:i};if(a){console.log("\uD83D\uDD10 Root CA expired or expiring soon — regenerating...");try{e.unlinkSync(h)}catch{}try{e.unlinkSync(i)}catch{}}e.existsSync(g)||e.mkdirSync(g,{recursive:!0}),console.log("\uD83D\uDD10 Generating Root CA certificate...");let b=f.pki.rsa.generateKeyPair(2048),c=f.pki.createCertificate();c.publicKey=b.publicKey,c.serialNumber="01",c.validity.notBefore=new Date,c.validity.notAfter=new Date,c.validity.notAfter.setFullYear(c.validity.notBefore.getFullYear()+10);let d=[{name:"commonName",value:"ZevaiRouter MITM Root CA"},{name:"organizationName",value:"ZevaiRouter"},{name:"countryName",value:"US"}];c.setSubject(d),c.setIssuer(d),c.setExtensions([{name:"basicConstraints",cA:!0,critical:!0},{name:"keyUsage",keyCertSign:!0,cRLSign:!0,critical:!0},{name:"subjectKeyIdentifier"}]),c.sign(b.privateKey,f.md.sha256.create());let
|
|
1
|
+
"use strict";exports.id=6182,exports.ids=[6182],exports.modules={8578:(a,b,c)=>{let d=c(33873),e=c(29021),f=c(15296),{MITM_DIR:g}=c(82193),h=d.join(g,"rootCA.key"),i=d.join(g,"rootCA.crt");function j(a){try{let b=f.pki.certificateFromPem(e.readFileSync(a,"utf8")),c=new Date(Date.now()+2592e6);return b.validity.notAfter<c}catch{return!0}}function k(){if("win32"!==process.platform){try{e.chmodSync(g,448)}catch{}try{e.chmodSync(h,384)}catch{}}}a.exports={generateRootCA:async function a(){let a=e.existsSync(h)&&e.existsSync(i);if(a&&!j(i))return k(),console.log("✅ Root CA already exists"),{key:h,cert:i};if(a){console.log("\uD83D\uDD10 Root CA expired or expiring soon — regenerating...");try{e.unlinkSync(h)}catch{}try{e.unlinkSync(i)}catch{}}e.existsSync(g)||e.mkdirSync(g,{recursive:!0,mode:448}),console.log("\uD83D\uDD10 Generating Root CA certificate...");let b=f.pki.rsa.generateKeyPair(2048),c=f.pki.createCertificate();c.publicKey=b.publicKey,c.serialNumber="01",c.validity.notBefore=new Date,c.validity.notAfter=new Date,c.validity.notAfter.setFullYear(c.validity.notBefore.getFullYear()+10);let d=[{name:"commonName",value:"ZevaiRouter MITM Root CA"},{name:"organizationName",value:"ZevaiRouter"},{name:"countryName",value:"US"}];c.setSubject(d),c.setIssuer(d),c.setExtensions([{name:"basicConstraints",cA:!0,critical:!0},{name:"keyUsage",keyCertSign:!0,cRLSign:!0,critical:!0},{name:"subjectKeyIdentifier"}]),c.sign(b.privateKey,f.md.sha256.create());let l=f.pki.privateKeyToPem(b.privateKey),m=f.pki.certificateToPem(c);return e.writeFileSync(h,l,{mode:384}),e.writeFileSync(i,m),k(),console.log("✅ Root CA generated successfully"),{key:h,cert:i}},loadRootCA:function(){if(!e.existsSync(h)||!e.existsSync(i))throw Error("Root CA not found. Generate it first.");let a=e.readFileSync(h,"utf8"),b=e.readFileSync(i,"utf8");return{key:f.pki.privateKeyFromPem(a),cert:f.pki.certificateFromPem(b)}},generateLeafCert:function(a,b){let c=f.pki.rsa.generateKeyPair(2048),d=f.pki.createCertificate();return d.publicKey=c.publicKey,d.serialNumber=Math.floor(1e6*Math.random()).toString(),d.validity.notBefore=new Date,d.validity.notAfter=new Date,d.validity.notAfter.setFullYear(d.validity.notBefore.getFullYear()+1),d.setSubject([{name:"commonName",value:a}]),d.setIssuer(b.cert.subject.attributes),d.setExtensions([{name:"basicConstraints",cA:!1},{name:"keyUsage",digitalSignature:!0,keyEncipherment:!0},{name:"extKeyUsage",serverAuth:!0,clientAuth:!0},{name:"subjectAltName",altNames:[{type:2,value:a},{type:2,value:`*.${a}`}]}]),d.sign(b.key,f.md.sha256.create()),{key:f.pki.privateKeyToPem(c.privateKey),cert:f.pki.certificateToPem(d)}},isCertExpired:j,ROOT_CA_CERT_PATH:i,ROOT_CA_KEY_PATH:h}},9631:(a,b,c)=>{let d=c(29021),e=c(55511),{exec:f}=c(79646),{execWithPassword:g,isSudoAvailable:h}=c(66936),{runElevatedPowerShell:i,quotePs:j}=c(64809),{log:k,err:l}=c(87777),m="win32"===process.platform,n="darwin"===process.platform,o=[{dir:"/usr/local/share/ca-certificates",cmd:"update-ca-certificates"},{dir:"/etc/ca-certificates/trust-source/anchors",cmd:"update-ca-trust"},{dir:"/etc/pki/ca-trust/source/anchors",cmd:"update-ca-trust"},{dir:"/etc/pki/trust/anchors",cmd:"update-ca-certificates"}];function p(){for(let a of o)if(d.existsSync(a.dir))return a;return o[0]}let q="ZevaiRouter MITM Root CA";function r(a){let b=d.readFileSync(a,"utf-8"),c=Buffer.from(b.replace(/-----[^-]+-----/g,"").replace(/\s/g,""),"base64");return e.createHash("sha1").update(c).digest("hex").toUpperCase().match(/.{2}/g).join(":")}async function s(a){var b,c;return m?(b=a,new Promise(a=>{let c;try{c=r(b).replace(/:/g,"")}catch{return a(!1)}f(`certutil -store Root ${c}`,{windowsHide:!0},b=>{a(!b)})})):n?(c=a,new Promise(a=>{try{let b=r(c).replace(/:/g,"");f(`security find-certificate -a -c "${q}" -Z /Library/Keychains/System.keychain 2>/dev/null`,{windowsHide:!0},(d,e)=>{if(d||!e||!RegExp(`SHA-1 hash:\\s*${b}`,"i").test(e))return a(!1);f(`security verify-cert -c "${c}" -p ssl -k /Library/Keychains/System.keychain 2>/dev/null`,{windowsHide:!0},b=>{a(!b)})})}catch{a(!1)}})):function(a){try{return Promise.resolve(r(x())===r(a))}catch{return Promise.resolve(!1)}}(a)}async function t(a,b){let c,d=[q,(c=Buffer.from("OQ==","base64").toString("ascii"),`${c}Router MITM Root CA`)].map(a=>`security delete-certificate -c "${a}" /Library/Keychains/System.keychain 2>/dev/null || true`).join(" && "),e=`security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "${b}"`;try{await g(`${d} && ${e}`,a),k("\uD83D\uDD10 Cert: ✅ installed to system keychain")}catch(a){throw Error(a.message?.includes("canceled")?"User canceled authorization":"Certificate install failed")}}async function u(a){let b=`
|
|
2
2
|
certutil -delstore Root ${j(q)} 2>$null | Out-Null
|
|
3
3
|
$exit = & certutil -addstore Root ${j(a)} 2>&1
|
|
4
4
|
if ($LASTEXITCODE -ne 0) { throw "certutil exit $LASTEXITCODE" }
|
|
5
|
-
`;try{await i(b),k("\uD83D\uDD10 Cert: ✅ installed to Windows Root store")}catch(a){throw Error(`Failed to install certificate: ${a.message}`)}}async function v(a,b){let c=r(b).replace(/:/g,""),d=`security delete-certificate -Z "${c}" /Library/Keychains/System.keychain`;try{await g(d,a),k("\uD83D\uDD10 Cert: ✅ uninstalled from system keychain")}catch(a){throw Error("Failed to uninstall certificate")}}async function w(){let a=`certutil -delstore Root ${j(q)}`;try{await i(a),k("\uD83D\uDD10 Cert: ✅ uninstalled from Windows Root store")}catch(a){throw Error(`Failed to uninstall certificate: ${a.message}`)}}async function
|
|
5
|
+
`;try{await i(b),k("\uD83D\uDD10 Cert: ✅ installed to Windows Root store")}catch(a){throw Error(`Failed to install certificate: ${a.message}`)}}async function v(a,b){let c=r(b).replace(/:/g,""),d=`security delete-certificate -Z "${c}" /Library/Keychains/System.keychain`;try{await g(d,a),k("\uD83D\uDD10 Cert: ✅ uninstalled from system keychain")}catch(a){throw Error("Failed to uninstall certificate")}}async function w(){let a=`certutil -delstore Root ${j(q)}`;try{await i(a),k("\uD83D\uDD10 Cert: ✅ uninstalled from Windows Root store")}catch(a){throw Error(`Failed to uninstall certificate: ${a.message}`)}}function x(){return`${p().dir}/zevai-root-ca.crt`}async function y(a,b="add"){let c="ZevaiRouter MITM Root CA",d=`
|
|
6
6
|
if ! command -v certutil &> /dev/null; then
|
|
7
7
|
exit 0
|
|
8
8
|
fi
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
fi
|
|
37
37
|
fi
|
|
38
38
|
done
|
|
39
|
-
`;return new Promise(a=>{f(d,{shell:"/bin/bash"},()=>a())})}async function y(a,b){if(!h()){k(`🔐 Cert: cannot install to system store without sudo — trust this file on clients: ${b}`),await x(b,"add");return}let c=p(),d=`${c.dir}/zevai-root-ca.crt`,e=`cp "${b}" "${d}" && (${c.cmd} 2>/dev/null || true)`;try{await g(e,a),await x(b,"add"),k(`🔐 Cert: ✅ installed to Linux trust store (${c.dir}) and user browser databases`)}catch(a){throw Error(`Certificate install failed: ${a.message}`)}}async function z(a){if(await x(null,"delete"),!h())return;let b=p(),c=`${b.dir}/zevai-root-ca.crt`,d=`rm -f "${c}" && (${b.cmd} 2>/dev/null || true)`;try{await g(d,a),k("\uD83D\uDD10 Cert: ✅ uninstalled from Linux trust store and user browser databases")}catch(a){throw Error("Failed to uninstall certificate")}}a.exports={installCert:async function a(a,b){if(!d.existsSync(b))throw Error(`Certificate file not found: ${b}`);await s(b)?k("\uD83D\uDD10 Cert: already trusted ✅"):m?await u(b):n?await t(a,b):await y(a,b)},uninstallCert:async function a(a,b){await s(b)?m?await w():n?await v(a,b):await z(a):k("\uD83D\uDD10 Cert: not found in system store")},checkCertInstalled:s}},26033:(a,b,c)=>{c(33873),c(29021);let{MITM_DIR:d}=c(82193),{generateRootCA:e,loadRootCA:f,generateLeafCert:g}=c(8578);a.exports={generateCert:async function a(){return await e()},getCertForDomain:function(a){try{let b=f(),c=g(a,b);return{key:c.key,cert:c.cert}}catch(b){return console.error(`Failed to generate cert for ${a}:`,b.message),null}}}},96182:(a,b,c)=>{let{exec:d,spawn:e,execSync:f}=c(79646),g=c(33873),h=c(29021),i=c(21820),j=c(91645),k=c(55591),l=c(55511),{addDNSEntry:m,removeDNSEntry:n,removeAllDNSEntries:o,removeAllDNSEntriesSync:p,checkAllDNSStatus:q,TOOL_HOSTS:r,isSudoAvailable:s,isSudoPasswordRequired:t}=c(66936),{isAdmin:u}=c(64809),v="win32"===process.platform,w="darwin"===process.platform,{generateCert:x}=c(26033),{installCert:y,uninstallCert:z}=c(9631),{isCertExpired:A}=c(8578),{DATA_DIR:B,MITM_DIR:C}=c(82193),{log:D,err:E}=c(87777),{LSOF_BIN:F}=c(17511),{isProcessAlive:G,writePidFile:H,resolveVerifiedPid:I,removePidFile:J}=c(15754),K="http://localhost:1997";function L(a){return null==a||""===a?"''":`'${String(a).replace(/'/g,"'\\''")}'`}async function M(){if(!ai)return K;try{let a=await ai(),b=a&&null!=a.mitmRouterBaseUrl?String(a.mitmRouterBaseUrl).trim():"";if(!b)return K;let c=new URL(b);if("http:"!==c.protocol&&"https:"!==c.protocol)return K;return b.replace(/\/+$/,"")}catch{return K}}let N=g.join(C,".mitm.pid"),O=[5e3,1e4,2e4,3e4,6e4],P=0,Q=0,R=!1,S=0,T=!1,U=new WeakSet;function V({isCurrent:a,intentional:b,code:c,restarting:d}){return a?b?{clearState:!0,restart:!1}:{clearState:!0,restart:0!==c&&!d}:{clearState:!1,restart:!1}}function W(){if(process.env.MITM_SERVER_PATH)return process.env.MITM_SERVER_PATH;let a=g.join(__dirname,"server.js");if(h.existsSync(a))return a;let b=g.join(process.cwd(),"src","mitm","server.js");if(h.existsSync(b))return b;let c=g.join(process.cwd(),"..","src","mitm","server.js");return h.existsSync(c)?c:b}function X(a){try{if(!a||!h.existsSync(a)||!a.includes(`${g.sep}node_modules${g.sep}`))return a;let b=g.join(B,"runtime","mitm"),c=g.join(b,"server.js");if(h.existsSync(c))try{let b=h.statSync(a),d=h.statSync(c);if(b.size===d.size&&d.mtimeMs>=b.mtimeMs)return c}catch{}return h.mkdirSync(b,{recursive:!0}),h.copyFileSync(a,c),c}catch(b){try{D(`[MITM] runtime copy failed: ${b.message}`)}catch{}return a}}let Y=X(W()),Z="aes-256-gcm",$="zevai-mitm-pwd",_=String.fromCharCode(57,114,111,117,116,101,114)+"-mitm-pwd",aa=null,ab=null;function ac(){return globalThis.__mitmSudoPassword||null}function ad(a){globalThis.__mitmSudoPassword=a}let ae=/(mitm[\\/]server\.js|mitm[\\/]+server\b)/i;function af({dropStalePidFile:a=!0}={}){let b=I(N,{commandPattern:ae});return!b.pid&&b.pidFileStale&&a&&("pid_recycled"===b.reason&&D(`⚠️ Ignoring recycled PID in ${N} — not the MITM server; leaving it alone`),J(N)),b}function ag(a,b=!1,e=null){if(v)d(`taskkill ${b?"/F ":""}/PID ${a}`,{windowsHide:!0},()=>{});else{let f=b?"KILL":"TERM",g=`pkill -${f} -P ${a} 2>/dev/null; kill -${f} ${a} 2>/dev/null`;if(e||s()){let{execWithPassword:a}=c(66936);a(g,e||"").catch(()=>d(g,{windowsHide:!0},()=>{}))}else d(g,{windowsHide:!0},()=>{})}}function ah(a=$){try{let{machineIdSync:b}=c(19713),d=b();return l.createHash("sha256").update(d+a).digest()}catch{return l.createHash("sha256").update(a).digest()}}let ai=null,aj=null;async function ak(a,b){if(aj)try{let c,d,e,f,g,h={mitmEnabled:a};b&&(c=ah($),d=l.randomBytes(12),e=l.createCipheriv(Z,c,d),f=Buffer.concat([e.update(b,"utf8"),e.final()]),g=e.getAuthTag(),h.mitmSudoEncrypted=`${d.toString("hex")}:${g.toString("hex")}:${f.toString("hex")}`),await aj(h)}catch(a){E(`Failed to save settings: ${a.message}`)}}async function al(){if(aj)try{await aj({mitmSudoEncrypted:null})}catch(a){E(`Failed to clear encrypted password: ${a.message}`)}}async function am(){if(!ai)return null;try{var a;let b,c=await ai();if(!c.mitmSudoEncrypted)return null;return a=c.mitmSudoEncrypted,(b=b=>{try{let[c,d,e]=a.split(":");if(!c||!d||!e)return null;let f=ah(b),g=l.createDecipheriv(Z,f,Buffer.from(c,"hex"));return g.setAuthTag(Buffer.from(d,"hex")),Buffer.concat([g.update(Buffer.from(e,"hex")),g.final()]).toString("utf8")}catch{return null}})($)||b(_)}catch{return null}}async function an(a,b){if(aj&&ai)try{let c={...(await ai()).dnsToolEnabled||{},[a]:b};await aj({dnsToolEnabled:c})}catch(a){E(`Failed to save DNS state: ${a.message}`)}}async function ao(){if(!ai)return{};try{return(await ai()).dnsToolEnabled||{}}catch{return{}}}async function ap(a){let b=await ao(),c=a||ac()||await am();for(let[a,d]of Object.entries(b))if(d&&r[a])try{await m(a,c)}catch(b){E(`DNS ${a}: restore failed — ${b.message}`)}}async function aq(){return v?u():!(!u()&&t())||!!(ac()||await am())}function ar(a){return new Promise(a=>{v?d('powershell -NonInteractive -WindowStyle Hidden -Command "$c = Get-NetTCPConnection -LocalPort 443 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1; if ($c) { $c.OwningProcess } else { 0 }"',{windowsHide:!0},(b,c)=>{if(b)return a(null);let e=parseInt(c.trim(),10);if(!e||e<=4)return a(null);d(`tasklist /FI "PID eq ${e}" /FO CSV /NH`,{windowsHide:!0},(b,c)=>{let d=c?.match(/"([^"]+)"/);a({pid:e,name:d?d[1]:"unknown"})})}):d(`${F} -nP -iTCP:443 -sTCP:LISTEN -t`,{windowsHide:!0},(b,c)=>{if(b||!c?.trim())return a(null);let e=parseInt(c.trim().split("\n")[0],10);if(!e||isNaN(e))return a(null);d(`ps -p ${e} -o comm=`,{windowsHide:!0},(b,c)=>{a({pid:e,name:c?.trim()||"unknown"})})})})}async function as(a){if(aa&&!aa.killed){U.add(aa);try{aa.kill("SIGKILL")}catch{}aa=null,ab=null}try{let{pid:b}=af({dropStalePidFile:!1});b&&(ag(b,!0,a),await new Promise(a=>setTimeout(a,500))),J(N)}catch{}if(!v&&Y)try{let b=L(Y);if(a||s()){let{execWithPassword:d}=c(66936);await d(`pkill -SIGKILL -f ${b} 2>/dev/null || true`,a||"").catch(()=>{})}else d(`pkill -SIGKILL -f ${b} 2>/dev/null || true`,{windowsHide:!0},()=>{});await new Promise(a=>setTimeout(a,500))}catch{}}function at(a,b=443){return new Promise(c=>{let d=Date.now()+a,e=!1,f=null,g=null,h=a=>{if(!e){if(e=!0,clearTimeout(f),clearTimeout(i),g)try{g.destroy()}catch{}c(a)}},i=setTimeout(()=>h(null),a),j=()=>{if(e)return;let a=d-Date.now();if(a<=0)return h(null);f=setTimeout(l,Math.min(500,a))},l=()=>{if(e)return;let a=k.request({hostname:"127.0.0.1",port:b,path:"/_mitm_health",method:"GET",rejectUnauthorized:!1,timeout:Math.max(500,Math.min(2e3,d-Date.now()))},a=>{let b="";a.on("data",a=>{b+=a}),a.on("end",()=>{let a=null;try{a=JSON.parse(b)}catch{}if(a?.ok===!0)return h({ok:!0,pid:a.pid||null});j()}),a.on("error",j)});g=a,a.on("timeout",()=>{try{a.destroy()}catch{}}),a.on("error",j),a.end()};l()})}async function au(){let a=null!==aa&&!aa.killed,b=ab;if(!a)try{let{pid:c}=af();c&&(a=!0,b=c)}catch{}let d=q(),e=g.join(C,"rootCA.crt"),f=h.existsSync(e),{checkCertInstalled:i}=c(9631),j=!!f&&await i(e);return{running:a,pid:b,certExists:f,certTrusted:j,dnsStatus:d}}function av({restarting:a,blocked:b,count:c,lastStartAt:d,lastAttemptAt:e,now:f,maxRestarts:g,resetMs:h,delays:i}){if(a||b)return{proceed:!1,reason:a?"in-flight":"blocked"};let j=(d||0)>(e||0)&&f-d>=h?0:c;return j>=g?{proceed:!1,reason:"exhausted",count:j}:{proceed:!0,count:j+1,delay:i[Math.min(j,i.length-1)]}}async function aw(a){let b=av({restarting:R,blocked:T,count:P,lastStartAt:Q,lastAttemptAt:S,now:Date.now(),maxRestarts:5,resetMs:6e4,delays:O});if(!b.proceed)return void("exhausted"===b.reason?E("Max restart attempts reached. Giving up."):"blocked"===b.reason&&E("Auto-restart blocked: sudo password was rejected. Restart MITM from the dashboard."));P=b.count,S=Date.now(),R=!0;let c=!1;D(`Restarting in ${b.delay/1e3}s... (${P}/5)`),await new Promise(a=>setTimeout(a,b.delay));try{let b=ai?await ai():null;if(b&&!b.mitmEnabled)return void D("MITM disabled, skipping restart");let c=ac()||await am();if(!c&&!v)return void E("No cached password, cannot auto-restart");await ay(a,c),D("\uD83D\uDD04 Restarted successfully"),P=0}catch(a){E(`Restart attempt ${P}/5 failed: ${a.message}`),c=!0}finally{R=!1}c&&aw(a)}async function ax(a,b){if(a&&a.pid){if(v)try{f(`powershell -NonInteractive -WindowStyle Hidden -Command "Stop-Process -Id ${a.pid} -Force -ErrorAction SilentlyContinue"`,{windowsHide:!0})}catch{}else try{let{execWithPassword:d}=c(66936);b||s()?await d(`kill -9 ${a.pid}`,b||""):f(`kill -9 ${a.pid}`,{windowsHide:!0})}catch{}await new Promise(a=>setTimeout(a,800))}}async function ay(a,b,k=!1){if(!aa||aa.killed)try{let{pid:a}=af();if(a)return ab=a,D(`♻️ Reusing existing process (PID: ${a})`),await ak(!0,b),b&&ad(b),{running:!0,pid:a}}catch{}if(aa&&!aa.killed)throw Error("MITM server is already running");if(await as(b),!v){let a=await new Promise(a=>{let b=j.createServer();b.once("error",b=>{"EADDRINUSE"===b.code?a("in-use"):a("no-permission")}),b.once("listening",()=>{b.close(()=>a("free"))}),b.listen(443,"127.0.0.1")});if("in-use"===a||"no-permission"===a){let a=await ar(b);if(a){let c=a.name.includes("/")?a.name.split("/").filter(Boolean).pop():a.name;if(k)D(`Killing process on port 443 (PID ${a.pid}, name=${c})...`),await ax(a,b);else{let b=Error(`Port 443 is already in use by "${c}" (PID ${a.pid}).`);throw b.code="PORT_443_BUSY",b.portOwner={pid:a.pid,name:c},b}}}}let l=g.join(C,"rootCA.crt"),m=g.join(C,"rootCA.key"),n=h.existsSync(l)&&h.existsSync(m);if(!n||A(l)){if(n){D("\uD83D\uDD10 Cert expired — uninstalling old cert...");let a=b||ac()||await am();try{await z(a,l)}catch{}}D("\uD83D\uDD10 Generating Root CA..."),await x()}let{checkCertInstalled:o}=c(9631),p=await o(l),r=!v&&!w&&!s();if(p)D("\uD83D\uDD10 Cert: already trusted ✅");else{D("\uD83D\uDD10 Cert: not trusted → installing...");let a=b||ac()||await am();if(r)D(`🔐 Cert: skipping system trust (no sudo). Install ${l} as a trusted CA on machines that use this proxy.`);else{if(!a&&t())throw Error("Sudo password required to install Root CA certificate");try{await y(a,l),D("\uD83D\uDD10 Cert: ✅ trusted")}catch(a){throw Error(`Failed to trust certificate: ${a.message}`)}}}let u=Y;if((!u||!h.existsSync(u))&&(D(`[MITM] server.js missing at ${u} → recopying`),!(u=X(W()))||!h.existsSync(u)))throw Error(`MITM server.js not found at ${u}. Reinstall zevairouter.`);let B=await M();if(D(`🚀 Starting server... (router: ${B})`),v){let c=await ar(b);if(c)if(k)D(`Killing process on port 443 (PID ${c.pid}, name=${c.name})...`),await ax(c,b);else{let a=Error(`Port 443 is already in use by "${c.name}" (PID ${c.pid}).`);throw a.code="PORT_443_BUSY",a.portOwner={pid:c.pid,name:c.name},a}aa=e(process.execPath,[u],{detached:!1,windowsHide:!0,cwd:i.tmpdir(),stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:B}}),aj&&await aj({mitmCertInstalled:!0}).catch(()=>{})}else if(s()){(aa=e("sudo",["-S","-E","sh","-c",[`HOME=${L(i.homedir())}`,`ROUTER_API_KEY=${L(a)}`,`MITM_ROUTER_BASE=${L(B)}`,"NODE_ENV=production",L(process.execPath),L(u)].join(" ")],{detached:!1,windowsHide:!0,stdio:["pipe","pipe","pipe"]})).stdin.on("error",a=>{D(`[MITM] sudo stdin closed early: ${a.code||a.message}`)});try{aa.stdin.write(`${b}
|
|
39
|
+
`;return new Promise(a=>{f(d,{shell:"/bin/bash"},()=>a())})}async function z(a,b){if(!h()){k(`🔐 Cert: cannot install to system store without sudo — trust this file on clients: ${b}`),await y(b,"add");return}let c=p(),d=`${c.dir}/zevai-root-ca.crt`,e=`cp "${b}" "${d}" && (${c.cmd} 2>/dev/null || true)`;try{await g(e,a),await y(b,"add"),k(`🔐 Cert: ✅ installed to Linux trust store (${c.dir}) and user browser databases`)}catch(a){throw Error(`Certificate install failed: ${a.message}`)}}async function A(a){if(await y(null,"delete"),!h())return;let b=p(),c=`${b.dir}/zevai-root-ca.crt`,d=`rm -f "${c}" && (${b.cmd} 2>/dev/null || true)`;try{await g(d,a),k("\uD83D\uDD10 Cert: ✅ uninstalled from Linux trust store and user browser databases")}catch(a){throw Error("Failed to uninstall certificate")}}a.exports={installCert:async function a(a,b){if(!d.existsSync(b))throw Error(`Certificate file not found: ${b}`);await s(b)?k("\uD83D\uDD10 Cert: already trusted ✅"):m?await u(b):n?await t(a,b):await z(a,b)},uninstallCert:async function a(a,b){(m||n?await s(b):d.existsSync(x()))?m?await w():n?await v(a,b):await A(a):k("\uD83D\uDD10 Cert: not found in system store")},checkCertInstalled:s}},26033:(a,b,c)=>{c(33873),c(29021);let{MITM_DIR:d}=c(82193),{generateRootCA:e,loadRootCA:f,generateLeafCert:g}=c(8578);a.exports={generateCert:async function a(){return await e()},getCertForDomain:function(a){try{let b=f(),c=g(a,b);return{key:c.key,cert:c.cert}}catch(b){return console.error(`Failed to generate cert for ${a}:`,b.message),null}}}},96182:(a,b,c)=>{let{exec:d,spawn:e,execSync:f}=c(79646),g=c(33873),h=c(29021),i=c(21820),j=c(91645),k=c(55591),l=c(55511),{addDNSEntry:m,removeDNSEntry:n,removeAllDNSEntries:o,removeAllDNSEntriesSync:p,checkAllDNSStatus:q,TOOL_HOSTS:r,isSudoAvailable:s,isSudoPasswordRequired:t}=c(66936),{isAdmin:u}=c(64809),v="win32"===process.platform,w="darwin"===process.platform,{generateCert:x}=c(26033),{installCert:y,uninstallCert:z}=c(9631),{isCertExpired:A}=c(8578),{DATA_DIR:B,MITM_DIR:C}=c(82193),{log:D,err:E}=c(87777),{LSOF_BIN:F}=c(17511),{isProcessAlive:G,writePidFile:H,resolveVerifiedPid:I,removePidFile:J}=c(15754),K="http://localhost:1997";function L(a){return null==a||""===a?"''":`'${String(a).replace(/'/g,"'\\''")}'`}async function M(){if(!ai)return K;try{let a=await ai(),b=a&&null!=a.mitmRouterBaseUrl?String(a.mitmRouterBaseUrl).trim():"";if(!b)return K;let c=new URL(b);if("http:"!==c.protocol&&"https:"!==c.protocol)return K;return b.replace(/\/+$/,"")}catch{return K}}let N=g.join(C,".mitm.pid"),O=[5e3,1e4,2e4,3e4,6e4],P=0,Q=0,R=!1,S=0,T=!1,U=new WeakSet;function V({isCurrent:a,intentional:b,code:c,restarting:d}){return a?b?{clearState:!0,restart:!1}:{clearState:!0,restart:0!==c&&!d}:{clearState:!1,restart:!1}}function W(){if(process.env.MITM_SERVER_PATH)return process.env.MITM_SERVER_PATH;let a=g.join(__dirname,"server.js");if(h.existsSync(a))return a;let b=g.join(process.cwd(),"src","mitm","server.js");if(h.existsSync(b))return b;let c=g.join(process.cwd(),"..","src","mitm","server.js");return h.existsSync(c)?c:b}function X(a){try{if(!a||!h.existsSync(a)||!a.includes(`${g.sep}node_modules${g.sep}`))return a;let b=g.join(B,"runtime","mitm"),c=g.join(b,"server.js");if(h.existsSync(c))try{let b=h.statSync(a),d=h.statSync(c);if(b.size===d.size&&d.mtimeMs>=b.mtimeMs)return c}catch{}return h.mkdirSync(b,{recursive:!0}),h.copyFileSync(a,c),c}catch(b){try{D(`[MITM] runtime copy failed: ${b.message}`)}catch{}return a}}let Y=X(W()),Z="aes-256-gcm",$="zevai-mitm-pwd",_=String.fromCharCode(57,114,111,117,116,101,114)+"-mitm-pwd",aa=null,ab=null;function ac(){return globalThis.__mitmSudoPassword||null}function ad(a){globalThis.__mitmSudoPassword=a}let ae=/(mitm[\\/]server\.js|mitm[\\/]+server\b)/i;function af({dropStalePidFile:a=!0}={}){let b=I(N,{commandPattern:ae});return!b.pid&&b.pidFileStale&&a&&("pid_recycled"===b.reason&&D(`⚠️ Ignoring recycled PID in ${N} — not the MITM server; leaving it alone`),J(N)),b}function ag(a,b=!1,e=null){if(v)d(`taskkill ${b?"/F ":""}/PID ${a}`,{windowsHide:!0},()=>{});else{let f=b?"KILL":"TERM",g=`pkill -${f} -P ${a} 2>/dev/null; kill -${f} ${a} 2>/dev/null`;if(e||s()){let{execWithPassword:a}=c(66936);a(g,e||"").catch(()=>d(g,{windowsHide:!0},()=>{}))}else d(g,{windowsHide:!0},()=>{})}}function ah(a=$){try{let{machineIdSync:b}=c(19713),d=b();return l.createHash("sha256").update(d+a).digest()}catch{return l.createHash("sha256").update(a).digest()}}let ai=null,aj=null;async function ak(a,b){if(aj)try{let c,d,e,f,g,h={mitmEnabled:a};b&&(c=ah($),d=l.randomBytes(12),e=l.createCipheriv(Z,c,d),f=Buffer.concat([e.update(b,"utf8"),e.final()]),g=e.getAuthTag(),h.mitmSudoEncrypted=`${d.toString("hex")}:${g.toString("hex")}:${f.toString("hex")}`),await aj(h)}catch(a){E(`Failed to save settings: ${a.message}`)}}async function al(){if(aj)try{await aj({mitmSudoEncrypted:null})}catch(a){E(`Failed to clear encrypted password: ${a.message}`)}}async function am(){if(!ai)return null;try{var a;let b,c=await ai();if(!c.mitmSudoEncrypted)return null;return a=c.mitmSudoEncrypted,(b=b=>{try{let[c,d,e]=a.split(":");if(!c||!d||!e)return null;let f=ah(b),g=l.createDecipheriv(Z,f,Buffer.from(c,"hex"));return g.setAuthTag(Buffer.from(d,"hex")),Buffer.concat([g.update(Buffer.from(e,"hex")),g.final()]).toString("utf8")}catch{return null}})($)||b(_)}catch{return null}}async function an(a,b){if(aj&&ai)try{let c={...(await ai()).dnsToolEnabled||{},[a]:b};await aj({dnsToolEnabled:c})}catch(a){E(`Failed to save DNS state: ${a.message}`)}}async function ao(){if(!ai)return{};try{return(await ai()).dnsToolEnabled||{}}catch{return{}}}async function ap(a){let b=await ao(),c=a||ac()||await am();for(let[a,d]of Object.entries(b))if(d&&r[a])try{await m(a,c)}catch(b){E(`DNS ${a}: restore failed — ${b.message}`)}}async function aq(){return v?u():!(!u()&&t())||!!(ac()||await am())}function ar(a){return new Promise(a=>{v?d('powershell -NonInteractive -WindowStyle Hidden -Command "$c = Get-NetTCPConnection -LocalPort 443 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1; if ($c) { $c.OwningProcess } else { 0 }"',{windowsHide:!0},(b,c)=>{if(b)return a(null);let e=parseInt(c.trim(),10);if(!e||e<=4)return a(null);d(`tasklist /FI "PID eq ${e}" /FO CSV /NH`,{windowsHide:!0},(b,c)=>{let d=c?.match(/"([^"]+)"/);a({pid:e,name:d?d[1]:"unknown"})})}):d(`${F} -nP -iTCP:443 -sTCP:LISTEN -t`,{windowsHide:!0},(b,c)=>{if(b||!c?.trim())return a(null);let e=parseInt(c.trim().split("\n")[0],10);if(!e||isNaN(e))return a(null);d(`ps -p ${e} -o comm=`,{windowsHide:!0},(b,c)=>{a({pid:e,name:c?.trim()||"unknown"})})})})}async function as(a){if(aa&&!aa.killed){U.add(aa);try{aa.kill("SIGKILL")}catch{}aa=null,ab=null}try{let{pid:b}=af({dropStalePidFile:!1});b&&(ag(b,!0,a),await new Promise(a=>setTimeout(a,500))),J(N)}catch{}if(!v&&Y)try{let b=L(Y);if(a||s()){let{execWithPassword:d}=c(66936);await d(`pkill -SIGKILL -f ${b} 2>/dev/null || true`,a||"").catch(()=>{})}else d(`pkill -SIGKILL -f ${b} 2>/dev/null || true`,{windowsHide:!0},()=>{});await new Promise(a=>setTimeout(a,500))}catch{}}function at(a,b=443){return new Promise(c=>{let d=Date.now()+a,e=!1,f=null,g=null,h=a=>{if(!e){if(e=!0,clearTimeout(f),clearTimeout(i),g)try{g.destroy()}catch{}c(a)}},i=setTimeout(()=>h(null),a),j=()=>{if(e)return;let a=d-Date.now();if(a<=0)return h(null);f=setTimeout(l,Math.min(500,a))},l=()=>{if(e)return;let a=k.request({hostname:"127.0.0.1",port:b,path:"/_mitm_health",method:"GET",rejectUnauthorized:!1,timeout:Math.max(500,Math.min(2e3,d-Date.now()))},a=>{let b="";a.on("data",a=>{b+=a}),a.on("end",()=>{let a=null;try{a=JSON.parse(b)}catch{}if(a?.ok===!0)return h({ok:!0,pid:a.pid||null});j()}),a.on("error",j)});g=a,a.on("timeout",()=>{try{a.destroy()}catch{}}),a.on("error",j),a.end()};l()})}async function au(){let a=null!==aa&&!aa.killed,b=ab;if(!a)try{let{pid:c}=af();c&&(a=!0,b=c)}catch{}let d=q(),e=g.join(C,"rootCA.crt"),f=h.existsSync(e),{checkCertInstalled:i}=c(9631),j=!!f&&await i(e);return{running:a,pid:b,certExists:f,certTrusted:j,dnsStatus:d}}function av({restarting:a,blocked:b,count:c,lastStartAt:d,lastAttemptAt:e,now:f,maxRestarts:g,resetMs:h,delays:i}){if(a||b)return{proceed:!1,reason:a?"in-flight":"blocked"};let j=(d||0)>(e||0)&&f-d>=h?0:c;return j>=g?{proceed:!1,reason:"exhausted",count:j}:{proceed:!0,count:j+1,delay:i[Math.min(j,i.length-1)]}}async function aw(a){let b=av({restarting:R,blocked:T,count:P,lastStartAt:Q,lastAttemptAt:S,now:Date.now(),maxRestarts:5,resetMs:6e4,delays:O});if(!b.proceed)return void("exhausted"===b.reason?E("Max restart attempts reached. Giving up."):"blocked"===b.reason&&E("Auto-restart blocked: sudo password was rejected. Restart MITM from the dashboard."));P=b.count,S=Date.now(),R=!0;let c=!1;D(`Restarting in ${b.delay/1e3}s... (${P}/5)`),await new Promise(a=>setTimeout(a,b.delay));try{let b=ai?await ai():null;if(b&&!b.mitmEnabled)return void D("MITM disabled, skipping restart");let c=ac()||await am();if(!c&&!v)return void E("No cached password, cannot auto-restart");await ay(a,c),D("\uD83D\uDD04 Restarted successfully"),P=0}catch(a){E(`Restart attempt ${P}/5 failed: ${a.message}`),c=!0}finally{R=!1}c&&aw(a)}async function ax(a,b){if(a&&a.pid){if(v)try{f(`powershell -NonInteractive -WindowStyle Hidden -Command "Stop-Process -Id ${a.pid} -Force -ErrorAction SilentlyContinue"`,{windowsHide:!0})}catch{}else try{let{execWithPassword:d}=c(66936);b||s()?await d(`kill -9 ${a.pid}`,b||""):f(`kill -9 ${a.pid}`,{windowsHide:!0})}catch{}await new Promise(a=>setTimeout(a,800))}}async function ay(a,b,k=!1){if(!aa||aa.killed)try{let{pid:a}=af();if(a)return ab=a,D(`♻️ Reusing existing process (PID: ${a})`),await ak(!0,b),b&&ad(b),{running:!0,pid:a}}catch{}if(aa&&!aa.killed)throw Error("MITM server is already running");if(await as(b),!v){let a=await new Promise(a=>{let b=j.createServer();b.once("error",b=>{"EADDRINUSE"===b.code?a("in-use"):a("no-permission")}),b.once("listening",()=>{b.close(()=>a("free"))}),b.listen(443,"127.0.0.1")});if("in-use"===a||"no-permission"===a){let a=await ar(b);if(a){let c=a.name.includes("/")?a.name.split("/").filter(Boolean).pop():a.name;if(k)D(`Killing process on port 443 (PID ${a.pid}, name=${c})...`),await ax(a,b);else{let b=Error(`Port 443 is already in use by "${c}" (PID ${a.pid}).`);throw b.code="PORT_443_BUSY",b.portOwner={pid:a.pid,name:c},b}}}}let l=g.join(C,"rootCA.crt"),m=g.join(C,"rootCA.key"),n=h.existsSync(l)&&h.existsSync(m);if(!n||A(l)){if(n){D("\uD83D\uDD10 Cert expired — uninstalling old cert...");let a=b||ac()||await am();try{await z(a,l)}catch{}}D("\uD83D\uDD10 Generating Root CA..."),await x()}let{checkCertInstalled:o}=c(9631),p=await o(l),r=!v&&!w&&!s();if(p)D("\uD83D\uDD10 Cert: already trusted ✅");else{D("\uD83D\uDD10 Cert: not trusted → installing...");let a=b||ac()||await am();if(r)D(`🔐 Cert: skipping system trust (no sudo). Install ${l} as a trusted CA on machines that use this proxy.`);else{if(!a&&t())throw Error("Sudo password required to install Root CA certificate");try{await y(a,l),D("\uD83D\uDD10 Cert: ✅ trusted")}catch(a){throw Error(`Failed to trust certificate: ${a.message}`)}}}let u=Y;if((!u||!h.existsSync(u))&&(D(`[MITM] server.js missing at ${u} → recopying`),!(u=X(W()))||!h.existsSync(u)))throw Error(`MITM server.js not found at ${u}. Reinstall zevairouter.`);let B=await M();if(D(`🚀 Starting server... (router: ${B})`),v){let c=await ar(b);if(c)if(k)D(`Killing process on port 443 (PID ${c.pid}, name=${c.name})...`),await ax(c,b);else{let a=Error(`Port 443 is already in use by "${c.name}" (PID ${c.pid}).`);throw a.code="PORT_443_BUSY",a.portOwner={pid:c.pid,name:c.name},a}aa=e(process.execPath,[u],{detached:!1,windowsHide:!0,cwd:i.tmpdir(),stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:B}}),aj&&await aj({mitmCertInstalled:!0}).catch(()=>{})}else if(s()){(aa=e("sudo",["-S","-E","sh","-c",[`HOME=${L(i.homedir())}`,`ROUTER_API_KEY=${L(a)}`,`MITM_ROUTER_BASE=${L(B)}`,"NODE_ENV=production",L(process.execPath),L(u)].join(" ")],{detached:!1,windowsHide:!0,stdio:["pipe","pipe","pipe"]})).stdin.on("error",a=>{D(`[MITM] sudo stdin closed early: ${a.code||a.message}`)});try{aa.stdin.write(`${b}
|
|
40
40
|
`),aa.stdin.end()}catch(a){D(`[MITM] could not hand the password to sudo: ${a.code||a.message}`)}}else aa=e(process.execPath,[u],{detached:!1,windowsHide:!0,cwd:i.tmpdir(),stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:B}});if(aa&&(H(N,ab=aa.pid,{kind:"mitm-server"}),Q=Date.now()),w){let a=g.join(C,"rootCA.crt");h.existsSync(a)&&d(`launchctl setenv NODE_EXTRA_CA_CERTS "${a}"`,{windowsHide:!0},b=>{b?D(`[launchctl] Failed to set NODE_EXTRA_CA_CERTS: ${b.message}`):D(`[launchctl] NODE_EXTRA_CA_CERTS set to ${a}`)})}else if(v){let a=g.join(C,"rootCA.crt");h.existsSync(a)&&d(`setx NODE_EXTRA_CA_CERTS "${a}"`,{windowsHide:!0},a=>{a?D(`[setx] Failed to set NODE_EXTRA_CA_CERTS: ${a.message}`):D("[setx] NODE_EXTRA_CA_CERTS set for current user")})}let G=null;if(aa){aa.on("error",a=>{G=`spawn failed: ${a.code||a.message}`,E(`[MITM] ${G}`)}),aa.stdout.on("data",a=>{process.stdout.write(a)}),aa.stderr.on("data",a=>{let b=a.toString().trim();b&&(v||!b.includes("Password:")&&!b.includes("password for"))&&(b.includes("[MITM]")?process.stderr.write(`${b}
|
|
41
41
|
`):E(b),G=b),!v&&(b.includes("incorrect password")||b.includes("no password was provided"))&&(ad(null),al().catch(()=>{}),T=!0)});let b=aa;b.on("exit",c=>{let d=V({isCurrent:aa===b,intentional:U.has(b),code:c,restarting:R});if(D(`Server exited (code: ${c})${d.clearState?"":" (stale process, ignoring)"}`),d.clearState){aa=null,ab=null;try{h.unlinkSync(N)}catch{}d.restart&&aw(a)}})}let I=await at(8e3,443);if(!I){if(aa&&!aa.killed){U.add(aa);try{aa.kill()}catch{}aa=null,ab=null;try{h.unlinkSync(N)}catch{}}let a=function(){try{if(v){let a=f('powershell -NonInteractive -WindowStyle Hidden -Command "$c = Get-NetTCPConnection -LocalPort 443 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1; if ($c) { $c.OwningProcess } else { 0 }"',{encoding:"utf8",windowsHide:!0}).trim(),b=parseInt(a,10);if(b&&b>4){let a=f(`tasklist /FI "PID eq ${b}" /FO CSV /NH`,{encoding:"utf8",windowsHide:!0}).match(/"([^"]+)"/);if(a)return a[1].replace(".exe","")}}else{let a=f(`${F} -nP -iTCP:443 -sTCP:LISTEN`,{encoding:"utf8",windowsHide:!0}).trim().split("\n");if(a.length>1)return a[1].split(/\s+/)[0]}}catch{}return null}(),b=a?` Port 443 already in use by ${a}.`:"",c=G||`Check sudo password or port 443 access.${b}`;throw Error(`MITM server failed to start. ${c}`)}for(let[a,b]of(aj&&await aj({mitmCertInstalled:!0}).catch(()=>{}),D(`✅ Server healthy (PID: ${ab||I.pid})`),Object.entries(q())))D(`🌐 DNS ${a}: ${b?"✅ active":"❌ inactive"}`);return await ak(!0,b),b&&ad(b),T=!1,{running:!0,pid:ab}}async function az(a,{preserveEnabled:b=!1}={}){R=!0,P=0,D("⏹ Stopping server...");let e=aa,f=e&&!e.killed?e.pid:af({dropStalePidFile:!1}).pid;if(e&&U.add(e),f&&G(f)&&(D(`Killing server (PID: ${f})...`),ag(f,!1,a),await new Promise(a=>setTimeout(a,1e3)),G(f)&&ag(f,!0,a)),aa=null,ab=null,v){let a=g.join(process.env.SystemRoot||"C:\\Windows","System32","drivers","etc","hosts"),b=Object.values(r).flat();try{let{isAdmin:d,runElevatedPowerShell:e,quotePs:f}=c(64809);if(d()){let d=h.readFileSync(a,"utf8"),e=d.split(/\r?\n/).filter(a=>!b.some(b=>a.includes(b))).join("\r\n").replace(/[\r\n\s]+$/g,"")+"\r\n";e!==d&&h.writeFileSync(a,e,"utf8");try{c(79646).execSync("ipconfig /flushdns",{windowsHide:!0,stdio:"ignore"})}catch{}D("\uD83C\uDF10 DNS: ✅ all tool hosts removed")}else{let c=b.map(f).join(","),d=`
|
|
42
42
|
$hosts = @(${c})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=6252,exports.ids=[6252],exports.modules={66252:(a,b,c)=>{c.d(b,{createSqlJsAdapter:()=>
|
|
1
|
+
"use strict";exports.id=6252,exports.ids=[6252],exports.modules={66252:(a,b,c)=>{c.d(b,{createSqlJsAdapter:()=>o});var d=c(77598),e=c(73024),f=c.n(e),g=c(46293),h=c.n(g),i=c(34050);let j=null;async function k(){return j||(j=await h()())}let l=Symbol.for("zevairouter.sqljs.heldLocks"),m=globalThis[l]||=new Set;function n(a){return Error(`sql.js database is already owned by process ${a}`)}async function o(a,b={}){let c,e,g=`${a}.sqljs.lock`;!function(a){for(let b=0;b<5;b+=1){if(function(a){let b=`${a}.${process.pid}.${(0,d.randomUUID)()}.tmp`;f().writeFileSync(b,String(process.pid),{mode:384});try{return f().linkSync(b,a),!0}catch(a){if("EEXIST"===a.code)return!1;throw a}finally{f().rmSync(b,{force:!0})}}(a))return;let b=function(a){try{return f().readFileSync(a,"utf8")}catch(a){if("ENOENT"===a.code)return null;throw a}}(a);if(null===b||!function(a,b){let c=/^\d+$/.test(a.trim())?Number(a.trim()):0;if(!Number.isSafeInteger(c)||c<=0)return!0;if(c===process.pid){if(m.has(b))throw n(c);return!0}try{process.kill(c,0)}catch(a){if("ESRCH"===a.code)return!0;if("EPERM"!==a.code)throw a}throw n(c)}(b,a))continue;let c=`${a}.${process.pid}.${(0,d.randomUUID)()}.stale`;try{f().renameSync(a,c)}catch(a){if("ENOENT"===a.code)continue;throw a}let e=f().readFileSync(c,"utf8");if(e!==b){try{f().linkSync(c,a)}catch{}throw f().rmSync(c,{force:!0}),n(e.trim()||"unknown")}f().rmSync(c,{force:!0})}throw Error(`Could not acquire sql.js database lock ${a}`)}(g),m.add(g);let h=()=>{m.delete(g);try{f().readFileSync(g,"utf8")===String(process.pid)&&f().rmSync(g,{force:!0})}catch{}};try{c=await k()}catch(a){throw h(),a}try{b.beforeOpen?.({filePath:a});let d=f().existsSync(a)?f().readFileSync(a):null;(e=new c.Database(d)).exec(i.oG)}catch(a){try{e?.close()}catch{}throw h(),a}let j=!1,l=0,p=null;function q(){if(!p)return;let b=Error(`sql.js database at ${a} is unusable: the initial write failed and no persisted image exists to recover from`);throw b.cause=p,b}function r(){let c=e.export(),d=`${a}.tmp-${process.pid}`;j=!0;try{b.beforePersist?.({filePath:a,tempPath:d}),f().writeFileSync(d,Buffer.from(c),{mode:384}),f().renameSync(d,a),j=!1}catch(a){try{f().rmSync(d,{force:!0})}catch{}throw a}}function s(b){let d,g=null;try{f().existsSync(a)&&(g=f().readFileSync(a))}catch(a){throw b.rewindError=a,b}var h=g;try{(d=new c.Database(h)).exec(i.oG)}catch(a){try{d?.close()}catch{}throw a}let k=e;e=d,j=!1;try{k.close()}catch{}null===g&&(p=b)}function t(a){if(q(),l>0)return a();try{let b=a();return r(),b}catch(a){throw s(a),a}}function u(a){if(!(!a||Array.isArray(a)&&0===a.length))return a}let v=!1;return{driver:"sql.js",run:function(a,b=[]){return t(()=>{let c=e.prepare(a);try{for(c.bind(u(b));c.step(););let a=e.getRowsModified(),d=e.exec("SELECT last_insert_rowid() as id")[0]?.values?.[0]?.[0]??null;return{changes:a,lastInsertRowid:d}}finally{c.free()}})},get:function(a,b=[]){q();let c=e.prepare(a);try{if(c.bind(u(b)),c.step())return c.getAsObject();return}finally{c.free()}},all:function(a,b=[]){q();let c=e.prepare(a);try{c.bind(u(b));let a=[];for(;c.step();)a.push(c.getAsObject());return a}finally{c.free()}},exec:function(a){return t(()=>e.exec(a))},transaction:function(a){q();let b=`sp_${Math.random().toString(36).slice(2)}`,c=0===l;e.exec(`SAVEPOINT ${b}`),l++;let d=!1;try{let f=a();return e.exec(`RELEASE ${b}`),d=!0,l--,c&&r(),f}catch(a){if(!d){l--;try{e.exec(`ROLLBACK TO ${b}`),e.exec(`RELEASE ${b}`)}catch{}}throw c&&s(a),a}},close:function(){if(v)return;v=!0;let a=null;try{j&&r()}catch(b){a=b}finally{try{e.close()}catch(b){a||=b}finally{h()}}if(a)throw a},get raw(){return e}}}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=6846,exports.ids=[6846],exports.modules={11410:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{M:()=>k});var e=c(89718),f=c(29240),g=c(43659),h=c(41004),i=c(79489),j=a([i]);async function k(a,b){if(!a)return{finish:a=>a};let d=await (0,e.uH)(a);if(b&&!(0,f.GJ)(b,d))return{error:(0,g.yj)(h.gx.FORBIDDEN,`Model ${b} is not allowed for this API key`)};let{checkApiKeyBudget:j,admitApiKeyRequest:k}=await Promise.resolve().then(c.bind(c,93999)),l=await j(a);if(!l.allowed)return{error:(0,g.yj)(l.error?h.gx.SERVICE_UNAVAILABLE:h.gx.PAYMENT_REQUIRED,l.reason||"Budget exceeded")};let m=await k(a);if(!m.allowed){let a=m.retryAfter?{"Retry-After":String(m.retryAfter)}:void 0;return{error:new Response(JSON.stringify({error:{message:m.reason}}),{status:m.status||429,headers:{"Content-Type":"application/json",...a}})}}return{policy:d,finish:a=>(0,i.L)(a,m.release,m.touch)}}i=(j.then?(await j)():j)[0],d()}catch(a){d(a)}})},56895:(a,b,c)=>{c.d(b,{WY:()=>ap,F8:()=>ar,NJ:()=>aq});var d,e=c(43659),f=c(41004),g=c(8590),h=c(35024),i=c(83477),j=c(75681),k=c(48806),l=c(87098),m=c(17559),n=c(25433),o=c(34204),p=c(15082),q=c(90874),r=c(79875),s=c(91861),t=c(64991);let u=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/,v=new Set(["free","freeTier","oauth","apikey"]),w=new Set(["none","oauth","apikey"]),x=new Set(["llm","embedding","image","imageToText","music","stt","tts","video","webFetch","webSearch"]),y=new Set(["antigravity","claude","codex","commandcode","cursor","gemini","gemini-cli","kiro","ollama","openai","openai-response","openai-responses","vertex"]),z=new Set(["public","trusted-local","loopback-service"]),A=new Set(["terminal","kiro-eventstream","none"]),B=["embeddingConfig","imageConfig","imageToTextConfig","musicConfig","sttConfig","ttsConfig","videoConfig"],C=["connectMs","firstEventMs","progressIdleMs","absoluteMs"],D=Object.freeze({quotaSource:Object.freeze({strategy:"none",provenance:"none"}),deadlineProfile:Object.freeze({connectMs:15e3,firstEventMs:6e4,progressIdleMs:6e4,absoluteMs:3e5}),integrityProfile:Object.freeze({mode:"terminal",requireTerminal:!0})});class E extends Error{constructor(a,b){super(`Invalid provider descriptor ${a}: ${b}`),this.name="ProviderDescriptorError",this.path=a}}function F(a,b){throw new E(a,b)}function G(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}function H(a,b){"string"==typeof a&&u.test(a)||F(b,"must be a stable lowercase ID")}function I(a,b,c){Array.isArray(a)&&0!==a.length||F(b,"must be a non-empty array");let d=new Set;for(let e of a)"string"==typeof e&&c.has(e)||F(b,"contains an unsupported value"),d.has(e)&&F(b,"contains a duplicate value"),d.add(e)}function J(a){let b=[];for(let[c,d]of Object.entries(a||{}))/(?:base|validate|responses|messages|token|auth|refresh)urls?$/i.test(c)&&("string"==typeof d?b.push(d):Array.isArray(d)&&b.push(...d));return b}function K(a,b,c="public"){for(let d of J(a)){let a;try{a=new URL(d)}catch{F(b,"contains a malformed endpoint")}(a.username||a.password)&&F(b,"endpoint credentials are not allowed"),"public"===c&&"https:"!==a.protocol&&F(b,"public endpoints must use HTTPS"),"public"===c||["http:","https:"].includes(a.protocol)||F(b,"trusted local endpoints must use HTTP or HTTPS")}}function L(a,b){Array.isArray(a)&&0!==a.length||F(b,"must contain a static fallback");let c=new Set;for(let d of a)G(d)&&"string"==typeof d.id&&0!==d.id.length||F(b,"contains a model without an ID"),c.has(d.id)&&F(b,`contains duplicate model ${d.id}`),c.add(d.id)}function M(a,b){for(let c of(G(a)||F(b,"must be an object"),C))(!Number.isInteger(a[c])||a[c]<1e3||a[c]>9e5)&&F(`${b}.${c}`,"must be between 1000 and 900000 milliseconds");a.absoluteMs<a.connectMs&&F(`${b}.absoluteMs`,"must cover connect time")}let N={id:"antigravity",alias:"ag",category:"oauth",authModes:["oauth"],display:{...j.AI_PROVIDERS.antigravity},serviceKinds:j.AI_PROVIDERS.antigravity.serviceKinds,capabilities:{streaming:!0,tools:!0,thinking:!0},transport:h.xq.antigravity,models:i.vq.ag,quotaSource:{strategy:"provider-api",provenance:"live-or-last-success"},refreshProfile:t.Wk,deadlineProfile:{...D.deadlineProfile,variants:{thinking:{connectMs:D.deadlineProfile.connectMs,firstEventMs:f.iL,progressIdleMs:f.SI,absoluteMs:f.P4}}},integrityProfile:D.integrityProfile,dashboard:{connection:"oauth",validation:"quota-or-model"}},O={id:"kiro",alias:"kr",category:"oauth",authModes:j.AI_PROVIDERS.kiro.authModes,display:{...j.AI_PROVIDERS.kiro},serviceKinds:["llm"],capabilities:{streaming:!0,tools:!0,thinking:!0},transport:h.xq.kiro,models:i.vq.kr,quotaSource:{strategy:"provider-api",provenance:"live-or-last-success"},refreshProfile:(0,t.JJ)("kiro"),deadlineProfile:D.deadlineProfile,integrityProfile:{mode:"kiro-eventstream",requireTerminal:!0,verifiedWindowMs:9e5,cleanProbesToRecover:5,memoryLimitBytes:2097152,maxBytes:0x4000000},dashboard:{connection:"oauth-or-apikey",validation:"profile-or-model"}},P={id:"codex",alias:"cx",category:"oauth",authModes:["oauth"],display:{...j.AI_PROVIDERS.codex},serviceKinds:j.AI_PROVIDERS.codex.serviceKinds,capabilities:{streaming:!0,tools:!0,thinking:!0},transport:h.xq.codex,models:i.vq.cx,quotaSource:{strategy:"provider-api",provenance:"live-or-last-success"},refreshProfile:t.Wk,deadlineProfile:D.deadlineProfile,integrityProfile:D.integrityProfile,dashboard:{connection:"oauth",validation:"catalog-or-quota"}},Q={id:"cursor",alias:"cu",category:"oauth",authModes:["oauth"],display:{...j.AI_PROVIDERS.cursor},serviceKinds:["llm"],capabilities:{streaming:!0,tools:!0,liveCatalog:!0},transport:h.xq.cursor,models:i.vq.cu,quotaSource:{strategy:"provider-api",provenance:"live-or-last-success"},refreshProfile:t.Wk,deadlineProfile:D.deadlineProfile,integrityProfile:D.integrityProfile,dashboard:{connection:"oauth",validation:"account-or-model"}},R={id:"github",alias:"gh",category:"oauth",authModes:["oauth"],display:{...j.AI_PROVIDERS.github},serviceKinds:j.AI_PROVIDERS.github.serviceKinds,capabilities:{streaming:!0,tools:!0,responseEscalation:!0},transport:h.xq.github,models:i.vq.gh,quotaSource:{strategy:"provider-api",provenance:"live-or-last-success"},refreshProfile:t.Wk,deadlineProfile:D.deadlineProfile,integrityProfile:D.integrityProfile,dashboard:{connection:"oauth",validation:"quota-or-model"},embeddingConfig:j.AI_PROVIDERS.github.embeddingConfig},S=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","modelsFetcher","mediaPriority","hiddenKinds"],T=[k.A,l.A,m.A,n.A,o.A,p.A,q.A,r.A,s.A,N,O,P,Q,R];function U(a={}){return Object.fromEntries(S.filter(b=>void 0!==a[b]).map(b=>[b,a[b]]))}let V=new Set([...Object.keys(j.AI_PROVIDERS),...Object.keys(h.xq)]),W=new Map(T.map(a=>[a.id,a])),X=new Set(["antigravity","kiro","codex","cursor","github"]),Y={};for(let a of V){let b=function(a){let b=j.AI_PROVIDERS[a]||{},c=b.alias||a;return{id:a,alias:c,category:b.noAuth?"free":b.hasOAuth?"oauth":"apikey",authModes:b.authModes,hasOAuth:b.hasOAuth,noAuth:b.noAuth,passthroughModels:b.passthroughModels,display:function(a={}){let b=new Set(S);return Object.fromEntries(Object.entries(a).filter(([a])=>!b.has(a)))}(b),transport:h.xq[a],models:i.vq[c]||i.vq[a]||[],...U(b)}}(a),c=W.has(a)?(d=W.get(a),{...b,...d,display:{...b.display,...d.display},transport:{...b.transport,...d.transport},models:function(a=[],b=[]){let c=new Map;for(let d of[...a,...b])d?.id&&c.set(d.id,{...c.get(d.id),...d});return[...c.values()]}(b.models,d.models)}):b;Y[a]=X.has(a)?function(a,{optional:b=!1}={}){try{return function(a){if(G(a)||F("root","must be an object"),H(a.id,"id"),H(a.alias,"alias"),void 0!==a.aliases)for(let b of(Array.isArray(a.aliases)||F("aliases","must be an array"),a.aliases))H(b,"aliases");v.has(a.category)||F("category","is unsupported"),I(a.authModes,"authModes",w),I(a.serviceKinds,"serviceKinds",x),G(a.display)&&"string"==typeof a.display.name&&a.display.name.trim()||F("display.name","is required"),G(a.capabilities)||F("capabilities","must be an object"),G(a.transport)||F("transport","must be an object"),y.has(a.transport.format)||F("transport.format","is unsupported");let b=a.transport.trustClass||"public";z.has(b)||F("transport.trustClass","is unsupported"),0===J(a.transport).length&&F("transport","requires an endpoint"),K(a.transport,"transport",b),L(a.models,"models"),G(a.quotaSource)&&"string"==typeof a.quotaSource.strategy&&"string"==typeof a.quotaSource.provenance||F("quotaSource","must declare strategy and provenance"),G(c=a.refreshProfile)||F("refreshProfile","must be an object"),(!Number.isInteger(c.maxConcurrent)||c.maxConcurrent<1)&&F("refreshProfile.maxConcurrent","must be a positive integer"),(!Number.isInteger(c.minDelayMs)||c.minDelayMs<0)&&F("refreshProfile.minDelayMs","must be a non-negative integer");var c,d=a.deadlineProfile;if(M(d,"deadlineProfile"),void 0!==d.variants)for(let[a,b]of(G(d.variants)||F("deadlineProfile.variants","must be an object"),Object.entries(d.variants)))M(b,`deadlineProfile.variants.${a}`);var e=a.integrityProfile;for(let a of(G(e)&&A.has(e.mode)||F("integrityProfile.mode","is unsupported"),"boolean"!=typeof e.requireTerminal&&F("integrityProfile.requireTerminal","must be boolean"),["memoryLimitBytes","maxBytes","verifiedWindowMs","cleanProbesToRecover"]))void 0!==e[a]&&(!Number.isInteger(e[a])||e[a]<=0)&&F(`integrityProfile.${a}`,"must be a positive integer");G(a.dashboard)&&"string"==typeof a.dashboard.connection&&"string"==typeof a.dashboard.validation||F("dashboard","must declare connection and validation modes");for(let b of B){let c=a[b];void 0!==c&&(G(c)||F(b,"must be an object"),K(c,b,c.trustClass||"public"),void 0!==c.models&&L(c.models,`${b}.models`))}return function a(b,c=new WeakMap){if(null===b||"object"!=typeof b)return b;if(c.has(b))return c.get(b);let d=Array.isArray(b)?[]:{};for(let[e,f]of(c.set(b,d),Object.entries(b)))d[e]=a(f,c);return Object.freeze(d)}(a)}(a)}catch(d){let c;if(!b)throw d;return Object.freeze({id:"string"==typeof a?.id&&u.test(a.id)?a.id:"optional-provider",disabled:!0,diagnostic:(c=d instanceof E?d.path:"unknown",`Provider descriptor disabled: invalid ${c}`.slice(0,160))})}}(c):c}let Z={},$={},_={};for(let a of Object.values(Y)){a.transport&&(Z[a.id]=a.transport),$[a.alias||a.id]=a.models||[];let b=U(a);Object.keys(b).length>0&&(_[a.id]=b)}let aa="application/json";function ab(a){let b=Error(a);return b.status=400,b}let ac="application/json",ad=new Set(["veo-3.1-generate-preview","veo-3.1-fast-generate-preview","veo-3.0-generate-001","veo-2.0-generate-001"]),ae={duration:"durationSeconds",aspect_ratio:"aspectRatio",resolution:"resolution",negative_prompt:"negativePrompt",seed:"seed",storage_uri:"storageUri",generate_audio:"generateAudio"};function af(a){let b=Error(a);return b.status=400,b}function ag(a){return"string"==typeof a&&a.length>0&&"."!==a&&".."!==a&&/^[A-Za-z0-9._~-]+$/.test(a)}function ah(a){if("string"!=typeof a)return null;let b=a.split("/");return 10===b.length&&"projects"===b[0]&&"locations"===b[2]&&"publishers"===b[4]&&"google"===b[5]&&"models"===b[6]&&"operations"===b[8]&&ag(b[1])&&ag(b[3])&&ag(b[7])&&ag(b[9])?{name:a,project:b[1],location:b[3],model:b[7],operation:b[9]}:null}function ai(a){if("string"!=typeof a||!/^[A-Za-z0-9_-]+$/.test(a))return null;try{let b=Buffer.from(a,"base64url").toString("utf8");if(Buffer.from(b,"utf8").toString("base64url")!==a)return null;return ah(b)?.name||null}catch{return null}}function aj(a){return`https://${a}-aiplatform.googleapis.com/v1`}function ak(a){return Response.json(a,{headers:{"Access-Control-Allow-Origin":"*"}})}let al={openrouter:{buildRequest({config:a,action:b,requestId:c,model:d,parsedBody:e,contentType:f,token:g}){let i=a.baseUrl.replace(/\/$/,""),j={Accept:aa,...h.xq.openrouter.headers};if(g&&(j.Authorization=`Bearer ${g}`),c)return{url:`${i}/${encodeURIComponent(c)}`,init:{method:"GET",headers:j}};if("generations"!==b)throw ab(`OpenRouter does not support video action: ${b}`);if(f?.split(";",1)[0].trim().toLowerCase()!==aa||!e||"object"!=typeof e||Array.isArray(e))throw ab("OpenRouter video generation requires an application/json object body");return j["Content-Type"]=aa,{url:i,init:{method:"POST",headers:j,body:JSON.stringify({...e,model:d})}}},parseResponse:async a=>new Response(await a.arrayBuffer(),{status:a.status,headers:{"Content-Type":a.headers.get("content-type")||aa,"Access-Control-Allow-Origin":"*"}})},vertex:{buildRequest({action:a,requestId:b,model:c,parsedBody:d,credentials:e}){let f={Accept:ac,"Content-Type":ac};if(e?.accessToken&&(f.Authorization=`Bearer ${e.accessToken}`),b){let a=ai(b),c=a&&ah(a);if(!c)throw af("Invalid Vertex operation ID");if(!ad.has(c.model))throw af("Invalid or unsupported Vertex video model");return{url:`${aj(c.location)}/projects/${c.project}/locations/${c.location}/publishers/google/models/${c.model}:fetchPredictOperation`,init:{method:"POST",headers:f,body:JSON.stringify({operationName:a})}}}if("generations"!==a)throw af(`Vertex does not support video action: ${a}`);if(!ag(c)||!ad.has(c))throw af("Invalid or unsupported Vertex video model");if(!d||"object"!=typeof d||Array.isArray(d))throw af("Vertex video generation requires a JSON object body");let{project:g,location:h}=function(a){let b=function(a){let b=a?.apiKey;if(b&&"object"==typeof b)return b;if("string"!=typeof b||!b.trim().startsWith("{"))return null;try{let a=JSON.parse(b);return a&&"object"==typeof a?a:null}catch{return null}}(a),c=a?.projectId||a?.providerSpecificData?.projectId||b?.project_id,d=a?.providerSpecificData?.location||"us-central1";if(!ag(c))throw af("Invalid or missing Vertex project ID");if(!ag(d))throw af("Invalid Vertex location");return{project:c,location:d}}(e),i={prompt:d.prompt};void 0!==d.image&&(i.image=d.image);let j={};for(let[a,b]of Object.entries(ae))void 0!==d[a]&&(j[b]=d[a]);return{url:`${aj(h)}/projects/${g}/locations/${h}/publishers/google/models/${c}:predictLongRunning`,init:{method:"POST",headers:f,body:JSON.stringify({instances:[i],parameters:j})}}},async parseResponse(a,{requestId:b}){let c=await a.json();if(!b){var d;let a=ah(d=c?.name)?Buffer.from(d,"utf8").toString("base64url"):null;if(!a)throw af("Vertex returned an invalid operation name");return ak({request_id:a,status:"pending"})}if(!c?.done){let a=c?.metadata?.progressPercent;return Number.isFinite(a)?ak({status:"processing",progress:a}):ak({status:"pending"})}if(c.error){let a=ai(b),d=String(c.error.message||"");return ak({status:"failed",error:{code:c.error.code,message:a?d.split(a).join("[redacted]"):d}})}let e=c?.response?.videos?.[0];return e?.gcsUri!==void 0?ak({status:"done",video:{url:e.gcsUri}}):e?.bytesBase64Encoded!==void 0?ak({status:"done",video:{b64_json:e.bytesBase64Encoded}}):ak({status:"done"})}}},am=Number(process.env.VIDEO_FETCH_TIMEOUT_MS),an=Number.isFinite(am)?Math.max(5e3,Math.min(am,6e5)):12e4,ao=new Set(["generations","edits","extensions"]);function ap(a){return _[a]?.videoConfig||null}function aq(a,b=null){if(!a)return a;let c=String(a).replace(/Bearer\s+[A-Za-z0-9._~+/=-]{8,}/gi,"Bearer [redacted]");for(let a of["accessToken","refreshToken","apiKey"]){let d=b?.[a];"string"==typeof d&&d.length>=8&&(c=c.split(d).join("[redacted]"))}return c}async function ar({provider:a,action:b=null,requestId:c=null,rawBody:d=null,model:h=null,parsedBody:i=null,contentType:j=null,idempotencyKey:k=null,credentials:l,signal:m,timeoutMs:n=an,log:o,prepareCredentials:p,onCredentialsRefreshed:q}){let r,s,t=ap(a);if(!t)return(0,e.A1)(f.gx.BAD_REQUEST,`Provider '${a}' does not support video generation`);if(!c&&!ao.has(b))return(0,e.A1)(f.gx.BAD_REQUEST,`Unknown video action: ${b}`);let u=al[a]||null,v="vertex"===a||"vertex-partner"===a,w=c?"GET":"POST",x=(s="function"==typeof AbortSignal?.timeout?AbortSignal.timeout(n):null,m&&s&&"function"==typeof AbortSignal.any?AbortSignal.any([m,s]):m||s||void 0),y=()=>v?l?.accessToken:l?.accessToken||l?.apiKey,z=a=>u.buildRequest({config:t,action:b,requestId:c,model:h,parsedBody:i,rawBody:d,contentType:j,token:a,idempotencyKey:k,credentials:l}),A=null;if(u)try{A=z(y())}catch(b){if(b?.status===f.gx.BAD_REQUEST)return(0,e.A1)(f.gx.BAD_REQUEST,b.message);return(0,e.A1)(f.gx.BAD_GATEWAY,aq(`[${a}] video request build failed: ${b.message}`,l))}if(p){let b=await p(l);if(b&&(l=b),u)try{A=z(y())}catch(b){if(b?.status===f.gx.BAD_REQUEST)return(0,e.A1)(f.gx.BAD_REQUEST,b.message);return(0,e.A1)(f.gx.BAD_GATEWAY,aq(`[${a}] video request build failed: ${b.message}`,l))}}let B=(a,e=null)=>{let f;if(u){let b=e||z(a);return fetch(b.url,{...b.init,signal:x})}return fetch((f=t.baseUrl.replace(/\/$/,""),c?`${f}/${encodeURIComponent(c)}`:`${f}/${b}`),{method:w,headers:function({token:a,contentType:b,idempotencyKey:c}){let d={Accept:"application/json"};if(a&&(d.Authorization=`Bearer ${a}`),b&&(d["Content-Type"]=b),c){let a=String(c).replace(/[\r\n\t]/g,"").slice(0,256);a&&(d["Idempotency-Key"]=a)}return d}({token:a,contentType:"POST"===w?j:null,idempotencyKey:"POST"===w?k:null}),body:"POST"===w?d:void 0,signal:x})};if(v&&!l?.accessToken){let b;try{b=await (0,g.$B)(a,l,o)}catch(b){return(0,e.A1)(f.gx.BAD_GATEWAY,aq(`[${a}] video access token mint failed: ${b.message}`,l))}if(!b?.accessToken)return(0,e.A1)(f.gx.BAD_GATEWAY,aq(`[${a}] video access token mint failed`,l));Object.assign(l,b),q&&await q(b),A=z(y())}try{r=await B(y(),A)}catch(b){if(b?.status===f.gx.BAD_REQUEST)return(0,e.A1)(f.gx.BAD_REQUEST,b.message);if(b?.name==="AbortError"||b?.name==="TimeoutError")return(0,e.A1)(f.gx.REQUEST_TIMEOUT,`[${a}] video ${w} aborted: ${b.message}`);return(0,e.A1)(f.gx.BAD_GATEWAY,aq(`[${a}] video upstream fetch failed: ${b.message}`,l))}if((r.status===f.gx.UNAUTHORIZED||r.status===f.gx.FORBIDDEN)&&(l?.refreshToken||v)){let b=null;try{b=await (0,g.$B)(a,l,o)}catch(b){o?.warn?.("TOKEN",`${a} | video refresh error: ${aq(b.message,l)}`)}if(b?.accessToken){o?.info?.("TOKEN",`${a.toUpperCase()} | refreshed for video ${w}`),Object.assign(l,b),q&&await q(b);try{await r.body?.cancel?.()}catch{}try{r=await B(y())}catch(b){return(0,e.A1)(f.gx.BAD_GATEWAY,aq(`[${a}] video retry after refresh failed: ${b.message}`,l))}}else o?.warn?.("TOKEN",`${a.toUpperCase()} | video refresh failed — account needs re-auth`)}if(r.ok&&u)return{success:!0,response:await u.parseResponse(r,{config:t,provider:a,action:b,requestId:c,model:h,parsedBody:i})};let C=await r.text().catch(()=>"");if(!r.ok){let b=aq(C||`HTTP ${r.status}`,l);return(0,e.A1)(r.status,`[${a}] ${b.slice(0,2e3)}`)}return{success:!0,response:new Response(C,{status:r.status,headers:{"Content-Type":r.headers.get("content-type")||"application/json","Access-Control-Allow-Origin":"*"}})}}},96846:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{g:()=>t,s:()=>v});var e=c(80238),f=c(89718),g=c(38775),h=c(56895),i=c(43659),j=c(41004),k=c(58136),l=c(11410),m=c(7803),n=a([l]);function o(a){return a.headers.get("x-zevai-connection-id")||a.headers.get("x-connection-id")||null}l=(n.then?(await n)():n)[0];let w=new Set([j.gx.UNAUTHORIZED,j.gx.FORBIDDEN,j.gx.RATE_LIMITED]);async function p(a){let b=(0,e.Tr)(a);if((await (0,f.mt)()).requireApiKey){if(!b)return(0,i.yj)(j.gx.UNAUTHORIZED,"Missing API key");if(!await (0,e.kI)(b))return(0,i.yj)(j.gx.UNAUTHORIZED,"Invalid API key")}return null}async function q(a){let b,c=a.headers.get("content-type")||"",d=Number.isFinite(b=Number(process.env.MAX_VIDEO_REQUEST_BYTES))?Math.max(1024,Math.min(b,0x4000000)):0x2000000,e=Number(a.headers.get("content-length"));if(Number.isFinite(e)&&e>d)return{error:(0,i.yj)(j.gx.PAYLOAD_TOO_LARGE,"Video request body is too large")};if(c.includes("application/json")){let b,e=await a.text();if(Buffer.byteLength(e)>d)return{error:(0,i.yj)(j.gx.PAYLOAD_TOO_LARGE,"Video request body is too large")};try{b=JSON.parse(e)}catch{return{error:(0,i.yj)(j.gx.BAD_REQUEST,"Invalid JSON body")}}return{raw:e,parsed:b,contentType:c}}let f=Buffer.from(await a.arrayBuffer());return f.byteLength>d?{error:(0,i.yj)(j.gx.PAYLOAD_TOO_LARGE,"Video request body is too large")}:{raw:f,parsed:null,contentType:c}}async function r(a){if(!a?.model)return{provider:"xai",model:null};let b=String(a.model),c=await (0,g.mA)(b);return c.provider?(0,h.WY)(c.provider)?{provider:c.provider,model:c.model}:b.includes("/")?{error:(0,i.yj)(j.gx.BAD_REQUEST,`Provider '${c.provider}' does not support video generation`)}:{provider:"xai",model:b}:{error:(0,i.yj)(j.gx.BAD_REQUEST,"Combos are not supported for video generation")}}function s(a,b){if(!b)return a;let c=new Headers(a.headers);return c.set("x-zevai-connection-id",String(b)),c.set("x-connection-id",String(b)),c.set("Access-Control-Expose-Headers","x-zevai-connection-id, x-connection-id"),new Response(a.body,{status:a.status,headers:c})}async function t(a,b){let c=await p(a);if(c)return c;let d=await q(a);if(d.error)return d.error;let f=await r(d.parsed);if(f.error)return f.error;let{provider:g,model:h}=f,i=await (0,l.M)((0,e.Tr)(a),d.parsed?.model?String(d.parsed.model):null);return i.error?i.error:i.finish(await u(a,b,d,g,h))}async function u(a,b,c,d,f){let g=c.raw;c.parsed&&f&&c.parsed.model!==f&&(g=JSON.stringify({...c.parsed,model:f}));let l=o(a),n=(0,e.Tr)(a),p=a.headers.get("idempotency-key")||null,q=new Set,r=null,t=null;for(;;){let o=await (0,e.c1)(d,q,f,{preferredConnectionId:l,...n?{apiKey:n}:{}});if(!o||o.allRateLimited){if(o?.allRateLimited){let a=r||o.lastError||"Unavailable",b=t||Number(o.lastErrorCode)||j.gx.SERVICE_UNAVAILABLE;return(0,i.wO)(b,`[${d}/${f||"video"}] ${a}`,o.retryAfter,o.retryAfterHuman)}if(0===q.size)return(0,i.yj)(j.gx.BAD_REQUEST,`No credentials for provider: ${d}`);return(0,i.yj)(t||j.gx.SERVICE_UNAVAILABLE,r||"All accounts unavailable")}let u=await (0,h.F8)({provider:d,action:b,model:f,parsedBody:c.parsed,rawBody:g,contentType:c.contentType||null,idempotencyKey:p,credentials:o,prepareCredentials:async a=>(Object.assign(a,await (0,k.eU)(d,a)),a),signal:a.signal,log:m,onCredentialsRefreshed:async a=>{await (0,k.vN)(o.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})}});if(u.success)return await (0,e.Pt)(o.connectionId,o,f),m.info("VIDEO",`${d.toUpperCase()} | ${b} accepted (connection ${o.connectionId})`),s(u.response,o.connectionId);let{shouldFallback:v}=await (0,e.vk)(o.connectionId,u.status,(0,h.NJ)(u.error,o),d,f);if(v&&w.has(u.status)){q.add(o.connectionId),r=u.error,t=u.status;continue}return u.response}}async function v(a,b){let c=await p(a);if(c)return c;if(!b)return(0,i.yj)(j.gx.BAD_REQUEST,"Missing video request id");if(String(b).length>256)return(0,i.yj)(j.gx.BAD_REQUEST,"Video request id is too long");let d=o(a),g=d?await (0,f.Mc)(d):null,l=g?.provider&&(0,h.WY)(g.provider)?g.provider:null,n=new URL(a.url).searchParams.get("provider");if(!l&&n&&!(0,h.WY)(n))return(0,i.yj)(j.gx.BAD_REQUEST,`Provider '${n}' does not support video generation`);let q=l||n||"xai",r=!!d,t=(0,e.Tr)(a),u=await (0,e.c1)(q,null,null,{preferredConnectionId:d,strictPreferred:r,...t?{apiKey:t}:{}});if(!u||u.allRateLimited)return(0,i.yj)(j.gx.BAD_REQUEST,`No credentials for provider: ${q}`);let v=await (0,h.F8)({provider:q,requestId:b,credentials:u,prepareCredentials:async a=>(Object.assign(a,await (0,k.eU)(q,a)),a),signal:a.signal,log:m,onCredentialsRefreshed:async a=>{await (0,k.vN)(u.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})}});return v.success?(await (0,e.Pt)(u.connectionId,u,null),s(v.response,u.connectionId)):(await (0,e.vk)(u.connectionId,v.status,(0,h.NJ)(v.error,u),q,null),v.response)}d()}catch(a){d(a)}})}};
|
|
1
|
+
"use strict";exports.id=6846,exports.ids=[6846],exports.modules={11410:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{M:()=>k});var e=c(89718),f=c(29240),g=c(43659),h=c(41004),i=c(79489),j=a([i]);async function k(a,b){if(!a)return{run:a=>a()};let d=await (0,e.uH)(a);if(b&&!(0,f.GJ)(b,d))return{error:(0,g.yj)(h.gx.FORBIDDEN,`Model ${b} is not allowed for this API key`)};let{checkApiKeyBudget:j,admitApiKeyRequest:k}=await Promise.resolve().then(c.bind(c,93999)),l=await j(a);if(!l.allowed)return{error:(0,g.yj)(l.error?h.gx.SERVICE_UNAVAILABLE:h.gx.PAYMENT_REQUIRED,l.reason||"Budget exceeded")};let m=await k(a);if(!m.allowed){let a=m.retryAfter?{"Retry-After":String(m.retryAfter)}:void 0;return{error:new Response(JSON.stringify({error:{message:m.reason}}),{status:m.status||429,headers:{"Content-Type":"application/json",...a}})}}return{policy:d,run:async a=>{let b;try{b=await a()}catch(a){throw m.release?.(),a}return(0,i.L)(b,m.release,m.touch)}}}i=(j.then?(await j)():j)[0],d()}catch(a){d(a)}})},56895:(a,b,c)=>{c.d(b,{WY:()=>ap,F8:()=>ar,NJ:()=>aq});var d,e=c(43659),f=c(41004),g=c(8590),h=c(35024),i=c(83477),j=c(75681),k=c(48806),l=c(87098),m=c(17559),n=c(25433),o=c(34204),p=c(15082),q=c(90874),r=c(79875),s=c(91861),t=c(64991);let u=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/,v=new Set(["free","freeTier","oauth","apikey"]),w=new Set(["none","oauth","apikey"]),x=new Set(["llm","embedding","image","imageToText","music","stt","tts","video","webFetch","webSearch"]),y=new Set(["antigravity","claude","codex","commandcode","cursor","gemini","gemini-cli","kiro","ollama","openai","openai-response","openai-responses","vertex"]),z=new Set(["public","trusted-local","loopback-service"]),A=new Set(["terminal","kiro-eventstream","none"]),B=["embeddingConfig","imageConfig","imageToTextConfig","musicConfig","sttConfig","ttsConfig","videoConfig"],C=["connectMs","firstEventMs","progressIdleMs","absoluteMs"],D=Object.freeze({quotaSource:Object.freeze({strategy:"none",provenance:"none"}),deadlineProfile:Object.freeze({connectMs:15e3,firstEventMs:6e4,progressIdleMs:6e4,absoluteMs:3e5}),integrityProfile:Object.freeze({mode:"terminal",requireTerminal:!0})});class E extends Error{constructor(a,b){super(`Invalid provider descriptor ${a}: ${b}`),this.name="ProviderDescriptorError",this.path=a}}function F(a,b){throw new E(a,b)}function G(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)}function H(a,b){"string"==typeof a&&u.test(a)||F(b,"must be a stable lowercase ID")}function I(a,b,c){Array.isArray(a)&&0!==a.length||F(b,"must be a non-empty array");let d=new Set;for(let e of a)"string"==typeof e&&c.has(e)||F(b,"contains an unsupported value"),d.has(e)&&F(b,"contains a duplicate value"),d.add(e)}function J(a){let b=[];for(let[c,d]of Object.entries(a||{}))/(?:base|validate|responses|messages|token|auth|refresh)urls?$/i.test(c)&&("string"==typeof d?b.push(d):Array.isArray(d)&&b.push(...d));return b}function K(a,b,c="public"){for(let d of J(a)){let a;try{a=new URL(d)}catch{F(b,"contains a malformed endpoint")}(a.username||a.password)&&F(b,"endpoint credentials are not allowed"),"public"===c&&"https:"!==a.protocol&&F(b,"public endpoints must use HTTPS"),"public"===c||["http:","https:"].includes(a.protocol)||F(b,"trusted local endpoints must use HTTP or HTTPS")}}function L(a,b){Array.isArray(a)&&0!==a.length||F(b,"must contain a static fallback");let c=new Set;for(let d of a)G(d)&&"string"==typeof d.id&&0!==d.id.length||F(b,"contains a model without an ID"),c.has(d.id)&&F(b,`contains duplicate model ${d.id}`),c.add(d.id)}function M(a,b){for(let c of(G(a)||F(b,"must be an object"),C))(!Number.isInteger(a[c])||a[c]<1e3||a[c]>9e5)&&F(`${b}.${c}`,"must be between 1000 and 900000 milliseconds");a.absoluteMs<a.connectMs&&F(`${b}.absoluteMs`,"must cover connect time")}let N={id:"antigravity",alias:"ag",category:"oauth",authModes:["oauth"],display:{...j.AI_PROVIDERS.antigravity},serviceKinds:j.AI_PROVIDERS.antigravity.serviceKinds,capabilities:{streaming:!0,tools:!0,thinking:!0},transport:h.xq.antigravity,models:i.vq.ag,quotaSource:{strategy:"provider-api",provenance:"live-or-last-success"},refreshProfile:t.Wk,deadlineProfile:{...D.deadlineProfile,variants:{thinking:{connectMs:D.deadlineProfile.connectMs,firstEventMs:f.iL,progressIdleMs:f.SI,absoluteMs:f.P4}}},integrityProfile:D.integrityProfile,dashboard:{connection:"oauth",validation:"quota-or-model"}},O={id:"kiro",alias:"kr",category:"oauth",authModes:j.AI_PROVIDERS.kiro.authModes,display:{...j.AI_PROVIDERS.kiro},serviceKinds:["llm"],capabilities:{streaming:!0,tools:!0,thinking:!0},transport:h.xq.kiro,models:i.vq.kr,quotaSource:{strategy:"provider-api",provenance:"live-or-last-success"},refreshProfile:(0,t.JJ)("kiro"),deadlineProfile:D.deadlineProfile,integrityProfile:{mode:"kiro-eventstream",requireTerminal:!0,verifiedWindowMs:9e5,cleanProbesToRecover:5,memoryLimitBytes:2097152,maxBytes:0x4000000},dashboard:{connection:"oauth-or-apikey",validation:"profile-or-model"}},P={id:"codex",alias:"cx",category:"oauth",authModes:["oauth"],display:{...j.AI_PROVIDERS.codex},serviceKinds:j.AI_PROVIDERS.codex.serviceKinds,capabilities:{streaming:!0,tools:!0,thinking:!0},transport:h.xq.codex,models:i.vq.cx,quotaSource:{strategy:"provider-api",provenance:"live-or-last-success"},refreshProfile:t.Wk,deadlineProfile:D.deadlineProfile,integrityProfile:D.integrityProfile,dashboard:{connection:"oauth",validation:"catalog-or-quota"}},Q={id:"cursor",alias:"cu",category:"oauth",authModes:["oauth"],display:{...j.AI_PROVIDERS.cursor},serviceKinds:["llm"],capabilities:{streaming:!0,tools:!0,liveCatalog:!0},transport:h.xq.cursor,models:i.vq.cu,quotaSource:{strategy:"provider-api",provenance:"live-or-last-success"},refreshProfile:t.Wk,deadlineProfile:D.deadlineProfile,integrityProfile:D.integrityProfile,dashboard:{connection:"oauth",validation:"account-or-model"}},R={id:"github",alias:"gh",category:"oauth",authModes:["oauth"],display:{...j.AI_PROVIDERS.github},serviceKinds:j.AI_PROVIDERS.github.serviceKinds,capabilities:{streaming:!0,tools:!0,responseEscalation:!0},transport:h.xq.github,models:i.vq.gh,quotaSource:{strategy:"provider-api",provenance:"live-or-last-success"},refreshProfile:t.Wk,deadlineProfile:D.deadlineProfile,integrityProfile:D.integrityProfile,dashboard:{connection:"oauth",validation:"quota-or-model"},embeddingConfig:j.AI_PROVIDERS.github.embeddingConfig},S=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","modelsFetcher","mediaPriority","hiddenKinds"],T=[k.A,l.A,m.A,n.A,o.A,p.A,q.A,r.A,s.A,N,O,P,Q,R];function U(a={}){return Object.fromEntries(S.filter(b=>void 0!==a[b]).map(b=>[b,a[b]]))}let V=new Set([...Object.keys(j.AI_PROVIDERS),...Object.keys(h.xq)]),W=new Map(T.map(a=>[a.id,a])),X=new Set(["antigravity","kiro","codex","cursor","github"]),Y={};for(let a of V){let b=function(a){let b=j.AI_PROVIDERS[a]||{},c=b.alias||a;return{id:a,alias:c,category:b.noAuth?"free":b.hasOAuth?"oauth":"apikey",authModes:b.authModes,hasOAuth:b.hasOAuth,noAuth:b.noAuth,passthroughModels:b.passthroughModels,display:function(a={}){let b=new Set(S);return Object.fromEntries(Object.entries(a).filter(([a])=>!b.has(a)))}(b),transport:h.xq[a],models:i.vq[c]||i.vq[a]||[],...U(b)}}(a),c=W.has(a)?(d=W.get(a),{...b,...d,display:{...b.display,...d.display},transport:{...b.transport,...d.transport},models:function(a=[],b=[]){let c=new Map;for(let d of[...a,...b])d?.id&&c.set(d.id,{...c.get(d.id),...d});return[...c.values()]}(b.models,d.models)}):b;Y[a]=X.has(a)?function(a,{optional:b=!1}={}){try{return function(a){if(G(a)||F("root","must be an object"),H(a.id,"id"),H(a.alias,"alias"),void 0!==a.aliases)for(let b of(Array.isArray(a.aliases)||F("aliases","must be an array"),a.aliases))H(b,"aliases");v.has(a.category)||F("category","is unsupported"),I(a.authModes,"authModes",w),I(a.serviceKinds,"serviceKinds",x),G(a.display)&&"string"==typeof a.display.name&&a.display.name.trim()||F("display.name","is required"),G(a.capabilities)||F("capabilities","must be an object"),G(a.transport)||F("transport","must be an object"),y.has(a.transport.format)||F("transport.format","is unsupported");let b=a.transport.trustClass||"public";z.has(b)||F("transport.trustClass","is unsupported"),0===J(a.transport).length&&F("transport","requires an endpoint"),K(a.transport,"transport",b),L(a.models,"models"),G(a.quotaSource)&&"string"==typeof a.quotaSource.strategy&&"string"==typeof a.quotaSource.provenance||F("quotaSource","must declare strategy and provenance"),G(c=a.refreshProfile)||F("refreshProfile","must be an object"),(!Number.isInteger(c.maxConcurrent)||c.maxConcurrent<1)&&F("refreshProfile.maxConcurrent","must be a positive integer"),(!Number.isInteger(c.minDelayMs)||c.minDelayMs<0)&&F("refreshProfile.minDelayMs","must be a non-negative integer");var c,d=a.deadlineProfile;if(M(d,"deadlineProfile"),void 0!==d.variants)for(let[a,b]of(G(d.variants)||F("deadlineProfile.variants","must be an object"),Object.entries(d.variants)))M(b,`deadlineProfile.variants.${a}`);var e=a.integrityProfile;for(let a of(G(e)&&A.has(e.mode)||F("integrityProfile.mode","is unsupported"),"boolean"!=typeof e.requireTerminal&&F("integrityProfile.requireTerminal","must be boolean"),["memoryLimitBytes","maxBytes","verifiedWindowMs","cleanProbesToRecover"]))void 0!==e[a]&&(!Number.isInteger(e[a])||e[a]<=0)&&F(`integrityProfile.${a}`,"must be a positive integer");G(a.dashboard)&&"string"==typeof a.dashboard.connection&&"string"==typeof a.dashboard.validation||F("dashboard","must declare connection and validation modes");for(let b of B){let c=a[b];void 0!==c&&(G(c)||F(b,"must be an object"),K(c,b,c.trustClass||"public"),void 0!==c.models&&L(c.models,`${b}.models`))}return function a(b,c=new WeakMap){if(null===b||"object"!=typeof b)return b;if(c.has(b))return c.get(b);let d=Array.isArray(b)?[]:{};for(let[e,f]of(c.set(b,d),Object.entries(b)))d[e]=a(f,c);return Object.freeze(d)}(a)}(a)}catch(d){let c;if(!b)throw d;return Object.freeze({id:"string"==typeof a?.id&&u.test(a.id)?a.id:"optional-provider",disabled:!0,diagnostic:(c=d instanceof E?d.path:"unknown",`Provider descriptor disabled: invalid ${c}`.slice(0,160))})}}(c):c}let Z={},$={},_={};for(let a of Object.values(Y)){a.transport&&(Z[a.id]=a.transport),$[a.alias||a.id]=a.models||[];let b=U(a);Object.keys(b).length>0&&(_[a.id]=b)}let aa="application/json";function ab(a){let b=Error(a);return b.status=400,b}let ac="application/json",ad=new Set(["veo-3.1-generate-preview","veo-3.1-fast-generate-preview","veo-3.0-generate-001","veo-2.0-generate-001"]),ae={duration:"durationSeconds",aspect_ratio:"aspectRatio",resolution:"resolution",negative_prompt:"negativePrompt",seed:"seed",storage_uri:"storageUri",generate_audio:"generateAudio"};function af(a){let b=Error(a);return b.status=400,b}function ag(a){return"string"==typeof a&&a.length>0&&"."!==a&&".."!==a&&/^[A-Za-z0-9._~-]+$/.test(a)}function ah(a){if("string"!=typeof a)return null;let b=a.split("/");return 10===b.length&&"projects"===b[0]&&"locations"===b[2]&&"publishers"===b[4]&&"google"===b[5]&&"models"===b[6]&&"operations"===b[8]&&ag(b[1])&&ag(b[3])&&ag(b[7])&&ag(b[9])?{name:a,project:b[1],location:b[3],model:b[7],operation:b[9]}:null}function ai(a){if("string"!=typeof a||!/^[A-Za-z0-9_-]+$/.test(a))return null;try{let b=Buffer.from(a,"base64url").toString("utf8");if(Buffer.from(b,"utf8").toString("base64url")!==a)return null;return ah(b)?.name||null}catch{return null}}function aj(a){return`https://${a}-aiplatform.googleapis.com/v1`}function ak(a){return Response.json(a,{headers:{"Access-Control-Allow-Origin":"*"}})}let al={openrouter:{buildRequest({config:a,action:b,requestId:c,model:d,parsedBody:e,contentType:f,token:g}){let i=a.baseUrl.replace(/\/$/,""),j={Accept:aa,...h.xq.openrouter.headers};if(g&&(j.Authorization=`Bearer ${g}`),c)return{url:`${i}/${encodeURIComponent(c)}`,init:{method:"GET",headers:j}};if("generations"!==b)throw ab(`OpenRouter does not support video action: ${b}`);if(f?.split(";",1)[0].trim().toLowerCase()!==aa||!e||"object"!=typeof e||Array.isArray(e))throw ab("OpenRouter video generation requires an application/json object body");return j["Content-Type"]=aa,{url:i,init:{method:"POST",headers:j,body:JSON.stringify({...e,model:d})}}},parseResponse:async a=>new Response(await a.arrayBuffer(),{status:a.status,headers:{"Content-Type":a.headers.get("content-type")||aa,"Access-Control-Allow-Origin":"*"}})},vertex:{buildRequest({action:a,requestId:b,model:c,parsedBody:d,credentials:e}){let f={Accept:ac,"Content-Type":ac};if(e?.accessToken&&(f.Authorization=`Bearer ${e.accessToken}`),b){let a=ai(b),c=a&&ah(a);if(!c)throw af("Invalid Vertex operation ID");if(!ad.has(c.model))throw af("Invalid or unsupported Vertex video model");return{url:`${aj(c.location)}/projects/${c.project}/locations/${c.location}/publishers/google/models/${c.model}:fetchPredictOperation`,init:{method:"POST",headers:f,body:JSON.stringify({operationName:a})}}}if("generations"!==a)throw af(`Vertex does not support video action: ${a}`);if(!ag(c)||!ad.has(c))throw af("Invalid or unsupported Vertex video model");if(!d||"object"!=typeof d||Array.isArray(d))throw af("Vertex video generation requires a JSON object body");let{project:g,location:h}=function(a){let b=function(a){let b=a?.apiKey;if(b&&"object"==typeof b)return b;if("string"!=typeof b||!b.trim().startsWith("{"))return null;try{let a=JSON.parse(b);return a&&"object"==typeof a?a:null}catch{return null}}(a),c=a?.projectId||a?.providerSpecificData?.projectId||b?.project_id,d=a?.providerSpecificData?.location||"us-central1";if(!ag(c))throw af("Invalid or missing Vertex project ID");if(!ag(d))throw af("Invalid Vertex location");return{project:c,location:d}}(e),i={prompt:d.prompt};void 0!==d.image&&(i.image=d.image);let j={};for(let[a,b]of Object.entries(ae))void 0!==d[a]&&(j[b]=d[a]);return{url:`${aj(h)}/projects/${g}/locations/${h}/publishers/google/models/${c}:predictLongRunning`,init:{method:"POST",headers:f,body:JSON.stringify({instances:[i],parameters:j})}}},async parseResponse(a,{requestId:b}){let c=await a.json();if(!b){var d;let a=ah(d=c?.name)?Buffer.from(d,"utf8").toString("base64url"):null;if(!a)throw af("Vertex returned an invalid operation name");return ak({request_id:a,status:"pending"})}if(!c?.done){let a=c?.metadata?.progressPercent;return Number.isFinite(a)?ak({status:"processing",progress:a}):ak({status:"pending"})}if(c.error){let a=ai(b),d=String(c.error.message||"");return ak({status:"failed",error:{code:c.error.code,message:a?d.split(a).join("[redacted]"):d}})}let e=c?.response?.videos?.[0];return e?.gcsUri!==void 0?ak({status:"done",video:{url:e.gcsUri}}):e?.bytesBase64Encoded!==void 0?ak({status:"done",video:{b64_json:e.bytesBase64Encoded}}):ak({status:"done"})}}},am=Number(process.env.VIDEO_FETCH_TIMEOUT_MS),an=Number.isFinite(am)?Math.max(5e3,Math.min(am,6e5)):12e4,ao=new Set(["generations","edits","extensions"]);function ap(a){return _[a]?.videoConfig||null}function aq(a,b=null){if(!a)return a;let c=String(a).replace(/Bearer\s+[A-Za-z0-9._~+/=-]{8,}/gi,"Bearer [redacted]");for(let a of["accessToken","refreshToken","apiKey"]){let d=b?.[a];"string"==typeof d&&d.length>=8&&(c=c.split(d).join("[redacted]"))}return c}async function ar({provider:a,action:b=null,requestId:c=null,rawBody:d=null,model:h=null,parsedBody:i=null,contentType:j=null,idempotencyKey:k=null,credentials:l,signal:m,timeoutMs:n=an,log:o,prepareCredentials:p,onCredentialsRefreshed:q}){let r,s,t=ap(a);if(!t)return(0,e.A1)(f.gx.BAD_REQUEST,`Provider '${a}' does not support video generation`);if(!c&&!ao.has(b))return(0,e.A1)(f.gx.BAD_REQUEST,`Unknown video action: ${b}`);let u=al[a]||null,v="vertex"===a||"vertex-partner"===a,w=c?"GET":"POST",x=(s="function"==typeof AbortSignal?.timeout?AbortSignal.timeout(n):null,m&&s&&"function"==typeof AbortSignal.any?AbortSignal.any([m,s]):m||s||void 0),y=()=>v?l?.accessToken:l?.accessToken||l?.apiKey,z=a=>u.buildRequest({config:t,action:b,requestId:c,model:h,parsedBody:i,rawBody:d,contentType:j,token:a,idempotencyKey:k,credentials:l}),A=null;if(u)try{A=z(y())}catch(b){if(b?.status===f.gx.BAD_REQUEST)return(0,e.A1)(f.gx.BAD_REQUEST,b.message);return(0,e.A1)(f.gx.BAD_GATEWAY,aq(`[${a}] video request build failed: ${b.message}`,l))}if(p){let b=await p(l);if(b&&(l=b),u)try{A=z(y())}catch(b){if(b?.status===f.gx.BAD_REQUEST)return(0,e.A1)(f.gx.BAD_REQUEST,b.message);return(0,e.A1)(f.gx.BAD_GATEWAY,aq(`[${a}] video request build failed: ${b.message}`,l))}}let B=(a,e=null)=>{let f;if(u){let b=e||z(a);return fetch(b.url,{...b.init,signal:x})}return fetch((f=t.baseUrl.replace(/\/$/,""),c?`${f}/${encodeURIComponent(c)}`:`${f}/${b}`),{method:w,headers:function({token:a,contentType:b,idempotencyKey:c}){let d={Accept:"application/json"};if(a&&(d.Authorization=`Bearer ${a}`),b&&(d["Content-Type"]=b),c){let a=String(c).replace(/[\r\n\t]/g,"").slice(0,256);a&&(d["Idempotency-Key"]=a)}return d}({token:a,contentType:"POST"===w?j:null,idempotencyKey:"POST"===w?k:null}),body:"POST"===w?d:void 0,signal:x})};if(v&&!l?.accessToken){let b;try{b=await (0,g.$B)(a,l,o)}catch(b){return(0,e.A1)(f.gx.BAD_GATEWAY,aq(`[${a}] video access token mint failed: ${b.message}`,l))}if(!b?.accessToken)return(0,e.A1)(f.gx.BAD_GATEWAY,aq(`[${a}] video access token mint failed`,l));Object.assign(l,b),q&&await q(b),A=z(y())}try{r=await B(y(),A)}catch(b){if(b?.status===f.gx.BAD_REQUEST)return(0,e.A1)(f.gx.BAD_REQUEST,b.message);if(b?.name==="AbortError"||b?.name==="TimeoutError")return(0,e.A1)(f.gx.REQUEST_TIMEOUT,`[${a}] video ${w} aborted: ${b.message}`);return(0,e.A1)(f.gx.BAD_GATEWAY,aq(`[${a}] video upstream fetch failed: ${b.message}`,l))}if((r.status===f.gx.UNAUTHORIZED||r.status===f.gx.FORBIDDEN)&&(l?.refreshToken||v)){let b=null;try{b=await (0,g.$B)(a,l,o)}catch(b){o?.warn?.("TOKEN",`${a} | video refresh error: ${aq(b.message,l)}`)}if(b?.accessToken){o?.info?.("TOKEN",`${a.toUpperCase()} | refreshed for video ${w}`),Object.assign(l,b),q&&await q(b);try{await r.body?.cancel?.()}catch{}try{r=await B(y())}catch(b){return(0,e.A1)(f.gx.BAD_GATEWAY,aq(`[${a}] video retry after refresh failed: ${b.message}`,l))}}else o?.warn?.("TOKEN",`${a.toUpperCase()} | video refresh failed — account needs re-auth`)}if(r.ok&&u)return{success:!0,response:await u.parseResponse(r,{config:t,provider:a,action:b,requestId:c,model:h,parsedBody:i})};let C=await r.text().catch(()=>"");if(!r.ok){let b=aq(C||`HTTP ${r.status}`,l);return(0,e.A1)(r.status,`[${a}] ${b.slice(0,2e3)}`)}return{success:!0,response:new Response(C,{status:r.status,headers:{"Content-Type":r.headers.get("content-type")||"application/json","Access-Control-Allow-Origin":"*"}})}}},96846:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{g:()=>t,s:()=>v});var e=c(80238),f=c(89718),g=c(38775),h=c(56895),i=c(43659),j=c(41004),k=c(58136),l=c(11410),m=c(7803),n=a([l]);function o(a){return a.headers.get("x-zevai-connection-id")||a.headers.get("x-connection-id")||null}l=(n.then?(await n)():n)[0];let w=new Set([j.gx.UNAUTHORIZED,j.gx.FORBIDDEN,j.gx.RATE_LIMITED]);async function p(a){let b=(0,e.Tr)(a);if((await (0,f.mt)()).requireApiKey){if(!b)return(0,i.yj)(j.gx.UNAUTHORIZED,"Missing API key");if(!await (0,e.kI)(b))return(0,i.yj)(j.gx.UNAUTHORIZED,"Invalid API key")}return null}async function q(a){let b,c=a.headers.get("content-type")||"",d=Number.isFinite(b=Number(process.env.MAX_VIDEO_REQUEST_BYTES))?Math.max(1024,Math.min(b,0x4000000)):0x2000000,e=Number(a.headers.get("content-length"));if(Number.isFinite(e)&&e>d)return{error:(0,i.yj)(j.gx.PAYLOAD_TOO_LARGE,"Video request body is too large")};if(c.includes("application/json")){let b,e=await a.text();if(Buffer.byteLength(e)>d)return{error:(0,i.yj)(j.gx.PAYLOAD_TOO_LARGE,"Video request body is too large")};try{b=JSON.parse(e)}catch{return{error:(0,i.yj)(j.gx.BAD_REQUEST,"Invalid JSON body")}}return{raw:e,parsed:b,contentType:c}}let f=Buffer.from(await a.arrayBuffer());return f.byteLength>d?{error:(0,i.yj)(j.gx.PAYLOAD_TOO_LARGE,"Video request body is too large")}:{raw:f,parsed:null,contentType:c}}async function r(a){if(!a?.model)return{provider:"xai",model:null};let b=String(a.model),c=await (0,g.mA)(b);return c.provider?(0,h.WY)(c.provider)?{provider:c.provider,model:c.model}:b.includes("/")?{error:(0,i.yj)(j.gx.BAD_REQUEST,`Provider '${c.provider}' does not support video generation`)}:{provider:"xai",model:b}:{error:(0,i.yj)(j.gx.BAD_REQUEST,"Combos are not supported for video generation")}}function s(a,b){if(!b)return a;let c=new Headers(a.headers);return c.set("x-zevai-connection-id",String(b)),c.set("x-connection-id",String(b)),c.set("Access-Control-Expose-Headers","x-zevai-connection-id, x-connection-id"),new Response(a.body,{status:a.status,headers:c})}async function t(a,b){let c=await p(a);if(c)return c;let d=await q(a);if(d.error)return d.error;let f=await r(d.parsed);if(f.error)return f.error;let{provider:g,model:h}=f,i=await (0,l.M)((0,e.Tr)(a),d.parsed?.model?String(d.parsed.model):null);return i.error?i.error:i.run(()=>u(a,b,d,g,h))}async function u(a,b,c,d,f){let g=c.raw;c.parsed&&f&&c.parsed.model!==f&&(g=JSON.stringify({...c.parsed,model:f}));let l=o(a),n=(0,e.Tr)(a),p=a.headers.get("idempotency-key")||null,q=new Set,r=null,t=null;for(;;){let o=await (0,e.c1)(d,q,f,{preferredConnectionId:l,...n?{apiKey:n}:{}});if(!o||o.allRateLimited){if(o?.allRateLimited){let a=r||o.lastError||"Unavailable",b=t||Number(o.lastErrorCode)||j.gx.SERVICE_UNAVAILABLE;return(0,i.wO)(b,`[${d}/${f||"video"}] ${a}`,o.retryAfter,o.retryAfterHuman)}if(0===q.size)return(0,i.yj)(j.gx.BAD_REQUEST,`No credentials for provider: ${d}`);return(0,i.yj)(t||j.gx.SERVICE_UNAVAILABLE,r||"All accounts unavailable")}let u=await (0,h.F8)({provider:d,action:b,model:f,parsedBody:c.parsed,rawBody:g,contentType:c.contentType||null,idempotencyKey:p,credentials:o,prepareCredentials:async a=>(Object.assign(a,await (0,k.eU)(d,a)),a),signal:a.signal,log:m,onCredentialsRefreshed:async a=>{await (0,k.vN)(o.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})}});if(u.success)return await (0,e.Pt)(o.connectionId,o,f),m.info("VIDEO",`${d.toUpperCase()} | ${b} accepted (connection ${o.connectionId})`),s(u.response,o.connectionId);let{shouldFallback:v}=await (0,e.vk)(o.connectionId,u.status,(0,h.NJ)(u.error,o),d,f);if(v&&w.has(u.status)){q.add(o.connectionId),r=u.error,t=u.status;continue}return u.response}}async function v(a,b){let c=await p(a);if(c)return c;if(!b)return(0,i.yj)(j.gx.BAD_REQUEST,"Missing video request id");if(String(b).length>256)return(0,i.yj)(j.gx.BAD_REQUEST,"Video request id is too long");let d=o(a),g=d?await (0,f.Mc)(d):null,l=g?.provider&&(0,h.WY)(g.provider)?g.provider:null,n=new URL(a.url).searchParams.get("provider");if(!l&&n&&!(0,h.WY)(n))return(0,i.yj)(j.gx.BAD_REQUEST,`Provider '${n}' does not support video generation`);let q=l||n||"xai",r=!!d,t=(0,e.Tr)(a),u=await (0,e.c1)(q,null,null,{preferredConnectionId:d,strictPreferred:r,...t?{apiKey:t}:{}});if(!u||u.allRateLimited)return(0,i.yj)(j.gx.BAD_REQUEST,`No credentials for provider: ${q}`);let v=await (0,h.F8)({provider:q,requestId:b,credentials:u,prepareCredentials:async a=>(Object.assign(a,await (0,k.eU)(q,a)),a),signal:a.signal,log:m,onCredentialsRefreshed:async a=>{await (0,k.vN)(u.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})}});return v.success?(await (0,e.Pt)(u.connectionId,u,null),s(v.response,u.connectionId)):(await (0,e.vk)(u.connectionId,v.status,(0,h.NJ)(v.error,u),q,null),v.response)}d()}catch(a){d(a)}})}};
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
) -Verb RunAs -Wait -PassThru -WindowStyle Hidden;
|
|
6
6
|
if ($proc.ExitCode -ne 0) { throw "Elevated command exited with code $($proc.ExitCode)" }
|
|
7
7
|
`;return new Promise((a,b)=>{d(`powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -Command ${h(c)}`,{windowsHide:!0},(c,d,e)=>{if(c){let a=e||c.message;a.includes("canceled by the user")||a.includes("operation was canceled")?b(Error("User canceled UAC prompt")):b(Error(a))}else a(d)})})},quotePs:h}},66936:(a,b,c)=>{let{exec:d,spawn:e,execSync:f}=c(79646),g=c(29021),h=c(33873);c(21820);let{log:i,err:j}=c(87777),{TOOL_HOSTS:k}=c(85341),{runElevatedPowerShell:l,isAdmin:m}=c(64809);function n(a,b,c){let d=`${a}.zevai.new`,e=`${a}.zevai.bak`;try{g.writeFileSync(d,c,"utf8");try{g.unlinkSync(e)}catch{}g.renameSync(a,e);try{g.renameSync(d,a)}catch(c){try{g.renameSync(e,a)}catch{g.writeFileSync(a,b,"utf8")}throw c}try{g.unlinkSync(e)}catch{}}finally{try{g.unlinkSync(d)}catch{}}}let o="win32"===process.platform,p="darwin"===process.platform,q=o?h.join(process.env.SystemRoot||"C:\\Windows","System32","drivers","etc","hosts"):"/etc/hosts";function r(){if(o)return!1;try{return f("command -v sudo",{stdio:"ignore",windowsHide:!0}),!0}catch{return!1}}function s(){if(o||!r())return!0;try{return f("sudo -n true",{stdio:"ignore",windowsHide:!0}),!0}catch{return!1}}function t(a,b){return new Promise((c,d)=>{let f=r(),g=f?e("sudo",["-S","sh","-c",a],{stdio:["pipe","pipe","pipe"],windowsHide:!0}):e("sh",["-c",a],{stdio:["ignore","pipe","pipe"],windowsHide:!0}),h="",i="";g.stdout.on("data",a=>{h+=a}),g.stderr.on("data",a=>{i+=a}),g.on("close",a=>{0===a?c(h):d(Error(i||`Exit code ${a}`))}),f&&(g.stdin.write(`${b}
|
|
8
|
-
`),g.stdin.end())})}
|
|
8
|
+
`),g.stdin.end())})}let u="# zevairouter";function v(a){let b=a.indexOf("#"),c=(-1===b?a:a.slice(0,b)).trim(),d=-1===b?"":a.slice(b).trim();if(!c)return null;let[e,...f]=c.split(/\s+/);return{ip:e,names:f.map(a=>a.toLowerCase()),comment:d}}function w(a,b){let c=b.toLowerCase();return a.split(/\r?\n/).some(a=>{let b=v(a);return b?.ip==="127.0.0.1"&&b.names.includes(c)})}function x(a,b){let c=v(a);return!!c&&"127.0.0.1"===c.ip&&1===c.names.length&&(!c.comment||c.comment===u)&&b.some(a=>a.toLowerCase()===c.names[0])}function y(a,b,c){return a.split(/\r?\n/).filter(a=>!x(a,b)).join(c).replace(/[\r\n\s]+$/g,"")+c}async function z(a){o||(p?await t("dscacheutil -flushcache && killall -HUP mDNSResponder",a):await t("resolvectl flush-caches 2>/dev/null || true",a))}function A(a=null){try{let b=g.readFileSync(q,"utf8");if(a)return w(b,a);return k.antigravity.every(a=>w(b,a))}catch{return!1}}async function B(a,b){let c=k[a];if(!c)throw Error(`Unknown tool: ${a}`);let d=c.filter(a=>!A(a));if(0===d.length)return void i(`🌐 DNS ${a}: already active`);try{if(o){let a=g.readFileSync(q,"utf8"),b=a.replace(/[\r\n\s]+$/g,""),c=d.map(a=>`127.0.0.1 ${a} ${u}`).join("\r\n"),e=`${b}\r
|
|
9
9
|
${c}\r
|
|
10
|
-
`;n(q,a,e),await l("ipconfig /flushdns | Out-Null")}else{let a=g.readFileSync(q,"utf8").replace(/[\r\n\s]+$/g,""),c=d.map(a=>`127.0.0.1 ${a}`).join("\n"),e=`${a}
|
|
10
|
+
`;n(q,a,e),await l("ipconfig /flushdns | Out-Null")}else{let a=g.readFileSync(q,"utf8").replace(/[\r\n\s]+$/g,""),c=d.map(a=>`127.0.0.1 ${a} ${u}`).join("\n"),e=`${a}
|
|
11
11
|
${c}
|
|
12
|
-
`.replace(/'/g,"'\\''");await t(`printf '%s' '${e}' | tee ${q} > /dev/null`,b),await
|
|
12
|
+
`.replace(/'/g,"'\\''");await t(`printf '%s' '${e}' | tee ${q} > /dev/null`,b),await z(b)}i(`🌐 DNS ${a}: ✅ added ${d.join(", ")}`)}catch(a){throw Error(a.message?.includes("incorrect password")?"Wrong sudo password":`Failed to add DNS entry: ${a.message}`)}}async function C(a,b){let c=k[a];if(!c)throw Error(`Unknown tool: ${a}`);let d=(()=>{try{return g.readFileSync(q,"utf8")}catch{return""}})(),e=c.filter(a=>d.split(/\r?\n/).some(b=>x(b,[a])));if(0===e.length)return void i(`🌐 DNS ${a}: already inactive`);try{if(o){let a=g.readFileSync(q,"utf8"),b=y(a,e,"\r\n");n(q,a,b),await l("ipconfig /flushdns | Out-Null")}else{let a=g.readFileSync(q,"utf8"),c=y(a,e,"\n").replace(/'/g,"'\\''");await t(`printf '%s' '${c}' | tee ${q} > /dev/null`,b),await z(b)}i(`🌐 DNS ${a}: ✅ removed ${e.join(", ")}`)}catch(a){throw Error(a.message?.includes("incorrect password")?"Wrong sudo password":`Failed to remove DNS entry: ${a.message}`)}}async function D(a){for(let b of Object.keys(k))try{await C(b,a)}catch(a){j(`DNS ${b}: failed to remove — ${a.message}`)}}a.exports={TOOL_HOSTS:k,addDNSEntry:B,removeDNSEntry:C,removeAllDNSEntries:D,removeAllDNSEntriesSync:function(){try{if(!g.existsSync(q))return;let a=Object.values(k).flat(),b=g.readFileSync(q,"utf8"),c=y(b,a,o?"\r\n":"\n");if(c===b)return;if(g.writeFileSync(q,c,"utf8"),o)try{f("ipconfig /flushdns",{windowsHide:!0,stdio:"ignore"})}catch{}else if(p)try{f("dscacheutil -flushcache && killall -HUP mDNSResponder",{stdio:"ignore"})}catch{}else try{f("resolvectl flush-caches 2>/dev/null || true",{stdio:"ignore"})}catch{}}catch{}},execWithPassword:t,isSudoAvailable:r,canRunSudoWithoutPassword:s,isSudoPasswordRequired:function(){return!o&&r()&&!s()},checkDNSEntry:A,checkAllDNSStatus:function(){try{let a=g.readFileSync(q,"utf8"),b={};for(let[c,d]of Object.entries(k))b[c]=d.every(b=>w(a,b));return b}catch{return Object.fromEntries(Object.keys(k).map(a=>[a,!1]))}},__test__:{hostsHasRedirect:w,stripRouterEntries:y}}},82193:(a,b,c)=>{let d=c(29021),e=c(33873),f=c(21820),g="zevai";function h(){return"win32"===process.platform?e.join(process.env.APPDATA||e.join(f.homedir(),"AppData","Roaming"),g):e.join(f.homedir(),`.${g}`)}let i=function(){let a=process.env.DATA_DIR;if(!a)return h();try{return d.mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${g}`),h();throw b}}(),j=e.join(i,"mitm");a.exports={DATA_DIR:i,MITM_DIR:j}},85341:a=>{a.exports={TOOL_HOSTS:{antigravity:["daily-cloudcode-pa.googleapis.com","cloudcode-pa.googleapis.com"],copilot:["api.individual.githubcopilot.com"],kiro:["q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com"],cursor:["api2.cursor.sh"]}}},87777:(a,b,c)=>{let d=c(29021),e=c(33873),f=c(74075),{DATA_DIR:g}=c(82193),{LOG_BLACKLIST_URL_PARTS:h}=c(17511);function i(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}let j=e.join(g,"logs","mitm");d.existsSync(j)||d.mkdirSync(j,{recursive:!0});let k=/^\s*(\{\s*\}|\[\s*\]|null)?\s*$/;function l(a,b=80){return String(a).replace(/[^a-zA-Z0-9]/g,"_").substring(0,b)}function m(a){return!!a&&h.some(b=>a.includes(b))}a.exports={log:a=>console.log(`[${i()}] [MITM] ${a}`),err:a=>console.error(`[${i()}] ❌ [MITM] ${a}`),dumpRequest:function(a,b,c="raw"){if(m(a.url))return null;try{let f=new Date().toISOString().replace(/[:.]/g,"-"),g=l((a.headers.host||"")+a.url),h=e.join(j,`${f}_${c}_${g}.req.json`),i=null;try{i=JSON.parse(b.toString())}catch{}return d.writeFileSync(h,JSON.stringify({method:a.method,url:a.url,host:a.headers.host,headers:a.headers,body:i??b.toString("utf8")},null,2)),h}catch{return null}},createResponseDumper:function(a,b="raw"){if(m(a.url))return null;let c=new Date().toISOString().replace(/[:.]/g,"-"),g=l((a.headers.host||"")+a.url),h=e.join(j,`${c}_${b}_${g}.res.txt`),i=0,n={},o=[];return{writeHeader:(a,b)=>{i=a,n=b||{}},writeChunk:a=>{null!=a&&o.push(Buffer.isBuffer(a)?a:Buffer.from(a))},end:()=>{try{let a=Buffer.concat(o),b=n["content-encoding"]||n["Content-Encoding"],c=(function(a,b){if(!a||0===a.length)return a;try{let c=(b||"").toLowerCase();if(c.includes("gzip"))return f.gunzipSync(a);if(c.includes("br"))return f.brotliDecompressSync(a);if(c.includes("deflate"))return f.inflateSync(a)}catch{}return a})(a,b).toString("utf8");if(k.test(c))return;let e={...n};delete e["content-encoding"],delete e["Content-Encoding"];let g=`STATUS: ${i}
|
|
13
13
|
HEADERS: ${JSON.stringify(e,null,2)}
|
|
14
14
|
---BODY---
|
|
15
15
|
${c}`;d.writeFileSync(h,g)}catch{}},file:h}},clearDumpDir:function(){try{if(!d.existsSync(j))return;for(let a of d.readdirSync(j))try{d.rmSync(e.join(j,a),{recursive:!0,force:!0})}catch{}}catch{}}}}};
|