@techysy/10router 1.6.0 → 1.6.4-test.1
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 +41 -39
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/prerender-manifest.json +21 -21
- package/app/.next-cli-build/routes-manifest.json +12 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
- 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 +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 +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 +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 +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 +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 +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 +4 -4
- 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 +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 +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 +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 +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 +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 +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 +3 -3
- 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 +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 +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 +2 -2
- 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 +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 +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 +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 +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 +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 +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 +2 -2
- 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 +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 +2 -2
- package/app/.next-cli-build/server/app/_not-found.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- 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 +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 +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 -1
- 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 +2 -2
- 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 +2 -2
- 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 -1
- 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 -1
- 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 +5 -5
- 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 +2 -2
- 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 +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 +2 -2
- 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 +2 -2
- 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 +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 +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 +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 +2 -2
- 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 +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 +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 +2 -2
- 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 +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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 -0
- package/app/.next-cli-build/server/app/api/oauth/loomy/sms-login/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/oauth/loomy/sms-login/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/oauth/loomy/sms-send/route.js +1 -0
- package/app/.next-cli-build/server/app/api/oauth/loomy/sms-send/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/oauth/loomy/sms-send/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/oauth/qoder/checkin/route.js +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 +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 +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 +2 -2
- 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 +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 +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 +2 -2
- 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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +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 +2 -2
- 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 +2 -2
- 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 +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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +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 +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 +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 +2 -2
- 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 +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 +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 +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 +2 -2
- 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 +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 +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 +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 +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 +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 +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 +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 +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 +2 -2
- 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 +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 +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 +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 +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 +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 +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 +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 +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 +2 -2
- 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 +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 +2 -2
- 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 +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 +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 +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 +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 +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 +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 +2 -2
- 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 +2 -2
- 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 +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 +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 +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 +2 -2
- package/app/.next-cli-build/server/app/callback.rsc +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/experimental.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/experimental.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/experimental.segments/!KGRhc2hib2FyZCk/dashboard/experimental/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/experimental.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/experimental.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/pxpipe.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +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 +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/skills.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/token-saver.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.html +2 -2
- package/app/.next-cli-build/server/app/dashboard.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/favicon.ico/route.js +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 +6 -6
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing/page.js +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 +2 -2
- package/app/.next-cli-build/server/app/landing.rsc +7 -7
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/login/page.js +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 +2 -2
- package/app/.next-cli-build/server/app/login.rsc +7 -7
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page.js +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 +41 -39
- package/app/.next-cli-build/server/chunks/1329.js +1 -1
- package/app/.next-cli-build/server/chunks/1622.js +1 -0
- package/app/.next-cli-build/server/chunks/1806.js +1 -1
- package/app/.next-cli-build/server/chunks/1819.js +1 -1
- package/app/.next-cli-build/server/chunks/1884.js +1 -1
- package/app/.next-cli-build/server/chunks/2132.js +1 -1
- package/app/.next-cli-build/server/chunks/2380.js +21 -0
- package/app/.next-cli-build/server/chunks/241.js +1 -1
- package/app/.next-cli-build/server/chunks/2557.js +1 -1
- package/app/.next-cli-build/server/chunks/318.js +8 -9
- package/app/.next-cli-build/server/chunks/{5625.js → 3389.js} +1 -1
- package/app/.next-cli-build/server/chunks/3662.js +1 -1
- package/app/.next-cli-build/server/chunks/3771.js +1 -0
- package/app/.next-cli-build/server/chunks/3792.js +1 -1
- package/app/.next-cli-build/server/chunks/3943.js +1 -1
- package/app/.next-cli-build/server/chunks/3962.js +1 -1
- package/app/.next-cli-build/server/chunks/4123.js +1 -1
- package/app/.next-cli-build/server/chunks/4575.js +1 -1
- package/app/.next-cli-build/server/chunks/4689.js +1 -1
- package/app/.next-cli-build/server/chunks/4692.js +1 -1
- package/app/.next-cli-build/server/chunks/4775.js +1 -1
- package/app/.next-cli-build/server/chunks/4906.js +1 -1
- package/app/.next-cli-build/server/chunks/4927.js +3 -3
- package/app/.next-cli-build/server/chunks/5210.js +27 -28
- package/app/.next-cli-build/server/chunks/5225.js +1 -0
- package/app/.next-cli-build/server/chunks/532.js +56 -0
- package/app/.next-cli-build/server/chunks/539.js +1 -1
- package/app/.next-cli-build/server/chunks/5527.js +1 -1
- package/app/.next-cli-build/server/chunks/5598.js +1 -1
- package/app/.next-cli-build/server/chunks/5615.js +1 -1
- package/app/.next-cli-build/server/chunks/5663.js +1 -1
- package/app/.next-cli-build/server/chunks/5757.js +1 -1
- package/app/.next-cli-build/server/chunks/5781.js +2 -2
- package/app/.next-cli-build/server/chunks/5837.js +1 -0
- package/app/.next-cli-build/server/chunks/6070.js +1 -1
- package/app/.next-cli-build/server/chunks/6103.js +1 -1
- package/app/.next-cli-build/server/chunks/615.js +1 -1
- package/app/.next-cli-build/server/chunks/6212.js +1 -0
- package/app/.next-cli-build/server/chunks/6306.js +1 -1
- package/app/.next-cli-build/server/chunks/6326.js +1 -1
- package/app/.next-cli-build/server/chunks/6763.js +1 -1
- package/app/.next-cli-build/server/chunks/6790.js +1 -1
- package/app/.next-cli-build/server/chunks/6844.js +1 -1
- package/app/.next-cli-build/server/chunks/6922.js +1 -1
- package/app/.next-cli-build/server/chunks/6956.js +1 -1
- package/app/.next-cli-build/server/chunks/6960.js +1 -1
- package/app/.next-cli-build/server/chunks/7067.js +1 -1
- package/app/.next-cli-build/server/chunks/7122.js +1 -1
- package/app/.next-cli-build/server/chunks/7209.js +1 -0
- package/app/.next-cli-build/server/chunks/7247.js +1 -1
- package/app/.next-cli-build/server/chunks/7274.js +1 -1
- package/app/.next-cli-build/server/chunks/7729.js +1 -1
- package/app/.next-cli-build/server/chunks/8145.js +1 -1
- package/app/.next-cli-build/server/chunks/8172.js +2 -2
- package/app/.next-cli-build/server/chunks/8318.js +1 -1
- package/app/.next-cli-build/server/chunks/8370.js +7 -7
- package/app/.next-cli-build/server/chunks/8410.js +1 -1
- package/app/.next-cli-build/server/chunks/8439.js +1 -1
- package/app/.next-cli-build/server/chunks/8595.js +1 -1
- 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 +12 -12
- package/app/.next-cli-build/server/chunks/8920.js +1 -1
- package/app/.next-cli-build/server/chunks/8936.js +1 -0
- package/app/.next-cli-build/server/chunks/9154.js +1 -1
- package/app/.next-cli-build/server/chunks/9489.js +3 -3
- package/app/.next-cli-build/server/chunks/9536.js +1 -0
- package/app/.next-cli-build/server/chunks/9609.js +1 -1
- package/app/.next-cli-build/server/chunks/9628.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 +6 -6
- package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
- package/app/.next-cli-build/server/pages/404.html +2 -2
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
- package/app/.next-cli-build/static/chunks/1321-25956f9bfbc2e6da.js +1 -0
- package/app/.next-cli-build/static/chunks/5497-100281ed6ce1f83b.js +7 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-a2f5c1fa12df475b.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-f88e03168e9e8695.js +70 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-06a1bcff8b1400de.js +14 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-ae18cdfbbd2df1ec.js +1 -0
- package/app/.next-cli-build/static/chunks/app/_global-error/{page-fb1f157de1c4ca66.js → page-532e70b87e3cfbaa.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/login/{route-fb1f157de1c4ca66.js → route-532e70b87e3cfbaa.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/{route-fb1f157de1c4ca66.js → route-532e70b87e3cfbaa.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/{route-fb1f157de1c4ca66.js → route-532e70b87e3cfbaa.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/verify-password/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-profiles/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-profiles/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/devin-settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/external-quota/[source]/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/gateway-probe/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/init/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/rotate/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/locale/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/caps/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/custom/bulk/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/network/egress-region/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/checkin/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/claim-compensation/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/export/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/loomy/sms-login/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/loomy/sms-send/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/qoder/checkin/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/qoder-cn/checkin/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/transfer/export/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/transfer/import/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/api-key/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/desktop-kill/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/desktop-status/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/auto-import/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/import/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/security/status/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/database/import-usage/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tags/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/claude-reset/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/dashboard/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/quotas/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/rerank/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/systemone/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/shell-update/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/landing/page-ff4bd46662925378.js +1 -0
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/app/page-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-532e70b87e3cfbaa.js +1 -0
- package/app/.next-cli-build/static/css/{17275fac82e1641e.css → 63c4d9ca82aea954.css} +1 -1
- package/app/.next-cli-build/static/ilH6FH_DABFzbJ122SgT6/_buildManifest.js +1 -0
- package/app/package.json +71 -71
- package/app/public/i18n/changelog/en.md +569 -513
- package/app/public/i18n/changelog/zh-CN.md +566 -511
- package/app/public/i18n/changelog/zh-TW.md +568 -513
- package/app/public/i18n/literals/zh-CN.json +2139 -2107
- package/app/public/i18n/literals/zh-TW.json +11 -0
- package/app/public/providers/doubao.svg +14 -0
- package/app/public/providers/loomy.png +0 -0
- package/app/public/providers/nace.png +0 -0
- package/app/public/providers/oxion.png +0 -0
- package/app/public/providers/uc-web.png +0 -0
- package/app/public/providers/veoaifree-web.png +0 -0
- package/app/src/shared/utils/apiKey.js +17 -1
- package/package.json +61 -61
- package/app/.next-cli-build/server/chunks/2154.js +0 -1
- package/app/.next-cli-build/server/chunks/3267.js +0 -1
- package/app/.next-cli-build/server/chunks/3500.js +0 -56
- package/app/.next-cli-build/server/chunks/4386.js +0 -1
- package/app/.next-cli-build/server/chunks/6756.js +0 -1
- package/app/.next-cli-build/server/chunks/75.js +0 -1
- package/app/.next-cli-build/server/chunks/8499.js +0 -21
- package/app/.next-cli-build/static/1q0xTGDYtD52dGw4uiY4-/_buildManifest.js +0 -1
- package/app/.next-cli-build/static/chunks/1321-77ba328dd4d69fdb.js +0 -1
- package/app/.next-cli-build/static/chunks/5497-ec8a6308121a2b70.js +0 -7
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-8f6aadfc8bf2eb7b.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-6db03f8140121a40.js +0 -70
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-a6b07fa9d0712cee.js +0 -14
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-1e4e3f6f20152da1.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/verify-password/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-profiles/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-profiles/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/devin-settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/external-quota/[source]/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/gateway-probe/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/init/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/rotate/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/locale/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/caps/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/custom/bulk/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/network/egress-region/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/checkin/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/claim-compensation/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/export/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/qoder/checkin/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/qoder-cn/checkin/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/transfer/export/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/transfer/import/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/api-key/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/desktop-kill/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/desktop-status/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/auto-import/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/import/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/security/status/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/database/import-usage/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tags/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/claude-reset/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/dashboard/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/quotas/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/rerank/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/systemone/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/shell-update/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/landing/page-c6c3a32dd06bc907.js +0 -1
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/app/page-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-fb1f157de1c4ca66.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-fb1f157de1c4ca66.js +0 -1
- /package/app/.next-cli-build/static/{1q0xTGDYtD52dGw4uiY4- → ilH6FH_DABFzbJ122SgT6}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5497],{98:(e,t,n)=>{n.d(t,{default:()=>s});var a=n(95155),i=n(31474),r=n(73006);function s({label:e,options:t=[],value:n,onChange:o,placeholder:l="Select an option",error:d,hint:c,disabled:u=!1,required:m=!1,className:x,selectClassName:p,...h}){return(0,a.jsxs)("div",{className:(0,i.cn)("flex flex-col gap-1.5",x),children:[e&&(0,a.jsxs)("label",{className:"text-sm font-medium text-text-main",children:[e,m&&(0,a.jsx)("span",{className:"text-red-500 ml-1",children:"*"})]}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsxs)("select",{value:n,onChange:o,disabled:u,className:(0,i.cn)("w-full py-2.5 px-3 pr-10 text-sm text-text-main","bg-surface-2 border border-transparent rounded-[10px] appearance-none","focus:outline-none focus:ring-2 focus:ring-brand-500/30 focus:border-brand-500/40","transition-all duration-150 disabled:opacity-50 disabled:cursor-not-allowed","text-[16px] sm:text-sm",d&&"ring-1 ring-red-500 focus:ring-2 focus:ring-red-500/40 border-red-500/40",p),...h,children:[(0,a.jsx)("option",{value:"",disabled:!0,children:(0,r.Tl)(l)}),t.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))]}),(0,a.jsx)("div",{className:"absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none text-text-muted",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"expand_more"})})]}),d&&(0,a.jsxs)("p",{className:"text-xs text-red-500 flex items-center gap-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),d]}),c&&!d&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:c})]})}},929:(e,t,n)=>{n.d(t,{yU:()=>m});var a=n(12115),i=n(990);let r=null,s=null,o=null,l=null;function d(){return r?Promise.resolve(r):s||(s=fetch("/api/models").then(async e=>{if(!e.ok)throw Error(`models ${e.status}`);return r=function(e){let t={},n={};for(let a of e||[])a.caps&&(a.fullModel&&(t[a.fullModel]=a.caps),a.routedModel&&(t[a.routedModel]=a.caps),a.model&&(n[a.model]=a.caps));return{byFull:t,byId:n}}((await e.json()).models)}).catch(()=>({byFull:{},byId:{}})).finally(()=>{s=null}))}function c(){return o?Promise.resolve(o):l||(l=fetch("/api/models/caps").then(async e=>{if(!e.ok)throw Error(`caps ${e.status}`);let t=await e.json();return o=t.caps&&"object"==typeof t.caps?t.caps:{}}).catch(()=>({})).finally(()=>{l=null}))}function u(e,t,n,a){if(!a)return null;let r=a.includes("/")?a.slice(0,a.indexOf("/")):null,s=a.includes("/")?a.slice(a.indexOf("/")+1):a,o=e=>{let t=r?n[r]?.[s]:null;return t?{...e||{},...t.contextWindow?{contextWindow:t.contextWindow}:{},...t.maxOutput?{maxOutput:t.maxOutput}:{}}:e};if(e[a])return o(e[a]);if(t[s])return o(t[s]);let l=(0,i.nl)(r,s);return o({vision:l.vision,search:l.search,reasoning:l.reasoning,contextWindow:l.contextWindow,maxOutput:l.maxOutput})}function m(){let[e,t]=(0,a.useState)(()=>r?.byFull||{}),[n,i]=(0,a.useState)(()=>r?.byId||{}),[m,x]=(0,a.useState)(()=>o||{}),p=(0,a.useCallback)(()=>{r=null,s=null,o=null,l=null,Promise.all([d(),c()]).then(([e,n])=>{t(e.byFull),i(e.byId),x(n||{})})},[]);return(0,a.useEffect)(()=>{if(c().then(x),r){t(r.byFull),i(r.byId);return}let e=!0;return d().then(n=>{e&&(t(n.byFull),i(n.byId))}),()=>{e=!1}},[]),{getCaps:(0,a.useCallback)(t=>u(e,n,m,t),[e,n,m]),getBaseCaps:(0,a.useCallback)(t=>u(e,n,{},t),[e,n]),overrides:m,refresh:p}}},990:(e,t,n)=>{n.d(t,{Q5:()=>function e(t,n=null,a=null,i=0){if(!t?.length||i>6)return null;let r=t.map(t=>{if(!t.includes("/")&&n?.[t])return e(n[t],n,a,i+1)??a?.(t)??f(null,t);let r=t.indexOf("/"),s=f(-1===r?null:t.slice(0,r),-1===r?t:t.slice(r+1)),o=a?.(t);return o?{...s,...o}:s}),s=r[0];return{vision:r.some(e=>e.vision),pdf:r.some(e=>e.pdf),audioInput:r.some(e=>e.audioInput),videoInput:r.some(e=>e.videoInput),imageOutput:r.some(e=>e.imageOutput),audioOutput:r.some(e=>e.audioOutput),search:r.some(e=>e.search),tools:r.every(e=>e.tools),reasoning:s.reasoning,thinkingFormat:s.thinkingFormat,thinkingCanDisable:s.thinkingCanDisable,thinkingRange:s.thinkingRange,contextWindow:Math.min(...r.map(e=>e.contextWindow)),maxOutput:Math.max(...r.map(e=>e.maxOutput))}},nl:()=>f});var a=n(62630);let i={vision:!1,pdf:!1,audioInput:!1,videoInput:!1,imageOutput:!1,audioOutput:!1,search:!1,tools:!0,reasoning:!1,thinkingFormat:null,thinkingCanDisable:!0,thinkingRange:null,contextWindow:2e5,maxOutput:64e3},r={"claude-fable-5-1":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},"claude-opus-5":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-thinking":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-agentic":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-5":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingCanDisable:!1,forcedToolChoice:!1},"claude-opus-5-5-thinking":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingCanDisable:!1,forcedToolChoice:!1},"claude-opus-5-5-high":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingCanDisable:!1,forcedToolChoice:!1},"claude-opus-5-5-medium":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingCanDisable:!1,forcedToolChoice:!1},"claude-opus-5-5-low":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingCanDisable:!1,forcedToolChoice:!1},"claude-opus-5.5":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingCanDisable:!1,forcedToolChoice:!1},"claude-opus-5.5-thinking":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingCanDisable:!1,forcedToolChoice:!1},"claude-opus-5.5-agentic":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingCanDisable:!1,forcedToolChoice:!1},"claude-opus-5.5-thinking-agentic":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingCanDisable:!1,forcedToolChoice:!1},"claude-sonnet-5.5":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingOffType:"between_tools",forcedToolChoice:!1},"muse-spark-1.2-contributor-free":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"muse-spark-1.3-contributor-free":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"big-pickle":{reasoning:!0,thinkingFormat:"openai",contextWindow:262144,maxOutput:65536},"mimo-v2.5-free":{reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:65536},"ling-3.0-flash-fin-free":{reasoning:!0,thinkingFormat:"openai",contextWindow:131072,maxOutput:32768},"ling-3.1-flash-free":{reasoning:!0,thinkingFormat:"openai",contextWindow:262144,maxOutput:32768},"nemotron-3-ultra-free":{reasoning:!0,thinkingFormat:"openai",contextWindow:262144,maxOutput:65536},"nemotron-3.5-lightning-free":{reasoning:!0,thinkingFormat:"openai",contextWindow:262144,maxOutput:65536},"claude-opus-5-thinking-agentic":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.6":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.7":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-7":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.8":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-6":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-8":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.8-thinking":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-8-thinking":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.6-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-6-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4.6":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4-6":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-5":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingOffType:"between_tools",forcedToolChoice:!1},"claude-sonnet-5-5-thinking":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingOffType:"between_tools",forcedToolChoice:!1},"claude-sonnet-5-5-high":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingOffType:"between_tools",forcedToolChoice:!1},"claude-sonnet-5-5-medium":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingOffType:"between_tools",forcedToolChoice:!1},"claude-sonnet-5-5-low":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingOffType:"between_tools",forcedToolChoice:!1},"claude-sonnet-5-thinking":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-agentic":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-thinking-agentic":{pdf:!0,vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-haiku-5-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"gpt-image-1":{imageOutput:!0,tools:!1},"glm-4.6v":{vision:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:128e3},"GLM-4.6V-Flash":{vision:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:2e5},"glm-5.3-flash":{vision:!0,videoInput:!0,pdf:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:1e6,maxOutput:131072},"glm-5.3-flashx":{vision:!0,videoInput:!0,pdf:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:1e6,maxOutput:131072},"vision-model":{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6},"coder-model":{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6},"glm-5.3":{reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:131072},"glm-5.2":{reasoning:!0,thinkingFormat:"zai",contextWindow:1e6,maxOutput:131072},"glm-5.1":{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:131072},"glm-5":{reasoning:!0,thinkingFormat:"zai",contextWindow:204800,maxOutput:131072},"qwen3.8-max":{vision:!0,videoInput:!0,pdf:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:131072},"qwen3.8-flash":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:131072},"mimo-v2-pro":{contextWindow:1048576,maxOutput:131072},"mimo-v2.5-pro":{contextWindow:1048576,maxOutput:131072},"mimo-v2.6-pro":{vision:!0,audioInput:!0,videoInput:!0,contextWindow:1048576,maxOutput:131072},"mimo-v2.6-flash":{vision:!0,audioInput:!0,videoInput:!0,contextWindow:1048576,maxOutput:131072},"mimo-v2.6-flash-free":{vision:!0,audioInput:!0,videoInput:!0,contextWindow:1048576,maxOutput:131072},"mimo-v2.6-pro-ultraspeed":{vision:!0,audioInput:!0,videoInput:!0,contextWindow:1048576,maxOutput:131072},"mimo-v2.6-pro-claude":{vision:!0,audioInput:!0,videoInput:!0,contextWindow:1048576,maxOutput:131072},"mimo-v2-omni":{vision:!0,audioInput:!0,videoInput:!0,pdf:!0,contextWindow:262144,maxOutput:131072},hy3:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:256e3,maxOutput:128e3},"hy3-preview":{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:256e3,maxOutput:64e3},"step-5-preview":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"step",contextWindow:1e6},"step-3.7-flash":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"step",contextWindow:256e3},"step-3.5-flash":{reasoning:!0,thinkingFormat:"step",contextWindow:256e3},"step-3.5-flash-2603":{reasoning:!0,thinkingFormat:"step",contextWindow:256e3},"step-1o-turbo-vision":{vision:!0,contextWindow:32e3},"step-router-v1":{reasoning:!0,thinkingFormat:"step",contextWindow:256e3},"grok-4.5":{vision:!0,pdf:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:5e5},"grok-4.6":{vision:!0,pdf:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:5e5},"grok-4.7":{vision:!0,pdf:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:5e5},"gpt-5.6-luna":{vision:!0,pdf:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:105e4,maxOutput:128e3},"gpt-6-luna":{vision:!0,pdf:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:105e4,maxOutput:128e3},"kimi-k2.6":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",contextWindow:262144,maxOutput:262144},"kimi-k3":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072},k3:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072},"kimi-k3.1-pro":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072},"kimi-for-coding":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-for-coding-highspeed":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-k2.7-code":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-k2.7-code-highspeed":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"agnes-2.5-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:512e3,maxOutput:65536},"agnes-2.5-pro":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},"deepseek-v4-flash-vision-exp":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"deepseek-flash":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"deepseek-v4-1-flash":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"muse-spark-1.1":{vision:!0,videoInput:!0,pdf:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"muse-spark-1.2":{vision:!0,videoInput:!0,pdf:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"muse-spark-1.3":{vision:!0,videoInput:!0,pdf:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"muse-spark-1.2-contributor":{vision:!0,videoInput:!0,pdf:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"muse-spark-1.3-contributor":{vision:!0,videoInput:!0,pdf:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"fugu-ultra":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:131072},"hy4-preview":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:64e3},"gpt-audio":{audioInput:!0,audioOutput:!0,contextWindow:128e3,maxOutput:16384},"gpt-audio-mini":{audioInput:!0,audioOutput:!0,contextWindow:128e3,maxOutput:16384},"LongCat-2.0":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:131072},"LongCat-2.5-Preview":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:131072},"longcat-2.0":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:131072},"longcat-2.5-preview-free":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:131072},"space-bunny-free":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:524288},"space-bunny":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:524288},"MiniMax-M3.1-Flash":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:512e3},"MiniMax-M3.1-Flash-Preview":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:512e3},"minimax-m3.1-flash":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:512e3},"minimax-m3.1-flash-preview":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:512e3},"minimax-m3.1-flash:free":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:512e3},"MiniMax-M3":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:131072},"fledge-alpha-free":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"exo-free":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"sensenova-6.8-flash-lite":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:262144,maxOutput:65536},"venice-uncensored-1-2":{vision:!0,contextWindow:128e3,maxOutput:8192},"morph-v3-large":{tools:!1,contextWindow:32e3,maxOutput:32e3},"morph-v3-fast":{tools:!1,contextWindow:16e3,maxOutput:16e3}},s=(()=>{let e={};for(let[t,n]of Object.entries(r)){let a=t.toLowerCase();a in e||(e[a]=n)}return e})(),o={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},l={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:372e3,maxOutput:128e3},d={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},c={...d,contextWindow:872e3},u={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:128e3};function m(e,t){let n={...e};for(let[a,i]of Object.entries(t))n[a]=e[i];return n}let x={"Qwen3.8-Max":"qmodel_38max","Qwen3.7-Max":"qmodel_latest","Qwen3.7-Plus":"qmodel","Qwen3.8-Flash":"qfmodel","Kimi-K3":"kmodel_latest","Kimi-K2.7-Code":"kmodel","GLM-5.3":"gmodel","GLM-5.3-Flash":"gfmodel","DeepSeek-V4-Pro":"dmodel","DeepSeek-V4.1-Flash 1017":"dfmodel","MiniMax-M3":"mmodel"},p={...x,"Qwen3.7-Flash":"q37fmodel","GLM-5.2":"gm51model"},h={"kilo-gateway":{"kilo-auto/free":{vision:!1,reasoning:!0,thinkingFormat:"openai",contextWindow:256e3,maxOutput:32768},"kilo-auto/frontier":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"kilo-auto/balanced":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536}},antigravity:{"claude-opus-5-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingCanDisable:!1,forcedToolChoice:!1},"claude-opus-5-5-high":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingCanDisable:!1,forcedToolChoice:!1},"claude-opus-5-5-medium":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingCanDisable:!1,forcedToolChoice:!1},"claude-opus-5-5-low":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingCanDisable:!1,forcedToolChoice:!1},"claude-sonnet-5-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingOffType:"between_tools",forcedToolChoice:!1},"claude-sonnet-5-5-high":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingOffType:"between_tools",forcedToolChoice:!1},"claude-sonnet-5-5-medium":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingOffType:"between_tools",forcedToolChoice:!1},"claude-sonnet-5-5-low":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3,thinkingOffType:"between_tools",forcedToolChoice:!1},"gemini-4-argon-high":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:1048576},"gemini-4-argon-medium":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:1048576},"gemini-4-argon-low":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:1048576},"gemini-pro-agent":{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65535}},nvidia:{"minimaxai/minimax-m2.7":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:131072},"minimaxai/minimax-m3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:512e3,maxOutput:131072},"z-ai/glm-5.2":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:128e3},"deepseek-ai/deepseek-v4-pro":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536},"deepseek-ai/deepseek-v4-flash":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536}},amd:{"DeepSeek-V4-Flash":{reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:65536},"DeepSeek-V4-Flash-Vision-Exp":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:65536},"Qwen3.8-Flash-Next":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:262144,maxOutput:32768},"MiniCPM5-2B":{reasoning:!1,contextWindow:131072,maxOutput:32768}},atria:{"Atria-Dawn-Preview":{vision:!1,reasoning:!1}},github:{"claude-haiku-5.5":{vision:!0,pdf:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3}},tokenharbor:{"deepseek-v4.1-flash:free":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"qwen3.8-flash:free":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:131072},"mimo-v2.6-flash:free":{vision:!0,audioInput:!0,videoInput:!0,contextWindow:1048576,maxOutput:131072},"claude-haiku-5.5:free":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3}},loomy:{"qwen3.8-flash":{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:131072},"qwen-3.8-max":{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:131072},"DeepSeek-V4.1-Flash":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"deepseek-v4-flash-0731":{vision:!1,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"MiniMax-M3":{vision:!0,reasoning:!0,thinkingFormat:"minimax",contextWindow:1e6,maxOutput:131072},"Kimi-k2.6":{vision:!0,reasoning:!0,thinkingFormat:"kimi",contextWindow:262144,maxOutput:262144},"GLM-5.3-Flash":{vision:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:1e6,maxOutput:131072}},codex:{"gpt-6-astra":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},"gpt-6.1-sol":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},"gpt-6.1-terra":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:128e3},"gpt-6-sol":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},"gpt-6-luna":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},"gpt-6-astra[1m]":c,"gpt-6-sol[1m]":c,"gpt-6-luna[1m]":c,"gpt-5.6-sol[1m]":c,"gpt-5.6-terra[1m]":c,"gpt-5.6-luna[1m]":c,"gpt-5.6-sol":l,"gpt-5.6-sol-review":l,"gpt-5.6-terra":d,"gpt-5.6-terra-review":d,"gpt-5.6-luna":d,"gpt-5.6-luna-review":d,"gpt-daybreak-blue-latest":d,"gpt-reserve":d},kiro:{"gpt-5.6-sol":o,"gpt-5.6-terra":o,"gpt-5.6-luna":o,"gpt-5.6-sol-thinking":o,"gpt-5.6-terra-thinking":o,"gpt-5.6-luna-thinking":o,"gpt-5.6-sol-agentic":o,"gpt-5.6-terra-agentic":o,"gpt-5.6-luna-agentic":o,"gpt-5.6-sol-thinking-agentic":o,"gpt-5.6-terra-thinking-agentic":o,"gpt-5.6-luna-thinking-agentic":o},"devin-cli":{"gpt-5.4-high":u,"gpt-5.4-medium":u,"gpt-5.4-low":u,"gpt-5.5-xhigh":u,"gpt-5.5-high":u,"gpt-5.5-medium":u,"gpt-5.5-low":u},apinex:{"claude-fable-5.1":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"claude-opus-5":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"claude-opus-5.5":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5.5":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"deepseek-v4-flash":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536},"deepseek-v4-pro":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536},"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"gemini-3.1-pro":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"gemini-3.8-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"glm-5.3":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"glm-5.3-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"gpt-5.6-terra":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"gpt-6-astra":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"gpt-6-luna":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:105e4,maxOutput:128e3},"gpt-6.1-sol":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"grok-4.7":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:128e3},"kimi-k3":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536},"free/claude-opus-4.6":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"free/claude-sonnet-4.6":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"free/deepseek-v4-flash-0731":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536},"free/deepseek-v4-pro-0813":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536},"free/deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"free/gemini-3.1-pro":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"free/gemini-3.8-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"free/glm-5.3-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:128e3},"free/gpt-6-luna":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:105e4,maxOutput:128e3},"free/hy4":{reasoning:!0,thinkingFormat:"openai",contextWindow:256e3,maxOutput:65536},"free/kimi-k2.8":{reasoning:!0,thinkingFormat:"openai",contextWindow:256e3,maxOutput:65536},"free/kimi-k3":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536},"free/mimo-v2.6-flash":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536},"free/mimo-v2.6-pro":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536},"free/minimax-m3":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:512e3},"free/minimax-m3.1":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:512e3},"free/muse-spark-1.3":{reasoning:!0,thinkingFormat:"openai",contextWindow:256e3,maxOutput:65536},"free/qwen-3.8-max":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536}},"codebuddy-cn":{"glm-5.2":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:48e3},"glm-5.1":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:48e3},"glm-5v-turbo":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:64e3},"minimax-m3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:512e3,maxOutput:128e3},"kimi-k2.7":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},"kimi-k2.8-preview":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},"kimi-k2.6":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},hy3:{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:192e3,maxOutput:64e3},"hy4-preview":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:64e3},"space-bunny":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:64e3},"glm-5.3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:48e3},"glm-5.3-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:32e3},"glm-5.3-flashx":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:32e3},"kimi-k3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:32e3},"deepseek-v4-pro":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:384e3},"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:128e3}},"codebuddy-intl":{"space-bunny":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:64e3},"kimi-k2.8-preview":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3}},qoder:m({auto:{vision:!0,reasoning:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},ultimate:{vision:!0,reasoning:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},performance:{vision:!0,reasoning:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},efficient:{vision:!0,reasoning:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},dmodel:{vision:!0,reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},dfmodel:{vision:!0,reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},gmodel:{vision:!0,reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},gfmodel:{vision:!0,reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},kmodel_latest:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},kmodel:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:65536},mmodel:{vision:!0,reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:512e3},qmodel_latest:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qmodel:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qfmodel:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qmodel_38max:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536}},{...x,Auto:"auto",Ultimate:"ultimate",Performance:"performance",Efficient:"efficient"}),"qoder-cn":m({auto:{vision:!0,reasoning:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},dmodel:{vision:!0,reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},dfmodel:{vision:!0,reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},gmodel:{vision:!0,reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},gfmodel:{vision:!0,reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},gm51model:{reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:48e3},kmodel_latest:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},kmodel:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:65536},mmodel:{vision:!0,reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:512e3},qmodel_latest:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qmodel:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},q37fmodel:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qfmodel:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qmodel_38max:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536}},{...p,Auto:"auto"}),poolside:{"laguna-s-2.1":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:32e3},"laguna-xs-2.1":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},opencode:{"deepseek-v4.1-flash-free":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:33e4,maxOutput:128e3}}};h.cx=h.codex,h.dv=h["devin-cli"],h.devin=h["devin-cli"],h.kr=h.kiro,h.gh=h.github,h.ag=h.antigravity,h.cbcn=h["codebuddy-cn"],h.cbai=h["codebuddy-intl"],h.th=h.tokenharbor,h.thh=h.tokenharbor,h.ps=h.poolside,h["atria-asi"]=h.atria,h.qd=h.qoder,h.qdc=h["qoder-cn"],h.kgw=h["kilo-gateway"],h.kilogateway=h["kilo-gateway"],h.oc=h.opencode;let g=[{pattern:"*rerank*",caps:{tools:!1,vision:!1,reasoning:!1,search:!1,contextWindow:8192,maxOutput:0}},{pattern:"*claude*opus-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude*sonnet-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude*opus-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.8*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*haiku*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*opus*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*sonnet*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*fable*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude*mythos*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude-3*",caps:{vision:!0}},{pattern:"*claude*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*gemini*image*",caps:{vision:!0,imageOutput:!0,contextWindow:1048576}},{pattern:"*gemini-4*",caps:{vision:!0,pdf:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:1048576}},{pattern:"*gemini-3.8*",caps:{vision:!0,audioInput:!0,videoInput:!0,pdf:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-3.7*",caps:{vision:!0,audioInput:!0,videoInput:!0,pdf:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-3*pro*",caps:{vision:!0,audioInput:!0,videoInput:!0,pdf:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65535}},{pattern:"*gemini-3*",caps:{vision:!0,audioInput:!0,videoInput:!0,pdf:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2.5*",caps:{vision:!0,audioInput:!0,videoInput:!0,pdf:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-budget",thinkingRange:{min:0,max:24576},contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2*",caps:{vision:!0,audioInput:!0,videoInput:!0,search:!0,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini*",caps:{vision:!0,search:!0,contextWindow:1048576}},{pattern:"*gemma*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*nanobanana*",caps:{vision:!0,imageOutput:!0}},{pattern:"*gpt-6*image*",caps:{imageOutput:!0}},{pattern:"*gpt-6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:105e4,maxOutput:128e3}},{pattern:"*gpt-5*image*",caps:{imageOutput:!0}},{pattern:"*gpt-5*codex*",caps:{reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-5.4-mini*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-5.4-nano*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-5.4*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:105e4,maxOutput:128e3}},{pattern:"*gpt-5.5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:105e4,maxOutput:128e3}},{pattern:"*gpt-5.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:105e4,maxOutput:128e3}},{pattern:"*gpt-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-4o*",caps:{vision:!0,search:!0,contextWindow:128e3,maxOutput:16384}},{pattern:"*gpt-4.1*",caps:{vision:!0,contextWindow:1e6,maxOutput:32768}},{pattern:"*gpt-4-turbo*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*gpt-4*",caps:{contextWindow:128e3}},{pattern:"*gpt-3.5*",caps:{contextWindow:16385,maxOutput:4096}},{pattern:"*gpt-oss*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1-mini*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o4*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*grok*image*",caps:{imageOutput:!0}},{pattern:"*grok-code*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:5e5}},{pattern:"*grok-4.5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:64e3}},{pattern:"*grok-4*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-3*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:131072}},{pattern:"*grok*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*qwen*vl*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwen*omni*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144,maxOutput:65536}},{pattern:"*qwen*coder*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6}},{pattern:"*qwen*max*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.5*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.6*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.7*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*plus*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*235b*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwq*",caps:{reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:131072}},{pattern:"*qwen*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*kimi*k3*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072}},{pattern:"*kimi*for-coding*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536}},{pattern:"*kimi*k2.7*code*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536}},{pattern:"*kimi*k2*",caps:{vision:!0,reasoning:!0,thinkingFormat:"kimi",contextWindow:262144,maxOutput:262144}},{pattern:"*kimi*",caps:{reasoning:!0,thinkingFormat:"kimi",contextWindow:262144}},{pattern:"*glm-5.3*",caps:{reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3}},{pattern:"*glm-5.2*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:1e6,maxOutput:128e3}},{pattern:"*glm-5*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4.7*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*glm*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*deepseek-v4*",caps:{reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3}},{pattern:"*reasoner*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-r*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-chat*",caps:{contextWindow:128e3}},{pattern:"*deepseek*",caps:{reasoning:!0,thinkingFormat:"deepseek",contextWindow:128e3}},{pattern:"*minimax*image*",caps:{imageOutput:!0}},{pattern:"*minimax-m3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"minimax",contextWindow:1e6,maxOutput:131072}},{pattern:"*minimax-m2.7*",caps:{vision:!0,reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:204800,maxOutput:131072}},{pattern:"*minimax-m2.5*",caps:{vision:!0,reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:204800,maxOutput:131072}},{pattern:"*minimax*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:131072}},{pattern:"*mimo*preview*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072}},{pattern:"*mimo*v2.5*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072}},{pattern:"*mimo*omni*",caps:{vision:!0,audioInput:!0,reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:262144,maxOutput:131072}},{pattern:"*mimo*",caps:{vision:!0,reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:262144,maxOutput:131072}},{pattern:"*llama-4*",caps:{vision:!0,contextWindow:1e6}},{pattern:"*llama*",caps:{contextWindow:128e3}},{pattern:"*codestral*",caps:{contextWindow:256e3}},{pattern:"*mistral-large*",caps:{vision:!0,contextWindow:256e3}},{pattern:"*mistral*",caps:{contextWindow:128e3}},{pattern:"*command-a-vision*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*command*",caps:{contextWindow:128e3}},{pattern:"*sonar*",caps:{search:!0,contextWindow:128e3}},{pattern:"*pplx*",caps:{search:!0,contextWindow:128e3}},{pattern:"*perplexity*",caps:{search:!0,contextWindow:128e3}},{pattern:"*laguna-s-2.1*free*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},{pattern:"*laguna-s-2.1*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:32e3}},{pattern:"*laguna*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},{pattern:"*seed-2-0-pro*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:256e3,maxOutput:128e3}},{pattern:"*seed-2.0-pro*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:256e3,maxOutput:128e3}},{pattern:"*seed-2-0-code*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:262144,maxOutput:131072}},{pattern:"*seed-2.0-code*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:262144,maxOutput:131072}},{pattern:"*seed-2-0-mini*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:256e3,maxOutput:131072}},{pattern:"*seed-2.0-mini*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:256e3,maxOutput:131072}},{pattern:"*seed-2-0-lite*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:256e3,maxOutput:131072}},{pattern:"*seed-2.0-lite*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:256e3,maxOutput:131072}},{pattern:"*seed-code*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:256e3,maxOutput:32768}},{pattern:"*seed-2.1-pro*",caps:{reasoning:!0,contextWindow:936e3,maxOutput:64e3}},{pattern:"*seed-2.1-turbo*",caps:{reasoning:!0,contextWindow:224e3,maxOutput:32e3}},{pattern:"*seed-evolving*",caps:{reasoning:!0,contextWindow:936e3,maxOutput:64e3}},{pattern:"*hunyuan*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"hy3*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"*step-*",caps:{reasoning:!0,thinkingFormat:"step",contextWindow:128e3}},{pattern:"*ernie*",caps:{contextWindow:2e5,maxOutput:64e3}},{pattern:"*nemotron*",caps:{reasoning:!0,contextWindow:128e3}},{pattern:"*ling-*",caps:{reasoning:!0,contextWindow:128e3}}];function f(e,t){if(!t)return{...i};let n=t.includes("/")?t.split("/").pop():t;if(e){let a=h[e];if(a?.[t])return{...i,...a[t]};if(a?.[n])return{...i,...a[n]}}if(r[n])return{...i,...r[n]};if(r[t])return{...i,...r[t]};if(t.includes("/")){let e=s[n.toLowerCase()];if(e)return{...i,...e}}for(let{pattern:e,caps:r}of g)if((0,a.gH)(e,n)||(0,a.gH)(e,t))return{...i,...r};return{...i}}},1620:(e,t,n)=>{n.d(t,{D:()=>l});var a=n(12115),i=n(90085);function r(e){let t=window.matchMedia("(prefers-color-scheme: dark)");return t.addEventListener("change",e),()=>t.removeEventListener("change",e)}function s(){return window.matchMedia("(prefers-color-scheme: dark)").matches}function o(){return!1}function l(){let{theme:e,setTheme:t,toggleTheme:n,initTheme:l}=(0,i.A)(),d=(0,a.useSyncExternalStore)(r,s,o);(0,a.useEffect)(()=>{l()},[l]),(0,a.useEffect)(()=>{if("system"!==e)return;let t=window.matchMedia("(prefers-color-scheme: dark)"),n=()=>l();return t.addEventListener("change",n),()=>t.removeEventListener("change",n)},[e,l]);let c="dark"===e||"system"===e&&d;return{theme:e,setTheme:t,toggleTheme:n,isDark:c}}},3744:(e,t,n)=>{n.d(t,{default:()=>z});var a=n(95155),i=n(12115),r=n(73321),s=n(98500),o=n.n(s),l=n(14051),d=n.n(l),c=n(67852),u=n(80752),m=n(93308),x=n(38202),p=n(21931);function h(){let[e,t]=(0,i.useState)(!1),[n,r]=(0,i.useState)("en");return(0,i.useEffect)(()=>{r(function(){if("u"<typeof document)return"en";let e=document.cookie.split(";").find(e=>e.trim().startsWith(`${m.CL}=`)),t=e?decodeURIComponent(e.split("=")[1]):"en";return(0,m.QC)(t)}())},[e]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("button",{onClick:()=>t(!0),className:"flex items-center justify-center p-2 rounded-lg text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5 transition-all",title:"Language","data-i18n-skip":"true",children:(0,a.jsx)("span",{className:"text-lg leading-none",children:x.h[n]||"\uD83C\uDF10"})}),(0,a.jsx)(p.default,{hideTrigger:!0,isOpen:e,onClose:e=>{t(!1),r(e)}})]})}var g=n(38587),f=n(47650),b=n(90620),v=n(73006);let k=`https://github.com/login?return_to=${encodeURIComponent(b.Nu.repoUrl)}`;function y({isOpen:e,onClose:t}){let[n,r]=(0,i.useState)(null),[s,o]=(0,i.useState)(!1),[l,d]=(0,i.useState)(""),c=(0,i.useRef)(null);return((0,i.useEffect)(()=>{e&&!n&&(o(!0),d(""),fetch(b.Nu.donateUrl,{cache:"no-store"}).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return e.json()}).then(e=>r(e)).catch(e=>d(e.message||"Failed to load")).finally(()=>o(!1)))},[e,n]),(0,i.useEffect)(()=>{let n=e=>{c.current&&!c.current.contains(e.target)&&t()};if(e)return document.addEventListener("mousedown",n),()=>document.removeEventListener("mousedown",n)},[e,t]),!e||"u"<typeof document)?null:(0,f.createPortal)((0,a.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-black/30 backdrop-blur-sm",onClick:t}),(0,a.jsxs)("div",{ref:c,className:"relative w-full bg-surface border border-black/10 dark:border-white/10 rounded-xl shadow-2xl animate-in fade-in zoom-in-95 duration-200 max-w-3xl flex flex-col max-h-[85vh]",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between p-3 border-b border-black/5 dark:border-white/5",children:[(0,a.jsxs)("h2",{className:"text-lg font-semibold text-text-main flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-pink-500",children:"volunteer_activism"}),(0,v.Tl)(n?.title||"Support 10Router")]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)("a",{href:k,target:"_blank",rel:"noopener noreferrer",title:"Star 10Router on GitHub (signs you in first if needed)",className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-sm font-medium text-white bg-brand-500 hover:bg-brand-600 transition-colors",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"star"}),(0,a.jsx)("span",{children:"Star"})]}),(0,a.jsx)("button",{onClick:t,className:"p-1.5 rounded-lg text-text-muted hover:bg-black/5 dark:hover:bg-white/5 transition-colors","aria-label":"Close",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"close"})})]})]}),(0,a.jsxs)("div",{className:"p-6 overflow-y-auto flex-1",children:[s&&(0,a.jsxs)("div",{className:"flex items-center justify-center py-10 text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin mr-2",children:"progress_activity"}),"Loading..."]}),l&&(0,a.jsxs)("div",{className:"text-red-500 py-4",children:["Failed to load donate info: ",l]}),!s&&!l&&n&&(0,a.jsxs)(a.Fragment,{children:[n.message&&(0,a.jsx)("p",{className:"text-text-muted text-sm mb-6 text-center",children:(0,v.Tl)(n.message)}),(0,a.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:n.channels?.map(e=>(0,a.jsx)(w,{channel:e},e.id))})]})]})]})]}),document.body)}function w({channel:e}){let{label:t,description:n,icon:r,color:s,url:o,qr:l}=e,[d,c]=(0,i.useState)(!1),u=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"w-12 h-12 rounded-full flex items-center justify-center mb-3",style:{backgroundColor:`${s}20`,color:s},children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[26px]",children:r})}),(0,a.jsx)("div",{className:"font-semibold text-text-main mb-1",children:(0,v.Tl)(t)}),n&&(0,a.jsx)("div",{className:"text-xs text-text-muted mb-3 text-center",children:(0,v.Tl)(n)}),l&&!d&&(0,a.jsx)("img",{src:l,alt:`${t} QR`,className:"w-full max-w-[180px] aspect-square object-contain rounded-lg bg-white p-1",loading:"lazy",decoding:"async",onError:()=>c(!0)}),l&&d&&(/^https?:\/\//.test(l)?(0,a.jsx)("a",{href:l,target:"_blank",rel:"noopener noreferrer",className:"flex w-full max-w-[180px] aspect-square items-center justify-center rounded-lg border border-dashed border-black/15 dark:border-white/15 px-2 text-center text-xs text-text-muted hover:text-text-main",children:(0,v.Tl)("QR code unavailable — open image")}):(0,a.jsx)("div",{className:"flex w-full max-w-[180px] aspect-square items-center justify-center rounded-lg border border-dashed border-black/15 dark:border-white/15 px-2 text-center text-xs text-text-muted",children:(0,v.Tl)("QR code unavailable right now")}))]});return(0,a.jsxs)("div",{className:"flex flex-col items-center p-4 rounded-xl border border-black/10 dark:border-white/10 bg-surface/50 hover:border-pink-500/40 transition-colors",children:[u,o&&!l&&(0,a.jsxs)("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"mt-5 inline-flex items-center gap-1 px-3 py-1.5 rounded-lg text-sm font-medium text-white hover:opacity-90 transition-opacity",style:{backgroundColor:s},children:[(0,v.Tl)("Open"),(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"open_in_new"})]})]})}y.propTypes={isOpen:d().bool.isRequired,onClose:d().func.isRequired};var j=n(81127),N=n(92542),C=n(31474);let O="10r.announcements.cache",S="10r.announcements.seen",F="10r-announcements-changed";function W(e,t){try{let n=window.localStorage.getItem(e);return n?JSON.parse(n):t}catch{return t}}function T(e,t){try{window.localStorage.setItem(e,JSON.stringify(t))}catch{}}function I(){let e=W(S,[]);return Array.isArray(e)?e:[]}function $(e){return(Array.isArray(e?.items)?e.items:[]).filter(e=>e&&"string"==typeof e.id&&"string"==typeof e.title).map(e=>({id:e.id,title:e.title,titleEn:"string"==typeof e.titleEn?e.titleEn:"",body:"string"==typeof e.body?e.body:"",bodyEn:"string"==typeof e.bodyEn?e.bodyEn:"",date:"string"==typeof e.date?e.date:"",level:["feature","promo","info","warning","critical"].includes(e.level)?e.level:"info",link:"string"==typeof e.link&&/^https?:\/\//.test(e.link)?e.link:""})).filter(e=>{let t=Date.parse(e.date);return!t||Date.now()-t<=7776e6}).sort((e,t)=>{let n={critical:0,warning:1,promo:2,feature:3,info:4},a=n[e.level]??3,i=n[t.level]??3;return a!==i?a-i:(t.date||"").localeCompare(e.date||"")})}function A(){let e=$(W(O,null)),t=new Set(I());return e.filter(e=>!t.has(e.id)).length}function D({isOpen:e,onClose:t}){let[n,r]=(0,i.useState)([]),[s,o]=(0,i.useState)(!1),[l,d]=(0,i.useState)(""),[c,u]=(0,i.useState)(!1);(0,i.useEffect)(()=>{if(!e)return;let t=!1;return o(!0),d(""),u(!1),(async()=>{let e=[b.Nu.announcementsUrl,b.Nu.announcementsUrlFallback].filter(Boolean);for(let n of e)try{let e=await fetch(n,{cache:"no-store"});if(!e.ok)throw Error(`HTTP ${e.status}`);let a=$(await e.json());if(t)return;T(O,a),r(a);return}catch(a){if(n===e[e.length-1]){let e=$(W(O,null));if(t)return;e.length?(r(e),u(!0)):d(a?.message||"Failed to load")}}})().finally(()=>{t||o(!1)}),()=>{t=!0}},[e]),(0,i.useEffect)(()=>{e&&!s&&0!==n.length&&function(e){if(e.length){T(S,Array.from(new Set([...I(),...e])));try{window.dispatchEvent(new Event(F))}catch{}}}(n.map(e=>e.id))},[e,s,n]);let m=(0,i.useMemo)(()=>s&&0===n.length?(0,a.jsxs)("div",{className:"flex items-center justify-center py-10 text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin mr-2",children:"progress_activity"}),(0,v.Tl)("Loading...")]}):l&&0===n.length?(0,a.jsxs)("p",{className:"py-6 text-center text-sm text-text-muted",children:[(0,v.Tl)("Could not load announcements"),": ",l]}):0===n.length?(0,a.jsx)("p",{className:"py-6 text-center text-sm text-text-muted",children:(0,v.Tl)("No announcements right now")}):(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-2 lg:grid-cols-2",children:[c&&(0,a.jsx)("p",{className:"rounded-lg bg-amber-500/10 px-3 py-2 text-xs text-amber-600 dark:text-amber-400",children:(0,v.Tl)("Showing the last cached copy — the live feed is unreachable right now.")}),n.map(e=>(0,a.jsxs)("article",{className:(0,C.cn)("rounded-lg border p-2.5","critical"===e.level?"border-red-500/30 bg-red-500/5":"warning"===e.level?"border-amber-500/30 bg-amber-500/5":"promo"===e.level?"border-green-500/40 bg-green-500/5":"feature"===e.level?"border-blue-500/40 bg-blue-500/5":"border-black/10 dark:border-white/10 bg-surface/50"),children:[(0,a.jsxs)("div",{className:"mb-1 flex items-start justify-between gap-2",children:[(0,a.jsx)("h3",{className:"text-[13px] font-semibold leading-5 text-text-main",children:"en"===(0,v.kk)()&&e.titleEn?e.titleEn:e.title}),e.date&&(0,a.jsx)("time",{className:"shrink-0 text-[10px] text-text-muted",children:e.date})]}),e.body&&(0,a.jsx)("p",{className:"whitespace-pre-line text-xs leading-relaxed text-text-muted",children:"en"===(0,v.kk)()&&e.bodyEn?e.bodyEn:e.body}),e.link&&(0,a.jsxs)("a",{href:e.link,target:"_blank",rel:"noopener noreferrer",className:"mt-1.5 inline-flex items-center gap-1 text-[11px] font-medium text-primary hover:underline",children:[(0,v.Tl)("Learn more"),(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"open_in_new"})]})]},e.id))]}),[s,n,l,c]);return(0,a.jsx)(j.default,{isOpen:e,onClose:t,title:(0,v.Tl)("Announcements"),size:"full",footer:(0,a.jsx)(N.default,{size:"sm",variant:"secondary",onClick:t,children:(0,v.Tl)("Close")}),children:(0,a.jsx)("div",{className:"pr-1",children:m})})}var P=n(38003),_=n(88105),E=n(8247);function z({onMenuClick:e,onDesktopMenuClick:t,showMenuButton:n=!0,sidebarCollapsed:s=!1}){let l=(0,r.usePathname)(),[d,m]=(0,i.useState)(""),[x,p]=(0,i.useState)(""),[f,k]=(0,i.useState)(!1),[w,j]=(0,i.useState)(!1),N=function(){let[e,t]=(0,i.useState)(A);return(0,i.useEffect)(()=>{let e=()=>t(A());return window.addEventListener(F,e),window.addEventListener("storage",e),()=>{window.removeEventListener(F,e),window.removeEventListener("storage",e)}},[]),e}(),{title:C,description:O,icon:S,breadcrumbs:W}=(0,i.useMemo)(()=>(e=>{if(!e)return{title:"",description:"",breadcrumbs:[]};let t=e.match(/\/media-providers\/([^/]+)\/([^/]+)$/);if(t){let e=t[1],n=t[2],a=_.rj.find(t=>t.id===e),i=_.Q2[n];return{title:i?.name||n,description:"",breadcrumbs:[{label:"Media Providers",href:`/dashboard/media-providers/${e}`},{label:a?.label||e,href:`/dashboard/media-providers/${e}`},{label:i?.name||n,image:(0,E.HY)(n)}]}}let n=e.match(/\/media-providers\/([^/]+)$/);if(n){let e=n[1],t=_.rj.find(t=>t.id===e);return{title:t?.label||e,description:`Manage your ${t?.label||e} providers`,icon:t?.icon||"perm_media",breadcrumbs:[]}}let a=e.match(/\/providers\/([^/]+)$/);if(a){let e=a[1],t=b.zN[e]||b.fg[e];if(t)return{title:t.name,description:"",breadcrumbs:[{label:"Providers",href:"/dashboard/providers"},{label:t.name,image:(0,E.HY)(t.id)}]}}return e.includes("/providers")&&!e.includes("/media-providers")?{title:"Providers",description:"Manage your AI provider connections",icon:"dns",breadcrumbs:[]}:e.includes("/combos")?{title:"Combos",description:"Model combos with fallback",icon:"layers",breadcrumbs:[]}:e.includes("/usage")?{title:"Usage & Analytics",description:"Monitor your API usage, token consumption, and request logs",icon:"bar_chart",breadcrumbs:[]}:e.includes("/auth-files")?{title:"Auth Files",description:"Map provider credentials stored in the local database",icon:"vpn_key",breadcrumbs:[]}:e.includes("/quota")?{title:"Quota Tracker",description:"Track and manage your API quota limits",icon:"data_usage",breadcrumbs:[]}:e.includes("/mitm")?{title:"MITM Proxy",description:"Intercept CLI tool traffic and route through 10Router",icon:"security",breadcrumbs:[]}:e.includes("/token-saver")?{title:"Token Saver",description:"Compress prompts and outputs to save tokens",icon:"savings",breadcrumbs:[]}:e.includes("/cli-tools")?{title:"CLI Tools",description:"Configure CLI tools",icon:"terminal",breadcrumbs:[]}:e.includes("/proxy-pools")?{title:"Proxy Pools",description:"Manage your proxy pool configurations",icon:"lan",breadcrumbs:[]}:e.includes("/skills")?{title:"Agent Skills",description:"Copy a link and paste to your AI to use 10Router — no install needed",icon:"extension",breadcrumbs:[]}:e.includes("/endpoint")?{title:"Endpoint",description:"API endpoint configuration",icon:"api",breadcrumbs:[]}:e.includes("/profile")?{title:"Settings",description:"Manage your preferences",icon:"settings",breadcrumbs:[]}:e.includes("/translator")?{title:"Translator",description:"Debug translation flow between formats",icon:"translate",breadcrumbs:[]}:e.includes("/console-log")?{title:"Console Log",description:"Live server console output",icon:"monitor",breadcrumbs:[]}:e.includes("/experimental")?{title:"Experimental",description:"Beta toggles for provider tools, daily check-ins, and dashboard security",icon:"science",breadcrumbs:[]}:"/dashboard"===e?{title:"Endpoint",description:"API endpoint configuration",icon:"api",breadcrumbs:[]}:{title:"",description:"",breadcrumbs:[]}})(l),[l]);(0,i.useEffect)(()=>{let e=!1;return async function(){try{let t=await fetch("/api/auth/status",{cache:"no-store"});if(!t.ok)return;let n=await t.json();e||(m(n?.displayName||n?.samlName||n?.samlEmail||n?.oidcName||n?.oidcEmail||""),p(n?.loginMethod||""))}catch{e||(m(""),p(""))}}(),()=>{e=!0}},[]);let T=async()=>{try{(await fetch("/api/auth/logout",{method:"POST"})).ok&&window.location.assign("/login")}catch(e){console.error("Failed to logout:",e)}};return(0,a.jsxs)("header",{className:"shrink-0 flex items-center justify-between gap-3 px-4 lg:px-8 pt-3 pb-2 border-b border-border-subtle bg-surface/60 backdrop-blur-xl lg:bg-transparent lg:backdrop-blur-none z-20",children:[(0,a.jsx)("div",{className:"flex items-center gap-3 lg:hidden shrink-0",children:n&&(0,a.jsx)("button",{onClick:e,className:"text-text-main hover:text-primary transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined",children:"menu"})})}),t&&(0,a.jsx)("button",{onClick:t,className:"hidden lg:flex items-center justify-center p-2 shrink-0 text-text-main hover:text-primary transition-colors rounded-lg",title:s?(0,v.Tl)("Expand sidebar"):(0,v.Tl)("Collapse sidebar"),"aria-label":s?(0,v.Tl)("Expand sidebar"):(0,v.Tl)("Collapse sidebar"),"aria-expanded":!s,children:(0,a.jsx)("span",{className:`material-symbols-outlined transition-transform duration-200 ${s?"-scale-x-100":""}`,children:"menu_open"})}),(0,a.jsx)("div",{className:"flex flex-col min-w-0 flex-1",children:W.length>0?(0,a.jsx)("div",{className:"flex items-center gap-2",children:W.map((e,t)=>(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[t>0&&(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-base",children:"chevron_right"}),e.href?(0,a.jsx)(o(),{href:e.href,className:"text-text-muted hover:text-primary transition-colors",children:e.label}):(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[e.image&&(0,a.jsx)(c.A,{src:e.image,alt:e.label,size:28,className:"object-contain rounded max-w-[28px] max-h-[28px]",fallbackText:e.label.slice(0,2).toUpperCase()}),(0,a.jsx)("h1",{className:"text-base lg:text-2xl font-semibold text-text-main tracking-tight truncate",children:(0,v.Tl)(e.label)})]})]},`${e.label}-${e.href||"current"}`))}):C?(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[S&&(0,a.jsx)("span",{className:"material-symbols-outlined text-primary text-xl lg:text-2xl",children:S}),(0,a.jsx)("h1",{className:"text-base lg:text-2xl font-semibold tracking-tight truncate",children:(0,v.Tl)(C)})]}),O&&(0,a.jsx)("p",{className:"hidden lg:block text-sm text-text-muted truncate",children:(0,v.Tl)(O)})]}):null}),(0,a.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[d&&("OIDC"===x||"SAML"===x)&&(0,a.jsxs)("div",{className:"hidden sm:flex items-center max-w-[220px] px-3 py-1.5 rounded-full border border-border bg-surface/70 text-xs text-text-muted truncate",title:d,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1.5 text-primary",children:"person"}),(0,a.jsx)("span",{className:"truncate",children:d}),(0,a.jsx)("span",{className:"ml-2 shrink-0 rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-primary",children:x})]}),(0,a.jsx)(M,{}),(0,a.jsxs)("button",{onClick:()=>j(!0),className:"relative flex items-center gap-1.5 px-3 h-8 rounded-lg border border-black/10 dark:border-white/10 text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5 transition-colors text-sm font-medium","aria-label":(0,v.Tl)("Announcements"),title:(0,v.Tl)("Announcements"),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"campaign"}),(0,a.jsx)("span",{className:"hidden sm:inline",children:(0,v.Tl)("Announcements")}),N>0&&(0,a.jsx)("span",{className:"absolute -top-1 -right-1 min-w-[16px] h-4 px-1 rounded-full bg-red-500 text-white text-[10px] font-semibold leading-4 text-center",children:N>9?"9+":N})]}),(0,a.jsxs)("button",{onClick:()=>k(!0),className:"flex items-center gap-1.5 px-3 h-8 rounded-lg border border-pink-500/30 bg-pink-500/10 text-pink-600 dark:text-pink-400 hover:bg-pink-500/20 transition-colors text-sm font-medium","aria-label":"Donate",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"volunteer_activism"}),(0,a.jsx)("span",{className:"hidden sm:inline",children:"Donate"})]}),(0,a.jsx)(g.default,{}),(0,a.jsx)(h,{}),(0,a.jsx)(u.default,{onLogout:T})]}),(0,a.jsx)(y,{isOpen:f,onClose:()=>k(!1)}),(0,a.jsx)(D,{isOpen:w,onClose:()=>j(!1)})]})}function M(){let e=(0,P.C)(e=>e.visible),t=(0,P.C)(e=>e.query),n=(0,P.C)(e=>e.placeholder),i=(0,P.C)(e=>e.setQuery);return e?(0,a.jsxs)("div",{className:"relative w-[160px] sm:w-[220px]",children:[(0,a.jsx)("span",{className:"material-symbols-outlined absolute left-2 top-1/2 -translate-y-1/2 text-text-muted text-[16px] pointer-events-none",children:"search"}),(0,a.jsx)("input",{type:"text",value:t,onChange:e=>i(e.target.value),placeholder:n,className:"w-full h-8 pl-7 pr-7 rounded-lg border border-border bg-surface/60 text-sm focus:outline-none focus:border-primary/50 transition-colors"}),t&&(0,a.jsx)("button",{type:"button",onClick:()=>i(""),className:"absolute right-1 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-main p-0.5 rounded","aria-label":"Clear search",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"close"})})]}):null}z.propTypes={onMenuClick:d().func,onDesktopMenuClick:d().func,sidebarCollapsed:d().bool,showMenuButton:d().bool}},4823:(e,t,n)=>{n.d(t,{default:()=>p});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(84588),l=n(98),d=n(56061),c=n(73006);let u="__none__",m=[{value:"none",label:"None (single pool)"},{value:"round-robin",label:"Round-robin"},{value:"random",label:"Random"}],x={"zcode-free":{pathKey:"zcodeGatewayPath",defaultPath:"/gateway/zcode/v1/messages"},"minimax-free":{pathKey:"minimaxGatewayPath",defaultPath:"/gateway/minimax/v1/messages"},"trae-free":{pathKey:"traeGatewayPath",defaultPath:"/gateway/trae/v1/messages"}};function p({providerId:e}){let[t,n]=(0,i.useState)([]),[r,s]=(0,i.useState)(u),[h,g]=(0,i.useState)("none"),[f,b]=(0,i.useState)(!1),[v,k]=(0,i.useState)(!1),[y,w]=(0,i.useState)(""),[j,N]=(0,i.useState)(""),[C,O]=(0,i.useState)(""),[S,F]=(0,i.useState)({state:"idle"});(0,i.useEffect)(()=>{let t=!1;return Promise.all([fetch("/api/proxy-pools?isActive=true",{cache:"no-store"}).then(e=>e.ok?e.json():{proxyPools:[]}),fetch("/api/settings",{cache:"no-store"}).then(e=>e.ok?e.json():{})]).then(([a,i])=>{if(t)return;n(a.proxyPools||[]);let r=(i.providerStrategies||{})[e]||{};if(s(r.proxyPoolId||u),g(r.rotateStrategy||"none"),w(x[e]&&i.zcodeGatewayHost||""),N(x[e]&&i.zcodeGatewayPort||""),O(x[e]?i[x[e].pathKey]||x[e].defaultPath:""),x[e]){let e=encodeURIComponent(i.zcodeGatewayHost?.trim()||"127.0.0.1"),n=encodeURIComponent(i.zcodeGatewayPort?.trim()||"47860");F({state:"probing"}),fetch(`/api/gateway-probe?host=${e}&port=${n}`,{cache:"no-store"}).then(e=>e.ok?e.json():{reachable:!1}).then(e=>{t||F({state:e.reachable?"online":"offline"})}).catch(()=>{t||F({state:"offline"})})}}).catch(()=>{}),()=>{t=!0}},[e]);let W=(0,i.useCallback)(async(t,n)=>{b(!0);try{let a=await fetch("/api/settings",{cache:"no-store"}),i=(a.ok?await a.json():{}).providerStrategies||{},r={...i[e]||{}};t===u?delete r.proxyPoolId:r.proxyPoolId=t,"none"===n?delete r.rotateStrategy:r.rotateStrategy=n;let s={...i};0===Object.keys(r).length?delete s[e]:s[e]=r,await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerStrategies:s})}),k(!0),setTimeout(()=>k(!1),1500)}catch(e){console.log("Save proxy config error:",e)}finally{b(!1)}},[e]),T=(0,i.useCallback)(async()=>{if(x[e]){F({state:"probing"});try{let e=encodeURIComponent(y.trim()||"127.0.0.1"),t=encodeURIComponent(j.trim()||"47860"),n=await fetch(`/api/gateway-probe?host=${e}&port=${t}`,{cache:"no-store"}),a=n.ok?await n.json():{reachable:!1};F({state:a.reachable?"online":"offline"})}catch{F({state:"offline"})}}},[e,y,j]),I=(0,i.useCallback)(async(t,n,a)=>{b(!0);try{let i=await fetch("/api/settings",{cache:"no-store"});i.ok&&await i.json();let r={zcodeGatewayHost:String(t||"").trim(),zcodeGatewayPort:String(n||"").trim(),[x[e]?.pathKey||"zcodeGatewayPath"]:String(a||"").trim()};await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)}),k(!0),setTimeout(()=>k(!1),1500),T()}catch(e){console.log("Save gateway host error:",e)}finally{b(!1)}},[e,T]),$=t.length>=2,A="none"!==h;return(0,a.jsxs)(o.default,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,a.jsx)("div",{className:"inline-flex items-center justify-center w-10 h-10 rounded-full bg-green-500/10 text-green-500",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"lock_open"})}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("p",{className:"text-sm font-medium",children:"No authentication required"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"This provider is ready to use. Optionally route requests through a proxy pool to bypass IP-based limits."})]}),v&&(0,a.jsx)(d.default,{variant:"success",size:"sm",children:"Saved"})]}),(0,a.jsx)(l.default,{label:"Proxy Pool",value:r,onChange:e=>{var t;s(t=e.target.value),W(t,h)},disabled:f||A,options:[{value:u,label:"None (direct)"},...t.map(e=>({value:e.id,label:e.name}))],hint:A?"Pool selector is ignored when rotation is active — all active pools are used.":void 0}),(0,a.jsxs)("div",{className:"flex flex-col gap-2 mt-4",children:[(0,a.jsx)("label",{className:"text-sm font-medium text-text-main",children:"Rotation Strategy"}),(0,a.jsx)("select",{value:h,onChange:e=>{var t;g(t=e.target.value),W(r,t)},disabled:f,className:"py-2 px-3 text-sm text-text-main bg-white dark:bg-white/5 border border-black/10 dark:border-white/10 rounded-md focus:ring-1 focus:ring-primary/30 focus:border-primary/50 focus:outline-none transition-all disabled:opacity-50",children:m.map(e=>(0,a.jsx)("option",{value:e.value,disabled:"none"!==e.value&&!$,children:e.label},e.value))}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:$?A?"round-robin"===h?`Rotating through all ${t.length} active pools in order. State is in-memory (resets on restart).`:`Picking a random pool from ${t.length} active pools each request.`:"Uses the selected pool above. Set to Round-robin or Random to rotate across all active pools.":"Need at least 2 active proxy pools for rotation."})]}),x[e]&&(0,a.jsxs)("div",{className:"flex flex-col gap-2 mt-4 pt-4 border-t border-black/5 dark:border-white/5",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsx)("label",{className:"text-sm font-medium text-text-main",children:(0,c.Tl)("CreditDaddy gateway host")}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:["probing"===S.state&&(0,a.jsxs)("span",{className:"flex items-center gap-1 text-[11px] text-text-muted",children:[(0,a.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full bg-gray-400 animate-pulse"}),(0,c.Tl)("Probing gateway...")]}),"online"===S.state&&(0,a.jsxs)("span",{className:"flex items-center gap-1 text-[11px] text-green-600 dark:text-green-400",children:[(0,a.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full bg-green-500"}),(0,c.Tl)("Gateway reachable")]}),"offline"===S.state&&(0,a.jsxs)("span",{className:"flex items-center gap-1 text-[11px] text-amber-600 dark:text-amber-400",children:[(0,a.jsx)("span",{className:"inline-block w-1.5 h-1.5 rounded-full bg-amber-500"}),(0,c.Tl)("Gateway unreachable")]}),(0,a.jsx)("button",{type:"button",onClick:T,disabled:f,className:"text-[11px] text-text-muted hover:text-primary transition-colors",children:(0,c.Tl)("Re-probe")})]})]}),"offline"===S.state&&(0,a.jsxs)("div",{className:"rounded-md bg-amber-500/10 border border-amber-500/20 px-2.5 py-2 text-xs text-amber-700 dark:text-amber-300",children:[(0,c.Tl)("Gateway unreachable — install/launch CreditDaddy and enable the gateway, then re-probe here.")," ",(0,a.jsx)("a",{href:"https://github.com/techysy/CreditDaddy/releases/latest",target:"_blank",rel:"noreferrer",className:"underline font-medium",children:(0,c.Tl)("Download CreditDaddy")})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("input",{value:y,onChange:e=>w(e.target.value),placeholder:(0,c.Tl)("Empty = this machine (127.0.0.1); LAN = CreditDaddy host IP"),className:"flex-1 py-2 px-3 text-sm text-text-main bg-white dark:bg-white/5 border border-black/10 dark:border-white/10 rounded-md focus:ring-1 focus:ring-primary/30 focus:border-primary/50 focus:outline-none transition-all"}),(0,a.jsx)("input",{value:j,onChange:e=>N(e.target.value),placeholder:"47860",className:"w-24 py-2 px-3 text-sm text-text-main bg-white dark:bg-white/5 border border-black/10 dark:border-white/10 rounded-md focus:ring-1 focus:ring-primary/30 focus:border-primary/50 focus:outline-none transition-all"}),(0,a.jsx)("input",{value:C,onChange:e=>O(e.target.value),placeholder:x[e].defaultPath,className:"w-56 py-2 px-3 text-sm text-text-main bg-white dark:bg-white/5 border border-black/10 dark:border-white/10 rounded-md focus:ring-1 focus:ring-primary/30 focus:border-primary/50 focus:outline-none transition-all"}),(0,a.jsx)("button",{onClick:()=>I(y,j,C),disabled:f,className:"px-3 py-2 text-sm rounded-md bg-primary text-white disabled:opacity-50",children:(0,c.Tl)("Save")})]}),(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["trae-free"===e?(0,c.Tl)('Local: enable the gateway switch under "Trae → Interface settings" in CreditDaddy desktop and add a Trae (SOLO) account (default 127.0.0.1:47860).'):"minimax-free"===e?(0,c.Tl)('Local: enable the gateway switch under "MiniMax → Interface settings" in CreditDaddy desktop and add a MiniMax account (default 127.0.0.1:47860).'):(0,c.Tl)('Local: enable the gateway switch under "ZCode → Interface settings" in CreditDaddy desktop (default 127.0.0.1:47860).')," ",(0,c.Tl)('LAN (NAS, etc.): put the CreditDaddy machine IP above, then in the same CreditDaddy panel turn on "Allow LAN access" and add this 10Router machine\'s IP to the allowlist, then restart CreditDaddy.')," ",(0,c.Tl)("The gateway is protected by an IP allowlist and checks no key, so there is nothing to enter here.")," ",(0,c.Tl)("Getting a 404? The path must keep its brand segment (e.g. /gateway/zcode/v1/messages) — CreditDaddy serves only the branded endpoints, and a build older than the rename still serves the old /gateway/v1/messages, so upgrade CreditDaddy rather than editing this field.")]})]})]})}p.propTypes={providerId:s().string.isRequired}},7648:(e,t,n)=>{n.d(t,{default:()=>c});var a=n(95155),i=n(12115),r=n(73321),s=n(65921),o=n(92622),l=n(3744),d=n(32486);function c({children:e}){let[t,u]=(0,i.useState)(!1),[m,x]=(0,i.useState)(!1);(0,i.useEffect)(()=>{x("1"===window.localStorage.getItem("sidebarCollapsed"))},[]);let p=(0,r.usePathname)(),h=(0,s.i)(e=>e.notifications),g=(0,s.i)(e=>e.removeNotification);return(0,i.useEffect)(()=>{let e=()=>{n.e(6808).then(n.bind(n,6808)).catch(()=>{}),Promise.all([n.e(3842),n.e(839),n.e(124)]).then(n.bind(n,10124)).catch(()=>{})};if("requestIdleCallback"in window){let t=window.requestIdleCallback(e,{timeout:4e3});return()=>window.cancelIdleCallback(t)}let t=setTimeout(e,2500);return()=>clearTimeout(t)},[]),(0,a.jsxs)("div",{className:"flex h-screen w-full overflow-hidden bg-bg",children:[(0,a.jsx)("div",{className:"fixed top-[5%] left-1/2 z-[80] flex w-[min(92vw,380px)] -translate-x-1/2 flex-col gap-2",children:h.map(e=>{var t;let n="success"===(t=e.type)?{wrapper:"border-green-500/30 bg-green-500/10 text-green-600 dark:text-green-400",icon:"check_circle"}:"error"===t?{wrapper:"border-red-500/30 bg-red-500/10 text-red-600 dark:text-red-400",icon:"error"}:"warning"===t?{wrapper:"border-amber-500/30 bg-amber-500/10 text-amber-600 dark:text-amber-400",icon:"warning"}:{wrapper:"border-blue-500/30 bg-blue-500/10 text-blue-600 dark:text-blue-400",icon:"info"};return(0,a.jsx)("div",{className:`rounded-lg border px-3 py-2 shadow-lg backdrop-blur-sm ${n.wrapper}`,children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] leading-5 flex-shrink-0",children:n.icon}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[e.title?(0,a.jsx)("p",{className:"text-xs font-semibold mb-0.5",children:e.title}):null,(0,a.jsx)("p",{className:"text-xs whitespace-pre-wrap break-words",children:e.message})]}),e.dismissible?(0,a.jsx)("button",{type:"button",onClick:()=>g(e.id),className:"text-current/70 hover:text-current","aria-label":"Dismiss notification",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"close"})}):null]})},e.id)})}),t&&(0,a.jsx)("div",{className:"fixed inset-0 z-40 bg-black/20 lg:hidden",onClick:()=>u(!1)}),(0,a.jsx)("div",{className:`${m?"hidden":"hidden lg:flex"}`,children:(0,a.jsx)(o.default,{})}),(0,a.jsx)("div",{className:`fixed inset-y-0 left-0 z-50 transform lg:hidden transition-transform duration-300 ease-in-out ${t?"translate-x-0":"-translate-x-full"}`,children:(0,a.jsx)(o.default,{onClose:()=>u(!1)})}),(0,a.jsxs)("main",{className:"flex flex-col flex-1 h-full min-w-0 relative transition-colors duration-300 isolate",children:[(0,a.jsx)("div",{className:"landing-grid absolute inset-0 pointer-events-none -z-10","aria-hidden":"true"}),(0,a.jsx)(l.default,{onMenuClick:()=>u(!0),onDesktopMenuClick:()=>{let e=!m;window.localStorage.setItem("sidebarCollapsed",e?"1":"0"),x(e)},sidebarCollapsed:m},p),(0,a.jsx)(d.default,{}),(0,a.jsx)("div",{className:`flex-1 overflow-y-auto custom-scrollbar ${"/dashboard/basic-chat"===p?"":"p-6 lg:p-10"} ${"/dashboard/basic-chat"===p?"flex flex-col overflow-hidden":""}`,children:(0,a.jsx)("div",{className:`${"/dashboard/basic-chat"===p?"flex-1 w-full h-full flex flex-col":"max-w-7xl mx-auto"}`,children:e})})]})]})}},8247:(e,t,n)=>{n.d(t,{HY:()=>o,Kw:()=>l});let a={"perplexity-agent":"perplexity","gitlab-duo":"gitlab","vercel-ai-gateway":"vercel","b.ai":"bai","b-ai":"bai","siliconflow-cn":"siliconflow","longcat-intl":"longcat","stepfun-cn":"stepfun","stepfun-plan":"stepfun","stepfun-plan-cn":"stepfun","step-cn":"stepfun","stepp-cn":"stepfun",stepp:"stepfun",step:"stepfun","sfp-cn":"stepfun",sfp:"stepfun",sfpcn:"stepfun","sf-cn":"stepfun",sfcn:"stepfun",sf:"stepfun","step-plan-cn":"stepfun","step-plan":"stepfun","alitp-intl":"alitp-intl","alims-intl":"alitp-intl","alicode-intl":"alitp-intl","alitp-cn":"alitp",alims:"alitp",alicode:"alitp","deepseek-web":"deepseek","muse-web":"muse","gemini-web":"gemini","chatgpt-web":"openai"},i={bai:".svg",doubao:".svg"},r=new Set;function s(e){return e&&"string"==typeof e?e.trim().toLowerCase():""}function o(e){let t=function(e){let t=s(e);if(!t||r.has(t))return"";let n=a[t]||t;return r.has(n)?"":n}(e);return t?`/providers/${t}${i[t]||".png"}`:null}function l(e){let t=s(e);t&&r.add(t);let n=a[t];n&&r.add(n)}},11059:(e,t,n)=>{n.d(t,{C:()=>r});var a=n(12115),i=n(65635);function r(e=2e3){let[t,n]=(0,a.useState)(null),s=(0,a.useRef)(null);return{copied:t,copy:(0,a.useCallback)((t,a="default")=>{(0,i.e)(t),n(a),s.current&&clearTimeout(s.current),s.current=setTimeout(()=>{n(null)},e)},[e])}}},11910:(e,t,n)=>{n.d(t,{default:()=>o});var a=n(95155),i=n(12115),r=n(31474),s=n(73006);function o({label:e,type:t="text",placeholder:n,value:l,onChange:d,error:c,hint:u,icon:m,disabled:x=!1,required:p=!1,reveal:h=!1,className:g,inputClassName:f,...b}){let[v,k]=(0,i.useState)(!1),y=h&&"password"===t;return(0,a.jsxs)("div",{className:(0,r.cn)("flex flex-col gap-1.5",g),children:[e&&(0,a.jsxs)("label",{className:"text-sm font-medium text-text-main",children:[e,p&&(0,a.jsx)("span",{className:"text-red-500 ml-1",children:"*"})]}),(0,a.jsxs)("div",{className:"relative",children:[m&&(0,a.jsx)("div",{className:"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none text-text-muted",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:m})}),(0,a.jsx)("input",{type:y&&v?"text":t,placeholder:n,value:l,onChange:d,disabled:x,className:(0,r.cn)("w-full py-2.5 px-3 text-sm text-text-main bg-surface-2 rounded-[10px]","border border-transparent placeholder-text-muted/70","focus:outline-none focus:ring-2 focus:ring-brand-500/30 focus:border-brand-500/40","transition-all duration-150 ease-out disabled:opacity-50 disabled:cursor-not-allowed","text-[16px] sm:text-sm",m&&"pl-10",y&&"pr-11",c&&"ring-1 ring-red-500 focus:ring-2 focus:ring-red-500/40 border-red-500/40",f),...b}),y&&(0,a.jsx)("button",{type:"button",tabIndex:-1,"aria-label":v?(0,s.Tl)("Hide password"):(0,s.Tl)("Show password"),onClick:()=>k(e=>!e),className:"absolute inset-y-0 right-0 flex items-center pr-3 text-text-muted hover:text-text-main transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:v?"visibility_off":"visibility"})})]}),c&&(0,a.jsxs)("p",{className:"text-xs text-red-500 flex items-center gap-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),c]}),u&&!c&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:u})]})}},21931:(e,t,n)=>{n.d(t,{default:()=>d});var a=n(95155),i=n(12115),r=n(47650),s=n(93308),o=n(73006);let l=e=>({en:{name:"English",flag:"\uD83C\uDDFA\uD83C\uDDF8"},vi:{name:"Tiếng Việt",flag:"\uD83C\uDDFB\uD83C\uDDF3"},"zh-CN":{name:"简体中文",flag:"\uD83C\uDDE8\uD83C\uDDF3"},"zh-TW":{name:"繁體中文",flag:"\uD83C\uDDF9\uD83C\uDDFC"},ja:{name:"日本語",flag:"\uD83C\uDDEF\uD83C\uDDF5"},"pt-BR":{name:"Portugu\xeas (Brasil)",flag:"\uD83C\uDDE7\uD83C\uDDF7"},"pt-PT":{name:"Portugu\xeas (Portugal)",flag:"\uD83C\uDDF5\uD83C\uDDF9"},ko:{name:"한국어",flag:"\uD83C\uDDF0\uD83C\uDDF7"},es:{name:"Espa\xf1ol",flag:"\uD83C\uDDEA\uD83C\uDDF8"},de:{name:"Deutsch",flag:"\uD83C\uDDE9\uD83C\uDDEA"},fr:{name:"Fran\xe7ais",flag:"\uD83C\uDDEB\uD83C\uDDF7"},he:{name:"עברית",flag:"\uD83C\uDDEE\uD83C\uDDF1"},ar:{name:"العربية",flag:"\uD83C\uDDF8\uD83C\uDDE6"},ru:{name:"Русский",flag:"\uD83C\uDDF7\uD83C\uDDFA"},pl:{name:"Polski",flag:"\uD83C\uDDF5\uD83C\uDDF1"},cs:{name:"Čeština",flag:"\uD83C\uDDE8\uD83C\uDDFF"},nl:{name:"Nederlands",flag:"\uD83C\uDDF3\uD83C\uDDF1"},tr:{name:"T\xfcrk\xe7e",flag:"\uD83C\uDDF9\uD83C\uDDF7"},uk:{name:"Українська",flag:"\uD83C\uDDFA\uD83C\uDDE6"},tl:{name:"Tagalog",flag:"\uD83C\uDDF5\uD83C\uDDED"},id:{name:"Indonesia",flag:"\uD83C\uDDEE\uD83C\uDDE9"},th:{name:"ไทย",flag:"\uD83C\uDDF9\uD83C\uDDED"},km:{name:"ខ្មែរ",flag:"\uD83C\uDDF0\uD83C\uDDED"},hi:{name:"हिन्दी",flag:"\uD83C\uDDEE\uD83C\uDDF3"},bn:{name:"বাংলা",flag:"\uD83C\uDDE7\uD83C\uDDE9"},ur:{name:"اردو",flag:"\uD83C\uDDF5\uD83C\uDDF0"},ro:{name:"Rom\xe2nă",flag:"\uD83C\uDDF7\uD83C\uDDF4"},sv:{name:"Svenska",flag:"\uD83C\uDDF8\uD83C\uDDEA"},it:{name:"Italiano",flag:"\uD83C\uDDEE\uD83C\uDDF9"},el:{name:"Ελληνικά",flag:"\uD83C\uDDEC\uD83C\uDDF7"},hu:{name:"Magyar",flag:"\uD83C\uDDED\uD83C\uDDFA"},fi:{name:"Suomi",flag:"\uD83C\uDDEB\uD83C\uDDEE"},da:{name:"Dansk",flag:"\uD83C\uDDE9\uD83C\uDDF0"},no:{name:"Norsk",flag:"\uD83C\uDDF3\uD83C\uDDF4"},fa:{name:"فارسی",flag:"\uD83C\uDDEE\uD83C\uDDF7"}})[e]||{name:e,flag:"\uD83C\uDF10"};function d({className:e="",isOpen:t,onClose:n,hideTrigger:c=!1}){let[u,m]=(0,i.useState)("en"),[x,p]=(0,i.useState)(!1),[h,g]=(0,i.useState)(!1),f=(0,i.useRef)(null),b="boolean"==typeof t,v=b?t:h,k=(e,t=u)=>{b?!e&&n&&n(t):g(e)};(0,i.useEffect)(()=>{m(function(){if("u"<typeof document)return"en";let e=document.cookie.split(";").find(e=>e.trim().startsWith(`${s.CL}=`)),t=e?decodeURIComponent(e.split("=")[1]):"en";return(0,s.QC)(t)}())},[]),(0,i.useEffect)(()=>{function e(e){f.current&&!f.current.contains(e.target)&&k(!1)}if(v)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[v]);let y=async e=>{if(e!==u&&!x){p(!0);try{await fetch("/api/locale",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({locale:e})}),await (0,o.wn)(),m(e),k(!1,e)}catch(e){console.error("Failed to set locale:",e)}finally{p(!1)}}};return(0,a.jsxs)("div",{className:e,children:[!c&&(0,a.jsxs)("button",{onClick:()=>k(!v),disabled:x,className:"flex items-center gap-2 px-3 py-2 rounded-lg text-text-muted hover:text-text-main hover:bg-surface/60 transition-colors",title:"Language","data-i18n-skip":"true",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"language"}),(0,a.jsx)("span",{className:"text-sm font-medium",children:l(u).name}),(0,a.jsx)("span",{className:"text-lg",children:l(u).flag})]}),v&&(0,r.createPortal)((0,a.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4","data-i18n-skip":"true",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-black/30 backdrop-blur-sm",onClick:()=>k(!1)}),(0,a.jsxs)("div",{ref:f,className:"relative w-full bg-surface border border-black/10 dark:border-white/10 rounded-xl shadow-2xl animate-in fade-in zoom-in-95 duration-200 max-w-2xl flex flex-col max-h-[80vh]",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between p-3 border-b border-black/5 dark:border-white/5",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:"Select Language"}),(0,a.jsx)("button",{onClick:()=>k(!1),className:"p-1.5 rounded-lg text-text-muted hover:bg-black/5 dark:hover:bg-white/5 transition-colors","aria-label":"Close",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"close"})})]}),(0,a.jsx)("div",{className:"p-6 overflow-y-auto flex-1",children:(0,a.jsx)("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(100px,1fr))] gap-2",children:s.YZ.map(e=>{let t=u===e,n=l(e);return(0,a.jsxs)("button",{onClick:()=>y(e),disabled:x,className:`flex flex-col items-center justify-start gap-1 px-2 py-3 rounded-lg text-xs font-medium transition-colors w-full ${t?"bg-primary/15 text-primary ring-2 ring-primary":"text-text-main hover:bg-black/5 dark:hover:bg-white/5"} ${x?"opacity-70 cursor-wait":""}`,title:n.name,children:[(0,a.jsx)("span",{className:"text-2xl",children:n.flag}),(0,a.jsx)("span",{className:"text-center leading-tight line-clamp-2 h-8 flex items-center",children:n.name}),t&&(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"check"})]},e)})})})]})]}),document.body)]})}},23615:(e,t,n)=>{n.d(t,{default:()=>s});var a=n(95155),i=n(12115),r=n(84588);function s(){let[e,t]=(0,i.useState)([]),[n,s]=(0,i.useState)(!0),[o,l]=(0,i.useState)(!0);(0,i.useEffect)(()=>{d()},[]),(0,i.useEffect)(()=>{let e;return o&&(e=setInterval(()=>{d(!1)},500)),()=>clearInterval(e)},[o]);let d=async(e=!0)=>{e&&s(!0);try{let e=await fetch("/api/usage/logs");if(e.ok){let n=await e.json();t(n)}}catch(e){console.error("Failed to fetch logs:",e)}finally{e&&s(!1)}};return(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("h2",{className:"text-xl font-semibold",children:"Request Logs"}),(0,a.jsx)("div",{className:"flex items-center gap-2",children:(0,a.jsxs)("label",{className:"text-sm font-medium text-text-muted flex items-center gap-2 cursor-pointer",children:[(0,a.jsx)("span",{children:"Auto Refresh (500ms)"}),(0,a.jsx)("div",{onClick:()=>l(!o),className:`relative inline-flex h-5 w-9 items-center rounded-full transition-colors focus:outline-none ${o?"bg-primary":"bg-bg-alt border border-border"}`,children:(0,a.jsx)("span",{className:`inline-block h-3 w-3 transform rounded-full bg-white transition-transform ${o?"translate-x-5":"translate-x-1"}`})})]})})]}),(0,a.jsx)(r.default,{className:"overflow-hidden bg-black/5 dark:bg-black/20",children:(0,a.jsx)("div",{className:"p-0 overflow-x-auto max-h-[600px] overflow-y-auto font-mono text-xs",children:n&&0===e.length?(0,a.jsx)("div",{className:"p-8 text-center text-text-muted",children:"Loading logs..."}):0===e.length?(0,a.jsx)("div",{className:"p-8 text-center text-text-muted",children:"No logs recorded yet."}):(0,a.jsxs)("table",{className:"w-full text-left border-collapse whitespace-nowrap",children:[(0,a.jsx)("thead",{className:"sticky top-0 bg-bg-alt border-b border-border z-10",children:(0,a.jsxs)("tr",{children:[(0,a.jsx)("th",{className:"px-3 py-2 border-r border-border",children:"DateTime"}),(0,a.jsx)("th",{className:"px-3 py-2 border-r border-border",children:"Model"}),(0,a.jsx)("th",{className:"px-3 py-2 border-r border-border",children:"Provider"}),(0,a.jsx)("th",{className:"px-3 py-2 border-r border-border",children:"Account"}),(0,a.jsx)("th",{className:"px-3 py-2 border-r border-border",children:"In"}),(0,a.jsx)("th",{className:"px-3 py-2 border-r border-border",children:"Out"}),(0,a.jsx)("th",{className:"px-3 py-2",children:"Status"})]})}),(0,a.jsx)("tbody",{className:"divide-y divide-border/50",children:e.map((e,t)=>{let n=e.split(" | ");if(n.length<7)return null;let i=n[6],r=i.includes("PENDING"),s=i.includes("FAILED"),o=i.includes("OK");return(0,a.jsxs)("tr",{className:`hover:bg-primary/5 transition-colors ${r?"bg-primary/5":""}`,children:[(0,a.jsx)("td",{className:"px-3 py-1.5 border-r border-border text-text-muted",children:n[0]}),(0,a.jsx)("td",{className:"px-3 py-1.5 border-r border-border font-medium",children:n[1]}),(0,a.jsx)("td",{className:"px-3 py-1.5 border-r border-border",children:(0,a.jsx)("span",{className:"px-1.5 py-0.5 rounded bg-bg-alt border border-border text-[10px] uppercase font-bold",children:n[2]})}),(0,a.jsx)("td",{className:"px-3 py-1.5 border-r border-border truncate max-w-[150px]",title:n[3],children:n[3]}),(0,a.jsx)("td",{className:"px-3 py-1.5 border-r border-border text-right text-primary",children:n[4]}),(0,a.jsx)("td",{className:"px-3 py-1.5 border-r border-border text-right text-success",children:n[5]}),(0,a.jsx)("td",{className:`px-3 py-1.5 font-bold ${o?"text-success":s?"text-danger":"text-primary animate-pulse"}`,children:i})]},t)})})]})})}),(0,a.jsx)("div",{className:"text-[10px] text-text-muted italic",children:"Logs are saved to log.txt in the application data directory."})]})}},23936:(e,t,n)=>{n.d(t,{default:()=>l});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(35497);function l({isOpen:e,onSuccess:t,onClose:n}){let[r,s]=(0,i.useState)(""),[d,c]=(0,i.useState)(!1),[u,m]=(0,i.useState)(null),[x,p]=(0,i.useState)(!1),h=async()=>{if(!r.trim())return void m("Please paste your cookie");c(!0),m(null);try{let e=await fetch("/api/oauth/iflow/cookie",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cookie:r.trim()})}),n=await e.json();if(!e.ok)throw Error(n.error||"Authentication failed");p(!0),setTimeout(()=>{t?.(),g()},1500)}catch(e){m(e.message)}finally{c(!1)}},g=()=>{s(""),m(null),p(!1),n?.()};return(0,a.jsx)(o.aF,{isOpen:e,onClose:g,title:"iFlow Cookie Authentication",children:(0,a.jsx)("div",{className:"space-y-4",children:x?(0,a.jsxs)("div",{className:"text-center py-8",children:[(0,a.jsx)("div",{className:"text-6xl mb-4",children:"✅"}),(0,a.jsx)("p",{className:"text-lg font-medium text-text",children:"Authentication Successful!"}),(0,a.jsx)("p",{className:"text-sm text-text-muted mt-2",children:"Fresh API key obtained"})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("p",{className:"text-sm text-text-muted",children:["To get a fresh API key, paste your browser cookie from"," ",(0,a.jsx)("a",{href:"https://platform.iflow.cn",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:"platform.iflow.cn"})]}),(0,a.jsxs)("div",{className:"bg-surface-2 p-3 rounded-lg text-xs space-y-2",children:[(0,a.jsx)("p",{className:"font-medium text-text",children:"How to get cookie:"}),(0,a.jsxs)("ol",{className:"list-decimal list-inside space-y-1 text-text-muted",children:[(0,a.jsx)("li",{children:"Open platform.iflow.cn in your browser"}),(0,a.jsx)("li",{children:"Login to your account"}),(0,a.jsx)("li",{children:"Open DevTools (F12) → Application/Storage → Cookies"}),(0,a.jsx)("li",{children:"Copy the entire cookie string (must include BXAuth)"}),(0,a.jsx)("li",{children:"Paste it below"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-text",children:"Cookie String"}),(0,a.jsx)("textarea",{value:r,onChange:e=>s(e.target.value),placeholder:"BXAuth=xxx; ...",className:"w-full px-3 py-2 bg-surface-2 border border-border rounded-lg text-sm text-text placeholder-text-muted focus:outline-none focus:ring-2 focus:ring-primary resize-none",rows:4,disabled:d})]}),u&&(0,a.jsx)("div",{className:"p-3 bg-danger/10 border border-danger/20 rounded-lg",children:(0,a.jsx)("p",{className:"text-sm text-danger",children:u})}),(0,a.jsxs)("div",{className:"flex gap-3 pt-2",children:[(0,a.jsx)(o.$n,{variant:"secondary",onClick:g,disabled:d,fullWidth:!0,children:"Cancel"}),(0,a.jsx)(o.$n,{onClick:h,loading:d,fullWidth:!0,children:"Authenticate"})]})]})})})}l.propTypes={isOpen:s().bool.isRequired,onSuccess:s().func,onClose:s().func}},25086:(e,t,n)=>{n.d(t,{CardSkeleton:()=>l,PageLoading:()=>s,Skeleton:()=>o,Spinner:()=>r,default:()=>d});var a=n(95155),i=n(31474);function r({size:e="md",className:t}){return(0,a.jsx)("span",{className:(0,i.cn)("material-symbols-outlined animate-spin text-brand-500",{sm:"size-4",md:"size-6",lg:"size-8",xl:"size-12"}[e],t),children:"progress_activity"})}function s({message:e="Loading..."}){return(0,a.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg",children:[(0,a.jsx)(r,{size:"xl"}),(0,a.jsx)("p",{className:"mt-4 text-text-muted",children:e})]})}function o({className:e,...t}){return(0,a.jsx)("div",{className:(0,i.cn)("animate-pulse rounded-[10px] bg-surface-2",e),...t})}function l(){return(0,a.jsxs)("div",{className:"p-6 rounded-[14px] border border-border-subtle bg-surface shadow-[var(--shadow-soft)]",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,a.jsx)(o,{className:"h-4 w-24"}),(0,a.jsx)(o,{className:"size-10 rounded-[10px]"})]}),(0,a.jsx)(o,{className:"h-8 w-16 mb-2"}),(0,a.jsx)(o,{className:"h-3 w-20"})]})}function d({type:e="spinner",...t}){switch(e){case"page":return(0,a.jsx)(s,{...t});case"skeleton":return(0,a.jsx)(o,{...t});case"card":return(0,a.jsx)(l,{...t});default:return(0,a.jsx)(r,{...t})}}},28058:(e,t,n)=>{n.d(t,{default:()=>s});var a=n(95155),i=n(12115),r=n(81127);function s({isOpen:e,onClose:t,onAdd:n,addedNames:o=[]}){let[l,d]=(0,i.useState)([]),[c,u]=(0,i.useState)(!1),[m,x]=(0,i.useState)(""),[p,h]=(0,i.useState)("all"),[g,f]=(0,i.useState)(null),[b,v]=(0,i.useState)(null),[k,y]=(0,i.useState)({}),[w,j]=(0,i.useState)({}),[N,C]=(0,i.useState)({});(0,i.useEffect)(()=>{!e||l.length>0||(u(!0),fetch("/api/cli-tools/cowork-mcp-registry").then(e=>e.json()).then(e=>{e.error?f(e.error):d(e.servers||[])}).catch(e=>f(e.message)).finally(()=>u(!1)))},[e]);let O=(0,i.useMemo)(()=>new Set(o),[o]),S=(0,i.useMemo)(()=>{let e=m.trim().toLowerCase();return l.filter(t=>("authless"!==p||!t.oauth)&&("oauth"!==p||!!t.oauth)&&(!e||(t.title||"").toLowerCase().includes(e)||(t.description||"").toLowerCase().includes(e)||(t.name||"").toLowerCase().includes(e)))},[l,m,p]),F=async e=>{if(!k[e.url]){j(t=>({...t,[e.url]:!0}));try{let t=await fetch("/api/cli-tools/cowork-mcp-tools",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:e.url})}),n=await t.json(),a=n.tools||[],i=Array.isArray(e.toolNames)?e.toolNames:[],r=a.length>0?a.map(e=>e.name):i;y(t=>({...t,[e.url]:{tools:a,requiresAuth:!!n.requiresAuth,error:n.error}})),C(t=>({...t,[e.url]:Object.fromEntries(r.map(e=>[e,!0]))}))}catch(t){y(n=>({...n,[e.url]:{tools:[],error:t.message}}))}finally{j(t=>({...t,[e.url]:!1}))}}},W=(e,t)=>{let n=N[e]||{};C(a=>({...a,[e]:Object.fromEntries(Object.keys(n).map(e=>[e,t]))}))};return(0,a.jsx)(r.default,{isOpen:e,onClose:t,title:"Browse MCP Marketplace",size:"lg",children:(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("input",{type:"text",value:m,onChange:e=>x(e.target.value),placeholder:"Search by name or description...",className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,a.jsxs)("select",{value:p,onChange:e=>h(e.target.value),className:"px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:[(0,a.jsx)("option",{value:"all",children:"All"}),(0,a.jsx)("option",{value:"authless",children:"Authless"}),(0,a.jsx)("option",{value:"oauth",children:"OAuth"})]})]}),g&&(0,a.jsx)("div",{className:"px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600",children:g}),c&&(0,a.jsxs)("div",{className:"flex items-center gap-2 text-text-muted text-xs py-4 justify-center",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin text-[18px]",children:"progress_activity"}),(0,a.jsx)("span",{children:"Loading registry..."})]}),!c&&(0,a.jsxs)("div",{className:"flex flex-col gap-1 max-h-[60vh] overflow-y-auto",children:[0===S.length&&(0,a.jsx)("div",{className:"text-center text-xs text-text-muted py-6",children:"No servers match filter"}),S.map(e=>{let t=O.has(e.slug||e.name),i=b===e.url,r=k[e.url],s=w[e.url],o=N[e.url]||{},l=Object.keys(o),d=Object.values(o).filter(Boolean).length;return(0,a.jsxs)("div",{className:"rounded border border-transparent hover:border-border",children:[(0,a.jsxs)("div",{className:"flex items-start gap-2 px-2 py-2 hover:bg-black/5 dark:hover:bg-white/5",children:[e.iconUrl?(0,a.jsx)("img",{src:e.iconUrl,alt:"",className:"size-7 rounded shrink-0 object-contain",onError:e=>{e.target.style.display="none"},loading:"lazy",decoding:"async"}):(0,a.jsx)("div",{className:"size-7 rounded bg-surface shrink-0"}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 flex-wrap",children:[(0,a.jsx)("span",{className:"font-medium text-xs",children:e.title}),e.oauth?(0,a.jsx)("span",{className:"px-1 py-0.5 text-[9px] rounded bg-amber-500/10 text-amber-600",children:"OAuth"}):(0,a.jsx)("span",{className:"px-1 py-0.5 text-[9px] rounded bg-green-500/10 text-green-600",children:"Authless"}),e.toolCount>0&&(0,a.jsxs)("span",{className:"text-[10px] text-text-muted",children:[e.toolCount," tools"]})]}),e.description&&(0,a.jsx)("p",{className:"text-[10px] text-text-muted line-clamp-2 mt-0.5",children:e.description})]}),(0,a.jsx)("button",{onClick:()=>t?null:void(b===e.url?v(null):(v(e.url),F(e))),disabled:t,className:`shrink-0 px-2 py-1 rounded text-[10px] font-medium transition-colors ${t?"bg-green-500/10 text-green-600 cursor-default":i?"bg-surface border border-border text-text-muted hover:bg-black/5":"bg-primary/10 border border-primary/40 text-primary hover:bg-primary/20"}`,children:t?"Added":i?"Cancel":"+ Add"})]}),i&&(0,a.jsxs)("div",{className:"px-3 py-2 bg-surface/40 border-t border-border flex flex-col gap-2",children:[s&&(0,a.jsxs)("div",{className:"flex items-center gap-2 text-text-muted text-[10px] py-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin text-[14px]",children:"progress_activity"}),(0,a.jsx)("span",{children:"Probing server for tools..."})]}),!s&&r?.requiresAuth&&(0,a.jsx)("p",{className:"text-[10px] text-amber-600 bg-amber-500/10 px-2 py-1 rounded",children:"\uD83D\uDD10 OAuth required. Add now and authenticate after Apply; tool list will be discovered after first connect."}),!s&&r?.error&&!r?.requiresAuth&&(0,a.jsxs)("p",{className:"text-[10px] text-red-600 bg-red-500/10 px-2 py-1 rounded",children:["Probe failed: ",r.error]}),!s&&0===l.length&&!r?.requiresAuth&&!r?.error&&(0,a.jsx)("p",{className:"text-[10px] text-text-muted",children:"No tools advertised by server."}),!s&&l.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("span",{className:"text-[10px] text-text-muted",children:[d,"/",l.length," tools enabled"]}),(0,a.jsxs)("div",{className:"flex gap-1",children:[(0,a.jsx)("button",{onClick:()=>W(e.url,!0),className:"text-[10px] text-primary hover:underline",children:"All"}),(0,a.jsx)("span",{className:"text-[10px] text-text-muted",children:"\xb7"}),(0,a.jsx)("button",{onClick:()=>W(e.url,!1),className:"text-[10px] text-primary hover:underline",children:"None"})]})]}),(0,a.jsx)("div",{className:"grid grid-cols-2 gap-1 max-h-40 overflow-y-auto",children:l.map(t=>(0,a.jsxs)("label",{className:"flex items-center gap-1.5 text-[10px] cursor-pointer hover:bg-black/5 dark:hover:bg-white/5 px-1 rounded",children:[(0,a.jsx)("input",{type:"checkbox",checked:!!o[t],onChange:()=>{var n;return n=e.url,void C(e=>({...e,[n]:{...e[n],[t]:!e[n]?.[t]}}))},className:"size-3"}),(0,a.jsx)("span",{className:"truncate",children:t})]},t))})]}),(0,a.jsx)("button",{onClick:()=>{let t,a;return a=Object.keys(t=N[e.url]||{}).filter(e=>t[e]),void(n?.({name:e.slug||e.name,title:e.title,description:e.description,url:e.url,transport:e.transport,oauth:e.oauth,toolNames:a}),v(null))},className:"self-end px-2 py-1 rounded text-[10px] font-medium bg-primary text-white hover:bg-primary/90",children:"✓ Confirm Add"})]})]},e.url)})]}),(0,a.jsxs)("div",{className:"text-[10px] text-text-muted text-right",children:[S.length," of ",l.length," servers"]})]})})}},28067:(e,t,n)=>{n.d(t,{default:()=>r});var a=n(95155),i=n(31474);function r({options:e=[],value:t,onChange:n,size:s="md",className:o}){let l={sm:"h-7 text-xs",md:"h-9 text-sm",lg:"h-11 text-base"};return(0,a.jsx)("div",{className:(0,i.cn)("inline-flex items-center p-1 rounded-[10px] overflow-x-auto","bg-surface-2",o),children:e.map(e=>(0,a.jsxs)("button",{onClick:()=>n(e.value),className:(0,i.cn)("shrink-0 px-4 rounded-[8px] font-medium transition-all",l[s],t===e.value?"bg-surface text-text-main shadow-sm":"text-text-muted hover:text-text-main"),children:[e.icon&&(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] mr-1.5",children:e.icon}),e.label]},e.value))})}},28815:(e,t,n)=>{n.d(t,{default:()=>l});var a=n(95155),i=n(12115),r=n(81127),s=n(92542),o=n(11059);function l({isOpen:e,onClose:t,title:n="Manual Configuration",configs:d=[]}){let{copy:c}=(0,o.C)(),[u,m]=(0,i.useState)(null);return(0,a.jsx)(r.default,{isOpen:e,onClose:t,title:n,size:"xl",children:(0,a.jsx)("div",{className:"flex flex-col gap-4",children:d.map((e,t)=>(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-sm font-medium text-text-main",children:e.filename}),(0,a.jsxs)(s.default,{variant:"ghost",size:"sm",onClick:()=>{var n;return n=e.content,void(c(n,`manualconfig-${t}`),m(t),setTimeout(()=>m(null),2e3))},children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:u===t?"check":"content_copy"}),u===t?"Copied!":"Copy"]})]}),(0,a.jsx)("pre",{className:"px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs overflow-x-auto whitespace-pre-wrap break-all max-h-60 overflow-y-auto border border-border",children:e.content})]},t))})})}},29366:(e,t,n)=>{n.d(t,{default:()=>s});var a=n(95155),i=n(28777),r=n(97677);function s({caps:e,className:t="",colorOverride:n,size:o=16}){if(!e)return null;let l=Object.keys(i.bs).filter(t=>e[t]);return 0===l.length?null:(0,a.jsx)("span",{className:`inline-flex items-center gap-0.5 ${t}`,children:l.map(e=>(0,a.jsx)(r.default,{text:`${i.bs[e].label} — ${i.bs[e].desc}`,children:(0,a.jsx)("span",{className:`material-symbols-outlined leading-none cursor-help ${n||i.bs[e].color}`,style:{fontSize:`${o}px`},children:i.bs[e].icon})},e))})}},30312:(e,t,n)=>{n.d(t,{default:()=>d});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(35497),l=n(11059);function d({isOpen:e,providerInfo:t,onSuccess:n,onClose:r}){let[s,c]=(0,i.useState)("booting"),[u,m]=(0,i.useState)(null),[x,p]=(0,i.useState)(null),[h,g]=(0,i.useState)(""),[f,b]=(0,i.useState)(null),[v,k]=(0,i.useState)(!1),y=(0,i.useRef)(null),w=(0,i.useRef)({proxyStarted:!1,stopSent:!1}),j=(0,i.useRef)(!1),N=(0,i.useRef)(!1),C=(0,i.useRef)(e),O=(0,i.useRef)(n),S=(0,i.useRef)(r),{copied:F,copy:W}=(0,l.C)();(0,i.useEffect)(()=>{C.current=e,O.current=n,S.current=r});let T=(0,i.useCallback)(()=>{let e=w.current;e.proxyStarted&&!e.stopSent&&(e.stopSent=!0,fetch("/api/oauth/zed/stop-proxy").catch(()=>{}))},[]),I=(0,i.useCallback)(()=>{c("success"),O.current?.(),setTimeout(()=>S.current?.(),600)},[]),$=(0,i.useCallback)(async e=>{if(e?.accessToken&&e?.userId){k(!0),b(null),c("importing");try{let t=await fetch("/api/oauth/zed/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accessToken:e.accessToken,userId:e.userId,...e.systemId?{systemId:e.systemId}:{}})}),n=await t.json();if(!t.ok)throw Error(n.error||"Import failed");T(),I()}catch(e){b(e.message),c("ide-found")}finally{k(!1)}}},[I,T]),A=(0,i.useCallback)(async()=>{b(null),p(null),g(""),w.current={proxyStarted:!1,stopSent:!1},N.current=!1;try{let e=await fetch("/api/oauth/zed/start-proxy"),t=await e.json();if(!e.ok||!t.success||!t.callbackUrl)throw Error(t.reason||t.error||"Failed to start Zed callback server");if(w.current.proxyStarted=!0,w.current.stopSent=!1,!C.current)return void T();let n=new URL("/api/oauth/zed/authorize",window.location.origin);n.searchParams.set("redirect_uri",t.callbackUrl);let a=await fetch(n),i=await a.json();if(!a.ok)throw T(),Error(i.error||"Failed to start Zed authorization");if(!C.current)return void T();let r={state:i.state};i.codeVerifier&&(r.codeVerifier=i.codeVerifier),i.systemId&&(r.systemId=i.systemId);let s=await fetch("/api/oauth/zed/register-session",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)}),o=null;try{o=await s.json()}catch{o=null}if(!s.ok||o?.success===!1)throw T(),Error(o?.error||"Failed to register Zed login session");if(!C.current)return;p(i),c(e=>"ide-found"===e||"importing"===e?e:"browser"),y.current=window.open(i.authUrl,"oauth_popup_zed","width=600,height=700")}catch(e){if(!C.current)return;b(e.message),c(e=>"ide-found"===e?e:"browser")}},[T]);(0,i.useEffect)(()=>{if(!e||j.current)return;j.current=!0,c("booting"),m(null),p(null),g(""),b(null),k(!1),N.current=!1,w.current={proxyStarted:!1,stopSent:!1};let t=!1;return(async()=>{let e=A();try{let e=await fetch("/api/oauth/zed/auto-import",{signal:AbortSignal.timeout(12e3)}),n=await e.json();if(t||!C.current)return;if(n.found&&n.accessToken&&n.userId){let e={accessToken:n.accessToken,userId:String(n.userId),systemId:n.systemId||""};m(e),await $(e);return}}catch{}!t&&C.current&&(await e,!t&&C.current&&c("browser"))})(),()=>{t=!0}},[e,A,$]),(0,i.useEffect)(()=>{if(!e&&(j.current=!1,N.current=!0,T(),w.current={proxyStarted:!1,stopSent:!1},y.current&&!y.current.closed))try{y.current.close()}catch{}},[e,T]),(0,i.useEffect)(()=>{if(!x?.state||"importing"===s||"success"===s)return;let e=!1,t=0,n=async()=>{if(!e&&!N.current&&C.current){t+=1;try{let t=await fetch(`/api/oauth/zed/poll-status?state=${encodeURIComponent(x.state)}`),n=await t.json();if(e||N.current)return;if("done"===n.status){N.current=!0,T(),I();return}if("error"===n.status){N.current=!0,b(n.error||"Authentication failed"),c("error");return}}catch{}if(t>=200){b("Authentication timeout"),c("error");return}setTimeout(n,1500)}};return setTimeout(n,1500),()=>{e=!0}},[x,s,I,T]);let D=async()=>{let e=h.trim();if(e){k(!0),b(null);try{let t=await fetch("/api/oauth/zed/exchange",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:e,state:x?.state,...x?.redirectUri?{redirectUri:x.redirectUri}:{},...x?.codeVerifier?{codeVerifier:x.codeVerifier}:{},...x?.systemId?{systemId:x.systemId}:{}})}),n=await t.json();if(!t.ok)throw Error(n.error||"Exchange failed");N.current=!0,T(),I()}catch(e){b(e.message),c("error")}finally{k(!1)}}},P=()=>{N.current=!0,T(),r()},_=`Connect ${t?.name||"Zed"}`;return(0,a.jsx)(o.aF,{isOpen:e,title:_,onClose:P,size:"lg",children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[("booting"===s||"importing"===s)&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border border-border rounded-lg bg-sidebar/50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-base text-primary animate-spin",children:"progress_activity"}),(0,a.jsx)("span",{className:"text-sm",children:"importing"===s?"Importing session from Zed IDE…":"Detecting Zed IDE session…"})]}),"ide-found"===s&&u&&(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800",children:(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,a.jsxs)("p",{className:"text-sm text-green-800 dark:text-green-200",children:["Zed IDE session detected (user ",u.userId,"). Import failed — retry or use browser sign-in below."]})]})}),(0,a.jsx)(o.$n,{onClick:()=>$(u),fullWidth:!0,disabled:v,children:v?"Importing…":"Import from Zed IDE"})]}),"success"===s&&(0,a.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800 text-sm text-green-800 dark:text-green-200",children:"Connected successfully."}),("browser"===s||"error"===s||"ide-found"===s)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border border-border rounded-lg bg-sidebar/50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-base text-primary animate-spin",children:"progress_activity"}),(0,a.jsx)("span",{className:"text-sm",children:"Waiting for popup authorization…"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-3 my-1",children:[(0,a.jsx)("div",{className:"flex-1 h-px bg-border"}),(0,a.jsx)("span",{className:"text-xs text-text-muted uppercase tracking-wider",children:"Or paste callback URL manually"}),(0,a.jsx)("div",{className:"flex-1 h-px bg-border"})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.pd,{value:x?.authUrl||"",readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,a.jsx)(o.$n,{variant:"secondary",icon:"auth_url"===F?"check":"content_copy",onClick:()=>W(x?.authUrl,"auth_url"),disabled:!x?.authUrl,children:"Copy"})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,a.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser (or the local callback page)."}),(0,a.jsx)(o.pd,{value:h,onChange:e=>g(e.target.value),placeholder:"http://127.0.0.1:.../?user_id=...&access_token=...",className:"font-mono text-xs"})]})]}),f&&(0,a.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,a.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:f})}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:D,fullWidth:!0,disabled:v||!h.trim()||!x,children:v?"Connecting…":"Connect"}),(0,a.jsx)(o.$n,{onClick:P,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})})}d.propTypes={isOpen:s().bool.isRequired,providerInfo:s().object,onSuccess:s().func,onClose:s().func.isRequired}},30815:(e,t,n)=>{n.d(t,{default:()=>l});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(35497);function l({isOpen:e,onSuccess:t,onClose:n}){let[r,s]=(0,i.useState)(""),[d,c]=(0,i.useState)(""),[u,m]=(0,i.useState)(null),[x,p]=(0,i.useState)(!1),[h,g]=(0,i.useState)(!1),[f,b]=(0,i.useState)(!1),[v,k]=(0,i.useState)(!1),y=async()=>{g(!0),m(null),b(!1),k(!1);try{let e=await fetch("/api/oauth/cursor/auto-import"),t=await e.json();t.found?(s(t.accessToken),c(t.machineId),b(!0)):t.windowsManual?k(!0):m(t.error||"Could not auto-detect tokens")}catch(e){m("Failed to auto-detect tokens")}finally{g(!1)}};(0,i.useEffect)(()=>{e&&y()},[e]);let w=async()=>{if(!r.trim())return void m("Please enter an access token");if(!d.trim())return void m("Please enter a machine ID");p(!0),m(null);try{let e=await fetch("/api/oauth/cursor/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accessToken:r.trim(),machineId:d.trim()})}),a=await e.json();if(!e.ok)throw Error(a.error||"Import failed");t?.(),n()}catch(e){m(e.message)}finally{p(!1)}};return(0,a.jsx)(o.aF,{isOpen:e,title:"Connect Cursor IDE",onClose:n,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[h&&(0,a.jsxs)("div",{className:"text-center py-6",children:[(0,a.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,a.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Auto-detecting tokens..."}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Reading from Cursor IDE database"})]}),!h&&(0,a.jsxs)(a.Fragment,{children:[f&&(0,a.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800",children:(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,a.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200",children:"Tokens auto-detected from Cursor IDE successfully!"})]})}),v&&(0,a.jsxs)("div",{className:"bg-amber-50 dark:bg-amber-900/20 p-3 rounded-lg border border-amber-200 dark:border-amber-800 flex flex-col gap-2",children:[(0,a.jsxs)("div",{className:"flex gap-2 items-center",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-amber-600 dark:text-amber-400",children:"info"}),(0,a.jsx)("p",{className:"text-sm font-medium text-amber-800 dark:text-amber-200",children:"Could not read Cursor database automatically."})]}),(0,a.jsxs)("p",{className:"text-xs text-amber-700 dark:text-amber-300",children:["Make sure Cursor IDE has been opened at least once, then click ",(0,a.jsx)("strong",{children:"Retry"}),". If the problem persists, paste your tokens manually below."]}),(0,a.jsx)(o.$n,{onClick:y,variant:"outline",fullWidth:!0,children:"Retry"})]}),!f&&!v&&!u&&(0,a.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,a.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:"Cursor IDE not detected. Please paste your tokens manually."})]})}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Access Token ",(0,a.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,a.jsx)("textarea",{value:r,onChange:e=>s(e.target.value),placeholder:"Access token will be auto-filled...",rows:3,className:"w-full px-3 py-2 text-sm font-mono border border-border rounded-lg bg-surface focus:outline-none focus:border-primary resize-none"})]}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Machine ID ",(0,a.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,a.jsx)(o.pd,{value:d,onChange:e=>c(e.target.value),placeholder:"Machine ID will be auto-filled...",className:"font-mono text-sm"})]}),u&&(0,a.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,a.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:u})}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:w,fullWidth:!0,disabled:x||!r.trim()||!d.trim(),children:x?"Importing...":"Import Token"}),(0,a.jsx)(o.$n,{onClick:n,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})})}l.propTypes={isOpen:s().bool.isRequired,onSuccess:s().func,onClose:s().func.isRequired}},31474:(e,t,n)=>{n.d(t,{cn:()=>a});function a(...e){return e.filter(Boolean).join(" ").replace(/\s+/g," ").trim()}},32486:(e,t,n)=>{n.d(t,{default:()=>d,f:()=>l});var a=n(95155),i=n(12115),r=n(98500),s=n.n(r),o=n(73006);let l="10r:security-status-changed";function d(){let[e,t]=(0,i.useState)(null);if((0,i.useEffect)(()=>{let e=!1,n=()=>{fetch("/api/security/status").then(e=>e.ok?e.json():null).then(n=>{e||t(n)}).catch(()=>{e||t(null)})};return n(),window.addEventListener(l,n),()=>{e=!0,window.removeEventListener(l,n)}},[]),!e)return null;let n=!e.hasPassword&&!e.bootstrapPassword&&!e.ssoConfigured,r=!1===e.requireLogin;if(!n&&!r||r&&e.hideLoginOffBanner)return null;let d=r?(0,o.Tl)("Log-in check is off — anyone who can reach this port can manage every provider, key and credential."):(0,o.Tl)("No dashboard password is set — the dashboard opens on this machine only. Set one on the Settings page.");return(0,a.jsxs)("div",{className:"flex items-center gap-2 px-4 py-2 border-b bg-red-500/10 border-red-500/20 text-red-600 dark:text-red-400",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] shrink-0",children:"warning"}),(0,a.jsx)("p",{className:"text-xs flex-1",children:d}),(0,a.jsx)(s(),{href:"/dashboard/profile",className:"text-xs font-medium underline shrink-0 hover:opacity-80",children:(0,o.Tl)("Open Settings")})]})}},35497:(e,t,n)=>{n.d(t,{x0:()=>N.default,Ex:()=>d.default,$n:()=>a.default,nh:()=>I.default,Zp:()=>s.default,Qv:()=>l.CardSkeleton,CK:()=>p.default,uo:()=>o.ConfirmModal,G9:()=>b.default,wI:()=>j.default,vj:()=>w.default,vE:()=>y.default,pd:()=>i.default,N5:()=>T.default,Mh:()=>f.default,uR:()=>x.default,Nf:()=>h.default,Dr:()=>S.MenuItem,aF:()=>o.default,rq:()=>m.default,gw:()=>C.default,LF:()=>u.default,AM:()=>S.Popover,Wx:()=>W.default,gM:()=>g.default,Iz:()=>O.default,l6:()=>r.default,lM:()=>c.default,m_:()=>F.default,LH:()=>k.default,TE:()=>v.default});var a=n(92542),i=n(11910),r=n(98),s=n(84588),o=n(81127),l=n(25086);n(56319);var d=n(56061),c=n(98542);n(38587),n(21110),n(92622),n(3744),n(92173);var u=n(90882),m=n(72908),x=n(28815),p=n(45455),h=n(28058);n(21931),n(80752),n(80229);var g=n(23615);n(61500);var f=n(62899);n(94230);var b=n(30815),v=n(30312),k=n(49770),y=n(23936),w=n(95088),j=n(73579),N=n(96748),C=n(4823),O=n(28067),S=n(75480),F=n(97677),W=n(51825),T=n(76432),I=n(29366);n(32486),n(66996),n(7648),n(91450)},35655:(e,t,n)=>{n.d(t,{$n:()=>p,Ay:()=>h,dI:()=>c,h7:()=>x,jE:()=>u,jH:()=>d,pM:()=>m});var a=n(95155),i=n(14051),r=n.n(i),s=n(31474),o=n(73006),l=n(67352);let d="rounded-[3px]";function c(e){return`hsl(${(0,l.d$)(e)} 68% 46%)`}function u(e){let t=(0,l.d$)(e);return{backgroundImage:`linear-gradient(90deg, hsl(${t} 72% 58%), hsl(${t} 70% 44%))`}}let m={reset:"text-text-muted",expire:"text-text-muted",critical:"text-red-600 dark:text-red-400"};function x(e,t,{expired:n=!1}={}){if(n)return(0,o.Tl)("expired {date}").replace("{date}",(0,l.XV)(t));let a=(0,l.TV)(t);return a?(0,o.Tl)(e?"resets in {duration}":"expires in {duration}").replace("{duration}",a):(0,o.Tl)(e?"resets {date}":"expires {date}").replace("{date}",(0,l.XV)(t))}function p({height:e=5,className:t,children:n,...i}){return(0,a.jsx)("div",{className:(0,s.cn)("relative w-full overflow-hidden",d,"bg-black/10 dark:bg-white/10",t),style:{height:`${e}px`},...i,children:n})}function h({pct:e=0,colorPct:t=null,title:n,...i}){let r=Math.min(100,Math.max(0,Number(e)||0));return(0,a.jsx)(p,{title:n,...i,children:(0,a.jsx)("div",{className:(0,s.cn)("h-full transition-[width] duration-300",d),style:{width:`${r}%`,...u(t??r)}})})}p.propTypes={height:r().number,className:r().string,children:r().node},h.propTypes={pct:r().number,colorPct:r().number,title:r().string}},38003:(e,t,n)=>{n.d(t,{C:()=>a});let a=(0,n(1934).v)(e=>({query:"",placeholder:"",visible:!1,setQuery:t=>e({query:t}),register:(t="Search...")=>e({visible:!0,placeholder:t,query:""}),unregister:()=>e({visible:!1,placeholder:"",query:""})}))},38202:(e,t,n)=>{n.d(t,{h:()=>a});let a={en:"\uD83C\uDDFA\uD83C\uDDF8",vi:"\uD83C\uDDFB\uD83C\uDDF3","zh-CN":"\uD83C\uDDE8\uD83C\uDDF3","zh-TW":"\uD83C\uDDF9\uD83C\uDDFC",ja:"\uD83C\uDDEF\uD83C\uDDF5","pt-BR":"\uD83C\uDDE7\uD83C\uDDF7","pt-PT":"\uD83C\uDDF5\uD83C\uDDF9",ko:"\uD83C\uDDF0\uD83C\uDDF7",es:"\uD83C\uDDEA\uD83C\uDDF8",de:"\uD83C\uDDE9\uD83C\uDDEA",fr:"\uD83C\uDDEB\uD83C\uDDF7",he:"\uD83C\uDDEE\uD83C\uDDF1",ar:"\uD83C\uDDF8\uD83C\uDDE6",ru:"\uD83C\uDDF7\uD83C\uDDFA",pl:"\uD83C\uDDF5\uD83C\uDDF1",cs:"\uD83C\uDDE8\uD83C\uDDFF",nl:"\uD83C\uDDF3\uD83C\uDDF1",tr:"\uD83C\uDDF9\uD83C\uDDF7",uk:"\uD83C\uDDFA\uD83C\uDDE6",tl:"\uD83C\uDDF5\uD83C\uDDED",id:"\uD83C\uDDEE\uD83C\uDDE9",th:"\uD83C\uDDF9\uD83C\uDDED",km:"\uD83C\uDDF0\uD83C\uDDED",hi:"\uD83C\uDDEE\uD83C\uDDF3",bn:"\uD83C\uDDE7\uD83C\uDDE9",ur:"\uD83C\uDDF5\uD83C\uDDF0",ro:"\uD83C\uDDF7\uD83C\uDDF4",sv:"\uD83C\uDDF8\uD83C\uDDEA",it:"\uD83C\uDDEE\uD83C\uDDF9",el:"\uD83C\uDDEC\uD83C\uDDF7",hu:"\uD83C\uDDED\uD83C\uDDFA",fi:"\uD83C\uDDEB\uD83C\uDDEE",da:"\uD83C\uDDE9\uD83C\uDDF0",no:"\uD83C\uDDF3\uD83C\uDDF4",fa:"\uD83C\uDDEE\uD83C\uDDF7"}},38587:(e,t,n)=>{n.d(t,{default:()=>o});var a=n(95155),i=n(1620),r=n(31474);let s={system:{icon:"routine",label:"Theme: system",next:"light"},light:{icon:"light_mode",label:"Theme: light",next:"dark"},dark:{icon:"dark_mode",label:"Theme: dark",next:"system"}};function o({className:e,variant:t="default"}){let{theme:n,toggleTheme:l}=(0,i.D)(),d=s[n]||s.system,c={default:(0,r.cn)("flex items-center justify-center size-10 rounded-full","text-text-muted hover:text-text-main","hover:bg-surface-2 transition-colors"),card:(0,r.cn)("flex items-center justify-center size-11 rounded-full","bg-surface/60 hover:bg-surface","border border-border","backdrop-blur-md shadow-sm hover:shadow-[var(--shadow-warm)]","text-text-muted hover:text-brand-500","transition-all group")};return(0,a.jsx)("button",{onClick:l,className:(0,r.cn)(c[t],e),"aria-label":d.label,title:d.label,"data-theme-mode":n,children:(0,a.jsx)("span",{className:(0,r.cn)("material-symbols-outlined text-[22px]","card"===t&&"transition-transform duration-300 group-hover:rotate-12"),children:d.icon})})}},45455:(e,t,n)=>{n.d(t,{default:()=>u});var a=n(95155),i=n(12115),r=n(81127),s=n(11910),o=n(92542),l=n(72908);let d=/^[a-zA-Z0-9_.\-]+$/;function c({index:e,model:t,isFirst:n,isLast:r,onEdit:s,onMoveUp:o,onMoveDown:l,onRemove:d}){let[u,m]=(0,i.useState)(!1),[x,p]=(0,i.useState)(t),h=()=>{let e=x.trim();e&&e!==t?s(e):p(t),m(!1)};return(0,a.jsxs)("div",{className:"group flex min-w-0 items-center gap-1.5 rounded-md bg-black/[0.02] px-2 py-1 transition-colors hover:bg-black/[0.04] dark:bg-white/[0.02] dark:hover:bg-white/[0.04]",children:[(0,a.jsx)("span",{className:"text-[10px] font-medium text-text-muted w-3 text-center shrink-0",children:e+1}),u?(0,a.jsx)("input",{autoFocus:!0,value:x,onChange:e=>p(e.target.value),onBlur:h,onKeyDown:e=>{"Enter"===e.key&&h(),"Escape"===e.key&&(p(t),m(!1))},className:"min-w-0 flex-1 rounded border border-primary/40 bg-white px-1.5 py-0.5 font-mono text-xs text-text-main outline-none dark:bg-black/20"}):(0,a.jsx)("div",{className:"min-w-0 flex-1 cursor-text truncate rounded px-1.5 py-0.5 font-mono text-xs text-text-main hover:bg-black/5 dark:hover:bg-white/5",onClick:()=>m(!0),title:"Click to edit",children:t}),(0,a.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5",children:[(0,a.jsx)("button",{onClick:o,disabled:n,className:`p-0.5 rounded ${n?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-primary hover:bg-black/5 dark:hover:bg-white/5"}`,title:"Move up",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"arrow_upward"})}),(0,a.jsx)("button",{onClick:l,disabled:r,className:`p-0.5 rounded ${r?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-primary hover:bg-black/5 dark:hover:bg-white/5"}`,title:"Move down",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"arrow_downward"})})]}),(0,a.jsx)("button",{onClick:d,className:"p-0.5 hover:bg-red-500/10 rounded text-text-muted hover:text-red-500 transition-all",title:"Remove",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]})}function u({isOpen:e,combo:t,onClose:n,onSave:m,activeProviders:x,kindFilter:p=null,forcePrefix:h="",title:g}){let f=t?.name?h&&t.name.startsWith(h)?t.name.slice(h.length):t.name:"",[b,v]=(0,i.useState)(f),[k,y]=(0,i.useState)(t?.models||[]),[w,j]=(0,i.useState)(!1),[N,C]=(0,i.useState)(!1),[O,S]=(0,i.useState)(""),[F,W]=(0,i.useState)({});(0,i.useEffect)(()=>{e&&fetch("/api/models/alias").then(e=>e.ok?e.json():null).then(e=>e&&W(e.aliases||{})).catch(()=>{})},[e]);let T=e=>{if(!e.trim())return S("Name is required"),!1;let t=h+e;return d.test(t)?(S(""),!0):(S("Only letters, numbers, -, _ and . allowed"),!1)},I=e=>{let t=e.target.value;h&&t.startsWith(h)&&(t=t.slice(h.length)),v(t),t?T(t):S("")},$=async()=>{T(b)&&(C(!0),await m({name:h+b.trim(),models:k}),C(!1))},A=!!t;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(r.default,{isOpen:e,onClose:n,title:g||(A?"Edit Combo":"Create Combo"),children:(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("div",{children:[h?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("label",{className:"text-sm font-medium mb-1 block",children:"Combo Name"}),(0,a.jsxs)("div",{className:"flex items-stretch",children:[(0,a.jsx)("span",{className:"inline-flex items-center px-2 rounded-l border border-r-0 border-black/10 dark:border-white/10 bg-black/[0.04] dark:bg-white/[0.04] text-text-muted font-mono text-sm",children:h}),(0,a.jsx)("input",{value:b,onChange:I,placeholder:"my-combo",className:"flex-1 min-w-0 rounded-r border border-black/10 dark:border-white/10 bg-white dark:bg-black/20 px-2 py-1.5 font-mono text-sm outline-none focus:border-primary"})]}),O&&(0,a.jsx)("p",{className:"text-[11px] text-red-500 mt-0.5",children:O})]}):(0,a.jsx)(s.default,{label:"Combo Name",value:b,onChange:I,placeholder:"my-combo",error:O}),(0,a.jsxs)("p",{className:"text-[10px] text-text-muted mt-0.5",children:[h?`Auto-prefixed with "${h}". `:"","Only letters, numbers, -, _ and . allowed"]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm font-medium mb-1.5 block",children:"Models"}),0===k.length?(0,a.jsxs)("div",{className:"text-center py-4 border border-dashed border-black/10 dark:border-white/10 rounded-lg bg-black/[0.01] dark:bg-white/[0.01]",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-xl mb-1",children:"layers"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"No models added yet"})]}):(0,a.jsx)("div",{className:"flex max-h-[55vh] min-w-0 flex-col gap-1 overflow-y-auto sm:max-h-[350px]",children:k.map((e,t)=>(0,a.jsx)(c,{index:t,model:e,isFirst:0===t,isLast:t===k.length-1,onEdit:e=>{let n=[...k];n[t]=e,y(n)},onMoveUp:()=>(e=>{if(0===e)return;let t=[...k];[t[e-1],t[e]]=[t[e],t[e-1]],y(t)})(t),onMoveDown:()=>(e=>{if(e===k.length-1)return;let t=[...k];[t[e],t[e+1]]=[t[e+1],t[e]],y(t)})(t),onRemove:()=>y(k.filter((e,n)=>n!==t))},t))}),(0,a.jsxs)("button",{onClick:()=>j(!0),className:"w-full mt-2 py-2 border border-dashed border-black/10 dark:border-white/10 rounded-lg text-xs text-primary font-medium hover:text-primary hover:border-primary/50 transition-colors flex items-center justify-center gap-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"add"}),"Add Model"]})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2 pt-1 sm:flex-row",children:[(0,a.jsx)(o.default,{onClick:n,variant:"ghost",fullWidth:!0,size:"sm",children:"Cancel"}),(0,a.jsx)(o.default,{onClick:$,fullWidth:!0,size:"sm",disabled:!b.trim()||!!O||N,children:N?"Saving...":A?"Save":"Create"})]})]})}),w&&(0,a.jsx)(l.default,{isOpen:w,onClose:()=>j(!1),onSelect:e=>{k.includes(e.value)||y([...k,e.value])},onDeselect:e=>{y(k.filter(t=>t!==e.value))},activeProviders:x,modelAliases:F,title:"Add Model to Combo",kindFilter:p,addedModelValues:k,closeOnSelect:!1})]})}},45496:(e,t,n)=>{n.d(t,{F:()=>s,i:()=>r});var a=n(93308);let i={en:{sym:"$",rate:1},"zh-CN":{sym:"¥",rate:7.2},"zh-TW":{sym:"NT$",rate:31.5},ja:{sym:"\xa5",rate:155},ko:{sym:"₩",rate:1350},vi:{sym:"₫",rate:25e3},"pt-BR":{sym:"R$",rate:5.5},"pt-PT":{sym:"€",rate:.92},es:{sym:"€",rate:.92},de:{sym:"€",rate:.92}};function r(){if("u"<typeof localStorage)return!0;let e=localStorage.getItem("useRegionalCurrency");return null===e||"0"!==e}function s(e,t=2){let n=e||0;if(!r())return`$${n.toFixed(t)}`;let o=i[(0,a.QC)(function(){if("u"<typeof document)return"en";let e=document.cookie.split(";").find(e=>e.trim().startsWith(`${a.CL}=`));return e?decodeURIComponent(e.split("=")[1]):"en"}())];return o?`${o.sym}${(n*o.rate).toFixed(t)}`:`$${n.toFixed(t)}`}},49770:(e,t,n)=>{n.d(t,{default:()=>c});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(35497),l=n(73006);let d=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function c({provider:e,isOpen:t,onSuccess:n,onClose:r}){let s="mimo-desktop"===e?"mimo-desktop":"xiaomi-mimo",u="mimo-desktop"===s,[m,x]=(0,i.useState)("detecting"),p=u?m:"cloud",[h,g]=(0,i.useState)(null),[f,b]=(0,i.useState)(!1),[v,k]=(0,i.useState)(!1),[y,w]=(0,i.useState)(null),[j,N]=(0,i.useState)(null),[C,O]=(0,i.useState)(""),[S,F]=(0,i.useState)(null),[W,T]=(0,i.useState)(null),[I,$]=(0,i.useState)(null),[A,D]=(0,i.useState)(""),[P,_]=(0,i.useState)(!1),E=async()=>{x("detecting"),w(null),N(null),O(""),g(null),F(null),T(null),D(""),b(!1),k(!1);let e=await fetch("/api/oauth/xiaomi-mimo/auto-import"),t=await e.json();t.found?(g(t),x("found")):(x("not-found"),b(!!t.desktopLocked),N(t.code||null),O(t.details||""),w((0,l.Tl)(t.error||"Xiaomi MiMo Desktop credentials not found on this machine.")))};(0,i.useEffect)(()=>{if(!t||!u)return;let e=!1;return(async()=>{x("detecting"),w(null),N(null),O(""),g(null),F(null),T(null),D(""),b(!1);try{let t=await fetch("/api/oauth/xiaomi-mimo/auto-import"),n=await t.json();if(e)return;n.found?(g(n),x("found")):(x("not-found"),b(!!n.desktopLocked),N(n.code||null),O(n.details||""),w((0,l.Tl)(n.error||"Xiaomi MiMo Desktop credentials not found on this machine.")))}catch{e||(x("not-found"),w((0,l.Tl)("Failed to read local Xiaomi MiMo Desktop credentials.")))}})(),()=>{e=!0}},[t,u]),(0,i.useEffect)(()=>{if(!t||!u||"not-found"!==m)return;let e=setInterval(async()=>{try{let e=await fetch("/api/oauth/xiaomi-mimo/auto-import");(await e.json()).found&&E()}catch{}},4e3);return()=>clearInterval(e)},[t,m,u]);let z=async()=>{let e=!!h?.sessionOnly;if(h?.apiKey||e){x("importing"),w(null);try{let t=await fetch("/api/oauth/xiaomi-mimo/api-key",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:h.apiKey||void 0,uid:h.uid,baseUrl:h.baseUrl,sessionOnly:e,provider:s})}),a=await t.json();if(!t.ok||!a.success)throw Error((0,l.Tl)(a.error||"Import failed"));n?.(a.connection),r()}catch(e){x("found"),w(e.message)}}},M=async()=>{k(!0);try{await fetch("/api/oauth/xiaomi-mimo/desktop-kill",{method:"POST"})}catch{}setTimeout(()=>{k(!1),E().catch(()=>x("not-found"))},1500)},L=async()=>{w(null),D("");try{let e=function(e=""){let t=globalThis.crypto;if("function"==typeof t?.randomUUID)return e+t.randomUUID();if("function"==typeof t?.getRandomValues){let n=t.getRandomValues(new Uint8Array(16));return n[6]=15&n[6]|64,n[8]=63&n[8]|128,e+d[n[0]]+d[n[1]]+d[n[2]]+d[n[3]]+"-"+d[n[4]]+d[n[5]]+"-"+d[n[6]]+d[n[7]]+"-"+d[n[8]]+d[n[9]]+"-"+d[n[10]]+d[n[11]]+d[n[12]]+d[n[13]]+d[n[14]]+d[n[15]]}return e+Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10)+"-"+Math.random().toString(36).slice(2,10)}(),t=await fetch(`/api/oauth/${s}/authorize?state=${e}`),n=await t.json();if(n.authorizeUrl)F(n.authorizeUrl),T(n.manualUrl||null),$(n.state),window.open(n.authorizeUrl,"_blank","width=600,height=700");else throw Error((0,l.Tl)(n.error||"Failed to start OAuth"))}catch(e){w(e.message)}},R=async e=>{let t=await fetch(`/api/oauth/${s}/exchange`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({state:e})}),a=await t.json();if(!a.success)throw Error((0,l.Tl)(a.error||"Exchange failed"));n?.(a.connection),r()},q=async()=>{let e=A.trim();if(!e)return void w((0,l.Tl)("Paste the authorization code first."));_(!0),w(null);try{let t=await fetch(`/api/oauth/${s}/submit-code`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:e})}),n=await t.json();if(!t.ok||"done"!==n.status)throw Error((0,l.Tl)(n.error||"Could not read that code."));await R(n.state||I)}catch(e){w(e.message)}finally{_(!1)}},U=async()=>{if(I){w(null);try{let e=await fetch(`/api/oauth/${s}/poll-status?state=${I}`),t=await e.json();if("done"===t.status&&t.result)await R(I);else if("error"===t.status)throw Error((0,l.Tl)(t.error||"OAuth failed"));else w((0,l.Tl)("Authorization not completed yet. Finish in the browser, then click Check Again."))}catch(e){w(e.message)}}};return(0,a.jsx)(o.aF,{isOpen:t,title:(0,l.Tl)("Connect Xiaomi MiMo"),onClose:r,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:["cloud"===p&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,a.jsxs)("div",{className:"flex gap-2 items-start",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,a.jsxs)("div",{className:"text-sm text-blue-800 dark:text-blue-200",children:[(0,a.jsx)("p",{className:"font-medium",children:(0,l.Tl)("Cloud models — sign in with the browser")}),(0,a.jsx)("p",{className:"mt-1 opacity-80",children:(0,l.Tl)("This card bills the cloud API, so it uses the browser authorization or an sk- API key. Desktop credits belong to the MiMo Desktop card.")})]})]})}),y&&(0,a.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,a.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:y})}),S?(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsxs)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:[(0,a.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:(0,l.Tl)("Browser opened. Complete the Xiaomi sign-in there.")}),(0,a.jsxs)("p",{className:"text-sm text-blue-800 dark:text-blue-200 mt-1 opacity-80",children:[(0,l.Tl)("The page may show an authorization code — paste it below. If it came back automatically instead, click")," ",(0,a.jsx)("strong",{children:(0,l.Tl)("Check Again")}),"."]})]}),y&&(0,a.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,a.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:y})}),y&&(0,a.jsx)(o.$n,{onClick:L,variant:"outline",fullWidth:!0,children:(0,l.Tl)("Sign in via Browser")}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium mb-2",children:(0,l.Tl)("Authorization Code")}),(0,a.jsx)("textarea",{value:A,onChange:e=>D(e.target.value),placeholder:(0,l.Tl)("Paste the authorization code shown in the browser"),rows:3,className:"w-full px-3 py-2 text-sm font-mono border border-border rounded-lg bg-surface focus:outline-none focus:border-primary resize-none"}),(0,a.jsx)("p",{className:"text-xs text-text-muted mt-1",children:(0,l.Tl)("The code is a long string (100+ characters) — copy it whole, using the Copy button on the sign-in page.")}),W&&(0,a.jsx)("a",{href:W,target:"_blank",rel:"noreferrer",className:"inline-block text-xs text-primary hover:underline mt-2",children:(0,l.Tl)("Open the code page")})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:q,disabled:P||!A.trim(),fullWidth:!0,children:P?(0,l.Tl)("Checking..."):(0,l.Tl)("Submit Code")}),(0,a.jsx)(o.$n,{onClick:U,variant:"outline",fullWidth:!0,children:(0,l.Tl)("Check Again")})]})]}):(0,a.jsx)(o.$n,{onClick:L,fullWidth:!0,children:(0,l.Tl)("Sign in via Browser")})]}),"detecting"===p&&(0,a.jsxs)("div",{className:"text-center py-6",children:[(0,a.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,a.jsx)("h3",{className:"text-lg font-semibold mb-2",children:(0,l.Tl)("Reading local credentials...")}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:(0,l.Tl)("Checking Xiaomi MiMo Desktop's local profile (auth.json + cookie store)")})]}),"found"===p&&h&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800",children:(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,a.jsxs)("div",{className:"text-sm text-green-800 dark:text-green-200",children:[(0,a.jsx)("p",{className:"font-medium",children:h.sessionOnly?(0,l.Tl)("Xiaomi MiMo Desktop session detected!"):(0,l.Tl)("Xiaomi MiMo Desktop credentials found!")}),(0,a.jsxs)("p",{className:"mt-1 opacity-80",children:[(0,l.Tl)("UID"),": ",h.uid||"—"," \xb7 ",(0,l.Tl)("Source"),":"," ",h.source?.split(/[\\/]/).pop()]}),(0,a.jsx)("p",{className:"mt-1 opacity-80",children:h.hasDesktopSession?(0,l.Tl)("Desktop account session detected — the Desktop models will be available."):h.desktopLocked?(0,l.Tl)("Desktop is running and is holding its credential store — quit it to unlock the Desktop models."):(0,l.Tl)("No desktop account session found — sign in to MiMo Desktop, then retry.")})]})]})}),y&&(0,a.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,a.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:y})}),h.sessionOnly&&(0,a.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,a.jsxs)("div",{className:"flex gap-2 items-start",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"lightbulb"}),(0,a.jsxs)("div",{className:"text-sm text-blue-800 dark:text-blue-200",children:[(0,a.jsx)("p",{className:"font-medium",children:(0,l.Tl)("Want the metered models too?")}),(0,a.jsx)("p",{className:"mt-1 opacity-80",children:(0,l.Tl)("This card covers the Desktop models. The metered and subscription-plan models are on the MiMo card — open that card there.")})]})]})}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:z,fullWidth:!0,children:h.sessionOnly?(0,l.Tl)("Connect with Desktop Session"):(0,l.Tl)("Connect with Local Credentials")}),(0,a.jsx)(o.$n,{onClick:r,variant:"ghost",fullWidth:!0,children:(0,l.Tl)("Cancel")})]})]}),"importing"===p&&(0,a.jsxs)("div",{className:"text-center py-6",children:[(0,a.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,a.jsx)("h3",{className:"text-lg font-semibold mb-2",children:(0,l.Tl)("Connecting...")})]}),"not-found"===p&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"bg-amber-50 dark:bg-amber-900/20 p-3 rounded-lg border border-amber-200 dark:border-amber-800",children:(0,a.jsxs)("div",{className:"flex gap-2 items-start",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-amber-600 dark:text-amber-400",children:"info"}),(0,a.jsxs)("div",{className:"text-sm text-amber-800 dark:text-amber-200",children:[(0,a.jsx)("p",{className:"font-medium",children:f?(0,l.Tl)("Quit Xiaomi MiMo Desktop and retry"):(0,l.Tl)("Local credentials not found")}),(0,a.jsx)("p",{className:"mt-1 opacity-80",children:"DESKTOP_LOCKED"===j?(0,l.Tl)("The desktop app keeps an exclusive lock on its credential store while it runs."):"AUTH_FILE_MISSING"===j?(0,l.Tl)("Make sure Xiaomi MiMo Desktop is installed and you are signed in, then retry."):y}),C&&(0,a.jsxs)("details",{className:"mt-1 opacity-70",children:[(0,a.jsx)("summary",{className:"cursor-pointer",children:(0,l.Tl)("Checked paths")}),(0,a.jsx)("pre",{className:"mt-1 whitespace-pre-wrap break-all text-[10px]",children:C})]}),(0,a.jsx)("p",{className:"mt-2 opacity-80",children:(0,l.Tl)("Make sure MiMo Desktop is signed in on this machine.")})]})]})}),(0,a.jsx)(o.$n,{onClick:()=>{E().catch(()=>x("not-found"))},variant:"outline",fullWidth:!0,disabled:v,children:(0,l.Tl)("Retry Local Detect")}),f&&(0,a.jsx)(o.$n,{onClick:M,variant:"outline",fullWidth:!0,disabled:v,className:"mt-2",children:v?(0,l.Tl)("Closing MiMo Desktop..."):(0,l.Tl)("Quit MiMo Desktop and re-detect")})]})]})})}c.propTypes={provider:s().string,isOpen:s().bool.isRequired,onSuccess:s().func,onClose:s().func.isRequired}},51825:(e,t,n)=>{n.d(t,{default:()=>d});var a=n(95155),i=n(84588),r=n(76432),s=n(45496),o=n(73006);let l={mode:{label:"Mode",format:e=>e},defaultModel:{label:"Model",format:e=>e,mono:!0},baseUrl:{label:"Endpoint",format:e=>e,isLink:!0,mono:!0},costPerQuery:{label:"Cost / call",format:e=>0===e?"Free":(0,s.F)(e,4)},pricingUrl:{label:"Pricing",format:()=>"View pricing",isLink:!0},freeTier:{label:"Free tier",format:e=>e},freeMonthlyQuota:{label:"Free quota",format:e=>0===e?"—":e>=999999?"Unlimited":`${e.toLocaleString()} / mo`},searchTypes:{label:"Types",format:e=>e.join(", ")},formats:{label:"Formats",format:e=>e.join(", ")},maxMaxResults:{label:"Max results",format:e=>e},maxCharacters:{label:"Max chars",format:e=>e.toLocaleString()}};function d({config:e,provider:t,title:n="Provider Info"}){if(!e)return null;let s=Object.entries(l).filter(([t])=>void 0!==e[t]&&null!==e[t]&&""!==e[t]).map(([t,n])=>({key:t,label:n.label,value:n.format(e[t]),isLink:n.isLink,mono:n.mono,raw:e[t]})),c=t?.notice?.apiKeyUrl||t?.website,u=t?.notice?.webUrl,m=t?.notice?.text;return(0,a.jsxs)(i.default,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold",children:n}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[u?(0,a.jsxs)("a",{href:u,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-primary hover:underline inline-flex items-center gap-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"open_in_new"}),"Web console"]}):c&&(0,a.jsxs)("a",{href:c,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-primary hover:underline inline-flex items-center gap-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"open_in_new"}),"Get API Key"]}),(0,a.jsx)(r.default,{code:t?.notice?.inviteCode})]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-x-6 gap-y-2",children:[s.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted w-28 shrink-0",children:e.label}),e.isLink?(0,a.jsx)("a",{href:e.raw,target:"_blank",rel:"noopener noreferrer",className:`text-sm text-primary hover:underline truncate ${e.mono?"font-mono":""}`,children:e.value}):(0,a.jsx)("span",{className:`text-sm text-text-main truncate ${e.mono?"font-mono":""}`,children:e.value})]},e.key)),m&&(0,a.jsxs)("div",{className:"flex items-start gap-3 min-w-0 sm:col-span-2",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted w-28 shrink-0 mt-0.5",children:"Notice"}),(0,a.jsx)("span",{className:"text-sm text-text-main leading-relaxed",children:(0,o.Tl)(m)})]})]})]})}},56061:(e,t,n)=>{n.d(t,{default:()=>l});var a=n(95155),i=n(31474);let r={default:"bg-surface-2 text-text-muted",primary:"bg-brand-500/10 text-brand-600 dark:text-brand-300",success:"bg-green-500/10 text-green-600 dark:text-green-400",warning:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",error:"bg-red-500/10 text-red-600 dark:text-red-400",info:"bg-blue-500/10 text-blue-600 dark:text-blue-400"},s={xs:"px-1.5 py-0.5 text-[9px] gap-1",sm:"px-2 py-0.5 text-[10px]",md:"px-2.5 py-1 text-xs",lg:"px-3 py-1.5 text-sm"},o={xs:"10px",sm:"12px",md:"14px",lg:"16px"};function l({children:e,variant:t="default",size:n="md",dot:d=!1,icon:c,className:u}){return(0,a.jsxs)("span",{className:(0,i.cn)("inline-flex items-center gap-1 rounded-full font-medium leading-none",r[t],s[n],u),children:[d&&(0,a.jsx)("span",{className:(0,i.cn)("size-1.5 rounded-full","success"===t&&"bg-green-500","warning"===t&&"bg-yellow-500","error"===t&&"bg-red-500","info"===t&&"bg-blue-500","primary"===t&&"bg-brand-500","default"===t&&"bg-gray-500")}),c&&(0,a.jsx)("span",{className:"material-symbols-outlined shrink-0 leading-none",style:{fontSize:o[n]||"12px",width:o[n]||"12px",height:o[n]||"12px"},children:c}),e]})}},56319:(e,t,n)=>{n.d(t,{default:()=>r});var a=n(95155),i=n(31474);function r({src:e,alt:t="Avatar",name:n,size:s="md",className:o}){let l={xs:"size-6 text-xs",sm:"size-8 text-sm",md:"size-10 text-base",lg:"size-12 text-lg",xl:"size-16 text-xl"};return e?(0,a.jsx)("div",{className:(0,i.cn)("rounded-full bg-cover bg-center bg-no-repeat","ring-2 ring-white dark:ring-surface-dark shadow-sm",l[s],o),style:{backgroundImage:`url(${e})`},role:"img","aria-label":t}):(0,a.jsx)("div",{className:(0,i.cn)("rounded-full flex items-center justify-center font-semibold text-white","ring-2 ring-white dark:ring-surface-dark shadow-sm",l[s],(e=>{if(!e)return"bg-primary";let t=["bg-red-500","bg-orange-500","bg-amber-500","bg-yellow-500","bg-lime-500","bg-green-500","bg-emerald-500","bg-teal-500","bg-cyan-500","bg-sky-500","bg-blue-500","bg-indigo-500","bg-violet-500","bg-purple-500","bg-fuchsia-500","bg-pink-500","bg-rose-500"],n=e.charCodeAt(0)%t.length;return t[n]})(n),o),role:"img","aria-label":t,children:(e=>{if(!e)return"?";let t=e.split(" ");return t.length>=2?`${t[0][0]}${t[1][0]}`.toUpperCase():e.substring(0,2).toUpperCase()})(n)})}},61500:(e,t,n)=>{n.d(t,{default:()=>l});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(35497);function l({isOpen:e,onMethodSelect:t,onClose:n}){let[r,s]=(0,i.useState)(null),[d,c]=(0,i.useState)(""),[u,m]=(0,i.useState)("us-east-1"),[x,p]=(0,i.useState)(""),[h,g]=(0,i.useState)(""),[f,b]=(0,i.useState)(""),[v,k]=(0,i.useState)("us-east-1"),[y,w]=(0,i.useState)(null),[j,N]=(0,i.useState)(!1),[C,O]=(0,i.useState)(!1),[S,F]=(0,i.useState)(!1),[W,T]=(0,i.useState)(null);(0,i.useEffect)(()=>{"import"===r&&e&&(async()=>{O(!0),w(null),F(!1),T(null);try{let e=await fetch("/api/oauth/kiro/auto-import"),t=await e.json();t.found?(p(t.refreshToken),F(!0),t.clientId&&t.clientSecret&&T({clientId:t.clientId,clientSecret:t.clientSecret,region:t.region,authMethod:t.authMethod,profileArn:t.profileArn})):w(t.error||"Could not auto-detect token")}catch(e){w("Failed to auto-detect token")}finally{O(!1)}})()},[r,e]);let I=e=>{s(e),w(null)},$=()=>{s(null),w(null)},A=async()=>{if(!x.trim())return void w("Please enter a refresh token");N(!0),w(null);try{let e=await fetch("/api/oauth/kiro/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:x.trim(),...W||{}})}),n=await e.json();if(!e.ok)throw Error(n.error||"Import failed");t("import")}catch(e){w(e.message)}finally{N(!1)}},D=async()=>{if(!h.trim())return void w("Please paste CLIProxyAPI auth JSON");N(!0),w(null);try{let e=await fetch("/api/oauth/kiro/import-cli-proxy",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({json:h.trim()})}),n=await e.json();if(!e.ok)throw Error(n.error||"CLIProxyAPI import failed");t("import-cli-proxy")}catch(e){w(e.message)}finally{N(!1)}},P=async()=>{if(!f.trim())return void w("Please enter an API key");N(!0),w(null);try{let e=await fetch("/api/oauth/kiro/api-key",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:f.trim(),region:v.trim()||"us-east-1"})}),n=await e.json();if(!e.ok)throw Error(n.error||"Import failed");t("api-key")}catch(e){w(e.message)}finally{N(!1)}},_=e=>{t("social",{provider:e})};return(0,a.jsx)(o.aF,{isOpen:e,title:"Connect Kiro",onClose:n,size:"lg",children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[!r&&(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Choose your authentication method:"}),(0,a.jsx)("button",{onClick:()=>t("builder-id"),className:"w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,a.jsxs)("div",{className:"flex items-start gap-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"shield"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("h3",{className:"font-semibold mb-1",children:"AWS Builder ID"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Recommended for most users. Free AWS account required."})]})]})}),(0,a.jsx)("button",{onClick:()=>I("idc"),className:"w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,a.jsxs)("div",{className:"flex items-start gap-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"business"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("h3",{className:"font-semibold mb-1",children:"AWS IAM Identity Center"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"For enterprise users with custom AWS IAM Identity Center."})]})]})}),(0,a.jsx)("button",{onClick:()=>I("api-key"),className:"w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,a.jsxs)("div",{className:"flex items-start gap-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"key"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("h3",{className:"font-semibold mb-1",children:"API Key"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Use a long-lived Kiro/CodeWhisperer API key (headless auth)."})]})]})}),(0,a.jsx)("button",{onClick:()=>I("social-google"),className:"hidden w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,a.jsxs)("div",{className:"flex items-start gap-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"account_circle"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("h3",{className:"font-semibold mb-1",children:"Google Account"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Login with your Google account (manual callback)."})]})]})}),(0,a.jsx)("button",{onClick:()=>I("social-github"),className:"hidden w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,a.jsxs)("div",{className:"flex items-start gap-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"code"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("h3",{className:"font-semibold mb-1",children:"GitHub Account"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Login with your GitHub account (manual callback)."})]})]})}),(0,a.jsx)("button",{onClick:()=>I("import"),className:"w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,a.jsxs)("div",{className:"flex items-start gap-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"file_upload"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("h3",{className:"font-semibold mb-1",children:"Import Token"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Paste refresh token from Kiro IDE."})]})]})}),(0,a.jsx)("button",{onClick:()=>I("import-cli-proxy"),className:"w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,a.jsxs)("div",{className:"flex items-start gap-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"data_object"}),(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("h3",{className:"font-semibold mb-1",children:"Import CLIProxyAPI JSON"}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Paste external_idp auth JSON from CLIProxyAPI/Kiro Microsoft login."})]})]})})]}),"idc"===r&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["IDC Start URL ",(0,a.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,a.jsx)(o.pd,{value:d,onChange:e=>c(e.target.value),placeholder:"https://your-org.awsapps.com/start",className:"font-mono text-sm"}),(0,a.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"Your organization's AWS IAM Identity Center URL"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium mb-2",children:"AWS Region"}),(0,a.jsx)(o.pd,{value:u,onChange:e=>m(e.target.value),placeholder:"us-east-1",className:"font-mono text-sm"}),(0,a.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"AWS region for your Identity Center (default: us-east-1)"})]}),y&&(0,a.jsx)("p",{className:"text-sm text-red-600",children:y}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:()=>{d.trim()?t("idc",{startUrl:d.trim(),region:u}):w("Please enter your IDC start URL")},fullWidth:!0,children:"Continue"}),(0,a.jsx)(o.$n,{onClick:$,variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"api-key"===r&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,a.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:"Paste a long-lived Kiro/CodeWhisperer API key. It is validated against AWS and stored directly as a bearer credential (no refresh)."})]})}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["API Key ",(0,a.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,a.jsx)(o.pd,{value:f,onChange:e=>b(e.target.value),placeholder:"Paste your Kiro API key...",className:"font-mono text-sm"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium mb-2",children:"AWS Region"}),(0,a.jsx)(o.pd,{value:v,onChange:e=>k(e.target.value),placeholder:"us-east-1",className:"font-mono text-sm"}),(0,a.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"AWS region for the key (default: us-east-1)"})]}),y&&(0,a.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,a.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:y})}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:P,fullWidth:!0,disabled:j||!f.trim(),children:j?"Validating...":"Add API Key"}),(0,a.jsx)(o.$n,{onClick:$,variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"social-google"===r&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"bg-amber-50 dark:bg-amber-900/20 p-4 rounded-lg border border-amber-200 dark:border-amber-800",children:(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-amber-600 dark:text-amber-400",children:"info"}),(0,a.jsxs)("div",{className:"flex-1 text-sm",children:[(0,a.jsx)("p",{className:"font-medium text-amber-900 dark:text-amber-100 mb-1",children:"Manual Callback Required"}),(0,a.jsx)("p",{className:"text-amber-800 dark:text-amber-200",children:"After login, you'll need to copy the callback URL from your browser and paste it back here."})]})]})}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:()=>_("google"),fullWidth:!0,children:"Continue with Google"}),(0,a.jsx)(o.$n,{onClick:$,variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"social-github"===r&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"bg-amber-50 dark:bg-amber-900/20 p-4 rounded-lg border border-amber-200 dark:border-amber-800",children:(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-amber-600 dark:text-amber-400",children:"info"}),(0,a.jsxs)("div",{className:"flex-1 text-sm",children:[(0,a.jsx)("p",{className:"font-medium text-amber-900 dark:text-amber-100 mb-1",children:"Manual Callback Required"}),(0,a.jsx)("p",{className:"text-amber-800 dark:text-amber-200",children:"After login, you'll need to copy the callback URL from your browser and paste it back here."})]})]})}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:()=>_("github"),fullWidth:!0,children:"Continue with GitHub"}),(0,a.jsx)(o.$n,{onClick:$,variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"import"===r&&(0,a.jsxs)("div",{className:"space-y-4",children:[C&&(0,a.jsxs)("div",{className:"text-center py-6",children:[(0,a.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,a.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Auto-detecting token..."}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Reading from AWS SSO cache"})]}),!C&&(0,a.jsxs)(a.Fragment,{children:[S&&(0,a.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800",children:(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,a.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200",children:"Token auto-detected from Kiro IDE successfully!"})]})}),!S&&!y&&(0,a.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,a.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:"Kiro IDE not detected. Please paste your refresh token manually."})]})}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Refresh Token ",(0,a.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,a.jsx)(o.pd,{value:x,onChange:e=>p(e.target.value),placeholder:"Token will be auto-filled...",className:"font-mono text-sm"})]}),y&&(0,a.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,a.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:y})}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:A,fullWidth:!0,disabled:j||!x.trim(),children:j?"Importing...":"Import Token"}),(0,a.jsx)(o.$n,{onClick:$,variant:"ghost",fullWidth:!0,children:"Back"})]})]})]}),"import-cli-proxy"===r&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,a.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:"Paste the Kiro CLIProxyAPI auth JSON containing auth_method=external_idp. Only Microsoft login token endpoints are accepted."})]})}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["CLIProxyAPI Auth JSON ",(0,a.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,a.jsx)("textarea",{value:h,onChange:e=>g(e.target.value),placeholder:'{"auth_method":"external_idp","access_token":"...","refresh_token":"...","client_id":"...","token_endpoint":"https://login.microsoftonline.com/.../oauth2/v2.0/token","profile_arn":"...","scopes":"..."}',className:"min-h-40 w-full rounded-md border border-border bg-surface p-3 font-mono text-sm outline-none focus:border-primary"})]}),y&&(0,a.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,a.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:y})}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:D,fullWidth:!0,disabled:j||!h.trim(),children:j?"Importing...":"Import CLIProxyAPI JSON"}),(0,a.jsx)(o.$n,{onClick:$,variant:"ghost",fullWidth:!0,children:"Back"})]})]})]})})}l.propTypes={isOpen:s().bool.isRequired,onMethodSelect:s().func.isRequired,onClose:s().func.isRequired}},62630:(e,t,n)=>{n.d(t,{gH:()=>a});function a(e,t){return RegExp("^"+e.split("*").map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join(".*")+"$","i").test(t)}},62899:(e,t,n)=>{n.d(t,{default:()=>c});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(90882),l=n(61500),d=n(94230);function c({isOpen:e,providerInfo:t,onSuccess:n,onClose:r}){let[s,u]=(0,i.useState)(null),[m,x]=(0,i.useState)(null),[p,h]=(0,i.useState)(null),g=(0,i.useCallback)((e,t)=>{"builder-id"===e?u("builder-id"):"idc"===e?(u("idc"),h(t)):"social"===e?(u("social"),x(t.provider)):("import"===e||"api-key"===e)&&n?.()},[n]),f=()=>{u(null),x(null),h(null)};return s?"builder-id"===s||"idc"===s?(0,a.jsx)(o.default,{isOpen:e,provider:"kiro",providerInfo:t,onSuccess:()=>{u(null),h(null),n?.(),r?.()},onClose:f,idcConfig:p}):"social"===s&&m?(0,a.jsx)(d.default,{isOpen:e,provider:m,onSuccess:()=>{u(null),x(null),n?.(),r?.()},onClose:f}):null:(0,a.jsx)(l.default,{isOpen:e,onMethodSelect:g,onClose:r})}c.propTypes={isOpen:s().bool.isRequired,providerInfo:s().shape({name:s().string}),onSuccess:s().func,onClose:s().func.isRequired}},65635:(e,t,n)=>{n.d(t,{e:()=>a});async function a(e){let t=String(e??"");try{if(navigator?.clipboard?.writeText)return await navigator.clipboard.writeText(t),!0}catch{}try{let e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.select();let n=document.execCommand("copy");return document.body.removeChild(e),n}catch{return!1}}},65921:(e,t,n)=>{n.d(t,{i:()=>r});var a=n(1934);let i=0,r=(0,a.v)((e,t)=>({notifications:[],addNotification:n=>{let a=++i,r={id:a,type:n.type||"info",message:n.message,title:n.title||null,duration:n.duration??5e3,dismissible:n.dismissible??!0,createdAt:Date.now()};return e(e=>({notifications:[...e.notifications,r]})),r.duration>0&&setTimeout(()=>t().removeNotification(a),r.duration),a},removeNotification:t=>{e(e=>({notifications:e.notifications.filter(e=>e.id!==t)}))},clearAll:()=>e({notifications:[]}),success:(e,n)=>t().addNotification({type:"success",message:e,title:n}),error:(e,n)=>t().addNotification({type:"error",message:e,title:n,duration:8e3}),warning:(e,n)=>t().addNotification({type:"warning",message:e,title:n}),info:(e,n)=>t().addNotification({type:"info",message:e,title:n})}))},66996:(e,t,n)=>{n.d(t,{default:()=>b});var a=n(95155),i=n(14051),r=n.n(i),s=n(73006),o=n(75958),l=n(67352),d=n(31474),c=n(35655);function u({className:e}){return(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:e,"aria-hidden":"true",children:[(0,a.jsx)("path",{d:"M12 3l1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9z"}),(0,a.jsx)("path",{d:"M19 15l.8 2.2L22 18l-2.2.8L19 21l-.8-2.2L16 18l2.2-.8z"})]})}function m(e){return Number(e||0).toLocaleString("en-US",{maximumFractionDigits:2})}function x(e,t){return(0,c.h7)(e,t)}function p(e){return void 0!==e.remaining&&null!==e.remaining?Math.max(0,Number(e.remaining)):Math.max(0,Number(e.total||0)-Number(e.used||0))}function h({row:e,label:t=null,inset:n=!1}){let i=Number((e.totalNum??e.total)||0),r=Number.isFinite(e.remainingNum)?Number(e.remainingNum):Number(e.remaining??p(e)),g=(0,l.Rs)(e),f=(0,l.OG)(e);if(g){let t=(0,l.UL)(e.name),n=r>0,i=!0===e.checkinToday;return(0,a.jsxs)("div",{className:"min-w-0 space-y-1",children:[(0,a.jsxs)("div",{className:"flex min-w-0 items-baseline justify-between gap-2 tabular-nums",children:[(0,a.jsxs)("span",{className:"flex min-w-0 items-baseline gap-1",children:[(0,a.jsx)(u,{className:"size-[11px] shrink-0 self-center text-text-muted"}),(0,a.jsx)("b",{className:(0,d.cn)("text-[12px] font-bold",n?"text-text":c.pM.critical),children:m(r)}),t?(0,a.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",t,")"]}):null,i&&(0,a.jsxs)("span",{className:"ml-1 inline-flex shrink-0 items-center gap-0.5 rounded bg-green-500/10 px-1 py-px text-[10px] font-medium text-green-600 dark:text-green-400",style:{transform:"translateY(-1px)"},children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[11px]",children:"check_circle"}),(0,s.Tl)("Checked in today"),Number.isInteger(e.streakDays)&&e.streakDays>1&&(0,a.jsxs)("span",{className:"text-text-muted",children:[" \xb7 ",(0,s.Tl)("{count}-day streak").replace("{count}",String(e.streakDays))]})]})]}),(0,a.jsx)("span",{className:"shrink-0 text-[11px] text-text-muted",children:(0,o.M)((0,l._6)(e.name)||e.name)})]}),(0,a.jsx)(c.Ay,{pct:100*!!n})]})}let b=(0,l.pR)(e),v=(0,l.Cd)(e,b);return(0,a.jsxs)("div",{className:(0,d.cn)("min-w-0 space-y-1",n&&"pl-[17px]"),children:[(0,a.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2 text-[11px] tabular-nums",children:[(0,a.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[n?null:(0,a.jsx)(u,{className:"size-[11px] shrink-0 text-text-muted"}),(0,a.jsx)("span",{className:"truncate text-text-muted",children:t??(0,o.M)(e.name)})]}),(0,a.jsxs)("span",{className:(0,d.cn)("shrink-0",c.pM[v]),children:[e.percentScale?`${Math.round(b)}%`:(0,s.Tl)("remaining {remaining} of {total}").replace("{remaining}",m(r)).replace("{total}",m(i)),e.resetAt?` ${x(f,e.resetAt)}`:""]})]}),(0,a.jsx)(c.Ay,{pct:b})]})}let g=[.35,.65,1];function f({ladder:e}){let t=e.length,n=2.5/Math.max(1,t-1),i=e=>2===t?g[2*e]:g[e],r=t=>c.pM[e[t].ownPct>0&&e[t].ownPct<l.MF?"critical":"reset"],p=e[0];return(0,a.jsxs)("div",{className:"min-w-0 space-y-1",children:[(0,a.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2 text-[11px] tabular-nums",children:[(0,a.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,a.jsx)(u,{className:"size-[11px] shrink-0 text-text-muted"}),(0,a.jsx)("span",{className:"truncate text-text-muted",children:(0,o.M)(p.row.name||"")})]}),(0,a.jsxs)("span",{className:(0,d.cn)("shrink-0",r(0)),children:[(0,s.Tl)("remaining {remaining} of {total}").replace("{remaining}",m(p.ownRemaining)).replace("{total}",m(p.ownTotal)),p.row.resetAt?` ${x(!0,p.row.resetAt)}`:""]})]}),(0,a.jsx)(c.$n,{height:8,role:"img","aria-label":e.map(({row:e,ownRemaining:t,ownTotal:n})=>`${(0,o.M)(e.name)} ${m(t)}/${m(n)}`).join(","),children:e.map(({row:t,widthPct:r,ownRemaining:s,ownTotal:l},u)=>(0,a.jsx)("span",{className:(0,d.cn)("absolute left-0",c.jH),style:{top:`${u*n}px`,bottom:`${u*n}px`,width:`${r}%`,opacity:i(u),...(0,c.jE)(e[u].ownPct)},title:`${(0,o.M)(t.name)} ${m(s)} / ${m(l)}`},`${t.name||"band"}-${u}`))}),e.slice(1).map(({row:t,ownRemaining:n,ownTotal:l},u)=>(0,a.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2 text-[11px] tabular-nums",style:{paddingLeft:`${(u+1)*10}px`},children:[(0,a.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,a.jsx)("span",{className:"size-[8px] shrink-0 rounded-[2px]",style:{opacity:i(u+1),background:(0,c.dI)(e[u+1].ownPct)},"aria-hidden":"true"}),(0,a.jsx)("span",{className:"truncate text-text-muted",children:(0,o.M)(t.name)})]}),(0,a.jsxs)("span",{className:(0,d.cn)("shrink-0",r(u+1)),children:[(0,s.Tl)("remaining {remaining} of {total}").replace("{remaining}",m(n)).replace("{total}",m(l)),t.resetAt?` ${x(!0,t.resetAt)}`:""]})]},`${t.name||"layer"}-${u}`))]})}function b({packs:e=[],className:t,nestedCycle:n=!1}){let i,r,g=(e||[]).filter(e=>e&&"object"==typeof e&&!0!==e.detailOnly&&!(0,l.eK)(e));if(0===g.length)return null;let v=(e||[]).filter(e=>e&&"object"==typeof e&&!0===e.detailOnly).map(e=>({...e,totalNum:Number(e.total||0),remainingNum:p(e)})),k=g.map(e=>{let t=Number(e.total||0);return{...e,totalNum:t,remainingNum:p(e)}}),y=(0,l.GT)(k),w=(0,l.Ug)(k,{force:!0===n}),j=new Set(w.map(e=>e.row)),N=(0,l.MK)(k).filter(e=>!j.has(e)),C=k.some(e=>"资源包"===String(e.name||"")),O=k.filter(e=>(0,l.Z_)(e)).filter(e=>!(C&&String(e.name||"").startsWith("赠送包"))),S=new Map;for(let e of O){let t=String(e.name||"").replace(/\s*\d+\s*$/,"").trim();t&&(S.has(t)||S.set(t,[]),S.get(t).push(e))}let F=[...S.entries()].map(([e,t])=>{let n=t.reduce((e,t)=>e+t.totalNum,0),a=t.reduce((e,t)=>e+Number(t.used||0),0),i=t.reduce((e,t)=>e+t.remainingNum,0);return{base:e,members:t,totalNum:n,usedNum:a,remainingNum:i,live:t.filter(e=>e.remainingNum>0&&e.totalNum>0)}}).filter(e=>e.members.length>=2&&e.totalNum>0),W=new Set(F.flatMap(e=>e.members)),T=y.monthly.filter(e=>!j.has(e)&&!(0,l.Rt)(e)&&(F.length>0||!0===e.giftPack||!0===e.displayRemaining)),I=new Set,$=O.filter(e=>{if(W.has(e))return!1;let t=`${Number(e.used||0)}|${Number(e.total||0)}|${e.resetAt||""}`;return!I.has(t)&&(I.add(t),!0)}),A=[...F.flatMap(e=>e.members),...T,...$],D=A.reduce((e,t)=>e+t.totalNum,0),P=A.reduce((e,t)=>e+t.remainingNum,0),_=F.length+$.length+T.length,E=_<=1,z=1===_&&A.length>0&&A.every(e=>(0,l.Rs)(e)),M=z?(0,l.UL)(A[0]?.name):"",L=e=>"资源包"===e?"资源包 Credits":e;F.length;let R=E&&v.length>0,q=R?v:A,U=A.some(e=>e.resetAt);return(0,a.jsxs)("div",{className:(0,d.cn)("min-w-0 space-y-2",t),children:[A.length>0&&(0,a.jsxs)("div",{className:"flex items-end justify-between gap-3",children:[(0,a.jsxs)("span",{className:"flex items-end gap-1.5 tabular-nums",children:[(0,a.jsx)(u,{className:"size-[12px] shrink-0 self-center text-primary"}),(0,a.jsx)("b",{className:"text-[14px] font-bold leading-none text-text",children:m(P)}),M?(0,a.jsxs)("span",{className:"text-[10px] leading-none text-text-muted",children:["(",M,")"]}):null,A[0]?.checkinToday&&(0,a.jsxs)("span",{className:"ml-1 inline-flex shrink-0 items-center gap-0.5 rounded bg-green-500/10 px-1 py-px text-[10px] font-medium text-green-600 dark:text-green-400",style:{transform:"translateY(-1px)"},children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[11px]",children:"check_circle"}),(0,s.Tl)("Checked in today"),Number.isInteger(A[0].streakDays)&&A[0].streakDays>1&&(0,a.jsxs)("span",{className:"text-text-muted",children:[" \xb7 ",(0,s.Tl)("{count}-day streak").replace("{count}",String(A[0].streakDays))]})]})]}),!z&&(0,a.jsxs)("span",{className:"inline-flex shrink-0 items-baseline text-xs leading-none tabular-nums text-text-muted",children:[m(P)," / ",m(D)]})]}),A.length>0&&((e,t)=>{let n=e.filter(e=>e.remainingNum>0&&e.totalNum>0).sort((e,t)=>String(e.resetAt||"").localeCompare(String(t.resetAt||""))),i=0,r=n.map(e=>({...e,alpha:(0,l.OG)(e)?1:Math.max(.45,.85-.05*i++)})),o=r;if(r.length>20){let e=r.slice(0,19),t=r.slice(19);o=[...e,{name:(0,s.Tl)("{count} more packs").replace("{count}",String(t.length)),remainingNum:t.reduce((e,t)=>e+t.remainingNum,0),totalNum:t.reduce((e,t)=>e+t.totalNum,0),resetAt:t[0]?.resetAt||null,recurring:!1,alpha:.6}]}let d=e.reduce((e,t)=>e+t.remainingNum,0),u=t>0?Math.max(0,1-d/t):0,p=t>0?d/t*100:0,h=p>0&&p<l.MF?(0,c.dI)(0):"hsl(142 60% 45%)";return(0,a.jsxs)(c.$n,{className:"flex gap-[2px]",role:"img","aria-label":(0,s.Tl)("{count} packs, remaining {remaining} of {total}").replace("{count}",String(n.length)).replace("{remaining}",m(d)).replace("{total}",m(t)),children:[o.map((e,n)=>{let i=t>0?e.remainingNum/t:0,r=(0,l.OG)(e);return(0,a.jsx)("span",{className:"block h-full min-w-[3px]",style:{flex:`${i.toFixed(4)} 1 0`,opacity:e.alpha,background:h},title:[e.name||(0,s.Tl)("Quota package"),`${(0,s.Tl)("Remaining")} ${m(e.remainingNum)} / ${m(e.totalNum)}`,e.resetAt?x(r,e.resetAt):null].filter(Boolean).join(",")},`${e.name||"pack"}-${n}`)}),u>0&&(0,a.jsx)("span",{"aria-hidden":"true",className:"block h-full",style:{flex:`${u.toFixed(4)} 1 0`}})]})})(q,D),C&&(0,a.jsx)("div",{className:"text-[11px] text-text-muted",children:(0,s.Tl)("includes {names}").replace("{names}",[...$.map(e=>(0,o.M)(L(e.name))),"资源包 Credits"].join("、"))}),A.length>0&&(r=(i=q.filter(e=>e.remainingNum>0)).filter(e=>e.resetAt).sort((e,t)=>String(e.resetAt).localeCompare(String(t.resetAt)))[0]||null,E&&!U&&(!R||z)?(0,a.jsx)("div",{className:"text-[11px] text-text-muted",children:(0,o.M)((0,l._6)(L(A[0].name))||A[0].name)}):0===i.length?null:(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3 text-[11px] tabular-nums",children:[(0,a.jsx)("span",{className:"text-text-muted",children:(0,s.Tl)("{count} resource packs").replace("{count}",String(i.length))}),r?(0,a.jsxs)("span",{className:"inline-flex min-w-0 items-center gap-3 truncate text-text-muted",children:[(0,a.jsxs)("span",{className:"inline-flex shrink-0 items-center gap-1",children:[(0,a.jsx)(u,{className:"size-[11px] shrink-0"}),m(r.remainingNum)]}),(0,a.jsx)("span",{className:"shrink-0",children:x((0,l.OG)(r),r.resetAt)})]}):null]})),$.length>0&&!E&&(0,a.jsx)(a.Fragment,{children:$.map((e,t)=>(0,a.jsx)(h,{row:e},`${e.name||"pool"}-${t}`))}),w.length>0&&(0,a.jsx)(f,{ladder:w}),(0,l.EJ)(N).map((e,t)=>e.family?(0,a.jsxs)("div",{className:"min-w-0 space-y-1.5",children:[(0,a.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5 text-[11px]",children:[(0,a.jsx)(u,{className:"size-[11px] shrink-0 text-text-muted"}),(0,a.jsx)("span",{className:"truncate text-text",children:(0,s.Tl)(e.family)})]}),e.rows.map((e,t)=>(0,a.jsx)(h,{row:e,inset:!0,label:(0,s.Tl)((0,l.TM)(e.name)?.window||e.name)},`${e.name||"win"}-${t}`))]},`${e.family}-${t}`):e.rows.map((e,n)=>(0,a.jsx)(h,{row:e},`${e.name||"win"}-${t}-${n}`)))]})}f.propTypes={ladder:r().arrayOf(r().object).isRequired},h.propTypes={row:r().shape({name:r().string,used:r().oneOfType([r().number,r().string]),total:r().oneOfType([r().number,r().string]),remaining:r().oneOfType([r().number,r().string]),remainingNum:r().number,totalNum:r().number,resetAt:r().oneOfType([r().string,r().instanceOf(Date)]),recurring:r().bool})},b.propTypes={nestedCycle:r().bool,packs:r().arrayOf(r().shape({name:r().string,used:r().oneOfType([r().number,r().string]),total:r().oneOfType([r().number,r().string]),remaining:r().oneOfType([r().number,r().string]),resetAt:r().oneOfType([r().string,r().instanceOf(Date)]),recurring:r().bool})),className:r().string}},67352:(e,t,n)=>{n.d(t,{Cd:()=>w,D2:()=>C,EJ:()=>I,GT:()=>f,MF:()=>y,MK:()=>b,OG:()=>k,PZ:()=>S,Rs:()=>d,Rt:()=>v,TM:()=>T,TV:()=>N,UL:()=>u,UY:()=>O,Ug:()=>g,XV:()=>j,Z_:()=>c,_6:()=>m,d$:()=>A,eK:()=>o,pR:()=>x,qz:()=>F});let a=/total|aggregate|summary|^总/i,i=/month|月/i,r=/month|月|week|周|滚动|rolling|5h|hourly|window/i,s=/balance|voucher|cash|余额|代金券|现金/i;function o(e){return a.test(String(e?.name||""))}function l(e){return e?.recurring===!0||r.test(String(e?.name||""))}function d(e){return e?.isCreditBalance===!0||s.test(String(e?.name||""))}function c(e){return!l(e)||d(e)}function u(e){let t=/\(([^)]+)\)\s*$/.exec(String(e||""));return t?t[1].trim():""}function m(e){return String(e||"").replace(/\s*\([^)]*\)\s*$/,"").trim()}function x(e){let t=Number((e?.totalNum??e?.total)||0),n=Number.isFinite(e?.remainingNum)?Number(e.remainingNum):Math.max(0,t-Number(e?.used||0));return t<=0?0:Math.min(100,Math.max(0,n/t*100))}let p={monthly:/month|月/i,weekly:/week|周/i,rolling:/rolling|滚动|session|5h/i};function h(e){return Number((e?.totalNum??e?.total)||0)}function g(e=[],{force:t=!1}={}){let n={monthly:null,weekly:null,rolling:null};for(let t of e){if(t?.giftPack===!0||t?.detailOnly===!0||!l(t)||d(t))continue;let e=String(t?.name||"");for(let[a,i]of Object.entries(p))if(!n[a]&&i.test(e)){n[a]=t;break}}if(!n.monthly)return[];let a=[n.monthly,n.weekly,n.rolling].filter(Boolean);if(a.length<2)return[];if(!t)for(let e=1;e<a.length;e+=1){let t=h(a[e]);if(!(t>0&&t<h(a[e-1])))return[]}let i=h(a[0]);if(!(i>0))return[];let r=i;return a.map((e,t)=>{let n,a=h(e),s=(n=h(e),Number.isFinite(e?.remainingNum)?Number(e.remainingNum):Math.max(0,n-Number(e?.used||0))),o=Math.max(0,Math.min(s,r));return r=o,{row:e,depth:t,widthPct:Math.min(100,o/i*100),ownRemaining:s,ownTotal:a,ownPct:x(e)}})}function f(e=[]){let t=e.filter(e=>l(e)&&!d(e)),n=t.filter(e=>i.test(String(e.name||""))),a=t.filter(e=>!n.includes(e));return{hasAnyCycle:t.length>0,windows:[...a,...n],monthly:n}}function b(e=[]){let{monthly:t,windows:n}=f(e),a=t.filter(e=>e?.giftPack!==!0);return[...n.filter(e=>!t.includes(e)),...a]}function v(e){return e?.giftPack===!0&&0>=x(e)}function k(e){return e?.recurring!==!1&&l(e)}let y=10;function w(e,t=x(e)){return t>0&&t<y?"critical":k(e)?"reset":"expire"}function j(e){if(!e)return"";let t=new Date(e);return Number.isNaN(t.getTime())?"":`${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`}function N(e,t=Date.now()){if(!e)return"";let n=new Date(e).getTime();if(Number.isNaN(n))return"";let a=Math.max(0,Math.round((n-t)/1e3));return a>=86400?`${Math.floor(a/86400)}d ${Math.floor(a%86400/3600)}h`:a>=3600?`${Math.floor(a/3600)}h ${Math.floor(a%3600/60)}m`:`${Math.floor(a/60)}m ${a%60}s`}function C(e,t=Date.now()){if(k(e)||!e?.resetAt)return!1;let n=new Date(e.resetAt).getTime();return Number.isFinite(n)&&n<=t}function O(e,t=Date.now()){return!(e?.unlimited===!0||k(e))&&(!!C(e,t)||Number(e?.total||0)>0&&0>=(Number.isFinite(e?.remainingNum)?Number(e.remainingNum):Math.max(0,Number(e?.total||0)-Number(e?.used||0))))}function S(e=[]){return(e||[]).filter(e=>e&&"object"==typeof e&&!(o(e)||e?.summarizesDetail===!0))}function F(e=[]){let t=S(e);return!!t.some(e=>!0===e.detailOnly||!0===e.giftPack)||t.filter(e=>!k(e)).length>=2}let W=/^(.+?)\s+·\s+(.+)$/;function T(e){let t=W.exec(String(e||"").trim());return t?{family:t[1],window:t[2]}:null}function I(e=[]){let t=[];for(let n of e){let e=T(n?.name),a=e?.family||null,i=t[t.length-1];a&&i&&i.family===a?i.rows.push(n):t.push({family:a,rows:[n]})}return t}let $=[[0,4],[15,22],[35,40],[65,130],[100,158]];function A(e){let t=Math.min(100,Math.max(0,Number(e)||0));for(let e=1;e<$.length;e+=1){let[n,a]=$[e];if(t<=n){let[i,r]=$[e-1];return Math.round(r+(a-r)*(t-i)/(n-i))}}return $[$.length-1][1]}},67852:(e,t,n)=>{n.d(t,{A:()=>ep});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(8247),l=n(35650),d=n(41658),c=n(74519),u=n(69036),m=n(50247),x=n(77622),p=n(89403),h=n(29892),g=n(70224),f=n(84670),b=n(68031),v=n(54173),k=n(49651),y=n(87111),w=n(41909),j=n(50159),N=n(80323),C=n(54689),O=n(41185),S=n(53006),F=n(36900),W=n(71657),T=n(40942),I=n(62391),$=n(42887),A=n(25097),D=n(82640),P=n(10572),_=n(91685),E=n(73119),z=n(50661),M=n(86619),L=n(89717),R=n(50658),q=n(59435),U=n(4722),K=n(85836),G=n(76189),V=n(12068),B=n(76147),J=n(37058),H=n(46201),Q=n(83482),Y=n(72057),X=n(72638),Z=n(16743),ee=n(35811),et=n(28296),en=n(52302),ea=n(72769),ei=n(85979),er=n(13448),es=n(37841),eo=n(9897),el=n(94938),ed=n(56513),ec=n(86097),eu=n(8297);let em={openai:l.A,anthropic:d.A,claude:c.A,gemini:u.A,deepseek:m.A,minimax:x.A,"minimax-cn":x.A,groq:p.A,nvidia:h.A,xai:g.A,openrouter:f.A,mistral:b.A,cohere:v.A,perplexity:k.A,together:y.A,fireworks:w.A,siliconflow:j.A,"siliconflow-cn":j.A,kimi:N.A,glm:C.A,"glm-cn":C.A,"aws-polly":O.A,azure:S.A,"cloudflare-ai":F.A,huggingface:W.A,ollama:T.A,sambanova:I.A,cerebras:$.A,venice:A.A,nebius:D.A,hyperbolic:P.A,featherless:_.A,baidu:E.A,tencent:z.A,"volcengine-ark":M.A,github:L.A,cursor:R.A,cline:q.A,windsurf:U.A,kiro:K.A,trae:G.A,"jina-ai":V.A,exa:B.A,tavily:J.A,"brave-search":H.A,searchapi:Q.A,searxng:Y.A,"fish-audio":X.A,assemblyai:Z.A,elevenlabs:ee.A,"voyage-ai":et.A,"fal-ai":en.A,recraft:ea.A,"stability-ai":ei.A,runwayml:er.A,morph:es.A,comfyui:eo.A,sensenova:el.A,longcat:ed.A,vertex:ec.A,"vercel-ai-gateway":eu.A};function ex({providerId:e,size:t=32,className:n=""}){let i=em[e];if(!i)return null;let r=i.Color||i;return(0,a.jsx)(r,{size:t,className:n})}function ep({src:e,providerId:t,alt:n,size:r=32,className:s="",fallbackText:l="?",fallbackColor:d}){let c=function(e,t){if(t)return(0,o.HY)(t);if(!e)return null;let n=String(e).match(/^\/providers\/([^/]+)\.png$/i);return n?(0,o.HY)(n[1]):e}(e,t),[u,m]=(0,i.useState)(!1);return t&&em[t]?(0,a.jsx)(ex,{providerId:t,size:r,className:s}):!c||u?(0,a.jsx)("span",{className:`inline-flex items-center justify-center font-bold rounded-lg ${s}`.trim(),style:{width:r,height:r,color:d,fontSize:Math.max(10,Math.floor(.38*r))},children:l}):(0,a.jsx)("img",{src:c,alt:n,width:r,height:r,className:s,loading:"lazy",decoding:"async",onError:()=>{let e=c.match(/^\/providers\/([^/]+)\.png$/i);e&&(0,o.Kw)(e[1]),t&&(0,o.Kw)(t),m(!0)}})}ep.propTypes={src:s().string,providerId:s().string,alt:s().string,size:s().number,className:s().string,fallbackText:s().string,fallbackColor:s().string}},72767:(e,t,n)=>{n.d(t,{A:()=>s});var a=n(1934),i=n(90620);let r=null,s=(0,a.v)((e,t)=>({settings:null,loading:!1,error:null,lastFetched:0,invalidate:()=>e({lastFetched:0}),fetchSettings:async({force:n=!1}={})=>{let{lastFetched:a,settings:s}=t();return!n&&s&&Date.now()-a<i.U5?s:r||(e({loading:!0,error:null}),r=(async()=>{try{let t=await fetch("/api/settings"),n=await t.json();if(t.ok)return e({settings:n,loading:!1,lastFetched:Date.now()}),n;e({error:n.error,loading:!1})}catch(t){e({error:"Failed to fetch settings",loading:!1})}finally{r=null}return null})())},patchSettings:async n=>{try{let a=await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(!a.ok)return null;let i=await a.json();return e({settings:{...t().settings,...i},lastFetched:Date.now()}),i}catch{return null}}}))},72908:(e,t,n)=>{n.d(t,{default:()=>f});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(81127),l=n(67852),d=n(29366),c=n(929),u=n(28777),m=n(88105),x=n(73006);let p=[...Object.keys(m.zN),...Object.keys(m.IS),...Object.keys(m.nJ),...Object.keys(m.fg)],h=Object.keys(m.IS).filter(e=>m.IS[e].noAuth),g=["cursor","zed"];function f({isOpen:e,onClose:t,onSelect:n,onDeselect:r,selectedModel:s,activeProviders:b=[],title:v,modelAliases:k={},kindFilter:y=null,capFilter:w=null,addedModelValues:j=[],closeOnSelect:N=!0}){let C=(0,i.useMemo)(()=>y?b.filter(e=>{let t=m.Q2[e.provider];return(t?.serviceKinds||["llm"]).includes(y)}):b,[b,y]),{getCaps:O}=(0,c.yU)(),[S,F]=(0,i.useState)(""),[W,T]=(0,i.useState)(()=>{let e=window.localStorage.getItem("modelSelectOnlyConnected");return null===e||"1"===e}),[I,$]=(0,i.useState)([]),[A,D]=(0,i.useState)([]),[P,_]=(0,i.useState)([]),[E,z]=(0,i.useState)({}),[M,L]=(0,i.useState)({}),R=(0,i.useMemo)(()=>{let e=Object.fromEntries(g.map(e=>[e,[]]));for(let t of b)Object.hasOwn(e,t.provider)&&t.id&&e[t.provider].push(t.id);return e},[b]);(0,i.useEffect)(()=>{if(!e)return void L({});let t=!1;return Promise.all(g.map(async e=>{let t=R[e];if(0===t.length)return[e,[]];let n=await Promise.all(t.map(async e=>{let t=await fetch(`/api/providers/${e}/models`,{cache:"no-store"});if(!t.ok)return[];let n=await t.json();return Array.isArray(n.models)?n.models:[]})),a=new Set;return[e,n.flat().filter(e=>!(!e?.id||a.has(e.id))&&(a.add(e.id),!0))]})).then(e=>{t||L(Object.fromEntries(e))}).catch(e=>{console.warn("Unable to load live catalog models for selector:",e),t||L({})}),()=>{t=!0}},[e,R]);let q=async()=>{try{let e=await fetch("/api/combos");if(!e.ok)throw Error(`Failed to fetch combos: ${e.status}`);let t=await e.json();$(t.combos||[])}catch(e){console.error("Error fetching combos:",e),$([])}};(0,i.useEffect)(()=>{e&&q()},[e]);let U=async()=>{try{let e=await fetch("/api/provider-nodes");if(!e.ok)throw Error(`Failed to fetch provider nodes: ${e.status}`);let t=await e.json();D(t.nodes||[])}catch(e){console.error("Error fetching provider nodes:",e),D([])}};(0,i.useEffect)(()=>{e&&U()},[e]);let K=async()=>{try{let e=await fetch("/api/models/custom");if(!e.ok)throw Error(`Failed to fetch custom models: ${e.status}`);let t=await e.json();_(t.models||[])}catch(e){console.error("Error fetching custom models:",e),_([])}};(0,i.useEffect)(()=>{e&&K()},[e]);let G=async()=>{try{let e=await fetch("/api/models/disabled");if(!e.ok)throw Error(`Failed to fetch disabled models: ${e.status}`);let t=await e.json();z(t.disabled||{})}catch(e){console.error("Error fetching disabled models:",e),z({})}};(0,i.useEffect)(()=>{e&&G()},[e]);let V=(0,i.useMemo)(()=>({...m.zN,...m.IS,...m.nJ,...m.fg}),[]),B=(0,i.useMemo)(()=>{let e={},t=new Set(["webSearch","webFetch"]),n=new Set(["image","tts","stt","embedding","imageToText","systemone"]),a=new Set(["tts","image","webFetch"]),i=new Set([...C.map(e=>e.provider),...y?h.filter(e=>(m.Q2[e]?.serviceKinds||["llm"]).includes(y)):h]),r=Object.keys(V).filter(e=>{if(i.has(e))return!1;let t=V[e];return!!t&&!t.hidden&&(!y||(t.serviceKinds||["llm"]).includes(y))}),s=(e,t)=>{let n=p.indexOf(e),a=p.indexOf(t);return(-1===n?999:n)-(-1===a?999:a)};return[...[...i].sort(s),...[...r].sort(s)].forEach(r=>{let s=(0,m.wG)(r),o=V[r]||{name:r,color:"#666"},l=(0,m.mq)(r)||(0,m.gb)(r),d=i.has(r);if(y&&t.has(y)){e[r]={name:o.name,alias:s,color:o.color,models:[{id:r,name:o.name,value:r}],isConnected:d};return}if(o.passthroughModels){let t=Object.entries(k).filter(([,e])=>e.startsWith(`${s}/`)).map(([e,t])=>({id:t.replace(`${s}/`,""),name:e,value:t})),i=P.filter(e=>e.providerAlias===s).map(e=>({id:e.id,name:e.name||e.id,value:`${s}/${e.id}`,kind:(0,u.CP)(e),isCustom:!0})),l=t;if(y&&n.has(y)){let e=i.filter(e=>(0,u.CP)(e)===y);0===(l=[...e,...(0,u.KC)(r).filter(e=>(0,u.CP)(e)===y).map(e=>({id:e.id,name:e.name,value:`${s}/${e.id}`,kind:(0,u.CP)(e)})).filter(t=>!e.some(e=>e.value===t.value))]).length&&a.has(y)&&(o.serviceKinds||["llm"]).includes(y)&&(l=[{id:r,name:o.name,value:s}])}else{let e=i.filter(e=>!(0,u.CP)(e)||"llm"===(0,u.CP)(e)),n=new Set([...t,...e].map(e=>e.value)),a=(0,u.KC)(r).filter(e=>!(0,u.CP)(e)||"llm"===(0,u.CP)(e)).map(e=>({id:e.id,name:e.name,value:`${s}/${e.id}`,kind:(0,u.CP)(e)})).filter(e=>!n.has(e.value));l=[...e,...t.filter(t=>!e.some(e=>e.value===t.value)),...a]}if(l.length>0){let t=A.find(e=>e.id===r),n=t?.name||o.name;e[r]={name:n,alias:s,color:o.color,models:l,isConnected:d}}}else if(l){if(y&&n.has(y))return;let t=b.find(e=>e.provider===r),a=A.find(e=>e.id===r),i=a?.name||t?.name||o.name,s=t?.providerSpecificData?.prefix||a?.prefix||r,l=Object.entries(k).filter(([,e])=>e.startsWith(`${r}/`)).map(([e,t])=>({id:t.replace(`${r}/`,""),name:e,value:`${s}/${t.replace(`${r}/`,"")}`})),c=P.filter(e=>e.providerAlias===r).map(e=>({id:e.id,name:e.name||e.id,value:`${s}/${e.id}`,isCustom:!0})),u=new Set(l.map(e=>e.value)),m=[...l,...c.filter(e=>!u.has(e.value))],x=m.length>0?m:[{id:`__placeholder__${r}`,name:`${s}/model-id`,value:`${s}/model-id`,isPlaceholder:!0}];e[r]={name:i,alias:s,color:o.color,models:x,isCustom:!0,hasModels:m.length>0,isConnected:d}}else{var c;let t=M[r]||[],i=t.length>0?t:(0,u.KC)(r),l=new Set(i.map(e=>e.id)),m=i.length>0,x=Object.entries(k).filter(([e,t])=>t.startsWith(`${s}/`)&&(!m||e===t.replace(`${s}/`,""))&&!l.has(t.replace(`${s}/`,""))).map(([e,t])=>({id:t.replace(`${s}/`,""),name:e,value:t,isCustom:!0})),p=new Set(x.map(e=>e.id)),h=P.filter(e=>e.providerAlias===s&&!l.has(e.id)&&!p.has(e.id)).map(e=>({id:e.id,name:e.name||e.id,value:`${s}/${e.id}`,isCustom:!0})),g=[...i.map(e=>({id:e.id,name:e.name,value:`${s}/${e.id}`,kind:(0,u.CP)(e)})),...x,...h],f=new Set,b=(c=g.filter(e=>!f.has(e.value)&&(f.add(e.value),!0)),y?n.has(y)?c.filter(e=>e.isPlaceholder||(0,u.CP)(e)===y):c:c.filter(e=>e.isPlaceholder||e.isCustom||!(0,u.CP)(e)||"llm"===(0,u.CP)(e)));0===b.length&&y&&a.has(y)&&(o.serviceKinds||["llm"]).includes(y)&&(b=[{id:r,name:o.name,value:s}]),b.length>0&&(e[r]={name:o.name,alias:s,color:o.color,models:b,isConnected:d})}}),Object.entries(e).forEach(([t,n])=>{let a=new Set([...E[(0,m.wG)(t)]||[],...E[t]||[]]);0!==a.size&&(n.models=n.models.filter(e=>!a.has(e.id)),0===n.models.length&&delete e[t])}),e},[C,k,V,A,P,E,y,b,M]),J=(0,i.useMemo)(()=>{if(y||w)return[];if(!S.trim())return I;let e=S.toLowerCase();return I.filter(t=>t.name.toLowerCase().includes(e))},[I,S,y]),H=(0,i.useMemo)(()=>{let e=S.trim().toLowerCase(),t={};return Object.entries(B).forEach(([n,a])=>{var i;if(W&&!a.isConnected)return;let r=a.models;if(!w||0!==(r=r.filter(e=>O(e.value)?.[w]===!0)).length){if(e){let t=a.name.toLowerCase().includes(e);if(0===(r=r.filter(t=>t.name.toLowerCase().includes(e)||t.id.toLowerCase().includes(e))).length&&!t)return}t[n]={...a,models:[...(i=r).filter(e=>j.includes(e.value)).sort((e,t)=>e.name.localeCompare(t.name)),...i.filter(e=>!j.includes(e.value)).sort((e,t)=>e.name.localeCompare(t.name))]}}}),t},[B,S,j,W,w]),Q=e=>{let a=e?.value||e?.name||e;j.includes(a)&&r?r(e):n(e),N&&(t(),F(""))};return(0,a.jsxs)(o.default,{isOpen:e,onClose:()=>{t(),F("")},title:v??(0,x.Tl)("Select Model"),size:"md",className:"p-4!",footer:null,children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-3 px-2.5 py-2 bg-primary/8 border border-primary/20 rounded-lg text-xs text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary shrink-0",style:{fontSize:"14px"},children:"info"}),(0,a.jsx)("span",{children:(0,x.Tl)("Click to add, click again to remove. Changes are saved automatically.")})]}),(0,a.jsxs)("div",{className:"mb-3 flex items-center gap-2.5",children:[(0,a.jsxs)("div",{className:"relative flex-1 min-w-0",children:[(0,a.jsx)("span",{className:"material-symbols-outlined absolute left-2.5 top-1/2 -translate-y-1/2 text-text-muted text-[16px]",children:"search"}),(0,a.jsx)("input",{type:"text",placeholder:(0,x.Tl)("Search..."),value:S,onChange:e=>F(e.target.value),className:"w-full pl-8 pr-3 py-1.5 bg-surface border border-border rounded text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"})]}),(0,a.jsxs)("label",{className:"flex items-center gap-1.5 shrink-0 text-xs text-text-muted cursor-pointer select-none hover:text-text-main transition-colors",children:[(0,a.jsx)("input",{type:"checkbox",checked:W,onChange:e=>(e=>{T(e);try{window.localStorage.setItem("modelSelectOnlyConnected",e?"1":"0")}catch{}})(e.target.checked),className:"w-3.5 h-3.5 rounded border-border text-primary focus:ring-primary/50 cursor-pointer accent-primary"}),(0,a.jsx)("span",{children:(0,x.Tl)("Connected providers only")})]})]}),(0,a.jsxs)("div",{className:"max-h-[400px] overflow-y-auto space-y-3",children:[J.length>0&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5 sticky top-0 bg-surface py-0.5",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary text-[14px]",children:"layers"}),(0,a.jsx)("span",{className:"text-xs font-medium text-primary",children:(0,x.Tl)("Combos")}),(0,a.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",J.length,")"]})]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:J.map(e=>{let t=s===e.name;return(0,a.jsxs)("button",{onClick:()=>Q({id:e.name,name:e.name,value:e.name}),className:`
|
|
2
|
+
px-2 py-1 rounded-xl text-xs font-medium transition-all border hover:cursor-pointer flex items-center gap-1
|
|
3
|
+
${t?"bg-primary text-white border-primary":j.includes(e.name)?"bg-primary border-primary text-white hover:bg-primary-hover":"bg-surface border-border text-text-main hover:border-primary/50 hover:bg-primary/5"}
|
|
4
|
+
`,children:[j.includes(e.name)&&(0,a.jsx)("span",{className:"material-symbols-outlined leading-none",style:{fontSize:"10px"},children:"check"}),e.name]},e.id)})})]}),Object.entries(H).map(([e,t])=>(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5 sticky top-0 bg-surface py-0.5",children:[(0,a.jsx)(l.A,{src:`/providers/${e}.png`,alt:t.name,size:14,fallbackText:(t.name||e).slice(0,2).toUpperCase(),fallbackColor:t.color}),(0,a.jsx)("span",{className:"text-xs font-medium text-primary",children:t.name}),(0,a.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",t.models.length,")"]}),!t.isConnected&&(0,a.jsx)("span",{className:"text-[10px] text-text-muted bg-surface-2 px-1.5 py-0.5 rounded font-normal ml-auto",children:(0,x.Tl)("Not connected")})]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:t.models.map(e=>{let t=s===e.value,n=e.isPlaceholder;return(0,a.jsx)("button",{onClick:()=>Q(e),title:n?"Select to pre-fill, then edit model ID in the input":void 0,className:`
|
|
5
|
+
px-2 py-1 rounded-xl text-xs font-medium transition-all border hover:cursor-pointer
|
|
6
|
+
${n?"border-dashed border-border text-text-muted hover:border-primary/50 hover:text-primary bg-surface italic":t?"bg-primary text-white border-primary":j.includes(e.value)?"bg-primary border-primary text-white hover:bg-primary-hover":"bg-surface border-border text-text-main hover:border-primary/50 hover:bg-primary/5"}
|
|
7
|
+
`,children:(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[j.includes(e.value)&&!n&&(0,a.jsx)("span",{className:"material-symbols-outlined leading-none",style:{fontSize:"10px"},children:"check"}),n?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[11px]",children:"edit"}),e.name]}):e.isCustom?(0,a.jsxs)(a.Fragment,{children:[e.name,(0,a.jsx)("span",{className:"text-[9px] opacity-60 font-normal",children:"custom"}),(0,a.jsx)(d.default,{caps:O(e.value)})]}):(0,a.jsxs)(a.Fragment,{children:[e.name,(0,a.jsx)(d.default,{caps:O(e.value)})]})]})},e.value)})})]},e)),0===Object.keys(H).length&&0===J.length&&(0,a.jsxs)("div",{className:"text-center py-4 text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-2xl mb-1 block",children:"search_off"}),(0,a.jsx)("p",{className:"text-xs",children:(0,x.Tl)("No models found")})]})]})]})}f.propTypes={isOpen:s().bool.isRequired,onClose:s().func.isRequired,onSelect:s().func.isRequired,onDeselect:s().func,selectedModel:s().string,activeProviders:s().arrayOf(s().shape({provider:s().string.isRequired})),title:s().string,modelAliases:s().object,kindFilter:s().string,addedModelValues:s().arrayOf(s().string),closeOnSelect:s().bool}},73579:(e,t,n)=>{n.d(t,{default:()=>p});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(81127),l=n(11910),d=n(92542),c=n(56061),u=n(88105),m=n(98),x=n(73006);function p({isOpen:e,connection:t,proxyPools:n,onSave:r,onClose:s}){let h,g,f,[b,v]=(0,i.useState)({name:"",priority:1,apiKey:""}),[k,y]=(0,i.useState)({azureEndpoint:"",apiVersion:"2024-10-01-preview",deployment:"",organization:""}),[w,j]=(0,i.useState)({accountId:""}),[N,C]=(0,i.useState)(""),[O,S]=(0,i.useState)(null),[F,W]=(0,i.useState)(!1),[T,I]=(0,i.useState)(null),[$,A]=(0,i.useState)(!1),[D,P]=(0,i.useState)(null),[_,E]=(0,i.useState)(!1);(0,i.useEffect)(()=>{if(t){v({name:t.name||"",priority:t.priority||1,apiKey:""}),"azure"===t.provider&&t.providerSpecificData&&y({azureEndpoint:t.providerSpecificData.azureEndpoint||"",apiVersion:t.providerSpecificData.apiVersion||"2024-10-01-preview",deployment:t.providerSpecificData.deployment||"",organization:t.providerSpecificData.organization||""}),"cloudflare-ai"===t.provider&&t.providerSpecificData&&j({accountId:t.providerSpecificData.accountId||""});let e=u.Q2?.[t.provider];e?.regions&&(C(t.providerSpecificData?.region||e.defaultRegion||e.regions[0]?.id||""),fetch("/api/network/egress-region").then(e=>e.json()).then(e=>{let n=e?.recommendedRegions?.[t.provider];n&&S({country:e.country||e.countryCode,regionId:n})}).catch(()=>{})),I(null),P(null)}},[t]);let z=t?.providerSpecificData?.authMethod,M=t?.authType==="oauth"||"oauth"===z||"desktop-session"===z||"string"==typeof t?.accessToken&&t.accessToken.startsWith("mimo-desktop-session"),L=t?.provider==="azure",R=t?.provider==="cloudflare-ai",q=!!t&&((0,u.mq)(t.provider)||(0,u.gb)(t.provider)),U=t&&u.Q2?.[t.provider]?.regions||null,K=()=>{if(U&&N)return{...t?.providerSpecificData||{},region:N}},G=async()=>{if(t?.provider){W(!0),I(null);try{let e=await fetch(`/api/providers/${t.id}/test`,{method:"POST"}),n=await e.json();I(n.valid?"success":"failed")}catch{I("failed")}finally{W(!1)}}},V=async()=>{if(t?.provider&&b.apiKey){A(!0),P(null);try{let e=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:t.provider,apiKey:b.apiKey,...L?{providerSpecificData:k}:{},...R?{providerSpecificData:w}:{},...U?{providerSpecificData:K()}:{}})}),n=await e.json();P(n.valid?"success":"failed")}catch{P("failed")}finally{A(!1)}}},B=async()=>{if(t){E(!0);try{let e={name:b.name,priority:b.priority};if(!M&&b.apiKey){e.apiKey=b.apiKey;let n="success"===D;if(!n)try{A(!0),P(null);let e=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:t.provider,apiKey:b.apiKey,...L?{providerSpecificData:k}:{},...R?{providerSpecificData:w}:{},...U?{providerSpecificData:K()}:{}})});n=!!(await e.json()).valid,P(n?"success":"failed")}catch{P("failed")}finally{A(!1)}n&&(e.testStatus="active",e.lastError=null,e.lastErrorAt=null)}L&&(e.providerSpecificData={azureEndpoint:k.azureEndpoint,apiVersion:k.apiVersion,deployment:k.deployment,organization:k.organization}),R&&(e.providerSpecificData={accountId:w.accountId}),U&&N&&(e.providerSpecificData=K()),await r(e)}finally{E(!1)}}};return t?(0,a.jsx)(o.default,{isOpen:e,title:"Edit Connection",onClose:s,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)(l.default,{label:"Name",value:b.name,onChange:e=>v({...b,name:e.target.value}),placeholder:M?"Account name":"Production Key"}),M&&t.email&&(h=t.providerSpecificData?.mimoUserId||t.providerSpecificData?.uid||null,f=(g="xiaomi-mimo"===t.provider||"xiaomi-tokenplan"===t.provider||/^\d+@xiaomi$/.test(t.email))&&h?h:t.email,(0,a.jsxs)("div",{className:"bg-sidebar/50 p-3 rounded-lg",children:[(0,a.jsx)("p",{className:"text-sm text-text-muted mb-1",children:g?"UID":"Email"}),(0,a.jsx)("p",{className:"font-medium",children:f})]})),(0,a.jsx)(l.default,{label:"Priority",type:"number",value:b.priority,onChange:e=>v({...b,priority:Number.parseInt(e.target.value,10)||1})}),!M&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(l.default,{label:"API Key",type:"password",value:b.apiKey,onChange:e=>v({...b,apiKey:e.target.value}),placeholder:"Enter new API key",hint:"Leave blank to keep the current API key.",className:"flex-1"}),(0,a.jsx)("div",{className:"pt-6",children:(0,a.jsx)(d.default,{onClick:V,disabled:!b.apiKey||$||_,variant:"secondary",children:$?"Checking...":"Check"})})]}),D&&(0,a.jsx)(c.default,{variant:"success"===D?"success":"error",children:"success"===D?"Valid":"Invalid"})]}),L&&(0,a.jsxs)("div",{className:"bg-sidebar/50 p-4 rounded-lg border border-accent/20",children:[(0,a.jsx)("h3",{className:"font-semibold mb-3 text-sm",children:"Azure OpenAI Configuration"}),(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsx)(l.default,{label:"Azure Endpoint",value:k.azureEndpoint,onChange:e=>y({...k,azureEndpoint:e.target.value}),placeholder:"https://your-resource.openai.azure.com",hint:"Your Azure OpenAI resource endpoint URL"}),(0,a.jsx)(l.default,{label:"Deployment Name",value:k.deployment,onChange:e=>y({...k,deployment:e.target.value}),placeholder:"gpt-4",hint:"The deployment name in your Azure resource"}),(0,a.jsx)(l.default,{label:"API Version",value:k.apiVersion,onChange:e=>y({...k,apiVersion:e.target.value}),placeholder:"2024-10-01-preview",hint:"Azure OpenAI API version to use"}),(0,a.jsx)(l.default,{label:"Organization",value:k.organization,onChange:e=>y({...k,organization:e.target.value}),placeholder:"Organization ID",hint:"Required for billing"})]})]}),U&&(0,a.jsxs)("div",{children:[(0,a.jsx)(m.default,{label:"Region",value:N,onChange:e=>C(e.target.value),options:U.map(e=>({value:e.id,label:e.label}))}),O&&(0,a.jsxs)("p",{className:"text-xs text-text-muted mt-1 flex items-center gap-1",children:[(0,a.jsx)("span",{children:"\uD83C\uDF10"}),(0,a.jsx)("span",{children:(0,x.Tl)("Current network location ({country}) recommended region: {region}").replace("{country}",O.country).replace("{region}",O.regionId)})]})]}),!q&&!L&&!R&&(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)(d.default,{onClick:G,variant:"secondary",disabled:F,children:F?"Testing...":"Test Connection"}),T&&(0,a.jsx)(c.default,{variant:"success"===T?"success":"error",children:"success"===T?"Valid":"Failed"})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.default,{onClick:B,fullWidth:!0,disabled:_,children:_?"Saving...":"Save"}),(0,a.jsx)(d.default,{onClick:s,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}p.propTypes={isOpen:s().bool.isRequired,connection:s().shape({id:s().string,name:s().string,email:s().string,priority:s().number,authType:s().string,provider:s().string,providerSpecificData:s().object}),proxyPools:s().arrayOf(s().shape({id:s().string,name:s().string})),onSave:s().func.isRequired,onClose:s().func.isRequired}},75480:(e,t,n)=>{n.d(t,{MenuItem:()=>l,Popover:()=>o});var a=n(95155),i=n(14051),r=n.n(i),s=n(31474);function o({open:e,onClose:t,align:n="left",className:i,children:r}){return e?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("button",{type:"button",className:"fixed inset-0 z-30 cursor-default bg-transparent","aria-label":"Close",onClick:t}),(0,a.jsx)("div",{className:(0,s.cn)("absolute z-40 mt-1.5 overflow-hidden rounded-xl border border-black/10 bg-surface/95 p-1 shadow-xl shadow-black/10 backdrop-blur dark:border-white/10","right"===n?"right-0":"left-0",i),children:r})]}):null}function l({selected:e=!1,onClick:t,icon:n,children:i,hint:r,disabled:o=!1}){return(0,a.jsxs)("button",{type:"button",onClick:t,disabled:o,className:(0,s.cn)("flex w-full items-start gap-2.5 rounded-lg px-2.5 py-2 text-left text-xs transition-colors disabled:opacity-50",e?"bg-primary/10 text-primary":"text-text hover:bg-black/[0.04] dark:hover:bg-white/[0.06]"),children:[n,(0,a.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,a.jsx)("span",{className:"block font-medium",children:i}),r?(0,a.jsx)("span",{className:"mt-0.5 block text-[11px] text-text-muted",children:r}):null]}),e?(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] leading-none text-[14px]",children:"check"}):null]})}o.propTypes={open:r().bool,onClose:r().func.isRequired,align:r().oneOf(["left","right"]),className:r().string,children:r().node},l.propTypes={selected:r().bool,onClick:r().func,icon:r().node,children:r().node,hint:r().node,disabled:r().bool}},75958:(e,t,n)=>{n.d(t,{M:()=>i});var a=n(73006);function i(e){let t=String(e||"").trim();if(!t)return"";let n=(0,a.Tl)(t);if(n!==t)return n;let i=/^(.+?)\s+·\s+(.+)$/.exec(t);if(i)return`${(0,a.Tl)(i[1])} \xb7 ${(0,a.Tl)(i[2])}`;let r=/^Bonus Pack (\d+)$/.exec(t);if(r)return`${(0,a.Tl)("Bonus Pack")} ${r[1]}`;let s=/^weekly\s+(.+)\s+\(7d\)$/i.exec(t);if(s)return`${(0,a.Tl)("Weekly")} ${s[1]} (7d)`;let o=/^Balance(?:\s*\((.+)\))?$/i.exec(t);if(o)return o[1]?`${(0,a.Tl)("Balance")} (${o[1]})`:(0,a.Tl)("Balance");let l=/^Voucher(?:\s*\((.+)\))?$/i.exec(t);if(l)return l[1]?`${(0,a.Tl)("Voucher")} (${l[1]})`:(0,a.Tl)("Voucher");let d=/^Cash(?:\s*\((.+)\))?$/i.exec(t);return d?d[1]?`${(0,a.Tl)("Cash")} (${d[1]})`:(0,a.Tl)("Cash"):t}},76432:(e,t,n)=>{n.d(t,{default:()=>r});var a=n(95155),i=n(11059);function r({code:e,label:t="Invite code"}){let{copied:n,copy:s}=(0,i.C)();return e?(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 rounded border border-border bg-bg-alt px-1.5 py-0.5 text-xs text-text-muted whitespace-nowrap",children:[(0,a.jsx)("span",{children:t}),(0,a.jsx)("code",{className:"font-mono text-text-main",children:e}),(0,a.jsx)("button",{type:"button",onClick:()=>s(e,"invite-code"),title:"Copy invite code",className:"inline-flex items-center text-text-muted hover:text-text transition-colors cursor-pointer",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"invite-code"===n?"check":"content_copy"})})]}):null}},80229:(e,t,n)=>{n.d(t,{default:()=>b});var a=n(95155),i=n(12115),r=n(47650),s=n(14051),o=n.n(s),l=n(73006),d=n(90620);function c({currentVersion:e,latestVersion:t}={}){let n=[u(e),u(t)].filter(Boolean);if(!n.length)return null;let a=n.reduce((e,t)=>m(e,t)>=0?e:t);return 0===a[0]&&0===a[1]&&0===a[2]?null:a.join(".")}function u(e){if("string"!=typeof e)return null;let t=e.trim().match(/^v?(\d+)\.(\d+)\.(\d+)/);return t?[Number(t[1]),Number(t[2]),Number(t[3])]:null}function m(e,t){for(let n=0;n<3;n++){if(e[n]>t[n])return 1;if(e[n]<t[n])return -1}return 0}let x=null;function p(){return x||(x=n.e(9233).then(n.bind(n,9233)).then(({marked:e})=>(e.setOptions({gfm:!0,breaks:!0}),e.use({link({href:e,title:t,tokens:n}){let a=n?this.parser.parseInline(n):t||e;return`<a href="${e}" target="_blank" rel="noopener noreferrer">${a}</a>`}}),e))),x}let h=["en","zh-CN","zh-TW"];function g(e,t=1e4){let n=new AbortController,a=setTimeout(()=>n.abort(),t);return fetch(e,{signal:n.signal}).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return e.text()}).finally(()=>clearTimeout(a))}function f(e){let[t,...n]=e;return t?g(t).catch(()=>f(n)):Promise.reject(Error("Failed to load changelog"))}function b({isOpen:e,onClose:t}){let[n,s]=(0,i.useState)(""),[o,x]=(0,i.useState)(!1),[v,k]=(0,i.useState)(""),[y,w]=(0,i.useState)(""),[j,N]=(0,i.useState)(!1),[C,O]=(0,i.useState)(""),S=(0,i.useRef)(null);(0,i.useEffect)(()=>{var t;let a;if(!e||n)return;x(!0),k("");let i=(a="zh"===(t=(0,l.kk)())?"zh-CN":t,h.includes(a)?a:"en"),r=[`${d.Nu.changelogUrlBase}${i}.md`,`${d.Nu.changelogUrlFallbackBase}${i}.md`],o=g("/api/version").then(e=>e.json()).then(c).catch(()=>null),b=(e,t)=>p().then(n=>s(n.parse(function(e,t){if(!e||"string"!=typeof e)return e||"";let n=u(t);if(!n)return e;let a=e.split("\n"),i=e=>/^##\s+/.test(e),r=[],s=[],o=!1,l=()=>{o||r.push(...s),s=[]};for(let e of a){if(i(e)){l();let t=u(e.replace(/^##\s+/,""));o=null!==t&&m(t,n)>0}s.push(e)}return l(),r.join("\n").replace(/\n{3,}/g,"\n\n").replace(/\s+$/,"")+"\n"}(e,t))));Promise.all([f(r),o]).then(([e,t])=>b(e,t)).then(()=>{k(""),x(!1)}).catch(()=>{"en"!==i?f([`${d.Nu.changelogUrlBase}en.md`,`${d.Nu.changelogUrlFallbackBase}en.md`]).then(e=>o.then(t=>b(e,t))).then(()=>k("")).catch(e=>k(e.message||"Failed to load")).finally(()=>x(!1)):(k("Failed to load"),x(!1))})},[e,n]);let F=(0,l.kk)();if((0,i.useEffect)(()=>{e&&n&&s("")},[F]),(0,i.useEffect)(()=>{let n=e=>{S.current&&!S.current.contains(e.target)&&(w(""),O(""),t())};if(e)return document.addEventListener("mousedown",n),()=>document.removeEventListener("mousedown",n)},[e,t]),!e||"u"<typeof document)return null;let W=()=>{w(""),O(""),t()};return(0,r.createPortal)((0,a.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-black/30 backdrop-blur-sm",onClick:W}),(0,a.jsxs)("div",{ref:S,className:"relative w-full bg-surface border border-black/10 dark:border-white/10 rounded-xl shadow-2xl animate-in fade-in zoom-in-95 duration-200 max-w-3xl flex flex-col max-h-[85vh]",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between p-3 border-b border-black/5 dark:border-white/5",children:[(0,a.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[y&&(0,a.jsx)("button",{onClick:()=>w(""),className:"p-1.5 rounded-lg text-text-muted hover:bg-black/5 dark:hover:bg-white/5 transition-colors","aria-label":(0,l.Tl)("Back"),title:(0,l.Tl)("Back"),children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"arrow_back"})}),(0,a.jsx)("h2",{className:"truncate text-lg font-semibold text-text-main",children:y?"CHANGELOG.md":(0,l.Tl)("Change Log")})]}),(0,a.jsx)("button",{onClick:W,className:"p-1.5 rounded-lg text-text-muted hover:bg-black/5 dark:hover:bg-white/5 transition-colors","aria-label":(0,l.Tl)("Close"),children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"close"})})]}),(0,a.jsxs)("div",{className:"p-6 overflow-y-auto flex-1",children:[o&&(0,a.jsxs)("div",{className:"flex items-center justify-center py-10 text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin mr-2",children:"progress_activity"}),(0,l.Tl)("Loading...")]}),v&&(0,a.jsxs)("div",{className:"text-red-500 py-4",children:[(0,l.Tl)("Failed to load changelog: "),v]}),!o&&!v&&n&&!y&&(0,a.jsx)("div",{className:"changelog-body text-text-main",onClick:e=>{let t=e.target?.closest?.("a");t&&/CHANGELOG\.md(\?|#|$)/.test(t.getAttribute("href")||"")&&(e.preventDefault(),N(!0),O(""),f([`${d.Nu.changelogUrlBase.replace(/changelog\/$/,"")}CHANGELOG.md`,`${d.Nu.changelogUrlFallbackBase.replace(/changelog\/$/,"")}CHANGELOG.md`,"https://raw.githubusercontent.com/techysy/10router/refs/heads/main/CHANGELOG.md","https://gitee.com/techysy/10router/raw/main/CHANGELOG.md"]).then(e=>p().then(t=>w(t.parse(e)))).catch(e=>O(e?.message||"Failed to load")).finally(()=>N(!1)))},dangerouslySetInnerHTML:{__html:n}}),j&&(0,a.jsxs)("div",{className:"flex items-center justify-center py-10 text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin mr-2",children:"progress_activity"}),(0,l.Tl)("Loading...")]}),C&&(0,a.jsxs)("div",{className:"text-red-500 py-4",children:[(0,l.Tl)("Failed to load changelog: "),C]}),!j&&!C&&y&&(0,a.jsx)("div",{className:"changelog-body text-text-main",dangerouslySetInnerHTML:{__html:y}})]})]})]}),document.body)}b.propTypes={isOpen:o().bool.isRequired,onClose:o().func.isRequired}},80752:(e,t,n)=>{n.d(t,{default:()=>m});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(1620),l=n(80229),d=n(81127),c=n(73006);function u({icon:e,label:t,onClick:n,href:i,trailing:r,danger:s}){let o=`flex items-center gap-3 w-full px-4 py-2.5 text-sm transition-colors ${s?"text-red-500 hover:bg-red-500/10":"text-text-main hover:bg-black/5 dark:hover:bg-white/5"}`,l=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[20px] ${s?"":"text-text-muted"}`,children:e}),(0,a.jsx)("span",{className:"flex-1 text-left",children:t}),r&&(0,a.jsx)("span",{className:"text-base",children:r})]});return i?(0,a.jsx)("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:o,onClick:n,children:l}):(0,a.jsx)("button",{onClick:n,className:o,children:l})}function m({onLogout:e}){let[t,n]=(0,i.useState)(!1),[r,s]=(0,i.useState)(!1),[x,p]=(0,i.useState)(!1),[h,g]=(0,i.useState)(!1),{theme:f,toggleTheme:b}=(0,o.D)(),v=(0,i.useRef)(null),k=async()=>{g(!0);try{await fetch("/api/version/shutdown",{method:"POST"})}catch(e){}g(!1),p(!1)};return(0,i.useEffect)(()=>{let e=e=>{v.current&&!v.current.contains(e.target)&&n(!1)};if(t)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[t]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"relative",ref:v,children:[(0,a.jsx)("button",{onClick:()=>n(e=>!e),className:"flex items-center justify-center p-2 rounded-lg text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5 transition-all",title:(0,c.Tl)("Menu"),children:(0,a.jsx)("span",{className:"material-symbols-outlined",children:"grid_view"})}),t&&(0,a.jsxs)("div",{className:"absolute right-0 top-full mt-2 w-60 bg-surface border border-black/10 dark:border-white/10 rounded-xl shadow-2xl z-50 animate-in fade-in zoom-in-95 duration-150 overflow-hidden py-1",children:[(0,a.jsx)(u,{icon:"history",label:(0,c.Tl)("Change Log"),onClick:()=>{n(!1),s(!0)}}),(0,a.jsx)(u,{icon:"system"===f?"routine":"light"===f?"light_mode":"dark_mode",label:(0,c.Tl)("system"===f?"Theme: system":"light"===f?"Theme: light":"Theme: dark"),onClick:()=>{b(),n(!1)}}),(0,a.jsx)(u,{icon:"power_settings_new",label:(0,c.Tl)("Shutdown"),danger:!0,onClick:()=>{n(!1),p(!0)}}),(0,a.jsx)(u,{icon:"logout",label:(0,c.Tl)("Logout"),danger:!0,onClick:()=>{n(!1),e()}})]})]}),(0,a.jsx)(l.default,{isOpen:r,onClose:()=>s(!1)}),(0,a.jsx)(d.ConfirmModal,{isOpen:x,onClose:()=>p(!1),onConfirm:k,title:(0,c.Tl)("Close Proxy"),message:(0,c.Tl)("Are you sure you want to close the proxy server?"),confirmText:(0,c.Tl)("Close"),cancelText:(0,c.Tl)("Cancel"),variant:"danger",loading:h})]})}u.propTypes={icon:s().string.isRequired,label:s().string.isRequired,onClick:s().func,href:s().string,trailing:s().node,danger:s().bool},m.propTypes={onLogout:s().func.isRequired}},81127:(e,t,n)=>{n.d(t,{ConfirmModal:()=>c,default:()=>d});var a=n(95155),i=n(12115),r=n(47650),s=n(31474),o=n(92542),l=n(97677);function d({isOpen:e,onClose:t,title:n,children:o,footer:c,size:u="md",closeOnOverlay:m=!0,showTrafficLights:x=!0,className:p}){return((0,i.useEffect)(()=>(e?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[e]),(0,i.useEffect)(()=>{let n=n=>{"Escape"===n.key&&e&&t()};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[e,t]),!e||"u"<typeof document)?null:(0,r.createPortal)((0,a.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-[2px] fade-in",onClick:m?t:void 0}),(0,a.jsxs)("div",{className:(0,s.cn)("relative w-full bg-surface","border border-border-subtle","rounded-[14px] shadow-[var(--shadow-elev)]","fade-in",{sm:"max-w-sm",md:"max-w-md",lg:"max-w-lg",xl:"max-w-xl",full:"max-w-4xl"}[u],p),children:[(n||x)&&(0,a.jsxs)("div",{className:"flex items-center justify-between p-2 border-b border-border-subtle",children:[(0,a.jsxs)("div",{className:"flex items-center",children:[x&&(0,a.jsxs)("div",{className:"hidden md:flex items-center gap-2 mr-4 ml-2",children:[(0,a.jsx)(l.default,{text:"Close",position:"top",color:"#FF5F56",children:(0,a.jsx)("button",{onClick:t,"aria-label":"Close",title:"Close",className:"w-4 h-4 rounded-full bg-[#FF5F56] hover:brightness-90 transition-all cursor-pointer flex items-center justify-center group/dot",children:(0,a.jsx)("span",{className:"text-[9px] font-bold text-white opacity-0 group-hover/dot:opacity-100 transition-opacity leading-none",children:"✕"})})}),(0,a.jsx)("div",{className:"w-4 h-4 rounded-full bg-[#3a3a3a]/20 dark:bg-white/15 cursor-not-allowed"}),(0,a.jsx)("div",{className:"w-4 h-4 rounded-full bg-[#3a3a3a]/20 dark:bg-white/15 cursor-not-allowed"})]}),n&&(0,a.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:n})]}),(0,a.jsx)("button",{onClick:t,"aria-label":"Close",className:"md:hidden p-1.5 rounded-[10px] text-text-muted hover:bg-surface-2 hover:text-text-main transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"close"})})]}),(0,a.jsx)("div",{className:"p-4 sm:p-6 max-h-[calc(85vh-100px)] overflow-y-auto custom-scrollbar",children:o}),c&&(0,a.jsx)("div",{className:"flex items-center justify-end gap-3 p-4 sm:p-6 border-t border-border-subtle",children:c})]})]}),document.body)}function c({isOpen:e,onClose:t,onConfirm:n,title:i="Confirm",message:r,confirmText:s="Confirm",cancelText:l="Cancel",variant:u="danger",loading:m=!1}){return(0,a.jsx)(d,{isOpen:e,onClose:t,title:i,size:"sm",footer:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.default,{variant:"ghost",onClick:t,disabled:m,children:l}),(0,a.jsx)(o.default,{variant:u,onClick:n,loading:m,children:s})]}),children:(0,a.jsx)("p",{className:"text-text-muted",children:r})})}},84588:(e,t,n)=>{n.d(t,{default:()=>r});var a=n(95155),i=n(31474);function r({children:e,title:t,subtitle:n,icon:s,action:o,padding:l="md",hover:d=!1,elev:c=!1,className:u,...m}){return(0,a.jsxs)("div",{className:(0,i.cn)("bg-surface border border-border-subtle",c?"rounded-[14px] shadow-[var(--shadow-elev)]":"rounded-[14px] shadow-[var(--shadow-soft)]",d&&"hover:shadow-[var(--shadow-warm)] hover:border-brand-500/30 transition-all cursor-pointer",{none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"}[l],u),...m,children:[(t||o)&&(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[s&&(0,a.jsx)("div",{className:"p-2 rounded-[10px] bg-bg text-text-muted",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:s})}),(0,a.jsxs)("div",{children:[t&&(0,a.jsx)("h3",{className:"text-text-main font-semibold",children:t}),n&&(0,a.jsx)("p",{className:"text-sm text-text-muted",children:n})]})]}),o]}),e]})}r.Section=function({children:e,className:t,...n}){return(0,a.jsx)("div",{className:(0,i.cn)("p-4 rounded-[10px]","bg-bg border border-border-subtle",t),...n,children:e})},r.Row=function({children:e,className:t,...n}){return(0,a.jsx)("div",{className:(0,i.cn)("p-3 -mx-3 px-3 transition-colors","border-b border-border-subtle last:border-b-0","hover:bg-surface-2/50",t),...n,children:e})},r.ListItem=function({children:e,actions:t,className:n,...r}){return(0,a.jsxs)("div",{className:(0,i.cn)("group flex items-center justify-between p-3 -mx-3 px-3","border-b border-border-subtle last:border-b-0","hover:bg-surface-2/50 transition-colors",n),...r,children:[(0,a.jsx)("div",{className:"flex-1 min-w-0",children:e}),t&&(0,a.jsx)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:t})]})}},90882:(e,t,n)=>{n.d(t,{default:()=>m});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(35497),l=n(11059);let d=new Set(["trae","windsurf","zed"]),c={trae:{param:"region",default:"intl",options:[{value:"intl",label:"国际站",hint:"www.trae.ai \xb7 海外账号"},{value:"cn",label:"国内站",hint:"www.trae.cn \xb7 国内手机号 / 抖音账号"}]}},u={trae:{label:"Cloud-IDE-JWT",instructions:"Sign in at trae.ai / solo.trae.ai (国际站) or trae.cn (国内站), open DevTools → Network, copy the Cloud-IDE-JWT token from any request's Authorization header (~14-day lifetime). CN and intl accounts are not interchangeable.",placeholder:"Paste Cloud-IDE-JWT here...",ideName:"Trae",ideOptional:!0},windsurf:{label:"Windsurf API key",instructions:'In the Windsurf/VS Code IDE, run the "Windsurf: Provide Auth Token" command, then copy the displayed sk-ws-... key.',placeholder:"Paste sk-ws-... key here...",ideName:"Windsurf",ideOptional:!1}};function m({isOpen:e,provider:t,providerInfo:n,onSuccess:r,onClose:s,oauthMeta:x,idcConfig:p}){let[h,g]=(0,i.useState)("waiting"),[f,b]=(0,i.useState)(null),[v,k]=(0,i.useState)(""),[y,w]=(0,i.useState)(null),[j,N]=(0,i.useState)(!1),[C,O]=(0,i.useState)(null),[S,F]=(0,i.useState)(!1),[W,T]=(0,i.useState)("browser"),[I,$]=(0,i.useState)("intl"),[A,D]=(0,i.useState)(""),[P,_]=(0,i.useState)(null),E=(0,i.useRef)(null),z=(0,i.useRef)(!1),M=(0,i.useRef)(!1),{copied:L,copy:R}=(0,l.C)(),[q,U]=(0,i.useState)(!1),[K,G]=(0,i.useState)("/callback?code=..."),V=(0,i.useRef)(!1);(0,i.useEffect)(()=>{U("localhost"===window.location.hostname||"127.0.0.1"===window.location.hostname),G(`${window.location.origin}/callback?code=...`)},[]);let B=(0,i.useCallback)(async(e,n)=>{if(f)try{let a=await fetch(`/api/oauth/${t}/exchange`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:e,redirectUri:f.redirectUri,codeVerifier:f.codeVerifier,state:n,...x?{meta:x}:{}})}),i=await a.json();if(!a.ok)throw Error(i.error);g("success"),r?.()}catch(e){w(e.message),g("error")}},[f,t,r,x]),J=(0,i.useCallback)(async e=>{if(f?.state)try{let t=await fetch("/api/oauth/xai/manual-code",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:e,state:f.state})}),n=await t.json();if(!t.ok)throw Error(n.error);g("success"),r?.()}catch(e){w(e.message),g("error")}},[f,r]),H=(0,i.useCallback)(async(e,n,a,i,s)=>{z.current=!1,F(!0);let o=Date.now()+(Number.isFinite(s)&&s>0?s:12e4);for(;Date.now()<o;){if(z.current){console.log("[OAuthModal] Polling aborted"),F(!1);return}if(await new Promise(e=>setTimeout(e,1e3*a)),z.current){console.log("[OAuthModal] Polling aborted after sleep"),F(!1);return}try{let s=await fetch(`/api/oauth/${t}/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceCode:e,codeVerifier:n,extraData:i})}),o=await s.json();if(o.success){z.current=!0,g("success"),F(!1),r?.();return}if("expired_token"===o.error||"access_denied"===o.error||o.fatal)throw Error(o.errorDescription||o.error);"slow_down"===o.error&&(a=Math.min(a+5,30))}catch(e){w(e.message),g("error"),F(!1);return}}w("Authorization timeout"),g("error"),F(!1)},[t,r]),Q=(0,i.useCallback)(async e=>{let t=await fetch(`/api/oauth/${e}/start-proxy`),n=await t.json();if(!t.ok||!n.success||!n.callbackUrl)throw Error(n.reason||n.error||`Failed to start ${e} callback server`);let a=new URL(`/api/oauth/${e}/authorize`,window.location.origin);a.searchParams.set("redirect_uri",n.callbackUrl);let i=c[e];i&&a.searchParams.set(i.param,I);let r=await fetch(a),s=await r.json();if(!r.ok)throw Error(s.error);let o={state:s.state};s.codeVerifier&&(o.codeVerifier=s.codeVerifier),await fetch(`/api/oauth/${e}/register-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}),b({...s,proxyProvider:e}),g("waiting"),E.current=window.open(s.authUrl,"oauth_popup","width=600,height=700"),E.current||g("input")},[I]),Y=(0,i.useCallback)(async()=>{if(t)try{let e;if(w(null),d.has(t)&&"browser"===W)return void await Q(t);if(["github","kiro","kimi","kimi-coding","kilocode","codebuddy-cn","codebuddy-intl","qoder","qoder-cn","grok-cli","glm","muse","minimax-code","minimax-code-global"].includes(t)){N(!0),g("waiting");let e=new URL(`/api/oauth/${t}/device-code`,window.location.origin);"kiro"===t&&p?.startUrl&&(e.searchParams.set("start_url",p.startUrl),p.region&&e.searchParams.set("region",p.region),e.searchParams.set("auth_method","idc"));let n=await fetch(e.toString()),a=await n.json();if(!n.ok)throw Error(a.error);O(a);let i=a.verification_uri_complete||a.verification_uri;i&&window.open(i,"_blank","noopener,noreferrer");let r="kiro"===t?{_clientId:a._clientId,_clientSecret:a._clientSecret,_region:a._region,_authMethod:a._authMethod,_startUrl:a._startUrl}:"qoder"===t?{_qoderNonce:a._qoderNonce,_qoderMachineId:a._qoderMachineId,_qoderVerifier:a.codeVerifier}:"kimi"===t||"kimi-coding"===t?{_kimiDeviceId:a._kimiDeviceId}:"glm"===t?{_zcodePollToken:a._zcodePollToken}:null;H(a.device_code,a.codeVerifier,a.interval||5,r,Number.isFinite(a.expires_in)&&a.expires_in>0?1e3*a.expires_in:void 0);return}let n=window.location.port||("https:"===window.location.protocol?"443":"80");e="codex"===t?"http://localhost:1455/auth/callback":"xai"===t?"http://127.0.0.1:56121/callback":`http://localhost:${n}/callback`;let a=new URL(`/api/oauth/${t}/authorize`,window.location.origin);a.searchParams.set("redirect_uri",e),x&&Object.entries(x).forEach(([e,t])=>{t&&a.searchParams.set(e,t)});let i=await fetch(a.toString()),r=await i.json();if(!i.ok)throw Error(r.error);let s=!1,o=!1;if("codex"===t)try{let t=new URL("/api/oauth/codex/start-proxy",window.location.origin);t.searchParams.set("app_port",n),t.searchParams.set("state",r.state),t.searchParams.set("code_verifier",r.codeVerifier),t.searchParams.set("redirect_uri",e);let a=await fetch(t.toString()),i=await a.json();s=i.success,o=!!i.serverSide}catch{s=!1}let l=!1,c=!1;if("xai"===t)try{let t=new URL("/api/oauth/xai/start-proxy",window.location.origin);t.searchParams.set("app_port",n),t.searchParams.set("state",r.state),t.searchParams.set("code_verifier",r.codeVerifier),t.searchParams.set("redirect_uri",e);let a=await fetch(t.toString()),i=await a.json();if(l=i.success,c=!!i.serverSide,!l&&"port_busy"===i.reason)throw Error("Port 56121 in use; close the conflicting process and retry")}catch(e){if(e?.message)throw e;l=!1}if(b({...r,redirectUri:e,codexServerSide:o,xaiServerSide:c}),!r.authUrl){if("device_code"===r.flowType)throw Error(`Provider ${t} uses device-code login but is not wired in the OAuth modal device-code list`);throw Error("No authorization URL returned from OAuth provider")}"codex"===t&&s||"xai"===t&&l||q&&"codex"!==t&&"xai"!==t?(g("waiting"),E.current=window.open(r.authUrl,"oauth_popup","width=600,height=700"),E.current||g("input")):(g("input"),window.open(r.authUrl,"_blank"))}catch(e){w(e.message),g("error")}},[t,q,H,x,p,W,Q]);(0,i.useEffect)(()=>{e&&t?M.current||(M.current=!0,b(null),k(""),w(null),N(!1),O(null),F(!1),T("browser"),D(""),$(c[t]?.default||"intl"),_(null),z.current=!1,u[t]&&fetch(`/api/oauth/${t}/ide-status`).then(e=>e.json()).then(e=>_(e)).catch(()=>_({installed:!1,path:null})),Y()):e||(z.current=!0,M.current=!1,"codex"===t?fetch("/api/oauth/codex/stop-proxy").catch(()=>{}):"xai"===t?fetch("/api/oauth/xai/stop-proxy").catch(()=>{}):"trae"===t?fetch("/api/oauth/trae/stop-proxy").catch(()=>{}):"windsurf"===t?fetch("/api/oauth/windsurf/stop-proxy").catch(()=>{}):"zed"===t&&fetch("/api/oauth/zed/stop-proxy").catch(()=>{}))},[e,t,Y]),(0,i.useEffect)(()=>{let e=f?.codexServerSide?"codex":f?.xaiServerSide?"xai":f?.proxyProvider?f.proxyProvider:null;if(!e||!f?.state||V.current)return;let t=!1,n=0,a=async()=>{if(!t&&!V.current){n+=1;try{let n=await fetch(`/api/oauth/${e}/poll-status?state=${encodeURIComponent(f.state)}`),a=await n.json();if(t||V.current)return;if("done"===a.status){V.current=!0,g("success"),r?.();return}if("error"===a.status){V.current=!0,w(a.error||"Authentication failed"),g("error");return}}catch{}if(n>=200){V.current=!0,w("Authentication timeout"),g("error");return}setTimeout(a,1500)}};return setTimeout(a,1500),()=>{t=!0}},[f,r]),(0,i.useEffect)(()=>{let e;if(!f)return;V.current=!1;let t=async e=>{if(V.current)return;let{code:t,token:n,state:a,error:i,errorDescription:r}=e;if(i){V.current=!0,w(r||i),g("error");return}(n||t)&&(V.current=!0,await B(n||t,a))},n=e=>{let n=e.origin.includes("localhost")||e.origin.includes("127.0.0.1"),a=e.origin===window.location.origin;(n||a)&&e.data?.type==="oauth_callback"&&t(e.data.data)};window.addEventListener("message",n);try{(e=new BroadcastChannel("oauth_callback")).onmessage=e=>t(e.data)}catch(e){console.log("BroadcastChannel not supported")}let a=e=>{if("oauth_callback"===e.key&&e.newValue)try{let n=JSON.parse(e.newValue);t(n),localStorage.removeItem("oauth_callback")}catch(e){console.log("Failed to parse localStorage data")}};window.addEventListener("storage",a);try{let e=localStorage.getItem("oauth_callback");if(e){let n=JSON.parse(e);n.timestamp&&Date.now()-n.timestamp<3e4&&t(n),localStorage.removeItem("oauth_callback")}}catch{}return()=>{window.removeEventListener("message",n),window.removeEventListener("storage",a),e&&e.close()}},[f,B]);let X=async()=>{try{if(w(null),"paste-token"===W&&u[t]){let e=A.trim();if(!e)throw Error("Missing token");let n=await fetch(`/api/oauth/${t}/exchange`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:e})}),a=await n.json();if(!n.ok)throw Error(a.error);g("success"),r?.();return}let e=v.trim();if(d.has(t)&&e){let n=await fetch(`/api/oauth/${t}/exchange`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:e,state:f?.state})}),a=await n.json();if(!n.ok)throw Error(a.error);g("success"),r?.();return}if(e.startsWith("eyJ")&&e.includes("."))return void await B(e,null);if("xai"===t&&e&&!e.includes("://")&&!e.includes("?")&&!e.includes("code="))return void await J(e);if("kimchi"===t&&e&&!e.includes("://")&&!e.includes("?"))return void await B(e,null);let n=new URL(e),a=n.searchParams.get("code"),i=n.searchParams.get("token"),s=n.searchParams.get("state"),o=n.searchParams.get("error");if(o)throw Error(n.searchParams.get("error_description")||o);if(!a&&!i)throw Error("xai"===t?"Paste the callback URL or copied xAI code":"kimchi"===t?"No Kimchi token found in URL":"No authorization code found in URL");await B(i||a,s)}catch(e){w(e.message),g("error")}},Z=(0,i.useCallback)(()=>{"codex"===t?fetch("/api/oauth/codex/stop-proxy").catch(()=>{}):"xai"===t?fetch("/api/oauth/xai/stop-proxy").catch(()=>{}):"trae"===t?fetch("/api/oauth/trae/stop-proxy").catch(()=>{}):"windsurf"===t?fetch("/api/oauth/windsurf/stop-proxy").catch(()=>{}):"zed"===t&&fetch("/api/oauth/zed/stop-proxy").catch(()=>{}),s()},[s,t]);if(!t||!n)return null;let ee="xai"===t,et="kimchi"===t,en=C?.verification_uri_complete||C?.verification_uri||"",ea=ee?"Connect Grok Build OAuth":`Connect ${n.name}`,ei=ee?"http://127.0.0.1:56121/callback?code=... or copied code":et?`${K.replace("code=...","token=...")} or copied token`:K;return(0,a.jsx)(o.aF,{isOpen:e,title:ea,onClose:Z,size:"lg",children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[d.has(t)&&("waiting"===h||"input"===h||"error"===h)&&(0,a.jsxs)(a.Fragment,{children:["browser"===W&&c[t]&&(0,a.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted",children:"登录站点"}),(0,a.jsx)("div",{className:"flex gap-2",children:c[t].options.map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>{e.value!==I&&($(e.value),fetch(`/api/oauth/${t}/stop-proxy`).catch(()=>{}),b(null),w(null),g("waiting"),Y())},className:`flex-1 rounded-lg border px-3 py-2 text-left text-sm transition-colors ${I===e.value?"border-primary bg-primary/10 text-primary":"border-border text-text-muted hover:text-primary"}`,children:[(0,a.jsx)("div",{className:"font-medium",children:e.label}),(0,a.jsx)("div",{className:"text-xs opacity-70",children:e.hint})]},e.value))})]}),u[t]&&(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("button",{type:"button",onClick:()=>{T("browser"),w(null),g("waiting"),Y()},className:`flex-1 rounded-lg border px-3 py-2 text-sm transition-colors ${"browser"===W?"border-primary bg-primary/10 text-primary":"border-border text-text-muted hover:text-primary"}`,children:"\uD83C\uDF10 Sign in with browser"}),(0,a.jsx)("button",{type:"button",onClick:()=>{T("paste-token"),w(null),g("input")},className:`flex-1 rounded-lg border px-3 py-2 text-sm transition-colors ${"paste-token"===W?"border-primary bg-primary/10 text-primary":"border-border text-text-muted hover:text-primary"}`,children:"\uD83D\uDD11 Paste token"})]}),"browser"===W&&(0,a.jsxs)(a.Fragment,{children:["waiting"===h&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border border-border rounded-lg bg-sidebar/50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-base text-primary animate-spin",children:"progress_activity"}),(0,a.jsx)("span",{className:"text-sm",children:"Waiting for browser authorization…"})]}),"input"===h&&(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Popup was blocked. After authorizing in the browser, paste the full callback URL here:"}),(0,a.jsx)(o.pd,{value:v,onChange:e=>k(e.target.value),placeholder:"http://127.0.0.1:.../callback?...",className:"font-mono text-xs"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:X,fullWidth:!0,disabled:!v,children:"Connect"}),(0,a.jsx)(o.$n,{onClick:Z,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]}),"paste-token"===W&&u[t]&&(0,a.jsxs)("div",{className:"space-y-3",children:[P&&!P.installed&&(0,a.jsxs)("div",{className:`px-3 py-2 rounded-lg text-sm ${u[t].ideOptional?"bg-blue-500/10 text-blue-700 dark:text-blue-300":"bg-yellow-500/10 text-yellow-700 dark:text-yellow-300"}`,children:[u[t].ideName," IDE not detected.",u[t].ideOptional?" You can still grab the token from DevTools.":` Install ${u[t].ideName} IDE to get the token, or use "Sign in with browser".`]}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:u[t].instructions}),(0,a.jsx)(o.pd,{value:A,onChange:e=>D(e.target.value),placeholder:u[t].placeholder,className:"font-mono text-xs"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:X,fullWidth:!0,disabled:!A,children:"Connect"}),(0,a.jsx)(o.$n,{onClick:Z,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]}),("waiting"===h||"input"===h)&&!j&&!d.has(t)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border border-border rounded-lg bg-sidebar/50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-base text-primary animate-spin",children:"progress_activity"}),(0,a.jsx)("span",{className:"text-sm",children:ee?"Waiting for Grok Build OAuth…":"Waiting for popup authorization…"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-3 my-1",children:[(0,a.jsx)("div",{className:"flex-1 h-px bg-border"}),(0,a.jsx)("span",{className:"text-xs text-text-muted uppercase tracking-wider",children:"Or paste callback URL manually"}),(0,a.jsx)("div",{className:"flex-1 h-px bg-border"})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("p",{className:"text-sm font-medium mb-2",children:["Step 1: Open this ",ee?"Grok Build OAuth URL":"URL"," in your browser"]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.pd,{value:f?.authUrl||"",readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,a.jsx)(o.$n,{variant:"secondary",icon:"auth_url"===L?"check":"content_copy",onClick:()=>R(f?.authUrl,"auth_url"),disabled:!f?.authUrl,children:"Copy"})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("p",{className:"text-sm font-medium mb-2",children:["Step 2: Paste the ","xai"===t?"callback URL or copied code":et?"callback URL or copied token":"callback URL"," here"]}),(0,a.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"xai"===t?"If xAI shows a code instead of redirecting, paste that code here.":et?"After authorization, copy the full callback URL or token from your browser.":"After authorization, copy the full URL from your browser."}),(0,a.jsx)(o.pd,{value:v,onChange:e=>k(e.target.value),placeholder:ei,className:"font-mono text-xs"})]})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:X,fullWidth:!0,disabled:!v,children:"Connect"}),(0,a.jsx)(o.$n,{onClick:Z,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"waiting"===h&&j&&C&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"text-center py-4",children:[(0,a.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Visit the login URL below and authorize:"}),(0,a.jsxs)("div",{className:"bg-sidebar p-4 rounded-lg mb-4",children:[(0,a.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Login URL"}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("code",{className:"flex-1 text-sm break-all",children:en}),(0,a.jsx)(o.$n,{size:"sm",variant:"ghost",icon:"login_url"===L?"check":"content_copy",onClick:()=>R(en,"login_url"),disabled:!en}),(0,a.jsx)(o.$n,{size:"sm",variant:"ghost",icon:"open_in_new",onClick:()=>window.open(en,"_blank","noopener,noreferrer"),disabled:!en,children:"Open"})]})]}),C.user_code&&(0,a.jsxs)("div",{className:"bg-primary/10 p-4 rounded-lg",children:[(0,a.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Your Code"}),(0,a.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,a.jsx)("p",{className:"text-2xl font-mono font-bold text-primary",children:C.user_code}),(0,a.jsx)(o.$n,{size:"sm",variant:"ghost",icon:"user_code"===L?"check":"content_copy",onClick:()=>R(C.user_code,"user_code")})]})]})]}),S&&(0,a.jsxs)("div",{className:"flex items-center justify-center gap-2 text-sm text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),"Waiting for authorization..."]})]}),"success"===h&&(0,a.jsxs)("div",{className:"text-center py-6",children:[(0,a.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,a.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,a.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your ",n.name," account has been connected."]}),(0,a.jsx)(o.$n,{onClick:Z,fullWidth:!0,children:"Done"})]}),"error"===h&&(0,a.jsxs)("div",{className:"text-center py-6",children:[(0,a.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,a.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,a.jsx)("p",{className:"text-sm text-red-600 mb-4",children:y}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:Y,variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,a.jsx)(o.$n,{onClick:Z,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})})}m.propTypes={isOpen:s().bool.isRequired,provider:s().string,providerInfo:s().shape({name:s().string}),onSuccess:s().func,onClose:s().func.isRequired,oauthMeta:s().object,idcConfig:s().shape({startUrl:s().string,region:s().string})}},91450:(e,t,n)=>{n.d(t,{default:()=>o});var a=n(95155),i=n(14051),r=n.n(i),s=n(38587);function o({children:e}){return(0,a.jsxs)("div",{className:"min-h-screen flex flex-col relative bg-bg transition-colors duration-500 overflow-x-hidden selection:bg-primary/20 selection:text-primary",children:[(0,a.jsx)("div",{className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] bg-primary/5 dark:bg-primary/5 rounded-full blur-[100px] pointer-events-none z-0"}),(0,a.jsx)("div",{className:"fixed bottom-0 right-0 w-[600px] h-[600px] bg-orange-200/20 dark:bg-orange-900/10 rounded-full blur-[120px] pointer-events-none z-0 translate-y-1/3 translate-x-1/3"}),(0,a.jsx)("div",{className:"absolute top-6 right-6 z-20",children:(0,a.jsx)(s.default,{variant:"card"})}),(0,a.jsx)("main",{className:"flex-1 flex flex-col items-center justify-center p-4 sm:p-6 z-10 w-full h-full",children:e})]})}o.propTypes={children:r().node.isRequired}},92173:(e,t,n)=>{n.d(t,{default:()=>c});var a=n(95155),i=n(98500),r=n.n(i),s=n(90620);let o=[{label:"Features",href:"#features"},{label:"Pricing",href:"#pricing"},{label:"Changelog",href:"#"}],l=[{label:"Documentation",href:"#"},{label:"API Reference",href:"#"},{label:"Help Center",href:"#"}],d=[{label:"About",href:"#"},{label:"Blog",href:"#"},{label:"Contact",href:"#"}];function c(){return(0,a.jsx)("footer",{className:"bg-bg border-t border-border pt-16 pb-12",children:(0,a.jsxs)("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:[(0,a.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-10 mb-12",children:[(0,a.jsxs)("div",{className:"col-span-2 lg:col-span-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-6",children:[(0,a.jsx)("div",{className:"size-6 text-primary",children:(0,a.jsx)("svg",{className:"w-full h-full",fill:"currentColor",viewBox:"0 0 48 48",children:(0,a.jsx)("path",{clipRule:"evenodd",d:"M12.0799 24L4 19.2479L9.95537 8.75216L18.04 13.4961L18.0446 4H29.9554L29.96 13.4961L38.0446 8.75216L44 19.2479L35.92 24L44 28.7521L38.0446 39.2479L29.96 34.5039L29.9554 44H18.0446L18.04 34.5039L9.95537 39.2479L4 28.7521L12.0799 24Z",fillRule:"evenodd"})})}),(0,a.jsx)("span",{className:"text-xl font-bold text-text-main",children:s.vQ.name})]}),(0,a.jsx)("p",{className:"text-text-muted mb-6 max-w-sm font-light",children:"The unified interface for modern AI infrastructure. Secure, observable, and scalable."}),(0,a.jsxs)("div",{className:"flex gap-4",children:[(0,a.jsx)("a",{href:"#",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"Twitter",children:(0,a.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{d:"M22.46 6c-.77.35-1.6.58-2.46.69.88-.53 1.56-1.37 1.88-2.38-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29 0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15 0 1.49.75 2.81 1.91 3.56-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.22 4.22 0 0 1-1.93.07 4.28 4.28 0 0 0 4 2.98 8.521 8.521 0 0 1-5.33 1.84c-.34 0-.68-.02-1.02-.06C3.44 20.29 5.7 21 8.12 21 16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56.84-.6 1.56-1.36 2.14-2.23z"})})}),(0,a.jsx)("a",{href:"#",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"GitHub",children:(0,a.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,a.jsx)("path",{d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0 0 22 12.017C22 6.484 17.522 2 12 2z"})})})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Product"}),(0,a.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:o.map(e=>(0,a.jsx)("li",{children:(0,a.jsx)(r(),{href:e.href,className:"hover:text-primary transition-colors",children:e.label})},e.label))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Resources"}),(0,a.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:l.map(e=>(0,a.jsx)("li",{children:(0,a.jsx)(r(),{href:e.href,className:"hover:text-primary transition-colors",children:e.label})},e.label))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Company"}),(0,a.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:d.map(e=>(0,a.jsx)("li",{children:(0,a.jsx)(r(),{href:e.href,className:"hover:text-primary transition-colors",children:e.label})},e.label))})]})]}),(0,a.jsxs)("div",{className:"border-t border-border pt-8 flex flex-col md:flex-row justify-between items-center gap-4",children:[(0,a.jsxs)("p",{className:"text-sm text-text-muted",children:["\xa9 ",new Date().getFullYear()," ",s.vQ.name," Inc. All rights reserved."]}),(0,a.jsxs)("div",{className:"flex gap-6 text-sm text-text-muted",children:[(0,a.jsx)(r(),{href:"#",className:"hover:text-primary transition-colors",children:"Privacy Policy"}),(0,a.jsx)(r(),{href:"#",className:"hover:text-primary transition-colors",children:"Terms of Service"})]})]})]})})}},92542:(e,t,n)=>{n.d(t,{default:()=>o});var a=n(95155),i=n(31474);let r={primary:"bg-brand-500 hover:bg-brand-600 text-white shadow-sm disabled:bg-surface-3 disabled:text-text-muted",secondary:"bg-surface-2 hover:bg-surface-3 text-text-main border border-border disabled:opacity-50",outline:"border border-border text-text-main hover:bg-surface-2 hover:border-brand-500/40",ghost:"text-text-muted hover:bg-surface-2 hover:text-text-main",danger:"bg-red-500 hover:bg-red-600 text-white shadow-sm disabled:bg-surface-3 disabled:text-text-muted",success:"bg-green-600 hover:bg-green-700 text-white shadow-sm disabled:bg-surface-3 disabled:text-text-muted"},s={xs:"h-6 px-2 text-[11px] rounded-md",sm:"h-7 px-3 text-xs rounded-[8px]",md:"h-9 px-4 text-sm rounded-[10px]",lg:"h-11 px-6 text-sm rounded-[10px]"};function o({children:e,variant:t="primary",size:n="md",icon:l,iconRight:d,disabled:c=!1,loading:u=!1,fullWidth:m=!1,className:x,...p}){return(0,a.jsxs)("button",{className:(0,i.cn)("inline-flex items-center justify-center gap-2 font-semibold transition-all duration-150 ease-out cursor-pointer","active:scale-[0.97] disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100",r[t],s[n],m&&"w-full",x),disabled:c||u,...p,children:[u?(0,a.jsx)("span",{className:"material-symbols-outlined animate-spin text-[18px]",children:"progress_activity"}):l?(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:l}):null,e,d&&!u&&(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:d})]})}},92622:(e,t,n)=>{n.d(t,{default:()=>C});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(98500),l=n.n(o),d=n(73321),c=n(31474),u=n(90620),m=n(88105),x=n(11059),p=n(65635),h=n(73006),g=n(72767),f=n(92542),b=n(81127);let v=["embedding","image","video","tts","stt","systemone","rerank"],k="/dashboard/media-providers/web",y=[{href:"/dashboard/endpoint",label:"Endpoint & Key",icon:"api"},{href:"/dashboard/providers",label:"Providers",icon:"dns"},{href:"/dashboard/combos",label:"Combo & Vision Adapter",icon:"layers"},{href:"/dashboard/usage",label:"Usage",icon:"bar_chart"},{href:"/dashboard/quota",label:"Quota Tracker",icon:"data_usage"},{href:"/dashboard/token-saver",label:"Token Saver",icon:"savings"},{href:"/dashboard/cli-tools",label:"CLI Tools",icon:"terminal"}],w=[{href:"/dashboard/console-log",label:"Console Log",icon:"terminal"},{href:"/dashboard/translator",label:"Translator",icon:"translate"}],j=[{label:"Feishu Group",icon:"groups",href:"https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=629nc6fd-1ce9-4822-8242-239f87f471c3&qr_code=true"},{label:"Discord",icon:"forum",href:"https://discord.gg/zDWT6YKav"},{label:"Telegram",icon:"send",href:"https://t.me/techysy"},{label:"X",icon:"alternate_email",href:"https://x.com/techysy_ai"},{label:"GitHub",icon:"code",href:"https://github.com/techysy/10router"}],N=[{href:"/dashboard/proxy-pools",label:"Proxy Pools",icon:"lan"},{href:"/dashboard/skills",label:"Skills",icon:"extension"}];function C({onClose:e}){let t=(0,d.usePathname)(),[n,r]=(0,i.useState)(!1),[s,o]=(0,i.useState)(!1),[S,F]=(0,i.useState)(null),[W,T]=(0,i.useState)(null),[I,$]=(0,i.useState)(!1),[A,D]=(0,i.useState)(!1),[P,_]=(0,i.useState)(0),[E,z]=(0,i.useState)(!1),{copied:M,copy:L}=(0,x.C)(2e3),R=u.h0.installCmdLatest;(0,i.useEffect)(()=>{g.A.getState().fetchSettings().then(e=>{e?.enableTranslator&&z(!0)})},[]),(0,i.useEffect)(()=>{let e=setTimeout(()=>{fetch("/api/version").then(e=>e.json()).then(e=>{e.hasUpdate&&F(e)}).catch(()=>{})},2500);return()=>clearTimeout(e)},[]),(0,i.useEffect)(()=>{fetch("/api/version",{cache:"no-store"}).then(e=>e.json()).then(e=>{e.diskVersion&&e.currentVersion&&e.diskVersion!==e.currentVersion&&T(e)}).catch(()=>{})},[]);let q=e=>"/dashboard/endpoint"===e?"/dashboard"===t||t.startsWith("/dashboard/endpoint"):t.startsWith(e),U=async()=>{await (0,p.e)(R),L(R);let e=u.h0.shutdownCountdownSec;_(e);let t=setInterval(()=>{_(e-=1),e<=0&&(clearInterval(t),fetch("/api/version/shutdown",{method:"POST"}).catch(()=>{}),o(!0))},1e3)};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("aside",{className:"flex w-72 flex-col border-r border-border-subtle bg-vibrancy backdrop-blur-xl transition-colors duration-300 min-h-full",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 px-6 pt-5 pb-2",children:[(0,a.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FF5F56]"}),(0,a.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FFBD2E]"}),(0,a.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#27C93F]"})]}),(0,a.jsxs)("div",{className:"px-6 py-4 flex flex-col gap-2",children:[(0,a.jsxs)(l(),{href:"/dashboard",className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"flex items-center justify-center size-9 rounded-[10px] bg-gradient-to-br from-brand-500 to-brand-700 shadow-[var(--shadow-warm)]",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-white text-[20px]",children:"hub"})}),(0,a.jsxs)("div",{className:"flex flex-col",children:[(0,a.jsx)("h1",{className:"text-lg font-semibold tracking-tight text-text-main",children:"10Router Proxy"}),(0,a.jsxs)("span",{className:"text-xs text-text-muted",children:["v",u.vQ.version]})]})]}),W&&(0,a.jsxs)("div",{className:"flex flex-col gap-1 rounded p-1.5 -m-1 bg-amber-500/10 border border-amber-500/40",children:[(0,a.jsx)("span",{className:"text-xs font-semibold text-amber-700 dark:text-amber-500",children:(0,h.Tl)("Installed version ${disk} differs from the running build ${current}.").replace("${disk}",W.diskVersion).replace("${current}",W.currentVersion)}),(0,a.jsx)("span",{className:"text-[11px] text-text-muted",children:(0,h.Tl)("Quit and reopen 10router, then refresh this page.")})]}),S&&(0,a.jsxs)("div",{className:"flex flex-col gap-1.5 rounded p-1 -m-1",children:[(0,a.jsxs)("span",{className:"text-xs font-semibold text-green-600 dark:text-amber-500",children:[(0,h.Tl)("↑ New version available:")," v",S.latestVersion]}),"fpk"===S.installChannel||"desktop"===S.installChannel?(0,a.jsx)("a",{href:S.releaseUrl,target:"_blank",rel:"noreferrer",className:"px-2 py-1 rounded bg-green-600 hover:bg-green-700 dark:bg-amber-500 dark:hover:bg-amber-600 text-white text-[11px] font-semibold transition-colors text-center",children:"fpk"===S.installChannel?(0,h.Tl)("Get the fpk from Releases"):(0,h.Tl)("Get the installer from Releases")}):(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("button",{onClick:()=>$(!0),className:"px-2 py-1 rounded bg-green-600 hover:bg-green-700 dark:bg-amber-500 dark:hover:bg-amber-600 text-white text-[11px] font-semibold transition-colors cursor-pointer",children:(0,h.Tl)("Update now")}),(0,a.jsx)("button",{onClick:()=>L(R),title:(0,h.Tl)("Copy install command"),className:"flex-1 text-left hover:opacity-80 transition-opacity cursor-pointer min-w-0",children:(0,a.jsx)("code",{className:"block text-[10px] text-green-600/80 dark:text-amber-400/70 font-mono truncate",children:M?"✓ "+(0,h.Tl)("copied!"):R})})]})]})]}),(0,a.jsxs)("nav",{className:"flex-1 px-4 py-2 space-y-0.5 overflow-y-auto custom-scrollbar",children:[y.map(t=>(0,a.jsxs)(l(),{href:t.href,onClick:e,className:(0,c.cn)("flex items-center gap-3 px-3 py-1 rounded-lg transition-all group",q(t.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"),children:[(0,a.jsx)("span",{className:(0,c.cn)("material-symbols-outlined text-[18px]",q(t.href)?"fill-1":"group-hover:text-primary transition-colors"),children:t.icon}),(0,a.jsx)("span",{className:"text-sm font-medium",children:t.label})]},t.href)),(0,a.jsxs)("div",{className:"pt-3 mt-2 space-y-0.5",children:[(0,a.jsx)("p",{className:"px-4 text-xs font-semibold text-text-muted/60 uppercase tracking-wider mb-2",children:"System"}),(0,a.jsxs)("button",{onClick:()=>r(e=>!e),className:(0,c.cn)("w-full flex items-center gap-3 px-3 py-1 rounded-lg transition-all group",t.startsWith("/dashboard/media-providers")?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"perm_media"}),(0,a.jsx)("span",{className:"text-sm font-medium flex-1 text-left",children:"Media Providers"}),m.rj.some(e=>v.includes(e.id)&&e.isNew)&&(0,a.jsx)("span",{className:"text-[10px] font-semibold px-1.5 py-0.5 rounded-[3px] bg-green-500/15 text-green-400",children:"NEW"}),(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] transition-transform",style:{transform:n?"rotate(180deg)":"rotate(0deg)"},children:"expand_more"})]}),n&&(0,a.jsxs)("div",{className:"pl-4",children:[m.rj.filter(e=>v.includes(e.id)).map(n=>(0,a.jsxs)(l(),{href:`/dashboard/media-providers/${n.id}`,onClick:e,className:(0,c.cn)("flex items-center gap-3 px-4 py-1 rounded-lg transition-all group",t.startsWith(`/dashboard/media-providers/${n.id}`)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:n.icon}),(0,a.jsx)("span",{className:"text-sm",children:n.label}),n.isNew&&(0,a.jsx)("span",{className:"ml-auto text-[10px] font-semibold px-1.5 py-0.5 rounded-[3px] bg-green-500/15 text-green-400",children:"NEW"})]},n.id)),(0,a.jsxs)(l(),{href:k,onClick:e,className:(0,c.cn)("flex items-center gap-3 px-4 py-1 rounded-lg transition-all group",t.startsWith(k)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"travel_explore"}),(0,a.jsx)("span",{className:"text-sm",children:"Web Fetch & Search"})]},"web")]}),N.map(t=>(0,a.jsxs)(l(),{href:t.href,onClick:e,className:(0,c.cn)("flex items-center gap-3 px-3 py-1 rounded-lg transition-all group",q(t.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"),children:[(0,a.jsx)("span",{className:(0,c.cn)("material-symbols-outlined text-[18px]",q(t.href)?"fill-1":"group-hover:text-primary transition-colors"),children:t.icon}),(0,a.jsx)("span",{className:"text-sm font-medium",children:t.label})]},t.href)),w.map(t=>"/dashboard/translator"!==t.href||E?(0,a.jsxs)(l(),{href:t.href,onClick:e,className:(0,c.cn)("flex items-center gap-3 px-3 py-1 rounded-lg transition-all group",q(t.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"),children:[(0,a.jsx)("span",{className:(0,c.cn)("material-symbols-outlined text-[18px]",q(t.href)?"fill-1":"group-hover:text-primary transition-colors"),children:t.icon}),(0,a.jsx)("span",{className:"text-sm font-medium",children:t.label})]},t.href):null),(0,a.jsxs)(l(),{href:"/dashboard/experimental",onClick:e,className:(0,c.cn)("flex items-center gap-3 px-3 py-1 rounded-lg transition-all group",q("/dashboard/experimental")?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"),children:[(0,a.jsx)("span",{className:(0,c.cn)("material-symbols-outlined text-[18px]",q("/dashboard/experimental")?"fill-1":"group-hover:text-primary transition-colors"),children:"science"}),(0,a.jsx)("span",{className:"text-sm font-medium",children:"Experimental"})]}),(0,a.jsxs)(l(),{href:"/dashboard/profile",onClick:e,className:(0,c.cn)("flex items-center gap-3 px-3 py-1 rounded-lg transition-all group",q("/dashboard/profile")?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"),children:[(0,a.jsx)("span",{className:(0,c.cn)("material-symbols-outlined text-[18px]",q("/dashboard/profile")?"fill-1":"group-hover:text-primary transition-colors"),children:"settings"}),(0,a.jsx)("span",{className:"text-sm font-medium",children:"Settings"})]}),(0,a.jsxs)("div",{className:"pt-3 mt-2 space-y-0.5",children:[(0,a.jsx)("p",{className:"px-4 text-xs font-semibold text-text-muted/60 uppercase tracking-wider mb-2",children:(0,h.Tl)("Community")}),j.map(t=>(0,a.jsxs)("a",{href:t.href,target:"_blank",rel:"noopener noreferrer",onClick:e,className:"flex items-center gap-3 px-3 py-1 rounded-lg transition-all group text-text-muted hover:bg-surface-2 hover:text-text-main",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px] group-hover:text-primary transition-colors",children:t.icon}),(0,a.jsx)("span",{className:"text-sm font-medium",children:(0,h.Tl)(t.label)})]},t.href))]})]})]})]}),(0,a.jsx)(b.ConfirmModal,{isOpen:I,onClose:()=>$(!1),onConfirm:()=>{$(!1),D(!0)},title:(0,h.Tl)("Update 10Router"),message:(0,h.Tl)("Show install command for v${version}? You can copy it and shutdown to install manually.").replace("${version}",S?.latestVersion||""),confirmText:(0,h.Tl)("Show Command"),cancelText:(0,h.Tl)("Cancel"),variant:"primary"}),(s||A)&&(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 backdrop-blur-sm p-6",children:A?(0,a.jsx)(O,{latestVersion:S?.latestVersion,installCmd:R,copied:M,onCopyAndShutdown:U,onCancel:()=>{D(!1),_(0)},countdown:P,isDisconnected:s}):(0,a.jsxs)("div",{className:"text-center p-8",children:[(0,a.jsx)("div",{className:"flex items-center justify-center size-16 rounded-full bg-red-500/20 text-red-500 mx-auto mb-4",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"power_off"})}),(0,a.jsx)("h2",{className:"text-xl font-semibold text-white mb-2",children:(0,h.Tl)("Server Disconnected")}),(0,a.jsx)("p",{className:"text-text-muted mb-6",children:(0,h.Tl)("The proxy server has been stopped.")}),(0,a.jsx)(f.default,{variant:"secondary",onClick:()=>globalThis.location.reload(),children:(0,h.Tl)("Reload Page")})]})})]})}function O({latestVersion:e,installCmd:t,copied:n,onCopyAndShutdown:i,onCancel:r,countdown:s,isDisconnected:o}){let l=s>0;return(0,a.jsxs)("div",{className:"w-full max-w-lg rounded-xl bg-neutral-900/95 border border-white/10 p-6 text-white",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,a.jsx)("div",{className:"flex items-center justify-center size-11 rounded-full bg-amber-500/20 text-amber-400",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[24px]",children:"content_copy"})}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("h2",{className:"text-lg font-semibold",children:[(0,h.Tl)("Update 10Router"),e?` v${e}`:""]}),(0,a.jsx)("p",{className:"text-xs text-white/60",children:o?(0,h.Tl)("Server stopped. Paste the command into a terminal to install."):l?(0,h.Tl)("Command copied. Server will stop in {s}s...").replace("{s}",String(s)):(0,h.Tl)("Click the button below to copy the install command and shutdown.")})]})]}),(0,a.jsx)("p",{className:"text-sm text-white/80 mb-2",children:(0,h.Tl)("Install command:")}),(0,a.jsx)("div",{className:"w-full px-3 py-2 rounded bg-white/5 mb-4",children:(0,a.jsx)("code",{className:"text-xs font-mono text-amber-400 break-all",children:t})}),(0,a.jsxs)("ol",{className:"text-xs text-white/70 space-y-1 list-decimal list-inside mb-4",children:[(0,a.jsx)("li",{children:(0,h.Tl)("Click Copy & Shutdown below.")}),(0,a.jsx)("li",{children:(0,h.Tl)("Paste the command into your terminal and press Enter.")}),(0,a.jsx)("li",{children:(0,h.Tl)("Run 10router again after install.")})]}),o?(0,a.jsx)(f.default,{variant:"secondary",fullWidth:!0,onClick:()=>globalThis.location.reload(),children:(0,h.Tl)("Reload Page")}):(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(f.default,{variant:"secondary",onClick:r,disabled:l,className:"whitespace-nowrap shrink-0",children:(0,h.Tl)("Cancel")}),(0,a.jsx)(f.default,{variant:"primary",fullWidth:!0,onClick:i,disabled:l,children:n?(0,h.Tl)("✓ Copied — shutting down..."):l?(0,h.Tl)("Shutting down in {s}s").replace("{s}",String(s)):(0,h.Tl)("Copy & Shutdown")})]})]})}C.propTypes={onClose:s().func},O.propTypes={latestVersion:s().string,installCmd:s().string.isRequired,copied:s().bool,onCopyAndShutdown:s().func.isRequired,onCancel:s().func.isRequired,countdown:s().number,isDisconnected:s().bool}},94230:(e,t,n)=>{n.d(t,{default:()=>d});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(35497),l=n(11059);function d({isOpen:e,provider:t,onSuccess:n,onClose:r}){let[s,c]=(0,i.useState)("loading"),[u,m]=(0,i.useState)(""),[x,p]=(0,i.useState)(null),[h,g]=(0,i.useState)(""),[f,b]=(0,i.useState)(null),{copied:v,copy:k}=(0,l.C)(),y=(0,i.useRef)(!1);(0,i.useEffect)(()=>{e||(y.current=!1)},[e]),(0,i.useEffect)(()=>{e&&t&&(async()=>{try{b(null),c("loading");let e=await fetch(`/api/oauth/kiro/social-authorize?provider=${t}`),n=await e.json();if(!e.ok)throw Error(n.error);p(n),m(n.authUrl),c("input"),y.current||(y.current=!0,window.open(n.authUrl,"_blank"))}catch(e){b(e.message),c("error")}})()},[e,t]);let w=async()=>{try{let e;b(null);try{e=new URL(h)}catch(e){throw Error("Invalid callback URL format")}let a=e.searchParams.get("code");e.searchParams.get("state");let i=e.searchParams.get("error");if(i)throw Error(e.searchParams.get("error_description")||i);if(!a)throw Error("No authorization code found in URL");let r=await fetch("/api/oauth/kiro/social-exchange",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:a,codeVerifier:x.codeVerifier,provider:t})}),s=await r.json();if(!r.ok)throw Error(s.error);c("success"),n?.()}catch(e){b(e.message),c("error")}},j="google"===t?"Google":"GitHub";return(0,a.jsx)(o.aF,{isOpen:e,title:`Connect Kiro via ${j}`,onClose:r,size:"lg",children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:["loading"===s&&(0,a.jsxs)("div",{className:"text-center py-6",children:[(0,a.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,a.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Initializing..."}),(0,a.jsxs)("p",{className:"text-sm text-text-muted",children:["Setting up ",j," authentication"]})]}),"input"===s&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.pd,{value:u,readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,a.jsx)(o.$n,{variant:"secondary",icon:"auth_url"===v?"check":"content_copy",onClick:()=>k(u,"auth_url"),children:"Copy"})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,a.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser address bar."}),(0,a.jsx)(o.pd,{value:h,onChange:e=>g(e.target.value),placeholder:"kiro://kiro.kiroAgent/authenticate-success?code=...",className:"font-mono text-xs"})]})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:w,fullWidth:!0,disabled:!h,children:"Connect"}),(0,a.jsx)(o.$n,{onClick:r,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===s&&(0,a.jsxs)("div",{className:"text-center py-6",children:[(0,a.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,a.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,a.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your Kiro account via ",j," has been connected."]}),(0,a.jsx)(o.$n,{onClick:r,fullWidth:!0,children:"Done"})]}),"error"===s&&(0,a.jsxs)("div",{className:"text-center py-6",children:[(0,a.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,a.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,a.jsx)("p",{className:"text-sm text-red-600 mb-4",children:f}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:()=>c("input"),variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,a.jsx)(o.$n,{onClick:r,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})})}d.propTypes={isOpen:s().bool.isRequired,provider:s().oneOf(["google","github"]).isRequired,onSuccess:s().func,onClose:s().func.isRequired}},95088:(e,t,n)=>{n.d(t,{default:()=>d});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(35497);let l="https://gitlab.com";function d({isOpen:e,providerInfo:t,onSuccess:n,onClose:r}){let s,[c,u]=(0,i.useState)(null),[m,x]=(0,i.useState)(l),[p,h]=(0,i.useState)(""),[g,f]=(0,i.useState)(""),[b,v]=(0,i.useState)(""),[k,y]=(0,i.useState)(!1),[w,j]=(0,i.useState)(null),[N,C]=(0,i.useState)(!1),[O,S]=(0,i.useState)(null),F=()=>{u(null),x(l),h(""),f(""),v(""),j(null),y(!1),C(!1),S(null),r()},W=async()=>{if(!b.trim())return void j("Personal Access Token is required");y(!0),j(null);try{let e=await fetch("/api/oauth/gitlab/pat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:b.trim(),baseUrl:m.trim()||l})}),t=await e.json();if(!e.ok)throw Error(t.error||"Authentication failed");n?.(),F()}catch(e){j(e.message)}finally{y(!1)}};return e?N&&O?(0,a.jsx)(o.LF,{isOpen:!0,provider:"gitlab",providerInfo:t,oauthMeta:O,onSuccess:()=>{n?.(),F()},onClose:()=>{C(!1),S(null)}}):(0,a.jsx)(o.aF,{isOpen:e,title:"Connect GitLab Duo",onClose:F,size:"lg",children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[!c&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Choose how to authenticate with GitLab Duo:"}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,a.jsxs)("button",{onClick:()=>u("oauth"),className:"flex flex-col items-center gap-2 p-4 rounded-lg border border-border hover:border-primary hover:bg-primary/5 transition-colors text-left",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-2xl text-primary",children:"lock_open"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-sm font-medium",children:"OAuth App"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Use a GitLab OAuth application"})]})]}),(0,a.jsxs)("button",{onClick:()=>u("pat"),className:"flex flex-col items-center gap-2 p-4 rounded-lg border border-border hover:border-primary hover:bg-primary/5 transition-colors text-left",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-2xl text-primary",children:"key"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-sm font-medium",children:"Personal Access Token"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Use a GitLab PAT with api scope"})]})]})]})]}),"oauth"===c&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["Create an OAuth app at"," ",(0,a.jsx)("a",{href:`${m.trim()||l}/-/profile/applications`,target:"_blank",rel:"noreferrer",className:"text-primary underline",children:"GitLab Applications"})," ","with redirect URI"," ",(0,a.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:(s=window.location.port||("https:"===window.location.protocol?"443":"80"),`http://localhost:${s}/callback`)})]}),(0,a.jsx)(o.pd,{label:"GitLab Base URL",value:m,onChange:e=>x(e.target.value),placeholder:l}),(0,a.jsx)(o.pd,{label:"Client ID",value:p,onChange:e=>h(e.target.value),placeholder:"Your OAuth application client ID"}),(0,a.jsx)(o.pd,{label:"Client Secret (optional for PKCE)",value:g,onChange:e=>f(e.target.value),placeholder:"Leave empty for public PKCE app"}),w&&(0,a.jsx)("p",{className:"text-sm text-red-500",children:w}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:()=>{p.trim()?(j(null),S({baseUrl:m.trim()||l,clientId:p.trim(),clientSecret:g.trim()}),C(!0)):j("Client ID is required")},fullWidth:!0,disabled:!p.trim(),children:"Authorize"}),(0,a.jsx)(o.$n,{onClick:()=>{u(null),j(null)},variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"pat"===c&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["Create a PAT at"," ",(0,a.jsx)("a",{href:`${m.trim()||l}/-/user_settings/personal_access_tokens`,target:"_blank",rel:"noreferrer",className:"text-primary underline",children:"GitLab Access Tokens"})," ","with scopes: ",(0,a.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"api"}),","," ",(0,a.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"read_user"}),", and"," ",(0,a.jsx)("code",{className:"bg-sidebar px-1 rounded text-xs",children:"ai_features"}),"."]}),(0,a.jsx)(o.pd,{label:"GitLab Base URL",value:m,onChange:e=>x(e.target.value),placeholder:l}),(0,a.jsx)(o.pd,{label:"Personal Access Token",value:b,onChange:e=>v(e.target.value),placeholder:"glpat-xxxxxxxxxxxxxxxxxxxx",type:"password"}),w&&(0,a.jsx)("p",{className:"text-sm text-red-500",children:w}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:W,fullWidth:!0,disabled:!b.trim()||k,loading:k,children:"Connect"}),(0,a.jsx)(o.$n,{onClick:()=>{u(null),j(null)},variant:"ghost",fullWidth:!0,children:"Back"})]})]})]})}):null}d.propTypes={isOpen:s().bool.isRequired,providerInfo:s().shape({name:s().string}),onSuccess:s().func,onClose:s().func.isRequired}},96748:(e,t,n)=>{n.d(t,{default:()=>d});var a=n(95155),i=n(12115),r=n(14051),s=n.n(r),o=n(35497);let l="https://api.openai.com/v1";function d({isOpen:e,onClose:t,onCreated:n,onSaved:r,node:s}){let c=!!s,[u,m]=(0,i.useState)({name:"",prefix:"",baseUrl:l}),[x,p]=(0,i.useState)(!1),[h,g]=(0,i.useState)(""),[f,b]=(0,i.useState)(""),[v,k]=(0,i.useState)(!1),[y,w]=(0,i.useState)(null);(0,i.useEffect)(()=>{e&&(w(null),g(""),b(""),c?m({name:s.name||"",prefix:s.prefix||"",baseUrl:s.baseUrl||l}):m({name:"",prefix:"",baseUrl:l}))},[e,c,s]);let j=async()=>{if(u.name.trim()&&u.prefix.trim()&&u.baseUrl.trim()){p(!0);try{let e=c?`/api/provider-nodes/${s.id}`:"/api/provider-nodes",t=c?"PUT":"POST",a={name:u.name,prefix:u.prefix,baseUrl:u.baseUrl};c||(a.type="custom-embedding");let i=await fetch(e,{method:t,headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),o=await i.json();i.ok&&(c?r?.(o.node):n?.(o.node))}catch(e){console.log("Error saving custom embedding node:",e)}finally{p(!1)}}},N=async()=>{k(!0);try{let e=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:u.baseUrl,apiKey:h,type:"custom-embedding",modelId:f.trim()||void 0})}),t=await e.json();w(t)}catch{w({valid:!1,error:"Network error"})}finally{k(!1)}};return(0,a.jsx)(o.aF,{isOpen:e,title:c?"Edit Custom Embedding":"Add Custom Embedding",onClose:t,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)(o.pd,{label:"Name",value:u.name,onChange:e=>m({...u,name:e.target.value}),placeholder:"Voyage AI",hint:"Required. A friendly label for this embedding provider."}),(0,a.jsx)(o.pd,{label:"Prefix",value:u.prefix,onChange:e=>m({...u,prefix:e.target.value}),placeholder:"voyage",hint:"Required. Used as the provider prefix for model IDs (e.g. voyage/voyage-3)."}),(0,a.jsx)(o.pd,{label:"Base URL",value:u.baseUrl,onChange:e=>m({...u,baseUrl:e.target.value}),placeholder:"https://api.voyageai.com/v1",hint:"Most embedding APIs are OpenAI-compatible: Voyage, Cohere, Jina, Mistral, Together..."}),(0,a.jsx)(o.pd,{label:"API Key (for Check)",type:"password",value:h,onChange:e=>g(e.target.value)}),(0,a.jsx)(o.pd,{label:"Model ID (for Check)",value:f,onChange:e=>b(e.target.value),placeholder:"e.g. voyage-3, embed-english-v3.0, text-embedding-3-small",hint:"Required for validation. Will send a test embeddings request."}),(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)(o.$n,{onClick:N,disabled:!h||!f.trim()||v||!u.baseUrl.trim(),variant:"secondary",children:v?"Checking...":"Check"}),(()=>{if(!y)return null;let{valid:e,error:t,dimensions:n}=y;return e?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.Ex,{variant:"success",children:"Valid"}),n&&(0,a.jsxs)("span",{className:"text-sm text-text-muted",children:[n," dims"]})]}):(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsx)(o.Ex,{variant:"error",children:"Invalid"}),t&&(0,a.jsx)("span",{className:"text-sm text-red-500",children:t})]})})()]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(o.$n,{onClick:j,fullWidth:!0,disabled:!u.name.trim()||!u.prefix.trim()||!u.baseUrl.trim()||x,children:x?c?"Saving...":"Creating...":c?"Save":"Create"}),(0,a.jsx)(o.$n,{onClick:t,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})})}d.propTypes={isOpen:s().bool.isRequired,onClose:s().func.isRequired,onCreated:s().func,onSaved:s().func,node:s().shape({id:s().string,name:s().string,prefix:s().string,baseUrl:s().string})}},97677:(e,t,n)=>{n.d(t,{default:()=>s});var a=n(95155),i=n(12115),r=n(47650);function s({text:e,children:t,position:n="top",color:o}){let l=(0,i.useRef)(null),[d,c]=(0,i.useState)(null);return(0,a.jsxs)("div",{ref:l,className:"relative inline-flex",onMouseEnter:()=>{let e=l.current?.getBoundingClientRect();if(!e)return;let t=e.left+e.width/2,a=e.top+e.height/2;c({position:"fixed",..."bottom"===n?{top:e.bottom+6,left:t,transform:"translateX(-50%)"}:"left"===n?{right:window.innerWidth-e.left+6,top:a,transform:"translateY(-50%)"}:"right"===n?{left:e.right+6,top:a,transform:"translateY(-50%)"}:{bottom:window.innerHeight-e.top+6,left:t,transform:"translateX(-50%)"}})},onMouseLeave:()=>c(null),children:[t,d&&"u">typeof document&&(0,r.createPortal)((0,a.jsx)("div",{className:`pointer-events-none z-50 w-max max-w-56 rounded px-2 py-1 text-[11px] leading-snug text-white whitespace-normal ${o?"":"bg-gray-900"}`,style:{...d,...o?{backgroundColor:o}:{}},children:e}),document.body)]})}},98542:(e,t,n)=>{n.d(t,{default:()=>r});var a=n(95155),i=n(31474);function r({checked:e=!1,onChange:t,label:n,description:s,disabled:o=!1,size:l="md",className:d}){let c={sm:{track:"w-8 h-4",thumb:"size-3",translate:"translate-x-4"},md:{track:"w-11 h-6",thumb:"size-5",translate:"translate-x-5"},lg:{track:"w-14 h-7",thumb:"size-6",translate:"translate-x-7"}};return(0,a.jsxs)("div",{className:(0,i.cn)("flex items-center gap-3",o&&"opacity-50 cursor-not-allowed",d),children:[(0,a.jsx)("button",{type:"button",role:"switch","aria-checked":e,disabled:o,onClick:()=>{!o&&t&&t(!e)},className:(0,i.cn)("relative inline-flex shrink-0 cursor-pointer rounded-full","transition-colors duration-200 ease-in-out","focus:outline-none focus:ring-2 focus:ring-brand-500/30",e?"bg-brand-500":"bg-surface-3",c[l].track,o&&"cursor-not-allowed"),children:(0,a.jsx)("span",{className:(0,i.cn)("pointer-events-none inline-block rounded-full bg-white shadow-sm","transform transition duration-200 ease-in-out",e?c[l].translate:"translate-x-0.5",c[l].thumb,"mt-0.5")})}),(n||s)&&(0,a.jsxs)("div",{className:"flex flex-col",children:[n&&(0,a.jsx)("span",{className:"text-sm font-medium text-text-main",children:n}),s&&(0,a.jsx)("span",{className:"text-xs text-text-muted",children:s})]})]})}}}]);
|