n9router 0.4.5 → 0.4.7
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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +10 -11
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/routes-manifest.json +12 -18
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +12 -7
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js +3 -3
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/antigravity-ide/route.js +1 -1
- package/.next/standalone/.next/server/app/api/antigravity-tools/import/route.js +1 -1
- package/.next/standalone/.next/server/app/api/antigravity-tools/import/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js +1 -1
- package/.next/standalone/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/login/route.js +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route.js +1 -1
- package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
- package/.next/standalone/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/.next/standalone/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
- package/.next/standalone/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
- package/.next/standalone/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/.next/standalone/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/.next/standalone/.next/server/app/api/cli-tools/opencode-settings/route.js +2 -2
- package/.next/standalone/.next/server/app/api/cloud/auth/route.js +1 -1
- package/.next/standalone/.next/server/app/api/cloud/credentials/update/route.js +1 -1
- package/.next/standalone/.next/server/app/api/cloud/model/resolve/route.js +1 -1
- package/.next/standalone/.next/server/app/api/cloud/models/alias/route.js +1 -1
- package/.next/standalone/.next/server/app/api/combos/[id]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/combos/route.js +1 -1
- package/.next/standalone/.next/server/app/api/health/route.js +1 -1
- package/.next/standalone/.next/server/app/api/init/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/request-detail/route.js +1 -1
- package/.next/standalone/.next/server/app/api/internal/usage/route.js +1 -1
- package/.next/standalone/.next/server/app/api/keys/[id]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/keys/route.js +1 -1
- package/.next/standalone/.next/server/app/api/locale/route.js +1 -1
- package/.next/standalone/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
- package/.next/standalone/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
- package/.next/standalone/.next/server/app/api/models/alias/route.js +1 -1
- package/.next/standalone/.next/server/app/api/models/availability/route.js +1 -1
- package/.next/standalone/.next/server/app/api/models/route.js +1 -1
- package/.next/standalone/.next/server/app/api/models/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/models/test/route.js +1 -1
- package/.next/standalone/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
- package/.next/standalone/.next/server/app/api/oauth/cursor/import/route.js +1 -1
- package/.next/standalone/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/.next/standalone/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/.next/standalone/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/.next/standalone/.next/server/app/api/oauth/kiro/import/route.js +1 -1
- package/.next/standalone/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/.next/standalone/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/.next/standalone/.next/server/app/api/pricing/route.js +1 -1
- package/.next/standalone/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/provider-nodes/route.js +1 -1
- package/.next/standalone/.next/server/app/api/provider-nodes/validate/route.js +1 -1
- package/.next/standalone/.next/server/app/api/providers/[id]/models/route.js +1 -1
- package/.next/standalone/.next/server/app/api/providers/[id]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/providers/[id]/test/route.js +1 -1
- package/.next/standalone/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/.next/standalone/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/providers/client/route.js +1 -1
- package/.next/standalone/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/.next/standalone/.next/server/app/api/providers/route.js +1 -1
- package/.next/standalone/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/providers/test-batch/route.js +1 -1
- package/.next/standalone/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/providers/validate/route.js +1 -1
- package/.next/standalone/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/.next/standalone/.next/server/app/api/proxy-pools/route.js +1 -1
- package/.next/standalone/.next/server/app/api/proxy-pools/vercel-deploy/route.js +33 -0
- package/.next/standalone/.next/server/app/api/{9remote/start → proxy-pools/vercel-deploy}/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/settings/database/route.js +1 -1
- package/.next/standalone/.next/server/app/api/settings/proxy-test/route.js +1 -1
- package/.next/standalone/.next/server/app/api/settings/require-login/route.js +1 -1
- package/.next/standalone/.next/server/app/api/settings/route.js +1 -1
- package/.next/standalone/.next/server/app/api/shutdown/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tags/route.js +1 -1
- package/.next/standalone/.next/server/app/api/translator/console-logs/route.js +1 -1
- package/.next/standalone/.next/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/.next/standalone/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/translator/load/route.js +1 -1
- package/.next/standalone/.next/server/app/api/translator/save/route.js +1 -1
- package/.next/standalone/.next/server/app/api/translator/send/route.js +1 -1
- package/.next/standalone/.next/server/app/api/translator/send/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/translator/translate/route.js +1 -1
- package/.next/standalone/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/tunnel/disable/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tunnel/enable/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tunnel/status/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/.next/standalone/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
- package/.next/standalone/.next/server/app/api/tunnel/tailscale-login/route.js +2 -2
- package/.next/standalone/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +2 -2
- package/.next/standalone/.next/server/app/api/usage/[connectionId]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/usage/chart/route.js +1 -1
- package/.next/standalone/.next/server/app/api/usage/history/route.js +1 -1
- package/.next/standalone/.next/server/app/api/usage/logs/route.js +1 -1
- package/.next/standalone/.next/server/app/api/usage/providers/route.js +1 -1
- package/.next/standalone/.next/server/app/api/usage/request-details/route.js +1 -1
- package/.next/standalone/.next/server/app/api/usage/request-logs/route.js +1 -1
- package/.next/standalone/.next/server/app/api/usage/stats/route.js +1 -1
- package/.next/standalone/.next/server/app/api/usage/stream/route.js +2 -2
- package/.next/standalone/.next/server/app/api/v1/api/chat/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/audio/speech/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/chat/completions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/embeddings/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/messages/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/models/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/responses/compact/route.js +1 -0
- package/.next/standalone/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/v1/responses/compact/route_client-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/app/api/v1/responses/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1beta/models/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/version/route.js +1 -1
- package/.next/standalone/.next/server/app/callback/page.js +2 -2
- package/.next/standalone/.next/server/app/callback/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/callback.html +1 -1
- package/.next/standalone/.next/server/app/callback.rsc +4 -4
- package/.next/standalone/.next/server/app/callback.segments/_full.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/callback.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/callback.segments/callback.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/basic-chat.html +1 -1
- package/.next/standalone/.next/server/app/dashboard/basic-chat.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/cli-tools.html +1 -1
- package/.next/standalone/.next/server/app/dashboard/cli-tools.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/combos.html +1 -1
- package/.next/standalone/.next/server/app/dashboard/combos.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/endpoint.html +1 -1
- package/.next/standalone/.next/server/app/dashboard/endpoint.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/mitm.html +1 -1
- package/.next/standalone/.next/server/app/dashboard/mitm.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/profile.html +1 -1
- package/.next/standalone/.next/server/app/dashboard/profile.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/providers/new.html +1 -1
- package/.next/standalone/.next/server/app/dashboard/providers/new.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/providers.html +1 -1
- package/.next/standalone/.next/server/app/dashboard/providers.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/proxy-pools.html +1 -1
- package/.next/standalone/.next/server/app/dashboard/proxy-pools.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/quota.html +2 -2
- package/.next/standalone/.next/server/app/dashboard/quota.rsc +7 -7
- package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
- package/.next/standalone/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/settings/pricing/page.js +2 -2
- package/.next/standalone/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/dashboard/settings/pricing.html +1 -1
- package/.next/standalone/.next/server/app/dashboard/settings/pricing.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/translator.html +1 -1
- package/.next/standalone/.next/server/app/dashboard/translator.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/usage.html +1 -1
- package/.next/standalone/.next/server/app/dashboard/usage.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard.html +1 -1
- package/.next/standalone/.next/server/app/dashboard.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
- package/.next/standalone/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/favicon.ico/route.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/landing/page.js +2 -2
- package/.next/standalone/.next/server/app/landing/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/landing.html +1 -1
- package/.next/standalone/.next/server/app/landing.rsc +4 -4
- package/.next/standalone/.next/server/app/landing.segments/_full.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/landing.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/landing.segments/landing.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login/page.js +2 -2
- package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/login.html +1 -1
- package/.next/standalone/.next/server/app/login.rsc +5 -5
- package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +5 -5
- package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +4 -4
- package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/standalone/.next/server/app/page.js +2 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +10 -11
- package/.next/standalone/.next/server/chunks/2506.js +2 -4
- package/.next/standalone/.next/server/chunks/289.js +1 -1
- package/.next/standalone/.next/server/chunks/318.js +3 -3
- package/.next/standalone/.next/server/chunks/3646.js +1 -1
- package/.next/standalone/.next/server/chunks/412.js +1 -1
- package/.next/standalone/.next/server/chunks/5127.js +1 -1
- package/.next/standalone/.next/server/chunks/6182.js +1 -1
- package/.next/standalone/.next/server/chunks/6555.js +1 -1
- package/.next/standalone/.next/server/chunks/689.js +1 -0
- package/.next/standalone/.next/server/chunks/7994.js +2 -2
- package/.next/standalone/.next/server/chunks/8220.js +1 -1
- package/.next/standalone/.next/server/chunks/8226.js +1 -1
- package/.next/standalone/.next/server/chunks/869.js +1 -1
- package/.next/standalone/.next/server/chunks/8895.js +2 -2
- package/.next/standalone/.next/server/chunks/9609.js +1 -1
- package/.next/standalone/.next/server/chunks/9612.js +1 -0
- package/.next/standalone/.next/server/chunks/9718.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/middleware.js +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/W-c0RRAQmtcSIoLTJawK1/_buildManifest.js +1 -0
- package/.next/standalone/.next/static/chunks/1321-e39ac1520e59f233.js +1 -0
- package/.next/standalone/.next/static/chunks/2589-6e15e2d8ce9c792d.js +3 -0
- package/.next/standalone/.next/static/chunks/{5497-f31fec65c312a69e.js → 5497-81adf0785c150317.js} +2 -2
- package/.next/{static/chunks/5601-0a2235641c503d61.js → standalone/.next/static/chunks/5601-a0b403330ecce798.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-ce6753401b741885.js +22 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-640bf7f15af7240c.js +4 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-56a88292dbb5c42c.js +2 -0
- package/.next/{static/chunks/app/(dashboard)/dashboard/quota/page-e2666b9d85a3dd55.js → standalone/.next/static/chunks/app/(dashboard)/dashboard/quota/page-6bd1edf4b3404eb3.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/usage/page-a1a313a19cd2934c.js +1 -0
- package/.next/standalone/.next/static/chunks/app/(dashboard)/{layout-56c25acbdb152e97.js → layout-4c9cd1e77ccfdc99.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/_global-error/page-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/antigravity-ide/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/antigravity-tools/import/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/login/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/claude-settings/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/codex-settings/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/copilot-settings/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/droid-settings/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/opencode-settings/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cloud/auth/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cloud/credentials/update/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cloud/model/resolve/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/cloud/models/alias/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/combos/[id]/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/combos/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/health/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/init/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/internal/request-detail/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/internal/usage/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/keys/[id]/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/keys/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/locale/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/media-providers/tts/voices/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/models/alias/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/models/availability/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/models/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/models/test/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/oauth/[provider]/[action]/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/oauth/cursor/auto-import/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/oauth/cursor/import/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/oauth/gitlab/pat/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/oauth/iflow/cookie/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/auto-import/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/import/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/pricing/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/provider-nodes/[id]/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/provider-nodes/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/provider-nodes/validate/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/providers/[id]/models/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/providers/[id]/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/providers/[id]/test/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/providers/[id]/test-models/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/providers/client/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/providers/kilo/free-models/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/providers/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/providers/test-batch/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/providers/validate/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proxy-pools/[id]/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proxy-pools/[id]/test/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proxy-pools/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/settings/database/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/settings/proxy-test/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/settings/require-login/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/settings/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/shutdown/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tags/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/translator/console-logs/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/translator/console-logs/stream/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/translator/load/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/translator/save/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/translator/send/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/translator/translate/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tunnel/disable/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tunnel/enable/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tunnel/status/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-check/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-disable/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-enable/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-install/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-login/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/usage/[connectionId]/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/usage/chart/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/usage/history/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/usage/logs/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/usage/providers/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/usage/request-details/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/usage/request-logs/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/usage/stats/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/usage/stream/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/api/chat/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/audio/speech/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/chat/completions/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/embeddings/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/messages/count_tokens/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/messages/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/models/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/responses/compact/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/responses/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/v1/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/v1beta/models/[...path]/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/v1beta/models/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/api/version/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/manifest.webmanifest/route-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/app/page-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-73b8002b49e065e6.js +1 -0
- package/.next/standalone/.next/static/css/2d390f725d5d5a0d.css +1 -0
- package/.next/standalone/mitm/handlers/antigravity.js +1 -1
- package/.next/standalone/mitm/handlers/base.js +15 -2
- package/.next/standalone/mitm/handlers/copilot.js +1 -1
- package/.next/standalone/mitm/handlers/kiro.js +1 -1
- package/.next/standalone/mitm/manager.js +4 -3
- package/.next/standalone/package.json +1 -1
- package/.next/static/W-c0RRAQmtcSIoLTJawK1/_buildManifest.js +1 -0
- package/.next/static/chunks/1321-e39ac1520e59f233.js +1 -0
- package/.next/static/chunks/2589-6e15e2d8ce9c792d.js +3 -0
- package/.next/static/chunks/{5497-f31fec65c312a69e.js → 5497-81adf0785c150317.js} +2 -2
- package/.next/{standalone/.next/static/chunks/5601-0a2235641c503d61.js → static/chunks/5601-a0b403330ecce798.js} +1 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-ce6753401b741885.js +22 -0
- package/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-640bf7f15af7240c.js +4 -0
- package/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-56a88292dbb5c42c.js +2 -0
- package/.next/{standalone/.next/static/chunks/app/(dashboard)/dashboard/quota/page-e2666b9d85a3dd55.js → static/chunks/app/(dashboard)/dashboard/quota/page-6bd1edf4b3404eb3.js} +1 -1
- package/.next/static/chunks/app/(dashboard)/dashboard/usage/page-a1a313a19cd2934c.js +1 -0
- package/.next/static/chunks/app/(dashboard)/{layout-56c25acbdb152e97.js → layout-4c9cd1e77ccfdc99.js} +1 -1
- package/.next/static/chunks/app/_global-error/page-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/antigravity-ide/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/antigravity-tools/import/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/auth/login/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/cli-tools/claude-settings/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/cli-tools/codex-settings/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/cli-tools/copilot-settings/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/cli-tools/droid-settings/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/cli-tools/opencode-settings/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/cloud/auth/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/cloud/credentials/update/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/cloud/model/resolve/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/cloud/models/alias/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/combos/[id]/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/combos/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/health/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/init/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/internal/request-detail/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/internal/usage/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/keys/[id]/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/keys/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/locale/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/media-providers/tts/voices/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/models/alias/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/models/availability/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/models/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/models/test/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/oauth/[provider]/[action]/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/oauth/cursor/auto-import/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/oauth/cursor/import/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/oauth/gitlab/pat/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/oauth/iflow/cookie/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/oauth/kiro/auto-import/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/oauth/kiro/import/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/pricing/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/provider-nodes/[id]/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/provider-nodes/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/provider-nodes/validate/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/providers/[id]/models/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/providers/[id]/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/providers/[id]/test/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/providers/[id]/test-models/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/providers/client/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/providers/kilo/free-models/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/providers/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/providers/test-batch/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/providers/validate/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/proxy-pools/[id]/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/proxy-pools/[id]/test/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/proxy-pools/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/settings/database/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/settings/proxy-test/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/settings/require-login/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/settings/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/shutdown/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/tags/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/translator/console-logs/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/translator/console-logs/stream/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/translator/load/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/translator/save/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/translator/send/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/translator/translate/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/tunnel/disable/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/tunnel/enable/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/tunnel/status/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/tunnel/tailscale-check/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/tunnel/tailscale-disable/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/tunnel/tailscale-enable/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/tunnel/tailscale-install/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/tunnel/tailscale-login/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/usage/[connectionId]/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/usage/chart/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/usage/history/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/usage/logs/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/usage/providers/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/usage/request-details/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/usage/request-logs/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/usage/stats/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/usage/stream/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/v1/api/chat/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/v1/audio/speech/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/v1/chat/completions/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/v1/embeddings/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/v1/messages/count_tokens/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/v1/messages/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/v1/models/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/v1/responses/compact/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/v1/responses/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/v1/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/v1beta/models/[...path]/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/v1beta/models/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/api/version/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/manifest.webmanifest/route-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/app/page-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-73b8002b49e065e6.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-73b8002b49e065e6.js +1 -0
- package/.next/static/css/2d390f725d5d5a0d.css +1 -0
- package/README.md +4 -12
- package/package.json +1 -1
- package/.next/standalone/.next/server/app/api/9remote/install/route.js +0 -1
- package/.next/standalone/.next/server/app/api/9remote/install/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/9remote/install/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/9remote/start/route.js +0 -1
- package/.next/standalone/.next/server/app/api/9remote/start/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/app/api/9remote/status/route.js +0 -1
- package/.next/standalone/.next/server/app/api/9remote/status/route.js.nft.json +0 -1
- package/.next/standalone/.next/server/app/api/9remote/status/route_client-reference-manifest.js +0 -1
- package/.next/standalone/.next/server/chunks/3832.js +0 -1
- package/.next/standalone/.next/server/chunks/5324.js +0 -1
- package/.next/standalone/.next/static/chunks/1321-a07400747b42cd8b.js +0 -1
- package/.next/standalone/.next/static/chunks/2589-e33ccd63c1afc7ba.js +0 -3
- package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-9187cde45715aa36.js +0 -17
- package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-acbbfd33f5456170.js +0 -4
- package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-2835717ff91f1727.js +0 -2
- package/.next/standalone/.next/static/chunks/app/(dashboard)/dashboard/usage/page-cdc5105efeb8be57.js +0 -1
- package/.next/standalone/.next/static/chunks/app/_global-error/page-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/9remote/install/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/9remote/start/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/9remote/status/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/antigravity-ide/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/antigravity-tools/import/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/login/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/auth/logout/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/claude-settings/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/codex-settings/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/copilot-settings/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/droid-settings/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cli-tools/opencode-settings/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cloud/auth/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cloud/credentials/update/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cloud/model/resolve/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/cloud/models/alias/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/combos/[id]/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/combos/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/health/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/init/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/internal/request-detail/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/internal/usage/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/keys/[id]/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/keys/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/locale/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/media-providers/tts/voices/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/models/alias/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/models/availability/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/models/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/models/test/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/oauth/[provider]/[action]/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/oauth/cursor/auto-import/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/oauth/cursor/import/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/oauth/gitlab/pat/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/oauth/iflow/cookie/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/auto-import/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/import/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/pricing/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/provider-nodes/[id]/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/provider-nodes/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/provider-nodes/validate/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/providers/[id]/models/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/providers/[id]/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/providers/[id]/test/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/providers/[id]/test-models/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/providers/client/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/providers/kilo/free-models/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/providers/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/providers/test-batch/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/providers/validate/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proxy-pools/[id]/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proxy-pools/[id]/test/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/proxy-pools/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/settings/database/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/settings/proxy-test/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/settings/require-login/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/settings/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/shutdown/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tags/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/translator/console-logs/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/translator/console-logs/stream/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/translator/load/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/translator/save/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/translator/send/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/translator/translate/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tunnel/disable/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tunnel/enable/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tunnel/status/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-check/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-disable/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-enable/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-install/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-login/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/usage/[connectionId]/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/usage/chart/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/usage/history/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/usage/logs/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/usage/providers/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/usage/request-details/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/usage/request-logs/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/usage/stats/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/usage/stream/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/v1/api/chat/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/v1/audio/speech/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/v1/chat/completions/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/v1/embeddings/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/v1/messages/count_tokens/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/v1/messages/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/v1/models/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/v1/responses/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/v1/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/v1beta/models/[...path]/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/v1beta/models/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/api/version/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/manifest.webmanifest/route-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/app/page-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ad4e2601ee308c36.js +0 -1
- package/.next/standalone/.next/static/css/b18dfd2c9a0a7b49.css +0 -1
- package/.next/standalone/.next/static/u1_tnfo29B604S55DfKtf/_buildManifest.js +0 -1
- package/.next/static/chunks/1321-a07400747b42cd8b.js +0 -1
- package/.next/static/chunks/2589-e33ccd63c1afc7ba.js +0 -3
- package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-9187cde45715aa36.js +0 -17
- package/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-acbbfd33f5456170.js +0 -4
- package/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-2835717ff91f1727.js +0 -2
- package/.next/static/chunks/app/(dashboard)/dashboard/usage/page-cdc5105efeb8be57.js +0 -1
- package/.next/static/chunks/app/_global-error/page-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/9remote/install/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/9remote/start/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/9remote/status/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/antigravity-ide/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/antigravity-tools/import/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/auth/login/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/cli-tools/claude-settings/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/cli-tools/codex-settings/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/cli-tools/copilot-settings/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/cli-tools/droid-settings/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/cli-tools/opencode-settings/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/cloud/auth/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/cloud/credentials/update/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/cloud/model/resolve/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/cloud/models/alias/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/combos/[id]/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/combos/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/health/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/init/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/internal/request-detail/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/internal/usage/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/keys/[id]/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/keys/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/locale/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/media-providers/tts/voices/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/models/alias/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/models/availability/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/models/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/models/test/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/oauth/[provider]/[action]/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/oauth/cursor/auto-import/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/oauth/cursor/import/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/oauth/gitlab/pat/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/oauth/iflow/cookie/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/oauth/kiro/auto-import/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/oauth/kiro/import/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/pricing/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/provider-nodes/[id]/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/provider-nodes/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/provider-nodes/validate/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/providers/[id]/models/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/providers/[id]/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/providers/[id]/test/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/providers/[id]/test-models/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/providers/client/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/providers/kilo/free-models/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/providers/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/providers/test-batch/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/providers/validate/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/proxy-pools/[id]/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/proxy-pools/[id]/test/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/proxy-pools/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/settings/database/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/settings/proxy-test/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/settings/require-login/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/settings/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/shutdown/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/tags/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/translator/console-logs/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/translator/console-logs/stream/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/translator/load/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/translator/save/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/translator/send/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/translator/translate/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/tunnel/disable/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/tunnel/enable/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/tunnel/status/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/tunnel/tailscale-check/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/tunnel/tailscale-disable/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/tunnel/tailscale-enable/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/tunnel/tailscale-install/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/tunnel/tailscale-login/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/usage/[connectionId]/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/usage/chart/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/usage/history/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/usage/logs/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/usage/providers/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/usage/request-details/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/usage/request-logs/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/usage/stats/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/usage/stream/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/v1/api/chat/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/v1/audio/speech/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/v1/chat/completions/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/v1/embeddings/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/v1/messages/count_tokens/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/v1/messages/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/v1/models/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/v1/responses/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/v1/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/v1beta/models/[...path]/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/v1beta/models/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/api/version/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/app/page-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-ad4e2601ee308c36.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ad4e2601ee308c36.js +0 -1
- package/.next/static/css/b18dfd2c9a0a7b49.css +0 -1
- package/.next/static/u1_tnfo29B604S55DfKtf/_buildManifest.js +0 -1
- /package/.next/standalone/.next/static/{u1_tnfo29B604S55DfKtf → W-c0RRAQmtcSIoLTJawK1}/_ssgManifest.js +0 -0
- /package/.next/static/{u1_tnfo29B604S55DfKtf → W-c0RRAQmtcSIoLTJawK1}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=412,exports.ids=[412],exports.modules={267:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(74429),g=c(51126),h=c(99258);let i=a=>({en:{name:"English",flag:"\uD83C\uDDFA\uD83C\uDDF8"},vi:{name:"Tiếng Việt",flag:"\uD83C\uDDFB\uD83C\uDDF3"},"zh-CN":{name:"简体中文",flag:"\uD83C\uDDE8\uD83C\uDDF3"},"zh-TW":{name:"繁體中文",flag:"\uD83C\uDDF9\uD83C\uDDFC"},ja:{name:"日本語",flag:"\uD83C\uDDEF\uD83C\uDDF5"},"pt-BR":{name:"Portugu\xeas (Brasil)",flag:"\uD83C\uDDE7\uD83C\uDDF7"},"pt-PT":{name:"Portugu\xeas (Portugal)",flag:"\uD83C\uDDF5\uD83C\uDDF9"},ko:{name:"한국어",flag:"\uD83C\uDDF0\uD83C\uDDF7"},es:{name:"Espa\xf1ol",flag:"\uD83C\uDDEA\uD83C\uDDF8"},de:{name:"Deutsch",flag:"\uD83C\uDDE9\uD83C\uDDEA"},fr:{name:"Fran\xe7ais",flag:"\uD83C\uDDEB\uD83C\uDDF7"},he:{name:"עברית",flag:"\uD83C\uDDEE\uD83C\uDDF1"},ar:{name:"العربية",flag:"\uD83C\uDDF8\uD83C\uDDE6"},ru:{name:"Русский",flag:"\uD83C\uDDF7\uD83C\uDDFA"},pl:{name:"Polski",flag:"\uD83C\uDDF5\uD83C\uDDF1"},cs:{name:"Čeština",flag:"\uD83C\uDDE8\uD83C\uDDFF"},nl:{name:"Nederlands",flag:"\uD83C\uDDF3\uD83C\uDDF1"},tr:{name:"T\xfcrk\xe7e",flag:"\uD83C\uDDF9\uD83C\uDDF7"},uk:{name:"Українська",flag:"\uD83C\uDDFA\uD83C\uDDE6"},tl:{name:"Tagalog",flag:"\uD83C\uDDF5\uD83C\uDDED"},id:{name:"Indonesia",flag:"\uD83C\uDDEE\uD83C\uDDE9"},th:{name:"ไทย",flag:"\uD83C\uDDF9\uD83C\uDDED"},hi:{name:"हिन्दी",flag:"\uD83C\uDDEE\uD83C\uDDF3"},bn:{name:"বাংলা",flag:"\uD83C\uDDE7\uD83C\uDDE9"},ur:{name:"اردو",flag:"\uD83C\uDDF5\uD83C\uDDF0"},ro:{name:"Rom\xe2nă",flag:"\uD83C\uDDF7\uD83C\uDDF4"},sv:{name:"Svenska",flag:"\uD83C\uDDF8\uD83C\uDDEA"},it:{name:"Italiano",flag:"\uD83C\uDDEE\uD83C\uDDF9"},el:{name:"Ελληνικά",flag:"\uD83C\uDDEC\uD83C\uDDF7"},hu:{name:"Magyar",flag:"\uD83C\uDDED\uD83C\uDDFA"},fi:{name:"Suomi",flag:"\uD83C\uDDEB\uD83C\uDDEE"},da:{name:"Dansk",flag:"\uD83C\uDDE9\uD83C\uDDF0"},no:{name:"Norsk",flag:"\uD83C\uDDF3\uD83C\uDDF4"}})[a]||{name:a,flag:"\uD83C\uDF10"};function j({className:a=""}){let[b,c]=(0,e.useState)("en"),[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(!1),o=(0,e.useRef)(null),p=async a=>{if(a!==b&&!k){l(!0),n(!1);try{await fetch("/api/locale",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({locale:a})}),await (0,h.wn)(),c(a)}catch(a){console.error("Failed to set locale:",a)}finally{l(!1)}}};return(0,d.jsxs)("div",{className:a,children:[(0,d.jsxs)("button",{onClick:()=>n(!m),disabled:k,className:"flex items-center gap-2 px-3 py-2 rounded-lg text-text-muted hover:text-text-main hover:bg-surface/60 transition-colors",title:"Language","data-i18n-skip":"true",children:[(0,d.jsx)("span",{className:"text-xl",children:i(b).flag}),(0,d.jsx)("span",{className:"text-xs font-medium uppercase",children:b.split("-")[0]})]}),m&&(0,f.createPortal)((0,d.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4","data-i18n-skip":"true",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/30 backdrop-blur-sm",onClick:()=>n(!1)}),(0,d.jsxs)("div",{ref:o,className:"relative w-full bg-surface border border-black/10 dark:border-white/10 rounded-xl shadow-2xl animate-in fade-in zoom-in-95 duration-200 max-w-2xl flex flex-col max-h-[80vh]",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between p-3 border-b border-black/5 dark:border-white/5",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:"Select Language"}),(0,d.jsx)("button",{onClick:()=>n(!1),className:"p-1.5 rounded-lg text-text-muted hover:bg-black/5 dark:hover:bg-white/5 transition-colors","aria-label":"Close",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"close"})})]}),(0,d.jsx)("div",{className:"p-6 overflow-y-auto flex-1",children:(0,d.jsx)("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(100px,1fr))] gap-2",children:g.YZ.map(a=>{let c=b===a,e=i(a);return(0,d.jsxs)("button",{onClick:()=>p(a),disabled:k,className:`flex flex-col items-center justify-start gap-1 px-2 py-3 rounded-lg text-xs font-medium transition-colors w-full ${c?"bg-primary/15 text-primary ring-2 ring-primary":"text-text-main hover:bg-black/5 dark:hover:bg-white/5"} ${k?"opacity-70 cursor-wait":""}`,title:e.name,children:[(0,d.jsx)("span",{className:"text-2xl",children:e.flag}),(0,d.jsx)("span",{className:"text-center leading-tight line-clamp-2 h-8 flex items-center",children:e.name}),c&&(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"check"})]},a)})})})]})]}),document.body)]})}},4770:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(71404);function f({label:a,options:b=[],value:c,onChange:g,placeholder:h="Select an option",error:i,hint:j,disabled:k=!1,required:l=!1,className:m,selectClassName:n,...o}){return(0,d.jsxs)("div",{className:(0,e.cn)("flex flex-col gap-1.5",m),children:[a&&(0,d.jsxs)("label",{className:"text-sm font-medium text-text-main",children:[a,l&&(0,d.jsx)("span",{className:"text-red-500 ml-1",children:"*"})]}),(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsxs)("select",{value:c,onChange:g,disabled:k,className:(0,e.cn)("w-full py-2 px-3 pr-10 text-sm text-text-main","bg-white dark:bg-white/5 border border-black/10 dark:border-white/10 rounded-md appearance-none","focus:ring-1 focus:ring-primary/30 focus:border-primary/50 focus:outline-none","transition-all disabled:opacity-50 disabled:cursor-not-allowed","text-[16px] sm:text-sm",i?"border-red-500 focus:border-red-500 focus:ring-red-500/20":"",n),...o,children:[(0,d.jsx)("option",{value:"",disabled:!0,children:h}),b.map(a=>(0,d.jsx)("option",{value:a.value,children:a.label},a.value))]}),(0,d.jsx)("div",{className:"absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none text-text-muted",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"expand_more"})})]}),i&&(0,d.jsxs)("p",{className:"text-xs text-red-500 flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),i]}),j&&!i&&(0,d.jsx)("p",{className:"text-xs text-text-muted",children:j})]})}},5291:(a,b,c)=>{c.d(b,{default:()=>k});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(79346),i=c(86209),j=c(56110);function k({isOpen:a,providerInfo:b,onSuccess:c,onClose:f}){let[g,l]=(0,e.useState)(null),[m,n]=(0,e.useState)(null),[o,p]=(0,e.useState)(null),q=(0,e.useCallback)((a,b)=>{"builder-id"===a?l("builder-id"):"idc"===a?(l("idc"),p(b)):"social"===a?(l("social"),n(b.provider)):"import"===a&&c?.()},[c]),r=()=>{l(null),n(null),p(null)};return g?"builder-id"===g||"idc"===g?(0,d.jsx)(h.default,{isOpen:a,provider:"kiro",providerInfo:b,onSuccess:()=>{l(null),p(null),c?.(),f?.()},onClose:r,idcConfig:o}):"social"===g&&m?(0,d.jsx)(j.default,{isOpen:a,provider:m,onSuccess:()=>{l(null),n(null),c?.(),f?.()},onClose:r}):null:(0,d.jsx)(i.default,{isOpen:a,onMethodSelect:q,onClose:f})}k.propTypes={isOpen:g().bool.isRequired,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired}},17660:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(71404);function f({children:a,title:b,subtitle:c,icon:g,action:h,padding:i="md",hover:j=!1,className:k,...l}){return(0,d.jsxs)("div",{className:(0,e.cn)("bg-surface","border border-black/5 dark:border-white/5","rounded-lg shadow-sm",j&&"hover:shadow-md hover:border-primary/30 transition-all cursor-pointer",{none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"}[i],k),...l,children:[(b||h)&&(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[g&&(0,d.jsx)("div",{className:"p-2 rounded-lg bg-bg text-text-muted",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:g})}),(0,d.jsxs)("div",{children:[b&&(0,d.jsx)("h3",{className:"text-text-main font-semibold",children:b}),c&&(0,d.jsx)("p",{className:"text-sm text-text-muted",children:c})]})]}),h]}),a]})}f.Section=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-4 rounded-lg","bg-black/[0.02] dark:bg-white/[0.02]","border border-black/5 dark:border-white/5",b),...c,children:a})},f.Row=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-3 -mx-3 px-3 transition-colors","border-b border-black/5 dark:border-white/5 last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]",b),...c,children:a})},f.ListItem=function({children:a,actions:b,className:c,...f}){return(0,d.jsxs)("div",{className:(0,e.cn)("group flex items-center justify-between p-3 -mx-3 px-3","border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]","transition-colors",c),...f,children:[(0,d.jsx)("div",{className:"flex-1 min-w-0",children:a}),b&&(0,d.jsx)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:b})]})}},25175:(a,b,c)=>{c.d(b,{default:()=>p});var d=c(48249),e=c(67484),f=c(74429);let g="checking",h="not_installed",i="not_running",j="installing",k="starting",l="running",m="error",n=[{icon:"terminal",label:"Terminal",desc:"Full shell access"},{icon:"cast",label:"Desktop",desc:"Screen sharing"},{icon:"folder_open",label:"Files",desc:"Browse & edit files"}],o=[{icon:"qr_code_scanner",text:"Scan QR to connect instantly"},{icon:"wifi_off",text:"No port forwarding needed"},{icon:"devices",text:"Works on any device"}];function p({isOpen:a,onClose:b,onInstalled:c}){let[q,r]=(0,e.useState)(g),[s,t]=(0,e.useState)(""),u=(0,e.useRef)(null),v=(0,e.useCallback)(()=>{u.current&&(clearTimeout(u.current),u.current=null);let a=Date.now(),b=async()=>{if(Date.now()-a>6e4){r(m),t("9Remote is taking too long to start. Try running `9remote ui` manually.");return}try{let a=await fetch("/api/9remote/status");if((await a.json()).running)return void r(l)}catch{}u.current=setTimeout(b,2e3)};b()},[]),w=(0,e.useCallback)(async()=>{r(g),t("");try{let a=await fetch("/api/9remote/status"),b=await a.json();if(b.running)return void r(l);if(!b.installed)return void r(h);r(i)}catch(a){r(m),t(a.message)}},[]),x=(0,e.useCallback)(async()=>{r(k);try{if(!(await fetch("/api/9remote/start",{method:"POST"})).ok)throw Error("Failed to start 9Remote");v()}catch(a){r(m),t(a.message)}},[v]),y=async()=>{r(j),t("");try{let a=await fetch("/api/9remote/install",{method:"POST"});if(!a.ok){let b=await a.json();throw Error(b.error||"Install failed")}c?.(),await x()}catch(a){r(m),t(a.message)}};if(!a)return null;let z={[h]:{label:"Install 9Remote",icon:"download",onClick:y,loading:!1},[j]:{label:"Installing...",icon:"hourglass_top",onClick:null,loading:!0},[i]:{label:"Start 9Remote",icon:"play_arrow",onClick:x,loading:!1},[k]:{label:"Starting...",icon:"hourglass_top",onClick:null,loading:!0},[g]:{label:"Checking...",icon:"hourglass_top",onClick:null,loading:!0}}[q];return q===l?(0,f.createPortal)((0,d.jsxs)("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center p-4",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:b}),(0,d.jsx)("div",{className:"relative rounded-xl overflow-hidden shadow-2xl animate-in fade-in zoom-in-95 duration-200",style:{width:480,height:"90vh"},children:(0,d.jsx)("iframe",{src:"http://localhost:2208",className:"border-0 block w-full h-full",title:"9Remote UI"})})]}),document.body):q===m?(0,f.createPortal)((0,d.jsxs)("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center p-4",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:b}),(0,d.jsxs)("div",{className:"relative w-full max-w-sm rounded-xl overflow-hidden shadow-2xl bg-surface border border-black/10 dark:border-white/10 animate-in fade-in zoom-in-95 duration-200",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 border-b border-black/5 dark:border-white/5",children:[(0,d.jsx)("span",{className:"text-sm font-semibold text-text-main",children:"9Remote"}),(0,d.jsx)("button",{onClick:b,className:"w-7 h-7 flex items-center justify-center rounded-lg bg-black/5 dark:bg-white/5 border border-black/5 dark:border-white/10 text-text-muted hover:text-text-main transition-colors",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:"close"})})]}),(0,d.jsxs)("div",{className:"flex flex-col items-center gap-5 py-12 px-6 text-center",children:[(0,d.jsx)("div",{className:"w-14 h-14 rounded-full bg-red-500/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-red-400 text-[28px]",children:"error"})}),(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)("p",{className:"font-semibold text-text-main",children:"Something went wrong"}),(0,d.jsx)("p",{className:"text-xs text-text-muted font-mono break-all",children:s})]}),(0,d.jsxs)("button",{onClick:w,className:"flex items-center gap-2 px-4 py-2 rounded-lg bg-black/5 dark:bg-white/5 border border-black/5 dark:border-white/10 text-sm text-text-main hover:bg-black/10 dark:hover:bg-white/10 transition-colors",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:"refresh"}),"Retry"]})]})]})]}),document.body):(0,f.createPortal)((0,d.jsxs)("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center p-4",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:b}),(0,d.jsxs)("div",{className:"relative w-full max-w-sm rounded-xl overflow-hidden shadow-2xl animate-in fade-in zoom-in-95 duration-200 flex flex-col bg-surface border border-black/10 dark:border-white/10",style:{minHeight:"90vh"},children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 border-b border-black/5 dark:border-white/5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"w-7 h-7 rounded-lg flex items-center justify-center",style:{background:"#FF570A"},children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white text-base",children:"terminal"})}),(0,d.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider",style:{fontFamily:"monospace",color:"#FF570A"},children:"9Remote"})]}),(0,d.jsx)("button",{onClick:b,className:"w-7 h-7 flex items-center justify-center rounded-lg bg-black/5 dark:bg-white/5 border border-black/5 dark:border-white/10 text-text-muted hover:text-text-main transition-colors",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:"close"})})]}),(0,d.jsxs)("div",{className:"px-7 py-7 pb-9 flex flex-col flex-1 justify-between",children:[(0,d.jsxs)("div",{className:"flex flex-col items-center gap-2 text-center mt-2",children:[(0,d.jsx)("div",{className:"w-14 h-14 rounded-2xl flex items-center justify-center mb-1",style:{background:"#FF570A",boxShadow:"rgba(255,87,10,0.35) 0px 8px 32px"},children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white",style:{fontSize:30},children:"terminal"})}),(0,d.jsx)("h1",{className:"text-lg font-bold text-text-main tracking-tight",children:"9Remote"}),(0,d.jsx)("p",{className:"text-xs text-text-muted leading-5 max-w-[220px]",children:"Access your terminal, desktop & files from anywhere"})]}),(0,d.jsx)("div",{className:"flex gap-2 w-full mt-6",children:n.map(({icon:a,label:b,desc:c})=>(0,d.jsxs)("div",{className:"flex-1 flex flex-col items-center gap-1.5 py-4 px-1 rounded-xl border border-black/10 dark:border-white/10 bg-bg-alt",children:[(0,d.jsx)("span",{className:"material-symbols-outlined",style:{fontSize:22,color:"#ff6e33"},children:a}),(0,d.jsx)("p",{className:"text-xs font-semibold text-text-main",children:b}),(0,d.jsx)("p",{className:"text-[10px] text-text-muted text-center leading-4",children:c})]},b))}),(0,d.jsx)("div",{className:"flex flex-col gap-3 w-full mt-5",children:o.map(({icon:a,text:b})=>(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex-shrink-0",style:{fontSize:16,color:"#ff6e33"},children:a}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:b})]},a))}),z&&(0,d.jsxs)("button",{onClick:z.onClick??void 0,disabled:z.loading,className:`mt-7 w-full py-3.5 flex items-center justify-center gap-2 text-sm font-semibold text-white rounded-xl transition-all ${z.loading?"opacity-60 cursor-not-allowed":"hover:opacity-90 active:scale-[0.98]"}`,style:{background:"#FF570A",boxShadow:z.loading?"none":"0 4px 16px rgba(255,87,10,0.35)"},children:[z.loading?(0,d.jsxs)("span",{className:"flex items-center gap-1",children:[(0,d.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-white animate-bounce",style:{animationDelay:"0ms"}}),(0,d.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-white animate-bounce",style:{animationDelay:"150ms"}}),(0,d.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-white animate-bounce",style:{animationDelay:"300ms"}})]}):(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:z.icon}),z.label]})]})]})]}),document.body)}},25919:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(71404);function f({src:a,alt:b="Avatar",name:c,size:g="md",className:h}){let i={xs:"size-6 text-xs",sm:"size-8 text-sm",md:"size-10 text-base",lg:"size-12 text-lg",xl:"size-16 text-xl"};return a?(0,d.jsx)("div",{className:(0,e.cn)("rounded-full bg-cover bg-center bg-no-repeat","ring-2 ring-white dark:ring-surface-dark shadow-sm",i[g],h),style:{backgroundImage:`url(${a})`},role:"img","aria-label":b}):(0,d.jsx)("div",{className:(0,e.cn)("rounded-full flex items-center justify-center font-semibold text-white","ring-2 ring-white dark:ring-surface-dark shadow-sm",i[g],(a=>{if(!a)return"bg-primary";let b=["bg-red-500","bg-orange-500","bg-amber-500","bg-yellow-500","bg-lime-500","bg-green-500","bg-emerald-500","bg-teal-500","bg-cyan-500","bg-sky-500","bg-blue-500","bg-indigo-500","bg-violet-500","bg-purple-500","bg-fuchsia-500","bg-pink-500","bg-rose-500"],c=a.charCodeAt(0)%b.length;return b[c]})(c),h),role:"img","aria-label":b,children:(a=>{if(!a)return"?";let b=a.split(" ");return b.length>=2?`${b[0][0]}${b[1][0]}`.toUpperCase():a.substring(0,2).toUpperCase()})(c)})}},29370:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(74429);let g=[{icon:"terminal",label:"Terminal",desc:"Full shell access"},{icon:"cast",label:"Desktop",desc:"Screen sharing"},{icon:"folder_open",label:"Files",desc:"Browse & edit files"}],h=[{icon:"qr_code_scanner",text:"Scan QR to connect instantly"},{icon:"wifi_off",text:"No port forwarding needed"},{icon:"devices",text:"Works on any device"}];function i({isOpen:a,onClose:b}){return a?(0,f.createPortal)((0,d.jsxs)("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center p-4",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:b}),(0,d.jsxs)("div",{className:"relative w-full max-w-sm rounded-xl overflow-hidden shadow-2xl animate-in fade-in zoom-in-95 duration-200 flex flex-col bg-surface border border-black/10 dark:border-white/10",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 border-b border-black/5 dark:border-white/5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"w-7 h-7 rounded-lg flex items-center justify-center",style:{background:"#FF570A"},children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white text-base",children:"terminal"})}),(0,d.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider",style:{fontFamily:"monospace",color:"#FF570A"},children:"9Remote"})]}),(0,d.jsx)("button",{onClick:b,className:"w-7 h-7 flex items-center justify-center rounded-lg bg-black/5 dark:bg-white/5 border border-black/5 dark:border-white/10 text-text-muted hover:text-text-main transition-colors",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:"close"})})]}),(0,d.jsxs)("div",{className:"px-7 py-7 pb-9 flex flex-col gap-6",children:[(0,d.jsxs)("div",{className:"flex flex-col items-center gap-2 text-center mt-2",children:[(0,d.jsx)("div",{className:"w-14 h-14 rounded-2xl flex items-center justify-center mb-1",style:{background:"#FF570A",boxShadow:"rgba(255,87,10,0.35) 0px 8px 32px"},children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white",style:{fontSize:30},children:"terminal"})}),(0,d.jsx)("h1",{className:"text-lg font-bold text-text-main tracking-tight",children:"9Remote"}),(0,d.jsx)("p",{className:"text-xs text-text-muted leading-5 max-w-[220px]",children:"Access your terminal, desktop & files from anywhere"})]}),(0,d.jsx)("div",{className:"flex gap-2 w-full",children:g.map(({icon:a,label:b,desc:c})=>(0,d.jsxs)("div",{className:"flex-1 flex flex-col items-center gap-1.5 py-4 px-1 rounded-xl border border-black/10 dark:border-white/10 bg-bg-alt",children:[(0,d.jsx)("span",{className:"material-symbols-outlined",style:{fontSize:22,color:"#ff6e33"},children:a}),(0,d.jsx)("p",{className:"text-xs font-semibold text-text-main",children:b}),(0,d.jsx)("p",{className:"text-[10px] text-text-muted text-center leading-4",children:c})]},b))}),(0,d.jsx)("div",{className:"flex flex-col gap-3 w-full",children:h.map(({icon:a,text:b})=>(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex-shrink-0",style:{fontSize:16,color:"#ff6e33"},children:a}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:b})]},a))}),(0,d.jsxs)("button",{onClick:()=>window.open("https://9remote.cc","_blank"),className:"w-full py-3.5 flex items-center justify-center gap-2 text-sm font-semibold text-white rounded-xl hover:opacity-90 active:scale-[0.98] transition-all",style:{background:"#FF570A",boxShadow:"0 4px 16px rgba(255,87,10,0.35)"},children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:"open_in_new"}),"Get 9Remote"]})]})]})]}),document.body):null}function j(){let[a,b]=(0,e.useState)(!1);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("button",{onClick:()=>b(!0),className:"relative flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg transition-all text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5",title:"9Remote",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"computer"}),(0,d.jsx)("span",{className:"text-xs font-medium",children:"Remote"})]}),(0,d.jsx)(i,{isOpen:a,onClose:()=>b(!1)})]})}},32971:(a,b,c)=>{c.d(b,{default:()=>e});var d=c(48249);function e({text:a,children:b,position:c="top"}){return(0,d.jsxs)("div",{className:"relative inline-flex group",children:[b,(0,d.jsx)("div",{className:`pointer-events-none absolute ${{top:"bottom-full left-1/2 -translate-x-1/2 mb-1.5",bottom:"top-full left-1/2 -translate-x-1/2 mt-1.5",left:"right-full top-1/2 -translate-y-1/2 mr-1.5",right:"left-full top-1/2 -translate-y-1/2 ml-1.5"}[c]} z-50 w-max max-w-56 rounded px-2 py-1 text-[11px] leading-snug bg-gray-900 text-white opacity-0 group-hover:opacity-100 transition-opacity duration-150 whitespace-normal`,children:a})]})}},39645:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(67484),f=c(95145),g=c(99070);function h({isOpen:a,onClose:b,title:c="Manual Configuration",configs:i=[]}){let[j,k]=(0,e.useState)(null),l=async(a,b)=>{try{await navigator.clipboard.writeText(a),k(b),setTimeout(()=>k(null),2e3)}catch(a){console.log("Failed to copy:",a)}};return(0,d.jsx)(f.default,{isOpen:a,onClose:b,title:c,size:"xl",children:(0,d.jsx)("div",{className:"flex flex-col gap-4",children:i.map((a,b)=>(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm font-medium text-text-main",children:a.filename}),(0,d.jsxs)(g.default,{variant:"ghost",size:"sm",onClick:()=>l(a.content,b),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:j===b?"check":"content_copy"}),j===b?"Copied!":"Copy"]})]}),(0,d.jsx)("pre",{className:"px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs overflow-x-auto whitespace-pre-wrap break-all max-h-60 overflow-y-auto border border-border",children:a.content})]},b))})})}},41371:(a,b,c)=>{c.d(b,{i:()=>f});var d=c(31417);let e=0,f=(0,d.v)((a,b)=>({notifications:[],addNotification:c=>{let d=++e,f={id:d,type:c.type||"info",message:c.message,title:c.title||null,duration:c.duration??5e3,dismissible:c.dismissible??!0,createdAt:Date.now()};return a(a=>({notifications:[...a.notifications,f]})),f.duration>0&&setTimeout(()=>b().removeNotification(d),f.duration),d},removeNotification:b=>{a(a=>({notifications:a.notifications.filter(a=>a.id!==b)}))},clearAll:()=>a({notifications:[]}),success:(a,c)=>b().addNotification({type:"success",message:a,title:c}),error:(a,c)=>b().addNotification({type:"error",message:a,title:c,duration:8e3}),warning:(a,c)=>b().addNotification({type:"warning",message:a,title:c}),info:(a,c)=>b().addNotification({type:"info",message:a,title:c})}))},42118:(a,b,c)=>{c.d(b,{D:()=>i});var d=c(67484),e=c(13033);function f(a){return()=>{}}function g(){return!1}function h(){return!1}function i(){let{theme:a,setTheme:b,toggleTheme:c,initTheme:i}=(0,e.A)(),j=(0,d.useSyncExternalStore)(f,g,h);return{theme:a,setTheme:b,toggleTheme:c,isDark:"dark"===a||"system"===a&&j}}},42196:(a,b,c)=>{c.d(b,{default:()=>t});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(2116),i=c.n(h),j=c(19099),k=c(71404),l=c(12020),m=c(96919),n=c(99070),o=c(95145);let p=["embedding","tts"],q=[{href:"/dashboard/endpoint",label:"Endpoint",icon:"api"},{href:"/dashboard/providers",label:"Providers",icon:"dns"},{href:"/dashboard/combos",label:"Combos",icon:"layers"},{href:"/dashboard/usage",label:"Usage",icon:"bar_chart"},{href:"/dashboard/quota",label:"Quota Tracker",icon:"data_usage"},{href:"/dashboard/mitm",label:"MITM",icon:"security"},{href:"/dashboard/cli-tools",label:"CLI Tools",icon:"terminal"}],r=[{href:"/dashboard/console-log",label:"Console Log",icon:"terminal"},{href:"/dashboard/translator",label:"Translator",icon:"translate"}],s=[{href:"/dashboard/proxy-pools",label:"Proxy Pools",icon:"lan"}];function t({onClose:a}){let b=(0,j.usePathname)(),[c,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(!1),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(null),[A,B]=(0,e.useState)(!1),C=a=>"/dashboard/endpoint"===a?"/dashboard"===b||b.startsWith("/dashboard/endpoint"):b.startsWith(a),D=async()=>{v(!0);try{await fetch("/api/shutdown",{method:"POST"})}catch(a){}v(!1),h(!1),x(!0)};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("aside",{className:"flex w-72 flex-col border-r border-black/5 dark:border-white/5 bg-vibrancy backdrop-blur-xl transition-colors duration-300 min-h-full",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 px-6 pt-5 pb-2",children:[(0,d.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FF5F56]"}),(0,d.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FFBD2E]"}),(0,d.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#27C93F]"})]}),(0,d.jsxs)("div",{className:"px-6 py-4 flex flex-col gap-2",children:[(0,d.jsxs)(i(),{href:"/dashboard",className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-9 rounded bg-linear-to-br from-[#f97815] to-[#c2590a]",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white text-[20px]",children:"hub"})}),(0,d.jsxs)("div",{className:"flex flex-col",children:[(0,d.jsx)("h1",{className:"text-lg font-semibold tracking-tight text-text-main",children:l.vQ.name}),(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:["v",l.vQ.version]})]})]}),y&&(0,d.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,d.jsxs)("span",{className:"text-xs font-semibold text-green-600 dark:text-amber-500",children:["↑ New version available: v",y.latestVersion]}),(0,d.jsx)("code",{className:"text-[10px] text-green-600/80 dark:text-amber-400/70 font-mono select-all",children:"npm install -g 9router@latest"})]})]}),(0,d.jsxs)("nav",{className:"flex-1 px-4 py-2 space-y-1 overflow-y-auto custom-scrollbar",children:[q.map(b=>(0,d.jsxs)(i(),{href:b.href,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C(b.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C(b.href)?"fill-1":"group-hover:text-primary transition-colors"),children:b.icon}),(0,d.jsx)("span",{className:"text-sm font-medium",children:b.label})]},b.href)),(0,d.jsxs)("div",{className:"pt-4 mt-2",children:[(0,d.jsx)("p",{className:"px-4 text-xs font-semibold text-text-muted/60 uppercase tracking-wider mb-2",children:"System"}),(0,d.jsxs)("button",{onClick:()=>f(a=>!a),className:(0,k.cn)("w-full flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",b.startsWith("/dashboard/media-providers")?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"perm_media"}),(0,d.jsx)("span",{className:"text-sm font-medium flex-1 text-left",children:"Media Providers"}),(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] transition-transform",style:{transform:c?"rotate(180deg)":"rotate(0deg)"},children:"expand_more"})]}),c&&(0,d.jsx)("div",{className:"pl-4",children:m.rj.filter(a=>p.includes(a.id)).map(c=>(0,d.jsxs)(i(),{href:`/dashboard/media-providers/${c.id}`,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-1.5 rounded-lg transition-all group",b.startsWith(`/dashboard/media-providers/${c.id}`)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:c.icon}),(0,d.jsx)("span",{className:"text-sm",children:c.label})]},c.id))}),s.map(b=>(0,d.jsxs)(i(),{href:b.href,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C(b.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C(b.href)?"fill-1":"group-hover:text-primary transition-colors"),children:b.icon}),(0,d.jsx)("span",{className:"text-sm font-medium",children:b.label})]},b.href)),r.map(b=>"/dashboard/translator"!==b.href||A?(0,d.jsxs)(i(),{href:b.href,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C(b.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C(b.href)?"fill-1":"group-hover:text-primary transition-colors"),children:b.icon}),(0,d.jsx)("span",{className:"text-sm font-medium",children:b.label})]},b.href):null),(0,d.jsxs)(i(),{href:"/dashboard/profile",onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C("/dashboard/profile")?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C("/dashboard/profile")?"fill-1":"group-hover:text-primary transition-colors"),children:"settings"}),(0,d.jsx)("span",{className:"text-sm font-medium",children:"Settings"})]})]})]}),(0,d.jsx)("div",{className:"p-3 border-t border-black/5 dark:border-white/5",children:(0,d.jsx)(n.default,{variant:"outline",fullWidth:!0,icon:"power_settings_new",onClick:()=>h(!0),className:"text-red-500 border-red-200 hover:bg-red-50 hover:border-red-300",children:"Shutdown"})})]}),(0,d.jsx)(o.ConfirmModal,{isOpen:g,onClose:()=>h(!1),onConfirm:D,title:"Close Proxy",message:"Are you sure you want to close the proxy server?",confirmText:"Close",cancelText:"Cancel",variant:"danger",loading:u}),w&&(0,d.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 backdrop-blur-sm",children:(0,d.jsxs)("div",{className:"text-center p-8",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-16 rounded-full bg-red-500/20 text-red-500 mx-auto mb-4",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"power_off"})}),(0,d.jsx)("h2",{className:"text-xl font-semibold text-white mb-2",children:"Server Disconnected"}),(0,d.jsx)("p",{className:"text-text-muted mb-6",children:"The proxy server has been stopped."}),(0,d.jsx)(n.default,{variant:"secondary",onClick:()=>globalThis.location.reload(),children:"Reload Page"})]})})]})}t.propTypes={onClose:g().func}},43182:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412);let i="https://gitlab.com";function j({isOpen:a,providerInfo:b,onSuccess:c,onClose:f}){let[g,k]=(0,e.useState)(null),[l,m]=(0,e.useState)(i),[n,o]=(0,e.useState)(""),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)(!1),[z,A]=(0,e.useState)(null),B=()=>{k(null),m(i),o(""),q(""),s(""),w(null),u(!1),y(!1),A(null),f()},C=async()=>{if(!r.trim())return void w("Personal Access Token is required");u(!0),w(null);try{let a=await fetch("/api/oauth/gitlab/pat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:r.trim(),baseUrl:l.trim()||i})}),b=await a.json();if(!a.ok)throw Error(b.error||"Authentication failed");c?.(),B()}catch(a){w(a.message)}finally{u(!1)}};return a?x&&z?(0,d.jsx)(h.LF,{isOpen:!0,provider:"gitlab",providerInfo:b,oauthMeta:z,onSuccess:()=>{c?.(),B()},onClose:()=>{y(!1),A(null)}}):(0,d.jsx)(h.aF,{isOpen:a,title:"Connect GitLab Duo",onClose:B,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[!g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Choose how to authenticate with GitLab Duo:"}),(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,d.jsxs)("button",{onClick:()=>k("oauth"),className:"flex flex-col items-center gap-2 p-4 rounded-lg border border-border hover:border-primary hover:bg-primary/5 transition-colors text-left",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-2xl text-primary",children:"lock_open"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:"OAuth App"}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Use a GitLab OAuth application"})]})]}),(0,d.jsxs)("button",{onClick:()=>k("pat"),className:"flex flex-col items-center gap-2 p-4 rounded-lg border border-border hover:border-primary hover:bg-primary/5 transition-colors text-left",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-2xl text-primary",children:"key"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:"Personal Access Token"}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Use a GitLab PAT with api scope"})]})]})]})]}),"oauth"===g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:["Create an OAuth app at"," ",(0,d.jsx)("a",{href:`${l.trim()||i}/-/profile/applications`,target:"_blank",rel:"noreferrer",className:"text-primary underline",children:"GitLab Applications"})," ","with redirect URI"," ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"http://localhost/callback"})]}),(0,d.jsx)(h.pd,{label:"GitLab Base URL",value:l,onChange:a=>m(a.target.value),placeholder:i}),(0,d.jsx)(h.pd,{label:"Client ID",value:n,onChange:a=>o(a.target.value),placeholder:"Your OAuth application client ID"}),(0,d.jsx)(h.pd,{label:"Client Secret (optional for PKCE)",value:p,onChange:a=>q(a.target.value),placeholder:"Leave empty for public PKCE app"}),v&&(0,d.jsx)("p",{className:"text-sm text-red-500",children:v}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>{n.trim()?(w(null),A({baseUrl:l.trim()||i,clientId:n.trim(),clientSecret:p.trim()}),y(!0)):w("Client ID is required")},fullWidth:!0,disabled:!n.trim(),children:"Authorize"}),(0,d.jsx)(h.$n,{onClick:()=>{k(null),w(null)},variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"pat"===g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:["Create a PAT at"," ",(0,d.jsx)("a",{href:`${l.trim()||i}/-/user_settings/personal_access_tokens`,target:"_blank",rel:"noreferrer",className:"text-primary underline",children:"GitLab Access Tokens"})," ","with scopes: ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"api"}),","," ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"read_user"}),", and"," ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"ai_features"}),"."]}),(0,d.jsx)(h.pd,{label:"GitLab Base URL",value:l,onChange:a=>m(a.target.value),placeholder:i}),(0,d.jsx)(h.pd,{label:"Personal Access Token",value:r,onChange:a=>s(a.target.value),placeholder:"glpat-xxxxxxxxxxxxxxxxxxxx",type:"password"}),v&&(0,d.jsx)("p",{className:"text-sm text-red-500",children:v}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:C,fullWidth:!0,disabled:!r.trim()||t,loading:t,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:()=>{k(null),w(null)},variant:"ghost",fullWidth:!0,children:"Back"})]})]})]})}):null}j.propTypes={isOpen:g().bool.isRequired,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired}},48781:(a,b,c)=>{c.d(b,{default:()=>k});var d=c(48249),e=c(2116),f=c.n(e),g=c(12020);let h=[{label:"Features",href:"#features"},{label:"Pricing",href:"#pricing"},{label:"Changelog",href:"#"}],i=[{label:"Documentation",href:"#"},{label:"API Reference",href:"#"},{label:"Help Center",href:"#"}],j=[{label:"About",href:"#"},{label:"Blog",href:"#"},{label:"Contact",href:"#"}];function k(){return(0,d.jsx)("footer",{className:"bg-bg border-t border-border pt-16 pb-12",children:(0,d.jsxs)("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:[(0,d.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-10 mb-12",children:[(0,d.jsxs)("div",{className:"col-span-2 lg:col-span-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-6",children:[(0,d.jsx)("div",{className:"size-6 text-primary",children:(0,d.jsx)("svg",{className:"w-full h-full",fill:"currentColor",viewBox:"0 0 48 48",children:(0,d.jsx)("path",{clipRule:"evenodd",d:"M12.0799 24L4 19.2479L9.95537 8.75216L18.04 13.4961L18.0446 4H29.9554L29.96 13.4961L38.0446 8.75216L44 19.2479L35.92 24L44 28.7521L38.0446 39.2479L29.96 34.5039L29.9554 44H18.0446L18.04 34.5039L9.95537 39.2479L4 28.7521L12.0799 24Z",fillRule:"evenodd"})})}),(0,d.jsx)("span",{className:"text-xl font-bold text-text-main",children:g.vQ.name})]}),(0,d.jsx)("p",{className:"text-text-muted mb-6 max-w-sm font-light",children:"The unified interface for modern AI infrastructure. Secure, observable, and scalable."}),(0,d.jsxs)("div",{className:"flex gap-4",children:[(0,d.jsx)("a",{href:"#",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"Twitter",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M22.46 6c-.77.35-1.6.58-2.46.69.88-.53 1.56-1.37 1.88-2.38-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29 0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15 0 1.49.75 2.81 1.91 3.56-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.22 4.22 0 0 1-1.93.07 4.28 4.28 0 0 0 4 2.98 8.521 8.521 0 0 1-5.33 1.84c-.34 0-.68-.02-1.02-.06C3.44 20.29 5.7 21 8.12 21 16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56.84-.6 1.56-1.36 2.14-2.23z"})})}),(0,d.jsx)("a",{href:"#",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"GitHub",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0 0 22 12.017C22 6.484 17.522 2 12 2z"})})})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Product"}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:h.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)(f(),{href:a.href,className:"hover:text-primary transition-colors",children:a.label})},a.label))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Resources"}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:i.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)(f(),{href:a.href,className:"hover:text-primary transition-colors",children:a.label})},a.label))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Company"}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:j.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)(f(),{href:a.href,className:"hover:text-primary transition-colors",children:a.label})},a.label))})]})]}),(0,d.jsxs)("div",{className:"border-t border-border pt-8 flex flex-col md:flex-row justify-between items-center gap-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["\xa9 ",new Date().getFullYear()," ",g.vQ.name," Inc. All rights reserved."]}),(0,d.jsxs)("div",{className:"flex gap-6 text-sm text-text-muted",children:[(0,d.jsx)(f(),{href:"#",className:"hover:text-primary transition-colors",children:"Privacy Policy"}),(0,d.jsx)(f(),{href:"#",className:"hover:text-primary transition-colors",children:"Terms of Service"})]})]})]})})}},50377:(a,b,c)=>{c.d(b,{C:()=>e});var d=c(67484);function e(a=2e3){let[b,c]=(0,d.useState)(null),f=(0,d.useRef)(null);return{copied:b,copy:(0,d.useCallback)((b,d="default")=>{navigator.clipboard.writeText(b),c(d),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{c(null)},a)},[a])}}},50412:(a,b,c)=>{c.d(b,{Ex:()=>j.default,$n:()=>d.default,Zp:()=>g.default,Qv:()=>i.CardSkeleton,G9:()=>t.default,wI:()=>w.default,vj:()=>v.default,vE:()=>u.default,pd:()=>e.default,Mh:()=>s.default,c5:()=>q.default,uR:()=>o.default,aF:()=>h.default,rq:()=>n.default,LF:()=>m.default,gM:()=>r.default,Iz:()=>x.default,l6:()=>f.default,UW:()=>l.default,lM:()=>k.default,m_:()=>y.default,jK:()=>p.default});var d=c(99070),e=c(83552),f=c(4770),g=c(17660),h=c(95145),i=c(52431);c(25919);var j=c(75171),k=c(95514),l=c(53845);c(19308),c(42196),c(86739),c(48781);var m=c(79346),n=c(83352),o=c(39645),p=c(87226),q=c(267);c(29370),c(25175);var r=c(91809);c(86209);var s=c(5291);c(56110);var t=c(51109),u=c(79488),v=c(43182),w=c(51585),x=c(91099),y=c(32971);c(85306),c(53838)},51109:(a,b,c)=>{c.d(b,{default:()=>i});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412);function i({isOpen:a,onSuccess:b,onClose:c}){let[f,g]=(0,e.useState)(""),[j,k]=(0,e.useState)(""),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(!1),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(!1),v=async()=>{q(!0),m(null),s(!1),u(!1);try{let a=await fetch("/api/oauth/cursor/auto-import"),b=await a.json();b.found?(g(b.accessToken),k(b.machineId),s(!0)):b.windowsManual?u(!0):m(b.error||"Could not auto-detect tokens")}catch(a){m("Failed to auto-detect tokens")}finally{q(!1)}},w=async()=>{if(!f.trim())return void m("Please enter an access token");if(!j.trim())return void m("Please enter a machine ID");o(!0),m(null);try{let a=await fetch("/api/oauth/cursor/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accessToken:f.trim(),machineId:j.trim()})}),d=await a.json();if(!a.ok)throw Error(d.error||"Import failed");b?.(),c()}catch(a){m(a.message)}finally{o(!1)}};return(0,d.jsx)(h.aF,{isOpen:a,title:"Connect Cursor IDE",onClose:c,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[p&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Auto-detecting tokens..."}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Reading from Cursor IDE database"})]}),!p&&(0,d.jsxs)(d.Fragment,{children:[r&&(0,d.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,d.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200",children:"Tokens auto-detected from Cursor IDE successfully!"})]})}),t&&(0,d.jsxs)("div",{className:"bg-amber-50 dark:bg-amber-900/20 p-3 rounded-lg border border-amber-200 dark:border-amber-800 flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex gap-2 items-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-amber-600 dark:text-amber-400",children:"info"}),(0,d.jsx)("p",{className:"text-sm font-medium text-amber-800 dark:text-amber-200",children:"Could not read Cursor database automatically."})]}),(0,d.jsxs)("p",{className:"text-xs text-amber-700 dark:text-amber-300",children:["Make sure Cursor IDE has been opened at least once, then click ",(0,d.jsx)("strong",{children:"Retry"}),". If the problem persists, paste your tokens manually below."]}),(0,d.jsx)(h.$n,{onClick:v,variant:"outline",fullWidth:!0,children:"Retry"})]}),!r&&!t&&!l&&(0,d.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,d.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:"Cursor IDE not detected. Please paste your tokens manually."})]})}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Access Token ",(0,d.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,d.jsx)("textarea",{value:f,onChange:a=>g(a.target.value),placeholder:"Access token will be auto-filled...",rows:3,className:"w-full px-3 py-2 text-sm font-mono border border-border rounded-lg bg-background focus:outline-none focus:border-primary resize-none"})]}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Machine ID ",(0,d.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,d.jsx)(h.pd,{value:j,onChange:a=>k(a.target.value),placeholder:"Machine ID will be auto-filled...",className:"font-mono text-sm"})]}),l&&(0,d.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,d.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:l})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:w,fullWidth:!0,disabled:n||!f.trim()||!j.trim(),children:n?"Importing...":"Import Token"}),(0,d.jsx)(h.$n,{onClick:c,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})})}i.propTypes={isOpen:g().bool.isRequired,onSuccess:g().func,onClose:g().func.isRequired}},51585:(a,b,c)=>{c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(95145),i=c(83552),j=c(99070),k=c(75171),l=c(96919);function m({isOpen:a,connection:b,proxyPools:c,onSave:f,onClose:g}){let[n,o]=(0,e.useState)({name:"",priority:1,apiKey:""}),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(null),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)(!1),z=b?.authType==="oauth",A=!!b&&((0,l.mq)(b.provider)||(0,l.gb)(b.provider)),B=async()=>{if(b?.provider){q(!0),s(null);try{let a=await fetch(`/api/providers/${b.id}/test`,{method:"POST"}),c=await a.json();s(c.valid?"success":"failed")}catch{s("failed")}finally{q(!1)}}},C=async()=>{if(b?.provider&&n.apiKey){u(!0),w(null);try{let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:n.apiKey})}),c=await a.json();w(c.valid?"success":"failed")}catch{w("failed")}finally{u(!1)}}},D=async()=>{if(b){y(!0);try{let a={name:n.name,priority:n.priority};if(!z&&n.apiKey){a.apiKey=n.apiKey;let c="success"===v;if(!c)try{u(!0),w(null);let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:n.apiKey})});c=!!(await a.json()).valid,w(c?"success":"failed")}catch{w("failed")}finally{u(!1)}c&&(a.testStatus="active",a.lastError=null,a.lastErrorAt=null)}await f(a)}finally{y(!1)}}};return b?(0,d.jsx)(h.default,{isOpen:a,title:"Edit Connection",onClose:g,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(i.default,{label:"Name",value:n.name,onChange:a=>o({...n,name:a.target.value}),placeholder:z?"Account name":"Production Key"}),z&&b.email&&(0,d.jsxs)("div",{className:"bg-sidebar/50 p-3 rounded-lg",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-1",children:"Email"}),(0,d.jsx)("p",{className:"font-medium",children:b.email})]}),(0,d.jsx)(i.default,{label:"Priority",type:"number",value:n.priority,onChange:a=>o({...n,priority:Number.parseInt(a.target.value,10)||1})}),!z&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(i.default,{label:"API Key",type:"password",value:n.apiKey,onChange:a=>o({...n,apiKey:a.target.value}),placeholder:"Enter new API key",hint:"Leave blank to keep the current API key.",className:"flex-1"}),(0,d.jsx)("div",{className:"pt-6",children:(0,d.jsx)(j.default,{onClick:C,disabled:!n.apiKey||t||x,variant:"secondary",children:t?"Checking...":"Check"})})]}),v&&(0,d.jsx)(k.default,{variant:"success"===v?"success":"error",children:"success"===v?"Valid":"Invalid"})]}),!A&&(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)(j.default,{onClick:B,variant:"secondary",disabled:p,children:p?"Testing...":"Test Connection"}),r&&(0,d.jsx)(k.default,{variant:"success"===r?"success":"error",children:"success"===r?"Valid":"Failed"})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.default,{onClick:D,fullWidth:!0,disabled:x,children:x?"Saving...":"Save"}),(0,d.jsx)(j.default,{onClick:g,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}m.propTypes={isOpen:g().bool.isRequired,connection:g().shape({id:g().string,name:g().string,email:g().string,priority:g().number,authType:g().string,provider:g().string,providerSpecificData:g().object}),proxyPools:g().arrayOf(g().shape({id:g().string,name:g().string})),onSave:g().func.isRequired,onClose:g().func.isRequired}},52431:(a,b,c)=>{c.d(b,{CardSkeleton:()=>i,PageLoading:()=>g,Skeleton:()=>h,Spinner:()=>f,default:()=>j});var d=c(48249),e=c(71404);function f({size:a="md",className:b}){return(0,d.jsx)("span",{className:(0,e.cn)("material-symbols-outlined animate-spin text-primary",{sm:"size-4",md:"size-6",lg:"size-8",xl:"size-12"}[a],b),children:"progress_activity"})}function g({message:a="Loading..."}){return(0,d.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg",children:[(0,d.jsx)(f,{size:"xl"}),(0,d.jsx)("p",{className:"mt-4 text-text-muted",children:a})]})}function h({className:a,...b}){return(0,d.jsx)("div",{className:(0,e.cn)("animate-pulse rounded-lg bg-border",a),...b})}function i(){return(0,d.jsxs)("div",{className:"p-6 rounded-xl border border-border bg-surface",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsx)(h,{className:"h-4 w-24"}),(0,d.jsx)(h,{className:"size-10 rounded-lg"})]}),(0,d.jsx)(h,{className:"h-8 w-16 mb-2"}),(0,d.jsx)(h,{className:"h-3 w-20"})]})}function j({type:a="spinner",...b}){switch(a){case"page":return(0,d.jsx)(g,{...b});case"skeleton":return(0,d.jsx)(h,{...b});case"card":return(0,d.jsx)(i,{...b});default:return(0,d.jsx)(f,{...b})}}},53838:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(49885),f=c.n(e),g=c(53845);function h({children:a}){return(0,d.jsxs)("div",{className:"min-h-screen flex flex-col relative bg-bg transition-colors duration-500 overflow-x-hidden selection:bg-primary/20 selection:text-primary",children:[(0,d.jsx)("div",{className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] bg-primary/5 dark:bg-primary/5 rounded-full blur-[100px] pointer-events-none z-0"}),(0,d.jsx)("div",{className:"fixed bottom-0 right-0 w-[600px] h-[600px] bg-orange-200/20 dark:bg-orange-900/10 rounded-full blur-[120px] pointer-events-none z-0 translate-y-1/3 translate-x-1/3"}),(0,d.jsx)("div",{className:"absolute top-6 right-6 z-20",children:(0,d.jsx)(g.default,{variant:"card"})}),(0,d.jsx)("main",{className:"flex-1 flex flex-col items-center justify-center p-4 sm:p-6 z-10 w-full h-full",children:a})]})}h.propTypes={children:f().node.isRequired}},53845:(a,b,c)=>{c.d(b,{default:()=>g});var d=c(48249),e=c(42118),f=c(71404);function g({className:a,variant:b="default"}){let{theme:c,toggleTheme:h,isDark:i}=(0,e.D)(),j={default:(0,f.cn)("flex items-center justify-center size-10 rounded-full","text-text-muted","hover:bg-black/5","hover:text-text-main","transition-colors"),card:(0,f.cn)("flex items-center justify-center size-11 rounded-full","bg-surface/60","hover:bg-surface","border border-border","backdrop-blur-md shadow-sm hover:shadow-md","text-text-muted-light hover:text-primary","hover:text-primary","transition-all group")};return(0,d.jsx)("button",{onClick:h,className:(0,f.cn)(j[b],a),"aria-label":`Switch to ${i?"light":"dark"} mode`,title:`Switch to ${i?"light":"dark"} mode`,children:(0,d.jsx)("span",{className:(0,f.cn)("material-symbols-outlined text-[22px]","card"===b&&"transition-transform duration-300 group-hover:rotate-12"),children:i?"light_mode":"dark_mode"})})}},56110:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377);function j({isOpen:a,provider:b,onSuccess:c,onClose:f}){let[g,k]=(0,e.useState)("loading"),[l,m]=(0,e.useState)(""),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(null),{copied:t,copy:u}=(0,i.C)(),v=async()=>{try{let a;s(null);try{a=new URL(p)}catch(a){throw Error("Invalid callback URL format")}let d=a.searchParams.get("code");a.searchParams.get("state");let e=a.searchParams.get("error");if(e)throw Error(a.searchParams.get("error_description")||e);if(!d)throw Error("No authorization code found in URL");let f=await fetch("/api/oauth/kiro/social-exchange",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:d,codeVerifier:n.codeVerifier,provider:b})}),g=await f.json();if(!f.ok)throw Error(g.error);k("success"),c?.()}catch(a){s(a.message),k("error")}},w="google"===b?"Google":"GitHub";return(0,d.jsx)(h.aF,{isOpen:a,title:`Connect Kiro via ${w}`,onClose:f,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:["loading"===g&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Initializing..."}),(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Setting up ",w," authentication"]})]}),"input"===g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:l,readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"auth_url"===t?"check":"content_copy",onClick:()=>u(l,"auth_url"),children:"Copy"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser address bar."}),(0,d.jsx)(h.pd,{value:p,onChange:a=>q(a.target.value),placeholder:"kiro://kiro.kiroAgent/authenticate-success?code=...",className:"font-mono text-xs"})]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:v,fullWidth:!0,disabled:!p,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:f,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===g&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your Kiro account via ",w," has been connected."]}),(0,d.jsx)(h.$n,{onClick:f,fullWidth:!0,children:"Done"})]}),"error"===g&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,d.jsx)("p",{className:"text-sm text-red-600 mb-4",children:r}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>k("input"),variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,d.jsx)(h.$n,{onClick:f,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})})}j.propTypes={isOpen:g().bool.isRequired,provider:g().oneOf(["google","github"]).isRequired,onSuccess:g().func,onClose:g().func.isRequired}},71404:(a,b,c)=>{c.d(b,{cn:()=>d});function d(...a){return a.filter(Boolean).join(" ").replace(/\s+/g," ").trim()}},72738:(a,b,c)=>{c.d(b,{A:()=>h});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f);function h({src:a,alt:b,size:c=32,className:f="",fallbackText:g="?",fallbackColor:i}){let[j,k]=(0,e.useState)(!1);return!a||j?(0,d.jsx)("span",{className:`inline-flex items-center justify-center font-bold rounded-lg ${f}`.trim(),style:{width:c,height:c,color:i,fontSize:Math.max(10,Math.floor(.38*c))},children:g}):(0,d.jsx)("img",{src:a,alt:b,width:c,height:c,className:f,onError:()=>k(!0)})}h.propTypes={src:g().string,alt:g().string,size:g().number,className:g().string,fallbackText:g().string,fallbackColor:g().string}},75171:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(71404);let f={default:"bg-black/5 dark:bg-white/10 text-text-muted",primary:"bg-primary/10 text-primary",success:"bg-green-500/10 text-green-600 dark:text-green-400",warning:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",error:"bg-red-500/10 text-red-600 dark:text-red-400",info:"bg-blue-500/10 text-blue-600 dark:text-blue-400"},g={sm:"px-2 py-0.5 text-[10px]",md:"px-2.5 py-1 text-xs",lg:"px-3 py-1.5 text-sm"};function h({children:a,variant:b="default",size:c="md",dot:i=!1,icon:j,className:k}){return(0,d.jsxs)("span",{className:(0,e.cn)("inline-flex items-center gap-1.5 rounded-full font-semibold",f[b],g[c],k),children:[i&&(0,d.jsx)("span",{className:(0,e.cn)("size-1.5 rounded-full","success"===b&&"bg-green-500","warning"===b&&"bg-yellow-500","error"===b&&"bg-red-500","info"===b&&"bg-blue-500","primary"===b&&"bg-primary","default"===b&&"bg-gray-500")}),j&&(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:j}),a]})}},79346:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377);function j({isOpen:a,provider:b,providerInfo:c,onSuccess:f,onClose:g,oauthMeta:k}){let[l,m]=(0,e.useState)("waiting"),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(null),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)(!1),z=(0,e.useRef)(null),A=(0,e.useRef)(!1),{copied:B,copy:C}=(0,i.C)(),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)("/callback?code=...");(0,e.useRef)(!1);let H=(0,e.useCallback)(async(a,c)=>{if(n)try{let d=await fetch(`/api/oauth/${b}/exchange`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:a,redirectUri:n.redirectUri,codeVerifier:n.codeVerifier,state:c,...k?{meta:k}:{}})}),e=await d.json();if(!d.ok)throw Error(e.error);m("success"),f?.()}catch(a){s(a.message),m("error")}},[n,b,f]),I=(0,e.useCallback)(async(a,c,d,e)=>{A.current=!1,y(!0);for(let g=0;g<60;g++){if(A.current){console.log("[OAuthModal] Polling aborted"),y(!1);return}if(await new Promise(a=>setTimeout(a,1e3*d)),A.current){console.log("[OAuthModal] Polling aborted after sleep"),y(!1);return}try{let g=await fetch(`/api/oauth/${b}/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceCode:a,codeVerifier:c,extraData:e})}),h=await g.json();if(h.success){A.current=!0,m("success"),y(!1),f?.();return}if("expired_token"===h.error||"access_denied"===h.error)throw Error(h.errorDescription||h.error);"slow_down"===h.error&&(d=Math.min(d+5,30))}catch(a){s(a.message),m("error"),y(!1);return}}s("Authorization timeout"),m("error"),y(!1)},[b,f]),J=(0,e.useCallback)(async()=>{if(b)try{let a;if(s(null),["github","qwen","kiro","kimi-coding","kilocode","codebuddy"].includes(b)){u(!0),m("waiting");let a=await fetch(`/api/oauth/${b}/device-code`),c=await a.json();if(!a.ok)throw Error(c.error);w(c);let d=c.verification_uri_complete||c.verification_uri;d&&window.open(d,"_blank");let e="kiro"===b?{_clientId:c._clientId,_clientSecret:c._clientSecret}:null;I(c.device_code,c.codeVerifier,c.interval||5,e);return}if("codex"===b)a="http://localhost:1455/auth/callback";else{let b=window.location.port||("https:"===window.location.protocol?"443":"80");a=`http://localhost:${b}/callback`}let c=new URL(`/api/oauth/${b}/authorize`,window.location.origin);c.searchParams.set("redirect_uri",a),k&&Object.entries(k).forEach(([a,b])=>{b&&c.searchParams.set(a,b)});let d=await fetch(c.toString()),e=await d.json();if(!d.ok)throw Error(e.error);o({...e,redirectUri:a}),"codex"!==b&&D?(m("waiting"),z.current=window.open(e.authUrl,"oauth_popup","width=600,height=700"),z.current||m("input")):(m("input"),window.open(e.authUrl,"_blank"))}catch(a){s(a.message),m("error")}},[b,D,I]),K=async()=>{try{s(null);let a=new URL(p),b=a.searchParams.get("code"),c=a.searchParams.get("state"),d=a.searchParams.get("error");if(d)throw Error(a.searchParams.get("error_description")||d);if(!b)throw Error("No authorization code found in URL");await H(b,c)}catch(a){s(a.message),m("error")}},L=(0,e.useCallback)(()=>{g()},[g]);return b&&c?(0,d.jsx)(h.aF,{isOpen:a,title:`Connect ${c.name}`,onClose:L,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:["waiting"===l&&!t&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Waiting for Authorization"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Complete the authorization in the popup window."}),(0,d.jsx)(h.$n,{variant:"ghost",onClick:()=>m("input"),children:"Popup blocked? Enter URL manually"})]}),"waiting"===l&&t&&v&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"text-center py-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Visit the URL below and enter the code:"}),(0,d.jsxs)("div",{className:"bg-sidebar p-4 rounded-lg mb-4",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Verification URL"}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("code",{className:"flex-1 text-sm break-all",children:v.verification_uri}),(0,d.jsx)(h.$n,{size:"sm",variant:"ghost",icon:"verify_url"===B?"check":"content_copy",onClick:()=>C(v.verification_uri,"verify_url")})]})]}),(0,d.jsxs)("div",{className:"bg-primary/10 p-4 rounded-lg",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Your Code"}),(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,d.jsx)("p",{className:"text-2xl font-mono font-bold text-primary",children:v.user_code}),(0,d.jsx)(h.$n,{size:"sm",variant:"ghost",icon:"user_code"===B?"check":"content_copy",onClick:()=>C(v.user_code,"user_code")})]})]})]}),x&&(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),"Waiting for authorization..."]})]}),"input"===l&&!t&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:n?.authUrl||"",readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"auth_url"===B?"check":"content_copy",onClick:()=>C(n?.authUrl,"auth_url"),children:"Copy"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser."}),(0,d.jsx)(h.pd,{value:p,onChange:a=>q(a.target.value),placeholder:F,className:"font-mono text-xs"})]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:K,fullWidth:!0,disabled:!p,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:L,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===l&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your ",c.name," account has been connected."]}),(0,d.jsx)(h.$n,{onClick:L,fullWidth:!0,children:"Done"})]}),"error"===l&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,d.jsx)("p",{className:"text-sm text-red-600 mb-4",children:r}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:J,variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,d.jsx)(h.$n,{onClick:L,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})}):null}j.propTypes={isOpen:g().bool.isRequired,provider:g().string,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired,oauthMeta:g().object}},79488:(a,b,c)=>{c.d(b,{default:()=>i});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412);function i({isOpen:a,onSuccess:b,onClose:c}){let[f,g]=(0,e.useState)(""),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(!1),p=async()=>{if(!f.trim())return void m("Please paste your cookie");k(!0),m(null);try{let a=await fetch("/api/oauth/iflow/cookie",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cookie:f.trim()})}),c=await a.json();if(!a.ok)throw Error(c.error||"Authentication failed");o(!0),setTimeout(()=>{b?.(),q()},1500)}catch(a){m(a.message)}finally{k(!1)}},q=()=>{g(""),m(null),o(!1),c?.()};return(0,d.jsx)(h.aF,{isOpen:a,onClose:q,title:"iFlow Cookie Authentication",children:(0,d.jsx)("div",{className:"space-y-4",children:n?(0,d.jsxs)("div",{className:"text-center py-8",children:[(0,d.jsx)("div",{className:"text-6xl mb-4",children:"✅"}),(0,d.jsx)("p",{className:"text-lg font-medium text-text-primary",children:"Authentication Successful!"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mt-2",children:"Fresh API key obtained"})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["To get a fresh API key, paste your browser cookie from"," ",(0,d.jsx)("a",{href:"https://platform.iflow.cn",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"platform.iflow.cn"})]}),(0,d.jsxs)("div",{className:"bg-surface-secondary p-3 rounded-lg text-xs space-y-2",children:[(0,d.jsx)("p",{className:"font-medium text-text-primary",children:"How to get cookie:"}),(0,d.jsxs)("ol",{className:"list-decimal list-inside space-y-1 text-text-muted",children:[(0,d.jsx)("li",{children:"Open platform.iflow.cn in your browser"}),(0,d.jsx)("li",{children:"Login to your account"}),(0,d.jsx)("li",{children:"Open DevTools (F12) → Application/Storage → Cookies"}),(0,d.jsx)("li",{children:"Copy the entire cookie string (must include BXAuth)"}),(0,d.jsx)("li",{children:"Paste it below"})]})]})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("label",{className:"block text-sm font-medium text-text-primary",children:"Cookie String"}),(0,d.jsx)("textarea",{value:f,onChange:a=>g(a.target.value),placeholder:"BXAuth=xxx; ...",className:"w-full px-3 py-2 bg-surface-secondary border border-border rounded-lg text-sm text-text-primary placeholder-text-muted focus:outline-none focus:ring-2 focus:ring-primary resize-none",rows:4,disabled:j})]}),l&&(0,d.jsx)("div",{className:"p-3 bg-error/10 border border-error/20 rounded-lg",children:(0,d.jsx)("p",{className:"text-sm text-error",children:l})}),(0,d.jsxs)("div",{className:"flex gap-3 pt-2",children:[(0,d.jsx)(h.$n,{variant:"secondary",onClick:q,disabled:j,fullWidth:!0,children:"Cancel"}),(0,d.jsx)(h.$n,{onClick:p,loading:j,fullWidth:!0,children:"Authenticate"})]})]})})})}i.propTypes={isOpen:g().bool.isRequired,onSuccess:g().func,onClose:g().func}},83352:(a,b,c)=>{c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(95145),i=c(91431),j=c(96919);let k=[...Object.keys(j.zN),...Object.keys(j.IS),...Object.keys(j.nJ),...Object.keys(j.fg)],l=Object.keys(j.IS).filter(a=>j.IS[a].noAuth);function m({isOpen:a,onClose:b,onSelect:c,selectedModel:f,activeProviders:g=[],title:n="Select Model",modelAliases:o={}}){let[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)([]),[t,u]=(0,e.useState)([]),v=(0,e.useMemo)(()=>({...j.zN,...j.IS,...j.nJ,...j.fg}),[]),w=(0,e.useMemo)(()=>{let a={};return[...new Set([...g.map(a=>a.provider),...l])].sort((a,b)=>{let c=k.indexOf(a),d=k.indexOf(b);return(-1===c?999:c)-(-1===d?999:d)}).forEach(b=>{let c=i.Xg[b]||b,d=v[b]||{name:b,color:"#666"},e=(0,j.mq)(b)||(0,j.gb)(b);if(d.passthroughModels){let e=Object.entries(o).filter(([,a])=>a.startsWith(`${c}/`)).map(([a,b])=>({id:b.replace(`${c}/`,""),name:a,value:b}));if(e.length>0){let f=t.find(a=>a.id===b),g=f?.name||d.name;a[b]={name:g,alias:c,color:d.color,models:e}}}else if(e){let c=g.find(a=>a.provider===b),e=t.find(a=>a.id===b),f=c?.name||e?.name||d.name,h=c?.providerSpecificData?.prefix||e?.prefix||b,i=Object.entries(o).filter(([,a])=>a.startsWith(`${b}/`)).map(([a,c])=>({id:c.replace(`${b}/`,""),name:a,value:`${h}/${c.replace(`${b}/`,"")}`})),j=i.length>0?i:[{id:`__placeholder__${b}`,name:`${h}/model-id`,value:`${h}/model-id`,isPlaceholder:!0}];a[b]={name:f,alias:h,color:d.color,models:j,isCustom:!0,hasModels:i.length>0}}else{let e=(0,i.KC)(b),f=new Set(e.map(a=>a.id)),g=e.length>0,h=Object.entries(o).filter(([a,b])=>b.startsWith(`${c}/`)&&(!g||a===b.replace(`${c}/`,""))&&!f.has(b.replace(`${c}/`,""))).map(([a,b])=>({id:b.replace(`${c}/`,""),name:a,value:b,isCustom:!0})),j=[...e.map(a=>({id:a.id,name:a.name,value:`${c}/${a.id}`})),...h];j.length>0&&(a[b]={name:d.name,alias:c,color:d.color,models:j})}}),a},[g,o,v,t]),x=(0,e.useMemo)(()=>{if(!p.trim())return r;let a=p.toLowerCase();return r.filter(b=>b.name.toLowerCase().includes(a))},[r,p]),y=(0,e.useMemo)(()=>{if(!p.trim())return w;let a=p.toLowerCase(),b={};return Object.entries(w).forEach(([c,d])=>{let e=d.models.filter(b=>b.name.toLowerCase().includes(a)||b.id.toLowerCase().includes(a)),f=d.name.toLowerCase().includes(a);(e.length>0||f)&&(b[c]={...d,models:e})}),b},[w,p]),z=a=>{c(a),b(),q("")};return(0,d.jsxs)(h.default,{isOpen:a,onClose:()=>{b(),q("")},title:n,size:"md",className:"p-4!",children:[(0,d.jsx)("div",{className:"mb-3",children:(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("span",{className:"material-symbols-outlined absolute left-2.5 top-1/2 -translate-y-1/2 text-text-muted text-[16px]",children:"search"}),(0,d.jsx)("input",{type:"text",placeholder:"Search...",value:p,onChange:a=>q(a.target.value),className:"w-full pl-8 pr-3 py-1.5 bg-surface border border-border rounded text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"})]})}),(0,d.jsxs)("div",{className:"max-h-[400px] overflow-y-auto space-y-3",children:[x.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5 sticky top-0 bg-surface py-0.5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary text-[14px]",children:"layers"}),(0,d.jsx)("span",{className:"text-xs font-medium text-primary",children:"Combos"}),(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",x.length,")"]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1.5",children:x.map(a=>{let b=f===a.name;return(0,d.jsx)("button",{onClick:()=>z({id:a.name,name:a.name,value:a.name}),className:`
|
|
1
|
+
"use strict";exports.id=412,exports.ids=[412],exports.modules={267:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(74429),g=c(51126),h=c(99258);let i=a=>({en:{name:"English",flag:"\uD83C\uDDFA\uD83C\uDDF8"},vi:{name:"Tiếng Việt",flag:"\uD83C\uDDFB\uD83C\uDDF3"},"zh-CN":{name:"简体中文",flag:"\uD83C\uDDE8\uD83C\uDDF3"},"zh-TW":{name:"繁體中文",flag:"\uD83C\uDDF9\uD83C\uDDFC"},ja:{name:"日本語",flag:"\uD83C\uDDEF\uD83C\uDDF5"},"pt-BR":{name:"Portugu\xeas (Brasil)",flag:"\uD83C\uDDE7\uD83C\uDDF7"},"pt-PT":{name:"Portugu\xeas (Portugal)",flag:"\uD83C\uDDF5\uD83C\uDDF9"},ko:{name:"한국어",flag:"\uD83C\uDDF0\uD83C\uDDF7"},es:{name:"Espa\xf1ol",flag:"\uD83C\uDDEA\uD83C\uDDF8"},de:{name:"Deutsch",flag:"\uD83C\uDDE9\uD83C\uDDEA"},fr:{name:"Fran\xe7ais",flag:"\uD83C\uDDEB\uD83C\uDDF7"},he:{name:"עברית",flag:"\uD83C\uDDEE\uD83C\uDDF1"},ar:{name:"العربية",flag:"\uD83C\uDDF8\uD83C\uDDE6"},ru:{name:"Русский",flag:"\uD83C\uDDF7\uD83C\uDDFA"},pl:{name:"Polski",flag:"\uD83C\uDDF5\uD83C\uDDF1"},cs:{name:"Čeština",flag:"\uD83C\uDDE8\uD83C\uDDFF"},nl:{name:"Nederlands",flag:"\uD83C\uDDF3\uD83C\uDDF1"},tr:{name:"T\xfcrk\xe7e",flag:"\uD83C\uDDF9\uD83C\uDDF7"},uk:{name:"Українська",flag:"\uD83C\uDDFA\uD83C\uDDE6"},tl:{name:"Tagalog",flag:"\uD83C\uDDF5\uD83C\uDDED"},id:{name:"Indonesia",flag:"\uD83C\uDDEE\uD83C\uDDE9"},th:{name:"ไทย",flag:"\uD83C\uDDF9\uD83C\uDDED"},hi:{name:"हिन्दी",flag:"\uD83C\uDDEE\uD83C\uDDF3"},bn:{name:"বাংলা",flag:"\uD83C\uDDE7\uD83C\uDDE9"},ur:{name:"اردو",flag:"\uD83C\uDDF5\uD83C\uDDF0"},ro:{name:"Rom\xe2nă",flag:"\uD83C\uDDF7\uD83C\uDDF4"},sv:{name:"Svenska",flag:"\uD83C\uDDF8\uD83C\uDDEA"},it:{name:"Italiano",flag:"\uD83C\uDDEE\uD83C\uDDF9"},el:{name:"Ελληνικά",flag:"\uD83C\uDDEC\uD83C\uDDF7"},hu:{name:"Magyar",flag:"\uD83C\uDDED\uD83C\uDDFA"},fi:{name:"Suomi",flag:"\uD83C\uDDEB\uD83C\uDDEE"},da:{name:"Dansk",flag:"\uD83C\uDDE9\uD83C\uDDF0"},no:{name:"Norsk",flag:"\uD83C\uDDF3\uD83C\uDDF4"}})[a]||{name:a,flag:"\uD83C\uDF10"};function j({className:a=""}){let[b,c]=(0,e.useState)("en"),[k,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(!1),o=(0,e.useRef)(null),p=async a=>{if(a!==b&&!k){l(!0),n(!1);try{await fetch("/api/locale",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({locale:a})}),await (0,h.wn)(),c(a)}catch(a){console.error("Failed to set locale:",a)}finally{l(!1)}}};return(0,d.jsxs)("div",{className:a,children:[(0,d.jsxs)("button",{onClick:()=>n(!m),disabled:k,className:"flex items-center gap-2 px-3 py-2 rounded-lg text-text-muted hover:text-text-main hover:bg-surface/60 transition-colors",title:"Language","data-i18n-skip":"true",children:[(0,d.jsx)("span",{className:"text-xl",children:i(b).flag}),(0,d.jsx)("span",{className:"text-xs font-medium uppercase",children:b.split("-")[0]})]}),m&&(0,f.createPortal)((0,d.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4","data-i18n-skip":"true",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/30 backdrop-blur-sm",onClick:()=>n(!1)}),(0,d.jsxs)("div",{ref:o,className:"relative w-full bg-surface border border-black/10 dark:border-white/10 rounded-xl shadow-2xl animate-in fade-in zoom-in-95 duration-200 max-w-2xl flex flex-col max-h-[80vh]",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between p-3 border-b border-black/5 dark:border-white/5",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:"Select Language"}),(0,d.jsx)("button",{onClick:()=>n(!1),className:"p-1.5 rounded-lg text-text-muted hover:bg-black/5 dark:hover:bg-white/5 transition-colors","aria-label":"Close",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"close"})})]}),(0,d.jsx)("div",{className:"p-6 overflow-y-auto flex-1",children:(0,d.jsx)("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(100px,1fr))] gap-2",children:g.YZ.map(a=>{let c=b===a,e=i(a);return(0,d.jsxs)("button",{onClick:()=>p(a),disabled:k,className:`flex flex-col items-center justify-start gap-1 px-2 py-3 rounded-lg text-xs font-medium transition-colors w-full ${c?"bg-primary/15 text-primary ring-2 ring-primary":"text-text-main hover:bg-black/5 dark:hover:bg-white/5"} ${k?"opacity-70 cursor-wait":""}`,title:e.name,children:[(0,d.jsx)("span",{className:"text-2xl",children:e.flag}),(0,d.jsx)("span",{className:"text-center leading-tight line-clamp-2 h-8 flex items-center",children:e.name}),c&&(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"check"})]},a)})})})]})]}),document.body)]})}},4770:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(71404);function f({label:a,options:b=[],value:c,onChange:g,placeholder:h="Select an option",error:i,hint:j,disabled:k=!1,required:l=!1,className:m,selectClassName:n,...o}){return(0,d.jsxs)("div",{className:(0,e.cn)("flex flex-col gap-1.5",m),children:[a&&(0,d.jsxs)("label",{className:"text-sm font-medium text-text-main",children:[a,l&&(0,d.jsx)("span",{className:"text-red-500 ml-1",children:"*"})]}),(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsxs)("select",{value:c,onChange:g,disabled:k,className:(0,e.cn)("w-full py-2 px-3 pr-10 text-sm text-text-main","bg-white dark:bg-white/5 border border-black/10 dark:border-white/10 rounded-md appearance-none","focus:ring-1 focus:ring-primary/30 focus:border-primary/50 focus:outline-none","transition-all disabled:opacity-50 disabled:cursor-not-allowed","text-[16px] sm:text-sm",i?"border-red-500 focus:border-red-500 focus:ring-red-500/20":"",n),...o,children:[(0,d.jsx)("option",{value:"",disabled:!0,children:h}),b.map(a=>(0,d.jsx)("option",{value:a.value,children:a.label},a.value))]}),(0,d.jsx)("div",{className:"absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none text-text-muted",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"expand_more"})})]}),i&&(0,d.jsxs)("p",{className:"text-xs text-red-500 flex items-center gap-1",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),i]}),j&&!i&&(0,d.jsx)("p",{className:"text-xs text-text-muted",children:j})]})}},5291:(a,b,c)=>{c.d(b,{default:()=>k});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(79346),i=c(86209),j=c(56110);function k({isOpen:a,providerInfo:b,onSuccess:c,onClose:f}){let[g,l]=(0,e.useState)(null),[m,n]=(0,e.useState)(null),[o,p]=(0,e.useState)(null),q=(0,e.useCallback)((a,b)=>{"builder-id"===a?l("builder-id"):"idc"===a?(l("idc"),p(b)):"social"===a?(l("social"),n(b.provider)):"import"===a&&c?.()},[c]),r=()=>{l(null),n(null),p(null)};return g?"builder-id"===g||"idc"===g?(0,d.jsx)(h.default,{isOpen:a,provider:"kiro",providerInfo:b,onSuccess:()=>{l(null),p(null),c?.(),f?.()},onClose:r,idcConfig:o}):"social"===g&&m?(0,d.jsx)(j.default,{isOpen:a,provider:m,onSuccess:()=>{l(null),n(null),c?.(),f?.()},onClose:r}):null:(0,d.jsx)(i.default,{isOpen:a,onMethodSelect:q,onClose:f})}k.propTypes={isOpen:g().bool.isRequired,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired}},17660:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(71404);function f({children:a,title:b,subtitle:c,icon:g,action:h,padding:i="md",hover:j=!1,className:k,...l}){return(0,d.jsxs)("div",{className:(0,e.cn)("bg-surface","border border-black/5 dark:border-white/5","rounded-lg shadow-sm",j&&"hover:shadow-md hover:border-primary/30 transition-all cursor-pointer",{none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"}[i],k),...l,children:[(b||h)&&(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[g&&(0,d.jsx)("div",{className:"p-2 rounded-lg bg-bg text-text-muted",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:g})}),(0,d.jsxs)("div",{children:[b&&(0,d.jsx)("h3",{className:"text-text-main font-semibold",children:b}),c&&(0,d.jsx)("p",{className:"text-sm text-text-muted",children:c})]})]}),h]}),a]})}f.Section=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-4 rounded-lg","bg-black/[0.02] dark:bg-white/[0.02]","border border-black/5 dark:border-white/5",b),...c,children:a})},f.Row=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-3 -mx-3 px-3 transition-colors","border-b border-black/5 dark:border-white/5 last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]",b),...c,children:a})},f.ListItem=function({children:a,actions:b,className:c,...f}){return(0,d.jsxs)("div",{className:(0,e.cn)("group flex items-center justify-between p-3 -mx-3 px-3","border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]","transition-colors",c),...f,children:[(0,d.jsx)("div",{className:"flex-1 min-w-0",children:a}),b&&(0,d.jsx)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:b})]})}},25919:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(71404);function f({src:a,alt:b="Avatar",name:c,size:g="md",className:h}){let i={xs:"size-6 text-xs",sm:"size-8 text-sm",md:"size-10 text-base",lg:"size-12 text-lg",xl:"size-16 text-xl"};return a?(0,d.jsx)("div",{className:(0,e.cn)("rounded-full bg-cover bg-center bg-no-repeat","ring-2 ring-white dark:ring-surface-dark shadow-sm",i[g],h),style:{backgroundImage:`url(${a})`},role:"img","aria-label":b}):(0,d.jsx)("div",{className:(0,e.cn)("rounded-full flex items-center justify-center font-semibold text-white","ring-2 ring-white dark:ring-surface-dark shadow-sm",i[g],(a=>{if(!a)return"bg-primary";let b=["bg-red-500","bg-orange-500","bg-amber-500","bg-yellow-500","bg-lime-500","bg-green-500","bg-emerald-500","bg-teal-500","bg-cyan-500","bg-sky-500","bg-blue-500","bg-indigo-500","bg-violet-500","bg-purple-500","bg-fuchsia-500","bg-pink-500","bg-rose-500"],c=a.charCodeAt(0)%b.length;return b[c]})(c),h),role:"img","aria-label":b,children:(a=>{if(!a)return"?";let b=a.split(" ");return b.length>=2?`${b[0][0]}${b[1][0]}`.toUpperCase():a.substring(0,2).toUpperCase()})(c)})}},29370:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(74429);let g=[{icon:"terminal",label:"Terminal",desc:"Full shell access"},{icon:"cast",label:"Desktop",desc:"Screen sharing"},{icon:"folder_open",label:"Files",desc:"Browse & edit files"}],h=[{icon:"qr_code_scanner",text:"Scan QR to connect instantly"},{icon:"wifi_off",text:"No port forwarding needed"},{icon:"devices",text:"Works on any device"}];function i({isOpen:a,onClose:b}){return a?(0,f.createPortal)((0,d.jsxs)("div",{className:"fixed inset-0 z-[9999] flex items-center justify-center p-4",children:[(0,d.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:b}),(0,d.jsxs)("div",{className:"relative w-full max-w-sm rounded-xl overflow-hidden shadow-2xl animate-in fade-in zoom-in-95 duration-200 flex flex-col bg-surface border border-black/10 dark:border-white/10",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 border-b border-black/5 dark:border-white/5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"w-7 h-7 rounded-lg flex items-center justify-center",style:{background:"#FF570A"},children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white text-base",children:"terminal"})}),(0,d.jsx)("span",{className:"text-xs font-bold uppercase tracking-wider",style:{fontFamily:"monospace",color:"#FF570A"},children:"9Remote"})]}),(0,d.jsx)("button",{onClick:b,className:"w-7 h-7 flex items-center justify-center rounded-lg bg-black/5 dark:bg-white/5 border border-black/5 dark:border-white/10 text-text-muted hover:text-text-main transition-colors",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:"close"})})]}),(0,d.jsxs)("div",{className:"px-7 py-7 pb-9 flex flex-col gap-6",children:[(0,d.jsxs)("div",{className:"flex flex-col items-center gap-2 text-center mt-2",children:[(0,d.jsx)("div",{className:"w-14 h-14 rounded-2xl flex items-center justify-center mb-1",style:{background:"#FF570A",boxShadow:"rgba(255,87,10,0.35) 0px 8px 32px"},children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white",style:{fontSize:30},children:"terminal"})}),(0,d.jsx)("h1",{className:"text-lg font-bold text-text-main tracking-tight",children:"9Remote"}),(0,d.jsx)("p",{className:"text-xs text-text-muted leading-5 max-w-[220px]",children:"Access your terminal, desktop & files from anywhere"})]}),(0,d.jsx)("div",{className:"flex gap-2 w-full",children:g.map(({icon:a,label:b,desc:c})=>(0,d.jsxs)("div",{className:"flex-1 flex flex-col items-center gap-1.5 py-4 px-1 rounded-xl border border-black/10 dark:border-white/10 bg-bg-alt",children:[(0,d.jsx)("span",{className:"material-symbols-outlined",style:{fontSize:22,color:"#ff6e33"},children:a}),(0,d.jsx)("p",{className:"text-xs font-semibold text-text-main",children:b}),(0,d.jsx)("p",{className:"text-[10px] text-text-muted text-center leading-4",children:c})]},b))}),(0,d.jsx)("div",{className:"flex flex-col gap-3 w-full",children:h.map(({icon:a,text:b})=>(0,d.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex-shrink-0",style:{fontSize:16,color:"#ff6e33"},children:a}),(0,d.jsx)("span",{className:"text-xs text-text-muted",children:b})]},a))}),(0,d.jsxs)("button",{onClick:()=>window.open("https://9remote.cc","_blank"),className:"w-full py-3.5 flex items-center justify-center gap-2 text-sm font-semibold text-white rounded-xl hover:opacity-90 active:scale-[0.98] transition-all",style:{background:"#FF570A",boxShadow:"0 4px 16px rgba(255,87,10,0.35)"},children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-base",children:"open_in_new"}),"Get 9Remote"]})]})]})]}),document.body):null}function j(){let[a,b]=(0,e.useState)(!1);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("button",{onClick:()=>b(!0),className:"relative flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg transition-all text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5",title:"9Remote",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"computer"}),(0,d.jsx)("span",{className:"text-xs font-medium",children:"Remote"})]}),(0,d.jsx)(i,{isOpen:a,onClose:()=>b(!1)})]})}},32971:(a,b,c)=>{c.d(b,{default:()=>e});var d=c(48249);function e({text:a,children:b,position:c="top"}){return(0,d.jsxs)("div",{className:"relative inline-flex group",children:[b,(0,d.jsx)("div",{className:`pointer-events-none absolute ${{top:"bottom-full left-1/2 -translate-x-1/2 mb-1.5",bottom:"top-full left-1/2 -translate-x-1/2 mt-1.5",left:"right-full top-1/2 -translate-y-1/2 mr-1.5",right:"left-full top-1/2 -translate-y-1/2 ml-1.5"}[c]} z-50 w-max max-w-56 rounded px-2 py-1 text-[11px] leading-snug bg-gray-900 text-white opacity-0 group-hover:opacity-100 transition-opacity duration-150 whitespace-normal`,children:a})]})}},39645:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(67484),f=c(95145),g=c(99070);function h({isOpen:a,onClose:b,title:c="Manual Configuration",configs:i=[]}){let[j,k]=(0,e.useState)(null),l=async(a,b)=>{try{await navigator.clipboard.writeText(a),k(b),setTimeout(()=>k(null),2e3)}catch(a){console.log("Failed to copy:",a)}};return(0,d.jsx)(f.default,{isOpen:a,onClose:b,title:c,size:"xl",children:(0,d.jsx)("div",{className:"flex flex-col gap-4",children:i.map((a,b)=>(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm font-medium text-text-main",children:a.filename}),(0,d.jsxs)(g.default,{variant:"ghost",size:"sm",onClick:()=>l(a.content,b),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:j===b?"check":"content_copy"}),j===b?"Copied!":"Copy"]})]}),(0,d.jsx)("pre",{className:"px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs overflow-x-auto whitespace-pre-wrap break-all max-h-60 overflow-y-auto border border-border",children:a.content})]},b))})})}},41371:(a,b,c)=>{c.d(b,{i:()=>f});var d=c(31417);let e=0,f=(0,d.v)((a,b)=>({notifications:[],addNotification:c=>{let d=++e,f={id:d,type:c.type||"info",message:c.message,title:c.title||null,duration:c.duration??5e3,dismissible:c.dismissible??!0,createdAt:Date.now()};return a(a=>({notifications:[...a.notifications,f]})),f.duration>0&&setTimeout(()=>b().removeNotification(d),f.duration),d},removeNotification:b=>{a(a=>({notifications:a.notifications.filter(a=>a.id!==b)}))},clearAll:()=>a({notifications:[]}),success:(a,c)=>b().addNotification({type:"success",message:a,title:c}),error:(a,c)=>b().addNotification({type:"error",message:a,title:c,duration:8e3}),warning:(a,c)=>b().addNotification({type:"warning",message:a,title:c}),info:(a,c)=>b().addNotification({type:"info",message:a,title:c})}))},42118:(a,b,c)=>{c.d(b,{D:()=>i});var d=c(67484),e=c(13033);function f(a){return()=>{}}function g(){return!1}function h(){return!1}function i(){let{theme:a,setTheme:b,toggleTheme:c,initTheme:i}=(0,e.A)(),j=(0,d.useSyncExternalStore)(f,g,h);return{theme:a,setTheme:b,toggleTheme:c,isDark:"dark"===a||"system"===a&&j}}},42196:(a,b,c)=>{c.d(b,{default:()=>t});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(2116),i=c.n(h),j=c(19099),k=c(71404),l=c(12020),m=c(96919),n=c(99070),o=c(95145);let p=["embedding","tts"],q=[{href:"/dashboard/endpoint",label:"Endpoint",icon:"api"},{href:"/dashboard/providers",label:"Providers",icon:"dns"},{href:"/dashboard/combos",label:"Combos",icon:"layers"},{href:"/dashboard/usage",label:"Usage",icon:"bar_chart"},{href:"/dashboard/quota",label:"Quota Tracker",icon:"data_usage"},{href:"/dashboard/mitm",label:"MITM",icon:"security"},{href:"/dashboard/cli-tools",label:"CLI Tools",icon:"terminal"}],r=[{href:"/dashboard/console-log",label:"Console Log",icon:"terminal"},{href:"/dashboard/translator",label:"Translator",icon:"translate"}],s=[{href:"/dashboard/proxy-pools",label:"Proxy Pools",icon:"lan"}];function t({onClose:a}){let b=(0,j.usePathname)(),[c,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(!1),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(null),[A,B]=(0,e.useState)(!1),C=a=>"/dashboard/endpoint"===a?"/dashboard"===b||b.startsWith("/dashboard/endpoint"):b.startsWith(a),D=async()=>{v(!0);try{await fetch("/api/shutdown",{method:"POST"})}catch(a){}v(!1),h(!1),x(!0)};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("aside",{className:"flex w-72 flex-col border-r border-black/5 dark:border-white/5 bg-vibrancy backdrop-blur-xl transition-colors duration-300 min-h-full",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 px-6 pt-5 pb-2",children:[(0,d.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FF5F56]"}),(0,d.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FFBD2E]"}),(0,d.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#27C93F]"})]}),(0,d.jsxs)("div",{className:"px-6 py-4 flex flex-col gap-2",children:[(0,d.jsxs)(i(),{href:"/dashboard",className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-9 rounded bg-linear-to-br from-[#f97815] to-[#c2590a]",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-white text-[20px]",children:"hub"})}),(0,d.jsxs)("div",{className:"flex flex-col",children:[(0,d.jsx)("h1",{className:"text-lg font-semibold tracking-tight text-text-main",children:l.vQ.name}),(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:["v",l.vQ.version]})]})]}),y&&(0,d.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,d.jsxs)("span",{className:"text-xs font-semibold text-green-600 dark:text-amber-500",children:["↑ New version available: v",y.latestVersion]}),(0,d.jsx)("code",{className:"text-[10px] text-green-600/80 dark:text-amber-400/70 font-mono select-all",children:"npm install -g 9router@latest"})]})]}),(0,d.jsxs)("nav",{className:"flex-1 px-4 py-2 space-y-1 overflow-y-auto custom-scrollbar",children:[q.map(b=>(0,d.jsxs)(i(),{href:b.href,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C(b.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C(b.href)?"fill-1":"group-hover:text-primary transition-colors"),children:b.icon}),(0,d.jsx)("span",{className:"text-sm font-medium",children:b.label})]},b.href)),(0,d.jsxs)("div",{className:"pt-4 mt-2",children:[(0,d.jsx)("p",{className:"px-4 text-xs font-semibold text-text-muted/60 uppercase tracking-wider mb-2",children:"System"}),(0,d.jsxs)("button",{onClick:()=>f(a=>!a),className:(0,k.cn)("w-full flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",b.startsWith("/dashboard/media-providers")?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"perm_media"}),(0,d.jsx)("span",{className:"text-sm font-medium flex-1 text-left",children:"Media Providers"}),(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] transition-transform",style:{transform:c?"rotate(180deg)":"rotate(0deg)"},children:"expand_more"})]}),c&&(0,d.jsx)("div",{className:"pl-4",children:m.rj.filter(a=>p.includes(a.id)).map(c=>(0,d.jsxs)(i(),{href:`/dashboard/media-providers/${c.id}`,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-1.5 rounded-lg transition-all group",b.startsWith(`/dashboard/media-providers/${c.id}`)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:c.icon}),(0,d.jsx)("span",{className:"text-sm",children:c.label})]},c.id))}),s.map(b=>(0,d.jsxs)(i(),{href:b.href,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C(b.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C(b.href)?"fill-1":"group-hover:text-primary transition-colors"),children:b.icon}),(0,d.jsx)("span",{className:"text-sm font-medium",children:b.label})]},b.href)),r.map(b=>"/dashboard/translator"!==b.href||A?(0,d.jsxs)(i(),{href:b.href,onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C(b.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C(b.href)?"fill-1":"group-hover:text-primary transition-colors"),children:b.icon}),(0,d.jsx)("span",{className:"text-sm font-medium",children:b.label})]},b.href):null),(0,d.jsxs)(i(),{href:"/dashboard/profile",onClick:a,className:(0,k.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",C("/dashboard/profile")?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,d.jsx)("span",{className:(0,k.cn)("material-symbols-outlined text-[18px]",C("/dashboard/profile")?"fill-1":"group-hover:text-primary transition-colors"),children:"settings"}),(0,d.jsx)("span",{className:"text-sm font-medium",children:"Settings"})]})]})]}),(0,d.jsx)("div",{className:"p-3 border-t border-black/5 dark:border-white/5",children:(0,d.jsx)(n.default,{variant:"outline",fullWidth:!0,icon:"power_settings_new",onClick:()=>h(!0),className:"text-red-500 border-red-200 hover:bg-red-50 hover:border-red-300",children:"Shutdown"})})]}),(0,d.jsx)(o.ConfirmModal,{isOpen:g,onClose:()=>h(!1),onConfirm:D,title:"Close Proxy",message:"Are you sure you want to close the proxy server?",confirmText:"Close",cancelText:"Cancel",variant:"danger",loading:u}),w&&(0,d.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 backdrop-blur-sm",children:(0,d.jsxs)("div",{className:"text-center p-8",children:[(0,d.jsx)("div",{className:"flex items-center justify-center size-16 rounded-full bg-red-500/20 text-red-500 mx-auto mb-4",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"power_off"})}),(0,d.jsx)("h2",{className:"text-xl font-semibold text-white mb-2",children:"Server Disconnected"}),(0,d.jsx)("p",{className:"text-text-muted mb-6",children:"The proxy server has been stopped."}),(0,d.jsx)(n.default,{variant:"secondary",onClick:()=>globalThis.location.reload(),children:"Reload Page"})]})})]})}t.propTypes={onClose:g().func}},43182:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412);let i="https://gitlab.com";function j({isOpen:a,providerInfo:b,onSuccess:c,onClose:f}){let[g,k]=(0,e.useState)(null),[l,m]=(0,e.useState)(i),[n,o]=(0,e.useState)(""),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)(!1),[z,A]=(0,e.useState)(null),B=()=>{k(null),m(i),o(""),q(""),s(""),w(null),u(!1),y(!1),A(null),f()},C=async()=>{if(!r.trim())return void w("Personal Access Token is required");u(!0),w(null);try{let a=await fetch("/api/oauth/gitlab/pat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:r.trim(),baseUrl:l.trim()||i})}),b=await a.json();if(!a.ok)throw Error(b.error||"Authentication failed");c?.(),B()}catch(a){w(a.message)}finally{u(!1)}};return a?x&&z?(0,d.jsx)(h.LF,{isOpen:!0,provider:"gitlab",providerInfo:b,oauthMeta:z,onSuccess:()=>{c?.(),B()},onClose:()=>{y(!1),A(null)}}):(0,d.jsx)(h.aF,{isOpen:a,title:"Connect GitLab Duo",onClose:B,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[!g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Choose how to authenticate with GitLab Duo:"}),(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,d.jsxs)("button",{onClick:()=>k("oauth"),className:"flex flex-col items-center gap-2 p-4 rounded-lg border border-border hover:border-primary hover:bg-primary/5 transition-colors text-left",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-2xl text-primary",children:"lock_open"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:"OAuth App"}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Use a GitLab OAuth application"})]})]}),(0,d.jsxs)("button",{onClick:()=>k("pat"),className:"flex flex-col items-center gap-2 p-4 rounded-lg border border-border hover:border-primary hover:bg-primary/5 transition-colors text-left",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-2xl text-primary",children:"key"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:"Personal Access Token"}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Use a GitLab PAT with api scope"})]})]})]})]}),"oauth"===g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:["Create an OAuth app at"," ",(0,d.jsx)("a",{href:`${l.trim()||i}/-/profile/applications`,target:"_blank",rel:"noreferrer",className:"text-primary underline",children:"GitLab Applications"})," ","with redirect URI"," ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"http://localhost/callback"})]}),(0,d.jsx)(h.pd,{label:"GitLab Base URL",value:l,onChange:a=>m(a.target.value),placeholder:i}),(0,d.jsx)(h.pd,{label:"Client ID",value:n,onChange:a=>o(a.target.value),placeholder:"Your OAuth application client ID"}),(0,d.jsx)(h.pd,{label:"Client Secret (optional for PKCE)",value:p,onChange:a=>q(a.target.value),placeholder:"Leave empty for public PKCE app"}),v&&(0,d.jsx)("p",{className:"text-sm text-red-500",children:v}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>{n.trim()?(w(null),A({baseUrl:l.trim()||i,clientId:n.trim(),clientSecret:p.trim()}),y(!0)):w("Client ID is required")},fullWidth:!0,disabled:!n.trim(),children:"Authorize"}),(0,d.jsx)(h.$n,{onClick:()=>{k(null),w(null)},variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"pat"===g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:["Create a PAT at"," ",(0,d.jsx)("a",{href:`${l.trim()||i}/-/user_settings/personal_access_tokens`,target:"_blank",rel:"noreferrer",className:"text-primary underline",children:"GitLab Access Tokens"})," ","with scopes: ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"api"}),","," ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"read_user"}),", and"," ",(0,d.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"ai_features"}),"."]}),(0,d.jsx)(h.pd,{label:"GitLab Base URL",value:l,onChange:a=>m(a.target.value),placeholder:i}),(0,d.jsx)(h.pd,{label:"Personal Access Token",value:r,onChange:a=>s(a.target.value),placeholder:"glpat-xxxxxxxxxxxxxxxxxxxx",type:"password"}),v&&(0,d.jsx)("p",{className:"text-sm text-red-500",children:v}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:C,fullWidth:!0,disabled:!r.trim()||t,loading:t,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:()=>{k(null),w(null)},variant:"ghost",fullWidth:!0,children:"Back"})]})]})]})}):null}j.propTypes={isOpen:g().bool.isRequired,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired}},48781:(a,b,c)=>{c.d(b,{default:()=>k});var d=c(48249),e=c(2116),f=c.n(e),g=c(12020);let h=[{label:"Features",href:"#features"},{label:"Pricing",href:"#pricing"},{label:"Changelog",href:"#"}],i=[{label:"Documentation",href:"#"},{label:"API Reference",href:"#"},{label:"Help Center",href:"#"}],j=[{label:"About",href:"#"},{label:"Blog",href:"#"},{label:"Contact",href:"#"}];function k(){return(0,d.jsx)("footer",{className:"bg-bg border-t border-border pt-16 pb-12",children:(0,d.jsxs)("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:[(0,d.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-10 mb-12",children:[(0,d.jsxs)("div",{className:"col-span-2 lg:col-span-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-6",children:[(0,d.jsx)("div",{className:"size-6 text-primary",children:(0,d.jsx)("svg",{className:"w-full h-full",fill:"currentColor",viewBox:"0 0 48 48",children:(0,d.jsx)("path",{clipRule:"evenodd",d:"M12.0799 24L4 19.2479L9.95537 8.75216L18.04 13.4961L18.0446 4H29.9554L29.96 13.4961L38.0446 8.75216L44 19.2479L35.92 24L44 28.7521L38.0446 39.2479L29.96 34.5039L29.9554 44H18.0446L18.04 34.5039L9.95537 39.2479L4 28.7521L12.0799 24Z",fillRule:"evenodd"})})}),(0,d.jsx)("span",{className:"text-xl font-bold text-text-main",children:g.vQ.name})]}),(0,d.jsx)("p",{className:"text-text-muted mb-6 max-w-sm font-light",children:"The unified interface for modern AI infrastructure. Secure, observable, and scalable."}),(0,d.jsxs)("div",{className:"flex gap-4",children:[(0,d.jsx)("a",{href:"#",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"Twitter",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M22.46 6c-.77.35-1.6.58-2.46.69.88-.53 1.56-1.37 1.88-2.38-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29 0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15 0 1.49.75 2.81 1.91 3.56-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.22 4.22 0 0 1-1.93.07 4.28 4.28 0 0 0 4 2.98 8.521 8.521 0 0 1-5.33 1.84c-.34 0-.68-.02-1.02-.06C3.44 20.29 5.7 21 8.12 21 16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56.84-.6 1.56-1.36 2.14-2.23z"})})}),(0,d.jsx)("a",{href:"#",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"GitHub",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0 0 22 12.017C22 6.484 17.522 2 12 2z"})})})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Product"}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:h.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)(f(),{href:a.href,className:"hover:text-primary transition-colors",children:a.label})},a.label))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Resources"}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:i.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)(f(),{href:a.href,className:"hover:text-primary transition-colors",children:a.label})},a.label))})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Company"}),(0,d.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:j.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)(f(),{href:a.href,className:"hover:text-primary transition-colors",children:a.label})},a.label))})]})]}),(0,d.jsxs)("div",{className:"border-t border-border pt-8 flex flex-col md:flex-row justify-between items-center gap-4",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["\xa9 ",new Date().getFullYear()," ",g.vQ.name," Inc. All rights reserved."]}),(0,d.jsxs)("div",{className:"flex gap-6 text-sm text-text-muted",children:[(0,d.jsx)(f(),{href:"#",className:"hover:text-primary transition-colors",children:"Privacy Policy"}),(0,d.jsx)(f(),{href:"#",className:"hover:text-primary transition-colors",children:"Terms of Service"})]})]})]})})}},50377:(a,b,c)=>{c.d(b,{C:()=>e});var d=c(67484);function e(a=2e3){let[b,c]=(0,d.useState)(null),f=(0,d.useRef)(null);return{copied:b,copy:(0,d.useCallback)((b,d="default")=>{navigator.clipboard.writeText(b),c(d),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{c(null)},a)},[a])}}},50412:(a,b,c)=>{c.d(b,{Ex:()=>j.default,$n:()=>d.default,Zp:()=>g.default,Qv:()=>i.CardSkeleton,G9:()=>t.default,wI:()=>w.default,vj:()=>v.default,vE:()=>u.default,pd:()=>e.default,Mh:()=>s.default,c5:()=>q.default,uR:()=>o.default,aF:()=>h.default,rq:()=>n.default,LF:()=>m.default,gM:()=>r.default,Iz:()=>x.default,l6:()=>f.default,UW:()=>l.default,lM:()=>k.default,m_:()=>y.default,jK:()=>p.default});var d=c(99070),e=c(83552),f=c(4770),g=c(17660),h=c(95145),i=c(74812);c(25919);var j=c(75171),k=c(95514),l=c(53845);c(19308),c(42196),c(86739),c(48781);var m=c(79346),n=c(83352),o=c(39645),p=c(87226),q=c(267);c(29370);var r=c(91809);c(86209);var s=c(5291);c(56110);var t=c(51109),u=c(79488),v=c(43182),w=c(51585),x=c(91099),y=c(32971);c(85306),c(53838)},51109:(a,b,c)=>{c.d(b,{default:()=>i});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412);function i({isOpen:a,onSuccess:b,onClose:c}){let[f,g]=(0,e.useState)(""),[j,k]=(0,e.useState)(""),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(!1),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(!1),v=async()=>{q(!0),m(null),s(!1),u(!1);try{let a=await fetch("/api/oauth/cursor/auto-import"),b=await a.json();b.found?(g(b.accessToken),k(b.machineId),s(!0)):b.windowsManual?u(!0):m(b.error||"Could not auto-detect tokens")}catch(a){m("Failed to auto-detect tokens")}finally{q(!1)}},w=async()=>{if(!f.trim())return void m("Please enter an access token");if(!j.trim())return void m("Please enter a machine ID");o(!0),m(null);try{let a=await fetch("/api/oauth/cursor/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accessToken:f.trim(),machineId:j.trim()})}),d=await a.json();if(!a.ok)throw Error(d.error||"Import failed");b?.(),c()}catch(a){m(a.message)}finally{o(!1)}};return(0,d.jsx)(h.aF,{isOpen:a,title:"Connect Cursor IDE",onClose:c,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[p&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Auto-detecting tokens..."}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Reading from Cursor IDE database"})]}),!p&&(0,d.jsxs)(d.Fragment,{children:[r&&(0,d.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,d.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200",children:"Tokens auto-detected from Cursor IDE successfully!"})]})}),t&&(0,d.jsxs)("div",{className:"bg-amber-50 dark:bg-amber-900/20 p-3 rounded-lg border border-amber-200 dark:border-amber-800 flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex gap-2 items-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-amber-600 dark:text-amber-400",children:"info"}),(0,d.jsx)("p",{className:"text-sm font-medium text-amber-800 dark:text-amber-200",children:"Could not read Cursor database automatically."})]}),(0,d.jsxs)("p",{className:"text-xs text-amber-700 dark:text-amber-300",children:["Make sure Cursor IDE has been opened at least once, then click ",(0,d.jsx)("strong",{children:"Retry"}),". If the problem persists, paste your tokens manually below."]}),(0,d.jsx)(h.$n,{onClick:v,variant:"outline",fullWidth:!0,children:"Retry"})]}),!r&&!t&&!l&&(0,d.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,d.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:"Cursor IDE not detected. Please paste your tokens manually."})]})}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Access Token ",(0,d.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,d.jsx)("textarea",{value:f,onChange:a=>g(a.target.value),placeholder:"Access token will be auto-filled...",rows:3,className:"w-full px-3 py-2 text-sm font-mono border border-border rounded-lg bg-background focus:outline-none focus:border-primary resize-none"})]}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Machine ID ",(0,d.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,d.jsx)(h.pd,{value:j,onChange:a=>k(a.target.value),placeholder:"Machine ID will be auto-filled...",className:"font-mono text-sm"})]}),l&&(0,d.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,d.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:l})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:w,fullWidth:!0,disabled:n||!f.trim()||!j.trim(),children:n?"Importing...":"Import Token"}),(0,d.jsx)(h.$n,{onClick:c,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})})}i.propTypes={isOpen:g().bool.isRequired,onSuccess:g().func,onClose:g().func.isRequired}},51585:(a,b,c)=>{c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(95145),i=c(83552),j=c(99070),k=c(75171),l=c(96919);function m({isOpen:a,connection:b,proxyPools:c,onSave:f,onClose:g}){let[n,o]=(0,e.useState)({name:"",priority:1,apiKey:""}),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(null),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)(!1),z=b?.authType==="oauth",A=!!b&&((0,l.mq)(b.provider)||(0,l.gb)(b.provider)),B=async()=>{if(b?.provider){q(!0),s(null);try{let a=await fetch(`/api/providers/${b.id}/test`,{method:"POST"}),c=await a.json();s(c.valid?"success":"failed")}catch{s("failed")}finally{q(!1)}}},C=async()=>{if(b?.provider&&n.apiKey){u(!0),w(null);try{let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:n.apiKey})}),c=await a.json();w(c.valid?"success":"failed")}catch{w("failed")}finally{u(!1)}}},D=async()=>{if(b){y(!0);try{let a={name:n.name,priority:n.priority};if(!z&&n.apiKey){a.apiKey=n.apiKey;let c="success"===v;if(!c)try{u(!0),w(null);let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:n.apiKey})});c=!!(await a.json()).valid,w(c?"success":"failed")}catch{w("failed")}finally{u(!1)}c&&(a.testStatus="active",a.lastError=null,a.lastErrorAt=null)}await f(a)}finally{y(!1)}}};return b?(0,d.jsx)(h.default,{isOpen:a,title:"Edit Connection",onClose:g,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(i.default,{label:"Name",value:n.name,onChange:a=>o({...n,name:a.target.value}),placeholder:z?"Account name":"Production Key"}),z&&b.email&&(0,d.jsxs)("div",{className:"bg-sidebar/50 p-3 rounded-lg",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-1",children:"Email"}),(0,d.jsx)("p",{className:"font-medium",children:b.email})]}),(0,d.jsx)(i.default,{label:"Priority",type:"number",value:n.priority,onChange:a=>o({...n,priority:Number.parseInt(a.target.value,10)||1})}),!z&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(i.default,{label:"API Key",type:"password",value:n.apiKey,onChange:a=>o({...n,apiKey:a.target.value}),placeholder:"Enter new API key",hint:"Leave blank to keep the current API key.",className:"flex-1"}),(0,d.jsx)("div",{className:"pt-6",children:(0,d.jsx)(j.default,{onClick:C,disabled:!n.apiKey||t||x,variant:"secondary",children:t?"Checking...":"Check"})})]}),v&&(0,d.jsx)(k.default,{variant:"success"===v?"success":"error",children:"success"===v?"Valid":"Invalid"})]}),!A&&(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)(j.default,{onClick:B,variant:"secondary",disabled:p,children:p?"Testing...":"Test Connection"}),r&&(0,d.jsx)(k.default,{variant:"success"===r?"success":"error",children:"success"===r?"Valid":"Failed"})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.default,{onClick:D,fullWidth:!0,disabled:x,children:x?"Saving...":"Save"}),(0,d.jsx)(j.default,{onClick:g,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}m.propTypes={isOpen:g().bool.isRequired,connection:g().shape({id:g().string,name:g().string,email:g().string,priority:g().number,authType:g().string,provider:g().string,providerSpecificData:g().object}),proxyPools:g().arrayOf(g().shape({id:g().string,name:g().string})),onSave:g().func.isRequired,onClose:g().func.isRequired}},53838:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(49885),f=c.n(e),g=c(53845);function h({children:a}){return(0,d.jsxs)("div",{className:"min-h-screen flex flex-col relative bg-bg transition-colors duration-500 overflow-x-hidden selection:bg-primary/20 selection:text-primary",children:[(0,d.jsx)("div",{className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] bg-primary/5 dark:bg-primary/5 rounded-full blur-[100px] pointer-events-none z-0"}),(0,d.jsx)("div",{className:"fixed bottom-0 right-0 w-[600px] h-[600px] bg-orange-200/20 dark:bg-orange-900/10 rounded-full blur-[120px] pointer-events-none z-0 translate-y-1/3 translate-x-1/3"}),(0,d.jsx)("div",{className:"absolute top-6 right-6 z-20",children:(0,d.jsx)(g.default,{variant:"card"})}),(0,d.jsx)("main",{className:"flex-1 flex flex-col items-center justify-center p-4 sm:p-6 z-10 w-full h-full",children:a})]})}h.propTypes={children:f().node.isRequired}},53845:(a,b,c)=>{c.d(b,{default:()=>g});var d=c(48249),e=c(42118),f=c(71404);function g({className:a,variant:b="default"}){let{theme:c,toggleTheme:h,isDark:i}=(0,e.D)(),j={default:(0,f.cn)("flex items-center justify-center size-10 rounded-full","text-text-muted","hover:bg-black/5","hover:text-text-main","transition-colors"),card:(0,f.cn)("flex items-center justify-center size-11 rounded-full","bg-surface/60","hover:bg-surface","border border-border","backdrop-blur-md shadow-sm hover:shadow-md","text-text-muted-light hover:text-primary","hover:text-primary","transition-all group")};return(0,d.jsx)("button",{onClick:h,className:(0,f.cn)(j[b],a),"aria-label":`Switch to ${i?"light":"dark"} mode`,title:`Switch to ${i?"light":"dark"} mode`,children:(0,d.jsx)("span",{className:(0,f.cn)("material-symbols-outlined text-[22px]","card"===b&&"transition-transform duration-300 group-hover:rotate-12"),children:i?"light_mode":"dark_mode"})})}},56110:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377);function j({isOpen:a,provider:b,onSuccess:c,onClose:f}){let[g,k]=(0,e.useState)("loading"),[l,m]=(0,e.useState)(""),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(null),{copied:t,copy:u}=(0,i.C)(),v=async()=>{try{let a;s(null);try{a=new URL(p)}catch(a){throw Error("Invalid callback URL format")}let d=a.searchParams.get("code");a.searchParams.get("state");let e=a.searchParams.get("error");if(e)throw Error(a.searchParams.get("error_description")||e);if(!d)throw Error("No authorization code found in URL");let f=await fetch("/api/oauth/kiro/social-exchange",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:d,codeVerifier:n.codeVerifier,provider:b})}),g=await f.json();if(!f.ok)throw Error(g.error);k("success"),c?.()}catch(a){s(a.message),k("error")}},w="google"===b?"Google":"GitHub";return(0,d.jsx)(h.aF,{isOpen:a,title:`Connect Kiro via ${w}`,onClose:f,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:["loading"===g&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Initializing..."}),(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["Setting up ",w," authentication"]})]}),"input"===g&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:l,readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"auth_url"===t?"check":"content_copy",onClick:()=>u(l,"auth_url"),children:"Copy"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser address bar."}),(0,d.jsx)(h.pd,{value:p,onChange:a=>q(a.target.value),placeholder:"kiro://kiro.kiroAgent/authenticate-success?code=...",className:"font-mono text-xs"})]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:v,fullWidth:!0,disabled:!p,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:f,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===g&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your Kiro account via ",w," has been connected."]}),(0,d.jsx)(h.$n,{onClick:f,fullWidth:!0,children:"Done"})]}),"error"===g&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,d.jsx)("p",{className:"text-sm text-red-600 mb-4",children:r}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>k("input"),variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,d.jsx)(h.$n,{onClick:f,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})})}j.propTypes={isOpen:g().bool.isRequired,provider:g().oneOf(["google","github"]).isRequired,onSuccess:g().func,onClose:g().func.isRequired}},71404:(a,b,c)=>{c.d(b,{cn:()=>d});function d(...a){return a.filter(Boolean).join(" ").replace(/\s+/g," ").trim()}},72738:(a,b,c)=>{c.d(b,{A:()=>h});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f);function h({src:a,alt:b,size:c=32,className:f="",fallbackText:g="?",fallbackColor:i}){let[j,k]=(0,e.useState)(!1);return!a||j?(0,d.jsx)("span",{className:`inline-flex items-center justify-center font-bold rounded-lg ${f}`.trim(),style:{width:c,height:c,color:i,fontSize:Math.max(10,Math.floor(.38*c))},children:g}):(0,d.jsx)("img",{src:a,alt:b,width:c,height:c,className:f,onError:()=>k(!0)})}h.propTypes={src:g().string,alt:g().string,size:g().number,className:g().string,fallbackText:g().string,fallbackColor:g().string}},74812:(a,b,c)=>{c.d(b,{CardSkeleton:()=>i,PageLoading:()=>g,Skeleton:()=>h,Spinner:()=>f,default:()=>j});var d=c(48249),e=c(71404);function f({size:a="md",className:b}){return(0,d.jsx)("span",{className:(0,e.cn)("material-symbols-outlined animate-spin text-primary",{sm:"size-4",md:"size-6",lg:"size-8",xl:"size-12"}[a],b),children:"progress_activity"})}function g({message:a="Loading..."}){return(0,d.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg",children:[(0,d.jsx)(f,{size:"xl"}),(0,d.jsx)("p",{className:"mt-4 text-text-muted",children:a})]})}function h({className:a,...b}){return(0,d.jsx)("div",{className:(0,e.cn)("animate-pulse rounded-lg bg-border",a),...b})}function i(){return(0,d.jsxs)("div",{className:"p-6 rounded-xl border border-border bg-surface",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsx)(h,{className:"h-4 w-24"}),(0,d.jsx)(h,{className:"size-10 rounded-lg"})]}),(0,d.jsx)(h,{className:"h-8 w-16 mb-2"}),(0,d.jsx)(h,{className:"h-3 w-20"})]})}function j({type:a="spinner",...b}){switch(a){case"page":return(0,d.jsx)(g,{...b});case"skeleton":return(0,d.jsx)(h,{...b});case"card":return(0,d.jsx)(i,{...b});default:return(0,d.jsx)(f,{...b})}}},75171:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(71404);let f={default:"bg-black/5 dark:bg-white/10 text-text-muted",primary:"bg-primary/10 text-primary",success:"bg-green-500/10 text-green-600 dark:text-green-400",warning:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",error:"bg-red-500/10 text-red-600 dark:text-red-400",info:"bg-blue-500/10 text-blue-600 dark:text-blue-400"},g={sm:"px-2 py-0.5 text-[10px]",md:"px-2.5 py-1 text-xs",lg:"px-3 py-1.5 text-sm"};function h({children:a,variant:b="default",size:c="md",dot:i=!1,icon:j,className:k}){return(0,d.jsxs)("span",{className:(0,e.cn)("inline-flex items-center gap-1.5 rounded-full font-semibold",f[b],g[c],k),children:[i&&(0,d.jsx)("span",{className:(0,e.cn)("size-1.5 rounded-full","success"===b&&"bg-green-500","warning"===b&&"bg-yellow-500","error"===b&&"bg-red-500","info"===b&&"bg-blue-500","primary"===b&&"bg-primary","default"===b&&"bg-gray-500")}),j&&(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:j}),a]})}},79346:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377);function j({isOpen:a,provider:b,providerInfo:c,onSuccess:f,onClose:g,oauthMeta:k}){let[l,m]=(0,e.useState)("waiting"),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)(null),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)(!1),z=(0,e.useRef)(null),A=(0,e.useRef)(!1),{copied:B,copy:C}=(0,i.C)(),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)("/callback?code=...");(0,e.useRef)(!1);let H=(0,e.useCallback)(async(a,c)=>{if(n)try{let d=await fetch(`/api/oauth/${b}/exchange`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:a,redirectUri:n.redirectUri,codeVerifier:n.codeVerifier,state:c,...k?{meta:k}:{}})}),e=await d.json();if(!d.ok)throw Error(e.error);m("success"),f?.()}catch(a){s(a.message),m("error")}},[n,b,f]),I=(0,e.useCallback)(async(a,c,d,e)=>{A.current=!1,y(!0);for(let g=0;g<60;g++){if(A.current){console.log("[OAuthModal] Polling aborted"),y(!1);return}if(await new Promise(a=>setTimeout(a,1e3*d)),A.current){console.log("[OAuthModal] Polling aborted after sleep"),y(!1);return}try{let g=await fetch(`/api/oauth/${b}/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceCode:a,codeVerifier:c,extraData:e})}),h=await g.json();if(h.success){A.current=!0,m("success"),y(!1),f?.();return}if("expired_token"===h.error||"access_denied"===h.error)throw Error(h.errorDescription||h.error);"slow_down"===h.error&&(d=Math.min(d+5,30))}catch(a){s(a.message),m("error"),y(!1);return}}s("Authorization timeout"),m("error"),y(!1)},[b,f]),J=(0,e.useCallback)(async()=>{if(b)try{let a;if(s(null),["github","qwen","kiro","kimi-coding","kilocode","codebuddy"].includes(b)){u(!0),m("waiting");let a=await fetch(`/api/oauth/${b}/device-code`),c=await a.json();if(!a.ok)throw Error(c.error);w(c);let d=c.verification_uri_complete||c.verification_uri;d&&window.open(d,"_blank");let e="kiro"===b?{_clientId:c._clientId,_clientSecret:c._clientSecret}:null;I(c.device_code,c.codeVerifier,c.interval||5,e);return}if("codex"===b)a="http://localhost:1455/auth/callback";else{let b=window.location.port||("https:"===window.location.protocol?"443":"80");a=`http://localhost:${b}/callback`}let c=new URL(`/api/oauth/${b}/authorize`,window.location.origin);c.searchParams.set("redirect_uri",a),k&&Object.entries(k).forEach(([a,b])=>{b&&c.searchParams.set(a,b)});let d=await fetch(c.toString()),e=await d.json();if(!d.ok)throw Error(e.error);o({...e,redirectUri:a}),"codex"!==b&&D?(m("waiting"),z.current=window.open(e.authUrl,"oauth_popup","width=600,height=700"),z.current||m("input")):(m("input"),window.open(e.authUrl,"_blank"))}catch(a){s(a.message),m("error")}},[b,D,I]),K=async()=>{try{s(null);let a=new URL(p),b=a.searchParams.get("code"),c=a.searchParams.get("state"),d=a.searchParams.get("error");if(d)throw Error(a.searchParams.get("error_description")||d);if(!b)throw Error("No authorization code found in URL");await H(b,c)}catch(a){s(a.message),m("error")}},L=(0,e.useCallback)(()=>{g()},[g]);return b&&c?(0,d.jsx)(h.aF,{isOpen:a,title:`Connect ${c.name}`,onClose:L,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:["waiting"===l&&!t&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Waiting for Authorization"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Complete the authorization in the popup window."}),(0,d.jsx)(h.$n,{variant:"ghost",onClick:()=>m("input"),children:"Popup blocked? Enter URL manually"})]}),"waiting"===l&&t&&v&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"text-center py-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Visit the URL below and enter the code:"}),(0,d.jsxs)("div",{className:"bg-sidebar p-4 rounded-lg mb-4",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Verification URL"}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("code",{className:"flex-1 text-sm break-all",children:v.verification_uri}),(0,d.jsx)(h.$n,{size:"sm",variant:"ghost",icon:"verify_url"===B?"check":"content_copy",onClick:()=>C(v.verification_uri,"verify_url")})]})]}),(0,d.jsxs)("div",{className:"bg-primary/10 p-4 rounded-lg",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Your Code"}),(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,d.jsx)("p",{className:"text-2xl font-mono font-bold text-primary",children:v.user_code}),(0,d.jsx)(h.$n,{size:"sm",variant:"ghost",icon:"user_code"===B?"check":"content_copy",onClick:()=>C(v.user_code,"user_code")})]})]})]}),x&&(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),"Waiting for authorization..."]})]}),"input"===l&&!t&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:n?.authUrl||"",readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"auth_url"===B?"check":"content_copy",onClick:()=>C(n?.authUrl,"auth_url"),children:"Copy"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser."}),(0,d.jsx)(h.pd,{value:p,onChange:a=>q(a.target.value),placeholder:F,className:"font-mono text-xs"})]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:K,fullWidth:!0,disabled:!p,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:L,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===l&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your ",c.name," account has been connected."]}),(0,d.jsx)(h.$n,{onClick:L,fullWidth:!0,children:"Done"})]}),"error"===l&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,d.jsx)("p",{className:"text-sm text-red-600 mb-4",children:r}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:J,variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,d.jsx)(h.$n,{onClick:L,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})}):null}j.propTypes={isOpen:g().bool.isRequired,provider:g().string,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired,oauthMeta:g().object}},79488:(a,b,c)=>{c.d(b,{default:()=>i});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412);function i({isOpen:a,onSuccess:b,onClose:c}){let[f,g]=(0,e.useState)(""),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(!1),p=async()=>{if(!f.trim())return void m("Please paste your cookie");k(!0),m(null);try{let a=await fetch("/api/oauth/iflow/cookie",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cookie:f.trim()})}),c=await a.json();if(!a.ok)throw Error(c.error||"Authentication failed");o(!0),setTimeout(()=>{b?.(),q()},1500)}catch(a){m(a.message)}finally{k(!1)}},q=()=>{g(""),m(null),o(!1),c?.()};return(0,d.jsx)(h.aF,{isOpen:a,onClose:q,title:"iFlow Cookie Authentication",children:(0,d.jsx)("div",{className:"space-y-4",children:n?(0,d.jsxs)("div",{className:"text-center py-8",children:[(0,d.jsx)("div",{className:"text-6xl mb-4",children:"✅"}),(0,d.jsx)("p",{className:"text-lg font-medium text-text-primary",children:"Authentication Successful!"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mt-2",children:"Fresh API key obtained"})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:["To get a fresh API key, paste your browser cookie from"," ",(0,d.jsx)("a",{href:"https://platform.iflow.cn",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"platform.iflow.cn"})]}),(0,d.jsxs)("div",{className:"bg-surface-secondary p-3 rounded-lg text-xs space-y-2",children:[(0,d.jsx)("p",{className:"font-medium text-text-primary",children:"How to get cookie:"}),(0,d.jsxs)("ol",{className:"list-decimal list-inside space-y-1 text-text-muted",children:[(0,d.jsx)("li",{children:"Open platform.iflow.cn in your browser"}),(0,d.jsx)("li",{children:"Login to your account"}),(0,d.jsx)("li",{children:"Open DevTools (F12) → Application/Storage → Cookies"}),(0,d.jsx)("li",{children:"Copy the entire cookie string (must include BXAuth)"}),(0,d.jsx)("li",{children:"Paste it below"})]})]})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("label",{className:"block text-sm font-medium text-text-primary",children:"Cookie String"}),(0,d.jsx)("textarea",{value:f,onChange:a=>g(a.target.value),placeholder:"BXAuth=xxx; ...",className:"w-full px-3 py-2 bg-surface-secondary border border-border rounded-lg text-sm text-text-primary placeholder-text-muted focus:outline-none focus:ring-2 focus:ring-primary resize-none",rows:4,disabled:j})]}),l&&(0,d.jsx)("div",{className:"p-3 bg-error/10 border border-error/20 rounded-lg",children:(0,d.jsx)("p",{className:"text-sm text-error",children:l})}),(0,d.jsxs)("div",{className:"flex gap-3 pt-2",children:[(0,d.jsx)(h.$n,{variant:"secondary",onClick:q,disabled:j,fullWidth:!0,children:"Cancel"}),(0,d.jsx)(h.$n,{onClick:p,loading:j,fullWidth:!0,children:"Authenticate"})]})]})})})}i.propTypes={isOpen:g().bool.isRequired,onSuccess:g().func,onClose:g().func}},83352:(a,b,c)=>{c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(95145),i=c(91431),j=c(96919);let k=[...Object.keys(j.zN),...Object.keys(j.IS),...Object.keys(j.nJ),...Object.keys(j.fg)],l=Object.keys(j.IS).filter(a=>j.IS[a].noAuth);function m({isOpen:a,onClose:b,onSelect:c,selectedModel:f,activeProviders:g=[],title:n="Select Model",modelAliases:o={}}){let[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)([]),[t,u]=(0,e.useState)([]),v=(0,e.useMemo)(()=>({...j.zN,...j.IS,...j.nJ,...j.fg}),[]),w=(0,e.useMemo)(()=>{let a={};return[...new Set([...g.map(a=>a.provider),...l])].sort((a,b)=>{let c=k.indexOf(a),d=k.indexOf(b);return(-1===c?999:c)-(-1===d?999:d)}).forEach(b=>{let c=i.Xg[b]||b,d=v[b]||{name:b,color:"#666"},e=(0,j.mq)(b)||(0,j.gb)(b);if(d.passthroughModels){let e=Object.entries(o).filter(([,a])=>a.startsWith(`${c}/`)).map(([a,b])=>({id:b.replace(`${c}/`,""),name:a,value:b}));if(e.length>0){let f=t.find(a=>a.id===b),g=f?.name||d.name;a[b]={name:g,alias:c,color:d.color,models:e}}}else if(e){let c=g.find(a=>a.provider===b),e=t.find(a=>a.id===b),f=c?.name||e?.name||d.name,h=c?.providerSpecificData?.prefix||e?.prefix||b,i=Object.entries(o).filter(([,a])=>a.startsWith(`${b}/`)).map(([a,c])=>({id:c.replace(`${b}/`,""),name:a,value:`${h}/${c.replace(`${b}/`,"")}`})),j=i.length>0?i:[{id:`__placeholder__${b}`,name:`${h}/model-id`,value:`${h}/model-id`,isPlaceholder:!0}];a[b]={name:f,alias:h,color:d.color,models:j,isCustom:!0,hasModels:i.length>0}}else{let e=(0,i.KC)(b),f=new Set(e.map(a=>a.id)),g=e.length>0,h=Object.entries(o).filter(([a,b])=>b.startsWith(`${c}/`)&&(!g||a===b.replace(`${c}/`,""))&&!f.has(b.replace(`${c}/`,""))).map(([a,b])=>({id:b.replace(`${c}/`,""),name:a,value:b,isCustom:!0})),j=[...e.map(a=>({id:a.id,name:a.name,value:`${c}/${a.id}`})),...h];j.length>0&&(a[b]={name:d.name,alias:c,color:d.color,models:j})}}),a},[g,o,v,t]),x=(0,e.useMemo)(()=>{if(!p.trim())return r;let a=p.toLowerCase();return r.filter(b=>b.name.toLowerCase().includes(a))},[r,p]),y=(0,e.useMemo)(()=>{if(!p.trim())return w;let a=p.toLowerCase(),b={};return Object.entries(w).forEach(([c,d])=>{let e=d.models.filter(b=>b.name.toLowerCase().includes(a)||b.id.toLowerCase().includes(a)),f=d.name.toLowerCase().includes(a);(e.length>0||f)&&(b[c]={...d,models:e})}),b},[w,p]),z=a=>{c(a),b(),q("")};return(0,d.jsxs)(h.default,{isOpen:a,onClose:()=>{b(),q("")},title:n,size:"md",className:"p-4!",children:[(0,d.jsx)("div",{className:"mb-3",children:(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("span",{className:"material-symbols-outlined absolute left-2.5 top-1/2 -translate-y-1/2 text-text-muted text-[16px]",children:"search"}),(0,d.jsx)("input",{type:"text",placeholder:"Search...",value:p,onChange:a=>q(a.target.value),className:"w-full pl-8 pr-3 py-1.5 bg-surface border border-border rounded text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"})]})}),(0,d.jsxs)("div",{className:"max-h-[400px] overflow-y-auto space-y-3",children:[x.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5 sticky top-0 bg-surface py-0.5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary text-[14px]",children:"layers"}),(0,d.jsx)("span",{className:"text-xs font-medium text-primary",children:"Combos"}),(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",x.length,")"]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1.5",children:x.map(a=>{let b=f===a.name;return(0,d.jsx)("button",{onClick:()=>z({id:a.name,name:a.name,value:a.name}),className:`
|
|
2
2
|
px-2 py-1 rounded-xl text-xs font-medium transition-all border hover:cursor-pointer
|
|
3
3
|
${b?"bg-primary text-white border-primary":"bg-surface border-border text-text-main hover:border-primary/50 hover:bg-primary/5"}
|
|
4
4
|
`,children:a.name},a.id)})})]}),Object.entries(y).map(([a,b])=>(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5 sticky top-0 bg-surface py-0.5",children:[(0,d.jsx)("div",{className:"w-2 h-2 rounded-full",style:{backgroundColor:b.color}}),(0,d.jsx)("span",{className:"text-xs font-medium text-primary",children:b.name}),(0,d.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",b.models.length,")"]})]}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1.5",children:b.models.map(a=>{let b=f===a.value,c=a.isPlaceholder;return(0,d.jsx)("button",{onClick:()=>z(a),title:c?"Select to pre-fill, then edit model ID in the input":void 0,className:`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=5127,exports.ids=[5127],exports.modules={39326:(a,b,c)=>{c.d(b,{B:()=>f});var d=c(71998);function e(a){return null==a?"":String(a).trim()}async function f(a={}){let b=e(a?.proxyPoolId),c="__none__"===b?"":b,g=function(a={}){let b=a?.connectionProxyEnabled===!0;return{connectionProxyEnabled:b,connectionProxyUrl:e(a?.connectionProxyUrl),connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b)return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}return g.connectionProxyEnabled&&g.connectionProxyUrl?{source:"legacy",proxyPoolId:c||null,proxyPool:null,...g}:{source:"none",proxyPoolId:c||null,proxyPool:null,...g}}},71998:(a,b,c)=>{c.d(b,{Fh:()=>d.getProviderNodes,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,o5:()=>d.o5,op:()=>d.op,rj:()=>d.rj,ui:()=>d.ui});var d=c(89718)},75681:(a,b,c)=>{c.d(b,{DI:()=>i,IS:()=>d,JH:()=>h,Q2:()=>l,fg:()=>g,gb:()=>k,mq:()=>j,nJ:()=>e,rs:()=>n,wG:()=>o,zN:()=>f,zt:()=>m});let d={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationNotice:"Google has tightened Gemini CLI abuse detection and restricted Pro models to paid accounts (Mar 25, 2026). Using this provider may violate ToS and risk account bans."},iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},opencode:{id:"opencode",alias:"oc",name:"OpenCode",icon:"terminal",color:"#E87040",textIcon:"OC",noAuth:!0}},e={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After $10 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"},passthroughModels:!0},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo \xb7 Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev",serviceKinds:["llm","embedding"]}},f={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B",deprecated:!0,deprecationNotice:"Antigravity has tightened abuse detection and restricted model access. Using this provider may violate ToS and risk account bans."},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},g={glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com",serviceKinds:["llm","embedding","tts"]},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com",serviceKinds:["llm"]},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com",serviceKinds:["stt"]},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com",serviceKinds:["stt"]},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai",serviceKinds:["image"]},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io",serviceKinds:["tts"]},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai",serviceKinds:["tts"],hidden:!0},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht",serviceKinds:["tts"],hidden:!0},"local-device":{id:"local-device",alias:"local-device",name:"Local Device",icon:"speaker",color:"#64748B",textIcon:"LD",serviceKinds:["tts"],noAuth:!0},"google-tts":{id:"google-tts",alias:"google-tts",name:"Google TTS",icon:"record_voice_over",color:"#4285F4",textIcon:"GT",serviceKinds:["tts"],noAuth:!0},"edge-tts":{id:"edge-tts",alias:"edge-tts",name:"Edge TTS",icon:"record_voice_over",color:"#0078D4",textIcon:"ET",serviceKinds:["tts"],noAuth:!0},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui",serviceKinds:["image"]},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI",serviceKinds:["image"]},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",serviceKinds:["image","tts"],hiddenKinds:["tts"]},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}},h="openai-compatible-",i="anthropic-compatible-";function j(a){return"string"==typeof a&&a.startsWith(h)}function k(a){return"string"==typeof a&&a.startsWith(i)}let l={...d,...e,...f,...g};function m(a){for(let b of Object.values(l))if(b.alias===a||b.id===a)return b;return null}function n(a){let b=m(a);return b?.id||a}function o(a){let b=l[a];return b?.alias||a}Object.values(l).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(l).reduce((a,b)=>(a[b.id]=b.alias,a),{})}};
|
|
1
|
+
"use strict";exports.id=5127,exports.ids=[5127],exports.modules={39326:(a,b,c)=>{c.d(b,{B:()=>f});var d=c(71998);function e(a){return null==a?"":String(a).trim()}async function f(a={}){let b=e(a?.proxyPoolId),c="__none__"===b?"":b,g=function(a={}){let b=a?.connectionProxyEnabled===!0;return{connectionProxyEnabled:b,connectionProxyUrl:e(a?.connectionProxyUrl),connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b)return"vercel"===a.type?{source:"vercel",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:f,strictProxy:!0===a.strictProxy,vercelRelayUrl:b}:{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}return g.connectionProxyEnabled&&g.connectionProxyUrl?{source:"legacy",proxyPoolId:c||null,proxyPool:null,...g}:{source:"none",proxyPoolId:c||null,proxyPool:null,...g}}},71998:(a,b,c)=>{c.d(b,{Fh:()=>d.getProviderNodes,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,o5:()=>d.o5,op:()=>d.op,rj:()=>d.rj,ui:()=>d.ui});var d=c(89718)},75681:(a,b,c)=>{c.d(b,{DI:()=>j,IS:()=>d,JH:()=>i,Q2:()=>m,fg:()=>h,gb:()=>l,mq:()=>k,nJ:()=>e,rs:()=>o,wG:()=>p,zN:()=>g,zt:()=>n});let d={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationNotice:"Gemini CLI is designed exclusively for Gemini CLI. Using it with other tools (OpenClaw, Claude, Codex...) may result in account restrictions or bans."},iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},opencode:{id:"opencode",alias:"oc",name:"OpenCode",icon:"terminal",color:"#E87040",textIcon:"OC",noAuth:!0}},e={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After $10 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"},passthroughModels:!0,serviceKinds:["llm","embedding"]},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo \xb7 Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev",serviceKinds:["llm","embedding"]}},f={options:["auto","none","low","medium","high"],defaultMode:"auto"},g={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B",deprecated:!0,deprecationNotice:"AG is designed exclusively for Antigravity IDE. Using it with other tools (OpenClaw, Claude, Codex...) may result in account restrictions or bans."},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6",thinkingConfig:f},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},h={glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com",serviceKinds:["llm","embedding","tts"],thinkingConfig:f},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com",serviceKinds:["llm"]},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com",serviceKinds:["stt"]},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com",serviceKinds:["stt"]},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai",serviceKinds:["image"]},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io",serviceKinds:["tts"]},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai",serviceKinds:["tts"],hidden:!0},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht",serviceKinds:["tts"],hidden:!0},"local-device":{id:"local-device",alias:"local-device",name:"Local Device",icon:"speaker",color:"#64748B",textIcon:"LD",serviceKinds:["tts"],noAuth:!0},"google-tts":{id:"google-tts",alias:"google-tts",name:"Google TTS",icon:"record_voice_over",color:"#4285F4",textIcon:"GT",serviceKinds:["tts"],noAuth:!0},"edge-tts":{id:"edge-tts",alias:"edge-tts",name:"Edge TTS",icon:"record_voice_over",color:"#0078D4",textIcon:"ET",serviceKinds:["tts"],noAuth:!0},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui",serviceKinds:["image"]},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI",serviceKinds:["image"]},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",serviceKinds:["image","tts"],hiddenKinds:["tts"]},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}},i="openai-compatible-",j="anthropic-compatible-";function k(a){return"string"==typeof a&&a.startsWith(i)}function l(a){return"string"==typeof a&&a.startsWith(j)}let m={...d,...e,...g,...h};function n(a){for(let b of Object.values(m))if(b.alias===a||b.id===a)return b;return null}function o(a){let b=n(a);return b?.id||a}function p(a){let b=m[a];return b?.alias||a}Object.values(m).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(m).reduce((a,b)=>(a[b.id]=b.alias,a),{})}};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
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:"9Router MITM Root CA"},{name:"organizationName",value:"9Router"},{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 k=f.pki.privateKeyToPem(b.privateKey),l=f.pki.certificateToPem(c);return e.writeFileSync(h,k),e.writeFileSync(i,l),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,execFileSync:g}=c(79646),{execWithPassword:h,isSudoAvailable:i}=c(66936),{log:j,err:k}=c(87777),l="win32"===process.platform,m="darwin"===process.platform,n="/usr/local/share/ca-certificates",o="/usr/bin/security";function p(){if("linux"!==process.platform)return!1;try{let a=d.readFileSync("/proc/version","utf8").toLowerCase();return a.includes("microsoft")||a.includes("wsl")}catch{return!1}}function q(){return l?"certutil":p()?"/mnt/c/Windows/System32/certutil.exe":"certutil"}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;let c,e;return l||p()?(c=q(),new Promise(a=>{f(`${c} -store Root "9Router MITM Root CA"`,{windowsHide:!0},b=>{if(!b)return a(!0);f(`${c} -user -store Root "9Router MITM Root CA"`,{windowsHide:!0},b=>{if(!b)return a(!0);let c=p()?"/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe":"powershell";f(`${c} -NoProfile -NonInteractive -Command "$m = Get-ChildItem -Path Cert:\\LocalMachine\\Root -ErrorAction SilentlyContinue | Where-Object { $_.Subject -like '*CN=9Router MITM Root CA*' } | Select-Object -First 1; $u = Get-ChildItem -Path Cert:\\CurrentUser\\Root -ErrorAction SilentlyContinue | Where-Object { $_.Subject -like '*CN=9Router MITM Root CA*' } | Select-Object -First 1; if ($m -or $u) { exit 0 } else { exit 1 }"`,{windowsHide:!0},b=>{a(!b)})})})})):m?(b=a,new Promise(a=>{try{if(!d.existsSync(o))return a(!1);let c=r(b).replace(/:/g,"");f(`${o} verify-cert -c "${b}" -p ssl -k /Library/Keychains/System.keychain 2>/dev/null`,b=>{if(!b)return a(!0);f(`${o} dump-trust-settings -d 2>/dev/null | grep -i "${c}"`,(b,c)=>{a(!b&&!!c?.trim())})})}catch{a(!1)}})):(e=`${n}/9router-root-ca.crt`,Promise.resolve(d.existsSync(e)))}async function t(a,b){if(!d.existsSync(o))throw Error("Certificate install failed: macOS Keychain tools not found at /usr/bin/security. Trust the PEM manually or use a full macOS environment.");let c=`${o} delete-certificate -c "9Router MITM Root CA" /Library/Keychains/System.keychain 2>/dev/null || true`,e=`${o} add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "${b}"`;try{await h(`${c} && ${e}`,a),j("\uD83D\uDD10 Cert: ✅ installed to system keychain")}catch(a){throw Error(a.message?.includes("canceled")?"User canceled authorization":`Certificate install failed: ${a.message||"unknown error"}`)}}async function u(a){let b=q(),c=function(a){if(l)return a;if(p())try{return g("wslpath",["-w",a],{encoding:"utf8"}).trim()}catch(a){throw Error(`Failed to map certificate path for Windows trust: ${a.message}`)}return a}(a),d=p()?"/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe":"powershell";return new Promise((a,e)=>{f(`${b} -addstore Root "${c}"`,{windowsHide:!0},(g,h,i)=>{if(!g)return j("\uD83D\uDD10 Cert: ✅ installed to Windows LocalMachine Root store"),a();f(`${b} -user -addstore Root "${c}"`,{windowsHide:!0},(b,g,h)=>{if(!b)return j("\uD83D\uDD10 Cert: ✅ installed to Windows CurrentUser Root store"),a();let k=`Import-Certificate -FilePath '${c.replace(/'/g,"''")}' -CertStoreLocation 'Cert:\\CurrentUser\\Root' | Out-Null`;f(`${d} -NoProfile -NonInteractive -Command "${k}"`,{windowsHide:!0},(b,c,d)=>{if(!b)return j("\uD83D\uDD10 Cert: ✅ installed to Windows CurrentUser Root store (PowerShell)"),a();let f=[i,h,d].filter(Boolean).join(" | ").trim();e(Error(`Failed to install certificate on Windows Root store(s)${f?`: ${f}`:""}`))})})})})}async function v(a,b){let c=r(b).replace(/:/g,""),d=`${o} delete-certificate -Z "${c}" /Library/Keychains/System.keychain`;try{await h(d,a),j("\uD83D\uDD10 Cert: ✅ uninstalled from system keychain")}catch(a){throw Error("Failed to uninstall certificate")}}async function w(){let a=q(),b=p()?"/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe":"powershell";return new Promise((c,d)=>{f(`${a} -delstore Root "9Router MITM Root CA"`,{windowsHide:!0},()=>{f(`${a} -user -delstore Root "9Router MITM Root CA"`,{windowsHide:!0},()=>{f(`${b} -NoProfile -NonInteractive -Command "$m = Get-ChildItem -Path Cert:\\LocalMachine\\Root -ErrorAction SilentlyContinue | Where-Object { $_.Subject -like '*CN=9Router MITM Root CA*' }; $u = Get-ChildItem -Path Cert:\\CurrentUser\\Root -ErrorAction SilentlyContinue | Where-Object { $_.Subject -like '*CN=9Router MITM Root CA*' }; $m | Remove-Item -ErrorAction SilentlyContinue; $u | Remove-Item -ErrorAction SilentlyContinue"`,{windowsHide:!0},a=>{if(a)return d(Error(`Failed to uninstall certificate: ${a.message}`));j("\uD83D\uDD10 Cert: ✅ uninstalled from Windows Root store(s)"),c()})})})})}async function x(a,b){if(!i())return void j(`🔐 Cert: cannot install to system store without sudo — trust this file on clients: ${b}`);let c=`${n}/9router-root-ca.crt`,d=`cp "${b}" "${c}" && (update-ca-certificates 2>/dev/null || update-ca-trust 2>/dev/null || true)`;try{await h(d,a),j("\uD83D\uDD10 Cert: ✅ installed to Linux trust store")}catch(a){throw Error(`Certificate install failed: ${a.message||"unknown error"}`)}}async function y(a){if(!i())return;let b=`${n}/9router-root-ca.crt`,c=`rm -f "${b}" && (update-ca-certificates 2>/dev/null || update-ca-trust 2>/dev/null || true)`;try{await h(c,a),j("\uD83D\uDD10 Cert: ✅ uninstalled from Linux trust store")}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)?j("\uD83D\uDD10 Cert: already trusted ✅"):l||p()?await u(b):m?await t(a,b):await x(a,b)},uninstallCert:async function a(a,b){await s(b)?l||p()?await w():m?await v(a,b):await y(a):j("\uD83D\uDD10 Cert: not found in system store")},checkCertInstalled:s,isWSL:p}},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}}}},66936:(a,b,c)=>{let{exec:d,spawn:e,execSync:f}=c(79646),g=c(29021),h=c(33873),i=c(21820),{log:j,err:k}=c(87777),l={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"]},m="win32"===process.platform,n="darwin"===process.platform,o=m?h.join(process.env.SystemRoot||"C:\\Windows","System32","drivers","etc","hosts"):"/etc/hosts";function p(a){return null==a?"":String(a).replace(/\s+/g," ").trim()}function q(a,b={}){let c=[];c.push(b.action||"DNS operation failed"),b.tool&&c.push(`tool=${b.tool}`),b.hostsFile&&c.push(`hostsFile=${b.hostsFile}`),b.hosts&&b.hosts.length&&c.push(`hosts=${b.hosts.join(", ")}`),a?.code&&c.push(`code=${a.code}`),a?.syscall&&c.push(`syscall=${a.syscall}`),a?.path&&c.push(`path=${a.path}`);let d=p(a?.stdout),e=p(a?.stderr),f=p(a?.message);return f&&c.push(`message=${f}`),e&&c.push(`stderr=${e}`),d&&c.push(`stdout=${d}`),c.join(" | ")}function r(a=o){return`Windows DNS changes require Administrator privileges. Restart 9Router as Administrator so it can update ${a} and flush the DNS cache.`}function s(a,b={}){let c=q(a,b);return(b.isWindows??m)&&(a?.code==="EACCES"||a?.code==="EPERM")?`${c} | hint=${r(b.hostsFile||o)}`:c}function t(){if(!m)return!1;try{return f("net session >nul 2>&1",{windowsHide:!0,stdio:"ignore"}),!0}catch{return!1}}function u(a,b={}){let c=Error(a);return Object.assign(c,b),c}function v(a,b,c){if(m){if(!t())throw u(`${b} blocked | tool=${a} | hostsFile=${o} | reason=process-not-elevated | hint=${r(o)}`,{code:"WINDOWS_ADMIN_REQUIRED",statusCode:403});try{g.accessSync(o,g.constants.R_OK|g.constants.W_OK)}catch(d){throw u(s(d,{action:b,tool:a,hostsFile:o,hosts:c}),{code:d?.code==="EACCES"||d?.code==="EPERM"?"WINDOWS_ADMIN_REQUIRED":d?.code,statusCode:d?.code==="EACCES"||d?.code==="EPERM"?403:500})}}}function w(a,b){let c=l[a]||[],d=g.readFileSync(o,"utf8");if(c.every(a=>d.includes(a))!==b)throw u(`DNS verification failed | tool=${a} | hostsFile=${o} | expected=${b?"present":"absent"} | hosts=${c.join(", ")}`)}function x(){try{j("\uD83C\uDF10 Windows DNS: flushing resolver cache..."),f("ipconfig /flushdns",{windowsHide:!0,encoding:"utf8",stdio:["ignore","pipe","pipe"]}),j("\uD83C\uDF10 Windows DNS: resolver cache flushed")}catch(a){throw u(s(a,{action:"Failed to flush Windows DNS cache",hostsFile:o}),{code:a?.code,statusCode:a?.code==="EACCES"||a?.code==="EPERM"?403:500})}}function y(){if(m)return!1;try{return f("command -v sudo",{stdio:"ignore"}),!0}catch{return!1}}function z(a,b){return new Promise((c,d)=>{let f=y(),g=f?e("sudo",["-S","sh","-c",a],{stdio:["pipe","pipe","pipe"]}):e("sh",["-c",a],{stdio:["ignore","pipe","pipe"]}),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}
|
|
2
2
|
`),g.stdin.end())})}async function A(a){m||(n?await z("dscacheutil -flushcache && killall -HUP mDNSResponder",a):await z("resolvectl flush-caches 2>/dev/null || true",a))}function B(a=null){try{let b=g.readFileSync(o,"utf8");if(a)return b.includes(a);return l.antigravity.every(a=>b.includes(a))}catch{return!1}}async function C(a,b){let c=l[a];if(!c)throw Error(`Unknown tool: ${a}`);let d=c.filter(a=>!B(a));if(0===d.length)return void j(`🌐 DNS ${a}: already active`);let e=d.map(a=>`127.0.0.1 ${a}`).join("\n");try{if(j(`🌐 DNS ${a}: enabling (${d.join(", ")})`),m){v(a,"Enable Windows DNS override",d);let b=d.map(a=>`127.0.0.1 ${a}`).join("\r\n")+"\r\n";j(`🌐 DNS ${a}: appending entries to ${o}`),g.appendFileSync(o,b,"utf8"),x(),w(a,!0)}else await z(`echo "${e}" >> ${o}`,b),await A(b);j(`🌐 DNS ${a}: ✅ added ${d.join(", ")} (hosts=${o})`)}catch(c){let b=c.message?.includes("incorrect password")?"Wrong sudo password":s(c,{action:"Failed to add DNS entry",tool:a,hostsFile:o,hosts:d});throw k(`DNS ${a}: add failed — ${b}`),Error(b)}}async function D(a,b){let c=l[a];if(!c)throw Error(`Unknown tool: ${a}`);let d=c.filter(a=>B(a));if(0===d.length)return void j(`🌐 DNS ${a}: already inactive`);try{if(j(`🌐 DNS ${a}: disabling (${d.join(", ")})`),m){v(a,"Disable Windows DNS override",d);let b=g.readFileSync(o,"utf8").split(/\r?\n/).filter(a=>!d.some(b=>a.includes(b))).join("\r\n");j(`🌐 DNS ${a}: rewriting ${o} without ${d.join(", ")}`),g.writeFileSync(o,b,"utf8"),x(),w(a,!1)}else{for(let a of d){let c=n?`sed -i '' '/${a}/d' ${o}`:`sed -i '/${a}/d' ${o}`;await z(c,b)}await A(b)}j(`🌐 DNS ${a}: ✅ removed ${d.join(", ")} (hosts=${o})`)}catch(c){let b=c.message?.includes("incorrect password")?"Wrong sudo password":s(c,{action:"Failed to remove DNS entry",tool:a,hostsFile:o,hosts:d});throw k(`DNS ${a}: remove failed — ${b}`),Error(b)}}async function E(a){for(let b of Object.keys(l))try{await D(b,a)}catch(a){k(`DNS ${b}: failed to remove — ${a.message}`)}}a.exports={TOOL_HOSTS:l,addDNSEntry:C,removeDNSEntry:D,removeAllDNSEntries:E,execWithPassword:z,isSudoAvailable:y,executeElevatedPowerShell:function(a,b=3e4){let c=h.join(i.tmpdir(),`ps_done_${Date.now()}.flag`),e=g.readFileSync(a,"utf8");e+=`
|
|
3
3
|
Set-Content -Path '${c.replace(/'/g,"''")}' -Value 'done' -Encoding UTF8
|
|
4
|
-
`,g.writeFileSync(a,e,"utf8");let f=`Start-Process powershell -ArgumentList '-NoProfile','-ExecutionPolicy','Bypass','-WindowStyle','Hidden','-File','${a.replace(/'/g,"''")}' -Verb RunAs -WindowStyle Hidden`;return new Promise((e,h)=>{let i=!1,j=(a,b)=>{i||(i=!0,a(b))};d(`powershell -NoProfile -NonInteractive -WindowStyle Hidden -Command "${f}"`,{windowsHide:!0},()=>{});let k=Date.now()+b,l=()=>{if(!i){if(g.existsSync(c)){try{g.unlinkSync(c),g.unlinkSync(a)}catch{}return j(e)}if(Date.now()>k){try{g.unlinkSync(a)}catch{}return j(h,Error("Timed out waiting for UAC confirmation"))}setTimeout(l,500)}};setTimeout(l,300)})},checkDNSEntry:B,checkAllDNSStatus:function(){try{let a=g.readFileSync(o,"utf8"),b={};for(let[c,d]of Object.entries(l))b[c]=d.every(b=>a.includes(b));return b}catch{return Object.fromEntries(Object.keys(l).map(a=>[a,!1]))}},buildWindowsAdminHint:r,buildDnsOperationError:s,describeDnsError:q,isWindowsAdmin:t}},82193:(a,b,c)=>{let d=c(33873),e=c(21820),f=c(29021),g=process.env.DATA_DIR?process.env.DATA_DIR:"win32"===process.platform?d.join(process.env.APPDATA||d.join(e.homedir(),"AppData","Roaming"),"n9router"):d.join(e.homedir(),".n9router"),h=d.join(g,"mitm");if("win32"===process.platform)try{let a=d.join(e.homedir(),".n9router","mitm"),b=d.join(h,"rootCA.key"),c=d.join(a,"rootCA.key");!f.existsSync(b)&&f.existsSync(c)&&(f.mkdirSync(h,{recursive:!0}),f.cpSync(a,h,{recursive:!0}))}catch(a){console.error("[n9router mitm] Could not sync MITM from ~/.n9router/mitm:",a.message)}a.exports={DATA_DIR:g,MITM_DIR:h}},87777:a=>{function b(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}a.exports={log:a=>console.log(`[${b()}] [MITM] ${a}`),err:a=>console.error(`[${b()}] ❌ [MITM] ${a}`)}},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,checkAllDNSStatus:p,TOOL_HOSTS:q,isSudoAvailable:r}=c(66936),s="win32"===process.platform,t="darwin"===process.platform,{generateCert:u}=c(26033),{installCert:v,uninstallCert:w,checkCertInstalled:x,isWSL:y}=c(9631),{isCertExpired:z}=c(8578),{MITM_DIR:A}=c(82193),{log:B,err:C}=c(87777),D="http://localhost:20128";function E(a){return null==a||""===a?"''":`'${String(a).replace(/'/g,"'\\''")}'`}async function F(){if(!V)return D;try{let a=await V(),b=a&&null!=a.mitmRouterBaseUrl?String(a.mitmRouterBaseUrl).trim():"";if(!b)return D;let c=new URL(b);if("http:"!==c.protocol&&"https:"!==c.protocol)return D;return b.replace(/\/+$/,"")}catch{return D}}let G=g.join(A,".mitm.pid"),H=[5e3,1e4
|
|
4
|
+
`,g.writeFileSync(a,e,"utf8");let f=`Start-Process powershell -ArgumentList '-NoProfile','-ExecutionPolicy','Bypass','-WindowStyle','Hidden','-File','${a.replace(/'/g,"''")}' -Verb RunAs -WindowStyle Hidden`;return new Promise((e,h)=>{let i=!1,j=(a,b)=>{i||(i=!0,a(b))};d(`powershell -NoProfile -NonInteractive -WindowStyle Hidden -Command "${f}"`,{windowsHide:!0},()=>{});let k=Date.now()+b,l=()=>{if(!i){if(g.existsSync(c)){try{g.unlinkSync(c),g.unlinkSync(a)}catch{}return j(e)}if(Date.now()>k){try{g.unlinkSync(a)}catch{}return j(h,Error("Timed out waiting for UAC confirmation"))}setTimeout(l,500)}};setTimeout(l,300)})},checkDNSEntry:B,checkAllDNSStatus:function(){try{let a=g.readFileSync(o,"utf8"),b={};for(let[c,d]of Object.entries(l))b[c]=d.every(b=>a.includes(b));return b}catch{return Object.fromEntries(Object.keys(l).map(a=>[a,!1]))}},buildWindowsAdminHint:r,buildDnsOperationError:s,describeDnsError:q,isWindowsAdmin:t}},82193:(a,b,c)=>{let d=c(33873),e=c(21820),f=c(29021),g=process.env.DATA_DIR?process.env.DATA_DIR:"win32"===process.platform?d.join(process.env.APPDATA||d.join(e.homedir(),"AppData","Roaming"),"n9router"):d.join(e.homedir(),".n9router"),h=d.join(g,"mitm");if("win32"===process.platform)try{let a=d.join(e.homedir(),".n9router","mitm"),b=d.join(h,"rootCA.key"),c=d.join(a,"rootCA.key");!f.existsSync(b)&&f.existsSync(c)&&(f.mkdirSync(h,{recursive:!0}),f.cpSync(a,h,{recursive:!0}))}catch(a){console.error("[n9router mitm] Could not sync MITM from ~/.n9router/mitm:",a.message)}a.exports={DATA_DIR:g,MITM_DIR:h}},87777:a=>{function b(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}a.exports={log:a=>console.log(`[${b()}] [MITM] ${a}`),err:a=>console.error(`[${b()}] ❌ [MITM] ${a}`)}},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,checkAllDNSStatus:p,TOOL_HOSTS:q,isSudoAvailable:r}=c(66936),s="win32"===process.platform,t="darwin"===process.platform,{generateCert:u}=c(26033),{installCert:v,uninstallCert:w,checkCertInstalled:x,isWSL:y}=c(9631),{isCertExpired:z}=c(8578),{MITM_DIR:A}=c(82193),{log:B,err:C}=c(87777),D="http://localhost:20128";function E(a){return null==a||""===a?"''":`'${String(a).replace(/'/g,"'\\''")}'`}async function F(){if(!V)return D;try{let a=await V(),b=a&&null!=a.mitmRouterBaseUrl?String(a.mitmRouterBaseUrl).trim():"";if(!b)return D;let c=new URL(b);if("http:"!==c.protocol&&"https:"!==c.protocol)return D;return b.replace(/\/+$/,"")}catch{return D}}let G=g.join(A,".mitm.pid"),H=[5e3,1e4],I=0,J=0,K=!1,L=function(){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}(),M="aes-256-gcm",N="9router-mitm-pwd",O=null,P=null;function Q(){return globalThis.__mitmSudoPassword||null}function R(a){globalThis.__mitmSudoPassword=a}function S(a){try{return process.kill(a,0),!0}catch(a){return"EACCES"===a.code}}function T(a,b=!1,e=null){if(s)d(`taskkill ${b?"/F ":""}/PID ${a}`,{windowsHide:!0},()=>{});else{let f=b?"SIGKILL":"SIGTERM",g=`pkill -${f} -P ${a} 2>/dev/null; kill -${f} ${a} 2>/dev/null`;if(e){let{execWithPassword:a}=c(66936);a(g,e).catch(()=>d(g,()=>{}))}else d(g,()=>{})}}function U(){try{let{machineIdSync:a}=c(19713),b=a();return l.createHash("sha256").update(b+N).digest()}catch{return l.createHash("sha256").update(N).digest()}}let V=null,W=null;async function X(a,b){if(W)try{let c,d,e,f,g,h={mitmEnabled:a};b&&(c=U(),d=l.randomBytes(12),e=l.createCipheriv(M,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 W(h)}catch(a){C(`Failed to save settings: ${a.message}`)}}async function Y(){if(W)try{await W({mitmSudoEncrypted:null})}catch(a){C(`Failed to clear encrypted password: ${a.message}`)}}async function Z(){if(!V)return null;try{let a=await V();if(!a.mitmSudoEncrypted)return null;return function(a){try{let[b,c,d]=a.split(":");if(!b||!c||!d)return null;let e=U(),f=l.createDecipheriv(M,e,Buffer.from(b,"hex"));return f.setAuthTag(Buffer.from(c,"hex")),f.update(Buffer.from(d,"hex"))+f.final("utf8")}catch{return null}}(a.mitmSudoEncrypted)}catch{return null}}async function $(a){if(O&&!O.killed){try{O.kill("SIGKILL")}catch{}O=null,P=null}try{if(h.existsSync(G)){let b=parseInt(h.readFileSync(G,"utf-8").trim(),10);b&&S(b)&&(T(b,!0,a),await new Promise(a=>setTimeout(a,500))),h.unlinkSync(G)}}catch{}if(!s&&L)try{let b=L.replace(/'/g,"'\\''");if(a){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`,()=>{});await new Promise(a=>setTimeout(a,500))}catch{}}async function _(){let a=null!==O&&!O.killed,b=P;if(!a)try{if(h.existsSync(G)){let c=parseInt(h.readFileSync(G,"utf-8").trim(),10);c&&S(c)?(a=!0,b=c):h.unlinkSync(G)}}catch{}let c=p(),d=g.join(A,"rootCA.crt"),e=h.existsSync(d),f=!!e&&await x(d);return{running:a,pid:b,certExists:e,certTrusted:f,dnsStatus:c}}async function aa(a){if(K)return;if(Date.now()-J>=6e4&&(I=0),I>=2){C("Max restart attempts reached. Auto-disabling MITM."),await X(!1,null);return}let b=H[Math.min(I,H.length-1)];I++,K=!0,B(`Restarting in ${b/1e3}s... (${I}/2)`),await new Promise(a=>setTimeout(a,b));try{let b=V?await V():null;if(b&&!b.mitmEnabled){B("MITM disabled, skipping restart"),K=!1;return}let c=Q()||await Z();if(!c&&!s){C("No cached password, cannot auto-restart"),K=!1;return}await ab(a,c),B("\uD83D\uDD04 Restarted successfully"),I=0,K=!1}catch(b){C(`Restart attempt ${I}/2 failed: ${b.message}`),K=!1,aa(a)}}async function ab(a,b){if(!O||O.killed)try{if(h.existsSync(G)){let a=parseInt(h.readFileSync(G,"utf-8").trim(),10);if(a&&S(a))return P=a,B(`♻️ Reusing existing process (PID: ${a})`),await X(!0,b),b&&R(b),{running:!0,pid:a};h.unlinkSync(G)}}catch{}if(O&&!O.killed)throw Error("MITM server is already running");if(await $(b),!s){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 new Promise(a=>{s?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('ps aux | grep "[s]erver.js"',(b,c)=>{if(!c?.trim())return a(null);for(let b of c.split("\n")){let c=parseInt(b.trim().split(/\s+/)[1],10);if(!isNaN(c))return a({pid:c,name:"node"})}a(null)})});if(a&&"node"===a.name){B(`Killing orphan node process on port 443 (PID ${a.pid})...`);try{let{execWithPassword:d}=c(66936);await d(`kill -9 ${a.pid}`,b),await new Promise(a=>setTimeout(a,800))}catch{}}else if(a){let b=a.name.includes("/")?a.name.split("/").filter(Boolean).pop():a.name;throw Error(`Port 443 is already in use by "${b}" (PID ${a.pid}). Stop that process first.`)}}}let l=g.join(A,"rootCA.crt"),m=g.join(A,"rootCA.key"),n=h.existsSync(l)&&h.existsSync(m);if(!n||z(l)){if(n){B("\uD83D\uDD10 Cert expired — uninstalling old cert...");let a=b||Q()||await Z();try{await w(a,l)}catch{}}B("\uD83D\uDD10 Generating Root CA..."),await u()}let o=await x(l),q=!s&&!t&&!r()&&!y();if(o)B("\uD83D\uDD10 Cert: already trusted ✅");else{B("\uD83D\uDD10 Cert: not trusted → installing...");let a=b||Q()||await Z();if(q)B(`🔐 Cert: skipping system trust (no sudo). Install ${l} as a trusted CA on machines that use this proxy.`);else{if(!a&&!s&&!y())throw Error("Sudo password required to install Root CA certificate");try{await v(a,l),B("\uD83D\uDD10 Cert: ✅ trusted")}catch(a){throw Error(`Failed to trust certificate: ${a.message}`)}}}let D=await F();if(B(`🚀 Starting server... (router: ${D})`),s){try{f('powershell -NonInteractive -WindowStyle Hidden -Command "$c = Get-NetTCPConnection -LocalPort 443 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1; if ($c -and $c.OwningProcess -gt 4) { Stop-Process -Id $c.OwningProcess -Force -ErrorAction SilentlyContinue }"',{windowsHide:!0}),await new Promise(a=>setTimeout(a,500))}catch{}O=e(process.execPath,[L],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:D}}),W&&await W({mitmCertInstalled:!0}).catch(()=>{})}else r()?((O=e("sudo",["-S","-E","sh","-c",[`HOME=${E(i.homedir())}`,`ROUTER_API_KEY=${E(a)}`,`MITM_ROUTER_BASE=${E(D)}`,"NODE_ENV=production",E(process.execPath),E(L)].join(" ")],{detached:!1,stdio:["pipe","pipe","pipe"]})).stdin.write(`${b}
|
|
5
5
|
`),O.stdin.end()):O=e(process.execPath,[L],{detached:!1,stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:D}});O&&(P=O.pid,h.writeFileSync(G,String(P)),J=Date.now());let H=null;O&&(O.stdout.on("data",a=>{process.stdout.write(a)}),O.stderr.on("data",a=>{let b=a.toString().trim();b&&(s||!b.includes("Password:")&&!b.includes("password for"))&&(C(b),H=b),!s&&(b.includes("incorrect password")||b.includes("no password was provided"))&&(R(null),Y(),K=!0)}),O.on("exit",b=>{B(`Server exited (code: ${b})`),O=null,P=null;try{h.unlinkSync(G)}catch{}0===b||K||aa(a)}));let I=await function(a=443){return new Promise(b=>{let c=Date.now()+8e3,d=()=>{let e=k.request({hostname:"127.0.0.1",port:a,path:"/_mitm_health",method:"GET",rejectUnauthorized:!1},a=>{let c="";a.on("data",a=>{c+=a}),a.on("end",()=>{try{let a=JSON.parse(c);b(!0===a.ok?{ok:!0,pid:a.pid||null}:null)}catch{b(null)}})});e.on("error",()=>{Date.now()<c?setTimeout(d,500):b(null)}),e.end()};d()})}(443);if(!I){if(O&&!O.killed){try{O.kill()}catch{}O=null}let a=function(){try{if(s){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("lsof -i :443",{encoding:"utf8"}).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=H||`Check sudo password or port 443 access.${b}`;throw Error(`MITM server failed to start. ${c}`)}for(let[a,b]of(W&&await W({mitmCertInstalled:!0}).catch(()=>{}),B(`✅ Server healthy (PID: ${P||I.pid})`),Object.entries(p())))B(`🌐 DNS ${a}: ${b?"✅ active":"❌ inactive"}`);return await X(!0,b),b&&R(b),{running:!0,pid:P}}async function ac(a){K=!0,I=0,B("⏹ Stopping server...");let b=O,d=b&&!b.killed?b.pid:(()=>{try{return parseInt(h.readFileSync(G,"utf-8").trim(),10)}catch{return null}})();if(d&&S(d)&&(B(`Killing server (PID: ${d})...`),T(d,!1,a),await new Promise(a=>setTimeout(a,1e3)),S(d)&&T(d,!0,a)),O=null,P=null,s){let a=g.join(process.env.SystemRoot||"C:\\Windows","System32","drivers","etc","hosts"),b=Object.values(q).flat();try{let d=h.readFileSync(a,"utf8").split(/\r?\n/).filter(a=>!b.some(b=>a.includes(b))).join("\r\n");h.writeFileSync(a,d,"utf8"),c(79646).execSync("ipconfig /flushdns",{windowsHide:!0})}catch(a){C(`Failed to clean hosts: ${a.message}`)}}else await o(a);try{h.unlinkSync(G)}catch{}return await X(!1,null),K=!1,{running:!1,pid:null}}async function ad(a,b){B(`🌐 DNS ${a}: enable requested (platform=${process.platform})`);let c=await _();if(!c.running)throw Error("MITM server is not running. Start the server first.");B(`🌐 DNS ${a}: pre-check running=${c.running} active=${!!c.dnsStatus?.[a]}`);let d=b||Q()||await Z();try{await m(a,d)}catch(b){throw C(`DNS ${a}: enable failed in manager — ${b?.message||String(b)}`),b}let e=p();return B(`🌐 DNS ${a}: post-check active=${!!e[a]}`),{success:!0,dnsStatus:e}}a.exports={getMitmStatus:_,startServer:ab,stopServer:ac,enableToolDNS:ad,disableToolDNS:async function a(a,b){B(`🌐 DNS ${a}: disable requested (platform=${process.platform})`);let c=b||Q()||await Z();try{await n(a,c)}catch(b){throw C(`DNS ${a}: disable failed in manager — ${b?.message||String(b)}`),b}let d=p();return B(`🌐 DNS ${a}: post-check active=${!!d[a]}`),{success:!0,dnsStatus:d}},trustCert:async function a(a){let b=g.join(A,"rootCA.crt");if(!h.existsSync(b))throw Error("Root CA not found. Start server first to generate it.");if(!s&&!t&&!r()&&!y())return void B(`🔐 Cert: system trust unavailable (no sudo). Use file: ${b}`);let c=a||Q()||await Z();if(!c&&!s&&!y())throw Error("Sudo password required to trust certificate");await v(c,b),c&&R(c)},startMitm:ab,stopMitm:ac,getCachedPassword:Q,setCachedPassword:R,loadEncryptedPassword:Z,clearEncryptedPassword:Y,initDbHooks:function(a,b){V=a,W=b}}}};
|