@techysy/10router 1.6.4-test.2 → 1.6.5
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/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +44 -44
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/experimental/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/experimental/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/app/.next-cli-build/server/app/_not-found.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js +1 -3
- package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js +1 -3
- package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/start/route.js +1 -3
- package/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/test/route.js +1 -3
- package/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -3
- package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/verify-password/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/verify-password/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-profiles/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/external-quota/[source]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/external-quota/[source]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/gateway-probe/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/rotate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/caps/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/bulk/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/network/egress-region/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/checkin/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/claim-compensation/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/export/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/export/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/loomy/sms-login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/loomy/sms-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/loomy/sms-send/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/loomy/sms-send/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/qoder/checkin/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/qoder-cn/checkin/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/transfer/export/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/transfer/export/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/transfer/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/transfer/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/desktop-kill/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/desktop-status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/security/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/import-usage/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/import-usage/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/dashboard/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/quotas/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/quotas/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/rerank/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/rerank/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/systemone/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/systemone/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/shell-update/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/experimental.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/experimental.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/experimental.segments/!KGRhc2hib2FyZCk/dashboard/experimental/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/experimental.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/experimental.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/landing.html +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/login.html +1 -1
- package/app/.next-cli-build/server/app/login.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +44 -44
- package/app/.next-cli-build/server/chunks/2154.js +1 -0
- package/app/.next-cli-build/server/chunks/3943.js +1 -1
- package/app/.next-cli-build/server/chunks/4123.js +1 -1
- package/app/.next-cli-build/server/chunks/471.js +2 -0
- package/app/.next-cli-build/server/chunks/4859.js +6 -0
- package/app/.next-cli-build/server/chunks/4906.js +1 -1
- package/app/.next-cli-build/server/chunks/5210.js +4 -4
- package/app/.next-cli-build/server/chunks/5615.js +1 -1
- package/app/.next-cli-build/server/chunks/5837.js +1 -1
- package/app/.next-cli-build/server/chunks/594.js +1 -1
- package/app/.next-cli-build/server/chunks/6922.js +1 -1
- package/app/.next-cli-build/server/chunks/8185.js +1 -0
- package/app/.next-cli-build/server/chunks/8658.js +1 -1
- package/app/.next-cli-build/server/chunks/8775.js +1 -1
- package/app/.next-cli-build/server/chunks/8895.js +4 -4
- package/app/.next-cli-build/server/chunks/8937.js +3 -0
- package/app/.next-cli-build/server/chunks/9377.js +1 -0
- package/app/.next-cli-build/server/chunks/9489.js +1 -1
- package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js +1 -1
- package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/package.json +71 -71
- package/package.json +1 -1
- package/app/.next-cli-build/server/chunks/1622.js +0 -1
- package/app/.next-cli-build/server/chunks/2812.js +0 -2
- package/app/.next-cli-build/server/chunks/4692.js +0 -6
- package/app/.next-cli-build/server/chunks/7209.js +0 -1
- package/app/.next-cli-build/server/chunks/8439.js +0 -1
- /package/app/.next-cli-build/static/{27KqZx4tyAU8IQDuc2h_r → pP6WDLpkLVAa29nFOm7Ly}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{27KqZx4tyAU8IQDuc2h_r → pP6WDLpkLVAa29nFOm7Ly}/_ssgManifest.js +0 -0
|
@@ -40,4 +40,4 @@
|
|
|
40
40
|
<style>body{font-family:system-ui;display:flex;justify-content:center;align-items:center;height:100vh;margin:0;background:#f5f5f5}.c{text-align:center;padding:2rem;background:#fff;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.1)}.i{color:${a?"#22c55e":"#ef4444"};font-size:3rem}h1{margin:1rem 0}p{color:#666}</style>
|
|
41
41
|
</head><body><div class="c"><div class="i">${a?"✓":"✗"}</div><h1>${c}</h1><p>${d}</p><p>Closing in <span id="cd">3</span>s...</p>
|
|
42
42
|
<script>let n=3;const c=document.getElementById("cd");const t=setInterval(()=>{n--;c.textContent=n;if(n<=0){clearInterval(t);window.close();}},1000);</script>
|
|
43
|
-
</div></body></html>`}function t(a){return new Promise(b=>{if(l)return void b({success:!0});let d=e().createServer(async(b,d)=>{let e=new h.URL(b.url,"http://localhost");if("/callback"!==e.pathname&&"/auth/callback"!==e.pathname){d.writeHead(404),d.end("Not found");return}let f=e.searchParams.get("code"),g=e.searchParams.get("state"),i=e.searchParams.get("error"),j=g?o.get(g):null;if(j){try{if(i)throw Error(e.searchParams.get("error_description")||i);if(!f)throw Error("No authorization code received");let{exchangeTokens:a}=await Promise.all([c.e(7774),c.e(5433),c.e(8920),c.e(2557),c.e(6306),c.e(3225),c.e(532),c.e(6922),c.e(447),c.e(9536),c.e(2380),c.e(318),c.e(8895),c.e(5663)]).then(c.bind(c,74177)),{createProviderConnection:b}=await c.e(1998).then(c.bind(c,71998)),h=await a("codex",f,j.redirectUri,j.codeVerifier,g),k=await b({provider:"codex",authType:"oauth",...h,expiresAt:h.expiresIn?new Date(Date.now()+1e3*h.expiresIn).toISOString():null,testStatus:"active"});j.status="done",j.connectionId=k.id,j.email=k.email,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(s(!0,"You can close this window."))}catch(a){j.status="error",j.error=a.message,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(s(!1,a.message))}finally{u()}return}let k=`http://localhost:${a}/callback${e.search}`;d.writeHead(302,{Location:k}),d.end(),u()});d.listen(n,"127.0.0.1",()=>{l=d,m=setTimeout(()=>u(),3e5),b({success:!0})}),d.on("error",a=>{"EADDRINUSE"===a.code?b({success:!1,reason:"port_busy"}):b({success:!1,reason:a.message})})})}function u(){m&&(clearTimeout(m),m=null),l&&(l.close(),l=null)}let v=null,w=null,x=new Map;function y({state:a,codeVerifier:b,redirectUri:c}){return!!a&&!!b&&!!c&&(x.set(a,{codeVerifier:b,redirectUri:c,status:"pending",createdAt:Date.now()}),!0)}function z(a){return x.get(a)||null}function A(a){x.delete(a)}function B(a){return new Promise(b=>{if(v)return void b({success:!0});let d=e().createServer(async(b,d)=>{let e=new h.URL(b.url,"http://localhost");if("/callback"!==e.pathname&&"/auth/callback"!==e.pathname){d.writeHead(404),d.end("Not found");return}let f=e.searchParams.get("code"),g=e.searchParams.get("state"),i=e.searchParams.get("error"),j=g?x.get(g):null;if(j){try{if(i)throw Error(e.searchParams.get("error_description")||i);if(!f)throw Error("No authorization code received");let{exchangeTokens:a}=await Promise.all([c.e(7774),c.e(5433),c.e(8920),c.e(2557),c.e(6306),c.e(3225),c.e(532),c.e(6922),c.e(447),c.e(9536),c.e(2380),c.e(318),c.e(8895),c.e(5663)]).then(c.bind(c,74177)),{createProviderConnection:b}=await c.e(1998).then(c.bind(c,71998)),h=await a("xai",f,j.redirectUri,j.codeVerifier,g),k=await b({provider:"xai",authType:"oauth",...h,expiresAt:h.expiresIn?new Date(Date.now()+1e3*h.expiresIn).toISOString():null,testStatus:"active"});j.status="done",j.connectionId=k.id,j.email=k.email,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(s(!0,"You can close this window."))}catch(a){j.status="error",j.error=a.message,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(s(!1,a.message))}finally{C()}return}let k=`http://localhost:${a}/callback${e.search}`;d.writeHead(302,{Location:k}),d.end(),C()});d.listen(56121,"127.0.0.1",()=>{v=d,w=setTimeout(()=>C(),3e5),b({success:!0})}),d.on("error",a=>{"EADDRINUSE"===a.code?b({success:!1,reason:"port_busy"}):b({success:!1,reason:a.message})})})}function C(){w&&(clearTimeout(w),w=null),v&&(v.close(),v=null)}let D=null,E=null,F=null,G=null;function H({state:a}){return!!a&&(G={state:a,status:"pending",createdAt:Date.now()},!0)}function I(a){return!G||a&&G.state!==a?null:G}function J(a){(!a||G&&G.state===a)&&(G=null)}function K(){return new Promise(a=>{if(D)return void a({success:!0,port:F,callbackUrl:`http://127.0.0.1:${F}${i.SK.callbackPath}`});let b=e().createServer(async(a,b)=>{let d=new h.URL(a.url,"http://localhost");if(d.pathname!==i.SK.callbackPath&&"/auth/callback"!==d.pathname){b.writeHead(404),b.end("Not found");return}let e=G;if(!e){b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,"No active Trae login session"));return}if(!j(a.headers.origin)){b.writeHead(403,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,"Cross-origin callback rejected"));return}let f=d.searchParams.get("state");if(f&&e.state&&f!==e.state){e.status="error",e.error="Trae callback state mismatch",b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,e.error)),L();return}let g=`${d.pathname}?${d.searchParams.toString()}`;try{let{exchangeTokens:a}=await Promise.all([c.e(7774),c.e(5433),c.e(8920),c.e(2557),c.e(6306),c.e(3225),c.e(532),c.e(6922),c.e(447),c.e(9536),c.e(2380),c.e(318),c.e(8895),c.e(5663)]).then(c.bind(c,74177)),{createProviderConnection:d}=await c.e(1998).then(c.bind(c,71998)),f=await a("trae",g),h=await d({provider:"trae",authType:"oauth",...f,expiresAt:f.expiresIn?new Date(Date.now()+1e3*f.expiresIn).toISOString():null,testStatus:"active"});e.status="done",e.connectionId=h.id,e.email=h.email,b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!0,"You can close this window."))}catch(a){e.status="error",e.error=a.message,b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,a.message))}finally{L()}});b.listen(0,"127.0.0.1",()=>{D=b,F=b.address().port,E=setTimeout(()=>L(),i.SK.oauthTimeoutMs),a({success:!0,port:F,callbackUrl:`http://127.0.0.1:${F}${i.SK.callbackPath}`})}),b.on("error",b=>a({success:!1,reason:b.message}))})}function L(){E&&(clearTimeout(E),E=null),D&&(D.close(),D=null),F=null}let M=null,N=null,O=null,P=null;function Q({state:a}){return!!a&&(P={state:a,status:"pending",createdAt:Date.now()},!0)}function R(a){return!P||a&&P.state!==a?null:P}function S(a){(!a||P&&P.state===a)&&(P=null)}function T(){return new Promise(a=>{if(M)return void a({success:!0,port:O,callbackUrl:`http://127.0.0.1:${O}${i.eD.callbackPath}`});let b=e().createServer(async(a,b)=>{let d=new h.URL(a.url,"http://localhost");if(d.pathname!==i.eD.callbackPath){b.writeHead(404),b.end("Not found");return}let e=P;if(!e){b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,"No active Windsurf login session"));return}if(!j(a.headers.origin)){b.writeHead(403,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,"Cross-origin callback rejected"));return}let f=d.searchParams.get("state");if(!f||!e.state||f!==e.state){e.status="error",e.error="Windsurf callback state mismatch",b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,e.error)),U();return}let g=`${d.pathname}?${d.searchParams.toString()}`;try{let{exchangeTokens:a}=await Promise.all([c.e(7774),c.e(5433),c.e(8920),c.e(2557),c.e(6306),c.e(3225),c.e(532),c.e(6922),c.e(447),c.e(9536),c.e(2380),c.e(318),c.e(8895),c.e(5663)]).then(c.bind(c,74177)),{createProviderConnection:d}=await c.e(1998).then(c.bind(c,71998)),f=await a("windsurf",g,null,null,e.state),h=await d({provider:"windsurf",authType:"api_key",...f,testStatus:"active"});e.status="done",e.connectionId=h.id,e.email=h.email,b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!0,"You can close this window."))}catch(a){e.status="error",e.error=a.message,b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,a.message))}finally{U()}});b.listen(0,"127.0.0.1",()=>{M=b,O=b.address().port,N=setTimeout(()=>U(),i.eD.oauthTimeoutMs),a({success:!0,port:O,callbackUrl:`http://127.0.0.1:${O}${i.eD.callbackPath}`})}),b.on("error",b=>a({success:!1,reason:b.message}))})}function U(){N&&(clearTimeout(N),N=null),M&&(M.close(),M=null),O=null}let V=null,W=null,X=null,Y=null;function Z({state:a,codeVerifier:b}){return!!a&&!!b&&(Y={state:a,codeVerifier:b,status:"pending",createdAt:Date.now()},!0)}function $(a){return!Y||a&&Y.state!==a?null:Y}function _(a){(!a||Y&&Y.state===a)&&(Y=null)}function aa(a=0){return new Promise(b=>{if(V)return void b({success:!0,port:X,callbackUrl:`http://127.0.0.1:${X}/`});let d=e().createServer(async(a,b)=>{let d=new h.URL(a.url,"http://localhost"),e=Object.fromEntries(d.searchParams);for(let a of["access_token","user_id","code_verifier","state"])e[a]&&(e[a]="<redacted>");if(console.log("[Zed proxy]",a.method,d.pathname,JSON.stringify(e)),"/"!==d.pathname&&"/callback"!==d.pathname){b.writeHead(404),b.end("Not found");return}let f=Y;if(!f){b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,"No active Zed login session"));return}if(!j(a.headers.origin)){b.writeHead(403,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,"Cross-origin callback rejected"));return}let g=d.search?`${d.pathname}?${d.searchParams.toString()}`:d.pathname;try{let{exchangeTokens:a}=await Promise.all([c.e(7774),c.e(5433),c.e(8920),c.e(2557),c.e(6306),c.e(3225),c.e(532),c.e(6922),c.e(447),c.e(9536),c.e(2380),c.e(318),c.e(8895),c.e(5663)]).then(c.bind(c,74177)),{createProviderConnection:d}=await c.e(1998).then(c.bind(c,71998)),e=await a("zed",g,null,f.codeVerifier,f.state),h=await d({provider:"zed",authType:"oauth",...e,testStatus:"active"});f.status="done",f.connectionId=h.id,f.email=h.email,b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!0,"You can close this window."))}catch(a){f.status="error",f.error=a.message,b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,a.message))}finally{ab()}}),f=Number(a)||0;d.on("error",a=>{"EADDRINUSE"===a.code&&0!==f?(console.log(`[Zed proxy] port ${f} busy, falling back to random`),d.listen(0,"127.0.0.1",()=>{V=d,X=d.address().port,W=setTimeout(()=>ab(),i.RY.oauthTimeoutMs),console.log(`[Zed proxy] listening on random port ${X}`),b({success:!0,port:X,callbackUrl:`http://127.0.0.1:${X}/`})})):(console.log(`[Zed proxy] listen error: ${a.message}`),b({success:!1,reason:a.message}))}),d.listen(f,"127.0.0.1",()=>{V=d,X=d.address().port,W=setTimeout(()=>{console.log("[Zed proxy] timeout, stopping"),ab()},i.RY.oauthTimeoutMs),console.log(`[Zed proxy] listening on port ${X}`),b({success:!0,port:X,callbackUrl:`http://127.0.0.1:${X}/`})})})}function ab(){console.log(`[Zed proxy] stopping (port ${X||"-"})`),W&&(clearTimeout(W),W=null),V&&(V.close(),V=null),X=null}let ac=null,ad=null,ae=null,af=new h.URL(i.oe.platformUrl).origin,ag=null;function ah(a,b){let c=new h.URL(`${i.oe.platformUrl}/authorize/callback`);return c.searchParams.set("status",a),b&&c.searchParams.set("message",b),c.toString()}let ai=new Map;function aj({state:a,privateKeyDer:b}){if(!a||!b)return!1;let c=Date.now()-i.oe.pendingTtlMs;for(let[a,b]of ai)b.createdAt<c&&ai.delete(a);for(;ai.size>=8;){let a=ai.keys().next();if(a.done)break;ai.delete(a.value)}return ai.set(a,{privateKeyDer:b,status:"pending",createdAt:Date.now()}),!0}function ak(a){let b=ai.get(a);return b?{status:b.status,result:b.result||null,error:b.error||null}:null}function al(a){ai.delete(a)}async function am(a){let b=function(a){let b=String(a??"").trim();if(!b)return"";let c=b.match(/(?:^|[?&])(?:u|code)=([^&\s]+)/);if(c)try{b=decodeURIComponent(c[1])}catch{b=c[1]}return(b=(b=b.replace(/^(?:授权码|验证码)\s*[::=]?\s*/,"").replace(/^(?:authorization\s*code|code)\s*[::=]\s*/i,"")).replace(/^[`'"“”‘’<([{]+/,"").replace(/[`'"“”‘’>)\]},.;:。,;:]+$/,"")).replace(/\s+/g,"")}(a);if(!b)return{ok:!1,error:"empty_payload"};if(b.length<60)return{ok:!1,error:"payload_too_short"};let d=[...ai.entries()].filter(([,a])=>"pending"===a.status);if(0===d.length)return{ok:!1,error:"no_pending_session"};let{decryptCallback:e}=await c.e(4152).then(c.bind(c,34152)),f=!1;for(let[a,c]of d){let d;try{d=e(c.privateKeyDer,b)}catch{continue}if(!d.sk){f=!0;continue}return c.status="done",c.result={uid:d.uid,accessToken:d.sk,baseUrl:d.url||i.oe.defaultBaseUrl},{ok:!0,state:a,result:c.result}}let g=f?"missing_api_key":"decrypt_failed";return console.warn(`[xiaomi-mimo oauth] code rejected (${g}): ${b.length} chars, ${d.length} pending session(s)`),{ok:!1,error:g}}function an(){return new Promise(a=>{if(ac)return void a({success:!0,port:ad,callbackUrl:`http://127.0.0.1:${ad}${ag}`});let b=ag||(ag=`/callback/${g().randomBytes(16).toString("hex")}`),c=e().createServer(async(a,c)=>{let d=a.headers.origin||"",e=d===af?{"Access-Control-Allow-Origin":d,"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*","Access-Control-Max-Age":"600",Vary:"Origin"}:{Vary:"Origin"};if("OPTIONS"===a.method){c.writeHead(204,e),c.end();return}let f=new h.URL(a.url,"http://127.0.0.1");if(f.pathname!==b){c.writeHead(404,e),c.end("Not Found");return}let g=f.searchParams.get("u");if(!g){c.writeHead(302,{...e,Location:ah("error","missing_data")}),c.end();return}let i=[...ai.entries()].filter(([,a])=>"pending"===a.status);try{let a=await am(g);if(!a.ok)throw Error("missing_api_key"===a.error?"Decrypted payload missing sk (API key)":"Could not decrypt with any pending session key");c.writeHead(302,{...e,Location:ah("success")}),c.end(),console.log("[xiaomi-mimo oauth] callback decrypted")}catch(a){if(console.error("[xiaomi-mimo oauth] decrypt failed:",a.message),1===i.length){let[,b]=i[0];b.status="error",b.error=a.message}c.writeHead(302,{...e,Location:ah("error","decrypt_failed")}),c.end()}});c.on("error",b=>{console.log("[xiaomi-mimo oauth] listen error:",b.message),a({success:!1,reason:b.message})}),c.listen(0,"127.0.0.1",()=>{ac=c,ad=c.address().port,ae=setTimeout(()=>{console.log("[xiaomi-mimo oauth] timeout, stopping"),ao()},i.oe.timeoutMs),console.log(`[xiaomi-mimo oauth] listening on port ${ad}`),a({success:!0,port:ad,callbackUrl:`http://127.0.0.1:${ad}${b}`})})})}function ao(){console.log(`[xiaomi-mimo oauth] stopping (port ${ad||"-"})`),ae&&(clearTimeout(ae),ae=null),ac&&(ac.close(),ac=null),ad=null,ag=null}},73159:(a,b,c)=>{c.d(b,{Ue:()=>k,oT:()=>l});var d=c(26070);let e=d.xq.xai?.clientId,f="https://auth.x.ai",g="/oauth2/authorize",h="/oauth2/token",i="/.well-known/openid-configuration",j="/callback",k=96,l={clientId:e,issuer:f,authEndpointPath:g,tokenEndpointPath:h,discoveryPath:i,authorizeUrl:`${f}${g}`,tokenUrl:`${f}${h}`,discoveryUrl:`${f}${i}`,scope:"openid profile email offline_access grok-cli:access api:access",apiBaseUrl:"https://api.x.ai/v1",redirectUri:`http://127.0.0.1:56121${j}`,loopbackPort:56121,callbackPath:j,pkceVerifierBytes:96,refreshLeadSeconds:300,userAgent:"grok-cli/10router",codeChallengeMethod:"S256"}},92990:(a,b,c)=>{c.d(b,{DI:()=>i,DV:()=>z,LT:()=>j,MZ:()=>u,Nl:()=>y,Nu:()=>o,OV:()=>h,RY:()=>J,S6:()=>r,SK:()=>D,Td:()=>A,Tx:()=>p,Vv:()=>H,WN:()=>s,Ww:()=>K,YT:()=>m,ZL:()=>l,_0:()=>F,aV:()=>t,b3:()=>I,cD:()=>n,eD:()=>E,f7:()=>x,hF:()=>k,lB:()=>v,oe:()=>C,qp:()=>B,sA:()=>G,w1:()=>w});var d=c(21820),e=c(74129),f=c(26070);function g(){let a=(0,d.platform)(),b=(0,d.arch)();return"darwin"===a?"arm64"===b?2:1:"linux"===a?"arm64"===b?4:3:5*("win32"===a)}let h={...f.sr.claude},i={...f.sr.codex},j={...e.dG,...f.sr["gemini-cli"]},k={...f.sr.qoder},l={...f.sr.iflow},m={...e.XP,...f.sr.antigravity,loadCodeAssistClientMetadata:JSON.stringify({ideType:9,platform:g(),pluginType:2})};function n(){return{ideType:9,platform:g(),pluginType:2}}({...f.sr.openai});let o={...f.sr.github},p={...f.sr.kiro},q=/^[a-z]{2}-[a-z]+-\d{1,2}$/;function r(a){if("string"!=typeof a||!q.test(a))throw Error("Invalid region");return a}let s={...f.sr.cursor,tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"}},t={...f.sr.kimi,clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||process.env.KIMI_OAUTH_CLIENT_ID||f.xq.kimi?.clientId||f.sr.kimi?.clientId},u={...f.sr.kilocode},v={...f.sr.cline},w={...f.sr.clinepass},x={...f.sr.gitlab},y={...f.sr["codebuddy-cn"]},z={...f.sr["codebuddy-intl"]},A={...f.sr.kimchi},B={...f.sr["grok-cli"]},C={platformUrl:process.env.MIMO_PLATFORM_URL||"https://platform.xiaomimimo.com",defaultBaseUrl:"https://api.xiaomimimo.com/v1",kn:"mimocode",app:"MiMo",timeoutMs:3e5,pendingTtlMs:864e5},D={clientId:"ono9krqynydwx5",clientSecret:"-",loginGuidanceUrls:["https://api.marscode.com/cloudide/api/v3/trae/GetLoginGuidance","https://api.trae.ai/cloudide/api/v3/trae/GetLoginGuidance","https://www.trae.ai/cloudide/api/v3/trae/GetLoginGuidance"],apiOrigins:["https://api.marscode.com","https://api.trae.ai","https://www.trae.ai","https://www.marscode.com"],cnLoginGuidanceUrls:["https://api.trae.com.cn/cloudide/api/v3/trae/GetLoginGuidance","https://api.marscode.cn/cloudide/api/v3/trae/GetLoginGuidance","https://api.trae.cn/cloudide/api/v3/trae/GetLoginGuidance"],cnApiOrigins:["https://api.trae.com.cn","https://api.marscode.cn","https://api.trae.cn"],intlHostSuffixes:["trae.ai","marscode.com"],cnHostSuffixes:["trae.cn","trae.com.cn","marscode.cn"],consoleUrl:"https://www.trae.ai/settings",cnConsoleUrl:"https://www.trae.cn/settings",exchangeTokenPath:"/cloudide/api/v3/trae/oauth/ExchangeToken",getUserInfoPath:"/cloudide/api/v3/trae/GetUserInfo",authorizationPath:"/authorization",callbackPath:"/callback",minAppVersion:"3.5.54",defaultAppVersion:"3.5.54",defaultAppType:"stable",defaultPluginVersion:"local",defaultDeviceId:"0",userAgent:"Trae/1.0.0 antigravity-cockpit-tools",webUrl:"https://www.trae.ai",authScheme:"Cloud-IDE-JWT",tokenLifetimeDays:14,oauthTimeoutMs:6e5},E={clientId:"3GUryQ7ldAeKEuD2obYnppsnmj58eP5u",authBaseUrl:"https://www.windsurf.com",signInPath:"/windsurf/signin",registerApiBaseUrl:"https://register.windsurf.com",registerPath:"/exa.seat_management_pb.SeatManagementService/RegisterUser",oneTimeAuthPath:"/exa.seat_management_pb.SeatManagementService/GetOneTimeAuthToken",currentUserPath:"/exa.seat_management_pb.SeatManagementService/GetCurrentUser",planStatusPath:"/exa.seat_management_pb.SeatManagementService/GetPlanStatus",userStatusPath:"/exa.seat_management_pb.SeatManagementService/GetUserStatus",defaultApiServerUrl:"https://server.codeium.com",firebaseApiKey:"AIzaSyDsOl-1XpT5err0Tcn0TFFod1H8gVGIycY",callbackPath:"/windsurf-auth-callback",userAgent:"antigravity-cockpit-tools",oauthTimeoutMs:6e5},F={...f.sr.glm},G={...f.sr.muse},H={...f.sr["minimax-code"]},I={...f.sr["minimax-code-global"]},J={webBaseUrl:"https://zed.dev",cloudBaseUrl:"https://cloud.zed.dev",llmBaseUrl:"https://cloud.zed.dev",defaultNativeAppPort:58443,oauthTimeoutMs:6e5},K=3e5}};
|
|
43
|
+
</div></body></html>`}function t(a){return new Promise(b=>{if(l)return void b({success:!0});let d=e().createServer(async(b,d)=>{let e=new h.URL(b.url,"http://localhost");if("/callback"!==e.pathname&&"/auth/callback"!==e.pathname){d.writeHead(404),d.end("Not found");return}let f=e.searchParams.get("code"),g=e.searchParams.get("state"),i=e.searchParams.get("error"),j=g?o.get(g):null;if(j){try{if(i)throw Error(e.searchParams.get("error_description")||i);if(!f)throw Error("No authorization code received");let{exchangeTokens:a}=await Promise.all([c.e(7774),c.e(5433),c.e(8920),c.e(2557),c.e(6306),c.e(3225),c.e(6922),c.e(532),c.e(447),c.e(9536),c.e(2380),c.e(318),c.e(8895),c.e(5663)]).then(c.bind(c,74177)),{createProviderConnection:b}=await c.e(1998).then(c.bind(c,71998)),h=await a("codex",f,j.redirectUri,j.codeVerifier,g),k=await b({provider:"codex",authType:"oauth",...h,expiresAt:h.expiresIn?new Date(Date.now()+1e3*h.expiresIn).toISOString():null,testStatus:"active"});j.status="done",j.connectionId=k.id,j.email=k.email,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(s(!0,"You can close this window."))}catch(a){j.status="error",j.error=a.message,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(s(!1,a.message))}finally{u()}return}let k=`http://localhost:${a}/callback${e.search}`;d.writeHead(302,{Location:k}),d.end(),u()});d.listen(n,"127.0.0.1",()=>{l=d,m=setTimeout(()=>u(),3e5),b({success:!0})}),d.on("error",a=>{"EADDRINUSE"===a.code?b({success:!1,reason:"port_busy"}):b({success:!1,reason:a.message})})})}function u(){m&&(clearTimeout(m),m=null),l&&(l.close(),l=null)}let v=null,w=null,x=new Map;function y({state:a,codeVerifier:b,redirectUri:c}){return!!a&&!!b&&!!c&&(x.set(a,{codeVerifier:b,redirectUri:c,status:"pending",createdAt:Date.now()}),!0)}function z(a){return x.get(a)||null}function A(a){x.delete(a)}function B(a){return new Promise(b=>{if(v)return void b({success:!0});let d=e().createServer(async(b,d)=>{let e=new h.URL(b.url,"http://localhost");if("/callback"!==e.pathname&&"/auth/callback"!==e.pathname){d.writeHead(404),d.end("Not found");return}let f=e.searchParams.get("code"),g=e.searchParams.get("state"),i=e.searchParams.get("error"),j=g?x.get(g):null;if(j){try{if(i)throw Error(e.searchParams.get("error_description")||i);if(!f)throw Error("No authorization code received");let{exchangeTokens:a}=await Promise.all([c.e(7774),c.e(5433),c.e(8920),c.e(2557),c.e(6306),c.e(3225),c.e(6922),c.e(532),c.e(447),c.e(9536),c.e(2380),c.e(318),c.e(8895),c.e(5663)]).then(c.bind(c,74177)),{createProviderConnection:b}=await c.e(1998).then(c.bind(c,71998)),h=await a("xai",f,j.redirectUri,j.codeVerifier,g),k=await b({provider:"xai",authType:"oauth",...h,expiresAt:h.expiresIn?new Date(Date.now()+1e3*h.expiresIn).toISOString():null,testStatus:"active"});j.status="done",j.connectionId=k.id,j.email=k.email,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(s(!0,"You can close this window."))}catch(a){j.status="error",j.error=a.message,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(s(!1,a.message))}finally{C()}return}let k=`http://localhost:${a}/callback${e.search}`;d.writeHead(302,{Location:k}),d.end(),C()});d.listen(56121,"127.0.0.1",()=>{v=d,w=setTimeout(()=>C(),3e5),b({success:!0})}),d.on("error",a=>{"EADDRINUSE"===a.code?b({success:!1,reason:"port_busy"}):b({success:!1,reason:a.message})})})}function C(){w&&(clearTimeout(w),w=null),v&&(v.close(),v=null)}let D=null,E=null,F=null,G=null;function H({state:a}){return!!a&&(G={state:a,status:"pending",createdAt:Date.now()},!0)}function I(a){return!G||a&&G.state!==a?null:G}function J(a){(!a||G&&G.state===a)&&(G=null)}function K(){return new Promise(a=>{if(D)return void a({success:!0,port:F,callbackUrl:`http://127.0.0.1:${F}${i.SK.callbackPath}`});let b=e().createServer(async(a,b)=>{let d=new h.URL(a.url,"http://localhost");if(d.pathname!==i.SK.callbackPath&&"/auth/callback"!==d.pathname){b.writeHead(404),b.end("Not found");return}let e=G;if(!e){b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,"No active Trae login session"));return}if(!j(a.headers.origin)){b.writeHead(403,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,"Cross-origin callback rejected"));return}let f=d.searchParams.get("state");if(f&&e.state&&f!==e.state){e.status="error",e.error="Trae callback state mismatch",b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,e.error)),L();return}let g=`${d.pathname}?${d.searchParams.toString()}`;try{let{exchangeTokens:a}=await Promise.all([c.e(7774),c.e(5433),c.e(8920),c.e(2557),c.e(6306),c.e(3225),c.e(6922),c.e(532),c.e(447),c.e(9536),c.e(2380),c.e(318),c.e(8895),c.e(5663)]).then(c.bind(c,74177)),{createProviderConnection:d}=await c.e(1998).then(c.bind(c,71998)),f=await a("trae",g),h=await d({provider:"trae",authType:"oauth",...f,expiresAt:f.expiresIn?new Date(Date.now()+1e3*f.expiresIn).toISOString():null,testStatus:"active"});e.status="done",e.connectionId=h.id,e.email=h.email,b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!0,"You can close this window."))}catch(a){e.status="error",e.error=a.message,b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,a.message))}finally{L()}});b.listen(0,"127.0.0.1",()=>{D=b,F=b.address().port,E=setTimeout(()=>L(),i.SK.oauthTimeoutMs),a({success:!0,port:F,callbackUrl:`http://127.0.0.1:${F}${i.SK.callbackPath}`})}),b.on("error",b=>a({success:!1,reason:b.message}))})}function L(){E&&(clearTimeout(E),E=null),D&&(D.close(),D=null),F=null}let M=null,N=null,O=null,P=null;function Q({state:a}){return!!a&&(P={state:a,status:"pending",createdAt:Date.now()},!0)}function R(a){return!P||a&&P.state!==a?null:P}function S(a){(!a||P&&P.state===a)&&(P=null)}function T(){return new Promise(a=>{if(M)return void a({success:!0,port:O,callbackUrl:`http://127.0.0.1:${O}${i.eD.callbackPath}`});let b=e().createServer(async(a,b)=>{let d=new h.URL(a.url,"http://localhost");if(d.pathname!==i.eD.callbackPath){b.writeHead(404),b.end("Not found");return}let e=P;if(!e){b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,"No active Windsurf login session"));return}if(!j(a.headers.origin)){b.writeHead(403,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,"Cross-origin callback rejected"));return}let f=d.searchParams.get("state");if(!f||!e.state||f!==e.state){e.status="error",e.error="Windsurf callback state mismatch",b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,e.error)),U();return}let g=`${d.pathname}?${d.searchParams.toString()}`;try{let{exchangeTokens:a}=await Promise.all([c.e(7774),c.e(5433),c.e(8920),c.e(2557),c.e(6306),c.e(3225),c.e(6922),c.e(532),c.e(447),c.e(9536),c.e(2380),c.e(318),c.e(8895),c.e(5663)]).then(c.bind(c,74177)),{createProviderConnection:d}=await c.e(1998).then(c.bind(c,71998)),f=await a("windsurf",g,null,null,e.state),h=await d({provider:"windsurf",authType:"api_key",...f,testStatus:"active"});e.status="done",e.connectionId=h.id,e.email=h.email,b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!0,"You can close this window."))}catch(a){e.status="error",e.error=a.message,b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,a.message))}finally{U()}});b.listen(0,"127.0.0.1",()=>{M=b,O=b.address().port,N=setTimeout(()=>U(),i.eD.oauthTimeoutMs),a({success:!0,port:O,callbackUrl:`http://127.0.0.1:${O}${i.eD.callbackPath}`})}),b.on("error",b=>a({success:!1,reason:b.message}))})}function U(){N&&(clearTimeout(N),N=null),M&&(M.close(),M=null),O=null}let V=null,W=null,X=null,Y=null;function Z({state:a,codeVerifier:b}){return!!a&&!!b&&(Y={state:a,codeVerifier:b,status:"pending",createdAt:Date.now()},!0)}function $(a){return!Y||a&&Y.state!==a?null:Y}function _(a){(!a||Y&&Y.state===a)&&(Y=null)}function aa(a=0){return new Promise(b=>{if(V)return void b({success:!0,port:X,callbackUrl:`http://127.0.0.1:${X}/`});let d=e().createServer(async(a,b)=>{let d=new h.URL(a.url,"http://localhost"),e=Object.fromEntries(d.searchParams);for(let a of["access_token","user_id","code_verifier","state"])e[a]&&(e[a]="<redacted>");if(console.log("[Zed proxy]",a.method,d.pathname,JSON.stringify(e)),"/"!==d.pathname&&"/callback"!==d.pathname){b.writeHead(404),b.end("Not found");return}let f=Y;if(!f){b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,"No active Zed login session"));return}if(!j(a.headers.origin)){b.writeHead(403,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,"Cross-origin callback rejected"));return}let g=d.search?`${d.pathname}?${d.searchParams.toString()}`:d.pathname;try{let{exchangeTokens:a}=await Promise.all([c.e(7774),c.e(5433),c.e(8920),c.e(2557),c.e(6306),c.e(3225),c.e(6922),c.e(532),c.e(447),c.e(9536),c.e(2380),c.e(318),c.e(8895),c.e(5663)]).then(c.bind(c,74177)),{createProviderConnection:d}=await c.e(1998).then(c.bind(c,71998)),e=await a("zed",g,null,f.codeVerifier,f.state),h=await d({provider:"zed",authType:"oauth",...e,testStatus:"active"});f.status="done",f.connectionId=h.id,f.email=h.email,b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!0,"You can close this window."))}catch(a){f.status="error",f.error=a.message,b.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),b.end(s(!1,a.message))}finally{ab()}}),f=Number(a)||0;d.on("error",a=>{"EADDRINUSE"===a.code&&0!==f?(console.log(`[Zed proxy] port ${f} busy, falling back to random`),d.listen(0,"127.0.0.1",()=>{V=d,X=d.address().port,W=setTimeout(()=>ab(),i.RY.oauthTimeoutMs),console.log(`[Zed proxy] listening on random port ${X}`),b({success:!0,port:X,callbackUrl:`http://127.0.0.1:${X}/`})})):(console.log(`[Zed proxy] listen error: ${a.message}`),b({success:!1,reason:a.message}))}),d.listen(f,"127.0.0.1",()=>{V=d,X=d.address().port,W=setTimeout(()=>{console.log("[Zed proxy] timeout, stopping"),ab()},i.RY.oauthTimeoutMs),console.log(`[Zed proxy] listening on port ${X}`),b({success:!0,port:X,callbackUrl:`http://127.0.0.1:${X}/`})})})}function ab(){console.log(`[Zed proxy] stopping (port ${X||"-"})`),W&&(clearTimeout(W),W=null),V&&(V.close(),V=null),X=null}let ac=null,ad=null,ae=null,af=new h.URL(i.oe.platformUrl).origin,ag=null;function ah(a,b){let c=new h.URL(`${i.oe.platformUrl}/authorize/callback`);return c.searchParams.set("status",a),b&&c.searchParams.set("message",b),c.toString()}let ai=new Map;function aj({state:a,privateKeyDer:b}){if(!a||!b)return!1;let c=Date.now()-i.oe.pendingTtlMs;for(let[a,b]of ai)b.createdAt<c&&ai.delete(a);for(;ai.size>=8;){let a=ai.keys().next();if(a.done)break;ai.delete(a.value)}return ai.set(a,{privateKeyDer:b,status:"pending",createdAt:Date.now()}),!0}function ak(a){let b=ai.get(a);return b?{status:b.status,result:b.result||null,error:b.error||null}:null}function al(a){ai.delete(a)}async function am(a){let b=function(a){let b=String(a??"").trim();if(!b)return"";let c=b.match(/(?:^|[?&])(?:u|code)=([^&\s]+)/);if(c)try{b=decodeURIComponent(c[1])}catch{b=c[1]}return(b=(b=b.replace(/^(?:授权码|验证码)\s*[::=]?\s*/,"").replace(/^(?:authorization\s*code|code)\s*[::=]\s*/i,"")).replace(/^[`'"“”‘’<([{]+/,"").replace(/[`'"“”‘’>)\]},.;:。,;:]+$/,"")).replace(/\s+/g,"")}(a);if(!b)return{ok:!1,error:"empty_payload"};if(b.length<60)return{ok:!1,error:"payload_too_short"};let d=[...ai.entries()].filter(([,a])=>"pending"===a.status);if(0===d.length)return{ok:!1,error:"no_pending_session"};let{decryptCallback:e}=await c.e(4152).then(c.bind(c,34152)),f=!1;for(let[a,c]of d){let d;try{d=e(c.privateKeyDer,b)}catch{continue}if(!d.sk){f=!0;continue}return c.status="done",c.result={uid:d.uid,accessToken:d.sk,baseUrl:d.url||i.oe.defaultBaseUrl},{ok:!0,state:a,result:c.result}}let g=f?"missing_api_key":"decrypt_failed";return console.warn(`[xiaomi-mimo oauth] code rejected (${g}): ${b.length} chars, ${d.length} pending session(s)`),{ok:!1,error:g}}function an(){return new Promise(a=>{if(ac)return void a({success:!0,port:ad,callbackUrl:`http://127.0.0.1:${ad}${ag}`});let b=ag||(ag=`/callback/${g().randomBytes(16).toString("hex")}`),c=e().createServer(async(a,c)=>{let d=a.headers.origin||"",e=d===af?{"Access-Control-Allow-Origin":d,"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*","Access-Control-Max-Age":"600",Vary:"Origin"}:{Vary:"Origin"};if("OPTIONS"===a.method){c.writeHead(204,e),c.end();return}let f=new h.URL(a.url,"http://127.0.0.1");if(f.pathname!==b){c.writeHead(404,e),c.end("Not Found");return}let g=f.searchParams.get("u");if(!g){c.writeHead(302,{...e,Location:ah("error","missing_data")}),c.end();return}let i=[...ai.entries()].filter(([,a])=>"pending"===a.status);try{let a=await am(g);if(!a.ok)throw Error("missing_api_key"===a.error?"Decrypted payload missing sk (API key)":"Could not decrypt with any pending session key");c.writeHead(302,{...e,Location:ah("success")}),c.end(),console.log("[xiaomi-mimo oauth] callback decrypted")}catch(a){if(console.error("[xiaomi-mimo oauth] decrypt failed:",a.message),1===i.length){let[,b]=i[0];b.status="error",b.error=a.message}c.writeHead(302,{...e,Location:ah("error","decrypt_failed")}),c.end()}});c.on("error",b=>{console.log("[xiaomi-mimo oauth] listen error:",b.message),a({success:!1,reason:b.message})}),c.listen(0,"127.0.0.1",()=>{ac=c,ad=c.address().port,ae=setTimeout(()=>{console.log("[xiaomi-mimo oauth] timeout, stopping"),ao()},i.oe.timeoutMs),console.log(`[xiaomi-mimo oauth] listening on port ${ad}`),a({success:!0,port:ad,callbackUrl:`http://127.0.0.1:${ad}${b}`})})})}function ao(){console.log(`[xiaomi-mimo oauth] stopping (port ${ad||"-"})`),ae&&(clearTimeout(ae),ae=null),ac&&(ac.close(),ac=null),ad=null,ag=null}},73159:(a,b,c)=>{c.d(b,{Ue:()=>k,oT:()=>l});var d=c(26070);let e=d.xq.xai?.clientId,f="https://auth.x.ai",g="/oauth2/authorize",h="/oauth2/token",i="/.well-known/openid-configuration",j="/callback",k=96,l={clientId:e,issuer:f,authEndpointPath:g,tokenEndpointPath:h,discoveryPath:i,authorizeUrl:`${f}${g}`,tokenUrl:`${f}${h}`,discoveryUrl:`${f}${i}`,scope:"openid profile email offline_access grok-cli:access api:access",apiBaseUrl:"https://api.x.ai/v1",redirectUri:`http://127.0.0.1:56121${j}`,loopbackPort:56121,callbackPath:j,pkceVerifierBytes:96,refreshLeadSeconds:300,userAgent:"grok-cli/10router",codeChallengeMethod:"S256"}},92990:(a,b,c)=>{c.d(b,{DI:()=>i,DV:()=>z,LT:()=>j,MZ:()=>u,Nl:()=>y,Nu:()=>o,OV:()=>h,RY:()=>J,S6:()=>r,SK:()=>D,Td:()=>A,Tx:()=>p,Vv:()=>H,WN:()=>s,Ww:()=>K,YT:()=>m,ZL:()=>l,_0:()=>F,aV:()=>t,b3:()=>I,cD:()=>n,eD:()=>E,f7:()=>x,hF:()=>k,lB:()=>v,oe:()=>C,qp:()=>B,sA:()=>G,w1:()=>w});var d=c(21820),e=c(74129),f=c(26070);function g(){let a=(0,d.platform)(),b=(0,d.arch)();return"darwin"===a?"arm64"===b?2:1:"linux"===a?"arm64"===b?4:3:5*("win32"===a)}let h={...f.sr.claude},i={...f.sr.codex},j={...e.dG,...f.sr["gemini-cli"]},k={...f.sr.qoder},l={...f.sr.iflow},m={...e.XP,...f.sr.antigravity,loadCodeAssistClientMetadata:JSON.stringify({ideType:9,platform:g(),pluginType:2})};function n(){return{ideType:9,platform:g(),pluginType:2}}({...f.sr.openai});let o={...f.sr.github},p={...f.sr.kiro},q=/^[a-z]{2}-[a-z]+-\d{1,2}$/;function r(a){if("string"!=typeof a||!q.test(a))throw Error("Invalid region");return a}let s={...f.sr.cursor,tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"}},t={...f.sr.kimi,clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||process.env.KIMI_OAUTH_CLIENT_ID||f.xq.kimi?.clientId||f.sr.kimi?.clientId},u={...f.sr.kilocode},v={...f.sr.cline},w={...f.sr.clinepass},x={...f.sr.gitlab},y={...f.sr["codebuddy-cn"]},z={...f.sr["codebuddy-intl"]},A={...f.sr.kimchi},B={...f.sr["grok-cli"]},C={platformUrl:process.env.MIMO_PLATFORM_URL||"https://platform.xiaomimimo.com",defaultBaseUrl:"https://api.xiaomimimo.com/v1",kn:"mimocode",app:"MiMo",timeoutMs:3e5,pendingTtlMs:864e5},D={clientId:"ono9krqynydwx5",clientSecret:"-",loginGuidanceUrls:["https://api.marscode.com/cloudide/api/v3/trae/GetLoginGuidance","https://api.trae.ai/cloudide/api/v3/trae/GetLoginGuidance","https://www.trae.ai/cloudide/api/v3/trae/GetLoginGuidance"],apiOrigins:["https://api.marscode.com","https://api.trae.ai","https://www.trae.ai","https://www.marscode.com"],cnLoginGuidanceUrls:["https://api.trae.com.cn/cloudide/api/v3/trae/GetLoginGuidance","https://api.marscode.cn/cloudide/api/v3/trae/GetLoginGuidance","https://api.trae.cn/cloudide/api/v3/trae/GetLoginGuidance"],cnApiOrigins:["https://api.trae.com.cn","https://api.marscode.cn","https://api.trae.cn"],intlHostSuffixes:["trae.ai","marscode.com"],cnHostSuffixes:["trae.cn","trae.com.cn","marscode.cn"],consoleUrl:"https://www.trae.ai/settings",cnConsoleUrl:"https://www.trae.cn/settings",exchangeTokenPath:"/cloudide/api/v3/trae/oauth/ExchangeToken",getUserInfoPath:"/cloudide/api/v3/trae/GetUserInfo",authorizationPath:"/authorization",callbackPath:"/callback",minAppVersion:"3.5.54",defaultAppVersion:"3.5.54",defaultAppType:"stable",defaultPluginVersion:"local",defaultDeviceId:"0",userAgent:"Trae/1.0.0 antigravity-cockpit-tools",webUrl:"https://www.trae.ai",authScheme:"Cloud-IDE-JWT",tokenLifetimeDays:14,oauthTimeoutMs:6e5},E={clientId:"3GUryQ7ldAeKEuD2obYnppsnmj58eP5u",authBaseUrl:"https://www.windsurf.com",signInPath:"/windsurf/signin",registerApiBaseUrl:"https://register.windsurf.com",registerPath:"/exa.seat_management_pb.SeatManagementService/RegisterUser",oneTimeAuthPath:"/exa.seat_management_pb.SeatManagementService/GetOneTimeAuthToken",currentUserPath:"/exa.seat_management_pb.SeatManagementService/GetCurrentUser",planStatusPath:"/exa.seat_management_pb.SeatManagementService/GetPlanStatus",userStatusPath:"/exa.seat_management_pb.SeatManagementService/GetUserStatus",defaultApiServerUrl:"https://server.codeium.com",firebaseApiKey:"AIzaSyDsOl-1XpT5err0Tcn0TFFod1H8gVGIycY",callbackPath:"/windsurf-auth-callback",userAgent:"antigravity-cockpit-tools",oauthTimeoutMs:6e5},F={...f.sr.glm},G={...f.sr.muse},H={...f.sr["minimax-code"]},I={...f.sr["minimax-code-global"]},J={webBaseUrl:"https://zed.dev",cloudBaseUrl:"https://cloud.zed.dev",llmBaseUrl:"https://cloud.zed.dev",defaultNativeAppPort:58443,oauthTimeoutMs:6e5},K=3e5}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=5837,exports.ids=[5837],exports.modules={7803:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>o,error:()=>r,errorLine:()=>l,fmtThink:()=>m,info:()=>p,line:()=>k,maskKey:()=>v,nextTag:()=>i,request:()=>s,response:()=>t,stream:()=>u,tagForSession:()=>j,warn:()=>q});let d={DEBUG:0,INFO:1,WARN:2,ERROR:3},e=d[process.env.LOG_LEVEL?.toUpperCase?.()]??d.INFO;function f(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}let g=["\uD83D\uDFE2","\uD83D\uDD35","\uD83D\uDFE3","\uD83D\uDFE1","\uD83D\uDFE0","\uD83D\uDD34","⚪","\uD83D\uDFE4"],h=0;function i(){let a=g[h%g.length];return h++,a}function j(a){if(!a)return i();let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)|0;return g[Math.abs(b)%g.length]}function k(a,b,c){e>d.INFO||console.log(`[${f()}] ${a} ${b} ${c}`)}function l(a,b,c){console.log(`[${f()}] ${a} ${b} ${c}`)}function m(a){return a&&a.mode?"none"===a.mode?"off":"auto"===a.mode?"auto":"budget"===a.mode?a.budget>=1e3?`${Math.round(a.budget/1e3)}k`:`${a.budget}`:"level"===a.mode?a.level:null:null}function n(a){if(!a)return"";if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}function o(a,b,c){if(e<=d.DEBUG){let d=c?` ${n(c)}`:"";console.log(`[${f()}] 🔍 [${a}] ${b}${d}`)}}function p(a,b,c){if(e<=d.INFO){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ℹ️ [${a}] ${b}${d}`)}}function q(a,b,c){if(e<=d.WARN){let d=c?` ${n(c)}`:"";console.warn(`[${f()}] ⚠️ [${a}] ${b}${d}`)}}function r(a,b,c){if(e<=d.ERROR){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ❌ [${a}] ${b}${d}`)}}function s(a,b,c){let d=c?` ${n(c)}`:"";console.log(`\x1b[36m[${f()}] 📥 ${a} ${b}${d}\x1b[0m`)}function t(a,b,c){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ${a<400?"\uD83D\uDCE4":"\uD83D\uDCA5"} ${a} (${b}ms)${d}`)}function u(a,b){let c=b?` ${n(b)}`:"";console.log(`[${f()}] 🌊 [STREAM] ${a}${c}`)}function v(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}},20858:(a,b,c)=>{c.d(b,{C:()=>d});function d(a){if(!a||!a.quotas||"object"!=typeof a.quotas)return null;let b=/balance|voucher|cash|余额|代金券|现金|credit/i,c=null,d=-1;for(let[e,f]of Object.entries(a.quotas)){if(!f||"object"!=typeof f)continue;let a=/^balance|^余额/i.test(e.trim()),g=!0===f.isCreditBalance;if(!(b.test(e)||g))continue;let h=null;if("number"==typeof f.remaining&&Number.isFinite(f.remaining))h=f.remaining;else if("number"==typeof f.total&&Number.isFinite(f.total)){let a=Number(f.used)||0;h=Math.max(0,f.total-a)}if(null===h)continue;let i=a?2:+!!g;i>d&&(d=i,c=h)}return c}},43659:(a,b,c)=>{c.d(b,{A1:()=>k,Yx:()=>i,lR:()=>m,wO:()=>l,xJ:()=>f,yj:()=>g,zL:()=>j});var d=c(3662),e=c(12557);function f(a,b){let c=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""});return{type:"error",error:{message:b||d.O[a]||"An error occurred",type:c.type,code:c.code}}}function g(a,b,c=null){return new Response(JSON.stringify(f(a,b)),{status:a,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*",...c}})}let h=/"validation_url"\s*:\s*"([^"]+)"/;function i(a){if(!a||!a.includes("VALIDATION_REQUIRED"))return null;let b=h.exec(a);if(!b)return null;let c=b[1];try{c=JSON.parse(`"${c}"`)}catch{}return`Google requires account verification (VALIDATION_REQUIRED): ${c} (Complete 'Verify your account' in a browser signed in to the affected account, or check 18+ age verification at https://myaccount.google.com/age-verification)`}async function j(a,b=null){let c="";try{c=await a.text()}catch{c=""}let e=i(c);if(b&&"function"==typeof b.parseError)try{let f=b.parseError(a,c);if(f&&"object"==typeof f){let b=e||function(a){let b;if(!a||"string"!=typeof a)return null;let c=a.trim();if(!c.startsWith("{")||!c.endsWith("}"))return null;try{b=JSON.parse(c)}catch{return null}if(!b||"object"!=typeof b)return null;let d=b.error?.message??b.message??b.msg??("string"==typeof b.error?b.error:null);if("string"!=typeof d||!d.trim())return null;let e=b.code??b.error?.code;return"number"==typeof e||"string"==typeof e&&/^\d+$/.test(e)?d.toLowerCase().includes(String(e))?d:`[${e}] ${d}`:d}(f.message)||f.message||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:f.status||a.status,message:b,resetsAtMs:f.resetsAtMs}}}catch{}if(e)return{statusCode:a.status,message:e};let f="";try{let a=JSON.parse(c);if(a?.code===11133||a?.displayTips||a?.displayMsg){let b=a.displayTips?.zh||a.displayTips?.en||a.displayTips?.["zh-hant"],c=a.displayMsg?.zh||a.displayMsg?.en||a.displayMsg?.["zh-hant"]||a.msg||a.message;b?f=`${c?`${c}:`:""}${b}`:c&&(f=c)}f||(f=a.error?.message||a.message||a.msg||a.error||c)}catch{f=c}let g=("string"==typeof f?f:JSON.stringify(f))||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:g}}function k(a,b,c,d=null){return{success:!1,status:a,error:b,resetsAtMs:c,response:g(a,b,d)}}function l(a,b,c,d,f=null){let g=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1),h=402===a||(0,e.tc)(b);return new Response(JSON.stringify({type:"error",error:{type:a>=500?"api_error":"invalid_request_error",message:h||!d?b:`${b} (${d})`}}),{status:a,headers:{...f,"Content-Type":"application/json",...!h?{"retry-after":String(g)}:{}}})}function m(a,b,c,d){let f=d||a.code||"FETCH_FAILED",g=a.message||"Unknown error",h=a.cause?.code,i=a.cause?.message,j=h||i?` (cause: ${[h,i].filter(Boolean).join(": ")})`:"",k=`[${f}]: ${g}${j}`,l=(0,e.Bp)(k,b);return(0,e.dN)(l,b)}},75837:(a,b,c)=>{c.d(b,{uO:()=>O,bs:()=>P,Pt:()=>L,Tr:()=>M,c1:()=>J,C$:()=>I,kI:()=>N,vk:()=>K});var d=c(89718),e=c(39326),f=c(12557),g=c(3662),h=c(40615),i=c(59669),j=c(78661),k=c(20858);let l="pack_asset",m="balance",n="generic",o=new Set(["codebuddy-cn","codebuddy-intl","qoder","qoder-cn"]),p=new Set(["antigravity","github","codex","commandcode","glm","glm-cn"]),q=new Set(["deepseek","stepfun","stepfun-cn","openai","anthropic","minimax","minimax-cn","minimax-code","minimax-code-global","siliconflow-cn","groq","openrouter","together","fireworks","nebius","hyperbolic","chutes","cohere","mistral","river","modelscope","oxion","baidu","kimi","azure","step_plan"]),r=new Set(["zcode-free","minimax-free","trae-free"]);function s(a,b){if(!a)return!1;let c=a.shortWindowRemaining;return(!("number"==typeof c&&Number.isFinite(c))||!(c<=0)&&!(c<b))&&!0}c(87283);var t=c(7803);let u=new Map;function v(a){if(!a||"string"!=typeof a)return null;let b=(a.includes("/")?a.slice(a.indexOf("/")+1):a).toLowerCase();return b.startsWith("claude-")||b.startsWith("gpt-")||"claude"===b?"claude_gpt":b.startsWith("gemini-")&&!b.includes("image")||"gemini"===b?"gemini":null}function w(a,b){if(!a||"object"!=typeof a||!b)return null;let c="string"==typeof b?(b.includes("/")?b.slice(b.indexOf("/")+1):b).replace(/\([^()]+\)\s*$/,"").trim():"",d=v(c),e=[];if(a[c]&&e.push(a[c]),"claude-sonnet-5-5"===c&&a["claude-sonnet-5-5-high"]&&e.push(a["claude-sonnet-5-5-high"]),"claude-opus-5-5"===c&&a["claude-opus-5-5-high"]&&e.push(a["claude-opus-5-5-high"]),"gemini-3.8-flash"===c&&a["gemini-3.8-flash-medium"]&&e.push(a["gemini-3.8-flash-medium"]),"gemini-3.7-flash"===c&&a["gemini-3.7-flash-medium"]&&e.push(a["gemini-3.7-flash-medium"]),"gemini-3.6-flash"===c&&a["gemini-3.6-flash-medium"]&&e.push(a["gemini-3.6-flash-medium"]),"claude_gpt"===d?(a.claude_gpt_session&&e.push(a.claude_gpt_session),a.claude_gpt_weekly&&e.push(a.claude_gpt_weekly)):"gemini"===d&&(a.gemini_session&&e.push(a.gemini_session),a.gemini_weekly&&e.push(a.gemini_weekly)),0===e.length)return null;let f=Date.now(),g=[];for(let a of e)if(a&&"object"==typeof a&&"number"==typeof a.remainingPercentage&&a.remainingPercentage<=0)if(a.resetAt){let b=new Date(a.resetAt).getTime();b>f&&g.push({...a,resetMs:b})}else g.push({...a,resetMs:0});if(g.length>0){g.sort((a,b)=>b.resetMs-a.resetMs);let a=g[0];return{used:a.used??1e3,total:a.total??1e3,remainingPercentage:0,resetAt:a.resetAt,displayName:a.displayName||c}}let h=e.filter(a=>a&&"number"==typeof a.remainingPercentage);return 0===h.length?null:(h.sort((a,b)=>a.remainingPercentage-b.remainingPercentage),h[0])}var x=c(67828),y=c(2521),z=c(43659),A=c(41004),B=c(33379);let C=Promise.resolve(),D=new Set,E={green:"\uD83D\uDFE9",yellow:"\uD83D\uDFE8",red:"\uD83D\uDFE5"};function F(a){return E[a?.quotaZone]||"⚪"}function G(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"expired";let c=Math.floor(Math.round(b/1e3)/60),d=Math.floor(c/60),e=Math.floor(d/24);if(e>=1){let a=d%24;return a>0?`${e}d ${a}h`:`${e}d`}if(d>=1){let a=c%60;return a>0?`${d}h ${a}m`:`${d}h`}return`${Math.max(1,c)}m`}function H(a,b,c={}){if(!a)return"no-account";let d=a.id?.slice(0,8)||"?",e=a.name||a.email||d,f=["codebuddy-cn","codebuddy-intl","qoder","qoder-cn"].includes(b),g=a=>"number"==typeof a&&Number.isFinite(a)?`${a.toFixed(1)}%`:null;if(f){let b=a.earliestPackageName||"pack",c=g(a.shortWindowRemaining??a.earliestPackageRemaining),d=a.earliestPackageExpiry?G(a.earliestPackageExpiry):null,f=[e];return c?f.push(`${b} (${c})`):f.push(b),d&&f.push(`exp in ${d}`),f.join(" | ")}if("antigravity"===b){let b=c.family||(a.earliestPackageName?.includes("claude")||a.earliestPackageName?.includes("gpt")?"claude_gpt":"gemini"),d=g(a.shortWindowRemaining),f=g(a.longWindowRemaining),h=[];d&&h.push(`5h ${d}`),f&&h.push(`7d ${f}`);let i=a.earliestPackageExpiry?G(a.earliestPackageExpiry):null,j=[e,`${b} (${h.join(", ")})`];return i&&j.push(`reset in ${i}`),j.join(" | ")}let h=[e];return null!=a.priority&&h.push(`prio=${a.priority}`),h.join(" | ")}async function I(a){try{for(let b of(await (0,d.getProviderConnections)({provider:a})))b?.id&&await (0,d.updateProviderConnection)(b.id,{quotaCheckedAt:null})}catch{}}async function J(a,b=null,c=null,g={}){let y,z=b instanceof Set?b:b?new Set([b]):new Set,A=g?.preferredConnectionId||null,B=g?.requestedModel||c,E=C;C=new Promise(a=>{y=a});try{let b;await E;let g=(0,h.rs)(a),y="zcode-free"===g||"minimax-free"===g||"trae-free"===g,C=!!y&&(await (0,d.getProviderConnections)({provider:g,isActive:!0})).length>0;if(h.IS[g]?.noAuth&&!C){let a=await (0,d.getSettings)(),b=(a.zcodeGatewayHost||"").trim(),c={};if(y)try{let d=(a.zcodeGatewayPath||"").trim()||"/gateway/zcode/v1/messages";"minimax-free"===g?d=(a.minimaxGatewayPath||"").trim()||"/gateway/minimax/v1/messages":"trae-free"===g&&(d=(a.traeGatewayPath||"").trim()||"/gateway/trae/v1/messages");let e=new URL(`http://127.0.0.1:47860${d.startsWith("/")?"":"/"}${d}`);e.hostname=b||"127.0.0.1";let f=Number((a.zcodeGatewayPort||"").trim());Number.isInteger(f)&&f>0&&f<65536&&(e.port=String(f)),c.baseUrl=e.toString()}catch{}let f=(a.providerStrategies||{})[g]||{},h=f.rotateStrategy||"none",i=f.proxyPoolId||null;if("none"!==h){let a=(await (0,d.ui)({isActive:!0})).filter(a=>a.proxyUrl).map(a=>a.id);i=(0,e.p)(a,h,g)}let j=await (0,e.B)({proxyPoolId:i||""});return{id:"noauth",connectionName:"Public",isActive:!0,accessToken:"public",providerSpecificData:{...c,connectionProxyEnabled:j.connectionProxyEnabled,connectionProxyUrl:j.connectionProxyUrl,connectionNoProxy:j.connectionNoProxy,connectionProxyPoolId:j.proxyPoolId||null,vercelRelayUrl:j.vercelRelayUrl||"",strictProxy:!0===j.strictProxy}}}let G=await (0,d.getProviderConnections)({provider:g,isActive:!0});if(t.debug("AUTH",`${a} | total connections: ${G.length}, excludeIds: ${z.size>0?[...z].join(","):"none"}, model: ${c||"any"}`),0===G.length)return t.warn("AUTH",`No credentials for ${a}`),null;let I="antigravity"===g,J=I&&c?u:null,K=G.filter(a=>{if(z.has(a.id)||(0,f.Bl)(a,c))return!1;if(I&&J){let b=J.get(a.id),d=w(b,c)||b?.[c];if(d&&d.remainingPercentage<=0&&d.resetAt&&new Date(d.resetAt).getTime()>Date.now())return t.info("AG_QUOTA",`${a.id?.slice(0,8)||"unknown"} | CACHE_BLOCK ${c} — skip upstream until ${d.resetAt}`),!1}if((0,f.a8)(a))return!1;let b=a.providerSpecificData?.enabledModels;return!("codex"===g&&Array.isArray(b))||!b.length||!B||!!b.includes(B)});if(t.debug("AUTH",`${a} | available: ${K.length}/${G.length}`),G.forEach(a=>{let b=z.has(a.id),d=(0,f.Bl)(a,c);if(b||d){let e=(0,f.kJ)(a);t.debug("AUTH",` → ${a.id?.slice(0,8)} | ${b?"excluded":""} ${d?`modelLocked(${c}) until ${e}`:""}`)}}),0===K.length){let b=G.filter(a=>(0,f.Bl)(a,c)),d=G.filter(a=>(0,f.a8)(a)),e=[];I&&c&&J&&G.forEach(a=>{let b=J.get(a.id),d=w(b,c)||b?.[c],f=d?.resetAt;f&&new Date(f).getTime()>Date.now()&&e.push(f)});let g=[...b.map(a=>(0,f.kJ)(a)),...d.map(a=>a.needsReauthUntil),...e].filter(Boolean).sort()[0]||null;if(g){let e=b[0]||d[0],h=0===b.length&&d.length>0,i=h?x.Ul:e?.lastError;return t.warn("AUTH",`${a} | all ${G.length} accounts ${h?"need re-auth":"locked"} for ${c||"all"} (${(0,f.Qo)(g)}) | lastError=${i?.slice(0,50)}`),{allRateLimited:!0,retryAfter:g,retryAfterHuman:(0,f.Qo)(g),lastError:i||null,lastErrorCode:h?401:e?.errorCode||null}}return t.warn("AUTH",`${a} | all ${G.length} accounts unavailable`),null}let L=await (0,d.getSettings)(),M=(L.providerStrategies||{})[g]||{},N=M.fallbackStrategy||L.fallbackStrategy||"fill-first",O=!0===M.earliestExpiryFirst,P=(0,f.d5)(L.channelBlocks?.[g]);P>0?t.info("AUTH",`${g} | channel blocked (${Math.ceil(P/1e3)}s left) — skipping quota refresh`):O&&K.length>1&&function(a){let b=Date.now();for(let c of a)!(!c.id||D.has(c.id))&&(b-(c.quotaCheckedAt?new Date(c.quotaCheckedAt).getTime():0)<3e5||(D.add(c.id),(async()=>{try{let a=await (0,e.B)(c.providerSpecificData||{}),b={connectionProxyEnabled:!0===a.connectionProxyEnabled,connectionProxyUrl:a.connectionProxyUrl||"",connectionNoProxy:a.connectionNoProxy||"",vercelRelayUrl:a.vercelRelayUrl||""},f=await (0,i.my)(c,b),g=(0,j.YO)(f),h={};if(f?.quotas&&"antigravity"===c.provider)for(let a of["gemini","claude_gpt"]){let b=(0,j.YO)(f,{family:a});if(!b)continue;let c="gemini"===a?"Gemini":"ClaudeGpt";h[`${c}ShortWindowRemaining`]="number"==typeof b.shortRemainingPct?b.shortRemainingPct:null,h[`${c}LongWindowRemaining`]="number"==typeof b.longRemainingPct?b.longRemainingPct:null,h[`${c}Zone`]=b.zone||null,h[`${c}PackageExpiry`]=b.expiry||null,h[`${c}PackageName`]=b.name||null}let l=(0,k.C)(f),m="number"==typeof l?{quotaBalance:l}:{};await (0,d.updateProviderConnection)(c.id,{earliestPackageExpiry:g?.expiry||null,earliestPackageName:g?.name||null,earliestPackageRemaining:"number"==typeof g?.remainingPercentage?g.remainingPercentage:null,shortWindowRemaining:"number"==typeof g?.shortRemainingPct?g.shortRemainingPct:null,longWindowRemaining:"number"==typeof g?.longRemainingPct?g.longRemainingPct:null,quotaZone:g?.zone||null,shortZone:g?.shortZone||null,longZone:g?.longZone||null,quotaWindowSource:g?.windowSource||null,quotaCheckedAt:new Date().toISOString(),...h,...m})}catch{}finally{D.delete(c.id)}})()))}(K);let Q=I?v(c):null,R=K;if(I&&Q){let a="gemini"===Q?"Gemini":"ClaudeGpt";R=K.map(b=>{let c=(()=>{let c=J?.get(b.id);if(c){let a=(0,j.YO)({quotas:c},{family:Q});if(a)return{...a,source:"cache"}}let d=b[`${a}ShortWindowRemaining`],e=b[`${a}LongWindowRemaining`];return"number"==typeof d||"number"==typeof e?{shortRemainingPct:d??null,longRemainingPct:e??null,zone:b[`${a}Zone`]||null,expiry:b[`${a}PackageExpiry`]||null,name:b[`${a}PackageName`]||null,source:"stored"}:null})();return c?{...b,shortWindowRemaining:"number"==typeof c.shortRemainingPct?c.shortRemainingPct:b.shortWindowRemaining,longWindowRemaining:"number"==typeof c.longRemainingPct?c.longRemainingPct:b.longWindowRemaining,quotaZone:c.zone||b.quotaZone,earliestPackageExpiry:c.expiry||b.earliestPackageExpiry,earliestPackageName:c.name||b.earliestPackageName,family:Q,familyQuotaSource:c.source}:b})}let S=R,T=function(a){if(!a||"string"!=typeof a)return n;let b=a.toLowerCase().trim();return o.has(b)?l:p.has(b)?"subscription":q.has(b)?m:r.has(b)?"gateway_free":n}(g),U=T===l,V=M.balanceStrategy||null;if(O&&R.length>1){let a=Date.now(),b=a=>U?0:+("red"===a.quotaZone),c=b=>b.earliestPackageExpiry&&new Date(b.earliestPackageExpiry).getTime()>a?new Date(b.earliestPackageExpiry).getTime():1/0;S=[...R].sort((a,d)=>{let e=b(a)-b(d);if(0!==e)return e;let f=c(a),g=c(d);return f!==g?f-g:(a.priority||999)-(d.priority||999)})}else T===m&&("lowest-first"===V||"highest-first"===V)&&R.length>1&&(S=[...R].sort((a,b)=>{let c="number"==typeof a.quotaBalance?a.quotaBalance:null,d="number"==typeof b.quotaBalance?b.quotaBalance:null;return null!==c&&null===d?-1:null===c&&null!==d?1:null!==c&&null!==d&&c!==d?"lowest-first"===V?c-d:d-c:(a.priority||999)-(b.priority||999)}));let W=!1;if(A&&(b=S.find(a=>a.id===A))&&t.info("AUTH",`${a} | pinned to ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"})`),b);else if(O&&S.length>1)if(U)b=S[0],t.info("AUTH",`${F(b)} ${a} | ${H(b,g,{family:Q})} | #1-pack-first`),W=!0,await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString()});else{let c=function(a,b={}){let c=Number.isFinite(b.redZonePct)?b.redZonePct:5;if(!Array.isArray(a)||0===a.length)return null;if(1===a.length)return{connection:a[0],stepped:!1};let d=function(a){let b=null,c=-1/0;for(let d of a){if(!d.lastUsedAt)continue;let a=new Date(d.lastUsedAt).getTime();Number.isFinite(a)&&a>c&&(c=a,b=d)}return b}(a),e=d?a.findIndex(a=>a.id===d.id):-1;if(e>=0&&s(d,c))return{connection:d,stepped:!1};let f=e>=0?e:-1;for(let b=1;b<=a.length;b++){let d=a[(f+b+a.length)%a.length];if(s(d,c))return{connection:d,stepped:e>=0}}return{connection:a[0],stepped:0!==e}}(S),e=c.stepped?function(a,b){let c=null,d=-1/0;for(let e of a){if(!e.lastUsedAt||e.id===b?.id)continue;let a=new Date(e.lastUsedAt).getTime();Number.isFinite(a)&&a>d&&(d=a,c=e)}return c}(S,b):null;b=c.connection,t.info("AUTH",`${F(b)} ${a} | ${H(b,g,{family:Q})}${c.stepped?` | relay handoff from ${e?.id?.slice(0,8)??"?"}`:""}`),W=!0,c.stepped&&t.info("AUTH",`${F(b)} ${a} | relay handoff → ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"}) | remaining=${b.earliestPackageRemaining??"?"}%`),await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString()})}else if("round-robin"===N){let a=M.stickyRoundRobinLimit||L.stickyRoundRobinLimit||3,c=[...S].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt)-new Date(a.lastUsedAt):-1:1:(a.priority||999)-(b.priority||999))[0],e=c?.consecutiveUseCount||0;c&&c.lastUsedAt&&e<a?(b=c,await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(b.consecutiveUseCount||0)+1})):(b=[...S].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt)-new Date(b.lastUsedAt):1:-1:(a.priority||999)-(b.priority||999))[0],await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else b=S[0];O&&!W&&b?.earliestPackageExpiry&&t.info("AUTH",`${F(b)} ${a} | earliest-expiry selected ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"}) | expires in ${(0,f.Qo)(b.earliestPackageExpiry)} (${b.earliestPackageName||"package"}) | ${H(b,g,{family:Q})}`);let X=await (0,e.B)(b.providerSpecificData||{}),Y=b.providerSpecificData?.strictProxy,Z=!0===X.strictProxy||(!0===Y||!1===Y?Y:void 0);return{authType:b.authType,apiKey:b.apiKey,accessToken:b.accessToken,refreshToken:b.refreshToken,idToken:b.idToken,expiresAt:b.expiresAt,expiresIn:b.expiresIn,lastRefreshAt:b.lastRefreshAt,projectId:b.projectId,connectionName:b.displayName||b.name||b.email||b.id,copilotToken:b.providerSpecificData?.copilotToken,providerSpecificData:{...b.providerSpecificData||{},connectionProxyEnabled:X.connectionProxyEnabled,connectionProxyUrl:X.connectionProxyUrl,connectionNoProxy:X.connectionNoProxy,connectionProxyPoolId:X.proxyPoolId||null,vercelRelayUrl:X.vercelRelayUrl||"",strictProxy:Z},connectionId:b.id,testStatus:b.testStatus,lastError:b.lastError,_connection:b}}finally{y&&y()}}async function K(a,b,c,e=null,i=null,j=null){if(!a||"noauth"===a)return{shouldFallback:!1,cooldownMs:0,channelScope:!1};let k=(await (0,d.getProviderConnections)({provider:e})).find(b=>b.id===a),l=k?.backoffLevel||0,m=function(a,b,c){if("github"!==(0,h.rs)(c)||402!==Number(a)||!String(b||"").toLowerCase().includes("you've reached your additional usage limit for your plan"))return null;let d=new Date;return Date.UTC(d.getUTCFullYear(),d.getUTCMonth()+1,1)}(b,c,e),n,o,p,q=!1;if(m)n=!0,o=m-Date.now(),p=0;else if(j&&j>Date.now()){n=!0;let a=null!==(0,f.N4)(c)?g.$e:g.fh;o=Math.min(j-Date.now(),a),p=0}else({shouldFallback:n,cooldownMs:o,newBackoffLevel:p,channelScope:q}=(0,f.hk)(b,c,l,(0,h.rs)(e)));if(!n)return{shouldFallback:!1,cooldownMs:0,channelScope:!1};if(q){let f="string"==typeof c?c.slice(0,500):"Provider error";return await (0,d.updateProviderConnection)(a,{lastError:f,errorCode:b,lastErrorAt:new Date().toISOString()}),e&&b&&f&&console.error(`❌ ${e} [${b}]: ${f}`),{shouldFallback:!0,cooldownMs:o,channelScope:!0}}let r="string"==typeof c?c.slice(0,1e3):"Provider error",s=(0,f.S5)(m?null:i,o),u=Object.keys(s)[0]===f.wz;await (0,d.updateProviderConnection)(a,{...s,...u?{testStatus:"unavailable"}:{},lastError:r,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:p??l});let v=Object.keys(s)[0],w=k?.displayName||k?.name||k?.email||a.slice(0,8);return t.warn("AUTH",`${w} locked ${v} for ${Math.round(o/1e3)}s [${b}]`),e&&b&&r&&console.error(`❌ ${e} [${b}]: ${r}`),{shouldFallback:!0,cooldownMs:o,channelScope:!1}}async function L(a,b,c=null){if(!a||"noauth"===a)return;let e=b._connection||b,g=Date.now(),h=Object.keys(e).filter(a=>a.startsWith("modelLock_"));if(!e.testStatus&&!e.lastError&&0===h.length)return;let i=h.filter(a=>{if(c&&a===`modelLock_${c}`||c&&"modelLock___all"===a)return!0;let b=e[a];return b&&new Date(b).getTime()<=g});if(0===i.length&&"unavailable"!==e.testStatus&&!e.lastError)return;let j=h.filter(a=>{if(i.includes(a))return!1;let b=e[a];return b&&new Date(b).getTime()>g}),k=Object.fromEntries(i.map(a=>[a,null]));0===j.length&&Object.assign(k,e.testStatus===f.BH?{backoffLevel:0}:{testStatus:"active",lastError:null,errorCode:null,lastErrorAt:null,backoffLevel:0}),await (0,d.updateProviderConnection)(a,k)}function M(a){let b=a.headers.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a.headers.get("x-api-key");return c||null}async function N(a){return!!a&&await (0,d.ek)(a)}async function O(a,{request:b,model:d}={}){if(!a)return null;let e=null,f=0;try{let{getApiKeyByKey:b,sumApiKeyTokensSince:d,localStartOfDayIso:g,getSettings:h}=await Promise.resolve().then(c.bind(c,89718)),i=await h();if(i?.dailyTokenLimitEnabled===!1||(e=await b(a),!e?.dailyTokenLimit||(f=await d((0,y.kk)(a),g()))<e.dailyTokenLimit))return null}catch(a){return t.warn("AUTH",`Daily token limit check failed (allowing request): ${a.message}`),null}let g=new Date;g.setHours(24,0,0,0);let h=Math.max(1,Math.ceil((g.getTime()-Date.now())/1e3)),i=Math.floor(h/3600),j=Math.floor(h%3600/60),k=`${i?`${i}h `:""}${j}m`;try{let{saveRequestUsage:g,saveRequestDetail:h}=await Promise.resolve().then(c.bind(c,27274)),{randomUUID:i}=await Promise.resolve().then(c.t.bind(c,77598,23)),j=new Date().toISOString();await g({provider:null,model:d||"unknown",tokens:{prompt_tokens:0,completion_tokens:0},apiKey:a,endpoint:b?(()=>{try{return new URL(b.url).pathname}catch{return null}})():null,status:"rate_limited",usageKey:i(),meta:{dailyLimitExceeded:!0,limit:e.dailyTokenLimit,used:f}}),await h({id:`${j}-${i().slice(0,6)}-rate-limited`,timestamp:j,provider:null,model:d||"unknown",status:"rate_limited",latency:{ttft:0,total:0},tokens:{prompt_tokens:0,completion_tokens:0},request:{rejected:"dailyTokenLimit",keyName:e.name||"unnamed"},response:{error:"Daily token limit exceeded",status:A.gx.RATE_LIMITED}})}catch(a){t.warn("AUTH",`Daily limit refusal not logged: ${a.message}`)}let l=(0,B.kK)(b),m=(0,B.w$)(l,'Daily token limit exceeded for API key "{name}" (used {used} / {limit} today). Resets in {reset}.').replace("{name}",e.name||"unnamed").replace("{used}",f.toLocaleString("en-US")).replace("{limit}",e.dailyTokenLimit.toLocaleString("en-US")).replace("{reset}",k);return(0,z.yj)(A.gx.RATE_LIMITED,m,{"retry-after":String(h)})}async function P(a,b){if(!a||!b)return null;try{let{getApiKeyByKey:d}=await Promise.resolve().then(c.bind(c,89718)),e=await d(a);if(!e)return null;let f=e.allowedModels,g=e.allowedCombos;if((!f||0===f.length)&&(!g||0===g.length))return null;let{getComboModels:h}=await c.e(8775).then(c.bind(c,38775)),i=await h(b);if(i&&i.length>0){if(g&&g.length>0&&!g.some(a=>a.toLowerCase()===b.toLowerCase()))return(0,z.yj)(A.gx.FORBIDDEN,`Combo "${b}" is not allowed for this API key.`,{"x-router-error":"model_not_allowed"});return null}if(f&&f.length>0){let{matchPattern:a}=await Promise.resolve().then(c.bind(c,58920)),d=b.toLowerCase();if(!f.some(b=>{let c=b.toLowerCase();return c===d||(c.includes("*")?a(c,d):!!d.includes("/")&&d.split("/").pop()===c)}))return(0,z.yj)(A.gx.FORBIDDEN,`Model "${b}" is not allowed for this API key.`,{"x-router-error":"model_not_allowed"})}return null}catch(a){return t.warn("AUTH",`API key model access check failed (allowing request): ${a.message}`),null}}}};
|
|
1
|
+
"use strict";exports.id=5837,exports.ids=[5837],exports.modules={7803:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>o,error:()=>r,errorLine:()=>l,fmtThink:()=>m,info:()=>p,line:()=>k,maskKey:()=>v,nextTag:()=>i,request:()=>s,response:()=>t,stream:()=>u,tagForSession:()=>j,warn:()=>q});let d={DEBUG:0,INFO:1,WARN:2,ERROR:3},e=d[process.env.LOG_LEVEL?.toUpperCase?.()]??d.INFO;function f(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}let g=["\uD83D\uDFE2","\uD83D\uDD35","\uD83D\uDFE3","\uD83D\uDFE1","\uD83D\uDFE0","\uD83D\uDD34","⚪","\uD83D\uDFE4"],h=0;function i(){let a=g[h%g.length];return h++,a}function j(a){if(!a)return i();let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)|0;return g[Math.abs(b)%g.length]}function k(a,b,c){e>d.INFO||console.log(`[${f()}] ${a} ${b} ${c}`)}function l(a,b,c){console.log(`[${f()}] ${a} ${b} ${c}`)}function m(a){return a&&a.mode?"none"===a.mode?"off":"auto"===a.mode?"auto":"budget"===a.mode?a.budget>=1e3?`${Math.round(a.budget/1e3)}k`:`${a.budget}`:"level"===a.mode?a.level:null:null}function n(a){if(!a)return"";if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}function o(a,b,c){if(e<=d.DEBUG){let d=c?` ${n(c)}`:"";console.log(`[${f()}] 🔍 [${a}] ${b}${d}`)}}function p(a,b,c){if(e<=d.INFO){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ℹ️ [${a}] ${b}${d}`)}}function q(a,b,c){if(e<=d.WARN){let d=c?` ${n(c)}`:"";console.warn(`[${f()}] ⚠️ [${a}] ${b}${d}`)}}function r(a,b,c){if(e<=d.ERROR){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ❌ [${a}] ${b}${d}`)}}function s(a,b,c){let d=c?` ${n(c)}`:"";console.log(`\x1b[36m[${f()}] 📥 ${a} ${b}${d}\x1b[0m`)}function t(a,b,c){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ${a<400?"\uD83D\uDCE4":"\uD83D\uDCA5"} ${a} (${b}ms)${d}`)}function u(a,b){let c=b?` ${n(b)}`:"";console.log(`[${f()}] 🌊 [STREAM] ${a}${c}`)}function v(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}},20858:(a,b,c)=>{c.d(b,{C:()=>d});function d(a){if(!a||!a.quotas||"object"!=typeof a.quotas)return null;let b=/balance|voucher|cash|余额|代金券|现金|credit/i,c=null,d=-1;for(let[e,f]of Object.entries(a.quotas)){if(!f||"object"!=typeof f)continue;let a=/^balance|^余额/i.test(e.trim()),g=!0===f.isCreditBalance;if(!(b.test(e)||g))continue;let h=null;if("number"==typeof f.remaining&&Number.isFinite(f.remaining))h=f.remaining;else if("number"==typeof f.total&&Number.isFinite(f.total)){let a=Number(f.used)||0;h=Math.max(0,f.total-a)}if(null===h)continue;let i=a?2:+!!g;i>d&&(d=i,c=h)}return c}},33379:(a,b,c)=>{c.d(b,{kK:()=>o,w$:()=>q});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(73136);let i=(()=>{try{return g().dirname((0,h.fileURLToPath)("file:///F:/Files/GitHub%20Files/10router/src/i18n/serverTranslate.js"))}catch{return null}})(),j=[g().join(process.cwd(),"public","i18n","literals"),...i?[g().join(i,"..","..","public","i18n","literals")]:[]],k={"zh-cn":"zh-CN","zh-hans":"zh-CN","zh-tw":"zh-TW","zh-hant":"zh-TW","pt-br":"pt-BR","pt-pt":"pt-PT"},l=new Map([["en",null]]);function m(a){if(l.has(a))return l.get(a);let b=null;for(let c of j)try{b=JSON.parse(e().readFileSync(g().join(c,`${a}.json`),"utf8"));break}catch{}return l.set(a,b),b}function n(a){let b=a.toLowerCase();if(k[b])return k[b];let c=b.split("-")[0];return"zh"===c?"zh-CN":"pt"===c?"pt-BR":"en"===b?"en":/^[a-z]{2,3}$/.test(c)?c:"en"}function o(a){if(!a?.headers)return"en";try{let b=a.headers.get("cookie")||"",c=/(?:^|;\s*)locale=([^;]+)/.exec(b);if(c){let a=n(decodeURIComponent(c[1]).trim());if("en"===a||m(a))return a}}catch{}var b=a.headers.get("accept-language");if(!b||"string"!=typeof b)return"en";for(let a of b.split(",").map(a=>a.split(";")[0].trim()).filter(a=>a&&"*"!==a)){let b=n(a);if("en"===b)break;if(m(b))return b}return"en"}let p=[{re:/Our service is being upgraded[\s\S]*?not affected\./i,"zh-CN":"上游正在升级维护,通常几分钟内恢复,稍后自动重试即可;套餐与余额不受影响。","zh-TW":"上游正在升級維護,通常幾分鐘內恢復,稍後自動重試即可;方案與餘額不受影響。"},{re:/Service temporarily unavailable/gi,"zh-CN":"服务暂时不可用(上游维护或过载,稍后重试)","zh-TW":"服務暫時不可用(上游維護或過載,稍後重試)"},{re:/Bad gateway - upstream provider error/gi,"zh-CN":"网关错误——上游供应商故障","zh-TW":"閘道錯誤——上游供應商故障"},{re:/Gateway timeout/gi,"zh-CN":"网关超时","zh-TW":"閘道逾時"}];function q(a,b){if(!b||"string"!=typeof b)return b;let c=m(a),d=c&&c[b.trim()];if(d)return d;if("en"===a)return b;for(let c of p){let d=c[a];if(d&&c.re.test(b))return c.re.lastIndex=0,b.replace(c.re,d)}return b}},75837:(a,b,c)=>{c.d(b,{uO:()=>O,bs:()=>P,Pt:()=>L,Tr:()=>M,c1:()=>J,C$:()=>I,kI:()=>N,vk:()=>K});var d=c(89718),e=c(39326),f=c(12557),g=c(3662),h=c(40615),i=c(59669),j=c(78661),k=c(20858);let l="pack_asset",m="balance",n="generic",o=new Set(["codebuddy-cn","codebuddy-intl","qoder","qoder-cn"]),p=new Set(["antigravity","github","codex","commandcode","glm","glm-cn"]),q=new Set(["deepseek","stepfun","stepfun-cn","openai","anthropic","minimax","minimax-cn","minimax-code","minimax-code-global","siliconflow-cn","groq","openrouter","together","fireworks","nebius","hyperbolic","chutes","cohere","mistral","river","modelscope","oxion","baidu","kimi","azure","step_plan"]),r=new Set(["zcode-free","minimax-free","trae-free"]);function s(a,b){if(!a)return!1;let c=a.shortWindowRemaining;return(!("number"==typeof c&&Number.isFinite(c))||!(c<=0)&&!(c<b))&&!0}c(87283);var t=c(7803);let u=new Map;function v(a){if(!a||"string"!=typeof a)return null;let b=(a.includes("/")?a.slice(a.indexOf("/")+1):a).toLowerCase();return b.startsWith("claude-")||b.startsWith("gpt-")||"claude"===b?"claude_gpt":b.startsWith("gemini-")&&!b.includes("image")||"gemini"===b?"gemini":null}function w(a,b){if(!a||"object"!=typeof a||!b)return null;let c="string"==typeof b?(b.includes("/")?b.slice(b.indexOf("/")+1):b).replace(/\([^()]+\)\s*$/,"").trim():"",d=v(c),e=[];if(a[c]&&e.push(a[c]),"claude-sonnet-5-5"===c&&a["claude-sonnet-5-5-high"]&&e.push(a["claude-sonnet-5-5-high"]),"claude-opus-5-5"===c&&a["claude-opus-5-5-high"]&&e.push(a["claude-opus-5-5-high"]),"gemini-3.8-flash"===c&&a["gemini-3.8-flash-medium"]&&e.push(a["gemini-3.8-flash-medium"]),"gemini-3.7-flash"===c&&a["gemini-3.7-flash-medium"]&&e.push(a["gemini-3.7-flash-medium"]),"gemini-3.6-flash"===c&&a["gemini-3.6-flash-medium"]&&e.push(a["gemini-3.6-flash-medium"]),"claude_gpt"===d?(a.claude_gpt_session&&e.push(a.claude_gpt_session),a.claude_gpt_weekly&&e.push(a.claude_gpt_weekly)):"gemini"===d&&(a.gemini_session&&e.push(a.gemini_session),a.gemini_weekly&&e.push(a.gemini_weekly)),0===e.length)return null;let f=Date.now(),g=[];for(let a of e)if(a&&"object"==typeof a&&"number"==typeof a.remainingPercentage&&a.remainingPercentage<=0)if(a.resetAt){let b=new Date(a.resetAt).getTime();b>f&&g.push({...a,resetMs:b})}else g.push({...a,resetMs:0});if(g.length>0){g.sort((a,b)=>b.resetMs-a.resetMs);let a=g[0];return{used:a.used??1e3,total:a.total??1e3,remainingPercentage:0,resetAt:a.resetAt,displayName:a.displayName||c}}let h=e.filter(a=>a&&"number"==typeof a.remainingPercentage);return 0===h.length?null:(h.sort((a,b)=>a.remainingPercentage-b.remainingPercentage),h[0])}var x=c(67828),y=c(2521),z=c(43659),A=c(41004),B=c(33379);let C=Promise.resolve(),D=new Set,E={green:"\uD83D\uDFE9",yellow:"\uD83D\uDFE8",red:"\uD83D\uDFE5"};function F(a){return E[a?.quotaZone]||"⚪"}function G(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"expired";let c=Math.floor(Math.round(b/1e3)/60),d=Math.floor(c/60),e=Math.floor(d/24);if(e>=1){let a=d%24;return a>0?`${e}d ${a}h`:`${e}d`}if(d>=1){let a=c%60;return a>0?`${d}h ${a}m`:`${d}h`}return`${Math.max(1,c)}m`}function H(a,b,c={}){if(!a)return"no-account";let d=a.id?.slice(0,8)||"?",e=a.name||a.email||d,f=["codebuddy-cn","codebuddy-intl","qoder","qoder-cn"].includes(b),g=a=>"number"==typeof a&&Number.isFinite(a)?`${a.toFixed(1)}%`:null;if(f){let b=a.earliestPackageName||"pack",c=g(a.shortWindowRemaining??a.earliestPackageRemaining),d=a.earliestPackageExpiry?G(a.earliestPackageExpiry):null,f=[e];return c?f.push(`${b} (${c})`):f.push(b),d&&f.push(`exp in ${d}`),f.join(" | ")}if("antigravity"===b){let b=c.family||(a.earliestPackageName?.includes("claude")||a.earliestPackageName?.includes("gpt")?"claude_gpt":"gemini"),d=g(a.shortWindowRemaining),f=g(a.longWindowRemaining),h=[];d&&h.push(`5h ${d}`),f&&h.push(`7d ${f}`);let i=a.earliestPackageExpiry?G(a.earliestPackageExpiry):null,j=[e,`${b} (${h.join(", ")})`];return i&&j.push(`reset in ${i}`),j.join(" | ")}let h=[e];return null!=a.priority&&h.push(`prio=${a.priority}`),h.join(" | ")}async function I(a){try{for(let b of(await (0,d.getProviderConnections)({provider:a})))b?.id&&await (0,d.updateProviderConnection)(b.id,{quotaCheckedAt:null})}catch{}}async function J(a,b=null,c=null,g={}){let y,z=b instanceof Set?b:b?new Set([b]):new Set,A=g?.preferredConnectionId||null,B=g?.requestedModel||c,E=C;C=new Promise(a=>{y=a});try{let b;await E;let g=(0,h.rs)(a),y="zcode-free"===g||"minimax-free"===g||"trae-free"===g,C=!!y&&(await (0,d.getProviderConnections)({provider:g,isActive:!0})).length>0;if(h.IS[g]?.noAuth&&!C){let a=await (0,d.getSettings)(),b=(a.zcodeGatewayHost||"").trim(),c={};if(y)try{let d=(a.zcodeGatewayPath||"").trim()||"/gateway/zcode/v1/messages";"minimax-free"===g?d=(a.minimaxGatewayPath||"").trim()||"/gateway/minimax/v1/messages":"trae-free"===g&&(d=(a.traeGatewayPath||"").trim()||"/gateway/trae/v1/messages");let e=new URL(`http://127.0.0.1:47860${d.startsWith("/")?"":"/"}${d}`);e.hostname=b||"127.0.0.1";let f=Number((a.zcodeGatewayPort||"").trim());Number.isInteger(f)&&f>0&&f<65536&&(e.port=String(f)),c.baseUrl=e.toString()}catch{}let f=(a.providerStrategies||{})[g]||{},h=f.rotateStrategy||"none",i=f.proxyPoolId||null;if("none"!==h){let a=(await (0,d.ui)({isActive:!0})).filter(a=>a.proxyUrl).map(a=>a.id);i=(0,e.p)(a,h,g)}let j=await (0,e.B)({proxyPoolId:i||""});return{id:"noauth",connectionName:"Public",isActive:!0,accessToken:"public",providerSpecificData:{...c,connectionProxyEnabled:j.connectionProxyEnabled,connectionProxyUrl:j.connectionProxyUrl,connectionNoProxy:j.connectionNoProxy,connectionProxyPoolId:j.proxyPoolId||null,vercelRelayUrl:j.vercelRelayUrl||"",strictProxy:!0===j.strictProxy}}}let G=await (0,d.getProviderConnections)({provider:g,isActive:!0});if(t.debug("AUTH",`${a} | total connections: ${G.length}, excludeIds: ${z.size>0?[...z].join(","):"none"}, model: ${c||"any"}`),0===G.length)return t.warn("AUTH",`No credentials for ${a}`),null;let I="antigravity"===g,J=I&&c?u:null,K=G.filter(a=>{if(z.has(a.id)||(0,f.Bl)(a,c))return!1;if(I&&J){let b=J.get(a.id),d=w(b,c)||b?.[c];if(d&&d.remainingPercentage<=0&&d.resetAt&&new Date(d.resetAt).getTime()>Date.now())return t.info("AG_QUOTA",`${a.id?.slice(0,8)||"unknown"} | CACHE_BLOCK ${c} — skip upstream until ${d.resetAt}`),!1}if((0,f.a8)(a))return!1;let b=a.providerSpecificData?.enabledModels;return!("codex"===g&&Array.isArray(b))||!b.length||!B||!!b.includes(B)});if(t.debug("AUTH",`${a} | available: ${K.length}/${G.length}`),G.forEach(a=>{let b=z.has(a.id),d=(0,f.Bl)(a,c);if(b||d){let e=(0,f.kJ)(a);t.debug("AUTH",` → ${a.id?.slice(0,8)} | ${b?"excluded":""} ${d?`modelLocked(${c}) until ${e}`:""}`)}}),0===K.length){let b=G.filter(a=>(0,f.Bl)(a,c)),d=G.filter(a=>(0,f.a8)(a)),e=[];I&&c&&J&&G.forEach(a=>{let b=J.get(a.id),d=w(b,c)||b?.[c],f=d?.resetAt;f&&new Date(f).getTime()>Date.now()&&e.push(f)});let g=[...b.map(a=>(0,f.kJ)(a)),...d.map(a=>a.needsReauthUntil),...e].filter(Boolean).sort()[0]||null;if(g){let e=b[0]||d[0],h=0===b.length&&d.length>0,i=h?x.Ul:e?.lastError;return t.warn("AUTH",`${a} | all ${G.length} accounts ${h?"need re-auth":"locked"} for ${c||"all"} (${(0,f.Qo)(g)}) | lastError=${i?.slice(0,50)}`),{allRateLimited:!0,retryAfter:g,retryAfterHuman:(0,f.Qo)(g),lastError:i||null,lastErrorCode:h?401:e?.errorCode||null}}return t.warn("AUTH",`${a} | all ${G.length} accounts unavailable`),null}let L=await (0,d.getSettings)(),M=(L.providerStrategies||{})[g]||{},N=M.fallbackStrategy||L.fallbackStrategy||"fill-first",O=!0===M.earliestExpiryFirst,P=(0,f.d5)(L.channelBlocks?.[g]);P>0?t.info("AUTH",`${g} | channel blocked (${Math.ceil(P/1e3)}s left) — skipping quota refresh`):O&&K.length>1&&function(a){let b=Date.now();for(let c of a)!(!c.id||D.has(c.id))&&(b-(c.quotaCheckedAt?new Date(c.quotaCheckedAt).getTime():0)<3e5||(D.add(c.id),(async()=>{try{let a=await (0,e.B)(c.providerSpecificData||{}),b={connectionProxyEnabled:!0===a.connectionProxyEnabled,connectionProxyUrl:a.connectionProxyUrl||"",connectionNoProxy:a.connectionNoProxy||"",vercelRelayUrl:a.vercelRelayUrl||""},f=await (0,i.my)(c,b),g=(0,j.YO)(f),h={};if(f?.quotas&&"antigravity"===c.provider)for(let a of["gemini","claude_gpt"]){let b=(0,j.YO)(f,{family:a});if(!b)continue;let c="gemini"===a?"Gemini":"ClaudeGpt";h[`${c}ShortWindowRemaining`]="number"==typeof b.shortRemainingPct?b.shortRemainingPct:null,h[`${c}LongWindowRemaining`]="number"==typeof b.longRemainingPct?b.longRemainingPct:null,h[`${c}Zone`]=b.zone||null,h[`${c}PackageExpiry`]=b.expiry||null,h[`${c}PackageName`]=b.name||null}let l=(0,k.C)(f),m="number"==typeof l?{quotaBalance:l}:{};await (0,d.updateProviderConnection)(c.id,{earliestPackageExpiry:g?.expiry||null,earliestPackageName:g?.name||null,earliestPackageRemaining:"number"==typeof g?.remainingPercentage?g.remainingPercentage:null,shortWindowRemaining:"number"==typeof g?.shortRemainingPct?g.shortRemainingPct:null,longWindowRemaining:"number"==typeof g?.longRemainingPct?g.longRemainingPct:null,quotaZone:g?.zone||null,shortZone:g?.shortZone||null,longZone:g?.longZone||null,quotaWindowSource:g?.windowSource||null,quotaCheckedAt:new Date().toISOString(),...h,...m})}catch{}finally{D.delete(c.id)}})()))}(K);let Q=I?v(c):null,R=K;if(I&&Q){let a="gemini"===Q?"Gemini":"ClaudeGpt";R=K.map(b=>{let c=(()=>{let c=J?.get(b.id);if(c){let a=(0,j.YO)({quotas:c},{family:Q});if(a)return{...a,source:"cache"}}let d=b[`${a}ShortWindowRemaining`],e=b[`${a}LongWindowRemaining`];return"number"==typeof d||"number"==typeof e?{shortRemainingPct:d??null,longRemainingPct:e??null,zone:b[`${a}Zone`]||null,expiry:b[`${a}PackageExpiry`]||null,name:b[`${a}PackageName`]||null,source:"stored"}:null})();return c?{...b,shortWindowRemaining:"number"==typeof c.shortRemainingPct?c.shortRemainingPct:b.shortWindowRemaining,longWindowRemaining:"number"==typeof c.longRemainingPct?c.longRemainingPct:b.longWindowRemaining,quotaZone:c.zone||b.quotaZone,earliestPackageExpiry:c.expiry||b.earliestPackageExpiry,earliestPackageName:c.name||b.earliestPackageName,family:Q,familyQuotaSource:c.source}:b})}let S=R,T=function(a){if(!a||"string"!=typeof a)return n;let b=a.toLowerCase().trim();return o.has(b)?l:p.has(b)?"subscription":q.has(b)?m:r.has(b)?"gateway_free":n}(g),U=T===l,V=M.balanceStrategy||null;if(O&&R.length>1){let a=Date.now(),b=a=>U?0:+("red"===a.quotaZone),c=b=>b.earliestPackageExpiry&&new Date(b.earliestPackageExpiry).getTime()>a?new Date(b.earliestPackageExpiry).getTime():1/0;S=[...R].sort((a,d)=>{let e=b(a)-b(d);if(0!==e)return e;let f=c(a),g=c(d);return f!==g?f-g:(a.priority||999)-(d.priority||999)})}else T===m&&("lowest-first"===V||"highest-first"===V)&&R.length>1&&(S=[...R].sort((a,b)=>{let c="number"==typeof a.quotaBalance?a.quotaBalance:null,d="number"==typeof b.quotaBalance?b.quotaBalance:null;return null!==c&&null===d?-1:null===c&&null!==d?1:null!==c&&null!==d&&c!==d?"lowest-first"===V?c-d:d-c:(a.priority||999)-(b.priority||999)}));let W=!1;if(A&&(b=S.find(a=>a.id===A))&&t.info("AUTH",`${a} | pinned to ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"})`),b);else if(O&&S.length>1)if(U)b=S[0],t.info("AUTH",`${F(b)} ${a} | ${H(b,g,{family:Q})} | #1-pack-first`),W=!0,await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString()});else{let c=function(a,b={}){let c=Number.isFinite(b.redZonePct)?b.redZonePct:5;if(!Array.isArray(a)||0===a.length)return null;if(1===a.length)return{connection:a[0],stepped:!1};let d=function(a){let b=null,c=-1/0;for(let d of a){if(!d.lastUsedAt)continue;let a=new Date(d.lastUsedAt).getTime();Number.isFinite(a)&&a>c&&(c=a,b=d)}return b}(a),e=d?a.findIndex(a=>a.id===d.id):-1;if(e>=0&&s(d,c))return{connection:d,stepped:!1};let f=e>=0?e:-1;for(let b=1;b<=a.length;b++){let d=a[(f+b+a.length)%a.length];if(s(d,c))return{connection:d,stepped:e>=0}}return{connection:a[0],stepped:0!==e}}(S),e=c.stepped?function(a,b){let c=null,d=-1/0;for(let e of a){if(!e.lastUsedAt||e.id===b?.id)continue;let a=new Date(e.lastUsedAt).getTime();Number.isFinite(a)&&a>d&&(d=a,c=e)}return c}(S,b):null;b=c.connection,t.info("AUTH",`${F(b)} ${a} | ${H(b,g,{family:Q})}${c.stepped?` | relay handoff from ${e?.id?.slice(0,8)??"?"}`:""}`),W=!0,c.stepped&&t.info("AUTH",`${F(b)} ${a} | relay handoff → ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"}) | remaining=${b.earliestPackageRemaining??"?"}%`),await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString()})}else if("round-robin"===N){let a=M.stickyRoundRobinLimit||L.stickyRoundRobinLimit||3,c=[...S].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt)-new Date(a.lastUsedAt):-1:1:(a.priority||999)-(b.priority||999))[0],e=c?.consecutiveUseCount||0;c&&c.lastUsedAt&&e<a?(b=c,await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(b.consecutiveUseCount||0)+1})):(b=[...S].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt)-new Date(b.lastUsedAt):1:-1:(a.priority||999)-(b.priority||999))[0],await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else b=S[0];O&&!W&&b?.earliestPackageExpiry&&t.info("AUTH",`${F(b)} ${a} | earliest-expiry selected ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"}) | expires in ${(0,f.Qo)(b.earliestPackageExpiry)} (${b.earliestPackageName||"package"}) | ${H(b,g,{family:Q})}`);let X=await (0,e.B)(b.providerSpecificData||{}),Y=b.providerSpecificData?.strictProxy,Z=!0===X.strictProxy||(!0===Y||!1===Y?Y:void 0);return{authType:b.authType,apiKey:b.apiKey,accessToken:b.accessToken,refreshToken:b.refreshToken,idToken:b.idToken,expiresAt:b.expiresAt,expiresIn:b.expiresIn,lastRefreshAt:b.lastRefreshAt,projectId:b.projectId,connectionName:b.displayName||b.name||b.email||b.id,copilotToken:b.providerSpecificData?.copilotToken,providerSpecificData:{...b.providerSpecificData||{},connectionProxyEnabled:X.connectionProxyEnabled,connectionProxyUrl:X.connectionProxyUrl,connectionNoProxy:X.connectionNoProxy,connectionProxyPoolId:X.proxyPoolId||null,vercelRelayUrl:X.vercelRelayUrl||"",strictProxy:Z},connectionId:b.id,testStatus:b.testStatus,lastError:b.lastError,_connection:b}}finally{y&&y()}}async function K(a,b,c,e=null,i=null,j=null){if(!a||"noauth"===a)return{shouldFallback:!1,cooldownMs:0,channelScope:!1};let k=(await (0,d.getProviderConnections)({provider:e})).find(b=>b.id===a),l=k?.backoffLevel||0,m=function(a,b,c){if("github"!==(0,h.rs)(c)||402!==Number(a)||!String(b||"").toLowerCase().includes("you've reached your additional usage limit for your plan"))return null;let d=new Date;return Date.UTC(d.getUTCFullYear(),d.getUTCMonth()+1,1)}(b,c,e),n,o,p,q=!1;if(m)n=!0,o=m-Date.now(),p=0;else if(j&&j>Date.now()){n=!0;let a=null!==(0,f.N4)(c)?g.$e:g.fh;o=Math.min(j-Date.now(),a),p=0}else({shouldFallback:n,cooldownMs:o,newBackoffLevel:p,channelScope:q}=(0,f.hk)(b,c,l,(0,h.rs)(e)));if(!n)return{shouldFallback:!1,cooldownMs:0,channelScope:!1};if(q){let f="string"==typeof c?c.slice(0,500):"Provider error";return await (0,d.updateProviderConnection)(a,{lastError:f,errorCode:b,lastErrorAt:new Date().toISOString()}),e&&b&&f&&console.error(`❌ ${e} [${b}]: ${f}`),{shouldFallback:!0,cooldownMs:o,channelScope:!0}}let r="string"==typeof c?c.slice(0,1e3):"Provider error",s=(0,f.S5)(m?null:i,o),u=Object.keys(s)[0]===f.wz;await (0,d.updateProviderConnection)(a,{...s,...u?{testStatus:"unavailable"}:{},lastError:r,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:p??l});let v=Object.keys(s)[0],w=k?.displayName||k?.name||k?.email||a.slice(0,8);return t.warn("AUTH",`${w} locked ${v} for ${Math.round(o/1e3)}s [${b}]`),e&&b&&r&&console.error(`❌ ${e} [${b}]: ${r}`),{shouldFallback:!0,cooldownMs:o,channelScope:!1}}async function L(a,b,c=null){if(!a||"noauth"===a)return;let e=b._connection||b,g=Date.now(),h=Object.keys(e).filter(a=>a.startsWith("modelLock_"));if(!e.testStatus&&!e.lastError&&0===h.length)return;let i=h.filter(a=>{if(c&&a===`modelLock_${c}`||c&&"modelLock___all"===a)return!0;let b=e[a];return b&&new Date(b).getTime()<=g});if(0===i.length&&"unavailable"!==e.testStatus&&!e.lastError)return;let j=h.filter(a=>{if(i.includes(a))return!1;let b=e[a];return b&&new Date(b).getTime()>g}),k=Object.fromEntries(i.map(a=>[a,null]));0===j.length&&Object.assign(k,e.testStatus===f.BH?{backoffLevel:0}:{testStatus:"active",lastError:null,errorCode:null,lastErrorAt:null,backoffLevel:0}),await (0,d.updateProviderConnection)(a,k)}function M(a){let b=a.headers.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a.headers.get("x-api-key");return c||null}async function N(a){return!!a&&await (0,d.ek)(a)}async function O(a,{request:b,model:d}={}){if(!a)return null;let e=null,f=0;try{let{getApiKeyByKey:b,sumApiKeyTokensSince:d,localStartOfDayIso:g,getSettings:h}=await Promise.resolve().then(c.bind(c,89718)),i=await h();if(i?.dailyTokenLimitEnabled===!1||(e=await b(a),!e?.dailyTokenLimit||(f=await d((0,y.kk)(a),g()))<e.dailyTokenLimit))return null}catch(a){return t.warn("AUTH",`Daily token limit check failed (allowing request): ${a.message}`),null}let g=new Date;g.setHours(24,0,0,0);let h=Math.max(1,Math.ceil((g.getTime()-Date.now())/1e3)),i=Math.floor(h/3600),j=Math.floor(h%3600/60),k=`${i?`${i}h `:""}${j}m`;try{let{saveRequestUsage:g,saveRequestDetail:h}=await Promise.resolve().then(c.bind(c,27274)),{randomUUID:i}=await Promise.resolve().then(c.t.bind(c,77598,23)),j=new Date().toISOString();await g({provider:null,model:d||"unknown",tokens:{prompt_tokens:0,completion_tokens:0},apiKey:a,endpoint:b?(()=>{try{return new URL(b.url).pathname}catch{return null}})():null,status:"rate_limited",usageKey:i(),meta:{dailyLimitExceeded:!0,limit:e.dailyTokenLimit,used:f}}),await h({id:`${j}-${i().slice(0,6)}-rate-limited`,timestamp:j,provider:null,model:d||"unknown",status:"rate_limited",latency:{ttft:0,total:0},tokens:{prompt_tokens:0,completion_tokens:0},request:{rejected:"dailyTokenLimit",keyName:e.name||"unnamed"},response:{error:"Daily token limit exceeded",status:A.gx.RATE_LIMITED}})}catch(a){t.warn("AUTH",`Daily limit refusal not logged: ${a.message}`)}let l=(0,B.kK)(b),m=(0,B.w$)(l,'Daily token limit exceeded for API key "{name}" (used {used} / {limit} today). Resets in {reset}.').replace("{name}",e.name||"unnamed").replace("{used}",f.toLocaleString("en-US")).replace("{limit}",e.dailyTokenLimit.toLocaleString("en-US")).replace("{reset}",k);return(0,z.yj)(A.gx.RATE_LIMITED,m,{"retry-after":String(h)})}async function P(a,b){if(!a||!b)return null;try{let{getApiKeyByKey:d}=await Promise.resolve().then(c.bind(c,89718)),e=await d(a);if(!e)return null;let f=e.allowedModels,g=e.allowedCombos;if((!f||0===f.length)&&(!g||0===g.length))return null;let{getComboModels:h}=await c.e(8775).then(c.bind(c,38775)),i=await h(b);if(i&&i.length>0){if(g&&g.length>0&&!g.some(a=>a.toLowerCase()===b.toLowerCase()))return(0,z.yj)(A.gx.FORBIDDEN,`Combo "${b}" is not allowed for this API key.`,{"x-router-error":"model_not_allowed"});return null}if(f&&f.length>0){let{matchPattern:a}=await Promise.resolve().then(c.bind(c,58920)),d=b.toLowerCase();if(!f.some(b=>{let c=b.toLowerCase();return c===d||(c.includes("*")?a(c,d):!!d.includes("/")&&d.split("/").pop()===c)}))return(0,z.yj)(A.gx.FORBIDDEN,`Model "${b}" is not allowed for this API key.`,{"x-router-error":"model_not_allowed"})}return null}catch(a){return t.warn("AUTH",`API key model access check failed (allowing request): ${a.message}`),null}}}};
|