@rabbi696/ezrouter 0.6.7 → 0.6.8
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 +5 -5
- package/app/.next-cli-build/build-manifest.json +2 -2
- 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/convoy/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/convoy/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/convoy/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/error-log/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/error-log/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/error-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/keys/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/keys/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/keys/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/servers/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/servers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp-gateway/servers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
- 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 +5 -5
- 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 +2 -2
- 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 +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +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 +2 -2
- 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/routing-health/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-health/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-health/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.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/_global-error.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_index.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 +1 -1
- package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- 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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
- 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.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli/providers/codex/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-native/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-native/readiness/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js.nft.json +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/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/export/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/convoy/rules/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/internal/codex-native/lease/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/instances/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/instances/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/instances/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/oauth/[id]/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp-gateway/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/catalog-sync/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.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.nft.json +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/callback/route.js.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.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]/refresh-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/routing-health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/token-saver/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/token-saver/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tool-disclosure/stats/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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/error-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/alpha/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/alpha/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/alpha/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/images/edits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/memories/trace_summarize/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/codex/responses/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.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/[...model]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[...model]/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/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/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 +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page.js +1 -1
- package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/convoy.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/convoy.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/!KGRhc2hib2FyZCk/dashboard/convoy/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/!KGRhc2hib2FyZCk/dashboard/convoy.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/convoy.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway/keys/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway/keys.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/keys.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway/servers/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway/servers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway/servers.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/!KGRhc2hib2FyZCk/dashboard/mcp-gateway.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/mcp-gateway.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +4 -4
- 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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/routing-health.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/routing-health.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/!KGRhc2hib2FyZCk/dashboard/routing-health/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/!KGRhc2hib2FyZCk/dashboard/routing-health.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/routing-health.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/routing-health.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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
- 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.nft.json +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
- 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 +1 -1
- package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
- 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 +1 -1
- package/app/.next-cli-build/server/app/login.rsc +5 -5
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
- 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 +2 -2
- package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page.js +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 +5 -5
- package/app/.next-cli-build/server/chunks/1273.js +1 -1
- package/app/.next-cli-build/server/chunks/1744.js +12 -12
- package/app/.next-cli-build/server/chunks/1847.js +1 -1
- package/app/.next-cli-build/server/chunks/2021.js +1 -1
- package/app/.next-cli-build/server/chunks/2348.js +1 -1
- package/app/.next-cli-build/server/chunks/2892.js +1 -1
- package/app/.next-cli-build/server/chunks/3216.js +1 -0
- package/app/.next-cli-build/server/chunks/3252.js +1 -0
- package/app/.next-cli-build/server/chunks/3583.js +1 -1
- package/app/.next-cli-build/server/chunks/369.js +20 -20
- package/app/.next-cli-build/server/chunks/3886.js +1 -1
- package/app/.next-cli-build/server/chunks/3977.js +2 -2
- package/app/.next-cli-build/server/chunks/412.js +3 -3
- package/app/.next-cli-build/server/chunks/4123.js +1 -1
- package/app/.next-cli-build/server/chunks/436.js +1 -0
- package/app/.next-cli-build/server/chunks/4807.js +1 -1
- package/app/.next-cli-build/server/chunks/4827.js +1 -1
- package/app/.next-cli-build/server/chunks/5130.js +1 -1
- package/app/.next-cli-build/server/chunks/5614.js +1 -0
- package/app/.next-cli-build/server/chunks/5875.js +1 -1
- package/app/.next-cli-build/server/chunks/{4924.js → 6399.js} +19 -19
- package/app/.next-cli-build/server/chunks/7239.js +3 -3
- package/app/.next-cli-build/server/chunks/7353.js +1 -1
- package/app/.next-cli-build/server/chunks/7603.js +1 -1
- package/app/.next-cli-build/server/chunks/7775.js +1 -1
- package/app/.next-cli-build/server/chunks/7828.js +1 -1
- package/app/.next-cli-build/server/chunks/8129.js +1 -1
- package/app/.next-cli-build/server/chunks/823.js +1 -1
- package/app/.next-cli-build/server/chunks/8243.js +4 -4
- package/app/.next-cli-build/server/chunks/8306.js +1 -1
- package/app/.next-cli-build/server/chunks/880.js +4 -4
- package/app/.next-cli-build/server/chunks/8976.js +1 -1
- package/app/.next-cli-build/server/chunks/9217.js +1 -1
- package/app/.next-cli-build/server/chunks/9303.js +1 -1
- package/app/.next-cli-build/server/chunks/9485.js +1 -1
- package/app/.next-cli-build/server/chunks/9865.js +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js +2 -2
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/static/chunks/1321-e4660a6601ad3949.js +1 -0
- package/app/.next-cli-build/static/chunks/5497-a2c327d5099234f0.js +17 -0
- package/app/.next-cli-build/static/chunks/8105-9b78b79b9ec0bad7.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-8236097df15d7be9.js → page-adc0e63e21c1fd33.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-e43920245a9a5e37.js +27 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-60e7605e27ff50d0.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-065d2cde7176b5fc.js +1 -0
- package/app/.next-cli-build/static/css/3eaed7d6a98582e3.css +1 -0
- package/app/CHANGELOG.md +39 -0
- package/app/package.json +1 -1
- package/app/public/CHANGELOG.md +39 -0
- package/app/public/i18n/literals/ar.json +103 -2
- package/app/public/i18n/literals/bn.json +103 -2
- package/app/public/i18n/literals/cs.json +104 -3
- package/app/public/i18n/literals/da.json +103 -2
- package/app/public/i18n/literals/de.json +104 -3
- package/app/public/i18n/literals/el.json +103 -2
- package/app/public/i18n/literals/es.json +102 -1
- package/app/public/i18n/literals/fa.json +117 -3
- package/app/public/i18n/literals/fi.json +103 -2
- package/app/public/i18n/literals/fr.json +104 -3
- package/app/public/i18n/literals/he.json +103 -2
- package/app/public/i18n/literals/hi.json +104 -3
- package/app/public/i18n/literals/hu.json +103 -2
- package/app/public/i18n/literals/id.json +103 -1
- package/app/public/i18n/literals/it.json +104 -3
- package/app/public/i18n/literals/ja.json +102 -1
- package/app/public/i18n/literals/km.json +103 -1
- package/app/public/i18n/literals/ko.json +103 -2
- package/app/public/i18n/literals/nl.json +103 -2
- package/app/public/i18n/literals/no.json +103 -2
- package/app/public/i18n/literals/pl.json +103 -2
- package/app/public/i18n/literals/pt-BR.json +101 -2
- package/app/public/i18n/literals/pt-PT.json +103 -2
- package/app/public/i18n/literals/ro.json +105 -4
- package/app/public/i18n/literals/ru.json +104 -3
- package/app/public/i18n/literals/sv.json +104 -3
- package/app/public/i18n/literals/th.json +101 -3
- package/app/public/i18n/literals/tl.json +104 -3
- package/app/public/i18n/literals/tr.json +108 -9
- package/app/public/i18n/literals/uk.json +103 -2
- package/app/public/i18n/literals/ur.json +103 -2
- package/app/public/i18n/literals/vi.json +103 -2
- package/app/public/i18n/literals/zh-CN.json +99 -1
- package/app/public/i18n/literals/zh-TW.json +103 -2
- package/app/src/mitm/server.js +30 -30
- package/cli.js +41 -0
- package/package.json +1 -1
- package/src/cli/menus/combos.js +4 -1
- package/app/.next-cli-build/server/chunks/5224.js +0 -1
- package/app/.next-cli-build/server/chunks/6892.js +0 -1
- package/app/.next-cli-build/server/chunks/8299.js +0 -1
- package/app/.next-cli-build/static/chunks/1321-b8a4f80390cd3ea3.js +0 -1
- package/app/.next-cli-build/static/chunks/5497-a4fcd9746123edae.js +0 -17
- package/app/.next-cli-build/static/chunks/8105-914b0eb9e3a50b9d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-11a1a4053a30913f.js +0 -27
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-679ec0628cd9d54f.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-6f16a27a86240648.js +0 -1
- package/app/.next-cli-build/static/css/23be8b98c2bbb37d.css +0 -1
- /package/app/.next-cli-build/static/{caISOCVUmfRaqJe0JjnZh → 8dPzxL-dxwdChBbLdLZmV}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{caISOCVUmfRaqJe0JjnZh → 8dPzxL-dxwdChBbLdLZmV}/_ssgManifest.js +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
(()=>{var a={};a.id=8929,a.ids=[8929],a.modules={1390:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"formatNextPathnameInfo",{enumerable:!0,get:function(){return h}});let d=c(19524),e=c(67301),f=c(36066),g=c(98617);function h(a){let b=(0,g.addLocale)(a.pathname,a.locale,a.buildId?void 0:a.defaultLocale,a.ignorePrefix);return(a.buildId||!a.trailingSlash)&&(b=(0,d.removeTrailingSlash)(b)),a.buildId&&(b=(0,f.addPathSuffix)((0,e.addPathPrefix)(b,`/_next/data/${a.buildId}`),"/"===a.pathname?"index.json":".json")),b=(0,e.addPathPrefix)(b,a.basePath),!a.buildId&&a.trailingSlash?b.endsWith("/")?b:(0,f.addPathSuffix)(b,"/"):(0,d.removeTrailingSlash)(b)}},2258:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"INSTANT_VALIDATION_BOUNDARY_NAME",{enumerable:!0,get:function(){return c}});let c="__next_instant_validation_boundary__"},2886:function(a,b,c){a.exports=function(a,b){var d=[function(a,b,c){a.exports=c(34)},function(a,b,c){var d=c(29)("wks"),e=c(33),f=c(2).Symbol,g="function"==typeof f;(a.exports=function(a){return d[a]||(d[a]=g&&f[a]||(g?f:e)("Symbol."+a))}).store=d},function(a,b){var c=a.exports="u">typeof window&&window.Math==Math?window:"u">typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=c)},function(a,b,c){var d=c(9);a.exports=function(a){if(!d(a))throw TypeError(a+" is not an object!");return a}},function(a,b,c){a.exports=!c(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(a,b,c){var d=c(12),e=c(17);a.exports=c(4)?function(a,b,c){return d.f(a,b,e(1,c))}:function(a,b,c){return a[b]=c,a}},function(a,b){var c=a.exports={version:"2.4.0"};"number"==typeof __e&&(__e=c)},function(a,b,c){var d=c(14);a.exports=function(a,b,c){if(d(a),void 0===b)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)}}return function(){return a.apply(b,arguments)}}},function(a,b){var c={}.hasOwnProperty;a.exports=function(a,b){return c.call(a,b)}},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(a,b){a.exports={}},function(a,b){var c={}.toString;a.exports=function(a){return c.call(a).slice(8,-1)}},function(a,b,c){var d=c(3),e=c(26),f=c(32),g=Object.defineProperty;b.f=c(4)?Object.defineProperty:function(a,b,c){if(d(a),b=f(b,!0),d(c),e)try{return g(a,b,c)}catch(a){}if("get"in c||"set"in c)throw TypeError("Accessors not supported!");return"value"in c&&(a[b]=c.value),a}},function(a,b,c){var d=c(42),e=c(15);a.exports=function(a){return d(e(a))}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(a,b){a.exports=function(a){if(void 0==a)throw TypeError("Can't call method on "+a);return a}},function(a,b,c){var d=c(9),e=c(2).document,f=d(e)&&d(e.createElement);a.exports=function(a){return f?e.createElement(a):{}}},function(a,b){a.exports=function(a,b){return{enumerable:!(1&a),configurable:!(2&a),writable:!(4&a),value:b}}},function(a,b,c){var d=c(12).f,e=c(8),f=c(1)("toStringTag");a.exports=function(a,b,c){a&&!e(a=c?a:a.prototype,f)&&d(a,f,{configurable:!0,value:b})}},function(a,b,c){var d=c(29)("keys"),e=c(33);a.exports=function(a){return d[a]||(d[a]=e(a))}},function(a,b){var c=Math.ceil,d=Math.floor;a.exports=function(a){return isNaN(a*=1)?0:(a>0?d:c)(a)}},function(a,b,c){var d=c(11),e=c(1)("toStringTag"),f="Arguments"==d(function(){return arguments}()),g=function(a,b){try{return a[b]}catch(a){}};a.exports=function(a){var b,c,h;return void 0===a?"Undefined":null===a?"Null":"string"==typeof(c=g(b=Object(a),e))?c:f?d(b):"Object"==(h=d(b))&&"function"==typeof b.callee?"Arguments":h}},function(a,b){a.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(a,b,c){var d=c(2),e=c(6),f=c(7),g=c(5),h="prototype",i=function(a,b,c){var j,k,l,m=a&i.F,n=a&i.G,o=a&i.S,p=a&i.P,q=a&i.B,r=a&i.W,s=n?e:e[b]||(e[b]={}),t=s[h],u=n?d:o?d[b]:(d[b]||{})[h];for(j in n&&(c=b),c)(k=!m&&u&&void 0!==u[j])&&j in s||(l=k?u[j]:c[j],s[j]=n&&"function"!=typeof u[j]?c[j]:q&&k?f(l,d):r&&u[j]==l?function(a){var b=function(b,c,d){if(this instanceof a){switch(arguments.length){case 0:return new a;case 1:return new a(b);case 2:return new a(b,c)}return new a(b,c,d)}return a.apply(this,arguments)};return b[h]=a[h],b}(l):p&&"function"==typeof l?f(Function.call,l):l,p&&((s.virtual||(s.virtual={}))[j]=l,a&i.R&&t&&!t[j]&&g(t,j,l)))};i.F=1,i.G=2,i.S=4,i.P=8,i.B=16,i.W=32,i.U=64,i.R=128,a.exports=i},function(a,b){a.exports=function(a){try{return!!a()}catch(a){return!0}}},function(a,b,c){a.exports=c(2).document&&document.documentElement},function(a,b,c){a.exports=!c(4)&&!c(24)(function(){return 7!=Object.defineProperty(c(16)("div"),"a",{get:function(){return 7}}).a})},function(a,b,c){"use strict";var d=c(28),e=c(23),f=c(57),g=c(5),h=c(8),i=c(10),j=c(45),k=c(18),l=c(52),m=c(1)("iterator"),n=!([].keys&&"next"in[].keys()),o="keys",p="values",q=function(){return this};a.exports=function(a,b,c,r,s,t,u){j(c,b,r);var v,w,x,y=function(a){if(!n&&a in C)return C[a];switch(a){case o:case p:return function(){return new c(this,a)}}return function(){return new c(this,a)}},z=b+" Iterator",A=s==p,B=!1,C=a.prototype,D=C[m]||C["@@iterator"]||s&&C[s],E=D||y(s),F=s?A?y("entries"):E:void 0,G="Array"==b&&C.entries||D;if(G&&(x=l(G.call(new a)))!==Object.prototype&&(k(x,z,!0),d||h(x,m)||g(x,m,q)),A&&D&&D.name!==p&&(B=!0,E=function(){return D.call(this)}),(!d||u)&&(n||B||!C[m])&&g(C,m,E),i[b]=E,i[z]=q,s)if(v={values:A?E:y(p),keys:t?E:y(o),entries:F},u)for(w in v)w in C||f(C,w,v[w]);else e(e.P+e.F*(n||B),b,v);return v}},function(a,b){a.exports=!0},function(a,b,c){var d=c(2),e="__core-js_shared__",f=d[e]||(d[e]={});a.exports=function(a){return f[a]||(f[a]={})}},function(a,b,c){var d,e,f,g=c(7),h=c(41),i=c(25),j=c(16),k=c(2),l=k.process,m=k.setImmediate,n=k.clearImmediate,o=k.MessageChannel,p=0,q={},r="onreadystatechange",s=function(){var a=+this;if(q.hasOwnProperty(a)){var b=q[a];delete q[a],b()}},t=function(a){s.call(a.data)};m&&n||(m=function(a){for(var b=[],c=1;arguments.length>c;)b.push(arguments[c++]);return q[++p]=function(){h("function"==typeof a?a:Function(a),b)},d(p),p},n=function(a){delete q[a]},"process"==c(11)(l)?d=function(a){l.nextTick(g(s,a,1))}:o?(f=(e=new o).port2,e.port1.onmessage=t,d=g(f.postMessage,f,1)):k.addEventListener&&"function"==typeof postMessage&&!k.importScripts?(d=function(a){k.postMessage(a+"","*")},k.addEventListener("message",t,!1)):d=r in j("script")?function(a){i.appendChild(j("script"))[r]=function(){i.removeChild(this),s.call(a)}}:function(a){setTimeout(g(s,a,1),0)}),a.exports={set:m,clear:n}},function(a,b,c){var d=c(20),e=Math.min;a.exports=function(a){return a>0?e(d(a),0x1fffffffffffff):0}},function(a,b,c){var d=c(9);a.exports=function(a,b){var c,e;if(!d(a))return a;if(b&&"function"==typeof(c=a.toString)&&!d(e=c.call(a))||"function"==typeof(c=a.valueOf)&&!d(e=c.call(a))||!b&&"function"==typeof(c=a.toString)&&!d(e=c.call(a)))return e;throw TypeError("Can't convert object to primitive value")}},function(a,b){var c=0,d=Math.random();a.exports=function(a){return"Symbol(".concat(void 0===a?"":a,")_",(++c+d).toString(36))}},function(a,b,c){"use strict";function d(a){return(0,i.createHash)("sha256").update(a).digest("hex")}function e(a){switch(j){case"darwin":return a.split("IOPlatformUUID")[1].split("\n")[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return a.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":case"freebsd":return a.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw Error("Unsupported platform: "+process.platform)}}Object.defineProperty(b,"__esModule",{value:!0});var f,g=(f=c(35))&&f.__esModule?f:{default:f};b.machineIdSync=function(a){var b=e((0,h.execSync)(k[j]).toString());return a?b:d(b)},b.machineId=function(a){return new g.default(function(b,c){return(0,h.exec)(k[j],{},function(f,g,h){if(f)return c(Error("Error while obtaining machine id: "+f.stack));var i=e(g.toString());return b(a?i:d(i))})})};var h=c(70),i=c(71),j=process.platform,k={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:{native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"}["win32"!==process.platform?"":"ia32"===process.arch&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(a,b,c){a.exports={default:c(36),__esModule:!0}},function(a,b,c){c(66),c(68),c(69),c(67),a.exports=c(6).Promise},function(a,b){a.exports=function(){}},function(a,b){a.exports=function(a,b,c,d){if(!(a instanceof b)||void 0!==d&&d in a)throw TypeError(c+": incorrect invocation!");return a}},function(a,b,c){var d=c(13),e=c(31),f=c(62);a.exports=function(a){return function(b,c,g){var h,i=d(b),j=e(i.length),k=f(g,j);if(a&&c!=c){for(;j>k;)if((h=i[k++])!=h)return!0}else for(;j>k;k++)if((a||k in i)&&i[k]===c)return a||k||0;return!a&&-1}}},function(a,b,c){var d=c(7),e=c(44),f=c(43),g=c(3),h=c(31),i=c(64),j={},k={},b=a.exports=function(a,b,c,l,m){var n,o,p,q,r=m?function(){return a}:i(a),s=d(c,l,b?2:1),t=0;if("function"!=typeof r)throw TypeError(a+" is not iterable!");if(f(r)){for(n=h(a.length);n>t;t++)if((q=b?s(g(o=a[t])[0],o[1]):s(a[t]))===j||q===k)return q}else for(p=r.call(a);!(o=p.next()).done;)if((q=e(p,s,o.value,b))===j||q===k)return q};b.BREAK=j,b.RETURN=k},function(a,b){a.exports=function(a,b,c){var d=void 0===c;switch(b.length){case 0:return d?a():a.call(c);case 1:return d?a(b[0]):a.call(c,b[0]);case 2:return d?a(b[0],b[1]):a.call(c,b[0],b[1]);case 3:return d?a(b[0],b[1],b[2]):a.call(c,b[0],b[1],b[2]);case 4:return d?a(b[0],b[1],b[2],b[3]):a.call(c,b[0],b[1],b[2],b[3])}return a.apply(c,b)}},function(a,b,c){var d=c(11);a.exports=Object("z").propertyIsEnumerable(0)?Object:function(a){return"String"==d(a)?a.split(""):Object(a)}},function(a,b,c){var d=c(10),e=c(1)("iterator"),f=Array.prototype;a.exports=function(a){return void 0!==a&&(d.Array===a||f[e]===a)}},function(a,b,c){var d=c(3);a.exports=function(a,b,c,e){try{return e?b(d(c)[0],c[1]):b(c)}catch(b){var f=a.return;throw void 0!==f&&d(f.call(a)),b}}},function(a,b,c){"use strict";var d=c(49),e=c(17),f=c(18),g={};c(5)(g,c(1)("iterator"),function(){return this}),a.exports=function(a,b,c){a.prototype=d(g,{next:e(1,c)}),f(a,b+" Iterator")}},function(a,b,c){var d=c(1)("iterator"),e=!1;try{var f=[7][d]();f.return=function(){e=!0},Array.from(f,function(){throw 2})}catch(a){}a.exports=function(a,b){if(!b&&!e)return!1;var c=!1;try{var f=[7],g=f[d]();g.next=function(){return{done:c=!0}},f[d]=function(){return g},a(f)}catch(a){}return c}},function(a,b){a.exports=function(a,b){return{value:b,done:!!a}}},function(a,b,c){var d=c(2),e=c(30).set,f=d.MutationObserver||d.WebKitMutationObserver,g=d.process,h=d.Promise,i="process"==c(11)(g);a.exports=function(){var a,b,c,j=function(){var d,e;for(i&&(d=g.domain)&&d.exit();a;){e=a.fn,a=a.next;try{e()}catch(d){throw a?c():b=void 0,d}}b=void 0,d&&d.enter()};if(i)c=function(){g.nextTick(j)};else if(f){var k=!0,l=document.createTextNode("");new f(j).observe(l,{characterData:!0}),c=function(){l.data=k=!k}}else if(h&&h.resolve){var m=h.resolve();c=function(){m.then(j)}}else c=function(){e.call(d,j)};return function(d){var e={fn:d,next:void 0};b&&(b.next=e),a||(a=e,c()),b=e}}},function(a,b,c){var d=c(3),e=c(50),f=c(22),g=c(19)("IE_PROTO"),h=function(){},i="prototype",j=function(){var a,b=c(16)("iframe"),d=f.length;for(b.style.display="none",c(25).appendChild(b),b.src="javascript:",(a=b.contentWindow.document).open(),a.write("<script>document.F=Object<\/script>"),a.close(),j=a.F;d--;)delete j[i][f[d]];return j()};a.exports=Object.create||function(a,b){var c;return null!==a?(h[i]=d(a),c=new h,h[i]=null,c[g]=a):c=j(),void 0===b?c:e(c,b)}},function(a,b,c){var d=c(12),e=c(3),f=c(54);a.exports=c(4)?Object.defineProperties:function(a,b){e(a);for(var c,g=f(b),h=g.length,i=0;h>i;)d.f(a,c=g[i++],b[c]);return a}},function(a,b,c){var d=c(55),e=c(17),f=c(13),g=c(32),h=c(8),i=c(26),j=Object.getOwnPropertyDescriptor;b.f=c(4)?j:function(a,b){if(a=f(a),b=g(b,!0),i)try{return j(a,b)}catch(a){}if(h(a,b))return e(!d.f.call(a,b),a[b])}},function(a,b,c){var d=c(8),e=c(63),f=c(19)("IE_PROTO"),g=Object.prototype;a.exports=Object.getPrototypeOf||function(a){return d(a=e(a),f)?a[f]:"function"==typeof a.constructor&&a instanceof a.constructor?a.constructor.prototype:a instanceof Object?g:null}},function(a,b,c){var d=c(8),e=c(13),f=c(39)(!1),g=c(19)("IE_PROTO");a.exports=function(a,b){var c,h=e(a),i=0,j=[];for(c in h)c!=g&&d(h,c)&&j.push(c);for(;b.length>i;)d(h,c=b[i++])&&(~f(j,c)||j.push(c));return j}},function(a,b,c){var d=c(53),e=c(22);a.exports=Object.keys||function(a){return d(a,e)}},function(a,b){b.f=({}).propertyIsEnumerable},function(a,b,c){var d=c(5);a.exports=function(a,b,c){for(var e in b)c&&a[e]?a[e]=b[e]:d(a,e,b[e]);return a}},function(a,b,c){a.exports=c(5)},function(a,b,c){var d=c(9),e=c(3),f=function(a,b){if(e(a),!d(b)&&null!==b)throw TypeError(b+": can't set as prototype!")};a.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(a,b,d){try{(d=c(7)(Function.call,c(51).f(Object.prototype,"__proto__").set,2))(a,[]),b=!(a instanceof Array)}catch(a){b=!0}return function(a,c){return f(a,c),b?a.__proto__=c:d(a,c),a}}({},!1):void 0),check:f}},function(a,b,c){"use strict";var d=c(2),e=c(6),f=c(12),g=c(4),h=c(1)("species");a.exports=function(a){var b="function"==typeof e[a]?e[a]:d[a];g&&b&&!b[h]&&f.f(b,h,{configurable:!0,get:function(){return this}})}},function(a,b,c){var d=c(3),e=c(14),f=c(1)("species");a.exports=function(a,b){var c,g=d(a).constructor;return void 0===g||void 0==(c=d(g)[f])?b:e(c)}},function(a,b,c){var d=c(20),e=c(15);a.exports=function(a){return function(b,c){var f,g,h=String(e(b)),i=d(c),j=h.length;return i<0||i>=j?a?"":void 0:(f=h.charCodeAt(i))<55296||f>56319||i+1===j||(g=h.charCodeAt(i+1))<56320||g>57343?a?h.charAt(i):f:a?h.slice(i,i+2):(f-55296<<10)+(g-56320)+65536}}},function(a,b,c){var d=c(20),e=Math.max,f=Math.min;a.exports=function(a,b){return(a=d(a))<0?e(a+b,0):f(a,b)}},function(a,b,c){var d=c(15);a.exports=function(a){return Object(d(a))}},function(a,b,c){var d=c(21),e=c(1)("iterator"),f=c(10);a.exports=c(6).getIteratorMethod=function(a){if(void 0!=a)return a[e]||a["@@iterator"]||f[d(a)]}},function(a,b,c){"use strict";var d=c(37),e=c(47),f=c(10),g=c(13);a.exports=c(27)(Array,"Array",function(a,b){this._t=g(a),this._i=0,this._k=b},function(){var a=this._t,b=this._k,c=this._i++;return!a||c>=a.length?(this._t=void 0,e(1)):"keys"==b?e(0,c):"values"==b?e(0,a[c]):e(0,[c,a[c]])},"values"),f.Arguments=f.Array,d("keys"),d("values"),d("entries")},function(a,b){},function(a,b,c){"use strict";var d,e,f,g=c(28),h=c(2),i=c(7),j=c(21),k=c(23),l=c(9),m=(c(3),c(14)),n=c(38),o=c(40),p=(c(58).set,c(60)),q=c(30).set,r=c(48)(),s="Promise",t=h.TypeError,u=h.process,v=h[s],u=h.process,w="process"==j(u),x=function(){},y=!!function(){try{var a=v.resolve(1),b=(a.constructor={})[c(1)("species")]=function(a){a(x,x)};return(w||"function"==typeof PromiseRejectionEvent)&&a.then(x)instanceof b}catch(a){}}(),z=function(a,b){return a===b||a===v&&b===f},A=function(a){var b;return!(!l(a)||"function"!=typeof(b=a.then))&&b},B=function(a){return z(v,a)?new C(a):new e(a)},C=e=function(a){var b,c;this.promise=new a(function(a,d){if(void 0!==b||void 0!==c)throw t("Bad Promise constructor");b=a,c=d}),this.resolve=m(b),this.reject=m(c)},D=function(a){try{a()}catch(a){return{error:a}}},E=function(a,b){if(!a._n){a._n=!0;var c=a._c;r(function(){for(var d=a._v,e=1==a._s,f=0;c.length>f;)!function(b){var c,f,g=e?b.ok:b.fail,h=b.resolve,i=b.reject,j=b.domain;try{g?(e||(2==a._h&&H(a),a._h=1),!0===g?c=d:(j&&j.enter(),c=g(d),j&&j.exit()),c===b.promise?i(t("Promise-chain cycle")):(f=A(c))?f.call(c,h,i):h(c)):i(d)}catch(a){i(a)}}(c[f++]);a._c=[],a._n=!1,b&&!a._h&&F(a)})}},F=function(a){q.call(h,function(){var b,c,d,e=a._v;if(G(a)&&(b=D(function(){w?u.emit("unhandledRejection",e,a):(c=h.onunhandledrejection)?c({promise:a,reason:e}):(d=h.console)&&d.error&&d.error("Unhandled promise rejection",e)}),a._h=w||G(a)?2:1),a._a=void 0,b)throw b.error})},G=function(a){if(1==a._h)return!1;for(var b,c=a._a||a._c,d=0;c.length>d;)if((b=c[d++]).fail||!G(b.promise))return!1;return!0},H=function(a){q.call(h,function(){var b;w?u.emit("rejectionHandled",a):(b=h.onrejectionhandled)&&b({promise:a,reason:a._v})})},I=function(a){var b=this;b._d||(b._d=!0,(b=b._w||b)._v=a,b._s=2,b._a||(b._a=b._c.slice()),E(b,!0))},J=function(a){var b,c=this;if(!c._d){c._d=!0,c=c._w||c;try{if(c===a)throw t("Promise can't be resolved itself");(b=A(a))?r(function(){var d={_w:c,_d:!1};try{b.call(a,i(J,d,1),i(I,d,1))}catch(a){I.call(d,a)}}):(c._v=a,c._s=1,E(c,!1))}catch(a){I.call({_w:c,_d:!1},a)}}};y||(v=function(a){n(this,v,s,"_h"),m(a),d.call(this);try{a(i(J,this,1),i(I,this,1))}catch(a){I.call(this,a)}},(d=function(a){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=c(56)(v.prototype,{then:function(a,b){var c=B(p(this,v));return c.ok="function"!=typeof a||a,c.fail="function"==typeof b&&b,c.domain=w?u.domain:void 0,this._c.push(c),this._a&&this._a.push(c),this._s&&E(this,!1),c.promise},catch:function(a){return this.then(void 0,a)}}),C=function(){var a=new d;this.promise=a,this.resolve=i(J,a,1),this.reject=i(I,a,1)}),k(k.G+k.W+!y*k.F,{Promise:v}),c(18)(v,s),c(59)(s),f=c(6)[s],k(k.S+!y*k.F,s,{reject:function(a){var b=B(this);return(0,b.reject)(a),b.promise}}),k(k.S+k.F*(g||!y),s,{resolve:function(a){if(a instanceof v&&z(a.constructor,this))return a;var b=B(this);return(0,b.resolve)(a),b.promise}}),k(k.S+!(y&&c(46)(function(a){v.all(a).catch(x)}))*k.F,s,{all:function(a){var b=this,c=B(b),d=c.resolve,e=c.reject,f=D(function(){var c=[],f=0,g=1;o(a,!1,function(a){var h=f++,i=!1;c.push(void 0),g++,b.resolve(a).then(function(a){i||(i=!0,c[h]=a,--g||d(c))},e)}),--g||d(c)});return f&&e(f.error),c.promise},race:function(a){var b=this,c=B(b),d=c.reject,e=D(function(){o(a,!1,function(a){b.resolve(a).then(c.resolve,d)})});return e&&d(e.error),c.promise}})},function(a,b,c){"use strict";var d=c(61)(!0);c(27)(String,"String",function(a){this._t=String(a),this._i=0},function(){var a,b=this._t,c=this._i;return c>=b.length?{value:void 0,done:!0}:(a=d(b,c),this._i+=a.length,{value:a,done:!1})})},function(a,b,c){c(65);for(var d=c(2),e=c(5),f=c(10),g=c(1)("toStringTag"),h=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],i=0;i<5;i++){var j=h[i],k=d[j],l=k&&k.prototype;l&&!l[g]&&e(l,g,j),f[j]=f.Array}},function(a,b){a.exports=c(79646)},function(a,b){a.exports=c(55511)}];function e(a){if(f[a])return f[a].exports;var b=f[a]={exports:{},id:a,loaded:!1};return d[a].call(b.exports,b,b.exports,e),b.loaded=!0,b.exports}var f={};return e.m=d,e.c=f,e.p="",e(0)}(c(79646),c(55511))},3144:(a,b,c)=>{"use strict";var d,e;Object.defineProperty(b,"__esModule",{value:!0}),d=c(8582),e=b,Object.keys(d).forEach(function(a){"default"===a||Object.prototype.hasOwnProperty.call(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:function(){return d[a]}})})},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4522:(a,b)=>{"use strict";function c(a){try{return decodeURIComponent(a)}catch{return a}}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"decodeQueryPathParameter",{enumerable:!0,get:function(){return c}})},4945:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"isDynamicRoute",{enumerable:!0,get:function(){return g}});let d=c(11042),e=/\/[^/]*\[[^/]+\][^/]*(?=\/|$)/,f=/\/\[[^/]+\](?=\/|$)/;function g(a,b=!0){return((0,d.isInterceptionRouteAppPath)(a)&&(a=(0,d.extractInterceptionRouteInformation)(a).interceptedRoute),b)?f.test(a):e.test(a)}},6062:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={isAbortError:function(){return k},pipeToNodeResponse:function(){return l}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(88450),g=c(59841),h=c(12726),i=c(88026),j=c(97757);function k(a){return(null==a?void 0:a.name)==="AbortError"||(null==a?void 0:a.name)===f.ResponseAbortedName}async function l(a,b,c){try{let{errored:d,destroyed:e}=b;if(d||e)return;let k=(0,f.createAbortController)(b),l=function(a,b){let c=!1,d=new g.DetachedPromise;function e(){d.resolve()}a.on("drain",e),a.once("close",()=>{a.off("drain",e),d.resolve()});let f=new g.DetachedPromise;return a.once("finish",()=>{f.resolve()}),new WritableStream({write:async b=>{if(!c){if(c=!0,"performance"in globalThis&&process.env.NEXT_OTEL_PERFORMANCE_PREFIX){let a=(0,j.getClientComponentLoaderMetrics)();a&&performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-client-component-loading`,{start:a.clientComponentLoadStart,end:a.clientComponentLoadStart+a.clientComponentLoadTimes})}a.flushHeaders(),(0,h.getTracer)().trace(i.NextNodeServerSpan.startResponse,{spanName:"start response"},()=>void 0)}try{let c=a.write(b);"flush"in a&&"function"==typeof a.flush&&a.flush(),c||(await d.promise,d=new g.DetachedPromise)}catch(b){throw a.end(),Object.defineProperty(Error("failed to write chunk to response",{cause:b}),"__NEXT_ERROR_CODE",{value:"E321",enumerable:!1,configurable:!0})}},abort:b=>{a.writableFinished||a.destroy(b)},close:async()=>{if(b&&await b,!a.writableFinished)return a.end(),f.promise}})}(b,c);await a.pipeTo(l,{signal:k.signal})}catch(a){if(k(a))return;throw Object.defineProperty(Error("failed to pipe response",{cause:a}),"__NEXT_ERROR_CODE",{value:"E180",enumerable:!1,configurable:!0})}}},6365:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"isNextRouterError",{enumerable:!0,get:function(){return f}});let d=c(22697),e=c(86013);function f(a){return(0,e.isRedirectError)(a)||(0,d.isHTTPAccessFallbackError)(a)}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},6492:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ENCODED_TAGS",{enumerable:!0,get:function(){return c}});let c={OPENING:{HTML:new Uint8Array([60,104,116,109,108]),HEAD:new Uint8Array([60,104,101,97,100]),BODY:new Uint8Array([60,98,111,100,121])},CLOSED:{HEAD:new Uint8Array([60,47,104,101,97,100,62]),BODY:new Uint8Array([60,47,98,111,100,121,62]),HTML:new Uint8Array([60,47,104,116,109,108,62]),BODY_AND_HTML:new Uint8Array([60,47,98,111,100,121,62,60,47,104,116,109,108,62])},META:{ICON_MARK:new Uint8Array([60,109,101,116,97,32,110,97,109,101,61,34,194,171,110,120,116,45,105,99,111,110,194,187,34])}}},6796:(a,b,c)=>{"use strict";a.exports=c(10846)},6872:(a,b)=>{"use strict";function c(a){return"1"===a}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"isRSCRequestHeader",{enumerable:!0,get:function(){return c}})},6892:(a,b)=>{"use strict";function c(a){return a.replace(/(?:\/index)?\/?$/,"")||"/"}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"toRoute",{enumerable:!0,get:function(){return c}})},7039:a=>{(()=>{"use strict";"u">typeof __nccwpck_require__&&(__nccwpck_require__.ab=__dirname+"/");var b={};(()=>{function a(a,b){void 0===b&&(b={});for(var c=function(a){for(var b=[],c=0;c<a.length;){var d=a[c];if("*"===d||"+"===d||"?"===d){b.push({type:"MODIFIER",index:c,value:a[c++]});continue}if("\\"===d){b.push({type:"ESCAPED_CHAR",index:c++,value:a[c++]});continue}if("{"===d){b.push({type:"OPEN",index:c,value:a[c++]});continue}if("}"===d){b.push({type:"CLOSE",index:c,value:a[c++]});continue}if(":"===d){for(var e="",f=c+1;f<a.length;){var g=a.charCodeAt(f);if(g>=48&&g<=57||g>=65&&g<=90||g>=97&&g<=122||95===g){e+=a[f++];continue}break}if(!e)throw TypeError("Missing parameter name at ".concat(c));b.push({type:"NAME",index:c,value:e}),c=f;continue}if("("===d){var h=1,i="",f=c+1;if("?"===a[f])throw TypeError('Pattern cannot start with "?" at '.concat(f));for(;f<a.length;){if("\\"===a[f]){i+=a[f++]+a[f++];continue}if(")"===a[f]){if(0==--h){f++;break}}else if("("===a[f]&&(h++,"?"!==a[f+1]))throw TypeError("Capturing groups are not allowed at ".concat(f));i+=a[f++]}if(h)throw TypeError("Unbalanced pattern at ".concat(c));if(!i)throw TypeError("Missing pattern at ".concat(c));b.push({type:"PATTERN",index:c,value:i}),c=f;continue}b.push({type:"CHAR",index:c,value:a[c++]})}return b.push({type:"END",index:c,value:""}),b}(a),d=b.prefixes,f=void 0===d?"./":d,g=b.delimiter,h=void 0===g?"/#?":g,i=[],j=0,k=0,l="",m=function(a){if(k<c.length&&c[k].type===a)return c[k++].value},n=function(a){var b=m(a);if(void 0!==b)return b;var d=c[k],e=d.type,f=d.index;throw TypeError("Unexpected ".concat(e," at ").concat(f,", expected ").concat(a))},o=function(){for(var a,b="";a=m("CHAR")||m("ESCAPED_CHAR");)b+=a;return b},p=function(a){for(var b=0;b<h.length;b++){var c=h[b];if(a.indexOf(c)>-1)return!0}return!1},q=function(a){var b=i[i.length-1],c=a||(b&&"string"==typeof b?b:"");if(b&&!c)throw TypeError('Must have text between two parameters, missing text after "'.concat(b.name,'"'));return!c||p(c)?"[^".concat(e(h),"]+?"):"(?:(?!".concat(e(c),")[^").concat(e(h),"])+?")};k<c.length;){var r=m("CHAR"),s=m("NAME"),t=m("PATTERN");if(s||t){var u=r||"";-1===f.indexOf(u)&&(l+=u,u=""),l&&(i.push(l),l=""),i.push({name:s||j++,prefix:u,suffix:"",pattern:t||q(u),modifier:m("MODIFIER")||""});continue}var v=r||m("ESCAPED_CHAR");if(v){l+=v;continue}if(l&&(i.push(l),l=""),m("OPEN")){var u=o(),w=m("NAME")||"",x=m("PATTERN")||"",y=o();n("CLOSE"),i.push({name:w||(x?j++:""),pattern:w&&!x?q(u):x,prefix:u,suffix:y,modifier:m("MODIFIER")||""});continue}n("END")}return i}function c(a,b){void 0===b&&(b={});var c=f(b),d=b.encode,e=void 0===d?function(a){return a}:d,g=b.validate,h=void 0===g||g,i=a.map(function(a){if("object"==typeof a)return new RegExp("^(?:".concat(a.pattern,")$"),c)});return function(b){for(var c="",d=0;d<a.length;d++){var f=a[d];if("string"==typeof f){c+=f;continue}var g=b?b[f.name]:void 0,j="?"===f.modifier||"*"===f.modifier,k="*"===f.modifier||"+"===f.modifier;if(Array.isArray(g)){if(!k)throw TypeError('Expected "'.concat(f.name,'" to not repeat, but got an array'));if(0===g.length){if(j)continue;throw TypeError('Expected "'.concat(f.name,'" to not be empty'))}for(var l=0;l<g.length;l++){var m=e(g[l],f);if(h&&!i[d].test(m))throw TypeError('Expected all "'.concat(f.name,'" to match "').concat(f.pattern,'", but got "').concat(m,'"'));c+=f.prefix+m+f.suffix}continue}if("string"==typeof g||"number"==typeof g){var m=e(String(g),f);if(h&&!i[d].test(m))throw TypeError('Expected "'.concat(f.name,'" to match "').concat(f.pattern,'", but got "').concat(m,'"'));c+=f.prefix+m+f.suffix;continue}if(!j){var n=k?"an array":"a string";throw TypeError('Expected "'.concat(f.name,'" to be ').concat(n))}}return c}}function d(a,b,c){void 0===c&&(c={});var d=c.decode,e=void 0===d?function(a){return a}:d;return function(c){var d=a.exec(c);if(!d)return!1;for(var f=d[0],g=d.index,h=Object.create(null),i=1;i<d.length;i++)!function(a){if(void 0!==d[a]){var c=b[a-1];"*"===c.modifier||"+"===c.modifier?h[c.name]=d[a].split(c.prefix+c.suffix).map(function(a){return e(a,c)}):h[c.name]=e(d[a],c)}}(i);return{path:f,index:g,params:h}}}function e(a){return a.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}function f(a){return a&&a.sensitive?"":"i"}function g(a,b,c){void 0===c&&(c={});for(var d=c.strict,g=void 0!==d&&d,h=c.start,i=c.end,j=c.encode,k=void 0===j?function(a){return a}:j,l=c.delimiter,m=c.endsWith,n="[".concat(e(void 0===m?"":m),"]|$"),o="[".concat(e(void 0===l?"/#?":l),"]"),p=void 0===h||h?"^":"",q=0;q<a.length;q++){var r=a[q];if("string"==typeof r)p+=e(k(r));else{var s=e(k(r.prefix)),t=e(k(r.suffix));if(r.pattern)if(b&&b.push(r),s||t)if("+"===r.modifier||"*"===r.modifier){var u="*"===r.modifier?"?":"";p+="(?:".concat(s,"((?:").concat(r.pattern,")(?:").concat(t).concat(s,"(?:").concat(r.pattern,"))*)").concat(t,")").concat(u)}else p+="(?:".concat(s,"(").concat(r.pattern,")").concat(t,")").concat(r.modifier);else{if("+"===r.modifier||"*"===r.modifier)throw TypeError('Can not repeat "'.concat(r.name,'" without a prefix and suffix'));p+="(".concat(r.pattern,")").concat(r.modifier)}else p+="(?:".concat(s).concat(t,")").concat(r.modifier)}}if(void 0===i||i)g||(p+="".concat(o,"?")),p+=c.endsWith?"(?=".concat(n,")"):"$";else{var v=a[a.length-1],w="string"==typeof v?o.indexOf(v[v.length-1])>-1:void 0===v;g||(p+="(?:".concat(o,"(?=").concat(n,"))?")),w||(p+="(?=".concat(o,"|").concat(n,")"))}return new RegExp(p,f(c))}function h(b,c,d){if(b instanceof RegExp){var e;if(!c)return b;for(var i=/\((?:\?<(.*?)>)?(?!\?)/g,j=0,k=i.exec(b.source);k;)c.push({name:k[1]||j++,prefix:"",suffix:"",modifier:"",pattern:""}),k=i.exec(b.source);return b}return Array.isArray(b)?(e=b.map(function(a){return h(a,c,d).source}),new RegExp("(?:".concat(e.join("|"),")"),f(d))):g(a(b,d),c,d)}Object.defineProperty(b,"__esModule",{value:!0}),b.pathToRegexp=b.tokensToRegexp=b.regexpToFunction=b.match=b.tokensToFunction=b.compile=b.parse=void 0,b.parse=a,b.compile=function(b,d){return c(a(b,d),d)},b.tokensToFunction=c,b.match=function(a,b){var c=[];return d(h(a,c,b),c,b)},b.regexpToFunction=d,b.tokensToRegexp=g,b.pathToRegexp=h})(),a.exports=b})()},7125:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"default",{enumerable:!0,get:function(){return g}});let d=c(27048),e=c(6062),f=c(42776);class g{static #a=this.EMPTY=new g(null,{metadata:{},contentType:null});static fromStatic(a,b){return new g(a,{metadata:{},contentType:b})}constructor(a,{contentType:b,waitUntil:c,metadata:d}){this.response=a,this.contentType=b,this.metadata=d,this.waitUntil=c}assignMetadata(a){Object.assign(this.metadata,a)}get isNull(){return null===this.response}get isDynamic(){return"string"!=typeof this.response}toUnchunkedString(a=!1){if(null===this.response)return"";if("string"!=typeof this.response){if(!a)throw Object.defineProperty(new f.InvariantError("dynamic responses cannot be unchunked. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E732",enumerable:!1,configurable:!0});return(0,d.streamToString)(this.readable)}return this.response}get readable(){return null===this.response?new ReadableStream({start(a){a.close()}}):"string"==typeof this.response?(0,d.streamFromString)(this.response):Buffer.isBuffer(this.response)?(0,d.streamFromBuffer)(this.response):Array.isArray(this.response)?(0,d.chainStreams)(...this.response):this.response}coerce(){return null===this.response?[]:"string"==typeof this.response?[(0,d.streamFromString)(this.response)]:Array.isArray(this.response)?this.response:Buffer.isBuffer(this.response)?[(0,d.streamFromBuffer)(this.response)]:[this.response]}pipeThrough(a){this.response=this.readable.pipeThrough(a)}unshift(a){this.response=this.coerce(),this.response.unshift(a)}push(a){this.response=this.coerce(),this.response.push(a)}async pipeTo(a){try{await this.readable.pipeTo(a,{preventClose:!0}),this.waitUntil&&await this.waitUntil,await a.close()}catch(b){if((0,e.isAbortError)(b))return void await a.abort(b);throw b}}async pipeToNodeResponse(a){await (0,e.pipeToNodeResponse)(this.readable,a,this.waitUntil)}}},7370:(a,b)=>{"use strict";function c(){return{previewModeId:process.env.__NEXT_PREVIEW_MODE_ID||"",previewModeSigningKey:process.env.__NEXT_PREVIEW_MODE_SIGNING_KEY||"",previewModeEncryptionKey:process.env.__NEXT_PREVIEW_MODE_ENCRYPTION_KEY||""}}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"getEdgePreviewProps",{enumerable:!0,get:function(){return c}})},7841:(a,b,c)=>{"use strict";c.d(b,{AL:()=>j,HG:()=>i,Jh:()=>m,KQ:()=>k,Or:()=>l});var d=c(76760),e=c.n(d),f=c(73024),g=c.n(f),h=c(72045);let i=e().join(h.n,"db"),j=e().join(i,"data.sqlite"),k=e().join(i,"backups"),l={main:e().join(h.n,"db.json"),usage:e().join(h.n,"usage.json"),disabled:e().join(h.n,"disabledModels.json"),details:e().join(h.n,"request-details.json")};function m(){for(let a of[h.n,i,k])g().existsSync(a)||g().mkdirSync(a,{recursive:!0})}},8007:(a,b,c)=>{"use strict";function d(a){return function(){let{cookie:b}=a;if(!b)return{};let{parse:d}=c(19560);return d(Array.isArray(b)?b.join("; "):b)}}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"getCookieParser",{enumerable:!0,get:function(){return d}})},8582:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"after",{enumerable:!0,get:function(){return e}});let d=c(29294);function e(a){let b=d.workAsyncStorage.getStore();if(!b)throw Object.defineProperty(Error("`after` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context"),"__NEXT_ERROR_CODE",{value:"E468",enumerable:!1,configurable:!0});let{afterContext:c}=b;return c.after(a)}},8912:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d,e,f,g={DynamicHoleKind:function(){return $},Postpone:function(){return D},PreludeState:function(){return af},abortAndThrowOnSynchronousRequestDataAccess:function(){return C},abortOnSynchronousPlatformIOAccess:function(){return B},accessedDynamicData:function(){return L},annotateDynamicAccess:function(){return Q},consumeDynamicAccess:function(){return M},createDynamicTrackingState:function(){return u},createDynamicValidationState:function(){return v},createHangingInputAbortSignal:function(){return P},createInstantValidationState:function(){return _},createRenderInBrowserAbortSignal:function(){return O},formatDynamicAPIAccesses:function(){return N},getFirstDynamicReason:function(){return w},getNavigationDisallowedDynamicReasons:function(){return aj},getStaticShellDisallowedDynamicReasons:function(){return ai},isDynamicPostpone:function(){return G},isPrerenderInterruptedError:function(){return K},logDisallowedDynamicError:function(){return ag},markCurrentScopeAsDynamic:function(){return x},postponeWithTracking:function(){return E},throwIfDisallowedDynamic:function(){return ah},throwToInterruptStaticGeneration:function(){return y},trackAllowedDynamicAccess:function(){return Z},trackDynamicDataInDynamicRender:function(){return z},trackDynamicHoleInNavigation:function(){return aa},trackDynamicHoleInRuntimeShell:function(){return ac},trackDynamicHoleInStaticShell:function(){return ad},trackThrownErrorInNavigation:function(){return ab},useDynamicRouteParams:function(){return R},useDynamicSearchParams:function(){return S}};for(var h in g)Object.defineProperty(b,h,{enumerable:!0,get:g[h]});let i=(d=c(34539))&&d.__esModule?d:{default:d},j=c(89198),k=c(49540),l=c(63033),m=c(29294),n=c(80311),o=c(50158),p=c(28704),q=c(69545),r=c(42776),s=c(2258),t="function"==typeof i.default.unstable_postpone;function u(a){return{isDebugDynamicAccesses:a,dynamicAccesses:[],syncDynamicErrorWithStack:null}}function v(){return{hasSuspenseAboveBody:!1,hasDynamicMetadata:!1,dynamicMetadata:null,hasDynamicViewport:!1,hasAllowedDynamic:!1,dynamicErrors:[]}}function w(a){var b;return null==(b=a.dynamicAccesses[0])?void 0:b.expression}function x(a,b,c){if(b)switch(b.type){case"cache":case"unstable-cache":case"private-cache":return}if(!a.forceDynamic&&!a.forceStatic){if(a.dynamicShouldError)throw Object.defineProperty(new k.StaticGenBailoutError(`Route ${a.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${c}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E553",enumerable:!1,configurable:!0});if(b)switch(b.type){case"prerender-ppr":return E(a.route,c,b.dynamicTracking);case"prerender-legacy":b.revalidate=0;let d=Object.defineProperty(new j.DynamicServerError(`Route ${a.route} couldn't be rendered statically because it used ${c}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E550",enumerable:!1,configurable:!0});throw a.dynamicUsageDescription=c,a.dynamicUsageStack=d.stack,d}}}function y(a,b,c){let d=Object.defineProperty(new j.DynamicServerError(`Route ${b.route} couldn't be rendered statically because it used \`${a}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E558",enumerable:!1,configurable:!0});throw c.revalidate=0,b.dynamicUsageDescription=a,b.dynamicUsageStack=d.stack,d}function z(a){switch(a.type){case"cache":case"unstable-cache":case"private-cache":return}}function A(a,b,c){let d=J(`Route ${a} needs to bail out of prerendering at this point because it used ${b}.`);c.controller.abort(d);let e=c.dynamicTracking;e&&e.dynamicAccesses.push({stack:e.isDebugDynamicAccesses?Error().stack:void 0,expression:b})}function B(a,b,c,d){let e=d.dynamicTracking;A(a,b,d),e&&null===e.syncDynamicErrorWithStack&&(e.syncDynamicErrorWithStack=c)}function C(a,b,c,d){if(!1===d.controller.signal.aborted){A(a,b,d);let e=d.dynamicTracking;e&&null===e.syncDynamicErrorWithStack&&(e.syncDynamicErrorWithStack=c)}throw J(`Route ${a} needs to bail out of prerendering at this point because it used ${b}.`)}function D({reason:a,route:b}){let c=l.workUnitAsyncStorage.getStore();E(b,a,c&&"prerender-ppr"===c.type?c.dynamicTracking:null)}function E(a,b,c){(function(){if(!t)throw Object.defineProperty(Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E224",enumerable:!1,configurable:!0})})(),c&&c.dynamicAccesses.push({stack:c.isDebugDynamicAccesses?Error().stack:void 0,expression:b}),i.default.unstable_postpone(F(a,b))}function F(a,b){return`Route ${a} needs to bail out of prerendering at this point because it used ${b}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`}function G(a){return"object"==typeof a&&null!==a&&"string"==typeof a.message&&H(a.message)}function H(a){return a.includes("needs to bail out of prerendering at this point because it used")&&a.includes("Learn more: https://nextjs.org/docs/messages/ppr-caught-error")}if(!1===H(F("%%%","^^^")))throw Object.defineProperty(Error("Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E296",enumerable:!1,configurable:!0});let I="NEXT_PRERENDER_INTERRUPTED";function J(a){let b=Object.defineProperty(Error(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return b.digest=I,b}function K(a){return"object"==typeof a&&null!==a&&a.digest===I&&"name"in a&&"message"in a&&a instanceof Error}function L(a){return a.length>0}function M(a,b){return a.dynamicAccesses.push(...b.dynamicAccesses),a.dynamicAccesses}function N(a){return a.filter(a=>"string"==typeof a.stack&&a.stack.length>0).map(({expression:a,stack:b})=>(b=b.split("\n").slice(4).filter(a=>!(a.includes("node_modules/next/")||a.includes(" (<anonymous>)")||a.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${a}:
|
|
2
2
|
${b}`))}function O(){let a=new AbortController;return a.abort(Object.defineProperty(new q.BailoutToCSRError("Render in Browser"),"__NEXT_ERROR_CODE",{value:"E721",enumerable:!1,configurable:!0})),a.signal}function P(a){switch(a.type){case"prerender":case"prerender-runtime":let b=new AbortController;if(a.cacheSignal)a.cacheSignal.inputReady().then(()=>{b.abort()});else if("prerender-runtime"===a.type&&a.stagedRendering){let{stagedRendering:c}=a;c.waitForStage((0,n.getRuntimeStage)(c)).then(()=>(0,p.scheduleOnNextTick)(()=>b.abort()))}else(0,p.scheduleOnNextTick)(()=>b.abort());return b.signal;case"prerender-client":case"validation-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case"generate-static-params":return}}function Q(a,b){let c=b.dynamicTracking;c&&c.dynamicAccesses.push({stack:c.isDebugDynamicAccesses?Error().stack:void 0,expression:a})}function R(a){let b=m.workAsyncStorage.getStore(),c=l.workUnitAsyncStorage.getStore();if(b&&c)switch(c.type){case"prerender-client":case"prerender":{let d=c.fallbackRouteParams;d&&d.size>0&&i.default.use((0,n.makeHangingPromise)(c.renderSignal,b.route,a));break}case"prerender-ppr":{let d=c.fallbackRouteParams;if(d&&d.size>0)return E(b.route,a,c.dynamicTracking);break}case"validation-client":case"prerender-legacy":case"request":case"unstable-cache":break;case"prerender-runtime":throw Object.defineProperty(new r.InvariantError(`\`${a}\` was called during a runtime prerender. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E771",enumerable:!1,configurable:!0});case"cache":case"private-cache":throw Object.defineProperty(new r.InvariantError(`\`${a}\` was called inside a cache scope. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E745",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(new r.InvariantError(`\`${a}\` was called in \`generateStaticParams\`. Next.js should be preventing ${a} from being included in server component files statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1130",enumerable:!1,configurable:!0})}}function S(a){let b=m.workAsyncStorage.getStore(),c=l.workUnitAsyncStorage.getStore();if(b)switch(!c&&(0,l.throwForMissingRequestStore)(a),c.type){case"validation-client":case"request":return;case"prerender-client":i.default.use((0,n.makeHangingPromise)(c.renderSignal,b.route,a));break;case"prerender-legacy":case"prerender-ppr":if(b.forceStatic)return;throw Object.defineProperty(new q.BailoutToCSRError(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});case"prerender":case"prerender-runtime":throw Object.defineProperty(new r.InvariantError(`\`${a}\` was called from a Server Component. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E795",enumerable:!1,configurable:!0});case"cache":case"unstable-cache":case"private-cache":throw Object.defineProperty(new r.InvariantError(`\`${a}\` was called inside a cache scope. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E745",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(new r.InvariantError(`\`${a}\` was called in \`generateStaticParams\`. Next.js should be preventing ${a} from being included in server component files statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1130",enumerable:!1,configurable:!0})}}let T=/\n\s+at Suspense \(<anonymous>\)/,U=RegExp(`\\n\\s+at Suspense \\(<anonymous>\\)(?:(?!\\n\\s+at (?:body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6) \\(<anonymous>\\))[\\s\\S])*?\\n\\s+at ${o.ROOT_LAYOUT_BOUNDARY_NAME} \\([^\\n]*\\)`),V=RegExp(`\\n\\s+at ${o.METADATA_BOUNDARY_NAME}[\\n\\s]`),W=RegExp(`\\n\\s+at ${o.VIEWPORT_BOUNDARY_NAME}[\\n\\s]`),X=RegExp(`\\n\\s+at ${o.OUTLET_BOUNDARY_NAME}[\\n\\s]`),Y=RegExp(`\\n\\s+at ${s.INSTANT_VALIDATION_BOUNDARY_NAME}[\\n\\s]`);function Z(a,b,c,d){if(!X.test(b)){if(V.test(b)){c.hasDynamicMetadata=!0;return}if(W.test(b)){c.hasDynamicViewport=!0;return}if(U.test(b)){c.hasAllowedDynamic=!0,c.hasSuspenseAboveBody=!0;return}else if(T.test(b)){c.hasAllowedDynamic=!0;return}else{if(d.syncDynamicErrorWithStack)return void c.dynamicErrors.push(d.syncDynamicErrorWithStack);let e=ae(Object.defineProperty(Error(`Route "${a.route}": Uncached data was accessed outside of <Suspense>. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`),"__NEXT_ERROR_CODE",{value:"E1079",enumerable:!1,configurable:!0}),b,null);return void c.dynamicErrors.push(e)}}}var $=((e={})[e.Runtime=1]="Runtime",e[e.Dynamic=2]="Dynamic",e);function _(a){return{hasDynamicMetadata:!1,hasAllowedClientDynamicAboveBoundary:!1,dynamicMetadata:null,hasDynamicViewport:!1,hasAllowedDynamic:!1,dynamicErrors:[],validationPreventingErrors:[],thrownErrorsOutsideBoundary:[],createInstantStack:a}}function aa(a,b,c,d,e,f){if(X.test(b))return;if(V.test(b)){let d=ae(Object.defineProperty(Error(`Route "${a.route}": ${1===e?"Runtime data such as `cookies()`, `headers()`, `params`, or `searchParams` was accessed inside `generateMetadata` or you have file-based metadata such as icons that depend on dynamic params segments.":"Uncached data or `connection()` was accessed inside `generateMetadata`."} Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`),"__NEXT_ERROR_CODE",{value:"E1076",enumerable:!1,configurable:!0}),b,c.createInstantStack);c.dynamicMetadata=d;return}if(W.test(b)){let d=ae(Object.defineProperty(Error(`Route "${a.route}": ${1===e?"Runtime data such as `cookies()`, `headers()`, `params`, or `searchParams` was accessed inside `generateViewport`.":"Uncached data or `connection()` was accessed inside `generateViewport`."} This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`),"__NEXT_ERROR_CODE",{value:"E1086",enumerable:!1,configurable:!0}),b,c.createInstantStack);c.dynamicErrors.push(d);return}let g=Y.exec(b);if(g){let a=T.exec(b);if(a&&a.index<g.index){c.hasAllowedDynamic=!0;return}}else if(f.expectedIds.size===f.renderedIds.size){c.hasAllowedClientDynamicAboveBoundary=!0,c.hasAllowedDynamic=!0;return}else{let d=ae(Object.defineProperty(Error(`Route "${a.route}": Could not validate \`unstable_instant\` because a Client Component in a parent segment prevented the page from rendering.`),"__NEXT_ERROR_CODE",{value:"E1082",enumerable:!1,configurable:!0}),b,c.createInstantStack);c.validationPreventingErrors.push(d);return}if(d.syncDynamicErrorWithStack){let a=d.syncDynamicErrorWithStack;null!==c.createInstantStack&&void 0===a.cause&&(a.cause=c.createInstantStack()),c.dynamicErrors.push(a);return}let h=ae(Object.defineProperty(Error(`Route "${a.route}": ${1===e?"Runtime data such as `cookies()`, `headers()`, `params`, or `searchParams` was accessed outside of `<Suspense>`.":"Uncached data or `connection()` was accessed outside of `<Suspense>`."} This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`),"__NEXT_ERROR_CODE",{value:"E1078",enumerable:!1,configurable:!0}),b,c.createInstantStack);c.dynamicErrors.push(h)}function ab(a,b,c,d){let e=Y.exec(d);if(e){let f=T.exec(d);if(f&&f.index<e.index)return;let g=ae(Object.defineProperty(Error(`Route "${a.route}": Could not validate \`unstable_instant\` because an error prevented the target segment from rendering.`,{cause:c}),"__NEXT_ERROR_CODE",{value:"E1112",enumerable:!1,configurable:!0}),d,null);b.validationPreventingErrors.push(g)}else{let a=ae(Object.defineProperty(Error("An error occurred while attempting to validate instant UI. This error may be preventing the validation from completing.",{cause:c}),"__NEXT_ERROR_CODE",{value:"E1118",enumerable:!1,configurable:!0}),d,null);b.thrownErrorsOutsideBoundary.push(a)}}function ac(a,b,c,d){if(X.test(b))return;if(V.test(b)){c.dynamicMetadata=ae(Object.defineProperty(Error(`Route "${a.route}": Uncached data or \`connection()\` was accessed inside \`generateMetadata\`. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`),"__NEXT_ERROR_CODE",{value:"E1080",enumerable:!1,configurable:!0}),b,null);return}if(W.test(b)){let d=ae(Object.defineProperty(Error(`Route "${a.route}": Uncached data or \`connection()\` was accessed inside \`generateViewport\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`),"__NEXT_ERROR_CODE",{value:"E1077",enumerable:!1,configurable:!0}),b,null);c.dynamicErrors.push(d);return}if(U.test(b)){c.hasAllowedDynamic=!0,c.hasSuspenseAboveBody=!0;return}if(T.test(b)){c.hasAllowedDynamic=!0;return}else if(d.syncDynamicErrorWithStack)return void c.dynamicErrors.push(d.syncDynamicErrorWithStack);let e=ae(Object.defineProperty(Error(`Route "${a.route}": Uncached data or \`connection()\` was accessed outside of \`<Suspense>\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`),"__NEXT_ERROR_CODE",{value:"E1084",enumerable:!1,configurable:!0}),b,null);c.dynamicErrors.push(e)}function ad(a,b,c,d){if(!X.test(b)){if(V.test(b)){c.dynamicMetadata=ae(Object.defineProperty(Error(`Route "${a.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed inside \`generateMetadata\` or you have file-based metadata such as icons that depend on dynamic params segments. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`),"__NEXT_ERROR_CODE",{value:"E1085",enumerable:!1,configurable:!0}),b,null);return}if(W.test(b)){let d=ae(Object.defineProperty(Error(`Route "${a.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed inside \`generateViewport\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`),"__NEXT_ERROR_CODE",{value:"E1081",enumerable:!1,configurable:!0}),b,null);c.dynamicErrors.push(d);return}if(U.test(b)){c.hasAllowedDynamic=!0,c.hasSuspenseAboveBody=!0;return}else if(T.test(b)){c.hasAllowedDynamic=!0;return}else{if(d.syncDynamicErrorWithStack)return void c.dynamicErrors.push(d.syncDynamicErrorWithStack);let e=ae(Object.defineProperty(Error(`Route "${a.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed outside of \`<Suspense>\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`),"__NEXT_ERROR_CODE",{value:"E1083",enumerable:!1,configurable:!0}),b,null);return void c.dynamicErrors.push(e)}}}function ae(a,b,c){return null!==c&&(a.cause=c()),a.stack=a.name+": "+a.message+b,a}var af=((f={})[f.Full=0]="Full",f[f.Empty=1]="Empty",f[f.Errored=2]="Errored",f);function ag(a,b){console.error(b),console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following:
|
|
3
3
|
- Start the app in development mode by running \`next dev\`, then open "${a.route}" in your browser to investigate the error.
|
|
4
|
-
- Rerun the production build with \`next build --debug-prerender\` to generate better stack traces.`)}function ah(a,b,c,d){if(d.syncDynamicErrorWithStack)throw ag(a,d.syncDynamicErrorWithStack),new k.StaticGenBailoutError;if(0!==b){if(c.hasSuspenseAboveBody)return;let d=c.dynamicErrors;if(d.length>0){for(let b=0;b<d.length;b++)ag(a,d[b]);throw new k.StaticGenBailoutError}if(c.hasDynamicViewport)throw console.error(`Route "${a.route}" has a \`generateViewport\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`),new k.StaticGenBailoutError;if(1===b)throw console.error(`Route "${a.route}" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`),new k.StaticGenBailoutError}else if(!1===c.hasAllowedDynamic&&c.hasDynamicMetadata)throw console.error(`Route "${a.route}" has a \`generateMetadata\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`),new k.StaticGenBailoutError}function ai(a,b,c,d){if(d||c.hasSuspenseAboveBody)return[];if(0!==b){let d=c.dynamicErrors;if(d.length>0)return d;if(1===b)return[Object.defineProperty(new r.InvariantError(`Route "${a.route}" did not produce a static shell and Next.js was unable to determine a reason.`),"__NEXT_ERROR_CODE",{value:"E936",enumerable:!1,configurable:!0})]}else if(!1===c.hasAllowedDynamic&&0===c.dynamicErrors.length&&c.dynamicMetadata)return[c.dynamicMetadata];return[]}function aj(a,b,c,d,e){if(d){let{missingSampleErrors:a}=d;if(a.length>0)return a}let{validationPreventingErrors:f}=c;if(f.length>0)return f;if(e.renderedIds.size<e.expectedIds.size){let{thrownErrorsOutsideBoundary:b,createInstantStack:d}=c;if(0===b.length){let b=`Route "${a.route}": Could not validate \`unstable_instant\` because the target segment was prevented from rendering for an unknown reason.`,c=null!==d?d():Error();return c.name="Error",c.message=b,[c]}if(1===b.length){let c=`Route "${a.route}": Could not validate \`unstable_instant\` because the target segment was prevented from rendering, likely due to the following error.`,e=null!==d?d():Error();return e.name="Error",e.message=c,[e,b[0]]}{let c=`Route "${a.route}": Could not validate \`unstable_instant\` because the target segment was prevented from rendering, likely due to one of the following errors.`,e=null!==d?d():Error();return e.name="Error",e.message=c,[e,...b]}}if(0!==b){let d=c.dynamicErrors;if(d.length>0)return d;if(1===b)return c.hasAllowedClientDynamicAboveBoundary?[]:[Object.defineProperty(new r.InvariantError(`Route "${a.route}" failed to render during instant validation and Next.js was unable to determine a reason.`),"__NEXT_ERROR_CODE",{value:"E1055",enumerable:!1,configurable:!0})]}else{let a=c.dynamicErrors;if(a.length>0)return a;if(!1===c.hasAllowedDynamic&&c.dynamicMetadata)return[c.dynamicMetadata]}return[]}},9237:(a,b,c)=>{"use strict";let d;c.r(b),c.d(b,{default:()=>be,handler:()=>bd});var e={};c.r(e),c.d(e,{config:()=>a6,default:()=>a5}),require("next/dist/build/adapter/setup-node-env.external");var f=c(32648),g=c(76309),h=c(88771),i=c(62940),j=c(59339),k=c(85304);c(56840),c(95160);var l=c(33701);async function m(a){if(!a||"string"!=typeof a)return null;let b=(await (0,j.c)()).get("SELECT * FROM mcpGatewayKeys WHERE key = ?",[a]);return b&&(1===b.isActive||!0===b.isActive)?b?{id:b.id,name:b.name??null,key:b.key,machineId:b.machineId,isActive:1===b.isActive||!0===b.isActive,createdAt:b.createdAt}:null:null}var n=c(71509);(0,n.U)("modelAliases"),(0,n.U)("customModels"),(0,n.U)("mitmAlias"),c(36241);var o=c(77598),p=c.n(o),q=c(94735);c(91117),global._pendingRequests||(global._pendingRequests={byModel:{},byAccount:{}}),global._lastErrorProvider||(global._lastErrorProvider={provider:"",ts:0}),global._statsEmitter||(global._statsEmitter=new q.EventEmitter,global._statsEmitter.setMaxListeners(50)),global._pendingTimers||(global._pendingTimers={}),global._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0}),global._statsEmitTimers||(global._statsEmitTimers={pending:null,update:null}),global._pendingRequests,global._lastErrorProvider,global._pendingTimers,global._recentRing,global._connectionMapCache,global._statsEmitTimers,global._statsEmitter;var r=c(33323),s=c(85612);let t=null,u=0;function v(a,b){let c=a[b];return void 0===c||""===c.trim()?null:"true"===c.trim().toLowerCase()}async function w(){if(t&&Date.now()-u<5e3)return t;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,85304)),b=await a();t={enabled:function(a,b=process.env){let c=v(b,"OBSERVABILITY_ENABLED");if(null!==c)return c;let d=v(b,"ENABLE_REQUEST_LOGS");return null!==d?d:a?.enableObservability===!0}(b),maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10))}}catch{t={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120}}return u=Date.now(),t}let x=[],y=null,z=!1;function A(a,b){let c=JSON.stringify(a||{});return c.length>b?{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}:a||{}}function B(a,b){let c=A(a,b);return c?._truncated&&a&&"object"==typeof a&&void 0!==a.tools?{...c,tools:A(a.tools,65536)}:c}async function C(){if(!z&&0!==x.length){z=!0;try{for(;x.length>0;){let a=x.splice(0,x.length),b=await (0,j.c)(),c=await w();b.transaction(()=>{for(let d of a){d.id||(d.id=function(a){let b=new Date().toISOString(),c=Math.random().toString(36).substring(2,8),d=a?a.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown";return`${b}-${c}-${d}`}(d.model)),d.timestamp||(d.timestamp=new Date().toISOString()),d.request?.headers&&(d.request.headers=function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(d.request.headers));let a={id:d.id,provider:d.provider||null,model:d.model||null,connectionId:d.connectionId||null,timestamp:d.timestamp,status:d.status||null,latency:d.latency||{},tokens:d.tokens||{},request:B(d.request,c.maxJsonSize),providerRequest:B(d.providerRequest,c.maxJsonSize),providerResponse:A(d.providerResponse,c.maxJsonSize),response:A(d.response,c.maxJsonSize),pxpipe:d.pxpipe||void 0,convoy:d.convoy||void 0};b.run("INSERT INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET timestamp = excluded.timestamp, provider = excluded.provider, model = excluded.model, connectionId = excluded.connectionId, status = excluded.status, data = excluded.data",[a.id,a.timestamp,a.provider,a.model,a.connectionId,a.status,(0,r.s)(a)])}let d=b.get("SELECT COUNT(*) as c FROM requestDetails");d&&d.c>c.maxRecords&&b.run("DELETE FROM requestDetails WHERE id IN (SELECT id FROM requestDetails ORDER BY timestamp ASC LIMIT ?)",[d.c-c.maxRecords])})}}catch(a){console.error("[requestDetailsRepo] Batch write failed:",a)}finally{z=!1}}}let D=async()=>{y&&(clearTimeout(y),y=null),x.length>0&&await C()};(0,s.Bb)(D);var E=c(2886),F=c(73024),G=c.n(F),H=c(76760),I=c.n(H),J=c(72045);let K=I().join(J.n,"machine-id"),L=I().join(J.n,"auth"),M=I().join(L,"cli-secret"),N=null,O=null;async function P(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(N)return N;try{if(N=G().readFileSync(K,"utf8").trim())return N}catch{}try{N=(0,E.machineIdSync)()}catch{N=p().randomUUID()}try{G().mkdirSync(J.n,{recursive:!0}),G().writeFileSync(K,N,{mode:384})}catch{}return N}(),d="9r-cli-auth"===b?function(){if(O)return O;try{if(O=G().readFileSync(M,"utf8").trim())return O}catch{}O=p().randomBytes(32).toString("hex");try{G().mkdirSync(L,{recursive:!0}),G().writeFileSync(M,O,{mode:384})}catch{}return O}():"";return p().createHash("sha256").update(c+b+d).digest("hex").substring(0,16)}let Q=(a,b="algorithm.name")=>TypeError(`CryptoKey does not support this operation, its ${b} must be ${a}`);async function R(a,b,c){return b instanceof Uint8Array?crypto.subtle.importKey("raw",b,a.subtle,!1,[c]):(!function(a,b,c){let d=a.algorithm;if(d.name!==b.name)throw Q(b.name);if(b.hash&&d.hash?.name!==b.hash)throw Q(b.hash,"algorithm.hash");if(b.namedCurve&&d.namedCurve!==b.namedCurve)throw Q(b.namedCurve,"algorithm.namedCurve");if(void 0!==b.length&&d.length!==b.length)throw Q(b.length,"algorithm.length");if(c&&!a.usages.includes(c))throw TypeError(`CryptoKey does not support this operation, its usages must include ${c}.`)}(b,a.subtle,c),a.minRsaBits&&function(a,b){let{modulusLength:c}=b.algorithm;if("number"!=typeof c||c<2048)throw TypeError(`${a} requires key modulusLength to be 2048 bits or larger`)}(a.alg,b),b)}async function S(a,b,c,d){let e=await R(a,b,"verify");try{return await crypto.subtle.verify(a.signing,e,c,d)}catch{return!1}}class T extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(a,b){super(a,b),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}}class U extends T{static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(a,b,c="unspecified",d="unspecified"){super(a,{cause:{claim:c,reason:d,payload:b}}),this.claim=c,this.reason=d,this.payload=b}}class V extends T{static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(a,b,c="unspecified",d="unspecified"){super(a,{cause:{claim:c,reason:d,payload:b}}),this.claim=c,this.reason=d,this.payload=b}}class W extends T{static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"}class X extends T{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"}class Y extends T{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"}class Z extends T{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"}class $ extends T{[Symbol.asyncIterator]=async function*(){};static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(a="multiple matching keys found in the JSON Web Key Set",b){super(a,b)}}class _ extends T{static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(a="signature verification failed",b){super(a,b)}}let aa=[["verify"],["sign"]];function ab(a){let b={name:"HMAC",hash:`SHA-${a}`};return{kty:["oct"],secret:!0,subtle:b,signing:b,usages:aa}}function ac(a,b){let c={name:b?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:`SHA-${a}`};return{kty:["RSA"],subtle:c,signing:b?{...c,saltLength:b}:c,usages:aa,minRsaBits:2048}}function ad(a,b){return{kty:["EC"],crv:a,subtle:{name:"ECDSA",namedCurve:a},signing:{name:"ECDSA",hash:`SHA-${b}`},usages:aa}}function ae(){let a={name:"Ed25519"};return{kty:["OKP"],crv:"Ed25519",subtle:a,signing:a,usages:aa}}function af(a){let b={name:`ML-DSA-${a}`};return{kty:["AKP"],subtle:b,signing:b,usages:aa}}let ag=function(a){let b={__proto__:null};for(let c in a)b[c]={...a[c],alg:c};return b}({HS256:ab(256),HS384:ab(384),HS512:ab(512),RS256:ac(256),RS384:ac(384),RS512:ac(512),PS256:ac(256,32),PS384:ac(384,48),PS512:ac(512,64),ES256:ad("P-256",256),ES384:ad("P-384",384),ES512:ad("P-521",512),EdDSA:ae(),Ed25519:ae(),"ML-DSA-44":af(44),"ML-DSA-65":af(65),"ML-DSA-87":af(87)}),ah=new TextEncoder,ai=new TextDecoder,aj=new TextDecoder("utf-8",{fatal:!0});function ak(a){let b=new Uint8Array(a.length);for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);if(d>127)throw TypeError("non-ASCII string encountered in encode()");b[c]=d}return b}let al="The input to be decoded is not correctly encoded.";function am(a){if(Uint8Array.fromBase64)try{return Uint8Array.fromBase64("string"==typeof a?a:ai.decode(a),{alphabet:"base64url"})}catch(a){throw TypeError(al,{cause:a})}let b=a;if(b instanceof Uint8Array&&(b=ai.decode(b)),b.includes("+")||b.includes("/"))throw TypeError(al);b=b.replace(/-/g,"+").replace(/_/g,"/");try{var c=b;if(Uint8Array.fromBase64)return Uint8Array.fromBase64(c);let a=atob(c),d=new Uint8Array(a.length);for(let b=0;b<a.length;b++)d[b]=a.charCodeAt(b);return d}catch{throw TypeError(al)}}function an(a){if("object"!=typeof a||null===a||"[object Object]"!==Object.prototype.toString.call(a))return!1;let b=Object.getPrototypeOf(a);if(null===b)return!0;let c=b;for(;null!==Object.getPrototypeOf(c);)c=Object.getPrototypeOf(c);return b===c}function ao(a,b,c){try{return am(a)}catch{throw new c(`Failed to base64url decode the ${b}`)}}Symbol();let ap={__proto__:null,b64:!0},aq=(a,b,...c)=>(function(a,b,...c){if(c.length>2){let b=c.pop();a+=`one of type ${c.join(", ")}, or ${b}.`}else 2===c.length?a+=`one of type ${c[0]} or ${c[1]}.`:a+=`of type ${c[0]}.`;return null==b?a+=` Received ${b}`:"function"==typeof b&&b.name?a+=` Received function ${b.name}`:"object"==typeof b&&null!=b&&b.constructor?.name&&(a+=` Received an instance of ${b.constructor.name}`),a})(`Key for the ${a} algorithm must be `,b,...c),ar=a=>{if(a?.[Symbol.toStringTag]==="CryptoKey")return!0;try{return a instanceof CryptoKey}catch{return!1}};async function as(a,b){if("RSA"===b.kty&&"oth"in b&&void 0!==b.oth)throw new X('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');if(!a.kty.includes(b.kty))throw new X('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');let c=a.resolve?.({kty:b.kty,crv:b.crv})??a.subtle,d=!!(b.d||b.priv),e={...b};return"AKP"!==e.kty&&delete e.alg,delete e.use,crypto.subtle.importKey("jwk",e,c,b.ext??!d,b.key_ops??a.usages[+!!d])}let at=a=>a[Symbol.toStringTag],au={__proto__:null,prime256v1:"P-256",secp384r1:"P-384",secp521r1:"P-521"};function av(a,b,c){let e=(d||=new WeakMap).get(a);return c&&(e?e[b]=c:d.set(a,{[b]:c})),c??e?.[b]}let aw=async(a,b,c)=>av(a,c.alg)??av(a,c.alg,await as(c,{...b,alg:c.alg}));async function ax(a,b,c){let d=function(a,b,c){let{alg:d,secret:e}=a,f="decrypt"===c||"sign"===c;if(e&&b instanceof Uint8Array)return[0,b];if(an(b)&&"string"==typeof b.kty){if(e?"oct"!==b.kty||"string"!=typeof b.k:!(f?"oct"!==b.kty&&("AKP"===b.kty&&"string"==typeof b.priv||"string"==typeof b.d):"oct"!==b.kty&&void 0===b.d&&void 0===b.priv))throw TypeError(e?'JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present':`JSON Web Key for this operation must be a ${f?"private":"public"} JWK`);return((a,b,c)=>{let{alg:d}=a;if(void 0!==b.use){let a="sign"===c||"verify"===c?"sig":"enc";if(b.use!==a)throw TypeError(`Invalid key for this operation, its "use" must be "${a}" when present`)}if(void 0!==b.alg&&b.alg!==d)throw TypeError(`Invalid key for this operation, its "alg" must be "${d}" when present`);if(Array.isArray(b.key_ops)){let d="encrypt"===c||"decrypt"===c?a.ops?.[+("encrypt"!==c)]:c;if(d&&!b.key_ops.includes(d))throw TypeError(`Invalid key for this operation, its "key_ops" must include "${d}" when present`)}})(a,b,c),[3,b]}if(!(ar(b)||b?.[Symbol.toStringTag]==="KeyObject"))throw TypeError(e?aq(d,b,"CryptoKey","KeyObject","JSON Web Key","Uint8Array"):aq(d,b,"CryptoKey","KeyObject","JSON Web Key"));if(e){if("secret"!==b.type)throw TypeError(`${at(b)} instances for symmetric algorithms must be of type "secret"`)}else{if("secret"===b.type)throw TypeError(`${at(b)} instances for asymmetric algorithms must not be of type "secret"`);let a=f?"private":"public";if(("public"===b.type||"private"===b.type)&&b.type!==a){let d="sign"===c?"signing":"verify"===c?"verifying":`${c.slice(0,-1)}tion`;throw TypeError(`${at(b)} instances for asymmetric algorithm ${d} must be of type "${a}"`)}}return ar(b)?[1,b]:[2,b]}(a,b,c);switch(d[0]){case 0:case 1:return d[1];case 3:{let b=d[1];if(b.k)return am(b.k);if(!Object.isFrozen(b)){let{key_ops:a}=b;Array.isArray(a)&&Object.freeze(a),Object.freeze(b)}return aw(b,b,a)}case 2:{let b=d[1];if("secret"===b.type)return b.export();if("toCryptoKey"in b&&"function"==typeof b.toCryptoKey)return((a,b)=>{let c=av(a,b.alg);if(c)return c;let d="public"===a.type,e=b.usages[+!d],{asymmetricKeyType:f}=a,g=au[a.asymmetricKeyDetails?.namedCurve],h=b.resolve?.({crv:g,asymmetricKeyType:f})??b.subtle;return av(a,b.alg,a.toCryptoKey(h,d,e))})(b,a);return aw(b,b.export({format:"jwk"}),a)}}}async function ay(a,b,c){let d,{protected:e,header:f,payload:g}=a,h={};if(e&&(h=function(a,b,c){let d;try{d=JSON.parse(aj.decode(am(a)))}catch{throw new b(c)}if(!an(d))throw new b(c);return d}(e,Y,"JWS Protected Header is invalid")),void 0!==f){if(!function(...a){let b=new Set;for(let c of a)if(c)for(let a of Object.keys(c)){if(b.has(a))return!1;b.add(a)}return!0}(h,f))throw new Y("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");d={...h,...f}}else d=h;let i=function(a,b,c,d,e){if(void 0!==e.crit&&d?.crit===void 0)throw new a('"crit" (Critical) Header Parameter MUST be integrity protected');if(!d||void 0===d.crit)return[];if(!Array.isArray(d.crit)||0===d.crit.length||d.crit.some(a=>"string"!=typeof a||0===a.length))throw new a('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');let f=void 0===c?b:{__proto__:null,...c,...b};for(let b of d.crit){if(!(b in f))throw new X(`Extension Header Parameter "${b}" is not recognized`);if(!Object.hasOwn(e,b)||void 0===e[b])throw new a(`Extension Header Parameter "${b}" is missing`);if(f[b]&&(!Object.hasOwn(d,b)||void 0===d[b]))throw new a(`Extension Header Parameter "${b}" MUST be integrity protected`)}return d.crit}(Y,ap,b[1],h,d),j=!0;if(i.includes("b64")&&"boolean"!=typeof(j=h.b64))throw new Y('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:k}=d;if("string"!=typeof k||!k)throw new Y('JWS "alg" (Algorithm) Header Parameter missing or invalid');if(b[0]&&!b[0].has(k))throw new W('"alg" (Algorithm) Header Parameter value not allowed');if(j){if("string"!=typeof g)throw new Y("JWS Payload must be a string")}else if("string"!=typeof g&&!(g instanceof Uint8Array))throw new Y("JWS Payload must be a string or an Uint8Array instance");let l=!1;"function"==typeof c&&(c=await c(h,a),l=!0);let m=function(a){let b=ag[a];if(!b)throw new X(`alg ${a} is not supported either by JOSE or your javascript runtime`);return b}(k),n=function(...a){let b=new Uint8Array(a.reduce((a,{length:b})=>a+b,0)),c=0;for(let d of a)b.set(d,c),c+=d.length;return b}(void 0!==e?ak(e):new Uint8Array,ak("."),"string"==typeof g?j?b[2]??=function(a,b,c){try{return ak(a)}catch{throw new c(`The ${b} is not a valid base64url string`)}}(g,"payload",Y):ah.encode(g):g),o=ao(a.signature,"signature",Y),p=await ax(m,c,"verify");if(!await S(m,p,o,n))throw new _;return[j?ao(g,"payload",Y):"string"==typeof g?ah.encode(g):g,h,j,p,l]}async function az(a,b,c){if(a instanceof Uint8Array&&(a=ai.decode(a)),"string"!=typeof a)throw new Y("Compact JWS must be a string or Uint8Array");let{0:d,1:e,2:f,length:g}=a.split(".");if(3!==g)throw new Y("Invalid Compact JWS");return ay({payload:e,protected:d,signature:f},b,c)}let aA={s:1,m:60,h:3600,d:86400,w:604800,y:0x1e187e0},aB=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i,aC="check_failed";function aD(a){let b=aB.exec(a);if(!b||b[4]&&b[1])throw TypeError("Invalid time period format");let c=Math.round(parseFloat(b[2])*aA[b[3][0].toLowerCase()]);return"-"===b[1]||"ago"===b[4]?-c:c}function aE(a,b){if(!Number.isFinite(b))throw TypeError(`Invalid ${a} input`);return b}let aF=a=>a.includes("/")?a.toLowerCase():`application/${a.toLowerCase()}`;function aG(a,b,c=!1){let d=a[b];if(void 0!==d||c){if("number"!=typeof d)throw new U(`"${b}" claim must be a number`,a,b,"invalid");return d}}function aH(a,b){throw new U(`unexpected "${b}" claim value`,a,b,aC)}async function aI(a,b,c){let d=await az(a,[c&&function(a,b){if(void 0!==b&&(!Array.isArray(b)||b.some(a=>"string"!=typeof a)))throw TypeError(`"${a}" option must be an array of strings`);if(b)return new Set(b)}("algorithms",c.algorithms),c?.crit],b);if(!d[2])throw new Z("JWTs MUST NOT use unencoded payload");let e={payload:function(a,b,c={}){var d,e;let f;try{f=JSON.parse(aj.decode(b))}catch{}if(!an(f))throw new Z("JWT Claims Set must be a top-level JSON object");let{typ:g}=c;if(g&&("string"!=typeof a.typ||aF(a.typ)!==aF(g)))throw new U('unexpected "typ" JWT header value',f,"typ",aC);let{requiredClaims:h=[],issuer:i,subject:j,audience:k,maxTokenAge:l}=c,m=[...h];for(let a of(void 0!==l&&m.push("iat"),void 0!==k&&m.push("aud"),void 0!==j&&m.push("sub"),void 0!==i&&m.push("iss"),new Set(m.reverse())))if(!Object.hasOwn(f,a))throw new U(`missing required "${a}" claim`,f,a,"missing");void 0===i||(Array.isArray(i)?i:[i]).includes(f.iss)||aH(f,"iss"),void 0!==j&&f.sub!==j&&aH(f,"sub"),void 0===k||(d=f.aud,e="string"==typeof k?[k]:k,"string"==typeof d?e.includes(d):!!Array.isArray(d)&&e.some(a=>d.includes(a)))||aH(f,"aud");let{clockTolerance:n}=c,o=0;if("string"==typeof n)o=aD(n);else if(void 0!==n){if("number"!=typeof n)throw TypeError("Invalid clockTolerance option type");o=n}aE("clockTolerance option",o);let{currentDate:p}=c,q=aE("currentDate option",Math.floor((p||new Date).getTime()/1e3)),r=aG(f,"iat",void 0!==l),s=aG(f,"nbf");if(void 0!==s&&s>q+o)throw new U('"nbf" claim timestamp check failed',f,"nbf",aC);let t=aG(f,"exp");if(void 0!==t&&t<=q-o)throw new V('"exp" claim timestamp check failed',f,"exp",aC);if(void 0!==l){let a=q-r;if(a-o>("number"==typeof l?l:aD(l)))throw new V('"iat" claim timestamp check failed (too far in the past)',f,"iat",aC);if(a<0-o)throw new U('"iat" claim timestamp check failed (it should be in the past)',f,"iat",aC)}return f}(d[1],d[0],c),protectedHeader:d[1]};return"function"==typeof b?{...e,key:d[3]}:e}c(55511);"function"==typeof setImmediate||"object"==typeof scheduler&&"function"==typeof scheduler.postTask&&scheduler.postTask.bind(scheduler);let aJ=new TextEncoder().encode(function(){if(process.env.JWT_SECRET)return process.env.JWT_SECRET;let a=I().join(J.n,"jwt-secret");try{let b=G().readFileSync(a,"utf8").trim();if(b)return b}catch{}try{G().mkdirSync(J.n,{recursive:!0});let b=p().randomBytes(32).toString("hex");return G().writeFileSync(a,b,{mode:384}),b}catch{return"ezrouter-fallback-jwt-secret-key-32-chars-minimum"}}()),aK="ezrouter_auth_token";async function aL(a){if(!a)return!1;try{return await aI(a,aJ),!0}catch{return!1}}function aM(a){let b=process.env.NINEROUTER_PEER_TOKEN;return!!b&&a.headers.get("x-9r-peer-token")===b}let aN=null;async function aO(){return aN||(aN=await P("9r-cli-auth")),aN}async function aP(a){let b=a.headers.get("x-9r-cli-token");return!!b&&b===await aO()}let aQ=["/api/health","/api/init","/api/locale","/api/auth/login","/api/auth/logout","/api/auth/status","/api/auth/oidc","/api/auth/saml","/api/version","/api/changelog","/api/settings/require-login"],aR=["/v1","/v1beta","/api/v1","/api/v1beta","/codex","/responses"],aS=["/api/shutdown","/api/settings/database","/api/version/shutdown","/api/version/update"],aT=["/api/cli-tools/cowork-settings","/api/cli-tools/antigravity-mitm","/api/mcp/","/api/tunnel/tailscale-install","/api/tunnel/tailscale-enable","/api/tunnel/tailscale-disable","/api/tunnel/tailscale-check","/api/tunnel/enable","/api/tunnel/disable","/api/oauth/cursor/auto-import","/api/oauth/kiro/auto-import","/api/auth/reset-password","/api/headroom/start","/api/headroom/stop","/api/headroom/proxy","/api/headroom/extras","/api/headroom/restart","/api/pxpipe"],aU=new Set(["localhost","127.0.0.1","::1"]);function aV(a){if(!a)return!1;let b=String(a).trim().toLowerCase();if(b.startsWith("[")){let a=b.indexOf("]");if(-1===a)return!1;b=b.slice(1,a)}else -1!==b.indexOf(":")&&b.indexOf(":")===b.lastIndexOf(":")&&(b=b.slice(0,b.indexOf(":")));return b.startsWith("::ffff:")&&(b=b.slice(7)),aU.has(b)}function aW(a){if(a.headers.get("x-9r-via-proxy")||!aM(a)||!aV(a.headers.get("x-9r-real-ip")))return!1;let b=a.headers.get("origin");if(b)try{if(!aV(new URL(b).hostname))return!1}catch{return!1}return!0}function aX(a){return aR.some(b=>a===b||a.startsWith(`${b}/`))}function aY(a){let b=[],c=a=>{a&&!b.includes(a)&&b.push(a)},d=a.headers.get("Authorization");d?.startsWith("Bearer ")&&c(d.slice(7).trim());let e=a.headers.get("x-api-key");e&&c(e.trim());let f=a.headers.get("x-goog-api-key");f&&c(f.trim());let g=a.nextUrl?.searchParams?.get("key");return g&&c(g.trim()),b}async function aZ(a){let b=aY(a);if(0===b.length)return!1;for(let a of b)if(await (0,l.validateApiKey)(a))return!0;return!1}async function a$(a){let b=aY(a)[0]||null;return!!b&&!!await m(b)}async function a_(a){return!!(aM(a)&&aV(a.headers.get("x-9r-real-ip"))||await aP(a))||await aZ(a)}async function a0(a){return!!(await aP(a)||aW(a)&&await a3(a))}async function a1(a){let b=a.cookies?.get?.(aK)?.value||a.cookies?.get?.("auth_token")?.value;return await aL(b)}async function a2(){try{return await (0,k.getSettings)()}catch{return null}}async function a3(a){if(await a1(a))return!0;let b=await a2();return!!b&&!1===b.requireLogin}async function a4(a){let{pathname:b}=a.nextUrl;if(aT.some(a=>b.startsWith(a))&&!await a0(a))return i.NextResponse.json({error:"Local only: CLI token required"},{status:403});if(aS.some(a=>b.startsWith(a)))return await aP(a)||await a1(a)?i.NextResponse.next():i.NextResponse.json({error:"Unauthorized"},{status:401});if("OPTIONS"===a.method&&aX(b)){let b=a.headers.get("access-control-request-headers");return i.NextResponse.json(null,{status:204,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":b||"*","Access-Control-Max-Age":"86400"}})}if(aX(b))return"OPTIONS"===a.method||await a_(a)?i.NextResponse.next():i.NextResponse.json("/v1/messages"===b||"/api/v1/messages"===b?{type:"error",error:{type:"authentication_error",message:"API key required for remote API access"}}:{error:"API key required for remote API access"},{status:401});if("/api/mcp-gateway"===b||"/api/mcp-gateway/sse"===b||"/api/mcp-gateway/message"===b)return aW(a)||await aP(a)||await a$(a)?i.NextResponse.next():i.NextResponse.json({error:"gateway key required"},{status:401});if(b.startsWith("/api/mcp-gateway/oauth/")&&b.endsWith("/client-metadata"))return i.NextResponse.next();if(b.startsWith("/api/"))return aX(b)||aQ.some(a=>b===a||b.startsWith(`${a}/`))||await aP(a)||await a3(a)?i.NextResponse.next():i.NextResponse.json({error:"Unauthorized"},{status:401});if(b.startsWith("/dashboard")){let b=!0;try{let c=await a2();if(c&&(b=!1!==c.requireLogin,!0!==c.tunnelDashboardAccess)){let b=(a.headers.get("host")||"").split(":")[0].toLowerCase(),d=c.tunnelUrl?new URL(c.tunnelUrl).hostname.toLowerCase():"",e=c.tailscaleUrl?new URL(c.tailscaleUrl).hostname.toLowerCase():"";if(d&&b===d||e&&b===e)return i.NextResponse.redirect(new URL("/login",a.url))}}catch{}if(!b)return i.NextResponse.next();let c=a.cookies.get(aK)?.value||a.cookies.get("auth_token")?.value;return c&&await aL(c)?i.NextResponse.next():i.NextResponse.redirect(new URL("/login",a.url))}return"/"===b?i.NextResponse.redirect(new URL("/dashboard",a.url)):i.NextResponse.next()}async function a5(a){return a4(a)}let a6={matcher:["/((?!_next/static|_next/image|favicon\\.ico).*)"]};c(6365);var a7=c(99751);let a8={...e},a9="/src/proxy",ba=(0,a8.proxy||a8.default);class bb extends Error{constructor(a){super(a),this.stack=""}}if("function"!=typeof ba)throw new bb(`The Proxy file "${a9}" must export a function named \`proxy\` or a default function.`);let bc=a=>(0,g.adapter)({...a,IncrementalCache:h.IncrementalCache,incrementalCacheHandler:null,page:a9,handler:async(...a)=>{try{return await ba(...a)}catch(e){let b=a[0],c=new URL(b.url),d=c.pathname+c.search;throw await (0,f.edgeInstrumentationOnRequestError)(e,{path:d,method:b.method,headers:Object.fromEntries(b.headers.entries())},{routerKind:"Pages Router",routePath:"/proxy",routeType:"proxy",revalidateReason:void 0}),e}}});async function bd(a,b){let c=await bc({request:{url:a.url,method:a.method,headers:(0,a7.toNodeOutgoingHttpHeaders)(a.headers),nextConfig:{basePath:"",i18n:"",trailingSlash:!1,experimental:{cacheLife:{default:{stale:300,revalidate:900,expire:0xfffffffe},seconds:{stale:30,revalidate:1,expire:60},minutes:{stale:300,revalidate:60,expire:3600},hours:{stale:300,revalidate:3600,expire:86400},days:{stale:300,revalidate:86400,expire:604800},weeks:{stale:300,revalidate:604800,expire:2592e3},max:{stale:300,revalidate:2592e3,expire:31536e3}},authInterrupts:!1,clientParamParsingOrigins:[]}},page:{name:a9},body:"GET"!==a.method&&"HEAD"!==a.method?a.body??void 0:void 0,waitUntil:b.waitUntil,requestMeta:b.requestMeta,signal:b.signal||new AbortController().signal}});return null==b.waitUntil||b.waitUntil.call(b,c.waitUntil),c.response}let be=bc},9913:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"LRUCache",{enumerable:!0,get:function(){return e}});class c{constructor(a,b,c){this.prev=null,this.next=null,this.key=a,this.data=b,this.size=c}}class d{constructor(){this.prev=null,this.next=null}}class e{constructor(a,b,c){this.cache=new Map,this.totalSize=0,this.maxSize=a,this.calculateSize=b,this.onEvict=c,this.head=new d,this.tail=new d,this.head.next=this.tail,this.tail.prev=this.head}addToHead(a){a.prev=this.head,a.next=this.head.next,this.head.next.prev=a,this.head.next=a}removeNode(a){a.prev.next=a.next,a.next.prev=a.prev}moveToHead(a){this.removeNode(a),this.addToHead(a)}removeTail(){let a=this.tail.prev;return this.removeNode(a),a}set(a,b){let d=(null==this.calculateSize?void 0:this.calculateSize.call(this,b))??1;if(d<=0)throw Object.defineProperty(Error(`LRUCache: calculateSize returned ${d}, but size must be > 0. Items with size 0 would never be evicted, causing unbounded cache growth.`),"__NEXT_ERROR_CODE",{value:"E1045",enumerable:!1,configurable:!0});if(d>this.maxSize)return console.warn("Single item size exceeds maxSize"),!1;let e=this.cache.get(a);if(e)e.data=b,this.totalSize=this.totalSize-e.size+d,e.size=d,this.moveToHead(e);else{let e=new c(a,b,d);this.cache.set(a,e),this.addToHead(e),this.totalSize+=d}for(;this.totalSize>this.maxSize&&this.cache.size>0;){let a=this.removeTail();this.cache.delete(a.key),this.totalSize-=a.size,null==this.onEvict||this.onEvict.call(this,a.key,a.data)}return!0}has(a){return this.cache.has(a)}get(a){let b=this.cache.get(a);if(b)return this.moveToHead(b),b.data}*[Symbol.iterator](){let a=this.head.next;for(;a&&a!==this.tail;){let b=a;yield[b.key,b.data],a=a.next}}remove(a){let b=this.cache.get(a);b&&(this.removeNode(b),this.cache.delete(a),this.totalSize-=b.size)}get size(){return this.cache.size}get currentSize(){return this.totalSize}}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11042:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={INTERCEPTION_ROUTE_MARKERS:function(){return g},extractInterceptionRouteInformation:function(){return i},isInterceptionRouteAppPath:function(){return h}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(92539),g=["(..)(..)","(.)","(..)","(...)"];function h(a){return void 0!==a.split("/").find(a=>g.find(b=>a.startsWith(b)))}function i(a){let b,c,d;for(let e of a.split("/"))if(c=g.find(a=>e.startsWith(a))){[b,d]=a.split(c,2);break}if(!b||!c||!d)throw Object.defineProperty(Error(`Invalid interception route: ${a}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`),"__NEXT_ERROR_CODE",{value:"E269",enumerable:!1,configurable:!0});switch(b=(0,f.normalizeAppPath)(b),c){case"(.)":d="/"===b?`/${d}`:b+"/"+d;break;case"(..)":if("/"===b)throw Object.defineProperty(Error(`Invalid interception route: ${a}. Cannot use (..) marker at the root level, use (.) instead.`),"__NEXT_ERROR_CODE",{value:"E207",enumerable:!1,configurable:!0});d=b.split("/").slice(0,-1).concat(d).join("/");break;case"(...)":d="/"+d;break;case"(..)(..)":let e=b.split("/");if(e.length<=2)throw Object.defineProperty(Error(`Invalid interception route: ${a}. Cannot use (..)(..) marker at the root level or one level up.`),"__NEXT_ERROR_CODE",{value:"E486",enumerable:!1,configurable:!0});d=e.slice(0,-2).concat(d).join("/");break;default:throw Object.defineProperty(Error("Invariant: unexpected marker"),"__NEXT_ERROR_CODE",{value:"E112",enumerable:!1,configurable:!0})}return{interceptingRoute:b,interceptedRoute:d}}},12217:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={djb2Hash:function(){return e},hexHash:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});function e(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b+a.charCodeAt(c)|0;return b>>>0}function f(a){return e(a).toString(36).slice(0,5)}},12726:(a,b,c)=>{"use strict";let d,e;Object.defineProperty(b,"__esModule",{value:!0});var f={BubbledError:function(){return q},SpanKind:function(){return o},SpanStatusCode:function(){return n},getTracer:function(){return y},isBubbledError:function(){return r}};for(var g in f)Object.defineProperty(b,g,{enumerable:!0,get:f[g]});let h=c(88026),i=c(32053),j=process.env.NEXT_OTEL_PERFORMANCE_PREFIX;try{d=c(58930)}catch(a){d=c(58930)}let{context:k,propagation:l,trace:m,SpanStatusCode:n,SpanKind:o,ROOT_CONTEXT:p}=d;class q extends Error{constructor(a,b){super(),this.bubble=a,this.result=b}}function r(a){return"object"==typeof a&&null!==a&&a instanceof q}let s=(a,b)=>{r(b)&&b.bubble?a.setAttribute("next.bubble",!0):(b&&(a.recordException(b),a.setAttribute("error.type",b.name)),a.setStatus({code:n.ERROR,message:null==b?void 0:b.message})),a.end()},t=new Map,u=d.createContextKey("next.rootSpanId"),v=0,w={set(a,b,c){a.push({key:b,value:c})}};class x{getTracerInstance(){return m.getTracer("next.js","0.0.1")}getContext(){return k}getTracePropagationData(){let a=k.active(),b=[];return l.inject(a,b,w),b}getActiveScopeSpan(){return m.getSpan(null==k?void 0:k.active())}withPropagatedContext(a,b,c,d=!1){let e=k.active();if(d){let d=l.extract(p,a,c);if(m.getSpanContext(d))return k.with(d,b);let f=l.extract(e,a,c);return k.with(f,b)}if(m.getSpanContext(e))return b();let f=l.extract(e,a,c);return k.with(f,b)}trace(...a){let[b,c,d]=a,{fn:e,options:f}="function"==typeof c?{fn:c,options:{}}:{fn:d,options:{...c}},g=f.spanName??b;if(!h.NextVanillaSpanAllowlist.has(b)&&"1"!==process.env.NEXT_OTEL_VERBOSE||f.hideSpan)return e();let l=this.getSpanContext((null==f?void 0:f.parentSpan)??this.getActiveScopeSpan());l||(l=(null==k?void 0:k.active())??p);let m=l.getValue(u),n="number"!=typeof m||!t.has(m),o=v++;return f.attributes={"next.span_name":g,"next.span_type":b,...f.attributes},k.with(l.setValue(u,o),()=>this.getTracerInstance().startActiveSpan(g,f,a=>{let c;j&&b&&h.LogSpanAllowList.has(b)&&(c="performance"in globalThis&&"measure"in performance?globalThis.performance.now():void 0);let d=!1,g=()=>{!d&&(d=!0,t.delete(o),c&&performance.measure(`${j}:next-${(b.split(".").pop()||"").replace(/[A-Z]/g,a=>"-"+a.toLowerCase())}`,{start:c,end:performance.now()}))};if(n&&t.set(o,new Map(Object.entries(f.attributes??{}))),e.length>1)try{return e(a,b=>s(a,b))}catch(b){throw s(a,b),b}finally{g()}try{let b=e(a);if((0,i.isThenable)(b))return b.then(b=>(a.end(),b)).catch(b=>{throw s(a,b),b}).finally(g);return a.end(),g(),b}catch(b){throw s(a,b),g(),b}}))}wrap(...a){let b=this,[c,d,e]=3===a.length?a:[a[0],{},a[1]];return h.NextVanillaSpanAllowlist.has(c)||"1"===process.env.NEXT_OTEL_VERBOSE?function(){let a=d;"function"==typeof a&&"function"==typeof e&&(a=a.apply(this,arguments));let f=arguments.length-1,g=arguments[f];if("function"!=typeof g)return b.trace(c,a,()=>e.apply(this,arguments));{let d=b.getContext().bind(k.active(),g);return b.trace(c,a,(a,b)=>(arguments[f]=function(a){return null==b||b(a),d.apply(this,arguments)},e.apply(this,arguments)))}}:e}startSpan(...a){let[b,c]=a,d=this.getSpanContext((null==c?void 0:c.parentSpan)??this.getActiveScopeSpan());return this.getTracerInstance().startSpan(b,c,d)}getSpanContext(a){return a?m.setSpan(k.active(),a):void 0}getRootSpanAttributes(){let a=k.active().getValue(u);return t.get(a)}setRootSpanAttribute(a,b){let c=k.active().getValue(u),d=t.get(c);d&&!d.has(a)&&d.set(a,b)}withSpan(a,b){let c=m.setSpan(k.active(),a);return k.with(c,b)}}let y=(e=new x,()=>e)},15e3:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={bootstrap:function(){return k},error:function(){return m},errorOnce:function(){return v},event:function(){return q},info:function(){return p},prefixes:function(){return h},ready:function(){return o},trace:function(){return r},wait:function(){return l},warn:function(){return n},warnOnce:function(){return t}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(56872),g=c(9913),h={wait:(0,f.white)((0,f.bold)("○")),error:(0,f.red)((0,f.bold)("⨯")),warn:(0,f.yellow)((0,f.bold)("⚠")),ready:"▲",info:(0,f.white)((0,f.bold)(" ")),event:(0,f.green)((0,f.bold)("✓")),trace:(0,f.magenta)((0,f.bold)("\xbb"))},i={log:"log",warn:"warn",error:"error"};function j(a,...b){(""===b[0]||void 0===b[0])&&1===b.length&&b.shift();let c=a in i?i[a]:"log",d=h[a];0===b.length?console[c](""):1===b.length&&"string"==typeof b[0]?console[c](d+" "+b[0]):console[c](d,...b)}function k(a){console.log(a)}function l(...a){j("wait",...a)}function m(...a){j("error",...a)}function n(...a){j("warn",...a)}function o(...a){j("ready",...a)}function p(...a){j("info",...a)}function q(...a){j("event",...a)}function r(...a){j("trace",...a)}let s=new g.LRUCache(1e4,a=>a.length);function t(...a){let b=a.join(" ");s.has(b)||(s.set(b,b),n(...a))}let u=new g.LRUCache(1e4,a=>a.length);function v(...a){let b=a.join(" ");u.has(b)||(u.set(b,b),m(...a))}},15971:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"RedirectStatusCode",{enumerable:!0,get:function(){return d}});var c,d=((c={})[c.SeeOther=303]="SeeOther",c[c.TemporaryRedirect=307]="TemporaryRedirect",c[c.PermanentRedirect=308]="PermanentRedirect",c);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},16129:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={NextFetchEvent:function(){return l},getWaitUntilPromiseFromEvent:function(){return k}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(68802),g=Symbol("response"),h=Symbol("passThrough"),i=Symbol("waitUntil");class j{constructor(a,b){this[h]=!1,this[i]=b?{kind:"external",function:b}:{kind:"internal",promises:[]}}respondWith(a){this[g]||(this[g]=Promise.resolve(a))}passThroughOnException(){this[h]=!0}waitUntil(a){if("external"===this[i].kind)return(0,this[i].function)(a);this[i].promises.push(a)}}function k(a){return"internal"===a[i].kind?Promise.all(a[i].promises).then(()=>{}):void 0}class l extends j{constructor(a){var b;super(a.request,null==(b=a.context)?void 0:b.waitUntil),this.sourcePage=a.page}get request(){throw Object.defineProperty(new f.PageSignatureError({page:this.sourcePage}),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}respondWith(){throw Object.defineProperty(new f.PageSignatureError({page:this.sourcePage}),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}}},16698:a=>{"use strict";a.exports=require("node:async_hooks")},16841:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={getSortedRouteObjects:function(){return f.getSortedRouteObjects},getSortedRoutes:function(){return f.getSortedRoutes},isDynamicRoute:function(){return g.isDynamicRoute}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(85503),g=c(4945)},17385:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"NextResponse",{enumerable:!0,get:function(){return l}});let d=c(38955),e=c(92729),f=c(99751),g=c(31050),h=c(38955),i=Symbol("internal response"),j=new Set([301,302,303,307,308]);function k(a,b){var c;if(null==a||null==(c=a.request)?void 0:c.headers){if(!(a.request.headers instanceof Headers))throw Object.defineProperty(Error("request.headers must be an instance of Headers"),"__NEXT_ERROR_CODE",{value:"E119",enumerable:!1,configurable:!0});let c=[];for(let[d,e]of a.request.headers)b.set("x-middleware-request-"+d,e),c.push(d);b.set("x-middleware-override-headers",c.join(","))}}class l extends Response{constructor(a,b={}){super(a,b);const c=this.headers,j=new Proxy(new h.ResponseCookies(c),{get(a,e,f){switch(e){case"delete":case"set":return(...f)=>{let g=Reflect.apply(a[e],a,f),i=new Headers(c);return g instanceof h.ResponseCookies&&c.set("x-middleware-set-cookie",g.getAll().map(a=>(0,d.stringifyCookie)(a)).join(",")),k(b,i),g};default:return g.ReflectAdapter.get(a,e,f)}}});this[i]={cookies:j,url:b.url?new e.NextURL(b.url,{headers:(0,f.toNodeOutgoingHttpHeaders)(c),nextConfig:b.nextConfig}):void 0}}[Symbol.for("edge-runtime.inspect.custom")](){return{cookies:this.cookies,url:this.url,body:this.body,bodyUsed:this.bodyUsed,headers:Object.fromEntries(this.headers),ok:this.ok,redirected:this.redirected,status:this.status,statusText:this.statusText,type:this.type}}get cookies(){return this[i].cookies}static json(a,b){let c=Response.json(a,b);return new l(c.body,c)}static redirect(a,b){let c="number"==typeof b?b:(null==b?void 0:b.status)??307;if(!j.has(c))throw Object.defineProperty(RangeError('Failed to execute "redirect" on "response": Invalid status code'),"__NEXT_ERROR_CODE",{value:"E529",enumerable:!1,configurable:!0});let d="object"==typeof b?b:{},e=new Headers(null==d?void 0:d.headers);return e.set("Location",(0,f.validateURL)(a)),new l(null,{...d,headers:e,status:c})}static rewrite(a,b){let c=new Headers(null==b?void 0:b.headers);return c.set("x-middleware-rewrite",(0,f.validateURL)(a)),k(b,c),new l(null,{...b,headers:c})}static next(a){let b=new Headers(null==a?void 0:a.headers);return b.set("x-middleware-next","1"),k(a,b),new l(null,{...a,headers:b})}}},17888:(a,b)=>{"use strict";function c(a){return a.startsWith("/")?a:`/${a}`}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ensureLeadingSlash",{enumerable:!0,get:function(){return c}})},18313:(a,b,c)=>{"use strict";a.exports=c(33873)},18975:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={getTestReqInfo:function(){return i},withRequest:function(){return h}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=new(c(16698)).AsyncLocalStorage;function g(a,b){let c=b.header(a,"next-test-proxy-port");if(!c)return;let d=b.url(a);return{url:d,proxyPort:Number(c),testData:b.header(a,"next-test-data")||""}}function h(a,b,c){let d=g(a,b);return d?f.run(d,c):c()}function i(a,b){let c=f.getStore();return c||(a&&b?g(a,b):void 0)}},19293:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"connection",{enumerable:!0,get:function(){return k}});let d=c(29294),e=c(63033),f=c(8912),g=c(49540),h=c(80311),i=c(72106);c(54795);let j=c(42776);function k(){let a=d.workAsyncStorage.getStore(),b=e.workUnitAsyncStorage.getStore();if(a){if(b&&"after"===b.phase&&!(0,i.isRequestAPICallableInsideAfter)())throw Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside \`after()\`. The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but \`after()\` executes after the request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E827",enumerable:!1,configurable:!0});if(a.forceStatic)return Promise.resolve(void 0);if(a.dynamicShouldError)throw Object.defineProperty(new g.StaticGenBailoutError(`Route ${a.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`connection()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E847",enumerable:!1,configurable:!0});if(b)switch(b.type){case"cache":{let b=Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside "use cache". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual request, but caches must be able to be produced before a request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E841",enumerable:!1,configurable:!0});throw Error.captureStackTrace(b,k),a.invalidDynamicUsageError??=b,b}case"private-cache":{let b=Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside "use cache: private". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual navigation request, but caches must be able to be produced before a navigation request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E837",enumerable:!1,configurable:!0});throw Error.captureStackTrace(b,k),a.invalidDynamicUsageError??=b,b}case"unstable-cache":throw Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside a function cached with \`unstable_cache()\`. The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but caches must be able to be produced before a Request so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E840",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E1125",enumerable:!1,configurable:!0});case"prerender":case"prerender-client":case"prerender-runtime":return(0,h.makeHangingPromise)(b.renderSignal,a.route,"`connection()`");case"validation-client":{let a="`connection`";throw Object.defineProperty(new j.InvariantError(`${a} must not be used within a Client Component. Next.js should be preventing ${a} from being included in Client Components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1063",enumerable:!1,configurable:!0})}case"prerender-ppr":return(0,f.postponeWithTracking)(a.route,"connection",b.dynamicTracking);case"prerender-legacy":return(0,f.throwToInterruptStaticGeneration)("connection",a,b);case"request":if((0,f.trackDynamicDataInDynamicRender)(b),b.asyncApiPromises)return b.asyncApiPromises.connection;return Promise.resolve(void 0)}}(0,e.throwForMissingRequestStore)("connection")}},19524:(a,b)=>{"use strict";function c(a){return a.replace(/\/$/,"")||"/"}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"removeTrailingSlash",{enumerable:!0,get:function(){return c}})},19560:a=>{(()=>{"use strict";"u">typeof __nccwpck_require__&&(__nccwpck_require__.ab=__dirname+"/");var b,c,d,e,f={};f.parse=function(a,c){if("string"!=typeof a)throw TypeError("argument str must be a string");for(var e={},f=a.split(d),g=(c||{}).decode||b,h=0;h<f.length;h++){var i=f[h],j=i.indexOf("=");if(!(j<0)){var k=i.substr(0,j).trim(),l=i.substr(++j,i.length).trim();'"'==l[0]&&(l=l.slice(1,-1)),void 0==e[k]&&(e[k]=function(a,b){try{return b(a)}catch(b){return a}}(l,g))}}return e},f.serialize=function(a,b,d){var f=d||{},g=f.encode||c;if("function"!=typeof g)throw TypeError("option encode is invalid");if(!e.test(a))throw TypeError("argument name is invalid");var h=g(b);if(h&&!e.test(h))throw TypeError("argument val is invalid");var i=a+"="+h;if(null!=f.maxAge){var j=f.maxAge-0;if(isNaN(j)||!isFinite(j))throw TypeError("option maxAge is invalid");i+="; Max-Age="+Math.floor(j)}if(f.domain){if(!e.test(f.domain))throw TypeError("option domain is invalid");i+="; Domain="+f.domain}if(f.path){if(!e.test(f.path))throw TypeError("option path is invalid");i+="; Path="+f.path}if(f.expires){if("function"!=typeof f.expires.toUTCString)throw TypeError("option expires is invalid");i+="; Expires="+f.expires.toUTCString()}if(f.httpOnly&&(i+="; HttpOnly"),f.secure&&(i+="; Secure"),f.sameSite)switch("string"==typeof f.sameSite?f.sameSite.toLowerCase():f.sameSite){case!0:case"strict":i+="; SameSite=Strict";break;case"lax":i+="; SameSite=Lax";break;case"none":i+="; SameSite=None";break;default:throw TypeError("option sameSite is invalid")}return i},b=decodeURIComponent,c=encodeURIComponent,d=/; */,e=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,a.exports=f})()},20399:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={indexOfUint8Array:function(){return e},isEquivalentUint8Arrays:function(){return f},removeFromUint8Array:function(){return g}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});function e(a,b){if(0===b.length)return 0;if(0===a.length||b.length>a.length)return -1;if("u">typeof Buffer)return(Buffer.isBuffer(a)?a:Buffer.from(a.buffer,a.byteOffset,a.byteLength)).indexOf(b);for(let c=0;c<=a.length-b.length;c++){let d=!0;for(let e=0;e<b.length;e++)if(a[c+e]!==b[e]){d=!1;break}if(d)return c}return -1}function f(a,b){if(a.length!==b.length)return!1;for(let c=0;c<a.length;c++)if(a[c]!==b[c])return!1;return!0}function g(a,b){let c=e(a,b);if(0===c)return a.subarray(b.length);if(!(c>-1))return a;{let d=new Uint8Array(a.length-b.length);return d.set(a.subarray(0,c)),d.set(a.subarray(c+b.length),c),d}}},20742:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={safeCompile:function(){return i},safePathToRegexp:function(){return h},safeRegexpToFunction:function(){return j},safeRouteMatcher:function(){return k}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(7039),g=c(61873);function h(a,b,c){if("string"!=typeof a)return(0,f.pathToRegexp)(a,b,c);let d=(0,g.hasAdjacentParameterIssues)(a),e=d?(0,g.normalizeAdjacentParameters)(a):a;try{return(0,f.pathToRegexp)(e,b,c)}catch(e){if(!d)try{let d=(0,g.normalizeAdjacentParameters)(a);return(0,f.pathToRegexp)(d,b,c)}catch(a){}throw e}}function i(a,b){let c=(0,g.hasAdjacentParameterIssues)(a),d=c?(0,g.normalizeAdjacentParameters)(a):a;try{let a=(0,f.compile)(d,b);if(c)return b=>(0,g.stripNormalizedSeparators)(a(b));return a}catch(d){if(!c)try{let c=(0,g.normalizeAdjacentParameters)(a),d=(0,f.compile)(c,b);return a=>(0,g.stripNormalizedSeparators)(d(a))}catch(a){}throw d}}function j(a,b){let c=(0,f.regexpToFunction)(a,b||[]);return a=>{let b=c(a);return!!b&&{...b,params:(0,g.stripParameterSeparators)(b.params)}}}function k(a){return b=>{let c=a(b);return!!c&&(0,g.stripParameterSeparators)(c)}}},21804:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"parseUrl",{enumerable:!0,get:function(){return f}});let d=c(68202),e=c(68047);function f(a){if(a.startsWith("/"))return(0,e.parseRelativeUrl)(a);let b=new URL(a),c=b.username,f=b.password,g=c?f?`${c}:${f}`:c:null,h=b.pathname,i=b.search;return{auth:g,hash:b.hash,hostname:b.hostname,href:b.href,pathname:h,port:b.port,protocol:b.protocol,query:(0,d.searchParamsToUrlQuery)(b.searchParams),search:i,origin:b.origin,slashes:"//"===b.href.slice(b.protocol.length,b.protocol.length+2)}}},21820:a=>{"use strict";a.exports=require("os")},22697:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={HTTPAccessErrorStatus:function(){return e},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return g},getAccessFallbackErrorTypeByStatus:function(){return j},getAccessFallbackHTTPStatus:function(){return i},isHTTPAccessFallbackError:function(){return h}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},f=new Set(Object.values(e)),g="NEXT_HTTP_ERROR_FALLBACK";function h(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let[b,c]=a.digest.split(";");return b===g&&f.has(Number(c))}function i(a){return Number(a.digest.split(";")[1])}function j(a){switch(a){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},24025:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={computeCacheBustingSearchParam:function(){return k},computeLegacyCacheBustingSearchParam:function(){return l}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(12217),g=new TextEncoder;function h(a){return void 0===a?"0":Array.isArray(a)?a.join(","):a}function i(a,b,c,d){return(void 0===a||"0"===a)&&void 0===b&&void 0===c&&void 0===d?null:[a??"0",h(b),h(c),h(d)].join(",")}async function j(a){var b=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",g.encode(a))).subarray(0,12);let c="";for(let a=0;a<b.length;a++)c+=String.fromCharCode(b[a]);return btoa(c).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function k(a,b,c,d){let e=i(a,b,c,d);return null===e?"":j(e)}function l(a,b,c,d){let e=i(a,b,c,d);return null===e?"":(0,f.hexHash)(e)}},24453:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={createRequestStoreForAPI:function(){return n},createRequestStoreForRender:function(){return m},synchronizeMutableCookies:function(){return p}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(62192),g=c(36023),h=c(93384),i=c(38955),j=c(38169),k=c(99751);function l(a,b){if("x-middleware-set-cookie"in a.headers&&"string"==typeof a.headers["x-middleware-set-cookie"]){let c=a.headers["x-middleware-set-cookie"],d=new Headers;for(let a of(0,k.splitCookiesString)(c))d.append("set-cookie",a);for(let a of new i.ResponseCookies(d).getAll())b.set(a)}}function m(a,b,c,d,e,f,g,h,i,j,k){return o("render",a,b,c,d,e,f,j,g,h,i,k)}function n(a,b,c,d,e){return o("action",a,void 0,b,{},c,d,null,e,!1,void 0,null)}function o(a,b,c,d,e,k,m,n,o,p,q,r){function s(a){c&&c.setHeader("Set-Cookie",a)}let t={};return{type:"request",phase:a,implicitTags:k,url:{pathname:d.pathname,search:d.search??""},rootParams:e,get headers(){return t.headers||(t.headers=function(a){let b=g.HeadersAdapter.from(a);for(let a of f.FLIGHT_HEADERS)b.delete(a);return g.HeadersAdapter.seal(b)}(b.headers)),t.headers},get cookies(){if(!t.cookies){let a=new i.RequestCookies(g.HeadersAdapter.from(b.headers));l(b,a),t.cookies=h.RequestCookiesAdapter.seal(a)}return t.cookies},set cookies(value){t.cookies=value},get mutableCookies(){if(!t.mutableCookies){var u,v;let a,d=(u=b.headers,v=m||(c?s:void 0),a=new i.RequestCookies(g.HeadersAdapter.from(u)),h.MutableRequestCookiesAdapter.wrap(a,v));l(b,d),t.mutableCookies=d}return t.mutableCookies},get userspaceMutableCookies(){return t.userspaceMutableCookies||(t.userspaceMutableCookies=(0,h.createCookiesWithMutableAccessCheck)(this)),t.userspaceMutableCookies},get draftMode(){return t.draftMode||(t.draftMode=new j.DraftModeProvider(o,b,this.cookies,this.mutableCookies)),t.draftMode},renderResumeDataCache:n??null,isHmrRefresh:p,serverComponentsHmrCache:q||globalThis.__serverComponentsHmrCache,fallbackParams:r}}function p(a){a.cookies=h.RequestCookiesAdapter.seal((0,h.responseCookiesToRequestCookies)(a.mutableCookies))}},26670:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"normalizePagePath",{enumerable:!0,get:function(){return g}});let d=c(17888),e=c(16841),f=c(80670);function g(a){let b=/^\/index(\/|$)/.test(a)&&!(0,e.isDynamicRoute)(a)?`/index${a}`:"/"===a?"/index":(0,d.ensureLeadingSlash)(a);{let{posix:a}=c(33873),d=a.normalize(b);if(d!==b)throw new f.NormalizeError(`Requested and resolved page mismatch: ${b} ${d}`)}return b}},27048:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={chainStreams:function(){return q},continueDynamicHTMLResume:function(){return N},continueDynamicPrerender:function(){return K},continueFizzStream:function(){return J},continueStaticFallbackPrerender:function(){return M},continueStaticPrerender:function(){return L},createBufferedTransformStream:function(){return x},createDocumentClosingStream:function(){return O},createInstantTestScriptInsertionTransformStream:function(){return C},createRootLayoutValidatorStream:function(){return H},createRuntimePrefetchTransformStream:function(){return P},renderToInitialFizzStream:function(){return y},streamFromBuffer:function(){return s},streamFromString:function(){return r},streamToBuffer:function(){return v},streamToString:function(){return w},streamToUint8Array:function(){return u}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(12726),g=c(88026),h=c(59841),i=c(28704),j=c(6492),k=c(20399),l=c(52201),m=c(62192),n=c(24025);function o(){}let p=new TextEncoder;function q(...a){if(0===a.length)return new ReadableStream({start(a){a.close()}});if(1===a.length)return a[0];let{readable:b,writable:c}=new TransformStream,d=a[0].pipeTo(c,{preventClose:!0}),e=1;for(;e<a.length-1;e++){let b=a[e];d=d.then(()=>b.pipeTo(c,{preventClose:!0}))}let f=a[e];return(d=d.then(()=>f.pipeTo(c))).catch(o),b}function r(a){return new ReadableStream({start(b){b.enqueue(p.encode(a)),b.close()}})}function s(a){return new ReadableStream({start(b){b.enqueue(a),b.close()}})}async function t(a){let b=a.getReader(),c=[];for(;;){let{done:a,value:d}=await b.read();if(a)break;c.push(d)}return c}async function u(a){var b=await t(a);let c=new Uint8Array(b.reduce((a,b)=>a+b.length,0)),d=0;for(let a of b)c.set(a,d),d+=a.length;return c}async function v(a){return Buffer.concat(await t(a))}async function w(a,b){let c=new TextDecoder("utf-8",{fatal:!0}),d="";for await(let e of a){if(null==b?void 0:b.aborted)return d;d+=c.decode(e,{stream:!0})}return d+c.decode()}function x(a={}){let b,{maxBufferByteLength:c=1/0}=a,d=[],e=0,f=a=>{try{if(0===d.length)return;let b=new Uint8Array(e),c=0;for(let a=0;a<d.length;a++){let e=d[a];b.set(e,c),c+=e.byteLength}d.length=0,e=0,a.enqueue(b)}catch{}};return new TransformStream({transform(a,g){d.push(a),(e+=a.byteLength)>=c?f(g):(a=>{if(b)return;let c=new h.DetachedPromise;b=c,(0,i.scheduleImmediate)(()=>{try{f(a)}finally{b=void 0,c.resolve()}})})(g)},flush:()=>null==b?void 0:b.promise})}function y({ReactDOMServer:a,element:b,streamOptions:c}){return(0,f.getTracer)().trace(g.AppRenderSpan.renderToReadableStream,async()=>a.renderToReadableStream(b,c))}function z(a){let b=-1,c=!1;return new TransformStream({async transform(d,e){let f=-1,g=-1;if(b++,c)return void e.enqueue(d);let h=0;if(-1===f){if(-1===(f=(0,k.indexOfUint8Array)(d,j.ENCODED_TAGS.META.ICON_MARK)))return void e.enqueue(d);47===d[f+(h=j.ENCODED_TAGS.META.ICON_MARK.length)]?h+=2:h++}if(0===b){if(g=(0,k.indexOfUint8Array)(d,j.ENCODED_TAGS.CLOSED.HEAD),-1!==f){if(f<g){let a=new Uint8Array(d.length-h);a.set(d.subarray(0,f)),a.set(d.subarray(f+h),f),d=a}else{let b=await a(),c=p.encode(b),e=c.length,g=new Uint8Array(d.length-h+e);g.set(d.subarray(0,f)),g.set(c,f),g.set(d.subarray(f+h),f+e),d=g}c=!0}}else{let b=await a(),e=p.encode(b),g=e.length,i=new Uint8Array(d.length-h+g);i.set(d.subarray(0,f)),i.set(e,f),i.set(d.subarray(f+h),f+g),d=i,c=!0}e.enqueue(d)}})}function A(a){let b=!1,c=!1;return new TransformStream({async transform(d,e){c=!0;let f=await a();if(b){if(f){let a=p.encode(f);e.enqueue(a)}e.enqueue(d)}else{let a=(0,k.indexOfUint8Array)(d,j.ENCODED_TAGS.CLOSED.HEAD);if(-1!==a){if(f){let b=p.encode(f),c=new Uint8Array(d.length+b.length);c.set(d.slice(0,a)),c.set(b,a),c.set(d.slice(a),a+b.length),e.enqueue(c)}else e.enqueue(d);b=!0}else f&&e.enqueue(p.encode(f)),e.enqueue(d),b=!0}},async flush(b){if(c){let c=await a();c&&b.enqueue(p.encode(c))}}})}async function B(){let a=await (0,n.computeCacheBustingSearchParam)("1","/_full",void 0,void 0),b=`${m.NEXT_RSC_UNION_QUERY}=${a}`,c=`<script>__NEXT_CLIENT_RESUME=fetch(location.pathname+'?${b}',{credentials:'same-origin',headers:{'${m.RSC_HEADER}': '1','${m.NEXT_ROUTER_PREFETCH_HEADER}': '1','${m.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER}': '/_full'}})</script>`,d=!1;return new TransformStream({transform(a,b){if(d)return void b.enqueue(a);let e=(0,k.indexOfUint8Array)(a,j.ENCODED_TAGS.CLOSED.HEAD);if(-1===e)return void b.enqueue(a);let f=p.encode(c),g=new Uint8Array(a.length+f.length);g.set(a.slice(0,e)),g.set(f,e),g.set(a.slice(e),e+f.length),b.enqueue(g),d=!0}})}async function C(a){let b="/_full",c=await (0,n.computeCacheBustingSearchParam)("1",b,void 0,void 0),d=`${m.NEXT_RSC_UNION_QUERY}=${c}`,e=null!==a?`self.__next_r=${JSON.stringify(a)};`:"",f=`<script>${e}self.__next_instant_test=fetch(location.pathname+'?${d}',{credentials:'same-origin',headers:{'${m.RSC_HEADER}':'1','${m.NEXT_ROUTER_PREFETCH_HEADER}':'1','${m.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER}':'${b}','${m.NEXT_INSTANT_PREFETCH_HEADER}':'1'}})</script>`,g=!1;return new TransformStream({transform(a,b){if(g)return void b.enqueue(a);let c=(0,k.indexOfUint8Array)(a,j.ENCODED_TAGS.OPENING.HEAD);if(-1===c)return void b.enqueue(a);let d=a.indexOf(62,c+j.ENCODED_TAGS.OPENING.HEAD.length);if(-1===d)return void b.enqueue(a);let e=p.encode(f),h=d+1,i=new Uint8Array(a.length+e.length);i.set(a.slice(0,h)),i.set(e,h),i.set(a.slice(h),h+e.length),b.enqueue(i),g=!0},flush(a){a.enqueue(j.ENCODED_TAGS.CLOSED.BODY_AND_HTML)}})}function D(a,b){let c=!1,d=null,e=!1;function f(a){return d||(d=g(a)),d}async function g(d){let f=a.getReader();b&&await (0,i.atLeastOneTask)();try{for(;;){let{done:a,value:g}=await f.read();if(a){e=!0;return}b||c||await (0,i.atLeastOneTask)(),d.enqueue(g)}}catch(a){d.error(a)}}return new TransformStream({start(a){b||f(a)},transform(a,c){c.enqueue(a),b&&f(c)},flush(a){if(c=!0,!e)return f(a)}})}let E="</body></html>";function F(){let a=!1;return new TransformStream({transform(b,c){if(a)return c.enqueue(b);let d=(0,k.indexOfUint8Array)(b,j.ENCODED_TAGS.CLOSED.BODY_AND_HTML);if(d>-1){if(a=!0,b.length===j.ENCODED_TAGS.CLOSED.BODY_AND_HTML.length)return;let e=b.slice(0,d);if(c.enqueue(e),b.length>j.ENCODED_TAGS.CLOSED.BODY_AND_HTML.length+d){let a=b.slice(d+j.ENCODED_TAGS.CLOSED.BODY_AND_HTML.length);c.enqueue(a)}}else c.enqueue(b)},flush(a){a.enqueue(j.ENCODED_TAGS.CLOSED.BODY_AND_HTML)}})}function G(a){let b=!1;return new TransformStream({transform(c,d){if(b)return void d.enqueue(c);let e=(0,k.indexOfUint8Array)(c,j.ENCODED_TAGS.OPENING.HTML);if(-1===e)return void d.enqueue(c);let f=e+j.ENCODED_TAGS.OPENING.HTML.length,g=` data-dpl-id="${a}"`,h=p.encode(g),i=new Uint8Array(c.length+h.length);i.set(c.subarray(0,f)),i.set(h,f),i.set(c.subarray(f),f+h.length),d.enqueue(i),b=!0}})}function H(){let a=!1,b=!1;return new TransformStream({async transform(c,d){!a&&(0,k.indexOfUint8Array)(c,j.ENCODED_TAGS.OPENING.HTML)>-1&&(a=!0),!b&&(0,k.indexOfUint8Array)(c,j.ENCODED_TAGS.OPENING.BODY)>-1&&(b=!0),d.enqueue(c)},flush(c){let d=[];a||d.push("html"),b||d.push("body"),d.length&&c.enqueue(p.encode(`<html id="__next_error__">
|
|
4
|
+
- Rerun the production build with \`next build --debug-prerender\` to generate better stack traces.`)}function ah(a,b,c,d){if(d.syncDynamicErrorWithStack)throw ag(a,d.syncDynamicErrorWithStack),new k.StaticGenBailoutError;if(0!==b){if(c.hasSuspenseAboveBody)return;let d=c.dynamicErrors;if(d.length>0){for(let b=0;b<d.length;b++)ag(a,d[b]);throw new k.StaticGenBailoutError}if(c.hasDynamicViewport)throw console.error(`Route "${a.route}" has a \`generateViewport\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`),new k.StaticGenBailoutError;if(1===b)throw console.error(`Route "${a.route}" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`),new k.StaticGenBailoutError}else if(!1===c.hasAllowedDynamic&&c.hasDynamicMetadata)throw console.error(`Route "${a.route}" has a \`generateMetadata\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`),new k.StaticGenBailoutError}function ai(a,b,c,d){if(d||c.hasSuspenseAboveBody)return[];if(0!==b){let d=c.dynamicErrors;if(d.length>0)return d;if(1===b)return[Object.defineProperty(new r.InvariantError(`Route "${a.route}" did not produce a static shell and Next.js was unable to determine a reason.`),"__NEXT_ERROR_CODE",{value:"E936",enumerable:!1,configurable:!0})]}else if(!1===c.hasAllowedDynamic&&0===c.dynamicErrors.length&&c.dynamicMetadata)return[c.dynamicMetadata];return[]}function aj(a,b,c,d,e){if(d){let{missingSampleErrors:a}=d;if(a.length>0)return a}let{validationPreventingErrors:f}=c;if(f.length>0)return f;if(e.renderedIds.size<e.expectedIds.size){let{thrownErrorsOutsideBoundary:b,createInstantStack:d}=c;if(0===b.length){let b=`Route "${a.route}": Could not validate \`unstable_instant\` because the target segment was prevented from rendering for an unknown reason.`,c=null!==d?d():Error();return c.name="Error",c.message=b,[c]}if(1===b.length){let c=`Route "${a.route}": Could not validate \`unstable_instant\` because the target segment was prevented from rendering, likely due to the following error.`,e=null!==d?d():Error();return e.name="Error",e.message=c,[e,b[0]]}{let c=`Route "${a.route}": Could not validate \`unstable_instant\` because the target segment was prevented from rendering, likely due to one of the following errors.`,e=null!==d?d():Error();return e.name="Error",e.message=c,[e,...b]}}if(0!==b){let d=c.dynamicErrors;if(d.length>0)return d;if(1===b)return c.hasAllowedClientDynamicAboveBoundary?[]:[Object.defineProperty(new r.InvariantError(`Route "${a.route}" failed to render during instant validation and Next.js was unable to determine a reason.`),"__NEXT_ERROR_CODE",{value:"E1055",enumerable:!1,configurable:!0})]}else{let a=c.dynamicErrors;if(a.length>0)return a;if(!1===c.hasAllowedDynamic&&c.dynamicMetadata)return[c.dynamicMetadata]}return[]}},9237:(a,b,c)=>{"use strict";let d;c.r(b),c.d(b,{default:()=>be,handler:()=>bd});var e={};c.r(e),c.d(e,{config:()=>a6,default:()=>a5}),require("next/dist/build/adapter/setup-node-env.external");var f=c(32648),g=c(76309),h=c(88771),i=c(62940),j=c(59339),k=c(85304);c(56840),c(95160);var l=c(14429);async function m(a){if(!a||"string"!=typeof a)return null;let b=(await (0,j.c)()).get("SELECT * FROM mcpGatewayKeys WHERE key = ?",[a]);return b&&(1===b.isActive||!0===b.isActive)?b?{id:b.id,name:b.name??null,key:b.key,machineId:b.machineId,isActive:1===b.isActive||!0===b.isActive,createdAt:b.createdAt}:null:null}var n=c(71509);(0,n.U)("modelAliases"),(0,n.U)("customModels"),(0,n.U)("mitmAlias"),c(36241);var o=c(77598),p=c.n(o),q=c(94735);c(91117),global._pendingRequests||(global._pendingRequests={byModel:{},byAccount:{}}),global._lastErrorProvider||(global._lastErrorProvider={provider:"",ts:0}),global._statsEmitter||(global._statsEmitter=new q.EventEmitter,global._statsEmitter.setMaxListeners(50)),global._pendingTimers||(global._pendingTimers={}),global._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0}),global._statsEmitTimers||(global._statsEmitTimers={pending:null,update:null}),global._pendingRequests,global._lastErrorProvider,global._pendingTimers,global._recentRing,global._connectionMapCache,global._statsEmitTimers,global._statsEmitter;var r=c(33323),s=c(85612);let t=null,u=0;function v(a,b){let c=a[b];return void 0===c||""===c.trim()?null:"true"===c.trim().toLowerCase()}async function w(){if(t&&Date.now()-u<5e3)return t;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,85304)),b=await a();t={enabled:function(a,b=process.env){let c=v(b,"OBSERVABILITY_ENABLED");if(null!==c)return c;let d=v(b,"ENABLE_REQUEST_LOGS");return null!==d?d:a?.enableObservability===!0}(b),maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10))}}catch{t={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120}}return u=Date.now(),t}let x=[],y=null,z=!1;function A(a,b){let c=JSON.stringify(a||{});return c.length>b?{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}:a||{}}function B(a,b){let c=A(a,b);return c?._truncated&&a&&"object"==typeof a&&void 0!==a.tools?{...c,tools:A(a.tools,65536)}:c}async function C(){if(!z&&0!==x.length){z=!0;try{for(;x.length>0;){let a=x.splice(0,x.length),b=await (0,j.c)(),c=await w();b.transaction(()=>{for(let d of a){d.id||(d.id=function(a){let b=new Date().toISOString(),c=Math.random().toString(36).substring(2,8),d=a?a.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown";return`${b}-${c}-${d}`}(d.model)),d.timestamp||(d.timestamp=new Date().toISOString()),d.request?.headers&&(d.request.headers=function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(d.request.headers));let a={id:d.id,provider:d.provider||null,model:d.model||null,connectionId:d.connectionId||null,timestamp:d.timestamp,status:d.status||null,latency:d.latency||{},tokens:d.tokens||{},request:B(d.request,c.maxJsonSize),providerRequest:B(d.providerRequest,c.maxJsonSize),providerResponse:A(d.providerResponse,c.maxJsonSize),response:A(d.response,c.maxJsonSize),pxpipe:d.pxpipe||void 0,convoy:d.convoy||void 0};b.run("INSERT INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET timestamp = excluded.timestamp, provider = excluded.provider, model = excluded.model, connectionId = excluded.connectionId, status = excluded.status, data = excluded.data",[a.id,a.timestamp,a.provider,a.model,a.connectionId,a.status,(0,r.s)(a)])}let d=b.get("SELECT COUNT(*) as c FROM requestDetails");d&&d.c>c.maxRecords&&b.run("DELETE FROM requestDetails WHERE id IN (SELECT id FROM requestDetails ORDER BY timestamp ASC LIMIT ?)",[d.c-c.maxRecords])})}}catch(a){console.error("[requestDetailsRepo] Batch write failed:",a)}finally{z=!1}}}let D=async()=>{y&&(clearTimeout(y),y=null),x.length>0&&await C()};(0,s.Bb)(D);var E=c(2886),F=c(73024),G=c.n(F),H=c(76760),I=c.n(H),J=c(72045);let K=I().join(J.n,"machine-id"),L=I().join(J.n,"auth"),M=I().join(L,"cli-secret"),N=null,O=null;async function P(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(N)return N;try{if(N=G().readFileSync(K,"utf8").trim())return N}catch{}try{N=(0,E.machineIdSync)()}catch{N=p().randomUUID()}try{G().mkdirSync(J.n,{recursive:!0}),G().writeFileSync(K,N,{mode:384})}catch{}return N}(),d="9r-cli-auth"===b?function(){if(O)return O;try{if(O=G().readFileSync(M,"utf8").trim())return O}catch{}O=p().randomBytes(32).toString("hex");try{G().mkdirSync(L,{recursive:!0}),G().writeFileSync(M,O,{mode:384})}catch{}return O}():"";return p().createHash("sha256").update(c+b+d).digest("hex").substring(0,16)}let Q=(a,b="algorithm.name")=>TypeError(`CryptoKey does not support this operation, its ${b} must be ${a}`);async function R(a,b,c){return b instanceof Uint8Array?crypto.subtle.importKey("raw",b,a.subtle,!1,[c]):(!function(a,b,c){let d=a.algorithm;if(d.name!==b.name)throw Q(b.name);if(b.hash&&d.hash?.name!==b.hash)throw Q(b.hash,"algorithm.hash");if(b.namedCurve&&d.namedCurve!==b.namedCurve)throw Q(b.namedCurve,"algorithm.namedCurve");if(void 0!==b.length&&d.length!==b.length)throw Q(b.length,"algorithm.length");if(c&&!a.usages.includes(c))throw TypeError(`CryptoKey does not support this operation, its usages must include ${c}.`)}(b,a.subtle,c),a.minRsaBits&&function(a,b){let{modulusLength:c}=b.algorithm;if("number"!=typeof c||c<2048)throw TypeError(`${a} requires key modulusLength to be 2048 bits or larger`)}(a.alg,b),b)}async function S(a,b,c,d){let e=await R(a,b,"verify");try{return await crypto.subtle.verify(a.signing,e,c,d)}catch{return!1}}class T extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(a,b){super(a,b),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}}class U extends T{static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(a,b,c="unspecified",d="unspecified"){super(a,{cause:{claim:c,reason:d,payload:b}}),this.claim=c,this.reason=d,this.payload=b}}class V extends T{static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(a,b,c="unspecified",d="unspecified"){super(a,{cause:{claim:c,reason:d,payload:b}}),this.claim=c,this.reason=d,this.payload=b}}class W extends T{static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"}class X extends T{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"}class Y extends T{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"}class Z extends T{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"}class $ extends T{[Symbol.asyncIterator]=async function*(){};static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(a="multiple matching keys found in the JSON Web Key Set",b){super(a,b)}}class _ extends T{static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(a="signature verification failed",b){super(a,b)}}let aa=[["verify"],["sign"]];function ab(a){let b={name:"HMAC",hash:`SHA-${a}`};return{kty:["oct"],secret:!0,subtle:b,signing:b,usages:aa}}function ac(a,b){let c={name:b?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:`SHA-${a}`};return{kty:["RSA"],subtle:c,signing:b?{...c,saltLength:b}:c,usages:aa,minRsaBits:2048}}function ad(a,b){return{kty:["EC"],crv:a,subtle:{name:"ECDSA",namedCurve:a},signing:{name:"ECDSA",hash:`SHA-${b}`},usages:aa}}function ae(){let a={name:"Ed25519"};return{kty:["OKP"],crv:"Ed25519",subtle:a,signing:a,usages:aa}}function af(a){let b={name:`ML-DSA-${a}`};return{kty:["AKP"],subtle:b,signing:b,usages:aa}}let ag=function(a){let b={__proto__:null};for(let c in a)b[c]={...a[c],alg:c};return b}({HS256:ab(256),HS384:ab(384),HS512:ab(512),RS256:ac(256),RS384:ac(384),RS512:ac(512),PS256:ac(256,32),PS384:ac(384,48),PS512:ac(512,64),ES256:ad("P-256",256),ES384:ad("P-384",384),ES512:ad("P-521",512),EdDSA:ae(),Ed25519:ae(),"ML-DSA-44":af(44),"ML-DSA-65":af(65),"ML-DSA-87":af(87)}),ah=new TextEncoder,ai=new TextDecoder,aj=new TextDecoder("utf-8",{fatal:!0});function ak(a){let b=new Uint8Array(a.length);for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);if(d>127)throw TypeError("non-ASCII string encountered in encode()");b[c]=d}return b}let al="The input to be decoded is not correctly encoded.";function am(a){if(Uint8Array.fromBase64)try{return Uint8Array.fromBase64("string"==typeof a?a:ai.decode(a),{alphabet:"base64url"})}catch(a){throw TypeError(al,{cause:a})}let b=a;if(b instanceof Uint8Array&&(b=ai.decode(b)),b.includes("+")||b.includes("/"))throw TypeError(al);b=b.replace(/-/g,"+").replace(/_/g,"/");try{var c=b;if(Uint8Array.fromBase64)return Uint8Array.fromBase64(c);let a=atob(c),d=new Uint8Array(a.length);for(let b=0;b<a.length;b++)d[b]=a.charCodeAt(b);return d}catch{throw TypeError(al)}}function an(a){if("object"!=typeof a||null===a||"[object Object]"!==Object.prototype.toString.call(a))return!1;let b=Object.getPrototypeOf(a);if(null===b)return!0;let c=b;for(;null!==Object.getPrototypeOf(c);)c=Object.getPrototypeOf(c);return b===c}function ao(a,b,c){try{return am(a)}catch{throw new c(`Failed to base64url decode the ${b}`)}}Symbol();let ap={__proto__:null,b64:!0},aq=(a,b,...c)=>(function(a,b,...c){if(c.length>2){let b=c.pop();a+=`one of type ${c.join(", ")}, or ${b}.`}else 2===c.length?a+=`one of type ${c[0]} or ${c[1]}.`:a+=`of type ${c[0]}.`;return null==b?a+=` Received ${b}`:"function"==typeof b&&b.name?a+=` Received function ${b.name}`:"object"==typeof b&&null!=b&&b.constructor?.name&&(a+=` Received an instance of ${b.constructor.name}`),a})(`Key for the ${a} algorithm must be `,b,...c),ar=a=>{if(a?.[Symbol.toStringTag]==="CryptoKey")return!0;try{return a instanceof CryptoKey}catch{return!1}};async function as(a,b){if("RSA"===b.kty&&"oth"in b&&void 0!==b.oth)throw new X('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');if(!a.kty.includes(b.kty))throw new X('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');let c=a.resolve?.({kty:b.kty,crv:b.crv})??a.subtle,d=!!(b.d||b.priv),e={...b};return"AKP"!==e.kty&&delete e.alg,delete e.use,crypto.subtle.importKey("jwk",e,c,b.ext??!d,b.key_ops??a.usages[+!!d])}let at=a=>a[Symbol.toStringTag],au={__proto__:null,prime256v1:"P-256",secp384r1:"P-384",secp521r1:"P-521"};function av(a,b,c){let e=(d||=new WeakMap).get(a);return c&&(e?e[b]=c:d.set(a,{[b]:c})),c??e?.[b]}let aw=async(a,b,c)=>av(a,c.alg)??av(a,c.alg,await as(c,{...b,alg:c.alg}));async function ax(a,b,c){let d=function(a,b,c){let{alg:d,secret:e}=a,f="decrypt"===c||"sign"===c;if(e&&b instanceof Uint8Array)return[0,b];if(an(b)&&"string"==typeof b.kty){if(e?"oct"!==b.kty||"string"!=typeof b.k:!(f?"oct"!==b.kty&&("AKP"===b.kty&&"string"==typeof b.priv||"string"==typeof b.d):"oct"!==b.kty&&void 0===b.d&&void 0===b.priv))throw TypeError(e?'JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present':`JSON Web Key for this operation must be a ${f?"private":"public"} JWK`);return((a,b,c)=>{let{alg:d}=a;if(void 0!==b.use){let a="sign"===c||"verify"===c?"sig":"enc";if(b.use!==a)throw TypeError(`Invalid key for this operation, its "use" must be "${a}" when present`)}if(void 0!==b.alg&&b.alg!==d)throw TypeError(`Invalid key for this operation, its "alg" must be "${d}" when present`);if(Array.isArray(b.key_ops)){let d="encrypt"===c||"decrypt"===c?a.ops?.[+("encrypt"!==c)]:c;if(d&&!b.key_ops.includes(d))throw TypeError(`Invalid key for this operation, its "key_ops" must include "${d}" when present`)}})(a,b,c),[3,b]}if(!(ar(b)||b?.[Symbol.toStringTag]==="KeyObject"))throw TypeError(e?aq(d,b,"CryptoKey","KeyObject","JSON Web Key","Uint8Array"):aq(d,b,"CryptoKey","KeyObject","JSON Web Key"));if(e){if("secret"!==b.type)throw TypeError(`${at(b)} instances for symmetric algorithms must be of type "secret"`)}else{if("secret"===b.type)throw TypeError(`${at(b)} instances for asymmetric algorithms must not be of type "secret"`);let a=f?"private":"public";if(("public"===b.type||"private"===b.type)&&b.type!==a){let d="sign"===c?"signing":"verify"===c?"verifying":`${c.slice(0,-1)}tion`;throw TypeError(`${at(b)} instances for asymmetric algorithm ${d} must be of type "${a}"`)}}return ar(b)?[1,b]:[2,b]}(a,b,c);switch(d[0]){case 0:case 1:return d[1];case 3:{let b=d[1];if(b.k)return am(b.k);if(!Object.isFrozen(b)){let{key_ops:a}=b;Array.isArray(a)&&Object.freeze(a),Object.freeze(b)}return aw(b,b,a)}case 2:{let b=d[1];if("secret"===b.type)return b.export();if("toCryptoKey"in b&&"function"==typeof b.toCryptoKey)return((a,b)=>{let c=av(a,b.alg);if(c)return c;let d="public"===a.type,e=b.usages[+!d],{asymmetricKeyType:f}=a,g=au[a.asymmetricKeyDetails?.namedCurve],h=b.resolve?.({crv:g,asymmetricKeyType:f})??b.subtle;return av(a,b.alg,a.toCryptoKey(h,d,e))})(b,a);return aw(b,b.export({format:"jwk"}),a)}}}async function ay(a,b,c){let d,{protected:e,header:f,payload:g}=a,h={};if(e&&(h=function(a,b,c){let d;try{d=JSON.parse(aj.decode(am(a)))}catch{throw new b(c)}if(!an(d))throw new b(c);return d}(e,Y,"JWS Protected Header is invalid")),void 0!==f){if(!function(...a){let b=new Set;for(let c of a)if(c)for(let a of Object.keys(c)){if(b.has(a))return!1;b.add(a)}return!0}(h,f))throw new Y("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");d={...h,...f}}else d=h;let i=function(a,b,c,d,e){if(void 0!==e.crit&&d?.crit===void 0)throw new a('"crit" (Critical) Header Parameter MUST be integrity protected');if(!d||void 0===d.crit)return[];if(!Array.isArray(d.crit)||0===d.crit.length||d.crit.some(a=>"string"!=typeof a||0===a.length))throw new a('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');let f=void 0===c?b:{__proto__:null,...c,...b};for(let b of d.crit){if(!(b in f))throw new X(`Extension Header Parameter "${b}" is not recognized`);if(!Object.hasOwn(e,b)||void 0===e[b])throw new a(`Extension Header Parameter "${b}" is missing`);if(f[b]&&(!Object.hasOwn(d,b)||void 0===d[b]))throw new a(`Extension Header Parameter "${b}" MUST be integrity protected`)}return d.crit}(Y,ap,b[1],h,d),j=!0;if(i.includes("b64")&&"boolean"!=typeof(j=h.b64))throw new Y('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:k}=d;if("string"!=typeof k||!k)throw new Y('JWS "alg" (Algorithm) Header Parameter missing or invalid');if(b[0]&&!b[0].has(k))throw new W('"alg" (Algorithm) Header Parameter value not allowed');if(j){if("string"!=typeof g)throw new Y("JWS Payload must be a string")}else if("string"!=typeof g&&!(g instanceof Uint8Array))throw new Y("JWS Payload must be a string or an Uint8Array instance");let l=!1;"function"==typeof c&&(c=await c(h,a),l=!0);let m=function(a){let b=ag[a];if(!b)throw new X(`alg ${a} is not supported either by JOSE or your javascript runtime`);return b}(k),n=function(...a){let b=new Uint8Array(a.reduce((a,{length:b})=>a+b,0)),c=0;for(let d of a)b.set(d,c),c+=d.length;return b}(void 0!==e?ak(e):new Uint8Array,ak("."),"string"==typeof g?j?b[2]??=function(a,b,c){try{return ak(a)}catch{throw new c(`The ${b} is not a valid base64url string`)}}(g,"payload",Y):ah.encode(g):g),o=ao(a.signature,"signature",Y),p=await ax(m,c,"verify");if(!await S(m,p,o,n))throw new _;return[j?ao(g,"payload",Y):"string"==typeof g?ah.encode(g):g,h,j,p,l]}async function az(a,b,c){if(a instanceof Uint8Array&&(a=ai.decode(a)),"string"!=typeof a)throw new Y("Compact JWS must be a string or Uint8Array");let{0:d,1:e,2:f,length:g}=a.split(".");if(3!==g)throw new Y("Invalid Compact JWS");return ay({payload:e,protected:d,signature:f},b,c)}let aA={s:1,m:60,h:3600,d:86400,w:604800,y:0x1e187e0},aB=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i,aC="check_failed";function aD(a){let b=aB.exec(a);if(!b||b[4]&&b[1])throw TypeError("Invalid time period format");let c=Math.round(parseFloat(b[2])*aA[b[3][0].toLowerCase()]);return"-"===b[1]||"ago"===b[4]?-c:c}function aE(a,b){if(!Number.isFinite(b))throw TypeError(`Invalid ${a} input`);return b}let aF=a=>a.includes("/")?a.toLowerCase():`application/${a.toLowerCase()}`;function aG(a,b,c=!1){let d=a[b];if(void 0!==d||c){if("number"!=typeof d)throw new U(`"${b}" claim must be a number`,a,b,"invalid");return d}}function aH(a,b){throw new U(`unexpected "${b}" claim value`,a,b,aC)}async function aI(a,b,c){let d=await az(a,[c&&function(a,b){if(void 0!==b&&(!Array.isArray(b)||b.some(a=>"string"!=typeof a)))throw TypeError(`"${a}" option must be an array of strings`);if(b)return new Set(b)}("algorithms",c.algorithms),c?.crit],b);if(!d[2])throw new Z("JWTs MUST NOT use unencoded payload");let e={payload:function(a,b,c={}){var d,e;let f;try{f=JSON.parse(aj.decode(b))}catch{}if(!an(f))throw new Z("JWT Claims Set must be a top-level JSON object");let{typ:g}=c;if(g&&("string"!=typeof a.typ||aF(a.typ)!==aF(g)))throw new U('unexpected "typ" JWT header value',f,"typ",aC);let{requiredClaims:h=[],issuer:i,subject:j,audience:k,maxTokenAge:l}=c,m=[...h];for(let a of(void 0!==l&&m.push("iat"),void 0!==k&&m.push("aud"),void 0!==j&&m.push("sub"),void 0!==i&&m.push("iss"),new Set(m.reverse())))if(!Object.hasOwn(f,a))throw new U(`missing required "${a}" claim`,f,a,"missing");void 0===i||(Array.isArray(i)?i:[i]).includes(f.iss)||aH(f,"iss"),void 0!==j&&f.sub!==j&&aH(f,"sub"),void 0===k||(d=f.aud,e="string"==typeof k?[k]:k,"string"==typeof d?e.includes(d):!!Array.isArray(d)&&e.some(a=>d.includes(a)))||aH(f,"aud");let{clockTolerance:n}=c,o=0;if("string"==typeof n)o=aD(n);else if(void 0!==n){if("number"!=typeof n)throw TypeError("Invalid clockTolerance option type");o=n}aE("clockTolerance option",o);let{currentDate:p}=c,q=aE("currentDate option",Math.floor((p||new Date).getTime()/1e3)),r=aG(f,"iat",void 0!==l),s=aG(f,"nbf");if(void 0!==s&&s>q+o)throw new U('"nbf" claim timestamp check failed',f,"nbf",aC);let t=aG(f,"exp");if(void 0!==t&&t<=q-o)throw new V('"exp" claim timestamp check failed',f,"exp",aC);if(void 0!==l){let a=q-r;if(a-o>("number"==typeof l?l:aD(l)))throw new V('"iat" claim timestamp check failed (too far in the past)',f,"iat",aC);if(a<0-o)throw new U('"iat" claim timestamp check failed (it should be in the past)',f,"iat",aC)}return f}(d[1],d[0],c),protectedHeader:d[1]};return"function"==typeof b?{...e,key:d[3]}:e}c(55511);"function"==typeof setImmediate||"object"==typeof scheduler&&"function"==typeof scheduler.postTask&&scheduler.postTask.bind(scheduler);let aJ=new TextEncoder().encode(function(){if(process.env.JWT_SECRET)return process.env.JWT_SECRET;let a=I().join(J.n,"jwt-secret");try{let b=G().readFileSync(a,"utf8").trim();if(b)return b}catch{}try{G().mkdirSync(J.n,{recursive:!0});let b=p().randomBytes(32).toString("hex");return G().writeFileSync(a,b,{mode:384}),b}catch{return"ezrouter-fallback-jwt-secret-key-32-chars-minimum"}}()),aK="ezrouter_auth_token";async function aL(a){if(!a)return!1;try{return await aI(a,aJ),!0}catch{return!1}}function aM(a){let b=process.env.NINEROUTER_PEER_TOKEN;return!!b&&a.headers.get("x-9r-peer-token")===b}let aN=null;async function aO(){return aN||(aN=await P("9r-cli-auth")),aN}async function aP(a){let b=a.headers.get("x-9r-cli-token");return!!b&&b===await aO()}let aQ=["/api/health","/api/init","/api/locale","/api/auth/login","/api/auth/logout","/api/auth/status","/api/auth/oidc","/api/auth/saml","/api/version","/api/changelog","/api/settings/require-login"],aR=["/v1","/v1beta","/api/v1","/api/v1beta","/codex","/responses"],aS=["/api/shutdown","/api/settings/database","/api/version/shutdown","/api/version/update"],aT=["/api/cli-tools/cowork-settings","/api/cli-tools/antigravity-mitm","/api/mcp/","/api/tunnel/tailscale-install","/api/tunnel/tailscale-enable","/api/tunnel/tailscale-disable","/api/tunnel/tailscale-check","/api/tunnel/enable","/api/tunnel/disable","/api/oauth/cursor/auto-import","/api/oauth/kiro/auto-import","/api/auth/reset-password","/api/headroom/start","/api/headroom/stop","/api/headroom/proxy","/api/headroom/extras","/api/headroom/restart","/api/pxpipe"],aU=new Set(["localhost","127.0.0.1","::1"]);function aV(a){if(!a)return!1;let b=String(a).trim().toLowerCase();if(b.startsWith("[")){let a=b.indexOf("]");if(-1===a)return!1;b=b.slice(1,a)}else -1!==b.indexOf(":")&&b.indexOf(":")===b.lastIndexOf(":")&&(b=b.slice(0,b.indexOf(":")));return b.startsWith("::ffff:")&&(b=b.slice(7)),aU.has(b)}function aW(a){if(a.headers.get("x-9r-via-proxy")||!aM(a)||!aV(a.headers.get("x-9r-real-ip")))return!1;let b=a.headers.get("origin");if(b)try{if(!aV(new URL(b).hostname))return!1}catch{return!1}return!0}function aX(a){return aR.some(b=>a===b||a.startsWith(`${b}/`))}function aY(a){let b=[],c=a=>{a&&!b.includes(a)&&b.push(a)},d=a.headers.get("Authorization");d?.startsWith("Bearer ")&&c(d.slice(7).trim());let e=a.headers.get("x-api-key");e&&c(e.trim());let f=a.headers.get("x-goog-api-key");f&&c(f.trim());let g=a.nextUrl?.searchParams?.get("key");return g&&c(g.trim()),b}async function aZ(a){let b=aY(a);if(0===b.length)return!1;for(let a of b)if(await (0,l.validateApiKey)(a))return!0;return!1}async function a$(a){let b=aY(a)[0]||null;return!!b&&!!await m(b)}async function a_(a){return!!(aM(a)&&aV(a.headers.get("x-9r-real-ip"))||await aP(a))||await aZ(a)}async function a0(a){return!!(await aP(a)||aW(a)&&await a3(a))}async function a1(a){let b=a.cookies?.get?.(aK)?.value||a.cookies?.get?.("auth_token")?.value;return await aL(b)}async function a2(){try{return await (0,k.getSettings)()}catch{return null}}async function a3(a){if(await a1(a))return!0;let b=await a2();return!!b&&!1===b.requireLogin}async function a4(a){let{pathname:b}=a.nextUrl;if(aT.some(a=>b.startsWith(a))&&!await a0(a))return i.NextResponse.json({error:"Local only: CLI token required"},{status:403});if(aS.some(a=>b.startsWith(a)))return await aP(a)||await a1(a)?i.NextResponse.next():i.NextResponse.json({error:"Unauthorized"},{status:401});if("OPTIONS"===a.method&&aX(b)){let b=a.headers.get("access-control-request-headers");return i.NextResponse.json(null,{status:204,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":b||"*","Access-Control-Max-Age":"86400"}})}if(aX(b))return"OPTIONS"===a.method||await a_(a)?i.NextResponse.next():i.NextResponse.json("/v1/messages"===b||"/api/v1/messages"===b?{type:"error",error:{type:"authentication_error",message:"API key required for remote API access"}}:{error:"API key required for remote API access"},{status:401});if("/api/mcp-gateway"===b||"/api/mcp-gateway/sse"===b||"/api/mcp-gateway/message"===b)return aW(a)||await aP(a)||await a$(a)?i.NextResponse.next():i.NextResponse.json({error:"gateway key required"},{status:401});if(b.startsWith("/api/mcp-gateway/oauth/")&&b.endsWith("/client-metadata"))return i.NextResponse.next();if(b.startsWith("/api/"))return aX(b)||aQ.some(a=>b===a||b.startsWith(`${a}/`))||await aP(a)||await a3(a)?i.NextResponse.next():i.NextResponse.json({error:"Unauthorized"},{status:401});if(b.startsWith("/dashboard")){let b=!0;try{let c=await a2();if(c&&(b=!1!==c.requireLogin,!0!==c.tunnelDashboardAccess)){let b=(a.headers.get("host")||"").split(":")[0].toLowerCase(),d=c.tunnelUrl?new URL(c.tunnelUrl).hostname.toLowerCase():"",e=c.tailscaleUrl?new URL(c.tailscaleUrl).hostname.toLowerCase():"";if(d&&b===d||e&&b===e)return i.NextResponse.redirect(new URL("/login",a.url))}}catch{}if(!b)return i.NextResponse.next();let c=a.cookies.get(aK)?.value||a.cookies.get("auth_token")?.value;return c&&await aL(c)?i.NextResponse.next():i.NextResponse.redirect(new URL("/login",a.url))}return"/"===b?i.NextResponse.redirect(new URL("/dashboard",a.url)):i.NextResponse.next()}async function a5(a){return a4(a)}let a6={matcher:["/((?!_next/static|_next/image|favicon\\.ico).*)"]};c(6365);var a7=c(99751);let a8={...e},a9="/src/proxy",ba=(0,a8.proxy||a8.default);class bb extends Error{constructor(a){super(a),this.stack=""}}if("function"!=typeof ba)throw new bb(`The Proxy file "${a9}" must export a function named \`proxy\` or a default function.`);let bc=a=>(0,g.adapter)({...a,IncrementalCache:h.IncrementalCache,incrementalCacheHandler:null,page:a9,handler:async(...a)=>{try{return await ba(...a)}catch(e){let b=a[0],c=new URL(b.url),d=c.pathname+c.search;throw await (0,f.edgeInstrumentationOnRequestError)(e,{path:d,method:b.method,headers:Object.fromEntries(b.headers.entries())},{routerKind:"Pages Router",routePath:"/proxy",routeType:"proxy",revalidateReason:void 0}),e}}});async function bd(a,b){let c=await bc({request:{url:a.url,method:a.method,headers:(0,a7.toNodeOutgoingHttpHeaders)(a.headers),nextConfig:{basePath:"",i18n:"",trailingSlash:!1,experimental:{cacheLife:{default:{stale:300,revalidate:900,expire:0xfffffffe},seconds:{stale:30,revalidate:1,expire:60},minutes:{stale:300,revalidate:60,expire:3600},hours:{stale:300,revalidate:3600,expire:86400},days:{stale:300,revalidate:86400,expire:604800},weeks:{stale:300,revalidate:604800,expire:2592e3},max:{stale:300,revalidate:2592e3,expire:31536e3}},authInterrupts:!1,clientParamParsingOrigins:[]}},page:{name:a9},body:"GET"!==a.method&&"HEAD"!==a.method?a.body??void 0:void 0,waitUntil:b.waitUntil,requestMeta:b.requestMeta,signal:b.signal||new AbortController().signal}});return null==b.waitUntil||b.waitUntil.call(b,c.waitUntil),c.response}let be=bc},9913:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"LRUCache",{enumerable:!0,get:function(){return e}});class c{constructor(a,b,c){this.prev=null,this.next=null,this.key=a,this.data=b,this.size=c}}class d{constructor(){this.prev=null,this.next=null}}class e{constructor(a,b,c){this.cache=new Map,this.totalSize=0,this.maxSize=a,this.calculateSize=b,this.onEvict=c,this.head=new d,this.tail=new d,this.head.next=this.tail,this.tail.prev=this.head}addToHead(a){a.prev=this.head,a.next=this.head.next,this.head.next.prev=a,this.head.next=a}removeNode(a){a.prev.next=a.next,a.next.prev=a.prev}moveToHead(a){this.removeNode(a),this.addToHead(a)}removeTail(){let a=this.tail.prev;return this.removeNode(a),a}set(a,b){let d=(null==this.calculateSize?void 0:this.calculateSize.call(this,b))??1;if(d<=0)throw Object.defineProperty(Error(`LRUCache: calculateSize returned ${d}, but size must be > 0. Items with size 0 would never be evicted, causing unbounded cache growth.`),"__NEXT_ERROR_CODE",{value:"E1045",enumerable:!1,configurable:!0});if(d>this.maxSize)return console.warn("Single item size exceeds maxSize"),!1;let e=this.cache.get(a);if(e)e.data=b,this.totalSize=this.totalSize-e.size+d,e.size=d,this.moveToHead(e);else{let e=new c(a,b,d);this.cache.set(a,e),this.addToHead(e),this.totalSize+=d}for(;this.totalSize>this.maxSize&&this.cache.size>0;){let a=this.removeTail();this.cache.delete(a.key),this.totalSize-=a.size,null==this.onEvict||this.onEvict.call(this,a.key,a.data)}return!0}has(a){return this.cache.has(a)}get(a){let b=this.cache.get(a);if(b)return this.moveToHead(b),b.data}*[Symbol.iterator](){let a=this.head.next;for(;a&&a!==this.tail;){let b=a;yield[b.key,b.data],a=a.next}}remove(a){let b=this.cache.get(a);b&&(this.removeNode(b),this.cache.delete(a),this.totalSize-=b.size)}get size(){return this.cache.size}get currentSize(){return this.totalSize}}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11042:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={INTERCEPTION_ROUTE_MARKERS:function(){return g},extractInterceptionRouteInformation:function(){return i},isInterceptionRouteAppPath:function(){return h}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(92539),g=["(..)(..)","(.)","(..)","(...)"];function h(a){return void 0!==a.split("/").find(a=>g.find(b=>a.startsWith(b)))}function i(a){let b,c,d;for(let e of a.split("/"))if(c=g.find(a=>e.startsWith(a))){[b,d]=a.split(c,2);break}if(!b||!c||!d)throw Object.defineProperty(Error(`Invalid interception route: ${a}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`),"__NEXT_ERROR_CODE",{value:"E269",enumerable:!1,configurable:!0});switch(b=(0,f.normalizeAppPath)(b),c){case"(.)":d="/"===b?`/${d}`:b+"/"+d;break;case"(..)":if("/"===b)throw Object.defineProperty(Error(`Invalid interception route: ${a}. Cannot use (..) marker at the root level, use (.) instead.`),"__NEXT_ERROR_CODE",{value:"E207",enumerable:!1,configurable:!0});d=b.split("/").slice(0,-1).concat(d).join("/");break;case"(...)":d="/"+d;break;case"(..)(..)":let e=b.split("/");if(e.length<=2)throw Object.defineProperty(Error(`Invalid interception route: ${a}. Cannot use (..)(..) marker at the root level or one level up.`),"__NEXT_ERROR_CODE",{value:"E486",enumerable:!1,configurable:!0});d=e.slice(0,-2).concat(d).join("/");break;default:throw Object.defineProperty(Error("Invariant: unexpected marker"),"__NEXT_ERROR_CODE",{value:"E112",enumerable:!1,configurable:!0})}return{interceptingRoute:b,interceptedRoute:d}}},12217:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={djb2Hash:function(){return e},hexHash:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});function e(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b+a.charCodeAt(c)|0;return b>>>0}function f(a){return e(a).toString(36).slice(0,5)}},12726:(a,b,c)=>{"use strict";let d,e;Object.defineProperty(b,"__esModule",{value:!0});var f={BubbledError:function(){return q},SpanKind:function(){return o},SpanStatusCode:function(){return n},getTracer:function(){return y},isBubbledError:function(){return r}};for(var g in f)Object.defineProperty(b,g,{enumerable:!0,get:f[g]});let h=c(88026),i=c(32053),j=process.env.NEXT_OTEL_PERFORMANCE_PREFIX;try{d=c(58930)}catch(a){d=c(58930)}let{context:k,propagation:l,trace:m,SpanStatusCode:n,SpanKind:o,ROOT_CONTEXT:p}=d;class q extends Error{constructor(a,b){super(),this.bubble=a,this.result=b}}function r(a){return"object"==typeof a&&null!==a&&a instanceof q}let s=(a,b)=>{r(b)&&b.bubble?a.setAttribute("next.bubble",!0):(b&&(a.recordException(b),a.setAttribute("error.type",b.name)),a.setStatus({code:n.ERROR,message:null==b?void 0:b.message})),a.end()},t=new Map,u=d.createContextKey("next.rootSpanId"),v=0,w={set(a,b,c){a.push({key:b,value:c})}};class x{getTracerInstance(){return m.getTracer("next.js","0.0.1")}getContext(){return k}getTracePropagationData(){let a=k.active(),b=[];return l.inject(a,b,w),b}getActiveScopeSpan(){return m.getSpan(null==k?void 0:k.active())}withPropagatedContext(a,b,c,d=!1){let e=k.active();if(d){let d=l.extract(p,a,c);if(m.getSpanContext(d))return k.with(d,b);let f=l.extract(e,a,c);return k.with(f,b)}if(m.getSpanContext(e))return b();let f=l.extract(e,a,c);return k.with(f,b)}trace(...a){let[b,c,d]=a,{fn:e,options:f}="function"==typeof c?{fn:c,options:{}}:{fn:d,options:{...c}},g=f.spanName??b;if(!h.NextVanillaSpanAllowlist.has(b)&&"1"!==process.env.NEXT_OTEL_VERBOSE||f.hideSpan)return e();let l=this.getSpanContext((null==f?void 0:f.parentSpan)??this.getActiveScopeSpan());l||(l=(null==k?void 0:k.active())??p);let m=l.getValue(u),n="number"!=typeof m||!t.has(m),o=v++;return f.attributes={"next.span_name":g,"next.span_type":b,...f.attributes},k.with(l.setValue(u,o),()=>this.getTracerInstance().startActiveSpan(g,f,a=>{let c;j&&b&&h.LogSpanAllowList.has(b)&&(c="performance"in globalThis&&"measure"in performance?globalThis.performance.now():void 0);let d=!1,g=()=>{!d&&(d=!0,t.delete(o),c&&performance.measure(`${j}:next-${(b.split(".").pop()||"").replace(/[A-Z]/g,a=>"-"+a.toLowerCase())}`,{start:c,end:performance.now()}))};if(n&&t.set(o,new Map(Object.entries(f.attributes??{}))),e.length>1)try{return e(a,b=>s(a,b))}catch(b){throw s(a,b),b}finally{g()}try{let b=e(a);if((0,i.isThenable)(b))return b.then(b=>(a.end(),b)).catch(b=>{throw s(a,b),b}).finally(g);return a.end(),g(),b}catch(b){throw s(a,b),g(),b}}))}wrap(...a){let b=this,[c,d,e]=3===a.length?a:[a[0],{},a[1]];return h.NextVanillaSpanAllowlist.has(c)||"1"===process.env.NEXT_OTEL_VERBOSE?function(){let a=d;"function"==typeof a&&"function"==typeof e&&(a=a.apply(this,arguments));let f=arguments.length-1,g=arguments[f];if("function"!=typeof g)return b.trace(c,a,()=>e.apply(this,arguments));{let d=b.getContext().bind(k.active(),g);return b.trace(c,a,(a,b)=>(arguments[f]=function(a){return null==b||b(a),d.apply(this,arguments)},e.apply(this,arguments)))}}:e}startSpan(...a){let[b,c]=a,d=this.getSpanContext((null==c?void 0:c.parentSpan)??this.getActiveScopeSpan());return this.getTracerInstance().startSpan(b,c,d)}getSpanContext(a){return a?m.setSpan(k.active(),a):void 0}getRootSpanAttributes(){let a=k.active().getValue(u);return t.get(a)}setRootSpanAttribute(a,b){let c=k.active().getValue(u),d=t.get(c);d&&!d.has(a)&&d.set(a,b)}withSpan(a,b){let c=m.setSpan(k.active(),a);return k.with(c,b)}}let y=(e=new x,()=>e)},14429:(a,b,c)=>{"use strict";c.r(b),c.d(b,{addKeySpend:()=>$,budgetPeriodMs:()=>Z,createApiKey:()=>U,deleteApiKey:()=>W,getApiKeyById:()=>S,getApiKeyBySecret:()=>Y,getApiKeyByValue:()=>T,getApiKeyScopeByKey:()=>ab,getApiKeys:()=>R,reserveApiKeyTokens:()=>_,settleApiKeyTokens:()=>aa,updateApiKey:()=>V,validateApiKey:()=>X});var d=c(43892),e=c(59339),f=c(21820);let g={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"};(function(a=(0,f.arch)()){})(),function(a=(0,f.platform)()){}();let h="https://daily-cloudcode-pa.googleapis.com",i="antigravity/ide/2.11.0 darwin/arm64",j={id:"antigravity",priority:20,alias:"ag",uiAlias:"ag",display:{name:"Antigravity",icon:"rocket_launch",color:"#F59E0B",website:"https://antigravity.google",notice:{signupUrl:"https://antigravity.google"},deprecated:!0,deprecationNotice:"RISK_NOTICE"},category:"oauth",serviceKinds:["llm","image","webSearch"],transport:{baseUrls:[h],format:"antigravity",forceStream:!0,headers:{"User-Agent":i},retry:{429:{attempts:6},500:{attempts:3},503:{attempts:3}},usage:{quotaApiUrl:`${h}/v1internal:fetchAvailableModels`,quotaSummaryApiUrl:`${h}/v1internal:retrieveUserQuotaSummary`,loadProjectApiUrl:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",tokenUrl:"https://oauth2.googleapis.com/token"},clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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"},models:[{id:"gemini-3.8-flash-high",name:"Gemini 3.8 Flash (High)",upstreamModelId:"gemini-3.8-flash-high(high)"},{id:"gemini-3.8-flash-medium",name:"Gemini 3.8 Flash (Medium)",upstreamModelId:"gemini-3.8-flash-medium(medium)"},{id:"gemini-3.8-flash-low",name:"Gemini 3.8 Flash (Low)",upstreamModelId:"gemini-3.8-flash-low(low)"},{id:"gemini-3.8-flash",name:"Gemini 3.8 Flash",upstreamModelId:"gemini-3.8-flash-medium(medium)"},{id:"gemini-3.7-flash-high",name:"Gemini 3.7 Flash (High)",upstreamModelId:"gemini-3.7-flash-tiered(high)"},{id:"gemini-3.7-flash-medium",name:"Gemini 3.7 Flash (Medium)",upstreamModelId:"gemini-3.7-flash-tiered(medium)"},{id:"gemini-3.7-flash-low",name:"Gemini 3.7 Flash (Low)",upstreamModelId:"gemini-3.7-flash-tiered(low)"},{id:"gemini-3.7-flash",name:"Gemini 3.7 Flash",upstreamModelId:"gemini-3.7-flash-tiered(medium)"},{id:"gemini-3.6-flash-high",name:"Gemini 3.6 Flash (High)",upstreamModelId:"gemini-3.6-flash-tiered(high)"},{id:"gemini-3.6-flash-medium",name:"Gemini 3.6 Flash (Medium)",upstreamModelId:"gemini-3.6-flash-tiered(medium)"},{id:"gemini-3.6-flash-low",name:"Gemini 3.6 Flash (Low)",upstreamModelId:"gemini-3.6-flash-tiered(low)"},{id:"gemini-pro-agent",name:"Gemini 3.1 Pro (High)"},{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview",upstreamModelId:"gemini-pro-agent"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro",upstreamModelId:"gemini-pro-agent"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro (Low)"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6 (Thinking)"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 (Thinking)"},{id:"gpt-oss-120b-medium",name:"GPT-OSS 120B (Medium)"},{id:"gemini-3-flash",name:"Gemini 3 Flash",thinking:!1},{id:"gemini-3.1-flash-image",name:"Gemini 3.1 Flash (Image)",kind:"image",imageGen:!0,capabilities:["textToImage","edit","multiImage"]}],oauth:{authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/cclog","https://www.googleapis.com/auth/experimentsandconfigs"],apiEndpoint:"https://daily-cloudcode-pa.googleapis.com",apiVersion:"v1internal",loadCodeAssistEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",onboardUserEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:onboardUser",loadCodeAssistUserAgent:i,refreshLeadMs:3e5},searchViaChat:{defaultModel:"gemini-2.5-flash",endpoint:`${h}/v1internal:generateContent`,freeTier:"Free — Google Search grounding through an Antigravity OAuth account."},features:{usage:!0}},k="0.154.0",l={id:"codex",priority:30,alias:"cx",uiAlias:"cx",display:{name:"OpenAI Codex",icon:"code",color:"#3B82F6",website:"https://chatgpt.com/codex",notice:{signupUrl:"https://chatgpt.com/codex"},deprecated:!0,deprecationNotice:"RISK_NOTICE",kindNotice:{image:"Requires a ChatGPT Plus (or higher) account. Free accounts are not supported for image generation."}},category:"oauth",thinkingConfig:{options:["auto","none","low","medium","high"],defaultMode:"auto"},transport:{baseUrl:"https://chatgpt.com/backend-api/codex/responses",format:"openai-responses",forceStream:!0,cliVersion:k,headers:{originator:"codex_cli_rs","User-Agent":`codex_cli_rs/${k}`},usage:{url:"https://chatgpt.com/backend-api/wham/usage",resetCreditsUrl:"https://chatgpt.com/backend-api/wham/rate-limit-reset-credits",resetCreditsConsumeUrl:"https://chatgpt.com/backend-api/wham/rate-limit-reset-credits/consume"}},models:[{id:"gpt-5.6-sol",name:"GPT 5.6 Sol"},{id:"gpt-5.6-sol-review",name:"GPT 5.6 Sol Review",upstreamModelId:"gpt-5.6-sol",quotaFamily:"review"},{id:"gpt-5.6-terra",name:"GPT 5.6 Terra"},{id:"gpt-5.6-terra-review",name:"GPT 5.6 Terra Review",upstreamModelId:"gpt-5.6-terra",quotaFamily:"review"},{id:"gpt-5.6-luna",name:"GPT 5.6 Luna"},{id:"gpt-5.6-luna-review",name:"GPT 5.6 Luna Review",upstreamModelId:"gpt-5.6-luna",quotaFamily:"review"},{id:"gpt-5.5",name:"GPT 5.5"},{id:"gpt-5.5-review",name:"GPT 5.5 Review",upstreamModelId:"gpt-5.5",quotaFamily:"review"},{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.4-review",name:"GPT 5.4 Review",upstreamModelId:"gpt-5.4",quotaFamily:"review"},{id:"gpt-5.4-mini",name:"GPT 5.4 Mini"},{id:"gpt-5.4-mini-review",name:"GPT 5.4 Mini Review",upstreamModelId:"gpt-5.4-mini",quotaFamily:"review"},{id:"gpt-5.3-codex-spark",name:"GPT 5.3 Codex Spark"},{id:"gpt-5.3-codex-spark-review",name:"GPT 5.3 Codex Spark Review",upstreamModelId:"gpt-5.3-codex-spark",quotaFamily:"review"},{id:"gpt-image-2.5",name:"GPT Image 2.5",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-image-2.5-flare",name:"GPT Image 2.5 Flare",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-image-2.5-sunburst",name:"GPT Image 2.5 Sunburst",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-5.6-sol-image",name:"GPT 5.6 Sol Image",capabilities:["text2img","edit"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-5.6-terra-image",name:"GPT 5.6 Terra Image",capabilities:["text2img","edit"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-5.6-luna-image",name:"GPT 5.6 Luna Image",capabilities:["text2img","edit"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-image-2",name:"GPT Image 2",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format","output_compression","moderation","partial_images"],kind:"image"},{id:"gpt-image-1.5",name:"GPT Image 1.5",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format","output_compression","moderation","partial_images"],kind:"image"},{id:"gpt-5.5-image",name:"GPT 5.5 Image",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-5.4-image",name:"GPT 5.4 Image",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-5.3-image",name:"GPT 5.3 Image",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format"],kind:"image"}],serviceKinds:["llm","image"],oauth:{clientId:"app_EMoamEEZ73f0CkXaXp7hrann",authorizeUrl:"https://auth.openai.com/oauth/authorize",tokenUrl:"https://auth.openai.com/oauth/token",scope:"openid profile email offline_access",codeChallengeMethod:"S256",fixedPort:1455,callbackPath:"/auth/callback",extraParams:{id_token_add_organizations:"true",codex_cli_simplified_flow:"true",originator:"codex_cli_rs"},refreshLeadMs:432e6,refresh:{encoding:"form",scope:"openid profile email offline_access"},maxRefreshAgeMs:6912e5,trackRefreshAt:!0},features:{usage:!0}},m={id:"deepseek",priority:110,alias:"deepseek",aliases:["ds"],uiAlias:"ds",display:{name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com",notice:{apiKeyUrl:"https://platform.deepseek.com/api_keys"}},category:"apikey",transport:{baseUrl:"https://api.deepseek.com/chat/completions",validateUrl:"https://api.deepseek.com/models",reasoningInject:{scope:"all"},quirks:{claudeSupportedToolTypes:["web_search_20250305","web_search_20260209"]}},transports:[{format:"openai",baseUrl:"https://api.deepseek.com/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},{format:"claude",baseUrl:"https://api.deepseek.com/anthropic/v1/messages",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw"}}],models:[{id:"deepseek-flash",name:"DeepSeek V4.1 Flash"},{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro"},{id:"deepseek-v4-pro-max",name:"DeepSeek V4 Pro Max",upstreamModelId:"deepseek-v4-pro"},{id:"deepseek-v4-pro-none",name:"DeepSeek V4 Pro No Thinking",upstreamModelId:"deepseek-v4-pro"},{id:"deepseek-v4-flash",name:"DeepSeek V4.1 Flash (legacy id)",upstreamModelId:"deepseek-flash"},{id:"deepseek-v4-flash-vision-exp",name:"DeepSeek V4.1 Flash Vision (retired id)",upstreamModelId:"deepseek-flash"},{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}],features:{usage:!0,usageApikey:!0}},n={id:"glm",priority:140,alias:"glm",display:{name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn",notice:{apiKeyUrl:"https://open.bigmodel.cn/usercenter/apikeys"}},category:"apikey",transport:{baseUrl:"https://api.z.ai/api/anthropic/v1/messages",format:"claude",urlSuffix:"?beta=true",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw"},usage:{url:"https://api.z.ai/api/monitor/usage/quota/limit"}},transports:[{format:"openai",baseUrl:"https://api.z.ai/api/coding/paas/v4/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},{format:"claude",baseUrl:"https://api.z.ai/api/anthropic/v1/messages",urlSuffix:"?beta=true",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw"}}],models:[{id:"glm-5.3",name:"GLM 5.3"},{id:"glm-5.3-flash",name:"GLM 5.3 Flash (Vision)"},{id:"glm-5.2",name:"GLM 5.2"},{id:"glm-5.1",name:"GLM 5.1"},{id:"glm-5-turbo",name:"GLM 5 Turbo"},{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"}],serviceKinds:["llm","webSearch"],searchConfig:{baseUrl:"https://api.z.ai/api/mcp/web_search_prime/mcp",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:0,searchTypes:["web"],defaultMaxResults:5,maxMaxResults:50,timeoutMs:1e4,cacheTTLMs:3e5},features:{usage:!0,usageApikey:!0}},o="0.2.99",p="https://cli-chat-proxy.grok.com/v1",q="grok-shell",r=`grok-shell/${o} (linux; x86_64)`,s={id:"grok-cli",priority:275,alias:"gcli",aliases:["grok-build","gb"],uiAlias:"gcli",display:{name:"Grok CLI (Grok Build)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"GC",website:"https://x.ai",notice:{text:"Sign in with your xAI / Grok account via device code. Uses Grok Build subscription credits (cli-chat-proxy.grok.com).",signupUrl:"https://grok.com/supergrok"}},category:"oauth",authModes:["oauth"],hasOAuth:!0,thinkingConfig:{options:["low","medium","high","xhigh"],defaultMode:"high"},transport:{baseUrl:`${p}/responses`,format:"openai-responses",forceStream:!0,modelsUrl:`${p}/models`,userUrl:`${p}/user`,billingUrl:`${p}/billing`,clientVersion:o,clientIdentifier:q,tokenAuth:"xai-grok-cli",headers:{"User-Agent":r,"x-grok-client-identifier":q,"x-grok-client-version":o},usage:{url:`${p}/billing?format=credits`,userUrl:`${p}/user?include=subscription`},retry:{429:{attempts:2,delayMs:2e3},502:{attempts:2,delayMs:1500},503:{attempts:2,delayMs:1500}}},models:[{id:"grok-build",name:"Grok Build",contextLength:5e5,maxOutputTokens:64e3},{id:"grok-4.5",name:"Grok 4.5"},{id:"grok-4.5-high",name:"Grok 4.5 (High)",upstreamModelId:"grok-4.5"},{id:"grok-4.5-medium",name:"Grok 4.5 (Medium)",upstreamModelId:"grok-4.5"},{id:"grok-4.5-low",name:"Grok 4.5 (Low)",upstreamModelId:"grok-4.5"}],features:{usage:!0},oauth:{clientId:"b1a00492-073a-47ea-816f-4c329264a828",deviceCodeUrl:"https://auth.x.ai/oauth2/device/code",tokenUrl:"https://auth.x.ai/oauth2/token",refreshUrl:"https://auth.x.ai/oauth2/token",scope:"openid profile email offline_access grok-cli:access api:access conversations:read conversations:write",referrer:"grok-build",refreshLeadMs:3e5}},t={id:"kimi",priority:170,alias:"kimi",aliases:["kimi-coding","kmc"],display:{name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn",notice:{apiKeyUrl:"https://platform.moonshot.ai/console/api-keys",signupUrl:"https://www.kimi.com/code"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,transport:{baseUrl:"https://api.kimi.com/coding/v1/messages",format:"claude",urlSuffix:"?beta=true",forceStream:!0,headers:{...g},clientId:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",auth:{combined:!0,header:"x-api-key",scheme:"raw",hooks:["kimiHeaders"]}},transports:[{format:"openai",authType:"oauth",baseUrl:"https://api.kimi.com/coding/v1/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer",hooks:["kimiHeaders"]}},{format:"claude",authType:"oauth",baseUrl:"https://api.kimi.com/coding/v1/messages",urlSuffix:"?beta=true",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw",hooks:["kimiHeaders"]}},{format:"openai-apikey",baseUrl:"https://api.moonshot.cn/v1/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}}],models:[{id:"kimi-k3",name:"Kimi K3"},{id:"k3",name:"Kimi K3 (Code)"},{id:"kimi-for-coding",name:"Kimi for Coding"},{id:"kimi-for-coding-highspeed",name:"Kimi for Coding Highspeed"},{id:"kimi-k2.7-code",name:"Kimi K2.7 Code"},{id:"kimi-k2.7-code-highspeed",name:"Kimi K2.7 Code Highspeed"},{id:"kimi-k2.6",name:"Kimi K2.6"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],serviceKinds:["llm","webSearch"],searchViaChat:{defaultModel:"kimi-k3",endpoint:"https://api.moonshot.cn/v1/chat/completions",pricingUrl:"https://platform.kimi.ai/docs/pricing/chat"},oauth:{clientId:"17e5f671-d194-4dfb-9706-5516cb48c098",deviceCodeUrl:"https://auth.kimi.com/api/oauth/device_authorization",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",refreshLeadMs:3e5,authorizeDeviceUrl:"https://www.kimi.com/code/authorize_device"},features:{usage:!0,usageApikey:!0}},u={id:"minimax-cn",priority:190,alias:"minimax-cn",display:{name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com",notice:{apiKeyUrl:"https://platform.minimaxi.com/user-center/basic-information/interface-key"}},category:"apikey",transport:{baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",format:"claude",urlSuffix:"?beta=true",headers:{...g},quirks:{dropOutputConfig:!0,ensureThinkingSignature:!0,requireClaudeToolType:!0},reasoningInject:{scope:"all"},auth:{combined:!0,header:"x-api-key",scheme:"raw"},usage:{urls:["https://www.minimaxi.com/v1/api/openplatform/coding_plan/remains","https://api.minimaxi.com/v1/api/openplatform/coding_plan/remains"]}},transports:[{format:"openai",baseUrl:"https://api.minimaxi.com/v1/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},{format:"claude",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw"}}],models:[{id:"MiniMax-M3",name:"MiniMax M3",targetFormat:"claude"},{id:"MiniMax-M2.7",name:"MiniMax M2.7"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"},{id:"MiniMax-H3",name:"MiniMax H3",params:["duration","resolution","aspect_ratio"],kind:"video"},{id:"speech-2.8-hd",name:"Speech 2.8 HD",kind:"tts"},{id:"speech-2.8-turbo",name:"Speech 2.8 Turbo",kind:"tts"},{id:"speech-2.6-hd",name:"Speech 2.6 HD",kind:"tts"},{id:"speech-2.6-turbo",name:"Speech 2.6 Turbo",kind:"tts"},{id:"speech-02-hd",name:"Speech 02 HD",kind:"tts"},{id:"speech-02-turbo",name:"Speech 02 Turbo",kind:"tts"},{id:"speech-01-hd",name:"Speech 01 HD",kind:"tts"},{id:"speech-01-turbo",name:"Speech 01 Turbo",kind:"tts"}],serviceKinds:["llm","tts","video"],ttsConfig:{baseUrl:"https://api.minimaxi.com/v1/t2a_v2",authType:"apikey",authHeader:"bearer",format:"minimax-tts"},videoConfig:{format:"minimax-v2",createUrl:"https://api.minimaxi.com/v2/video_generation",queryUrl:"https://api.minimaxi.com/v2/query/video_generation",defaultModel:"MiniMax-H3",models:["MiniMax-H3"],resolutions:["2K"],duration:{min:4,max:15},textToVideoRatios:["adaptive","21:9","16:9","4:3","1:1","3:4","9:16"],maxPromptCharacters:7e3,supportsAigcWatermark:!0},features:{usage:!0,usageApikey:!0}},v={id:"minimax",priority:90,alias:"minimax",display:{name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com",notice:{apiKeyUrl:"https://platform.minimaxi.com/user-center/basic-information/interface-key"}},category:"apikey",transport:{baseUrl:"https://api.minimax.io/anthropic/v1/messages",format:"claude",urlSuffix:"?beta=true",headers:{...g},quirks:{dropOutputConfig:!0,ensureThinkingSignature:!0,requireClaudeToolType:!0},reasoningInject:{scope:"all"},auth:{combined:!0,header:"x-api-key",scheme:"raw"},usage:{urls:["https://www.minimax.io/v1/token_plan/remains","https://api.minimax.io/v1/api/openplatform/coding_plan/remains"]}},transports:[{format:"openai",baseUrl:"https://api.minimax.io/v1/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},{format:"claude",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw"}}],models:[{id:"MiniMax-M3",name:"MiniMax M3",targetFormat:"claude"},{id:"MiniMax-M2.7",name:"MiniMax M2.7"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"},{id:"minimax-image-01",name:"MiniMax Image 01",params:["n","size","response_format"],kind:"image"},{id:"MiniMax-H3",name:"MiniMax H3",params:["duration","resolution","aspect_ratio"],kind:"video"},{id:"speech-2.8-hd",name:"Speech 2.8 HD",kind:"tts"},{id:"speech-2.8-turbo",name:"Speech 2.8 Turbo",kind:"tts"},{id:"speech-2.6-hd",name:"Speech 2.6 HD",kind:"tts"},{id:"speech-2.6-turbo",name:"Speech 2.6 Turbo",kind:"tts"},{id:"speech-02-hd",name:"Speech 02 HD",kind:"tts"},{id:"speech-02-turbo",name:"Speech 02 Turbo",kind:"tts"},{id:"speech-01-hd",name:"Speech 01 HD",kind:"tts"},{id:"speech-01-turbo",name:"Speech 01 Turbo",kind:"tts"}],serviceKinds:["llm","image","imageToText","webSearch","tts","video"],ttsConfig:{baseUrl:"https://api.minimax.io/v1/t2a_v2",authType:"apikey",authHeader:"bearer",format:"minimax-tts"},videoConfig:{format:"minimax-v2",createUrl:"https://api.minimax.io/v2/video_generation",queryUrl:"https://api.minimax.io/v2/query/video_generation",defaultModel:"MiniMax-H3",models:["MiniMax-H3"],resolutions:["2K"],duration:{min:4,max:15},textToVideoRatios:["adaptive","21:9","16:9","4:3","1:1","3:4","9:16"],maxPromptCharacters:7e3},imageConfig:{baseUrl:"https://api.minimaxi.com/v1/images/generations"},searchViaChat:{defaultModel:"MiniMax-M2.7",endpoint:"https://api.minimaxi.com/v1/text/chatcompletion_v2",pricingUrl:"https://www.minimaxi.com/document/price"},features:{usage:!0,usageApikey:!0}},w="https://inference-api.nousresearch.com/v1",x=`${w}/chat/completions`,y=`${w}/models`;function z(a,b){let c=process.env[a];if(null==c||""===c)return b;let d=parseInt(c,10);return Number.isFinite(d)&&d>0?d:b}[...["model is not supported","model not supported","model not found","model does not exist","unknown model","invalid model","modelerror"].map(a=>({text:a,permanent:!0})),...[/\bmodel\s+\S+\s+is\s+not\s+supported\b/,/\bmodel\s+\S+\s+(?:does\s+not\s+exist|not\s+found)\b/].map(a=>({pattern:a,permanent:!0})),...[/upstream request failed:\s*\[invalid_request_error\]/].map(a=>({pattern:a,permanent:!0}))];let A=process.env.SEARXNG_URL?.trim()||"http://localhost:8888/search";z("STREAM_STALL_TIMEOUT_MS",36e4),z("STREAM_FIRST_CHUNK_TIMEOUT_MS",3e4),(()=>{let a=process.env.SSE_KEEPALIVE_MS;if(null!=a&&""!==a)return Number.isFinite(parseInt(a,10))})(),z("FETCH_CONNECT_TIMEOUT_MS",6e4),z("RESPONSE_BODY_TIMEOUT_MS",3e5),z("GEMINI_NATIVE_TTS_FETCH_TIMEOUT_MS",45e3);let B=[{id:"alicode-intl",priority:10,alias:"alicode-intl",display:{name:"Alibaba Coding",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://www.alibabacloud.com/product/coding",notice:{apiKeyUrl:"https://www.alibabacloud.com/product/coding"}},category:"apikey",transport:{baseUrl:"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",headers:{},quirks:{preserveCacheControl:!0}},models:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}]},{id:"alicode",priority:20,alias:"alicode",display:{name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com",notice:{apiKeyUrl:"https://bailian.console.aliyun.com/?apiKey=1"}},category:"apikey",transport:{baseUrl:"https://coding.dashscope.aliyuncs.com/v1/chat/completions",headers:{},quirks:{preserveCacheControl:!0}},models:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}]},{id:"alims-intl",priority:11,alias:"alims-intl",display:{name:"Alibaba Studio",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com",notice:{apiKeyUrl:"https://modelstudio.console.alibabacloud.com/?apiKey=1"}},category:"apikey",transport:{baseUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions",headers:{},quirks:{preserveCacheControl:!0}},models:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}]},{id:"alitp-intl",priority:11,alias:"alitp-intl",display:{name:"Alibaba Token Plan",icon:"cloud",color:"#FF6A00",textIcon:"ATP",website:"https://www.alibabacloud.com/campaign/ai-landing-page-token",notice:{apiKeyUrl:"https://modelstudio.console.alibabacloud.com/?apiKey=1"}},category:"apikey",transport:{baseUrl:"https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions",headers:{},quirks:{preserveCacheControl:!0}},models:[{id:"qwen3.8-max-preview",name:"Qwen3.8 Max Preview"},{id:"qwen3.7-max",name:"Qwen3.7 Max"},{id:"qwen3.7-plus",name:"Qwen3.7 Plus"},{id:"qwen3.6-flash",name:"Qwen3.6 Flash"},{id:"glm-5.2",name:"GLM 5.2"},{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro"}]},{id:"anthropic",priority:30,alias:"anthropic",display:{name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com",notice:{apiKeyUrl:"https://console.anthropic.com/settings/keys"}},category:"apikey",transport:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{"anthropic-version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"}},models:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}],serviceKinds:["llm","imageToText"]},j,{id:"api-airforce",alias:"af",aliases:["airforce"],uiAlias:"af",display:{name:"API.airforce",icon:"flight",color:"#0EA5E9",textIcon:"AF",website:"https://api.airforce",notice:{apiKeyUrl:"https://api.airforce"}},category:"freeTier",authType:"apikey",authModes:["apikey"],passthroughModels:!0,modelsFetcher:{url:"https://api.airforce/v1/models",type:"airforce-free"},transport:{baseUrl:"https://api.airforce/v1/chat/completions",validateUrl:"https://api.airforce/v1/models",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},forceStream:!0},models:[{id:"gpt-oss-120b",name:"GPT-OSS 120B (Free)",contextLength:131072},{id:"gpt-oss-20b",name:"GPT-OSS 20B (Free)",contextLength:131072},{id:"kimi-k2.7-code",name:"Kimi K2.7 Code (Free)",contextLength:262144}]},{id:"assemblyai",priority:30,alias:"assemblyai",aliases:["aai"],uiAlias:"aai",display:{name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com",notice:{apiKeyUrl:"https://www.assemblyai.com/app/api-keys"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.assemblyai.com/v1/audio/transcriptions",validateUrl:"https://api.assemblyai.com/v1/account"},models:[{id:"universal-3-pro",name:"Universal 3 Pro",params:["language"],kind:"stt"},{id:"universal-2",name:"Universal 2",params:["language"],kind:"stt"},{id:"best",name:"Best (Nano + Universal)",kind:"stt"},{id:"nano",name:"Nano (Fast)",kind:"stt"}],serviceKinds:["stt"],sttConfig:{baseUrl:"https://api.assemblyai.com/v2/transcript",authType:"apikey",authHeader:"authorization",format:"assemblyai"}},{id:"aws-polly",alias:"polly",display:{name:"AWS Polly",icon:"record_voice_over",color:"#FF9900",textIcon:"PL",website:"https://aws.amazon.com/polly/",notice:{text:"Use AWS Secret Access Key as API key; set providerSpecificData.accessKeyId and optional region.",apiKeyUrl:"https://console.aws.amazon.com/iam/home#/security_credentials"}},category:"apikey",authType:"apikey",serviceKinds:["tts"],ttsConfig:{baseUrl:"https://polly.{region}.amazonaws.com/v1/speech",authType:"apikey",authHeader:"aws-sigv4",format:"aws-polly",models:[{id:"standard",name:"Standard"},{id:"neural",name:"Neural"},{id:"long-form",name:"Long-form"},{id:"generative",name:"Generative"}]},hasProviderSpecificData:!0},{id:"azure",priority:40,alias:"azure",display:{name:"Azure OpenAI",icon:"cloud",color:"#0078D4",textIcon:"AZ",website:"https://azure.microsoft.com/en-us/products/ai-services/openai-service",notice:{apiKeyUrl:"https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/OpenAI"}},category:"apikey",hasProviderSpecificData:!0,transport:{baseUrl:"",headers:{}}},{id:"baidu",alias:"qianfan",aliases:["qianfan","ernie","baidu-qianfan"],uiAlias:"qianfan",category:"apikey",authType:"apikey",authModes:["apikey"],display:{name:"Baidu Qianfan",icon:"search",color:"#2932E1",textIcon:"BD",website:"https://cloud.baidu.com/product/qianfan.html",notice:{apiKeyUrl:"https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application"}},transport:{baseUrl:"https://qianfan.baidubce.com/v2/chat/completions",validateUrl:"https://qianfan.baidubce.com/v2/models"},models:[{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro",contextLength:1048576},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash",contextLength:1048576},{id:"glm-5.2",name:"GLM 5.2",contextLength:512e3},{id:"glm-5.1",name:"GLM 5.1",contextLength:198e3},{id:"kimi-k2.6",name:"Kimi K2.6",contextLength:262144},{id:"qwen3.5-397b-a17b",name:"Qwen 3.5 397B A17B",contextLength:262144},{id:"qwen3.5-27b",name:"Qwen 3.5 27B",contextLength:262144}]},{id:"bazaarlink",alias:"bzl",aliases:["bazaar-link"],uiAlias:"bzl",category:"freeTier",authType:"apikey",authModes:["apikey"],display:{name:"Bazaarlink",icon:"storefront",color:"#DC2626",textIcon:"BZ",website:"https://bazaarlink.ai",notice:{apiKeyUrl:"https://bazaarlink.ai"}},transport:{baseUrl:"https://bazaarlink.ai/api/v1/chat/completions",validateUrl:"https://bazaarlink.ai/api/v1/models"},models:[{id:"auto:free",name:"Auto Free (Zero Cost)"},{id:"claude-opus-4.7",name:"Claude Opus 4.7",contextLength:1e6},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6",contextLength:1e6},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",contextLength:2e5},{id:"gpt-5.5",name:"GPT-5.5",contextLength:105e4},{id:"gpt-5.4",name:"GPT-5.4",contextLength:105e4},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini",contextLength:4e5},{id:"gpt-5.4-nano",name:"GPT-5.4 Nano",contextLength:4e5},{id:"grok-4.3",name:"Grok 4.3",contextLength:1e6},{id:"grok-4.20",name:"Grok 4.20",contextLength:2e6},{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro",contextLength:1048576},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash",contextLength:1048576},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite",contextLength:1048576},{id:"kimi-k2.6",name:"Kimi K2.6",contextLength:262144},{id:"kimi-k2.5",name:"Kimi K2.5",contextLength:262144},{id:"glm-5.1",name:"GLM 5.1",contextLength:204800},{id:"glm-5",name:"GLM 5",contextLength:204800},{id:"mimo-v2.5-pro",name:"MiMo-V2.5-Pro",contextLength:105e4},{id:"mimo-v2.5",name:"MiMo-V2.5",contextLength:105e4},{id:"minimax-m3",name:"MiniMax M3",contextLength:1048576},{id:"minimax-m2.7",name:"MiniMax M2.7",contextLength:204800},{id:"minimax-m2.5",name:"MiniMax M2.5",contextLength:204800},{id:"qwen3.6-plus",name:"Qwen 3.6 Plus",contextLength:1e6},{id:"nemotron-3-super-120b-a12b",name:"Nemotron 3 Super",contextLength:1e6}]},{id:"black-forest-labs",priority:50,alias:"black-forest-labs",aliases:["bfl"],uiAlias:"bfl",display:{name:"Black Forest Labs",icon:"image",color:"#111827",textIcon:"BF",website:"https://blackforestlabs.ai",notice:{apiKeyUrl:"https://api.bfl.ai"}},category:"apikey",authType:"apikey",transport:null,models:[{id:"flux-pro-1.1",name:"FLUX Pro 1.1",params:["n","size"],kind:"image"},{id:"flux-pro-1.1-ultra",name:"FLUX Pro 1.1 Ultra",params:["size"],kind:"image"},{id:"flux-pro",name:"FLUX Pro",params:["n","size"],kind:"image"},{id:"flux-dev",name:"FLUX Dev",params:["n","size"],kind:"image"},{id:"flux-kontext-pro",name:"FLUX Kontext Pro (Edit)",params:["size"],capabilities:["edit"],kind:"image"},{id:"flux-kontext-max",name:"FLUX Kontext Max (Edit)",params:["size"],capabilities:["edit"],kind:"image"}],serviceKinds:["image"],imageConfig:{baseUrl:"https://api.bfl.ai/v1"}},{id:"blackbox",priority:50,alias:"blackbox",aliases:["bb"],uiAlias:"bb",display:{name:"Blackbox AI",icon:"smart_toy",color:"#5B5FEF",textIcon:"BB",website:"https://blackbox.ai",notice:{apiKeyUrl:"https://www.blackbox.ai/api-management"}},category:"apikey",serviceKinds:["llm"],thinkingConfig:{options:["auto","none","low","medium","high","xhigh"],defaultMode:"auto"},transport:{baseUrl:"https://api.blackbox.ai/v1/chat/completions",thinkingFormat:"openai"},models:[{id:"claude-fable-5",name:"Claude Fable 5",upstreamModelId:"blackboxai/anthropic/claude-fable-5"},{id:"claude-opus-4.8",name:"Claude Opus 4.8",upstreamModelId:"blackboxai/anthropic/claude-opus-4.8"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6",upstreamModelId:"blackboxai/anthropic/claude-sonnet-4.6"},{id:"gpt-5.5",name:"GPT-5.5",upstreamModelId:"blackboxai/openai/gpt-5.5"},{id:"gpt-5.4-pro",name:"GPT-5.4 Pro",upstreamModelId:"blackboxai/openai/gpt-5.4-pro"},{id:"gpt-5.4",name:"GPT-5.4",upstreamModelId:"blackboxai/openai/gpt-5.4"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex",upstreamModelId:"blackboxai/openai/gpt-5.3-codex"},{id:"gpt-5.4-nano",name:"GPT-5.4 Nano",upstreamModelId:"blackboxai/openai/gpt-5.4-nano"},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash",upstreamModelId:"blackboxai/deepseek/deepseek-v4-flash"},{id:"grok-4.3",name:"Grok 4.3",upstreamModelId:"blackboxai/x-ai/grok-4.3"}]},{id:"bluesminds",alias:"bm",aliases:["blue-sminds"],uiAlias:"bm",hidden:!0,display:{name:"BluesMinds",icon:"psychology",color:"#2563EB",textIcon:"BM",website:"https://bluesminds.com",notice:{apiKeyUrl:"https://bluesminds.com"}},category:"apikey",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://api.bluesminds.com/v1/chat/completions",validateUrl:"https://api.bluesminds.com/v1/models"},models:[{id:"gpt-4.1",name:"GPT-4.1",contextLength:1048576},{id:"gpt-4.1-mini",name:"GPT-4.1 Mini",contextLength:1048576},{id:"gpt-4.1-nano",name:"GPT-4.1 Nano",contextLength:1048576},{id:"claude-sonnet-4-5",name:"Claude Sonnet 4.5",contextLength:2e5},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5",contextLength:2e5},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash",contextLength:1048576},{id:"gemini-2.0-flash-exp",name:"Gemini 2.0 Flash (Exp)",contextLength:1048576},{id:"qwen-turbo",name:"Qwen Turbo",contextLength:1e6},{id:"kimi-k2",name:"Kimi K2",contextLength:262144},{id:"kimi-k2-thinking",name:"Kimi K2 Thinking",contextLength:262144},{id:"glm-4.7",name:"GLM 4.7",contextLength:204800},{id:"minimax-m2.5",name:"MiniMax M2.5",contextLength:204800},{id:"claude-opus-4-5",name:"Claude Opus 4.5 (VIP)",contextLength:2e5},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro (VIP)",contextLength:1048576}]},{id:"brave-search",alias:"brave",display:{name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",notice:{apiKeyUrl:"https://api-dashboard.search.brave.com/app/keys"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://api.search.brave.com/res/v1",method:"GET",authType:"apikey",authHeader:"x-subscription-token",costPerQuery:.005,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5}},{id:"byteplus",priority:70,alias:"byteplus",aliases:["bpm"],uiAlias:"bpm",display:{name:"BytePlus ModelArk",icon:"cloud",color:"#2563EB",textIcon:"BP",website:"https://console.byteplus.com/ark",notice:{text:"Free credits for new accounts. Access to Seed 2.0, Kimi K2 Thinking, GLM 4.7, GPT-OSS-120B models.",apiKeyUrl:"https://console.byteplus.com/ark/region:ark+ap-southeast-1/apiKey"}},category:"freeTier",transport:{baseUrl:"https://ark.ap-southeast.bytepluses.com/api/v3/chat/completions",headers:{}},models:[{id:"seed-2-0-pro-260328",name:"Seed 2.0 Pro"},{id:"seed-2-0-code-preview-260328",name:"Seed 2.0 Code Preview"},{id:"seed-2-0-mini-260215",name:"Seed 2.0 Mini"},{id:"seed-2-0-lite-260228",name:"Seed 2.0 Lite"},{id:"kimi-k2-thinking-251104",name:"Kimi K2 Thinking"},{id:"glm-4-7-251222",name:"GLM 4.7"},{id:"gpt-oss-120b-250805",name:"GPT-OSS-120B"}],serviceKinds:["llm"]},{id:"cartesia",alias:"cartesia",display:{name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai",notice:{apiKeyUrl:"https://play.cartesia.ai/keys"}},category:"apikey",authType:"apikey",serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.cartesia.ai/tts/bytes",authType:"apikey",authHeader:"x-api-key",format:"cartesia",models:[{id:"sonic-2",name:"Sonic 2"},{id:"sonic-3",name:"Sonic 3"}]},hidden:!0},{id:"cerebras",priority:60,alias:"cerebras",display:{name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai",notice:{apiKeyUrl:"https://cloud.cerebras.ai/platform"}},category:"apikey",transport:{baseUrl:"https://api.cerebras.ai/v1/chat/completions",validateUrl:"https://api.cerebras.ai/v1/models",quirks:{dropClientMetadata:!0}},models:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}]},{id:"chenzk",priority:350,alias:"chenzk",aliases:["chenzk-api","ezkielyna"],display:{name:"Chenzk API",icon:"hub",color:"#10B981",textIcon:"CZ",website:"https://chenzk.top",notice:{apiKeyUrl:"https://chenzk.top/token"}},category:"apikey",transport:{format:"openai",baseUrl:"https://chenzk.top/v1/chat/completions",validateUrl:"https://chenzk.top/v1/models",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},models:[{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.4-mini",name:"GPT 5.4 Mini"},{id:"gpt-5.4-nano",name:"GPT 5.4 Nano"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5",name:"GPT 5"},{id:"gpt-5-mini",name:"GPT 5 Mini"},{id:"gpt-5-nano",name:"GPT 5 Nano"},{id:"gpt-4o",name:"GPT 4o"},{id:"gpt-4o-mini",name:"GPT 4o Mini"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"deepseek-v3.2",name:"DeepSeek V3.2"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"glm-4.7",name:"GLM 4.7"},{id:"gpt-image-1",name:"GPT Image 1",params:["n","size","quality","response_format"],kind:"image"}]},{id:"chutes",priority:70,alias:"chutes",aliases:["ch"],uiAlias:"ch",display:{name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai",notice:{apiKeyUrl:"https://chutes.ai/app/api"}},category:"apikey",transport:{baseUrl:"https://llm.chutes.ai/v1/chat/completions",validateUrl:"https://llm.chutes.ai/v1/models"}},{id:"claude",priority:10,alias:"cc",uiAlias:"cc",display:{name:"Claude Code",icon:"smart_toy",color:"#D97757",website:"https://claude.ai",notice:{signupUrl:"https://claude.ai"},deprecated:!0,deprecationNotice:"RISK_NOTICE"},category:"oauth",transport:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",urlSuffix:"?beta=true",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05,advanced-tool-use-2025-11-20,effort-2025-11-24,structured-outputs-2025-12-15,fast-mode-2026-02-01,redact-thinking-2026-02-12,token-efficient-tools-2026-03-28","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/2.1.258 (external, sdk-cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.14.0","X-Stainless-Package-Version":"0.80.0","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":"arm64","X-Stainless-Os":"MacOS","X-Stainless-Timeout":"600"},quirks:{cloakToolsOnOAuth:!0},auth:{apiKey:{header:"x-api-key",scheme:"raw"},oauth:{header:"Authorization",scheme:"bearer"},hooks:["claudeOverlay"]},usage:{oauthUrl:"https://api.anthropic.com/api/oauth/usage",orgUrl:"https://api.anthropic.com/v1/organizations/{org_id}/usage",settingsUrl:"https://api.anthropic.com/v1/settings"}},models:[{id:"claude-opus-5",name:"Claude Opus 5"},{id:"claude-fable-5-1",name:"Claude Fable 5.1"},{id:"claude-fable-5",name:"Claude Fable 5"},{id:"claude-sonnet-5",name:"Claude Sonnet 5"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}],oauth:{clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",authorizeUrl:"https://claude.ai/oauth/authorize",tokenUrl:"https://api.anthropic.com/v1/oauth/token",scopes:["org:create_api_key","user:profile","user:inference"],codeChallengeMethod:"S256",refreshLeadMs:144e5,refresh:{encoding:"json"}},features:{usage:!0}},{id:"cline",priority:80,alias:"cl",uiAlias:"cl",display:{name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL",website:"https://cline.bot",notice:{signupUrl:"https://cline.bot"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,authHint:"API key from app.cline.bot → Settings > API Keys, or sign in with OAuth.",transport:{baseUrl:"https://api.cline.bot/api/v1/chat/completions",headers:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},quirks:{clineEnvelope:!0},tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",auth:{combined:!0,header:"Authorization",scheme:"bearer",hooks:["clineHeaders"]}},models:[{id:"anthropic/claude-opus-4.7",name:"Claude Opus 4.7"},{id:"anthropic/claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"anthropic/claude-opus-4.6",name:"Claude Opus 4.6"},{id:"openai/gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"openai/gpt-5.4",name:"GPT-5.4"},{id:"google/gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"google/gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"kwaipilot/kat-coder-pro",name:"KAT Coder Pro"},{id:"cline-free/muse-spark-1.3-contributor",name:"Muse Spark 1.3 (Free)"},{id:"deepseek/deepseek-v4-flash",name:"DeepSeek V4 Flash (Free)"},{id:"z-ai/glm-5.3-flash",name:"GLM 5.3 Flash (Free)"},{id:"cline-free/solar-pro4",name:"Solar Pro 4 (Free)"},{id:"cline-free/longcat-2.0",name:"LongCat 2.0 (Free)"},{id:"poolside/laguna-s-2.1:free",name:"Laguna S 2.1 (Free)"}],oauth:{appBaseUrl:"https://app.cline.bot",apiBaseUrl:"https://api.cline.bot",authorizeUrl:"https://api.cline.bot/api/v1/auth/authorize",tokenExchangeUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"}},{id:"clinepass",priority:85,alias:"clinepass",uiAlias:"clinepass",display:{name:"ClinePass",icon:"vpn_key",color:"#5B9BD5",textIcon:"CP",website:"https://cline.bot",notice:{signupUrl:"https://app.cline.bot"}},category:"oauth",authModes:["apikey","oauth"],hasOAuth:!0,transport:{baseUrl:"https://api.cline.bot/api/v1/chat/completions",headers:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},quirks:{clineEnvelope:!0},auth:{combined:!0,header:"Authorization",scheme:"bearer",hooks:["clineHeaders"]}},models:[{id:"cline-pass/glm-5.2",name:"GLM-5.2 (ClinePass)"},{id:"cline-pass/kimi-k2.7-code",name:"Kimi K2.7 Code (ClinePass)"},{id:"cline-pass/kimi-k2.6",name:"Kimi K2.6 (ClinePass)"},{id:"cline-pass/deepseek-v4-pro",name:"DeepSeek V4 Pro (ClinePass)"},{id:"cline-pass/deepseek-v4-flash",name:"DeepSeek V4 Flash (ClinePass)"},{id:"cline-pass/mimo-v2.5",name:"MiMo-V2.5 (ClinePass)"},{id:"cline-pass/mimo-v2.5-pro",name:"MiMo-V2.5-Pro (ClinePass)"},{id:"cline-pass/minimax-m3",name:"MiniMax M3 (ClinePass)"},{id:"cline-pass/qwen3.7-max",name:"Qwen3.7 Max (ClinePass)"},{id:"cline-pass/qwen3.7-plus",name:"Qwen3.7 Plus (ClinePass)"}],oauth:{appBaseUrl:"https://app.cline.bot",apiBaseUrl:"https://api.cline.bot",authorizeUrl:"https://api.cline.bot/api/v1/auth/authorize",tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},thinkingConfig:{options:["auto","on","off"],defaultMode:"auto"}},{id:"cloudflare-ai",priority:60,hasFree:!0,alias:"cloudflare-ai",aliases:["cf"],uiAlias:"cf",display:{name:"Cloudflare",icon:"cloud",color:"#F38020",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",notice:{text:"Workers AI free tier. Requires a Cloudflare API token and Account ID.",apiKeyUrl:"https://dash.cloudflare.com/profile/api-tokens"}},category:"freeTier",authType:"apikey",authModes:["apikey"],hasProviderSpecificData:!0,transport:{baseUrl:"https://api.cloudflare.com/client/v4/accounts/{accountId}/ai/v1/chat/completions",thinkingFormat:"openai"},models:[{id:"@cf/meta/llama-3.2-1b-instruct",name:"Llama 3.2 1B Instruct"},{id:"@cf/meta/llama-3.2-3b-instruct",name:"Llama 3.2 3B Instruct"},{id:"@cf/meta/llama-3.1-8b-instruct-fp8-fast",name:"Llama 3.1 8B Instruct FP8 Fast"},{id:"@cf/meta/llama-3.1-8b-instruct-awq",name:"Llama 3.1 8B Instruct AWQ"},{id:"@cf/mistralai/mistral-small-3.1-24b-instruct",name:"Mistral Small 3.1 24B Instruct"},{id:"@cf/meta/llama-3.1-70b-instruct-fp8-fast",name:"Llama 3.1 70B Instruct FP8 Fast"},{id:"@cf/meta/llama-3.3-70b-instruct-fp8-fast",name:"Llama 3.3 70B Instruct FP8 Fast"},{id:"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b",name:"DeepSeek R1 Distill Qwen 32B"},{id:"@cf/moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"@cf/moonshotai/kimi-k2.6",name:"Kimi K2.6"},{id:"@cf/zai-org/glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"@cf/qwen/qwq-32b",name:"QwQ 32B"},{id:"@cf/qwen/qwen2.5-coder-32b-instruct",name:"Qwen 2.5 Coder 32B Instruct"},{id:"@cf/black-forest-labs/flux-2-klein-9b",name:"FLUX.2 Klein 9B",params:["size"],kind:"image"},{id:"@cf/black-forest-labs/flux-2-klein-4b",name:"FLUX.2 Klein 4B",params:["size"],kind:"image"},{id:"@cf/black-forest-labs/flux-2-dev",name:"FLUX.2 Dev",params:["size"],kind:"image"},{id:"@cf/leonardo/lucid-origin",name:"Lucid Origin",params:["size"],kind:"image"},{id:"@cf/leonardo/phoenix-1.0",name:"Phoenix 1.0",params:["size"],kind:"image"},{id:"@cf/black-forest-labs/flux-1-schnell",name:"FLUX.1 Schnell",params:["size"],kind:"image"},{id:"@cf/bytedance/stable-diffusion-xl-lightning",name:"SDXL Lightning",params:["size"],kind:"image"},{id:"@cf/lykon/dreamshaper-8-lcm",name:"DreamShaper 8 LCM",params:["size"],kind:"image"},{id:"@cf/runwayml/stable-diffusion-v1-5-img2img",name:"Stable Diffusion v1.5 Img2Img",params:["size"],capabilities:["edit"],kind:"image"},{id:"@cf/runwayml/stable-diffusion-v1-5-inpainting",name:"Stable Diffusion v1.5 Inpainting",params:["size"],capabilities:["edit","mask"],kind:"image"},{id:"@cf/stabilityai/stable-diffusion-xl-base-1.0",name:"SDXL Base 1.0",params:["size"],kind:"image"}],serviceKinds:["llm","image"],imageConfig:{baseUrl:"https://api.cloudflare.com/client/v4/accounts"}},{id:"codebuddy-cn",alias:"cbcn",uiAlias:"cbcn",hidden:!1,priority:90,display:{name:"CodeBuddy CN",icon:"smart_toy",color:"#006EFF",website:"https://copilot.tencent.com",notice:{signupUrl:"https://copilot.tencent.com"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,transport:{baseUrl:"https://copilot.tencent.com/v2/chat/completions",forceStream:!0,thinkingFormat:"openai",headers:{"User-Agent":"CLI/2.108.1 CodeBuddy/2.108.1","X-Product":"SaaS","X-IDE-Type":"CLI","X-IDE-Name":"CLI","x-requested-with":"XMLHttpRequest","x-codebuddy-request":"1"},auth:{combined:!0,header:"Authorization",scheme:"bearer"},usage:{url:"https://copilot.tencent.com/v2/billing/meter/get-user-resource"},modelDiscovery:{urlTemplate:"https://copilot.tencent.com/console/enterprises/{enterpriseId}/models",headers:{"Content-Type":"application/json","User-Agent":"CodeBuddy/5.3.3","X-Requested-With":"XMLHttpRequest"}}},models:[{id:"glm-5.2",name:"GLM-5.2"},{id:"glm-5.1",name:"GLM-5.1"},{id:"glm-5v-turbo",name:"GLM-5v-Turbo"},{id:"minimax-m3",name:"MiniMax-M3"},{id:"kimi-k2.7",name:"Kimi-K2.7-Code"},{id:"kimi-k2.6",name:"Kimi-K2.6"},{id:"hy3",name:"Hy3"},{id:"hy4-preview",name:"Hy4-Preview"},{id:"glm-5.3",name:"GLM-5.3"},{id:"glm-5.3-flash",name:"GLM-5.3-Flash"},{id:"kimi-k3-1",name:"Kimi-K3"},{id:"deepseek-v4-pro",name:"DeepSeek-V4-Pro"},{id:"deepseek-v4.1-flash",name:"DeepSeek-V4.1-Flash"}],oauth:{baseUrl:"https://copilot.tencent.com",stateUrl:"https://copilot.tencent.com/v2/plugin/auth/state",tokenUrl:"https://copilot.tencent.com/v2/plugin/auth/token",refreshUrl:"https://copilot.tencent.com/v2/plugin/auth/token/refresh",userAgent:"CLI/2.63.2 CodeBuddy/2.63.2",platform:"CLI",pollInterval:5e3},features:{usage:!0,usageApikey:!0,profileRefresh:!0}},{id:"codebuddy-intl",alias:"cbai",uiAlias:"cbai",hidden:!1,priority:90,display:{name:"CodeBuddy",icon:"smart_toy",color:"#006EFF",website:"https://www.codebuddy.ai",notice:{signupUrl:"https://www.codebuddy.ai"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,transport:{baseUrl:"https://www.codebuddy.ai/v2/chat/completions",forceStream:!0,thinkingFormat:"openai",headers:{"User-Agent":"IDE/2.108.1 CodeBuddy/2.108.1","X-Product":"SaaS","X-IDE-Type":"IDE","X-IDE-Name":"IDE","x-requested-with":"XMLHttpRequest","x-codebuddy-request":"1"},auth:{combined:!0,header:"Authorization",scheme:"bearer"},usage:{url:"https://www.codebuddy.ai/v2/billing/meter/get-user-resource"}},models:[{id:"glm-5.2",name:"GLM-5.2"},{id:"glm-5.1",name:"GLM-5.1"},{id:"glm-5.0",name:"GLM-5.0"},{id:"glm-5.0-turbo",name:"GLM-5.0-Turbo"},{id:"glm-5v-turbo",name:"GLM-5v-Turbo"},{id:"glm-4.7",name:"GLM-4.7"},{id:"minimax-m3",name:"MiniMax-M3"},{id:"minimax-m2.7",name:"MiniMax-M2.7"},{id:"kimi-k2.7",name:"Kimi-K2.7-Code"},{id:"kimi-k2.6",name:"Kimi-K2.6"},{id:"kimi-k2.5",name:"Kimi-K2.5"},{id:"hy3-preview",name:"Hy3 Preview"},{id:"deepseek-v4-pro",name:"DeepSeek-V4-Pro"},{id:"deepseek-v4-flash",name:"DeepSeek-V4-Flash"},{id:"deepseek-v3-2-volc",name:"DeepSeek-V3.2"}],oauth:{baseUrl:"https://www.codebuddy.ai",stateUrl:"https://www.codebuddy.ai/v2/plugin/auth/state",tokenUrl:"https://www.codebuddy.ai/v2/plugin/auth/token",refreshUrl:"https://www.codebuddy.ai/v2/plugin/auth/token/refresh",userAgent:"IDE/2.63.2 CodeBuddy/2.63.2",platform:"ide",pollInterval:5e3},features:{usage:!0,usageApikey:!0}},l,{id:"cohere",priority:90,alias:"cohere",display:{name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com",notice:{apiKeyUrl:"https://dashboard.cohere.com/api-keys"}},category:"apikey",transport:{baseUrl:"https://api.cohere.ai/v1/chat/completions",validateUrl:"https://api.cohere.ai/v1/models"},models:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}]},{id:"comfyui",priority:120,alias:"comfyui",display:{name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"},category:"apikey",transport:null,models:[{id:"flux-dev",name:"FLUX Dev",params:["n","size"],kind:"image"},{id:"sdxl",name:"SDXL",params:["n","size"],kind:"image"}],serviceKinds:["image"],imageConfig:{baseUrl:"http://localhost:8188"}},{id:"commandcode",priority:100,alias:"commandcode",aliases:["cmc"],uiAlias:"cmc",display:{name:"Command Code",icon:"smart_toy",color:"#000000",textIcon:"CC",website:"https://commandcode.ai",notice:{text:"Use your CommandCode CLI API key (starts with user_...) from ~/.commandcode/auth.json or commandcode.ai/studio.",apiKeyUrl:"https://commandcode.ai/studio"}},category:"apikey",transport:{baseUrl:"https://api.commandcode.ai/alpha/generate",format:"commandcode",forceStream:!0,headers:{"x-command-code-version":"0.25.7","x-cli-environment":"cli"}},models:[{id:"deepseek/deepseek-v4-pro",name:"DeepSeek V4 Pro"},{id:"deepseek/deepseek-v4-flash",name:"DeepSeek V4 Flash"},{id:"deepseek/deepseek-v4-flash-vision-exp",name:"DeepSeek V4 Flash Vision Exp"},{id:"deepseek-v4-flash-vision-exp",name:"DeepSeek V4 Flash Vision Exp",upstreamModelId:"deepseek/deepseek-v4-flash-vision-exp"},{id:"moonshotai/Kimi-K2.6",name:"Kimi K2.6"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-5.1",name:"GLM 5.1"},{id:"zai-org/GLM-5",name:"GLM 5"},{id:"MiniMaxAI/MiniMax-M2.7",name:"MiniMax M2.7"},{id:"MiniMaxAI/MiniMax-M2.5",name:"MiniMax M2.5"},{id:"Qwen/Qwen3.6-Max-Preview",name:"Qwen 3.6 Max Preview"},{id:"Qwen/Qwen3.6-Plus",name:"Qwen 3.6 Plus"},{id:"stepfun/Step-3.5-Flash",name:"Step 3.5 Flash"}],features:{usage:!0,usageApikey:!0}},{id:"coqui",alias:"coqui",display:{name:"Coqui TTS",icon:"record_voice_over",color:"#10B981",textIcon:"CQ",website:"https://github.com/coqui-ai/TTS"},category:"freeTier",authType:"none",serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"http://localhost:5002/api/tts",authType:"none",authHeader:"none",format:"coqui",models:[{id:"tts_models/en/ljspeech/tacotron2-DDC",name:"Tacotron2 DDC (LJSpeech)"}]},hidden:!0},{id:"cursor",priority:50,alias:"cu",uiAlias:"cu",display:{name:"Cursor IDE",icon:"edit_note",color:"#00D4AA",website:"https://cursor.com",notice:{signupUrl:"https://cursor.com"}},category:"oauth",transport:{baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",format:"cursor",forceStream:!0,headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"3.12.17",usage:{usageUrl:"https://api2.cursor.sh/aiserver.v1.DashboardService/GetCurrentPeriodUsage",planUrl:"https://api2.cursor.sh/aiserver.v1.DashboardService/GetPlanInfo"}},models:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"claude-4.6-opus-max",name:"Claude 4.6 Opus Max"},{id:"claude-4.6-sonnet-medium-thinking",name:"Claude 4.6 Sonnet Medium Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"}],oauth:{apiEndpoint:"https://api2.cursor.sh",chatEndpoint:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",modelsEndpoint:"/agent.v1.AgentService/GetUsableModels",api3Endpoint:"https://api3.cursor.sh",agentEndpoint:"https://agent.api5.cursor.sh",agentNonPrivacyEndpoint:"https://agentn.api5.cursor.sh",clientVersion:"3.12.17",clientType:"ide",loginUrl:"https://cursor.com/loginDeepControl",pollUrl:"https://api2.cursor.sh/auth/poll",refreshUrl:"https://api2.cursor.sh/auth/exchange_user_api_key",refreshLeadMs:3e5,dbKeys:{accessToken:"cursorAuth/accessToken",machineId:"storage.serviceMachineId"}},features:{usage:!0}},{id:"deepgram",priority:20,alias:"deepgram",aliases:["dg"],uiAlias:"dg",display:{name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com",notice:{text:"$200 free credit on signup (no card required). Aura-1: $0.015/1k chars, Aura-2: $0.030/1k chars (Pay-As-You-Go).",apiKeyUrl:"https://console.deepgram.com/api-keys"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.deepgram.com/v1/listen"},models:[{id:"nova-3",name:"Nova 3",params:["language"],kind:"stt"},{id:"nova-2",name:"Nova 2",params:["language"],kind:"stt"},{id:"whisper-large",name:"Whisper Large",params:["language"],kind:"stt"},{id:"nova",name:"Nova",kind:"stt"}],serviceKinds:["stt"],sttConfig:{baseUrl:"https://api.deepgram.com/v1/listen",authType:"apikey",authHeader:"token",format:"deepgram"}},m,{id:"edge-tts",alias:"edge-tts",display:{name:"Edge TTS",icon:"record_voice_over",color:"#0078D4",textIcon:"ET"},category:"freeTier",authType:"none",serviceKinds:["tts"],mediaPriority:5,noAuth:!0,ttsConfig:{baseUrl:"edge-tts",authType:"none",authHeader:"none",format:"edge-tts",models:[]}},{id:"elevenlabs",alias:"el",display:{name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io",notice:{apiKeyUrl:"https://elevenlabs.io/app/settings/api-keys"}},category:"apikey",authType:"apikey",features:{usageApikey:!0},serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.elevenlabs.io/v1/text-to-speech",authType:"apikey",authHeader:"xi-api-key",format:"elevenlabs",models:[{id:"eleven_v3",name:"Eleven v3"},{id:"eleven_multilingual_v2",name:"Eleven Multilingual v2"},{id:"eleven_flash_v2_5",name:"Eleven Flash v2.5"},{id:"eleven_turbo_v2_5",name:"Eleven Turbo v2.5"}]}},{id:"exa",alias:"exa",display:{name:"Exa",icon:"manage_search",color:"#2563EB",textIcon:"EX",website:"https://exa.ai",notice:{apiKeyUrl:"https://dashboard.exa.ai/api-keys"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch","webFetch"],searchConfig:{baseUrl:"https://api.exa.ai/search",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.007,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5},fetchConfig:{baseUrl:"https://api.exa.ai/contents",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.001,freeMonthlyQuota:1e3,formats:["text","markdown"],maxCharacters:1e5,timeoutMs:15e3}},{id:"fal-ai",priority:90,hasFree:!0,alias:"fal-ai",aliases:["fal"],uiAlias:"fal",display:{name:"Fal.ai",icon:"image",color:"#2563EB",textIcon:"FL",website:"https://fal.ai",notice:{apiKeyUrl:"https://fal.ai/dashboard/keys"}},category:"apikey",authType:"apikey",transport:null,models:[{id:"fal-ai/flux/schnell",name:"FLUX Schnell",params:["n","size"],kind:"image"},{id:"fal-ai/flux/dev",name:"FLUX Dev",params:["n","size"],kind:"image"},{id:"fal-ai/flux-pro/v1.1",name:"FLUX Pro v1.1",params:["n","size"],kind:"image"},{id:"fal-ai/flux-pro/v1.1-ultra",name:"FLUX Pro v1.1 Ultra",params:["n","size"],kind:"image"},{id:"fal-ai/recraft-v3",name:"Recraft V3",params:["n","size","style"],kind:"image"},{id:"fal-ai/ideogram/v2",name:"Ideogram V2",params:["n","size","style"],kind:"image"},{id:"fal-ai/stable-diffusion-v35-large",name:"SD 3.5 Large",params:["n","size"],kind:"image"}],serviceKinds:["image"],imageConfig:{baseUrl:"https://queue.fal.run"}},{id:"featherless",priority:65,alias:"featherless",aliases:["fl"],uiAlias:"fl",display:{name:"Featherless",icon:"flutter_dash",color:"#111827",textIcon:"FL",website:"https://featherless.ai",notice:{apiKeyUrl:"https://featherless.ai/account/api-keys"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.featherless.ai/v1/chat/completions",validateUrl:"https://api.featherless.ai/v1/models"},models:[{id:"deepseek-ai/DeepSeek-V4-Pro",name:"DeepSeek V4 Pro"},{id:"deepseek-ai/DeepSeek-V4-Flash",name:"DeepSeek V4 Flash"},{id:"zai-org/GLM-5.2",name:"GLM 5.2"},{id:"zai-org/GLM-5.1",name:"GLM 5.1"},{id:"moonshotai/Kimi-K2.7-Code",name:"Kimi K2.7 Code"},{id:"moonshotai/Kimi-K2.6",name:"Kimi K2.6"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"}]},{id:"firecrawl",alias:"firecrawl",display:{name:"Firecrawl",icon:"local_fire_department",color:"#F59E0B",textIcon:"FC",website:"https://firecrawl.dev",notice:{apiKeyUrl:"https://www.firecrawl.dev/app/api-keys"}},category:"apikey",authType:"apikey",serviceKinds:["webFetch"],fetchConfig:{baseUrl:"https://api.firecrawl.dev/v1/scrape",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.002,freeMonthlyQuota:500,formats:["markdown","html","text"],maxCharacters:2e5,timeoutMs:3e4}},{id:"fireworks",priority:50,alias:"fireworks",display:{name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai",notice:{apiKeyUrl:"https://fireworks.ai/account/api-keys"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",validateUrl:"https://api.fireworks.ai/inference/v1/models"},models:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"},{id:"nomic-ai/nomic-embed-text-v1.5",name:"Nomic Embed Text v1.5",kind:"embedding"}],serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.fireworks.ai/inference/v1/embeddings"}},{id:"fish-audio",alias:"fish",display:{name:"Fish Audio",icon:"record_voice_over",color:"#1E9BF0",textIcon:"FA",website:"https://fish.audio",notice:{apiKeyUrl:"https://fish.audio/app/api-keys/"}},category:"apikey",authType:"apikey",serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.fish.audio/v1/tts",authType:"apikey",authHeader:"bearer",format:"fish-audio",models:[{id:"s2.1-pro-free",name:"S2.1 Pro Free"},{id:"s2.1-pro",name:"S2.1 Pro"},{id:"s2-pro",name:"S2 Pro"},{id:"s1",name:"S1"}]}},{id:"frontier-for-all",priority:15,hasFree:!0,alias:"ffa",aliases:["frontier"],uiAlias:"ffa",display:{name:"Frontier for All",icon:"travel_explore",color:"#6366F1",textIcon:"FF",website:"https://frontier-for-all.vercel.app",notice:{text:'Sign in with your Frontier account via device code. Requests run on the model you picked for 9Router on your Frontier dashboard — the model id sent by the client is ignored unless you turn on "Let 9Router suggest a model" there. Limits: 20 req/min, 300 req/hour per token.',signupUrl:"https://frontier-for-all.vercel.app"}},category:"freeTier",authType:"oauth",authModes:["oauth"],hasOAuth:!0,transport:{baseUrl:"https://frontier-for-all.vercel.app/api/v1/chat/completions",validateUrl:"https://frontier-for-all.vercel.app/api/v1/models",retry:{429:{attempts:3,delayMs:3e3}}},models:[{id:"auto",name:"Frontier Auto (your dashboard model)"}],passthroughModels:!0,modelsFetcher:{type:"static",label:"Frontier catalogue — grouped by upstream provider (see the note above)",notice:'A model id here only does anything when "Let 9Router suggest a model" is on — the checkbox on the Frontier consent screen, or Dashboard → Connected apps if you already signed in. Off, Frontier ignores the id and runs your dashboard default, which is what ffa/auto is for. A hint also swaps the model only, never the provider: pick an id from the provider set for 9Router (Groq unless you changed it on the consent screen or in Frontier settings) and make sure that provider\'s key is connected. An id from any other provider will fail.',models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B (Groq)",contextLength:131072},{id:"llama-3.1-8b-instant",name:"Llama 3.1 8B (Groq)",contextLength:131072},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B (Groq)",contextLength:131072},{id:"openai/gpt-oss-20b",name:"GPT OSS 20B (Groq)",contextLength:131072},{id:"llama-3.3-70b",name:"Llama 3.3 70B (Cerebras)"},{id:"llama3.1-8b",name:"Llama 3.1 8B (Cerebras)"},{id:"qwen-3-32b",name:"Qwen 3 32B (Cerebras)"},{id:"gpt-oss-120b",name:"GPT OSS 120B (Cerebras)",contextLength:131072},{id:"mistral-small-latest",name:"Mistral Small (Mistral)"},{id:"mistral-large-latest",name:"Mistral Large (Mistral)"},{id:"codestral-latest",name:"Codestral (Mistral)"},{id:"magistral-small-latest",name:"Magistral Small (Mistral)"},{id:"meta-llama/llama-3.3-70b-instruct:free",name:"Llama 3.3 70B free (OpenRouter)"},{id:"deepseek/deepseek-chat-v3-0324:free",name:"DeepSeek V3 free (OpenRouter)"},{id:"qwen/qwen3-235b-a22b:free",name:"Qwen 3 235B free (OpenRouter)"},{id:"google/gemma-3-27b-it:free",name:"Gemma 3 27B free (OpenRouter)"}]},oauth:{clientId:"07b329d7-59a0-429d-8037-0f036b7b1efb",deviceCodeUrl:"https://frontier-for-all.vercel.app/device/code",deviceTokenUrl:"https://frontier-for-all.vercel.app/device/token",tokenUrl:"https://frontier-for-all.vercel.app/token",refreshUrl:"https://frontier-for-all.vercel.app/token",revokeUrl:"https://frontier-for-all.vercel.app/revoke",modelsUrl:"https://frontier-for-all.vercel.app/api/v1/models",scope:"inference",refreshLeadMs:3e5}},{id:"gemini-cli",priority:20,hasFree:!0,alias:"gc",uiAlias:"gc",display:{name:"Gemini CLI",icon:"terminal",color:"#4285F4",website:"https://github.com/google-gemini/gemini-cli",notice:{signupUrl:"https://github.com/google-gemini/gemini-cli"},deprecated:!0,deprecationNotice:"RISK_NOTICE"},category:"free",transport:{baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",format:"gemini-cli",forceStream:!0,cliVersion:"0.34.0",apiClient:"google-genai-sdk/1.41.0 gl-node/v22.19.0",usage:{quotaUrl:"https://cloudcode-pa.googleapis.com/v1internal:retrieveUserQuota",loadCodeAssistUrl:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist"},clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},models:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}],oauth:{authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile"],refresh:{encoding:"form"}},features:{usage:!0}},{id:"gemini",priority:50,hasFree:!0,alias:"gemini",display:{name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev",notice:{apiKeyUrl:"https://aistudio.google.com/app/apikey"}},category:"freeTier",authType:"apikey",authModes:["apikey"],mediaPriority:1,transport:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",format:"gemini",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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",auth:{apiKey:{header:"x-goog-api-key",scheme:"raw"},oauth:{header:"Authorization",scheme:"bearer"}}},models:[{id:"gemini-3.8-flash",name:"Gemini 3.8 Flash"},{id:"gemini-3.7-flash",name:"Gemini 3.7 Flash"},{id:"gemini-3.6-flash",name:"Gemini 3.6 Flash"},{id:"gemini-3.5-flash-lite",name:"Gemini 3.5 Flash Lite"},{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"gemma-4-31b-it",name:"Gemma 4 31B IT"},{id:"gemini-embedding-2-preview",name:"Gemini Embedding 2 Preview",kind:"embedding"},{id:"gemini-embedding-001",name:"Gemini Embedding 001",kind:"embedding"},{id:"text-embedding-005",name:"Text Embedding 005",kind:"embedding"},{id:"text-embedding-004",name:"Text Embedding 004 (Legacy)",kind:"embedding"},{id:"gemini-3.1-flash-image-preview",name:"Gemini 3.1 Flash Image (Nano Banana 2)",params:[],kind:"image"},{id:"gemini-3-pro-image-preview",name:"Gemini 3 Pro Image (Nano Banana Pro)",params:[],kind:"image"},{id:"gemini-2.5-flash-image",name:"Gemini 2.5 Flash Image (Nano Banana)",params:[],kind:"image"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro (Best)",params:["language","prompt"],kind:"stt"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash",params:["language","prompt"],kind:"stt"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite (Cheapest)",params:["language","prompt"],kind:"stt"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash",params:["language","prompt"],kind:"stt"},{id:"gemini-3.1-flash-tts-preview",name:"Gemini 3.1 Flash TTS",kind:"tts"},{id:"gemini-2.5-flash-preview-tts",name:"Gemini 2.5 Flash TTS",kind:"tts"},{id:"gemini-2.5-pro-preview-tts",name:"Gemini 2.5 Pro TTS",kind:"tts"},{id:"embedding-001",name:"Embedding 001",dimensions:768,kind:"embedding"}],serviceKinds:["llm","embedding","image","imageToText","webSearch","tts","stt"],ttsConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",format:"gemini-tts"},sttConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",format:"gemini-stt"},embeddingConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key"},imageConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models"},searchViaChat:{defaultModel:"gemini-2.5-flash",endpoint:"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent",pricingUrl:"https://ai.google.dev/pricing",freeTier:"Free tier: 15 RPM, 1M tokens/day on gemini-2.5-flash via AI Studio."}},{id:"github",priority:40,alias:"gh",uiAlias:"gh",display:{name:"GitHub Copilot",icon:"code",color:"#333333",website:"https://github.com/features/copilot",notice:{signupUrl:"https://github.com/features/copilot"},deprecated:!0,deprecationNotice:"RISK_NOTICE"},category:"oauth",transport:{baseUrl:"https://api.githubcopilot.com/chat/completions",responsesUrl:"https://api.githubcopilot.com/responses",messagesUrl:"https://api.githubcopilot.com/v1/messages",countTokensUrl:"https://api.githubcopilot.com/v1/messages/count_tokens",countTokensPreflightRatio:.5,countTokensTimeoutMs:1e4,headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.110.0","editor-plugin-version":"copilot-chat/0.38.0","user-agent":"GitHubCopilotChat/0.38.0","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},copilot:{vscodeVersion:"1.110.0",chatVersion:"0.38.0",userAgent:"GitHubCopilotChat/0.38.0",apiVersion:"2025-04-01"},usage:{url:"https://api.github.com/copilot_internal/user"}},models:[{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"gpt-5.4",name:"GPT-5.4"},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.5",name:"Claude Opus 4.5"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-opus-4.7",name:"Claude Opus 4.7"},{id:"claude-opus-4.8",name:"Claude Opus 4.8"},{id:"claude-opus-5",name:"Claude Opus 5"},{id:"claude-fable-5",name:"Claude Fable 5"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash"},{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"},{id:"goldeneye-free-auto",name:"GoldenEye"},{id:"text-embedding-3-small",name:"Text Embedding 3 Small (GitHub)",kind:"embedding"},{id:"text-embedding-3-large",name:"Text Embedding 3 Large (GitHub)",kind:"embedding"}],serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://models.github.ai/inference/embeddings",authType:"apikey",authHeader:"bearer"},oauth:{clientId:"Iv1.b507a08c87ecfe98",authorizeUrl:"https://github.com/login/oauth/authorize",deviceCodeUrl:"https://github.com/login/device/code",tokenUrl:"https://github.com/login/oauth/access_token",userInfoUrl:"https://api.github.com/user",scopes:"read:user",apiVersion:"2022-11-28",copilotTokenUrl:"https://api.github.com/copilot_internal/v2/token",userAgent:"GitHubCopilotChat/0.26.7",editorVersion:"vscode/1.85.0",editorPluginVersion:"copilot-chat/0.26.7"},features:{usage:!0}},{id:"gitlab",hidden:!0,priority:100,display:{name:"GitLab Duo",icon:"code",color:"#FC6D26",textIcon:"GL",website:"https://gitlab.com",notice:{signupUrl:"https://gitlab.com"}},category:"oauth",transport:{baseUrl:"https://gitlab.com/api/v4/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},oauth:{defaultBaseUrl:"https://gitlab.com",authorizeUrlPath:"/oauth/authorize",tokenUrlPath:"/oauth/token",userInfoUrlPath:"/api/v4/user",scope:"api read_user",codeChallengeMethod:"S256"}},{id:"glm-cn",priority:130,alias:"glm-cn",display:{name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn",notice:{apiKeyUrl:"https://open.bigmodel.cn/usercenter/apikeys"}},category:"apikey",transport:{baseUrl:"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",headers:{},usage:{url:"https://open.bigmodel.cn/api/monitor/usage/quota/limit"}},models:[{id:"glm-5.3",name:"GLM 5.3"},{id:"glm-5.3-flash",name:"GLM 5.3 Flash (Vision)"},{id:"glm-5.2",name:"GLM 5.2"},{id:"glm-5.1",name:"GLM 5.1"},{id:"glm-5-turbo",name:"GLM 5 Turbo"},{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM-4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"},{id:"glm-4.6",name:"GLM-4.6"},{id:"glm-4.5-air",name:"GLM-4.5-Air"}],features:{usage:!0,usageApikey:!0}},n,{id:"google-pse",alias:"gpse",display:{name:"Google PSE",icon:"search",color:"#4285F4",textIcon:"GP",website:"https://programmablesearchengine.google.com",notice:{apiKeyUrl:"https://programmablesearchengine.google.com/controlpanel/create"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://www.googleapis.com/customsearch/v1",method:"GET",authType:"apikey",authHeader:"key",costPerQuery:.005,freeMonthlyQuota:3e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:10,timeoutMs:1e4,cacheTTLMs:3e5}},{id:"google-tts",alias:"google-tts",display:{name:"Google TTS",icon:"record_voice_over",color:"#4285F4",textIcon:"GT"},category:"freeTier",authType:"none",serviceKinds:["tts"],mediaPriority:5,noAuth:!0,ttsConfig:{baseUrl:"google-tts",authType:"none",authHeader:"none",format:"google-tts",models:[]}},s,{id:"grok-web",priority:150,alias:"grok-web",aliases:["gw"],uiAlias:"gw",display:{name:"Grok Web (Subscription)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"GW",website:"https://grok.com"},category:"webCookie",authType:"cookie",authHint:"Paste your sso= cookie value from grok.com",transport:{baseUrl:"https://grok.com/rest/app-chat/conversations/new",format:"grok-web",authType:"cookie"},models:[{id:"grok-3",name:"Grok 3"},{id:"grok-3-mini",name:"Grok 3 Mini (Thinking)"},{id:"grok-3-thinking",name:"Grok 3 Thinking"},{id:"grok-4",name:"Grok 4"},{id:"grok-4-mini",name:"Grok 4 Mini (Thinking)"},{id:"grok-4-thinking",name:"Grok 4 Thinking"},{id:"grok-4-heavy",name:"Grok 4 Heavy (SuperGrok)"},{id:"grok-4.1-mini",name:"Grok 4.1 Mini (Thinking)"},{id:"grok-4.1-fast",name:"Grok 4.1 Fast"},{id:"grok-4.1-expert",name:"Grok 4.1 Expert"},{id:"grok-4.1-thinking",name:"Grok 4.1 Thinking"},{id:"grok-4.2",name:"Grok 4.2 (4.20 Beta)"}],passthroughModels:!0},{id:"groq",priority:60,hasFree:!0,alias:"groq",display:{name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",notice:{apiKeyUrl:"https://console.groq.com/keys"}},category:"apikey",transport:{baseUrl:"https://api.groq.com/openai/v1/chat/completions",validateUrl:"https://api.groq.com/openai/v1/models",usage:{url:"https://api.groq.com/openai/v1/models"}},models:[{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"},{id:"openai/gpt-oss-20b",name:"GPT-OSS 20B"},{id:"openai/gpt-oss-safeguard-20b",name:"GPT-OSS Safeguard 20B"},{id:"qwen/qwen3.6-27b",name:"Qwen3.6 27B"},{id:"groq/compound",name:"Compound"},{id:"groq/compound-mini",name:"Compound Mini"},{id:"allam-2-7b",name:"Allam 2 7B"},{id:"whisper-large-v3",name:"Whisper Large v3",params:["language","response_format","temperature","prompt"],kind:"stt"},{id:"whisper-large-v3-turbo",name:"Whisper Large v3 Turbo",params:["language","response_format","temperature","prompt"],kind:"stt"},{id:"distil-whisper-large-v3-en",name:"Distil Whisper Large v3 EN",params:["language","response_format","temperature","prompt"],kind:"stt"}],serviceKinds:["llm","imageToText","stt"],sttConfig:{baseUrl:"https://api.groq.com/openai/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"openai"},modelsFetcher:{url:"https://api.groq.com/openai/v1/models",type:"openai"},passthroughModels:!0,features:{usage:!0,usageApikey:!0}},{id:"huggingface",priority:70,hasFree:!0,alias:"huggingface",aliases:["hf"],uiAlias:"hf",display:{name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",notice:{apiKeyUrl:"https://huggingface.co/settings/tokens"}},category:"apikey",authType:"apikey",hiddenKinds:["tts"],transport:null,models:[{id:"black-forest-labs/FLUX.1-schnell",name:"FLUX.1 Schnell",params:[],kind:"image"},{id:"stabilityai/stable-diffusion-xl-base-1.0",name:"SDXL Base 1.0",params:[],kind:"image"},{id:"openai/whisper-large-v3",name:"Whisper Large v3 (HF)",params:["language"],kind:"stt"},{id:"openai/whisper-small",name:"Whisper Small (HF)",params:["language"],kind:"stt"}],serviceKinds:["image","stt"],imageConfig:{baseUrl:"https://api-inference.huggingface.co/models"},sttConfig:{baseUrl:"https://api-inference.huggingface.co/models",authType:"apikey",authHeader:"bearer",format:"huggingface-asr"}},{id:"hyperbolic",priority:160,alias:"hyperbolic",aliases:["hyp"],uiAlias:"hyp",display:{name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz",notice:{apiKeyUrl:"https://app.hyperbolic.xyz/settings"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",validateUrl:"https://api.hyperbolic.xyz/v1/models"},models:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}]},{id:"iflow",hidden:!0,priority:110,alias:"if",display:{name:"iFlow AI",icon:"water_drop",color:"#6366F1",website:"https://iflow.cn",notice:{signupUrl:"https://iflow.cn"}},category:"oauth",transport:{baseUrl:"https://apis.iflow.cn/v1/chat/completions",thinkingFormat:"openai",headers:{"User-Agent":"iFlow-Cli"}},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-max",name:"Qwen3 Max"},{id:"qwen3-vl-plus",name:"Qwen3 VL Plus"},{id:"qwen3-max-preview",name:"Qwen3 Max Preview"},{id:"qwen3-235b",name:"Qwen3 235B A22B"},{id:"qwen3-235b-a22b-instruct",name:"Qwen3 235B A22B Instruct"},{id:"qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking"},{id:"qwen3-32b",name:"Qwen3 32B"},{id:"kimi-k2",name:"Kimi K2"},{id:"deepseek-v3.2",name:"DeepSeek V3.2 Exp"},{id:"deepseek-v3.1",name:"DeepSeek V3.1 Terminus"},{id:"deepseek-v3",name:"DeepSeek V3 671B"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"glm-4.7",name:"GLM 4.7"},{id:"iflow-rome-30ba3b",name:"iFlow ROME"}],features:{usage:!0},oauth:{clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",authorizeUrl:"https://iflow.cn/oauth",tokenUrl:"https://iflow.cn/oauth/token",userInfoUrl:"https://iflow.cn/api/oauth/getUserInfo",extraParams:{loginMethod:"phone",type:"phone"},refreshLeadMs:864e5}},{id:"inworld",alias:"inworld",display:{name:"Inworld TTS",icon:"record_voice_over",color:"#FF6B6B",textIcon:"IW",website:"https://inworld.ai",notice:{text:"Free tier: 40 minutes/month TTS. Paid: TTS-1.5 Mini $0.01/min ($15/1M chars), TTS-1.5 Max $0.025/min ($30/1M chars). 270+ voices, 15 languages.",apiKeyUrl:"https://platform.inworld.ai/api-keys"}},category:"apikey",authType:"apikey",serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.inworld.ai/tts/v1/voice",authType:"apikey",authHeader:"basic",format:"inworld",models:[{id:"inworld-tts-1.5-mini",name:"Inworld TTS 1.5 Mini ($0.01/min)"},{id:"inworld-tts-1.5-max",name:"Inworld TTS 1.5 Max ($0.025/min)"}]}},{id:"jina-ai",alias:"jina",display:{name:"Jina AI",icon:"blur_on",color:"#2563EB",textIcon:"JA",website:"https://jina.ai",notice:{text:"10M free tokens on signup (non-commercial), no credit card required.",apiKeyUrl:"https://jina.ai/?sui=apikey"}},category:"apikey",authType:"apikey",serviceKinds:["embedding"],embeddingConfig:{baseUrl:"https://api.jina.ai/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"jina-embeddings-v3",name:"Jina Embeddings v3",dimensions:1024},{id:"jina-embeddings-v2-base-en",name:"Jina Embeddings v2 Base EN",dimensions:768},{id:"jina-embeddings-v2-base-code",name:"Jina Embeddings v2 Base Code",dimensions:768}]}},{id:"jina-reader",alias:"jina-reader",display:{name:"Jina Reader",icon:"menu_book",color:"#000000",textIcon:"JR",website:"https://jina.ai/reader",notice:{apiKeyUrl:"https://jina.ai/?sui=apikey"}},category:"apikey",authType:"apikey",serviceKinds:["webFetch"],fetchConfig:{baseUrl:"https://r.jina.ai",method:"GET",authType:"apikey",authHeader:"bearer",costPerQuery:0,freeMonthlyQuota:1e6,formats:["markdown","text","html"],maxCharacters:2e5,timeoutMs:3e4}},{id:"joycode",priority:122,alias:"joycode",uiAlias:"joycode",display:{name:"JD JoyCode",icon:"code",color:"#FF6B35",textIcon:"JC",website:"https://joycode.jd.com",notice:{apiKeyUrl:"https://joycode.jd.com/settings/api-keys"}},category:"apikey",transport:{baseUrl:"https://api.joycode.jd.com/v1/chat/completions",validateUrl:"https://api.joycode.jd.com/v1/models"},models:[{id:"joycode-v1",name:"JoyCode V1"},{id:"joycode-v1-code",name:"JoyCode V1 Code"}],features:{usage:!0,usageApikey:!0}},{id:"kilo-gateway",alias:"kgw",aliases:["kilo-gateway","kilogateway"],uiAlias:"kgw",category:"freeTier",display:{name:"Kilo Gateway",icon:"login",color:"#8B5CF6",textIcon:"KG",website:"https://kilo.ai",notice:{apiKeyUrl:"https://kilo.ai/dashboard?tab=apiKeys"}},authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://api.kilo.ai/api/gateway/chat/completions",validateUrl:"https://api.kilo.ai/api/gateway/models"},models:[{id:"kilo-auto/free",name:"Kilo Auto Free",contextLength:256e3},{id:"nvidia/nemotron-3-super-120b-a12b:free",name:"Nemotron 3 Super 120B (Free)",contextLength:262144},{id:"nvidia/nemotron-3-ultra-550b-a55b:free",name:"Nemotron 3 Ultra 550B (Free)",contextLength:1e6},{id:"kwaipilot/kat-coder-pro-v2.5:free",name:"Kat Coder Pro v2.5 (Free)",contextLength:256e3},{id:"kilo-auto/frontier",name:"Kilo Auto Frontier",contextLength:1e6},{id:"kilo-auto/balanced",name:"Kilo Auto Balanced",contextLength:1e6}]},{id:"kilocode",priority:70,alias:"kc",uiAlias:"kc",display:{name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC",website:"https://kilocode.ai",notice:{signupUrl:"https://kilocode.ai"}},category:"oauth",transport:{baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",headers:{},auth:{combined:!0,header:"Authorization",scheme:"bearer",hooks:["kilocodeOrg"]}},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"},{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner"}],modelsFetcher:{url:"https://api.kilo.ai/api/gateway/models",type:"openrouter-free"},passthroughModels:!0,oauth:{apiBaseUrl:"https://api.kilo.ai",initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"}},{id:"kimchi",priority:95,alias:"kimchi",uiAlias:"kimchi",display:{name:"Kimchi",icon:"restaurant",color:"#FF521D",textIcon:"KC",website:"https://kimchi.dev",notice:{signupUrl:"https://app.kimchi.dev"}},category:"freeTier",authModes:["oauth","apikey"],hasOAuth:!0,transport:{baseUrl:"https://llm.kimchi.dev/openai/v1/chat/completions",format:"openai",headers:{"User-Agent":"kimchi/0.1.50"},auth:{combined:!0,header:"Authorization",scheme:"bearer"}},models:[{id:"minimax-m3",name:"MiniMax-M3"},{id:"kimi-k2.7",name:"Kimi-K2.7"},{id:"kimi-k2.6",name:"Kimi-K2.6"},{id:"kimi-k2.5",name:"Kimi-K2.5"},{id:"nemotron-3-ultra-fp4",name:"Nemotron 3 Ultra FP4"},{id:"minimax-m2.7",name:"MiniMax-M2.7"},{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"}],serviceKinds:["llm","imageToText"],oauth:{webAppUrl:"https://app.kimchi.dev",validationUrl:"https://api.cast.ai/v1/llm/openai/supported-providers",userInfoUrl:"https://app.kimchi.dev/api/v1/me",modelsUrl:"https://llm.kimchi.dev/v1/models/metadata?include_in_cli=true"},passthroughModels:!0},t,{id:"kiro",priority:10,alias:"kr",uiAlias:"kr",display:{name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35",website:"https://kiro.dev",notice:{signupUrl:"https://kiro.dev"},deprecated:!0,deprecationNotice:"RISK_NOTICE"},category:"free",transport:{baseUrl:"https://runtime.us-east-1.kiro.dev/generateAssistantResponse",baseUrls:["https://runtime.us-east-1.kiro.dev/generateAssistantResponse","https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse","https://q.us-east-1.amazonaws.com/generateAssistantResponse"],format:"kiro",forceStream:!0,retry:{429:0},headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev",usage:{cwHost:"https://codewhisperer.us-east-1.amazonaws.com",qHost:"https://q.us-east-1.amazonaws.com",limitsPath:"/getUsageLimits"}},models:[{id:"claude-opus-5",name:"Claude Opus 5"},{id:"claude-opus-5-thinking",name:"Claude Opus 5 (Thinking)"},{id:"claude-opus-5-agentic",name:"Claude Opus 5 (Agentic)"},{id:"claude-opus-5-thinking-agentic",name:"Claude Opus 5 (Thinking + Agentic)"},{id:"claude-opus-4.8",name:"Claude Opus 4.8"},{id:"claude-opus-4.8-thinking",name:"Claude Opus 4.8 (Thinking)"},{id:"claude-opus-4.8-agentic",name:"Claude Opus 4.8 (Agentic)"},{id:"claude-opus-4.8-thinking-agentic",name:"Claude Opus 4.8 (Thinking + Agentic)"},{id:"claude-opus-4.7",name:"Claude Opus 4.7"},{id:"claude-opus-4.7-thinking",name:"Claude Opus 4.7 (Thinking)"},{id:"claude-opus-4.7-agentic",name:"Claude Opus 4.7 (Agentic)"},{id:"claude-opus-4.7-thinking-agentic",name:"Claude Opus 4.7 (Thinking + Agentic)"},{id:"claude-opus-4.5",name:"Claude Opus 4.5"},{id:"claude-opus-4.5-thinking",name:"Claude Opus 4.5 (Thinking)"},{id:"claude-opus-4.5-agentic",name:"Claude Opus 4.5 (Agentic)"},{id:"claude-opus-4.5-thinking-agentic",name:"Claude Opus 4.5 (Thinking + Agentic)"},{id:"claude-sonnet-5",name:"Claude Sonnet 5"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2",strip:["image","audio"]},{id:"qwen3-coder-next",name:"Qwen3 Coder Next",strip:["image","audio"]},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"gpt-5.6-sol",name:"GPT 5.6 Sol",contextLength:272e3,rateMultiplier:2.4,upstreamModelId:"gpt-5.6-sol",description:"Experimental preview of OpenAI GPT 5.6 Sol with 272k context window"},{id:"gpt-5.6-terra",name:"GPT 5.6 Terra",contextLength:272e3,rateMultiplier:1.2,upstreamModelId:"gpt-5.6-terra",description:"Experimental preview of OpenAI GPT 5.6 Terra with 272k context window"},{id:"gpt-5.6-luna",name:"GPT 5.6 Luna",contextLength:272e3,rateMultiplier:.6,upstreamModelId:"gpt-5.6-luna",description:"Experimental preview of OpenAI GPT 5.6 Luna with 272k context window"},{id:"claude-sonnet-5-thinking",name:"Claude Sonnet 5 (Thinking)"},{id:"claude-sonnet-4.5-thinking",name:"Claude Sonnet 4.5 (Thinking)"},{id:"claude-haiku-4.5-thinking",name:"Claude Haiku 4.5 (Thinking)"},{id:"gpt-5.6-sol-thinking",name:"GPT 5.6 Sol (Thinking)",contextLength:272e3,rateMultiplier:2.4,upstreamModelId:"gpt-5.6-sol",description:"Experimental preview of OpenAI GPT 5.6 Sol with 272k context window"},{id:"gpt-5.6-terra-thinking",name:"GPT 5.6 Terra (Thinking)",contextLength:272e3,rateMultiplier:1.2,upstreamModelId:"gpt-5.6-terra",description:"Experimental preview of OpenAI GPT 5.6 Terra with 272k context window"},{id:"gpt-5.6-luna-thinking",name:"GPT 5.6 Luna (Thinking)",contextLength:272e3,rateMultiplier:.6,upstreamModelId:"gpt-5.6-luna",description:"Experimental preview of OpenAI GPT 5.6 Luna with 272k context window"},{id:"claude-sonnet-5-agentic",name:"Claude Sonnet 5 (Agentic)"},{id:"claude-sonnet-4.5-agentic",name:"Claude Sonnet 4.5 (Agentic)"},{id:"claude-haiku-4.5-agentic",name:"Claude Haiku 4.5 (Agentic)"},{id:"gpt-5.6-sol-agentic",name:"GPT 5.6 Sol (Agentic)",contextLength:272e3,rateMultiplier:2.4,upstreamModelId:"gpt-5.6-sol",description:"Experimental preview of OpenAI GPT 5.6 Sol with 272k context window"},{id:"gpt-5.6-terra-agentic",name:"GPT 5.6 Terra (Agentic)",contextLength:272e3,rateMultiplier:1.2,upstreamModelId:"gpt-5.6-terra",description:"Experimental preview of OpenAI GPT 5.6 Terra with 272k context window"},{id:"gpt-5.6-luna-agentic",name:"GPT 5.6 Luna (Agentic)",contextLength:272e3,rateMultiplier:.6,upstreamModelId:"gpt-5.6-luna",description:"Experimental preview of OpenAI GPT 5.6 Luna with 272k context window"},{id:"claude-sonnet-5-thinking-agentic",name:"Claude Sonnet 5 (Thinking + Agentic)"},{id:"claude-sonnet-4.5-thinking-agentic",name:"Claude Sonnet 4.5 (Thinking + Agentic)"},{id:"claude-haiku-4.5-thinking-agentic",name:"Claude Haiku 4.5 (Thinking + Agentic)"},{id:"gpt-5.6-sol-thinking-agentic",name:"GPT 5.6 Sol (Thinking + Agentic)",contextLength:272e3,rateMultiplier:2.4,upstreamModelId:"gpt-5.6-sol",description:"Experimental preview of OpenAI GPT 5.6 Sol with 272k context window"},{id:"gpt-5.6-terra-thinking-agentic",name:"GPT 5.6 Terra (Thinking + Agentic)",contextLength:272e3,rateMultiplier:1.2,upstreamModelId:"gpt-5.6-terra",description:"Experimental preview of OpenAI GPT 5.6 Terra with 272k context window"},{id:"gpt-5.6-luna-thinking-agentic",name:"GPT 5.6 Luna (Thinking + Agentic)",contextLength:272e3,rateMultiplier:.6,upstreamModelId:"gpt-5.6-luna",description:"Experimental preview of OpenAI GPT 5.6 Luna with 272k context window"}],oauth:{ssoOidcEndpoint:"https://oidc.us-east-1.amazonaws.com",registerClientUrl:"https://oidc.us-east-1.amazonaws.com/client/register",deviceAuthUrl:"https://oidc.us-east-1.amazonaws.com/device_authorization",tokenUrl:"https://oidc.us-east-1.amazonaws.com/token",startUrl:"https://view.awsapps.com/start",clientName:"kiro-oauth-client",clientType:"public",scopes:["codewhisperer:completions","codewhisperer:analysis","codewhisperer:conversations"],grantTypes:["urn:ietf:params:oauth:grant-type:device_code","refresh_token"],issuerUrl:"https://identitycenter.amazonaws.com/ssoins-722374e8c3c8e6c6",socialAuthEndpoint:"https://prod.us-east-1.auth.desktop.kiro.dev",socialLoginUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/login",socialTokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/oauth/token",socialRefreshUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authMethods:["builder-id","idc","google","github","import"]},features:{usage:!0,usageApikey:!0}},{id:"linkup",alias:"linkup",display:{name:"Linkup",icon:"link",color:"#0EA5E9",textIcon:"LK",website:"https://linkup.so",notice:{apiKeyUrl:"https://app.linkup.so/api-keys"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://api.linkup.so/v1/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.005,freeMonthlyQuota:1e3,searchTypes:["web"],defaultMaxResults:5,maxMaxResults:50,timeoutMs:1e4,cacheTTLMs:3e5}},{id:"llm7",alias:"llm7",aliases:["llm-7"],uiAlias:"llm7",display:{name:"LLM7",icon:"pool",color:"#7C3AED",textIcon:"L7",website:"https://llm7.io",notice:{apiKeyUrl:"https://llm7.io"}},category:"apikey",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://api.llm7.io/v1/chat/completions",validateUrl:"https://api.llm7.io/v1/models"},models:[{id:"gpt-5.5",name:"GPT-5.5 (LLM7)",contextLength:105e4},{id:"claude-opus-5",name:"Claude Opus 5 (LLM7)",contextLength:1e6},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash (LLM7)",contextLength:1e6},{id:"grok-4.5",name:"Grok 4.5 (LLM7)",contextLength:5e5},{id:"kimi-k3",name:"Kimi K3 (LLM7)",contextLength:1e6}],passthroughModels:!0},{id:"local-device",alias:"local-device",display:{name:"Local Device",icon:"speaker",color:"#64748B",textIcon:"LD"},category:"freeTier",authType:"none",serviceKinds:["tts"],mediaPriority:5,noAuth:!0,ttsConfig:{baseUrl:"local-device",authType:"none",authHeader:"none",format:"local-device",models:[]}},{id:"meta",alias:"meta",aliases:["meta-ai","llama"],uiAlias:"meta",display:{name:"Meta AI",icon:"bolt",color:"#0064E0",textIcon:"MA",website:"https://dev.meta.ai",notice:{text:"Meta Model API. OpenAI-compatible endpoint for Meta's Muse Spark reasoning models.",apiKeyUrl:"https://dev.meta.ai"}},category:"apikey",thinkingConfig:{options:["minimal","low","medium","high","xhigh"],defaultMode:"low"},transport:{baseUrl:"https://api.meta.ai/v1/chat/completions",validateUrl:"https://api.meta.ai/v1/models",thinkingFormat:"meta"},models:[{id:"muse-spark-1.2-contributor",name:"Muse Spark 1.2 Contributor"},{id:"muse-spark-1.2",name:"Muse Spark 1.2"},{id:"muse-spark-1.1",name:"Muse Spark 1.1"}],serviceKinds:["llm"],modelsFetcher:{url:"https://api.meta.ai/v1/models",type:"openai"},passthroughModels:!0},{id:"mimo-free",hidden:!0,priority:50,hasFree:!0,alias:"mmf",uiAlias:"mmf",display:{name:"MiMo Code Free",icon:"smart_toy",color:"#FF6900",textIcon:"MF"},category:"free",noAuth:!0,transport:{baseUrl:"https://api.xiaomimimo.com/api/free-ai/openai/chat",noAuth:!0},models:[{id:"mimo-auto",name:"MiMo Auto"}],modelsFetcher:{url:"https://models.dev/api.json",type:"mimo-free"},passthroughModels:!0},u,v,{id:"mistral",priority:80,alias:"mistral",display:{name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai",notice:{apiKeyUrl:"https://console.mistral.ai/api-keys"}},category:"apikey",transport:{baseUrl:"https://api.mistral.ai/v1/chat/completions",validateUrl:"https://api.mistral.ai/v1/models",quirks:{dropClientMetadata:!0}},models:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"},{id:"mistral-embed",name:"Mistral Embed",kind:"embedding"}],serviceKinds:["llm","imageToText","embedding"],embeddingConfig:{baseUrl:"https://api.mistral.ai/v1/embeddings",authType:"apikey",authHeader:"bearer"}},{id:"mmf",hidden:!0,priority:200,display:{name:"MMF",icon:"hub",color:"#6366F1",textIcon:"MF"},category:"apikey",transport:{baseUrl:"https://api.xiaomimimo.com/api/free-ai/openai/chat",noAuth:!0},models:[{id:"mimo-auto",name:"MiMo Auto"}]},{id:"morph",alias:"morph",aliases:["morphllm"],uiAlias:"morph",display:{name:"Morph",icon:"change_history",color:"#14B8A6",textIcon:"MP",website:"https://morphllm.com",notice:{apiKeyUrl:"https://morphllm.com"}},category:"apikey",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://api.morphllm.com/v1/chat/completions",validateUrl:"https://api.morphllm.com/v1/models"},models:[{id:"morph-v3-large",name:"Morph v3 Large"},{id:"morph-v3-fast",name:"Morph v3 Fast"},{id:"morph-qwen35-397b",name:"Qwen 3.5 397B (Morph)",contextLength:262144},{id:"morph-minimax27-230b",name:"MiniMax M2.7 (Morph)",contextLength:200704},{id:"morph-qwen36-27b",name:"Qwen 3.6 27B (Morph)",contextLength:262144},{id:"morph-dsv4flash",name:"DeepSeek V4 Flash (Morph)",contextLength:1048576}]},{id:"nanobanana",priority:80,hasFree:!0,alias:"nanobanana",aliases:["nb"],uiAlias:"nb",display:{name:"NanoBanana API",icon:"extension",color:"#FFD700",textIcon:"\uD83C\uDF4C",website:"https://nanobananaapi.ai",notice:{text:"3rd-party proxy for Google Nano Banana (Gemini 2.5/3 Flash Image). For official, use Gemini provider.",apiKeyUrl:"https://nanobananaapi.ai/dashboard"}},category:"apikey",transport:{baseUrl:"https://api.nanobananaapi.ai/v1/chat/completions",validateUrl:"https://api.nanobananaapi.ai/v1/models"},models:[{id:"nanobanana-flash",name:"NanoBanana Flash",params:["n","size"],kind:"image"},{id:"nanobanana-pro",name:"NanoBanana Pro",params:["n","size"],kind:"image"}],serviceKinds:["image"],imageConfig:{baseUrl:"https://api.nanobananaapi.ai/api/v1/nanobanana/generate",pollUrl:"https://api.nanobananaapi.ai/api/v1/nanobanana/record-info"}},{id:"nebius",priority:70,alias:"nebius",display:{name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com",notice:{apiKeyUrl:"https://studio.nebius.com/settings/api-keys"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.studio.nebius.ai/v1/chat/completions",validateUrl:"https://api.studio.nebius.ai/v1/models"},models:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"},{id:"Qwen/Qwen3-Embedding-8B",name:"Qwen3 Embedding 8B",kind:"embedding"}],serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.tokenfactory.nebius.com/v1/embeddings"}},{id:"nous",priority:65,hasFree:!0,alias:"nous",aliases:["nous-portal","nous-research"],uiAlias:"nous",display:{name:"Nous Research",icon:"psychology",color:"#111827",textIcon:"NR",website:"https://nousresearch.com",notice:{text:"OpenAI-compatible inference. Third-party apps authenticate with a static Nous Portal API key; Hermes 4 does not currently advertise tool calling.",apiKeyUrl:"https://portal.nousresearch.com/api-keys"}},category:"freeTier",authType:"apikey",authModes:["apikey"],transport:{baseUrl:x},models:[{id:"nousresearch/hermes-4-70b",name:"Nous: Hermes 4 70B",contextLength:131072},{id:"nousresearch/hermes-4-405b",name:"Nous: Hermes 4 405B",contextLength:131072}],serviceKinds:["llm"],modelsFetcher:{url:y,type:"nous-free"},passthroughModels:!0},{id:"novita",priority:70,alias:"novita",display:{name:"Novita AI",icon:"cloud",color:"#7C3AED",textIcon:"NV",website:"https://novita.ai",notice:{apiKeyUrl:"https://novita.ai/settings/key-management"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.novita.ai/openai/v1/chat/completions",validateUrl:"https://api.novita.ai/openai/v1/models"},models:[{id:"deepseek/deepseek-v4-pro",name:"DeepSeek V4 Pro"},{id:"qwen/qwen3-coder-480b-a35b-instruct",name:"Qwen3 Coder 480B"},{id:"moonshotai/kimi-k3",name:"Kimi K3"},{id:"zai-org/glm-5.2",name:"GLM 5.2"}]},{id:"nvidia",priority:20,hasFree:!0,alias:"nvidia",display:{name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"}},category:"freeTier",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",validateUrl:"https://integrate.api.nvidia.com/v1/models"},models:[{id:"minimaxai/minimax-m3",name:"MiniMax M3"},{id:"moonshotai/kimi-k3",name:"Kimi K3"},{id:"deepseek-ai/deepseek-v4-pro-0813",name:"DeepSeek V4 Pro"},{id:"deepseek-ai/deepseek-v4-flash-0731",name:"DeepSeek V4 Flash"},{id:"moonshotai/kimi-k2.6",name:"Kimi K2.6"},{id:"nvidia/nemotron-3-ultra-550b-a55b",name:"Nemotron 3 Ultra"},{id:"nvidia/nemotron-3-super-120b-a12b",name:"Nemotron 3 Super"},{id:"nvidia/nv-embedqa-e5-v5",name:"NV EmbedQA E5 v5",kind:"embedding"},{id:"nvidia/parakeet-ctc-1.1b-asr",name:"Parakeet CTC 1.1B",params:["language"],kind:"stt"},{id:"fastpitch",name:"FastPitch",kind:"tts"},{id:"tacotron2",name:"Tacotron2",kind:"tts"}],serviceKinds:["llm","tts","embedding"],ttsConfig:{baseUrl:"https://integrate.api.nvidia.com/v1/audio/speech",authType:"apikey",authHeader:"bearer",format:"nvidia-tts"},embeddingConfig:{baseUrl:"https://integrate.api.nvidia.com/v1/embeddings",authType:"apikey",authHeader:"bearer"}},{id:"ollama-local",priority:50,hasFree:!0,alias:"ollama-local",display:{name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},category:"apikey",baseUrlField:{label:"Ollama Host URL",placeholder:"http://localhost:11434"},transport:{baseUrl:"http://localhost:11434/api/chat",format:"ollama",thinkingFormat:"ollama"},models:[{id:"embeddinggemma",name:"EmbeddingGemma",kind:"embedding"},{id:"nomic-embed-text",name:"Nomic Embed Text",kind:"embedding"},{id:"bge-m3",name:"BGE M3",kind:"embedding"}],serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"http://localhost:11434/v1/embeddings",authType:"none"}},{id:"ollama-search",alias:"ollama-search",display:{name:"Ollama Search",icon:"cloud",color:"#ffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Web search via Ollama Cloud subscription. Reuses the API key from the Ollama (chat) provider.",apiKeyUrl:"https://ollama.com/settings/keys"}},category:"apikey",authType:"apikey",authModes:["apikey"],serviceKinds:["webSearch"],credentialFallback:"ollama",searchConfig:{baseUrl:"https://ollama.com/api/web_search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:0,freeMonthlyQuota:1e3,searchTypes:["web"],defaultMaxResults:5,maxMaxResults:10,timeoutMs:1e4,cacheTTLMs:3e5}},{id:"ollama",priority:30,hasFree:!0,alias:"ollama",display:{name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo \xb7 Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},category:"freeTier",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://ollama.com/api/chat",validateUrl:"https://ollama.com/api/tags",format:"ollama",thinkingFormat:"ollama"},models:[{id:"gpt-oss:120b",name:"GPT OSS 120B"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"minimax-m2.5",name:"MiniMax M2.5"},{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"qwen3.5",name:"Qwen3.5"},{id:"minimax-m3",name:"MiniMax M3"}],serviceKinds:["llm","webFetch"],fetchConfig:{baseUrl:"https://ollama.com/api/web_fetch",method:"POST",authType:"apikey",authHeader:"bearer",formats:["markdown"],maxCharacters:2e5,timeoutMs:3e4},features:{usage:!0,usageApikey:!0}},{id:"openai",priority:30,alias:"openai",display:{name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com",notice:{apiKeyUrl:"https://platform.openai.com/api-keys"}},category:"apikey",thinkingConfig:{options:["auto","none","low","medium","high"],defaultMode:"auto"},transport:{baseUrl:"https://api.openai.com/v1/chat/completions",forceStream:!0},models:[{id:"gpt-5.4",name:"GPT-5.4"},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini"},{id:"gpt-5.4-nano",name:"GPT-5.4 Nano"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-nano",name:"GPT-5 Nano"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-4.1-mini",name:"GPT-4.1 Mini"},{id:"gpt-4.1-nano",name:"GPT-4.1 Nano"},{id:"o3",name:"O3"},{id:"o3-mini",name:"O3 Mini"},{id:"o3-pro",name:"O3 Pro"},{id:"o4-mini",name:"O4 Mini"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"},{id:"text-embedding-3-large",name:"Text Embedding 3 Large",kind:"embedding"},{id:"text-embedding-3-small",name:"Text Embedding 3 Small",kind:"embedding"},{id:"text-embedding-ada-002",name:"Text Embedding Ada 002",kind:"embedding"},{id:"tts-1",name:"TTS-1",kind:"tts"},{id:"tts-1-hd",name:"TTS-1 HD",kind:"tts"},{id:"gpt-4o-mini-tts",name:"GPT-4o Mini TTS",kind:"tts"},{id:"whisper-1",name:"Whisper 1",params:["language","response_format","temperature","prompt"],kind:"stt"},{id:"gpt-4o-transcribe",name:"GPT-4o Transcribe",params:["language","response_format","temperature","prompt"],kind:"stt"},{id:"gpt-4o-mini-transcribe",name:"GPT-4o Mini Transcribe",params:["language","response_format","temperature","prompt"],kind:"stt"},{id:"gpt-image-2.5",name:"GPT Image 2.5",params:["n","size","quality","response_format"],kind:"image"},{id:"gpt-image-2.5-flare",name:"GPT Image 2.5 Flare",params:["n","size","quality","response_format"],kind:"image"},{id:"gpt-image-2.5-sunburst",name:"GPT Image 2.5 Sunburst",params:["n","size","quality","response_format"],kind:"image"},{id:"gpt-image-1",name:"GPT Image 1",params:["n","size","quality","response_format"],kind:"image"},{id:"dall-e-3",name:"DALL-E 3",params:["size","quality","style","response_format"],kind:"image"},{id:"dall-e-2",name:"DALL-E 2",params:["n","size","response_format"],kind:"image"}],serviceKinds:["llm","embedding","tts","stt","image","imageToText","webSearch"],ttsConfig:{baseUrl:"https://api.openai.com/v1/audio/speech",authType:"apikey",authHeader:"bearer",format:"openai",defaultModel:"gpt-4o-mini-tts"},sttConfig:{baseUrl:"https://api.openai.com/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"openai"},embeddingConfig:{baseUrl:"https://api.openai.com/v1/embeddings",authType:"apikey",authHeader:"bearer"},imageConfig:{baseUrl:"https://api.openai.com/v1/images/generations"},searchViaChat:{defaultModel:"gpt-4o-mini",pricingUrl:"https://openai.com/api/pricing"}},{id:"opencode-go",priority:210,alias:"opencode-go",aliases:["ocg"],uiAlias:"ocg",display:{name:"OpenCode Go",icon:"terminal",color:"#E87040",textIcon:"OC",website:"https://opencode.ai/auth",notice:{text:"OpenCode Go subscription: $5/mo (then 0/mo). Access to Kimi, GLM, Qwen, MiMo, MiniMax models.",apiKeyUrl:"https://opencode.ai/auth"}},category:"apikey",transport:{baseUrl:"https://opencode.ai/zen/go/v1/chat/completions",headers:{},usage:{url:"https://opencode.ai/zen/go/v1/usage"},quirks:{forceAutoToolChoiceModels:["muse-spark-1.2-contributor","muse-spark-1.3-contributor"]}},transports:[{format:"openai",baseUrl:"https://opencode.ai/zen/go/v1/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},{format:"claude",baseUrl:"https://opencode.ai/zen/go/v1/messages",auth:{combined:!0,header:"x-api-key",scheme:"raw",anthropicVersion:!0}},{format:"openai-responses",baseUrl:"https://opencode.ai/zen/go/v1/responses",auth:{combined:!0,header:"Authorization",scheme:"bearer"}}],models:[{id:"deepseek-flash",name:"DeepSeek V4.1 Flash",supportedFormats:["openai"]},{id:"glm-5.3-flash",name:"GLM 5.3 Flash (Vision)",supportedFormats:["openai"]},{id:"glm-5.3",name:"GLM 5.3",supportedFormats:["openai"]},{id:"glm-5.2",name:"GLM 5.2",supportedFormats:["openai"]},{id:"glm-5.1",name:"GLM 5.1",supportedFormats:["openai"]},{id:"kimi-k2.7-code",name:"Kimi K2.7 Code",supportedFormats:["openai"]},{id:"kimi-k2.6",name:"Kimi K2.6",supportedFormats:["openai"]},{id:"kimi-k3",name:"Kimi K3",supportedFormats:["openai"]},{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro",supportedFormats:["openai","claude","openai-responses"]},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash",supportedFormats:["openai","claude","openai-responses"]},{id:"deepseek-v4-flash-vision-exp",name:"DeepSeek V4 Flash Vision (Exp)",supportedFormats:["openai","claude","openai-responses"]},{id:"longcat-2.0",name:"LongCat 2.0",supportedFormats:["openai"]},{id:"mimo-v2.5",name:"MiMo V2.5",supportedFormats:["openai"]},{id:"mimo-v2.5-pro",name:"MiMo V2.5 Pro",supportedFormats:["openai"]},{id:"minimax-m3",name:"MiniMax M3",supportedFormats:["openai","claude"]},{id:"minimax-m2.7",name:"MiniMax M2.7",supportedFormats:["openai","claude"]},{id:"minimax-m2.5",name:"MiniMax M2.5",supportedFormats:["openai","claude"]},{id:"qwen3.8-max",name:"Qwen 3.8 Max",supportedFormats:["openai","claude"]},{id:"qwen3.8-flash",name:"Qwen 3.8 Flash",supportedFormats:["openai","claude"]},{id:"qwen3.7-max",name:"Qwen 3.7 Max",supportedFormats:["openai","claude"]},{id:"qwen3.7-plus",name:"Qwen 3.7 Plus",supportedFormats:["openai","claude"]},{id:"qwen3.6-plus",name:"Qwen 3.6 Plus",supportedFormats:["openai","claude"]},{id:"hy4-preview",name:"Hy4 Preview",supportedFormats:["openai"]},{id:"hy3",name:"Hy3",supportedFormats:["openai"]},{id:"grok-4.6",name:"Grok 4.6",targetFormat:"openai-responses",supportedFormats:["openai-responses"]},{id:"gpt-5.6-luna",name:"GPT 5.6 Luna",targetFormat:"openai-responses",supportedFormats:["openai-responses"]},{id:"muse-spark-1.2-contributor",name:"Muse Spark 1.2 Contributor",targetFormat:"openai-responses",supportedFormats:["openai-responses"]},{id:"muse-spark-1.3-contributor",name:"Muse Spark 1.3 Contributor",targetFormat:"openai-responses",supportedFormats:["openai-responses"]},{id:"ox-alpha-free",name:"Ox Alpha Free",supportedFormats:["openai"]}],features:{usage:!0,usageApikey:!0},usageUrl:"https://opencode.ai/zen/go/v1/usage"},{id:"opencode-zen",priority:205,alias:"opencode-zen",aliases:["ocz"],uiAlias:"ocz",display:{name:"OpenCode Zen",icon:"terminal",color:"#E87040",textIcon:"OCZ",website:"https://opencode.ai/auth",notice:{text:"OpenCode Zen: Pay-as-you-go access to Zen models. Requires an API key and a payment method.",apiKeyUrl:"https://opencode.ai/auth"}},category:"apikey",transport:{baseUrl:"https://opencode.ai/zen/v1",headers:{}},models:[{id:"claude-fable-5",name:"Claude Fable 5",targetFormat:"claude"},{id:"claude-opus-5",name:"Claude Opus 5",targetFormat:"claude"},{id:"claude-opus-4-8",name:"Claude Opus 4.8",targetFormat:"claude"},{id:"claude-opus-4-7",name:"Claude Opus 4.7",targetFormat:"claude"},{id:"claude-opus-4-6",name:"Claude Opus 4.6",targetFormat:"claude"},{id:"claude-opus-4-5",name:"Claude Opus 4.5",targetFormat:"claude"},{id:"claude-opus-4-1",name:"Claude Opus 4.1",targetFormat:"claude"},{id:"claude-sonnet-5",name:"Claude Sonnet 5",targetFormat:"claude"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",targetFormat:"claude"},{id:"claude-sonnet-4-5",name:"Claude Sonnet 4.5",targetFormat:"claude"},{id:"claude-sonnet-4",name:"Claude Sonnet 4",targetFormat:"claude"},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5",targetFormat:"claude"},{id:"gemini-3.6-flash",name:"Gemini 3.6 Flash"},{id:"gemini-3.5-flash-lite",name:"Gemini 3.5 Flash Lite"},{id:"gemini-3.5-flash",name:"Gemini 3.5 Flash"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro"},{id:"gemini-3-flash",name:"Gemini 3 Flash"},{id:"gpt-5.6-sol",name:"GPT 5.6 Sol"},{id:"gpt-5.6-terra",name:"GPT 5.6 Terra"},{id:"gpt-5.6-luna",name:"GPT 5.6 Luna"},{id:"gpt-5.5",name:"GPT 5.5"},{id:"gpt-5.5-pro",name:"GPT 5.5 Pro"},{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.4-pro",name:"GPT 5.4 Pro"},{id:"gpt-5.4-mini",name:"GPT 5.4 Mini"},{id:"gpt-5.4-nano",name:"GPT 5.4 Nano"},{id:"gpt-5.3-codex-spark",name:"GPT 5.3 Codex Spark"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5",name:"GPT 5"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-nano",name:"GPT 5 Nano"},{id:"grok-build-0.1",name:"Grok Build 0.1"},{id:"grok-4.5",name:"Grok 4.5"},{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro"},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash"},{id:"glm-5.2",name:"GLM 5.2"},{id:"glm-5.1",name:"GLM 5.1"},{id:"glm-5",name:"GLM 5"},{id:"minimax-m3",name:"MiniMax M3",targetFormat:"claude"},{id:"minimax-m2.7",name:"MiniMax M2.7",targetFormat:"claude"},{id:"minimax-m2.5",name:"MiniMax M2.5",targetFormat:"claude"},{id:"kimi-k3",name:"Kimi K3"},{id:"kimi-k2.7-code",name:"Kimi K2.7 Code"},{id:"kimi-k2.6",name:"Kimi K2.6"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"qwen3.6-plus",name:"Qwen 3.6 Plus",targetFormat:"claude"},{id:"qwen3.5-plus",name:"Qwen 3.5 Plus",targetFormat:"claude"}]},{id:"opencode",priority:40,hasFree:!0,alias:"oc",uiAlias:"oc",display:{name:"OpenCode Free",icon:"terminal",color:"#E87040",textIcon:"OC"},category:"free",noAuth:!0,transport:{baseUrl:"https://opencode.ai",headers:{"x-opencode-client":"desktop"},noAuth:!0,quirks:{forceAutoToolChoiceModels:["muse-spark-1.3-contributor-free"]}},models:[{id:"x-preview-f-free",name:"Ox Alpha Free",targetFormat:"openai",supportedFormats:["openai"]},{id:"ox-alpha-free",name:"Ox Alpha Free",upstreamModelId:"x-preview-f-free",targetFormat:"openai",supportedFormats:["openai"]},{id:"ox-alpha",name:"Ox Alpha",upstreamModelId:"x-preview-f-free",targetFormat:"openai",supportedFormats:["openai"]},{id:"muse-spark-1.2-contributor-free",name:"Muse Spark 1.2 Contributor Free",targetFormat:"openai-responses",supportedFormats:["openai-responses"]},{id:"muse-spark-1.3-contributor-free",name:"Muse Spark 1.3 Contributor Free",targetFormat:"openai-responses",supportedFormats:["openai-responses"]},{id:"mimo-v2.5-free",name:"MiMo v2.5 Free",targetFormat:"openai",supportedFormats:["openai"]},{id:"hy3-free",name:"Hunyuan 3 Free",targetFormat:"openai",supportedFormats:["openai"]},{id:"nemotron-3.5-lightning-free",name:"Nemotron 3.5 Lightning Free",targetFormat:"openai",supportedFormats:["openai"]},{id:"nemotron-3-ultra-free",name:"Nemotron 3 Ultra Free",targetFormat:"openai",supportedFormats:["openai"]},{id:"laguna-s-2.1-free",name:"Laguna S 2.1 Free",targetFormat:"openai",supportedFormats:["openai"]}],modelsFetcher:{url:"https://opencode.ai/zen/v1/models",type:"opencode-free"},passthroughModels:!0},{id:"openmodel",priority:100,alias:"openmodel",uiAlias:"openmodel",display:{name:"OpenModel.ai",icon:"smart_toy",color:"#7C3AED",textIcon:"OM",website:"https://openmodel.ai",notice:{apiKeyUrl:"https://openmodel.ai/settings/api-keys",text:"OpenModel.ai uses the OpenAI Responses API format (/v1/responses). Compatible with Codex, Claude Code Responses mode."}},category:"apikey",transport:{baseUrl:"https://api.openmodel.ai/v1/chat/completions",format:"openai"},models:[],features:{usage:!0}},{id:"openrouter",priority:10,hasFree:!0,alias:"openrouter",display:{name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After 0 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"}},category:"freeTier",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://openrouter.ai/api/v1/chat/completions",thinkingFormat:"openai",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},models:[{id:"openai/text-embedding-3-large",name:"OpenAI Text Embedding 3 Large",kind:"embedding"},{id:"openai/text-embedding-3-small",name:"OpenAI Text Embedding 3 Small",kind:"embedding"},{id:"openai/text-embedding-ada-002",name:"OpenAI Text Embedding Ada 002",kind:"embedding"},{id:"qwen/qwen3-embedding-8b",name:"Qwen3 Embedding 8B",kind:"embedding"},{id:"perplexity/pplx-embed-v1-4b",name:"Perplexity Embed V1 4B",kind:"embedding"},{id:"perplexity/pplx-embed-v1-0.6b",name:"Perplexity Embed V1 0.6B",kind:"embedding"},{id:"nvidia/llama-nemotron-embed-vl-1b-v2:free",name:"NVIDIA Nemotron Embed VL 1B V2 (Free)",kind:"embedding"},{id:"openai/gpt-4o-mini-tts",name:"GPT-4o Mini TTS",kind:"tts"},{id:"openai/tts-1-hd",name:"TTS-1 HD",kind:"tts"},{id:"openai/tts-1",name:"TTS-1",kind:"tts"},{id:"openai/dall-e-3",name:"DALL-E 3 (via OpenRouter)",params:["size","quality","style","response_format"],kind:"image"},{id:"openai/gpt-image-1",name:"GPT Image 1 (via OpenRouter)",params:["n","size","quality","response_format"],kind:"image"},{id:"google/imagen-3.0-generate-002",name:"Imagen 3 (via OpenRouter)",params:["n","size"],kind:"image"},{id:"black-forest-labs/FLUX.1-schnell",name:"FLUX.1 Schnell (via OpenRouter)",params:["n","size"],kind:"image"},{id:"google/veo-3.1",name:"Veo 3.1 (via OpenRouter)",params:["duration","aspect_ratio","resolution"],kind:"video"},{id:"openai/sora-2-pro",name:"Sora 2 Pro (via OpenRouter)",params:["duration","aspect_ratio","resolution"],kind:"video"},{id:"bytedance/seedance-2.0",name:"Seedance 2.0 (via OpenRouter)",params:["duration","aspect_ratio","resolution"],kind:"video"}],serviceKinds:["llm","embedding","tts","imageToText","video"],ttsConfig:{baseUrl:"https://openrouter.ai/api/v1/chat/completions",defaultModel:"openai/gpt-4o-mini-tts",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},embeddingConfig:{baseUrl:"https://openrouter.ai/api/v1/embeddings",authType:"apikey",authHeader:"bearer",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},imageConfig:{baseUrl:"https://openrouter.ai/api/v1/images/generations",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},videoConfig:{baseUrl:"https://openrouter.ai/api/v1/videos",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"},passthroughModels:!0},{id:"ovh",priority:90,hasFree:!0,alias:"ovh",uiAlias:"ovh",display:{name:"OVH AI Endpoints",icon:"cloud",color:"#0078D4",textIcon:"OV",website:"https://ai.endpoints.ovh.com",notice:{text:"Free tier available with generous limits",apiKeyUrl:"https://ai.endpoints.ovh.com/settings/api-keys"}},category:"freeTier",transport:{baseUrl:"https://ai.endpoints.ovh.com/v1/chat/completions",validateUrl:"https://ai.endpoints.ovh.com/v1/models"},models:[{id:"ovh/mistral-7b-instruct",name:"Mistral 7B Instruct"},{id:"ovh/llama-3-8b-instruct",name:"Llama 3 8B Instruct"},{id:"ovh/llama-3-70b-instruct",name:"Llama 3 70B Instruct"},{id:"ovh/mixtral-8x7b-instruct",name:"Mixtral 8x7B Instruct"},{id:"ovh/codellama-7b-instruct",name:"CodeLlama 7B Instruct"},{id:"ovh/codellama-34b-instruct",name:"CodeLlama 34B Instruct"}],features:{usage:!0,usageApikey:!0}},{id:"perplexity-agent",priority:181,alias:"perplexity-agent",aliases:["pplx-agent","pplx-responses"],uiAlias:"pa",display:{name:"Perplexity Agent",icon:"travel_explore",color:"#20808D",textIcon:"PA",website:"https://www.perplexity.ai",notice:{text:"Perplexity Agent API exposes GPT, Claude, Gemini, Grok, GLM, Kimi, and Sonar models through one OpenAI-compatible Responses API.",apiKeyUrl:"https://www.perplexity.ai/settings/api"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.perplexity.ai/v1/responses",validateUrl:"https://api.perplexity.ai/v1/models",format:"openai-responses"},models:[{id:"perplexity/sonar",name:"Perplexity Sonar"},{id:"openai/gpt-5.5",name:"GPT-5.5"},{id:"openai/gpt-5.4",name:"GPT-5.4"},{id:"openai/gpt-5.4-mini",name:"GPT-5.4 Mini"},{id:"anthropic/claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"anthropic/claude-opus-4-8",name:"Claude Opus 4.8"},{id:"google/gemini-3.1-pro-preview",name:"Gemini 3.1 Pro"},{id:"xai/grok-4.20-reasoning",name:"Grok 4.20 Reasoning"},{id:"perplexity/glm-5.2",name:"GLM 5.2"},{id:"perplexity/kimi-k2.7-code",name:"Kimi K2.7 Code"},{id:"nvidia/nemotron-3-super-120b-a12b",name:"Nemotron 3 Super 120B"}],serviceKinds:["llm","webSearch"],searchViaChat:{defaultModel:"perplexity/sonar",endpoint:"https://api.perplexity.ai/v1/responses",pricingUrl:"https://docs.perplexity.ai/docs/agent-api/models"},modelsFetcher:{url:"https://api.perplexity.ai/v1/models",type:"openai"},passthroughModels:!0},{id:"perplexity-web",priority:220,alias:"perplexity-web",aliases:["pw"],uiAlias:"pw",display:{name:"Perplexity Web (Pro/Max)",icon:"search",color:"#20808D",textIcon:"PW",website:"https://www.perplexity.ai"},category:"webCookie",authType:"cookie",authHint:"Paste your __Secure-next-auth.session-token cookie value from perplexity.ai",transport:{baseUrl:"https://www.perplexity.ai/rest/sse/perplexity_ask",format:"perplexity-web",authType:"cookie"},models:[{id:"pplx-auto",name:"Perplexity Auto (Free)"},{id:"pplx-sonar",name:"Perplexity Sonar"},{id:"pplx-gpt",name:"GPT-5.4 (via Perplexity)"},{id:"pplx-gemini",name:"Gemini 3.1 Pro (via Perplexity)"},{id:"pplx-sonnet",name:"Claude Sonnet 4.6 (via Perplexity)"},{id:"pplx-opus",name:"Claude Opus 4.6 (via Perplexity)"},{id:"pplx-nemotron",name:"Nemotron 3 Super (via Perplexity)"}]},{id:"perplexity",priority:180,alias:"perplexity",aliases:["pplx"],uiAlias:"pplx",display:{name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai",notice:{apiKeyUrl:"https://www.perplexity.ai/settings/api"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.perplexity.ai/chat/completions",validateUrl:"https://api.perplexity.ai/models"},models:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}],serviceKinds:["llm","webSearch"],searchViaChat:{defaultModel:"sonar",endpoint:"https://api.perplexity.ai/chat/completions",pricingUrl:"https://docs.perplexity.ai/guides/pricing"}},{id:"playht",alias:"playht",display:{name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht",notice:{apiKeyUrl:"https://play.ht/studio/api-access"}},category:"apikey",authType:"apikey",serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.play.ht/api/v2/tts/stream",authType:"apikey",authHeader:"playht",format:"playht",models:[{id:"PlayDialog",name:"PlayDialog"},{id:"Play3.0-mini",name:"Play 3.0 Mini"}]},hidden:!0},{id:"poolside",priority:60,alias:"poolside",aliases:["ps"],uiAlias:"ps",display:{name:"Poolside",icon:"water_drop",color:"#0EA5E9",textIcon:"PS",website:"https://poolside.ai",notice:{apiKeyUrl:"https://platform.poolside.ai/api-keys"}},category:"freeTier",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://inference.poolside.ai/v1/chat/completions",validateUrl:"https://inference.poolside.ai/v1/models"},models:[{id:"poolside/laguna-s-2.1",name:"Laguna S 2.1"},{id:"poolside/laguna-xs-2.1",name:"Laguna XS 2.1"}]},{id:"qoder",priority:30,alias:"qd",uiAlias:"qd",display:{name:"Qoder",icon:"water_drop",color:"#EC4899",website:"https://qoder.com",notice:{signupUrl:"https://qoder.com"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,thinkingFormat:"qoder",authHint:"Personal Access Token (pt-...) từ https://qoder.com/account/integrations",transport:{baseUrl:"https://api3.qoder.sh/algo/api/v2/service/pro/sse/agent_chat_generation",forceStream:!0,headers:{},timeoutMs:12e4,usage:{url:"https://openapi.qoder.sh/api/v2/quota/usage"}},models:[{id:"ultimate",name:"Ultimate"},{id:"auto",name:"Auto"},{id:"performance",name:"Performance"},{id:"efficient",name:"Efficient"},{id:"lite",name:"Lite"},{id:"qmodel_38max",name:"Qwen3.8-Max"},{id:"qmodel_latest",name:"Qwen3.7-Max"},{id:"qmodel",name:"Qwen3.7-Plus"},{id:"kmodel_latest",name:"Kimi-K3"},{id:"kmodel",name:"Kimi-K2.7-Code"},{id:"gmodel",name:"GLM-5.3"},{id:"dmodel",name:"DeepSeek-V4-Pro"},{id:"dfmodel",name:"DeepSeek-V4-Flash"},{id:"mmodel",name:"MiniMax-M3"}],oauth:{openApiBaseUrl:"https://openapi.qoder.sh",centerBaseUrl:"https://center.qoder.sh",chatBaseUrl:"https://api3.qoder.sh",deviceTokenUrl:"https://openapi.qoder.sh/api/v1/deviceToken/poll",refreshUrl:"https://openapi.qoder.sh/api/v1/deviceToken/refresh",userInfoUrl:"https://openapi.qoder.sh/api/v1/userinfo",quotaUsageUrl:"https://openapi.qoder.sh/api/v2/quota/usage",loginUrl:"https://qoder.com/device/selectAccounts"},features:{usage:!0,usageApikey:!0},protocolProfile:"intl"},{id:"qoderwork-cn",priority:85,alias:"qdcn",uiAlias:"qdcn",display:{name:"QoderWork CN",icon:"water_drop",color:"#DB2777",website:"https://qoder.com.cn",notice:{signupUrl:"https://qoder.com.cn"}},category:"oauth",hasOAuth:!0,authModes:["oauth"],transport:{baseUrl:"https://gateway.qoder.com.cn/algo/api/v2/service/pro/sse/agent_chat_generation",forceStream:!0,headers:{},timeoutMs:12e4,usage:{url:"https://openapi.qoder.com.cn/api/v2/quota/usage"}},models:[{id:"auto",name:"Auto"},{id:"qmodel_preview",name:"Qwen3.8-Max-Preview"},{id:"qmodel_latest",name:"Qwen3.7-Max"},{id:"qmodel",name:"Qwen3.7-Plus"},{id:"q36fmodel",name:"Qwen3.6-Flash"},{id:"dmodel",name:"DeepSeek-V4-Pro"},{id:"dfmodel",name:"DeepSeek-V4-Flash"},{id:"gm51model",name:"GLM-5.2"},{id:"kmodel",name:"Kimi-K2.7-Code"},{id:"mmodel",name:"MiniMax-M2.7"}],oauth:{openApiBaseUrl:"https://openapi.qoder.com.cn",chatBaseUrl:"https://gateway.qoder.com.cn",deviceTokenUrl:"https://openapi.qoder.com.cn/api/v1/deviceToken/poll",refreshUrl:"https://openapi.qoder.com.cn/api/v1/deviceToken/refresh",userInfoUrl:"https://openapi.qoder.com.cn/api/v1/userinfo",loginUrl:"https://qoder.com.cn/device/selectAccounts",clientId:"1c5e33e1-364d-4ce6-b02c-acaa81274a5c",redirectUri:"qoder-work-cn://"},features:{usage:!0,profileRefresh:!0},protocolProfile:"cn-work"},{id:"reasonix",priority:121,alias:"reasonix",uiAlias:"reasonix",display:{name:"Reasonix IDE",icon:"psychology",color:"#8B5CF6",textIcon:"RX",website:"https://reasonix.ai",notice:{apiKeyUrl:"https://platform.reasonix.ai/api-keys"}},category:"apikey",transport:{baseUrl:"https://api.reasonix.ai/v1/chat/completions",validateUrl:"https://api.reasonix.ai/v1/models"},models:[{id:"reasonix-v1",name:"Reasonix V1"},{id:"reasonix-v1-reasoning",name:"Reasonix V1 Reasoning"}],features:{usage:!0,usageApikey:!0}},{id:"recraft",priority:70,alias:"recraft",display:{name:"Recraft",icon:"image",color:"#EC4899",textIcon:"RC",website:"https://recraft.ai",notice:{apiKeyUrl:"https://www.recraft.ai/profile/api"}},category:"apikey",authType:"apikey",transport:null,models:[{id:"recraftv3",name:"Recraft V3",params:["n","size","style"],kind:"image"},{id:"recraftv2",name:"Recraft V2",params:["n","size","style"],kind:"image"}],serviceKinds:["image"],imageConfig:{baseUrl:"https://external.api.recraft.ai/v1/images/generations"}},{id:"runwayml",priority:80,alias:"runwayml",aliases:["runway"],uiAlias:"runway",display:{name:"Runway ML",icon:"movie",color:"#000000",textIcon:"RW",website:"https://runwayml.com",notice:{apiKeyUrl:"https://dev.runwayml.com"}},category:"apikey",authType:"apikey",transport:null,models:[{id:"gen4_image",name:"Gen-4 Image",params:["size"],kind:"image"},{id:"gen4_image_turbo",name:"Gen-4 Image Turbo",params:["size"],kind:"image"},{id:"gen4_turbo",name:"Gen-4 Turbo",params:[],kind:"video"},{id:"gen3a_turbo",name:"Gen-3 Alpha Turbo",params:[],kind:"video"}],serviceKinds:["image"],imageConfig:{baseUrl:"https://api.dev.runwayml.com/v1"}},{id:"sambanova",alias:"samba",aliases:["sambanova-ai"],uiAlias:"samba",hidden:!0,display:{name:"SambaNova",icon:"memory",color:"#F97316",textIcon:"SN",website:"https://sambanova.ai",notice:{apiKeyUrl:"https://cloud.sambanova.ai/apis"}},category:"apikey",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://api.sambanova.ai/v1/chat/completions",validateUrl:"https://api.sambanova.ai/v1/models"},models:[{id:"MiniMax-M2.7",name:"MiniMax M2.7",contextLength:196608}]},{id:"sdwebui",priority:110,alias:"sdwebui",display:{name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},category:"apikey",transport:null,models:[{id:"stable-diffusion-v1-5",name:"Stable Diffusion v1.5",params:["n","size"],kind:"image"},{id:"sdxl-base-1.0",name:"SDXL Base 1.0",params:["n","size"],kind:"image"}],serviceKinds:["image"],imageConfig:{baseUrl:"http://localhost:7860/sdapi/v1/txt2img"}},{id:"searchapi",alias:"searchapi",display:{name:"SearchAPI",icon:"search",color:"#0EA5A4",textIcon:"SA",website:"https://www.searchapi.io",notice:{apiKeyUrl:"https://www.searchapi.io/dashboard"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://www.searchapi.io/api/v1/search",method:"GET",authType:"apikey",authHeader:"api_key",costPerQuery:.004,freeMonthlyQuota:100,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},{id:"searxng",alias:"searxng",display:{name:"SearXNG",icon:"saved_search",color:"#3B82F6",textIcon:"SX",website:"https://docs.searxng.org"},category:"freeTier",authType:"none",serviceKinds:["webSearch"],noAuth:!0,searchConfig:{baseUrl:A,method:"GET",authType:"none",authHeader:"none",costPerQuery:0,freeMonthlyQuota:999999,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:50,timeoutMs:1e4,cacheTTLMs:18e4}},{id:"selfhosted-embedding",priority:50,hasFree:!0,alias:"selfhosted-embedding",display:{name:"Self-hosted Embedding",icon:"cloud",color:"#ffffffff",textIcon:"SE",website:"https://github.com/ggml-org/llama.cpp"},category:"apikey",baseUrlField:{label:"Base URL",placeholder:"http://localhost:8080/v1",help:"OpenAI base URL — /embeddings is appended."},auth:{apiKey:{text:"Set providerSpecificData.baseUrl to the OpenAI base URL, e.g. http://host:8080/v1 — /embeddings is appended. The API key is not checked by local servers; any value works."}},models:[{id:"embedding",name:"Self-hosted embedding model",kind:"embedding"}],serviceKinds:["embedding"],embeddingConfig:{baseUrl:"http://localhost:8080/v1/embeddings",authType:"apikey",authHeader:"bearer"}},{id:"selfhosted-stt",priority:50,hasFree:!0,alias:"selfhosted-stt",display:{name:"Self-hosted STT",icon:"cloud",color:"#ffffffff",textIcon:"ST",website:"https://github.com/ggml-org/whisper.cpp"},category:"apikey",baseUrlField:{label:"Base URL",placeholder:"http://localhost:8080/v1/audio/transcriptions",help:"Full transcriptions endpoint."},auth:{apiKey:{text:"Set providerSpecificData.baseUrl to the full transcriptions URL, e.g. http://host:8080/v1/audio/transcriptions. The API key is not checked by local servers; any value works."}},models:[{id:"whisper-1",name:"Whisper (self-hosted)",params:["language","response_format","temperature","prompt"],kind:"stt"}],serviceKinds:["stt"],sttConfig:{baseUrl:"http://localhost:8080/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"openai"}},{id:"selfhosted-tts",priority:50,hasFree:!0,alias:"selfhosted-tts",display:{name:"Self-hosted TTS",icon:"cloud",color:"#ffffffff",textIcon:"TT",website:"https://github.com/remsky/Kokoro-FastAPI"},category:"apikey",baseUrlField:{label:"Base URL",placeholder:"http://localhost:8880",help:"Server root — /v1/audio/speech is appended."},auth:{apiKey:{text:"Set providerSpecificData.baseUrl to the server root, e.g. http://host:8080 — /v1/audio/speech is appended. The API key is not checked by local servers; any value works."}},models:[{id:"kokoro",name:"Kokoro (self-hosted)",params:["voice","response_format","speed"],kind:"tts"}],serviceKinds:["tts"],ttsConfig:{baseUrl:"http://localhost:8880",defaultModel:"kokoro",authType:"apikey",format:"openai-speech"}},{id:"serper",alias:"serper",display:{name:"Serper",icon:"search",color:"#4F46E5",textIcon:"SP",website:"https://serper.dev",notice:{apiKeyUrl:"https://serper.dev/api-key"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://google.serper.dev",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.001,freeMonthlyQuota:2500,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},{id:"siliconflow",priority:250,alias:"siliconflow",display:{name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com",notice:{apiKeyUrl:"https://cloud.siliconflow.com/account/ak"}},category:"apikey",transport:{baseUrl:"https://api.siliconflow.com/v1/chat/completions",validateUrl:"https://api.siliconflow.com/v1/models",thinkingFormat:"openai"},models:[{id:"deepseek-ai/DeepSeek-V4-Pro",name:"DeepSeek V4 Pro"},{id:"deepseek-ai/DeepSeek-V4-Flash",name:"DeepSeek V4 Flash"},{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.2-Exp",name:"DeepSeek V3.2 Exp"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-V3.1-Terminus",name:"DeepSeek V3.1 Terminus"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3.5-397B-A17B",name:"Qwen 3.5 397B A17B"},{id:"Qwen/Qwen3.5-122B-A10B",name:"Qwen 3.5 122B A10B"},{id:"zai-org/GLM-5.1",name:"GLM 5.1"},{id:"zai-org/GLM-5",name:"GLM 5"},{id:"moonshotai/Kimi-K2.6",name:"Kimi K2.6"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"MiniMaxAI/MiniMax-M2.5",name:"MiniMax M2.5"},{id:"inclusionAI/Ling-flash-2.0",name:"Ling Flash 2.0"}]},{id:"stability-ai",priority:60,alias:"stability-ai",aliases:["stability"],uiAlias:"stability",display:{name:"Stability AI",icon:"image",color:"#8B5CF6",textIcon:"SA",website:"https://stability.ai",notice:{apiKeyUrl:"https://platform.stability.ai/account/keys"}},category:"apikey",authType:"apikey",transport:null,models:[{id:"stable-image-ultra",name:"Stable Image Ultra",params:["size"],kind:"image"},{id:"stable-image-core",name:"Stable Image Core",params:["size","style"],kind:"image"},{id:"sd3.5-large",name:"Stable Diffusion 3.5 Large",params:["size"],kind:"image"},{id:"sd3.5-large-turbo",name:"Stable Diffusion 3.5 Large Turbo",params:["size"],kind:"image"},{id:"sd3.5-medium",name:"Stable Diffusion 3.5 Medium",params:["size"],kind:"image"}],serviceKinds:["image"],imageConfig:{baseUrl:"https://api.stability.ai/v2beta/stable-image/generate"}},{id:"tavily",alias:"tavily",display:{name:"Tavily",icon:"search",color:"#5B21B6",textIcon:"TV",website:"https://tavily.com",notice:{apiKeyUrl:"https://app.tavily.com/home"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch","webFetch"],searchConfig:{baseUrl:"https://api.tavily.com/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.008,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5},fetchConfig:{baseUrl:"https://api.tavily.com/extract",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.008,freeMonthlyQuota:1e3,formats:["markdown","text"],maxCharacters:1e5,timeoutMs:15e3}},{id:"tencent",alias:"hunyuan",aliases:["hunyuan","tencent-hunyuan"],uiAlias:"hunyuan",display:{name:"Tencent Hunyuan",icon:"cloud",color:"#0052D9",textIcon:"HY",website:"https://cloud.tencent.com/product/hunyuan",notice:{apiKeyUrl:"https://console.cloud.tencent.com/hunyuan/api-key"}},category:"apikey",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://api.hunyuan.cloud.tencent.com/v1/chat/completions",validateUrl:"https://api.hunyuan.cloud.tencent.com/v1/models"},models:[{id:"hunyuan-turbos-latest",name:"Hunyuan TurboS Latest",contextLength:2e5},{id:"hunyuan-t1-latest",name:"Hunyuan T1 Latest",contextLength:256e3}]},{id:"together",priority:60,alias:"together",display:{name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",notice:{apiKeyUrl:"https://api.together.xyz/settings/api-keys"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.together.xyz/v1/chat/completions",validateUrl:"https://api.together.xyz/v1/models"},models:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"},{id:"BAAI/bge-large-en-v1.5",name:"BGE Large EN v1.5",kind:"embedding"},{id:"togethercomputer/m2-bert-80M-8k-retrieval",name:"M2 BERT 80M 8K",kind:"embedding"}],serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.together.xyz/v1/embeddings"}},{id:"tokenrouter",alias:"tokenrouter",aliases:["tr"],uiAlias:"tokenrouter",display:{name:"TokenRouter",icon:"hub",color:"#0EA5E9",textIcon:"TR",website:"https://www.tokenrouter.com",notice:{text:"OpenAI-compatible gateway. 300+ models (OpenAI, Claude, Gemini, Qwen, DeepSeek, Kimi, GLM, dsb).",apiKeyUrl:"https://www.tokenrouter.com"}},category:"apikey",thinkingConfig:{options:["low","medium","high","xhigh","max"],defaultMode:"high"},transport:{baseUrl:"https://api.tokenrouter.com/v1/chat/completions",validateUrl:"https://api.tokenrouter.com/v1/models",thinkingFormat:"tokenrouter"},models:[{id:"anthropic/claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"anthropic/claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"anthropic/claude-opus-4.8",name:"Claude Opus 4.8"},{id:"anthropic/claude-opus-4.8-fast",name:"Claude Opus 4.8 Fast"},{id:"openai/gpt-5.4",name:"Gpt 5.4"},{id:"openai/gpt-5.4-mini",name:"Gpt 5.4 Mini"},{id:"openai/gpt-5.4-pro",name:"Gpt 5.4 Pro"},{id:"openai/gpt-5.5",name:"Gpt 5.5"},{id:"openai/gpt-5.6-sol",name:"Gpt 5.6 Sol"},{id:"google/gemini-3.5-flash",name:"Gemini 3.5 Flash"},{id:"google/gemini-3.6-flash",name:"Gemini 3.6 Flash"},{id:"deepseek/deepseek-v4-flash",name:"Deepseek V4 Flash"},{id:"deepseek/deepseek-v4-pro",name:"Deepseek V4 Pro"},{id:"qwen/qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen/qwen3.7-max",name:"Qwen3.7 Max"},{id:"qwen/qwen3.8-max",name:"Qwen3.8 Max"},{id:"moonshotai/kimi-k2.7-code",name:"Kimi K2.7 Code"},{id:"moonshotai/kimi-k3-free",name:"Kimi K3 Free"},{id:"z-ai/glm-5.3-free",name:"Glm 5.3 Free"},{id:"z-ai/glm-5.2",name:"Glm 5.2"},{id:"z-ai/glm-5-turbo",name:"Glm 5 Turbo"},{id:"x-ai/grok-4.5",name:"Grok 4.5"}],serviceKinds:["llm","embedding","image"],embeddingConfig:{baseUrl:"https://api.tokenrouter.com/v1/embeddings",authType:"apikey",authHeader:"bearer"},imageConfig:{baseUrl:"https://api.tokenrouter.com/v1/images/generations"},modelsFetcher:{url:"https://api.tokenrouter.com/v1/models",type:"openai"},passthroughModels:!0},{id:"topaz",alias:"topaz",display:{name:"Topaz",icon:"image",color:"#059669",textIcon:"TP",website:"https://topazlabs.com",notice:{apiKeyUrl:"https://topazlabs.com/account"}},category:"apikey",authType:"apikey",serviceKinds:["image"]},{id:"tortoise",alias:"tortoise",display:{name:"Tortoise TTS",icon:"record_voice_over",color:"#7C3AED",textIcon:"TT",website:"https://github.com/neonbjb/tortoise-tts"},category:"freeTier",authType:"none",serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"http://localhost:5000/api/tts",authType:"none",authHeader:"none",format:"tortoise",models:[{id:"tortoise-v2",name:"Tortoise v2"}]},hidden:!0},{id:"venice",priority:115,alias:"venice",aliases:["vn"],uiAlias:"venice",display:{name:"Venice AI",icon:"shield",color:"#DC2626",textIcon:"VE",website:"https://venice.ai",notice:{text:"OpenAI-compatible. Private inference + uncensored models (Venice Uncensored, GLM, Qwen, DeepSeek, Llama).",apiKeyUrl:"https://venice.ai/settings/api"}},category:"apikey",transport:{baseUrl:"https://api.venice.ai/api/v1/chat/completions",validateUrl:"https://api.venice.ai/api/v1/models",thinkingFormat:"openai"},models:[{id:"venice-uncensored-1-2",name:"Venice Uncensored 1.2"},{id:"zai-org-glm-5",name:"GLM-5"},{id:"qwen3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B Instruct"},{id:"qwen3-coder-480b-a35b-instruct-turbo",name:"Qwen3 Coder 480B A35B Turbo"},{id:"qwen3-vl-235b-a22b",name:"Qwen3 VL 235B A22B"},{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"hermes-3-llama-3.1-405b",name:"Hermes 3 Llama 3.1 405B"},{id:"mistral-small-3-2-24b-instruct",name:"Mistral Small 3.2 24B"},{id:"text-embedding-3-large",name:"Text Embedding 3 Large",kind:"embedding"},{id:"text-embedding-bge-m3",name:"BGE-M3 Embedding",kind:"embedding"},{id:"text-embedding-qwen3-8b",name:"Qwen3 8B Embedding",kind:"embedding"},{id:"venice-sd35",name:"Venice SD3.5",params:["n","size"],kind:"image"},{id:"flux-2-pro",name:"FLUX.2 Pro",params:["n","size"],kind:"image"},{id:"gpt-image-2",name:"GPT Image 2 (via Venice)",params:["n","size","quality"],kind:"image"}],serviceKinds:["llm","embedding","image"],embeddingConfig:{baseUrl:"https://api.venice.ai/api/v1/embeddings",authType:"apikey",authHeader:"bearer"},imageConfig:{baseUrl:"https://api.venice.ai/api/v1/images/generations"},modelsFetcher:{url:"https://api.venice.ai/api/v1/models",type:"openai"},passthroughModels:!0},{id:"vercel-ai-gateway",priority:160,alias:"vercel-ai-gateway",aliases:["vercel"],uiAlias:"vercel",display:{name:"Vercel AI Gateway",icon:"deployed_code",color:"#111827",textIcon:"VG",website:"https://vercel.com/ai-gateway",notice:{text:"Unified OpenAI-compatible endpoint from Vercel. Use your AI Gateway API key, then pick models with provider/model IDs like anthropic/claude-sonnet-4.6 or openai/gpt-5.4.",apiKeyUrl:"https://vercel.com/dashboard/~/ai-gateway"}},category:"apikey",transport:{baseUrl:"https://ai-gateway.vercel.sh/v1/chat/completions",thinkingFormat:"openai",retry:{429:2},usage:{url:"https://ai-gateway.vercel.sh/v1/credits"}},serviceKinds:["llm","embedding","image","imageToText","webSearch"],embeddingConfig:{baseUrl:"https://ai-gateway.vercel.sh/v1/embeddings"},imageConfig:{baseUrl:"https://ai-gateway.vercel.sh/v1/images/generations"},searchViaChat:{defaultModel:"openai/gpt-4o-mini",pricingUrl:"https://vercel.com/docs/ai-gateway/pricing"},modelsFetcher:{url:"https://ai-gateway.vercel.sh/v1/models",type:"openai"},passthroughModels:!0,features:{usage:!0,usageApikey:!0}},{id:"vertex-partner",priority:260,alias:"vertex-partner",aliases:["vxp"],uiAlias:"vxp",display:{name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models",notice:{apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}},category:"apikey",transport:{baseUrl:"https://aiplatform.googleapis.com"},models:[{id:"deepseek-ai/deepseek-v3.2-maas",name:"DeepSeek V3.2 (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-thinking-maas",name:"Qwen3 Next 80B Thinking (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-instruct-maas",name:"Qwen3 Next 80B Instruct (Vertex)"},{id:"zai-org/glm-5-maas",name:"GLM-5 (Vertex)"}]},{id:"vertex",priority:40,alias:"vertex",aliases:["vx"],uiAlias:"vx",display:{name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}},category:"freeTier",regions:[{id:"us-central1",label:"us-central1 (Iowa)"},{id:"us-east4",label:"us-east4 (Northern Virginia)"},{id:"us-west1",label:"us-west1 (Oregon)"},{id:"europe-west1",label:"europe-west1 (Belgium)"},{id:"europe-west4",label:"europe-west4 (Netherlands)"},{id:"asia-east1",label:"asia-east1 (Taiwan)"},{id:"asia-northeast1",label:"asia-northeast1 (Tokyo)"},{id:"asia-southeast1",label:"asia-southeast1 (Singapore)"},{id:"global",label:"global (Global)"}],defaultRegion:"us-central1",transport:{baseUrl:"https://aiplatform.googleapis.com",format:"vertex"},models:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"veo-3.1-generate-001",name:"Veo 3.1",params:["duration","aspect_ratio","resolution","negative_prompt","seed","storage_uri","generate_audio"],kind:"video"},{id:"veo-3.1-fast-generate-001",name:"Veo 3.1 Fast",params:["duration","aspect_ratio","resolution","negative_prompt","seed","storage_uri","generate_audio"],kind:"video"},{id:"veo-3.0-generate-001",name:"Veo 3",params:["duration","aspect_ratio","resolution","negative_prompt","seed","storage_uri","generate_audio"],kind:"video"},{id:"veo-3.0-fast-generate-001",name:"Veo 3 Fast",params:["duration","aspect_ratio","resolution","negative_prompt","seed","storage_uri","generate_audio"],kind:"video"},{id:"veo-2.0-generate-001",name:"Veo 2",params:["duration","aspect_ratio","negative_prompt","seed","storage_uri"],kind:"video"}],serviceKinds:["llm","imageToText","video"],videoConfig:{baseUrl:"https://aiplatform.googleapis.com"}},{id:"volcengine-ark",priority:270,alias:"volcengine-ark",aliases:["ark"],uiAlias:"ark",display:{name:"Volcengine Ark",icon:"cloud",color:"#1677FF",textIcon:"ARK",website:"https://ark.cn-beijing.volces.com",notice:{apiKeyUrl:"https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey"}},category:"apikey",transport:{baseUrl:"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",headers:{}},models:[{id:"Doubao-Seed-2.0-Code",name:"Doubao-Seed-2.0-Code"},{id:"Doubao-Seed-2.0-pro",name:"Doubao-Seed-2.0-pro"},{id:"Doubao-Seed-2.0-lite",name:"Doubao-Seed-2.0-lite"},{id:"Doubao-Seed-Code",name:"Doubao-Seed-Code"},{id:"DeepSeek-V4-Flash",name:"DeepSeek-V4-Flash"},{id:"DeepSeek-V4-Pro",name:"DeepSeek-V4-Pro"},{id:"GLM-5.1",name:"GLM-5.1"},{id:"MiniMax-M2.7",name:"MiniMax-M2.7"},{id:"Kimi-K2.6",name:"Kimi-K2.6"}]},{id:"voyage-ai",priority:40,alias:"voyage-ai",uiAlias:"voyage",display:{name:"Voyage AI",icon:"data_array",color:"#0EA5E9",textIcon:"VG",website:"https://www.voyageai.com",notice:{apiKeyUrl:"https://dash.voyageai.com/api-keys"}},category:"apikey",authType:"apikey",transport:null,models:[{id:"voyage-3-large",name:"Voyage 3 Large",kind:"embedding"},{id:"voyage-3.5",name:"Voyage 3.5",kind:"embedding"},{id:"voyage-3.5-lite",name:"Voyage 3.5 Lite",kind:"embedding"},{id:"voyage-code-3",name:"Voyage Code 3",kind:"embedding"},{id:"voyage-finance-2",name:"Voyage Finance 2",kind:"embedding"},{id:"voyage-law-2",name:"Voyage Law 2",kind:"embedding"},{id:"voyage-multilingual-2",name:"Voyage Multilingual 2",kind:"embedding"}],serviceKinds:["embedding"],embeddingConfig:{baseUrl:"https://api.voyageai.com/v1/embeddings"}},{id:"xai",priority:280,alias:"xai",display:{name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai",notice:{apiKeyUrl:"https://console.x.ai"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,transport:{baseUrl:"https://api.x.ai/v1/chat/completions",validateUrl:"https://api.x.ai/v1/models",responsesUrl:"https://api.x.ai/v1/responses",clientId:"b1a00492-073a-47ea-816f-4c329264a828",tokenUrl:"https://auth.x.ai/oauth2/token",refreshUrl:"https://auth.x.ai/oauth2/token"},models:[{id:"grok-4.6",name:"Grok 4.6"},{id:"grok-4.5",name:"Grok 4.5"},{id:"grok-build-0.1",name:"Grok Build 0.1"},{id:"grok-4.3",name:"Grok 4.3"},{id:"grok-4.20-0309-reasoning",name:"Grok 4.20 0309 Reasoning"},{id:"grok-4.20-0309-non-reasoning",name:"Grok 4.20 0309 Non-Reasoning"},{id:"grok-4.20-multi-agent-0309",name:"Grok 4.20 Multi-Agent 0309"},{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"},{id:"grok-2-image-1212",name:"Grok 2 Image",params:["n","response_format"],kind:"image"},{id:"grok-imagine-image",name:"Grok Imagine Image",params:["n","response_format"],kind:"image"},{id:"grok-imagine-image-quality",name:"Grok Imagine Image Quality",params:["n","response_format"],kind:"image"},{id:"grok-imagine-video",name:"Grok Imagine Video",params:["duration","aspect_ratio","resolution"],kind:"video"},{id:"grok-imagine-video-1.5",name:"Grok Imagine Video 1.5",params:[],kind:"video"}],serviceKinds:["llm","imageToText","webSearch","image","video"],imageConfig:{baseUrl:"https://api.x.ai/v1/images/generations",bodyFields:["model","prompt","n","response_format"]},videoConfig:{baseUrl:"https://api.x.ai/v1/videos"},searchViaChat:{defaultModel:"grok-4.20-reasoning",endpoint:"https://api.x.ai/v1/responses",pricingUrl:"https://x.ai/api#pricing"}},{id:"xiaomi-mimo",priority:290,alias:"xiaomi-mimo",aliases:["mimo","mimo-desktop","xmd"],uiAlias:"mimo",display:{name:"Xiaomi MiMo",icon:"smart_toy",color:"#FF6900",textIcon:"XM",website:"https://xiaomimimo.com",notice:{apiKeyUrl:"https://platform.xiaomimimo.com/console/api-keys",signupUrl:"https://mimo.xiaomimimo.com/desktop/invite/"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,serviceKinds:["llm","tts"],transport:{baseUrl:"https://api.xiaomimimo.com/v1/chat/completions",validateUrl:"https://api.xiaomimimo.com/v1/models"},transports:[{format:"openai",baseUrl:"https://api.xiaomimimo.com/v1/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},{format:"claude",baseUrl:"https://api.xiaomimimo.com/anthropic/v1/messages",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw"}}],models:[{id:"mimo-x-pro-preview",name:"MiMo-X-Pro-Preview",upstreamModelId:"xiaomi/mimo-x-pro-preview",supportedFormats:["openai"]},{id:"mimo-x-flash-preview",name:"MiMo-X-Flash-Preview",upstreamModelId:"xiaomi/mimo-x-flash-preview",supportedFormats:["openai"]},{id:"mimo-v2.5-pro",name:"MiMo V2.5 Pro"},{id:"mimo-v2.5",name:"MiMo V2.5"},{id:"mimo-v2-omni",name:"MiMo V2 Omni"},{id:"mimo-v2-flash",name:"MiMo V2 Flash"},{id:"mimo-v2.5-tts",name:"MiMo V2.5 TTS",kind:"tts"}],ttsConfig:{baseUrl:"https://api.xiaomimimo.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",format:"xiaomi-mimo-tts"},features:{usage:!0,usageApikey:!0},oauth:{custom:!0,authorizeUrl:"https://platform.xiaomimimo.com/authorize",callbackParam:"u",kn:"mimocode"}},{id:"xiaomi-tokenplan",priority:300,alias:"xiaomi-tokenplan",aliases:["xmtp"],uiAlias:"xmtp",display:{name:"Xiaomi MiMo (Token Plan)",icon:"smart_toy",color:"#FF6700",textIcon:"XT",website:"https://mimo.xiaomi.com",notice:{text:"Xiaomi MiMo Token Plan subscription (API key starts with tp-). Token Plan keys are cluster-specific — select the region matching your subscription.",apiKeyUrl:"https://mimo.xiaomi.com"}},category:"apikey",hasProviderSpecificData:!0,regions:[{id:"sgp",label:"Singapore (新加坡)"},{id:"cn",label:"China (中国大陆)"},{id:"ams",label:"Amsterdam (阿姆斯特丹)"}],defaultRegion:"sgp",transport:{baseUrl:"https://token-plan-sgp.xiaomimimo.com/v1/chat/completions",regions:{sgp:"https://token-plan-sgp.xiaomimimo.com/v1",cn:"https://token-plan-cn.xiaomimimo.com/v1",ams:"https://token-plan-ams.xiaomimimo.com/v1"},defaultRegion:"sgp"},transports:[{format:"openai",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},{format:"claude",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw"}}],models:[{id:"mimo-v2.5-pro",name:"MiMo V2.5 Pro"},{id:"mimo-v2.5-pro-claude",name:"MiMo V2.5 Pro (Claude Native)",targetFormat:"claude",upstreamModelId:"mimo-v2.5-pro"},{id:"mimo-v2.5",name:"MiMo V2.5"},{id:"mimo-v2-pro",name:"MiMo V2 Pro"},{id:"mimo-v2-omni",name:"MiMo V2 Omni"},{id:"mimo-v2-tts",name:"MiMo V2 TTS"},{id:"mimo-v2.5-tts",name:"MiMo V2.5 TTS"},{id:"mimo-v2.5-tts-voiceclone",name:"MiMo V2.5 TTS Voice Clone"},{id:"mimo-v2.5-tts-voicedesign",name:"MiMo V2.5 TTS Voice Design"}]},{id:"xquik",alias:"xquik",display:{name:"Xquik",icon:"tag",color:"#5C3327",textIcon:"XQ",website:"https://docs.xquik.com/api-reference/x/search-tweets",notice:{apiKeyUrl:"https://xquik.com",text:"Searches public X posts. Billing uses 1 Xquik credit per returned post."}},category:"apikey",authType:"apikey",serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://xquik.com/api/v1/x/tweets/search",validateUrl:"https://xquik.com/api/v1/credits",method:"GET",authType:"apikey",authHeader:"x-api-key",searchTypes:["x"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:6e4,creditsPerResult:1}},{id:"youcom",alias:"youcom",display:{name:"You.com Search",icon:"search",color:"#7C3AED",textIcon:"YC",website:"https://you.com",notice:{apiKeyUrl:"https://api.you.com"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://ydc-index.io/v1/search",method:"GET",authType:"apikey",authHeader:"x-api-key",costPerQuery:.005,freeMonthlyQuota:0,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},{id:"zed",priority:10,alias:"zd",uiAlias:"zd",hidden:!0,display:{name:"Zed",icon:"code",color:"#A855F7",website:"https://zed.dev",notice:{signupUrl:"https://zed.dev/native_app_signin"}},category:"oauth",authType:"oauth",hasOAuth:!0,transport:{baseUrl:"https://cloud.zed.dev/completions",format:"openai",forceStream:!0,headers:{"content-type":"application/json"},auth:{combined:!0,header:"Authorization",scheme:"<user_id> <access_token>"},usage:{url:"https://cloud.zed.dev/client/users/me"},modelsUrl:"https://cloud.zed.dev/models"},models:[],passthroughModels:!0,oauth:{authorizeUrl:"https://zed.dev/native_app_signin",platform:"zed",rsaKeyExchange:!0},features:{usage:!0}}],C="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.";Object.fromEntries(B.filter(a=>a.display).map(a=>{let b;return[a.id,"RISK_NOTICE"===(b=a.display).deprecationNotice?{...b,deprecationNotice:C}:b]}));let D=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","credentialFallback","modelsFetcher","mediaPriority","hiddenKinds"],E=a=>Object.fromEntries(B.filter(b=>b.category===a).map(a=>[a.id,function(a){let b={};for(let c of(a.media&&Object.assign(b,a.media),D))void 0!==a[c]&&(b[c]=a[c]);let c={...a.display||{}};return"RISK_NOTICE"===c.deprecationNotice&&(c.deprecationNotice=C),{...c,id:a.id,alias:a.uiAlias||a.alias,...a.hidden?{hidden:!0}:{},...b,...void 0!==a.priority?{priority:a.priority}:{},...a.hasFree?{hasFree:!0}:{},...a.thinkingConfig?{thinkingConfig:a.thinkingConfig}:{},...a.regions?{regions:a.regions,defaultRegion:a.defaultRegion}:{},...a.hasProviderSpecificData?{hasProviderSpecificData:!0}:{},...a.baseUrlField?{baseUrlField:a.baseUrlField}:{},...a.noAuth?{noAuth:!0}:{},...a.passthroughModels?{passthroughModels:!0}:{},...a.hasOAuth?{hasOAuth:!0}:{},...a.models?{models:a.models}:{},...a.authModes?{authModes:a.authModes}:{},...a.features?{features:{...a.features}}:{},...a.authType?{authType:a.authType}:{},...a.authHint?{authHint:a.authHint}:{}}}(a)])),F=E("free"),G=E("freeTier"),H=E("oauth"),I=E("apikey"),J=E("webCookie"),K={...F,...G,...H,...I,...J};function L(a){if(null==a||"object"!=typeof a)return null;let b={};return(Array.isArray(a.providers)&&(b.providers=a.providers.filter(a=>"string"==typeof a&&""!==a.trim())),Array.isArray(a.models)&&(b.models=a.models.filter(a=>"string"==typeof a&&a.includes("/"))),"providers"in b||"models"in b)?b:null}function M(a){if(!a)return null;try{let b=JSON.parse(a);return b&&"object"==typeof b?b:null}catch{return null}}function N(a){if(!Array.isArray(a))return null;let b=[...new Set(a.filter(a=>"string"==typeof a&&a.trim()).map(a=>a.trim()))];return b.length?b:null}function O(a){if(null==a||""===a)return null;let b=Number(a);if(!Number.isSafeInteger(b)||b<1)throw Error("tokenLimit must be a positive integer");return b}function P(a){if(null==a||""===a)return null;let b=new Date(a);if(Number.isNaN(b.getTime()))throw Error("expiresAt must be a valid date");return b.toISOString()}function Q(a){return a?{id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive||!0===a.isActive,expiresAt:a.expiresAt||null,tokenLimit:null==a.tokenLimit?null:Number(a.tokenLimit),tokensUsed:Number(a.tokensUsed||0),tokensReserved:Number(a.tokensReserved||0),allowedModels:(()=>{try{return a.allowedModels?JSON.parse(a.allowedModels):null}catch{return null}})(),createdAt:a.createdAt,scope:M(a.scope)}:null}async function R(){return(await (0,e.c)()).all("SELECT * FROM apiKeys ORDER BY createdAt ASC").map(Q)}async function S(a){return Q((await (0,e.c)()).get("SELECT * FROM apiKeys WHERE id = ?",[a]))}async function T(a){return Q((await (0,e.c)()).get("SELECT * FROM apiKeys WHERE key = ?",[a]))}async function U(a,b,f={}){if(!b)throw Error("machineId is required");let g=await (0,e.c)(),{generateApiKeyWithMachine:h}=await c.e(241).then(c.bind(c,22622)),i=h(b),j=L(f&&"object"==typeof f&&"scope"in f?f.scope:f&&("providers"in f||"models"in f)?f:null),k={id:(0,d.A)(),name:a,key:i.key,machineId:b,isActive:!0,expiresAt:P(f?.expiresAt),tokenLimit:O(f?.tokenLimit),tokensUsed:0,tokensReserved:0,allowedModels:N(f?.allowedModels),createdAt:new Date().toISOString(),scope:j};return g.run("INSERT INTO apiKeys(id, key, name, machineId, isActive, expiresAt, tokenLimit, tokensUsed, tokensReserved, allowedModels, createdAt, scope) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[k.id,k.key,k.name,k.machineId,1,k.expiresAt,k.tokenLimit,0,0,k.allowedModels?JSON.stringify(k.allowedModels):null,k.createdAt,j?JSON.stringify(j):null]),k}async function V(a,b){let c=await (0,e.c)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!e)return;let f={...Q(e),...b};if(void 0!==b.allowedModels&&(f.allowedModels=N(b.allowedModels)),void 0!==b.expiresAt&&(f.expiresAt=P(b.expiresAt)),void 0!==b.tokenLimit&&(f.tokenLimit=O(b.tokenLimit)),void 0!==b.tokenLimitIncrement){let a=O(b.tokenLimitIncrement);if(null==f.tokenLimit)throw Error("Cannot add tokens to an unlimited key; set a token limit first");f.tokenLimit+=a}"scope"in b&&(f.scope=L(b.scope)),c.run("UPDATE apiKeys SET key = ?, name = ?, machineId = ?, isActive = ?, expiresAt = ?, tokenLimit = ?, tokensUsed = ?, tokensReserved = ?, allowedModels = ?, scope = ? WHERE id = ?",[f.key,f.name,f.machineId,+!!f.isActive,f.expiresAt||null,null==f.tokenLimit?null:Number(f.tokenLimit),Number(f.tokensUsed||0),Number(f.tokensReserved||0),f.allowedModels?JSON.stringify(f.allowedModels):null,f.scope?JSON.stringify(f.scope):null,a]),d=f}),d}async function W(a){let b=await (0,e.c)();return(b.run("DELETE FROM apiKeys WHERE id = ?",[a])?.changes??0)>0}async function X(a){let b=await T(a);return!!b&&b.isActive&&(!b.expiresAt||new Date(b.expiresAt).getTime()>Date.now())}async function Y(a){return T(a)}function Z(a){switch(a){case"daily":return 864e5;case"weekly":return 6048e5;case"monthly":return 2592e6;default:return null}}async function $(a,b){b&&!(b<=0)&&await T(a)&&(await (0,e.c)()).run("UPDATE apiKeys SET tokensUsed = tokensUsed + ? WHERE key = ?",[Math.round(1e4*b),a])}async function _(a,b){let c=await T(a);if(c?.tokenLimit==null)return{ok:!0,reserved:0};let d=Math.max(0,Math.floor(Number(b)||0)),f=await (0,e.c)(),g=!1;return f.transaction(()=>{let b=f.get("SELECT tokenLimit, tokensUsed, tokensReserved FROM apiKeys WHERE key = ? AND isActive = 1",[a]);!b||null==b.tokenLimit||Number(b.tokensUsed||0)+Number(b.tokensReserved||0)+d>Number(b.tokenLimit)||(f.run("UPDATE apiKeys SET tokensReserved = tokensReserved + ? WHERE key = ?",[d,a]),g=!0)}),g?{ok:!0,reserved:d}:{ok:!1,error:"API key token quota exceeded"}}async function aa(a,b,c){if(!b)return;let d=Math.min(b,Math.max(0,Math.floor(Number(c)||0))),f=await (0,e.c)();f.transaction(()=>{f.run("UPDATE apiKeys SET tokensReserved = MAX(0, tokensReserved - ?), tokensUsed = tokensUsed + ? WHERE key = ?",[b,d,a])})}async function ab(a){let b=(await (0,e.c)()).get("SELECT scope, isActive FROM apiKeys WHERE key = ?",[a]);return b&&(1===b.isActive||!0===b.isActive)?M(b.scope):null}Object.values(K).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(K).reduce((a,b)=>(a[b.id]=b.alias,a),{}),B.filter(a=>a.features?.usage).map(a=>a.id),B.filter(a=>a.features?.usageApikey).map(a=>a.id)},15e3:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={bootstrap:function(){return k},error:function(){return m},errorOnce:function(){return v},event:function(){return q},info:function(){return p},prefixes:function(){return h},ready:function(){return o},trace:function(){return r},wait:function(){return l},warn:function(){return n},warnOnce:function(){return t}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(56872),g=c(9913),h={wait:(0,f.white)((0,f.bold)("○")),error:(0,f.red)((0,f.bold)("⨯")),warn:(0,f.yellow)((0,f.bold)("⚠")),ready:"▲",info:(0,f.white)((0,f.bold)(" ")),event:(0,f.green)((0,f.bold)("✓")),trace:(0,f.magenta)((0,f.bold)("\xbb"))},i={log:"log",warn:"warn",error:"error"};function j(a,...b){(""===b[0]||void 0===b[0])&&1===b.length&&b.shift();let c=a in i?i[a]:"log",d=h[a];0===b.length?console[c](""):1===b.length&&"string"==typeof b[0]?console[c](d+" "+b[0]):console[c](d,...b)}function k(a){console.log(a)}function l(...a){j("wait",...a)}function m(...a){j("error",...a)}function n(...a){j("warn",...a)}function o(...a){j("ready",...a)}function p(...a){j("info",...a)}function q(...a){j("event",...a)}function r(...a){j("trace",...a)}let s=new g.LRUCache(1e4,a=>a.length);function t(...a){let b=a.join(" ");s.has(b)||(s.set(b,b),n(...a))}let u=new g.LRUCache(1e4,a=>a.length);function v(...a){let b=a.join(" ");u.has(b)||(u.set(b,b),m(...a))}},15971:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"RedirectStatusCode",{enumerable:!0,get:function(){return d}});var c,d=((c={})[c.SeeOther=303]="SeeOther",c[c.TemporaryRedirect=307]="TemporaryRedirect",c[c.PermanentRedirect=308]="PermanentRedirect",c);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},16129:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={NextFetchEvent:function(){return l},getWaitUntilPromiseFromEvent:function(){return k}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(68802),g=Symbol("response"),h=Symbol("passThrough"),i=Symbol("waitUntil");class j{constructor(a,b){this[h]=!1,this[i]=b?{kind:"external",function:b}:{kind:"internal",promises:[]}}respondWith(a){this[g]||(this[g]=Promise.resolve(a))}passThroughOnException(){this[h]=!0}waitUntil(a){if("external"===this[i].kind)return(0,this[i].function)(a);this[i].promises.push(a)}}function k(a){return"internal"===a[i].kind?Promise.all(a[i].promises).then(()=>{}):void 0}class l extends j{constructor(a){var b;super(a.request,null==(b=a.context)?void 0:b.waitUntil),this.sourcePage=a.page}get request(){throw Object.defineProperty(new f.PageSignatureError({page:this.sourcePage}),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}respondWith(){throw Object.defineProperty(new f.PageSignatureError({page:this.sourcePage}),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}}},16698:a=>{"use strict";a.exports=require("node:async_hooks")},16841:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={getSortedRouteObjects:function(){return f.getSortedRouteObjects},getSortedRoutes:function(){return f.getSortedRoutes},isDynamicRoute:function(){return g.isDynamicRoute}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(85503),g=c(4945)},17385:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"NextResponse",{enumerable:!0,get:function(){return l}});let d=c(38955),e=c(92729),f=c(99751),g=c(31050),h=c(38955),i=Symbol("internal response"),j=new Set([301,302,303,307,308]);function k(a,b){var c;if(null==a||null==(c=a.request)?void 0:c.headers){if(!(a.request.headers instanceof Headers))throw Object.defineProperty(Error("request.headers must be an instance of Headers"),"__NEXT_ERROR_CODE",{value:"E119",enumerable:!1,configurable:!0});let c=[];for(let[d,e]of a.request.headers)b.set("x-middleware-request-"+d,e),c.push(d);b.set("x-middleware-override-headers",c.join(","))}}class l extends Response{constructor(a,b={}){super(a,b);const c=this.headers,j=new Proxy(new h.ResponseCookies(c),{get(a,e,f){switch(e){case"delete":case"set":return(...f)=>{let g=Reflect.apply(a[e],a,f),i=new Headers(c);return g instanceof h.ResponseCookies&&c.set("x-middleware-set-cookie",g.getAll().map(a=>(0,d.stringifyCookie)(a)).join(",")),k(b,i),g};default:return g.ReflectAdapter.get(a,e,f)}}});this[i]={cookies:j,url:b.url?new e.NextURL(b.url,{headers:(0,f.toNodeOutgoingHttpHeaders)(c),nextConfig:b.nextConfig}):void 0}}[Symbol.for("edge-runtime.inspect.custom")](){return{cookies:this.cookies,url:this.url,body:this.body,bodyUsed:this.bodyUsed,headers:Object.fromEntries(this.headers),ok:this.ok,redirected:this.redirected,status:this.status,statusText:this.statusText,type:this.type}}get cookies(){return this[i].cookies}static json(a,b){let c=Response.json(a,b);return new l(c.body,c)}static redirect(a,b){let c="number"==typeof b?b:(null==b?void 0:b.status)??307;if(!j.has(c))throw Object.defineProperty(RangeError('Failed to execute "redirect" on "response": Invalid status code'),"__NEXT_ERROR_CODE",{value:"E529",enumerable:!1,configurable:!0});let d="object"==typeof b?b:{},e=new Headers(null==d?void 0:d.headers);return e.set("Location",(0,f.validateURL)(a)),new l(null,{...d,headers:e,status:c})}static rewrite(a,b){let c=new Headers(null==b?void 0:b.headers);return c.set("x-middleware-rewrite",(0,f.validateURL)(a)),k(b,c),new l(null,{...b,headers:c})}static next(a){let b=new Headers(null==a?void 0:a.headers);return b.set("x-middleware-next","1"),k(a,b),new l(null,{...a,headers:b})}}},17888:(a,b)=>{"use strict";function c(a){return a.startsWith("/")?a:`/${a}`}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ensureLeadingSlash",{enumerable:!0,get:function(){return c}})},18313:(a,b,c)=>{"use strict";a.exports=c(33873)},18975:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={getTestReqInfo:function(){return i},withRequest:function(){return h}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=new(c(16698)).AsyncLocalStorage;function g(a,b){let c=b.header(a,"next-test-proxy-port");if(!c)return;let d=b.url(a);return{url:d,proxyPort:Number(c),testData:b.header(a,"next-test-data")||""}}function h(a,b,c){let d=g(a,b);return d?f.run(d,c):c()}function i(a,b){let c=f.getStore();return c||(a&&b?g(a,b):void 0)}},19293:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"connection",{enumerable:!0,get:function(){return k}});let d=c(29294),e=c(63033),f=c(8912),g=c(49540),h=c(80311),i=c(72106);c(54795);let j=c(42776);function k(){let a=d.workAsyncStorage.getStore(),b=e.workUnitAsyncStorage.getStore();if(a){if(b&&"after"===b.phase&&!(0,i.isRequestAPICallableInsideAfter)())throw Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside \`after()\`. The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but \`after()\` executes after the request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E827",enumerable:!1,configurable:!0});if(a.forceStatic)return Promise.resolve(void 0);if(a.dynamicShouldError)throw Object.defineProperty(new g.StaticGenBailoutError(`Route ${a.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`connection()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E847",enumerable:!1,configurable:!0});if(b)switch(b.type){case"cache":{let b=Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside "use cache". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual request, but caches must be able to be produced before a request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E841",enumerable:!1,configurable:!0});throw Error.captureStackTrace(b,k),a.invalidDynamicUsageError??=b,b}case"private-cache":{let b=Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside "use cache: private". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual navigation request, but caches must be able to be produced before a navigation request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E837",enumerable:!1,configurable:!0});throw Error.captureStackTrace(b,k),a.invalidDynamicUsageError??=b,b}case"unstable-cache":throw Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside a function cached with \`unstable_cache()\`. The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but caches must be able to be produced before a Request so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E840",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(Error(`Route ${a.route} used \`connection()\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E1125",enumerable:!1,configurable:!0});case"prerender":case"prerender-client":case"prerender-runtime":return(0,h.makeHangingPromise)(b.renderSignal,a.route,"`connection()`");case"validation-client":{let a="`connection`";throw Object.defineProperty(new j.InvariantError(`${a} must not be used within a Client Component. Next.js should be preventing ${a} from being included in Client Components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1063",enumerable:!1,configurable:!0})}case"prerender-ppr":return(0,f.postponeWithTracking)(a.route,"connection",b.dynamicTracking);case"prerender-legacy":return(0,f.throwToInterruptStaticGeneration)("connection",a,b);case"request":if((0,f.trackDynamicDataInDynamicRender)(b),b.asyncApiPromises)return b.asyncApiPromises.connection;return Promise.resolve(void 0)}}(0,e.throwForMissingRequestStore)("connection")}},19524:(a,b)=>{"use strict";function c(a){return a.replace(/\/$/,"")||"/"}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"removeTrailingSlash",{enumerable:!0,get:function(){return c}})},19560:a=>{(()=>{"use strict";"u">typeof __nccwpck_require__&&(__nccwpck_require__.ab=__dirname+"/");var b,c,d,e,f={};f.parse=function(a,c){if("string"!=typeof a)throw TypeError("argument str must be a string");for(var e={},f=a.split(d),g=(c||{}).decode||b,h=0;h<f.length;h++){var i=f[h],j=i.indexOf("=");if(!(j<0)){var k=i.substr(0,j).trim(),l=i.substr(++j,i.length).trim();'"'==l[0]&&(l=l.slice(1,-1)),void 0==e[k]&&(e[k]=function(a,b){try{return b(a)}catch(b){return a}}(l,g))}}return e},f.serialize=function(a,b,d){var f=d||{},g=f.encode||c;if("function"!=typeof g)throw TypeError("option encode is invalid");if(!e.test(a))throw TypeError("argument name is invalid");var h=g(b);if(h&&!e.test(h))throw TypeError("argument val is invalid");var i=a+"="+h;if(null!=f.maxAge){var j=f.maxAge-0;if(isNaN(j)||!isFinite(j))throw TypeError("option maxAge is invalid");i+="; Max-Age="+Math.floor(j)}if(f.domain){if(!e.test(f.domain))throw TypeError("option domain is invalid");i+="; Domain="+f.domain}if(f.path){if(!e.test(f.path))throw TypeError("option path is invalid");i+="; Path="+f.path}if(f.expires){if("function"!=typeof f.expires.toUTCString)throw TypeError("option expires is invalid");i+="; Expires="+f.expires.toUTCString()}if(f.httpOnly&&(i+="; HttpOnly"),f.secure&&(i+="; Secure"),f.sameSite)switch("string"==typeof f.sameSite?f.sameSite.toLowerCase():f.sameSite){case!0:case"strict":i+="; SameSite=Strict";break;case"lax":i+="; SameSite=Lax";break;case"none":i+="; SameSite=None";break;default:throw TypeError("option sameSite is invalid")}return i},b=decodeURIComponent,c=encodeURIComponent,d=/; */,e=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,a.exports=f})()},20399:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={indexOfUint8Array:function(){return e},isEquivalentUint8Arrays:function(){return f},removeFromUint8Array:function(){return g}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});function e(a,b){if(0===b.length)return 0;if(0===a.length||b.length>a.length)return -1;if("u">typeof Buffer)return(Buffer.isBuffer(a)?a:Buffer.from(a.buffer,a.byteOffset,a.byteLength)).indexOf(b);for(let c=0;c<=a.length-b.length;c++){let d=!0;for(let e=0;e<b.length;e++)if(a[c+e]!==b[e]){d=!1;break}if(d)return c}return -1}function f(a,b){if(a.length!==b.length)return!1;for(let c=0;c<a.length;c++)if(a[c]!==b[c])return!1;return!0}function g(a,b){let c=e(a,b);if(0===c)return a.subarray(b.length);if(!(c>-1))return a;{let d=new Uint8Array(a.length-b.length);return d.set(a.subarray(0,c)),d.set(a.subarray(c+b.length),c),d}}},20742:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={safeCompile:function(){return i},safePathToRegexp:function(){return h},safeRegexpToFunction:function(){return j},safeRouteMatcher:function(){return k}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(7039),g=c(61873);function h(a,b,c){if("string"!=typeof a)return(0,f.pathToRegexp)(a,b,c);let d=(0,g.hasAdjacentParameterIssues)(a),e=d?(0,g.normalizeAdjacentParameters)(a):a;try{return(0,f.pathToRegexp)(e,b,c)}catch(e){if(!d)try{let d=(0,g.normalizeAdjacentParameters)(a);return(0,f.pathToRegexp)(d,b,c)}catch(a){}throw e}}function i(a,b){let c=(0,g.hasAdjacentParameterIssues)(a),d=c?(0,g.normalizeAdjacentParameters)(a):a;try{let a=(0,f.compile)(d,b);if(c)return b=>(0,g.stripNormalizedSeparators)(a(b));return a}catch(d){if(!c)try{let c=(0,g.normalizeAdjacentParameters)(a),d=(0,f.compile)(c,b);return a=>(0,g.stripNormalizedSeparators)(d(a))}catch(a){}throw d}}function j(a,b){let c=(0,f.regexpToFunction)(a,b||[]);return a=>{let b=c(a);return!!b&&{...b,params:(0,g.stripParameterSeparators)(b.params)}}}function k(a){return b=>{let c=a(b);return!!c&&(0,g.stripParameterSeparators)(c)}}},21804:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"parseUrl",{enumerable:!0,get:function(){return f}});let d=c(68202),e=c(68047);function f(a){if(a.startsWith("/"))return(0,e.parseRelativeUrl)(a);let b=new URL(a),c=b.username,f=b.password,g=c?f?`${c}:${f}`:c:null,h=b.pathname,i=b.search;return{auth:g,hash:b.hash,hostname:b.hostname,href:b.href,pathname:h,port:b.port,protocol:b.protocol,query:(0,d.searchParamsToUrlQuery)(b.searchParams),search:i,origin:b.origin,slashes:"//"===b.href.slice(b.protocol.length,b.protocol.length+2)}}},21820:a=>{"use strict";a.exports=require("os")},22697:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={HTTPAccessErrorStatus:function(){return e},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return g},getAccessFallbackErrorTypeByStatus:function(){return j},getAccessFallbackHTTPStatus:function(){return i},isHTTPAccessFallbackError:function(){return h}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},f=new Set(Object.values(e)),g="NEXT_HTTP_ERROR_FALLBACK";function h(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let[b,c]=a.digest.split(";");return b===g&&f.has(Number(c))}function i(a){return Number(a.digest.split(";")[1])}function j(a){switch(a){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},24025:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={computeCacheBustingSearchParam:function(){return k},computeLegacyCacheBustingSearchParam:function(){return l}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(12217),g=new TextEncoder;function h(a){return void 0===a?"0":Array.isArray(a)?a.join(","):a}function i(a,b,c,d){return(void 0===a||"0"===a)&&void 0===b&&void 0===c&&void 0===d?null:[a??"0",h(b),h(c),h(d)].join(",")}async function j(a){var b=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",g.encode(a))).subarray(0,12);let c="";for(let a=0;a<b.length;a++)c+=String.fromCharCode(b[a]);return btoa(c).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function k(a,b,c,d){let e=i(a,b,c,d);return null===e?"":j(e)}function l(a,b,c,d){let e=i(a,b,c,d);return null===e?"":(0,f.hexHash)(e)}},24453:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={createRequestStoreForAPI:function(){return n},createRequestStoreForRender:function(){return m},synchronizeMutableCookies:function(){return p}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(62192),g=c(36023),h=c(93384),i=c(38955),j=c(38169),k=c(99751);function l(a,b){if("x-middleware-set-cookie"in a.headers&&"string"==typeof a.headers["x-middleware-set-cookie"]){let c=a.headers["x-middleware-set-cookie"],d=new Headers;for(let a of(0,k.splitCookiesString)(c))d.append("set-cookie",a);for(let a of new i.ResponseCookies(d).getAll())b.set(a)}}function m(a,b,c,d,e,f,g,h,i,j,k){return o("render",a,b,c,d,e,f,j,g,h,i,k)}function n(a,b,c,d,e){return o("action",a,void 0,b,{},c,d,null,e,!1,void 0,null)}function o(a,b,c,d,e,k,m,n,o,p,q,r){function s(a){c&&c.setHeader("Set-Cookie",a)}let t={};return{type:"request",phase:a,implicitTags:k,url:{pathname:d.pathname,search:d.search??""},rootParams:e,get headers(){return t.headers||(t.headers=function(a){let b=g.HeadersAdapter.from(a);for(let a of f.FLIGHT_HEADERS)b.delete(a);return g.HeadersAdapter.seal(b)}(b.headers)),t.headers},get cookies(){if(!t.cookies){let a=new i.RequestCookies(g.HeadersAdapter.from(b.headers));l(b,a),t.cookies=h.RequestCookiesAdapter.seal(a)}return t.cookies},set cookies(value){t.cookies=value},get mutableCookies(){if(!t.mutableCookies){var u,v;let a,d=(u=b.headers,v=m||(c?s:void 0),a=new i.RequestCookies(g.HeadersAdapter.from(u)),h.MutableRequestCookiesAdapter.wrap(a,v));l(b,d),t.mutableCookies=d}return t.mutableCookies},get userspaceMutableCookies(){return t.userspaceMutableCookies||(t.userspaceMutableCookies=(0,h.createCookiesWithMutableAccessCheck)(this)),t.userspaceMutableCookies},get draftMode(){return t.draftMode||(t.draftMode=new j.DraftModeProvider(o,b,this.cookies,this.mutableCookies)),t.draftMode},renderResumeDataCache:n??null,isHmrRefresh:p,serverComponentsHmrCache:q||globalThis.__serverComponentsHmrCache,fallbackParams:r}}function p(a){a.cookies=h.RequestCookiesAdapter.seal((0,h.responseCookiesToRequestCookies)(a.mutableCookies))}},26670:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"normalizePagePath",{enumerable:!0,get:function(){return g}});let d=c(17888),e=c(16841),f=c(80670);function g(a){let b=/^\/index(\/|$)/.test(a)&&!(0,e.isDynamicRoute)(a)?`/index${a}`:"/"===a?"/index":(0,d.ensureLeadingSlash)(a);{let{posix:a}=c(33873),d=a.normalize(b);if(d!==b)throw new f.NormalizeError(`Requested and resolved page mismatch: ${b} ${d}`)}return b}},27048:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={chainStreams:function(){return q},continueDynamicHTMLResume:function(){return N},continueDynamicPrerender:function(){return K},continueFizzStream:function(){return J},continueStaticFallbackPrerender:function(){return M},continueStaticPrerender:function(){return L},createBufferedTransformStream:function(){return x},createDocumentClosingStream:function(){return O},createInstantTestScriptInsertionTransformStream:function(){return C},createRootLayoutValidatorStream:function(){return H},createRuntimePrefetchTransformStream:function(){return P},renderToInitialFizzStream:function(){return y},streamFromBuffer:function(){return s},streamFromString:function(){return r},streamToBuffer:function(){return v},streamToString:function(){return w},streamToUint8Array:function(){return u}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(12726),g=c(88026),h=c(59841),i=c(28704),j=c(6492),k=c(20399),l=c(52201),m=c(62192),n=c(24025);function o(){}let p=new TextEncoder;function q(...a){if(0===a.length)return new ReadableStream({start(a){a.close()}});if(1===a.length)return a[0];let{readable:b,writable:c}=new TransformStream,d=a[0].pipeTo(c,{preventClose:!0}),e=1;for(;e<a.length-1;e++){let b=a[e];d=d.then(()=>b.pipeTo(c,{preventClose:!0}))}let f=a[e];return(d=d.then(()=>f.pipeTo(c))).catch(o),b}function r(a){return new ReadableStream({start(b){b.enqueue(p.encode(a)),b.close()}})}function s(a){return new ReadableStream({start(b){b.enqueue(a),b.close()}})}async function t(a){let b=a.getReader(),c=[];for(;;){let{done:a,value:d}=await b.read();if(a)break;c.push(d)}return c}async function u(a){var b=await t(a);let c=new Uint8Array(b.reduce((a,b)=>a+b.length,0)),d=0;for(let a of b)c.set(a,d),d+=a.length;return c}async function v(a){return Buffer.concat(await t(a))}async function w(a,b){let c=new TextDecoder("utf-8",{fatal:!0}),d="";for await(let e of a){if(null==b?void 0:b.aborted)return d;d+=c.decode(e,{stream:!0})}return d+c.decode()}function x(a={}){let b,{maxBufferByteLength:c=1/0}=a,d=[],e=0,f=a=>{try{if(0===d.length)return;let b=new Uint8Array(e),c=0;for(let a=0;a<d.length;a++){let e=d[a];b.set(e,c),c+=e.byteLength}d.length=0,e=0,a.enqueue(b)}catch{}};return new TransformStream({transform(a,g){d.push(a),(e+=a.byteLength)>=c?f(g):(a=>{if(b)return;let c=new h.DetachedPromise;b=c,(0,i.scheduleImmediate)(()=>{try{f(a)}finally{b=void 0,c.resolve()}})})(g)},flush:()=>null==b?void 0:b.promise})}function y({ReactDOMServer:a,element:b,streamOptions:c}){return(0,f.getTracer)().trace(g.AppRenderSpan.renderToReadableStream,async()=>a.renderToReadableStream(b,c))}function z(a){let b=-1,c=!1;return new TransformStream({async transform(d,e){let f=-1,g=-1;if(b++,c)return void e.enqueue(d);let h=0;if(-1===f){if(-1===(f=(0,k.indexOfUint8Array)(d,j.ENCODED_TAGS.META.ICON_MARK)))return void e.enqueue(d);47===d[f+(h=j.ENCODED_TAGS.META.ICON_MARK.length)]?h+=2:h++}if(0===b){if(g=(0,k.indexOfUint8Array)(d,j.ENCODED_TAGS.CLOSED.HEAD),-1!==f){if(f<g){let a=new Uint8Array(d.length-h);a.set(d.subarray(0,f)),a.set(d.subarray(f+h),f),d=a}else{let b=await a(),c=p.encode(b),e=c.length,g=new Uint8Array(d.length-h+e);g.set(d.subarray(0,f)),g.set(c,f),g.set(d.subarray(f+h),f+e),d=g}c=!0}}else{let b=await a(),e=p.encode(b),g=e.length,i=new Uint8Array(d.length-h+g);i.set(d.subarray(0,f)),i.set(e,f),i.set(d.subarray(f+h),f+g),d=i,c=!0}e.enqueue(d)}})}function A(a){let b=!1,c=!1;return new TransformStream({async transform(d,e){c=!0;let f=await a();if(b){if(f){let a=p.encode(f);e.enqueue(a)}e.enqueue(d)}else{let a=(0,k.indexOfUint8Array)(d,j.ENCODED_TAGS.CLOSED.HEAD);if(-1!==a){if(f){let b=p.encode(f),c=new Uint8Array(d.length+b.length);c.set(d.slice(0,a)),c.set(b,a),c.set(d.slice(a),a+b.length),e.enqueue(c)}else e.enqueue(d);b=!0}else f&&e.enqueue(p.encode(f)),e.enqueue(d),b=!0}},async flush(b){if(c){let c=await a();c&&b.enqueue(p.encode(c))}}})}async function B(){let a=await (0,n.computeCacheBustingSearchParam)("1","/_full",void 0,void 0),b=`${m.NEXT_RSC_UNION_QUERY}=${a}`,c=`<script>__NEXT_CLIENT_RESUME=fetch(location.pathname+'?${b}',{credentials:'same-origin',headers:{'${m.RSC_HEADER}': '1','${m.NEXT_ROUTER_PREFETCH_HEADER}': '1','${m.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER}': '/_full'}})</script>`,d=!1;return new TransformStream({transform(a,b){if(d)return void b.enqueue(a);let e=(0,k.indexOfUint8Array)(a,j.ENCODED_TAGS.CLOSED.HEAD);if(-1===e)return void b.enqueue(a);let f=p.encode(c),g=new Uint8Array(a.length+f.length);g.set(a.slice(0,e)),g.set(f,e),g.set(a.slice(e),e+f.length),b.enqueue(g),d=!0}})}async function C(a){let b="/_full",c=await (0,n.computeCacheBustingSearchParam)("1",b,void 0,void 0),d=`${m.NEXT_RSC_UNION_QUERY}=${c}`,e=null!==a?`self.__next_r=${JSON.stringify(a)};`:"",f=`<script>${e}self.__next_instant_test=fetch(location.pathname+'?${d}',{credentials:'same-origin',headers:{'${m.RSC_HEADER}':'1','${m.NEXT_ROUTER_PREFETCH_HEADER}':'1','${m.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER}':'${b}','${m.NEXT_INSTANT_PREFETCH_HEADER}':'1'}})</script>`,g=!1;return new TransformStream({transform(a,b){if(g)return void b.enqueue(a);let c=(0,k.indexOfUint8Array)(a,j.ENCODED_TAGS.OPENING.HEAD);if(-1===c)return void b.enqueue(a);let d=a.indexOf(62,c+j.ENCODED_TAGS.OPENING.HEAD.length);if(-1===d)return void b.enqueue(a);let e=p.encode(f),h=d+1,i=new Uint8Array(a.length+e.length);i.set(a.slice(0,h)),i.set(e,h),i.set(a.slice(h),h+e.length),b.enqueue(i),g=!0},flush(a){a.enqueue(j.ENCODED_TAGS.CLOSED.BODY_AND_HTML)}})}function D(a,b){let c=!1,d=null,e=!1;function f(a){return d||(d=g(a)),d}async function g(d){let f=a.getReader();b&&await (0,i.atLeastOneTask)();try{for(;;){let{done:a,value:g}=await f.read();if(a){e=!0;return}b||c||await (0,i.atLeastOneTask)(),d.enqueue(g)}}catch(a){d.error(a)}}return new TransformStream({start(a){b||f(a)},transform(a,c){c.enqueue(a),b&&f(c)},flush(a){if(c=!0,!e)return f(a)}})}let E="</body></html>";function F(){let a=!1;return new TransformStream({transform(b,c){if(a)return c.enqueue(b);let d=(0,k.indexOfUint8Array)(b,j.ENCODED_TAGS.CLOSED.BODY_AND_HTML);if(d>-1){if(a=!0,b.length===j.ENCODED_TAGS.CLOSED.BODY_AND_HTML.length)return;let e=b.slice(0,d);if(c.enqueue(e),b.length>j.ENCODED_TAGS.CLOSED.BODY_AND_HTML.length+d){let a=b.slice(d+j.ENCODED_TAGS.CLOSED.BODY_AND_HTML.length);c.enqueue(a)}}else c.enqueue(b)},flush(a){a.enqueue(j.ENCODED_TAGS.CLOSED.BODY_AND_HTML)}})}function G(a){let b=!1;return new TransformStream({transform(c,d){if(b)return void d.enqueue(c);let e=(0,k.indexOfUint8Array)(c,j.ENCODED_TAGS.OPENING.HTML);if(-1===e)return void d.enqueue(c);let f=e+j.ENCODED_TAGS.OPENING.HTML.length,g=` data-dpl-id="${a}"`,h=p.encode(g),i=new Uint8Array(c.length+h.length);i.set(c.subarray(0,f)),i.set(h,f),i.set(c.subarray(f),f+h.length),d.enqueue(i),b=!0}})}function H(){let a=!1,b=!1;return new TransformStream({async transform(c,d){!a&&(0,k.indexOfUint8Array)(c,j.ENCODED_TAGS.OPENING.HTML)>-1&&(a=!0),!b&&(0,k.indexOfUint8Array)(c,j.ENCODED_TAGS.OPENING.BODY)>-1&&(b=!0),d.enqueue(c)},flush(c){let d=[];a||d.push("html"),b||d.push("body"),d.length&&c.enqueue(p.encode(`<html id="__next_error__">
|
|
5
5
|
<template
|
|
6
6
|
data-next-error-message="Missing ${d.map(a=>`<${a}>`).join(d.length>1?" and ":"")} tags in the root layout.
|
|
7
7
|
Read more at https://nextjs.org/docs/messages/missing-root-layout-tags"
|
|
8
8
|
data-next-error-digest="${l.MISSING_ROOT_TAGS_ERROR}"
|
|
9
9
|
data-next-error-stack=""
|
|
10
10
|
></template>
|
|
11
|
-
`))}})}function I(a,b){let c=a;for(let a of b)a&&(c=c.pipeThrough(a));return c}async function J(a,{suffix:b,inlinedDataStream:c,isStaticGeneration:d,deploymentId:e,getServerInsertedHTML:f,getServerInsertedMetadata:g,validateRootLayout:j}){let k,l,m=b?b.split(E,1)[0]:null;return d?await a.allReady:await (0,i.waitAtLeastOneReactRenderTask)(),I(a,[x(),e?G(e):null,z(g),null!=m&&m.length>0?(l=!1,new TransformStream({transform(a,b){if(b.enqueue(a),!l){let a;l=!0,k=a=new h.DetachedPromise,(0,i.scheduleImmediate)(()=>{try{b.enqueue(p.encode(m))}catch{}finally{k=void 0,a.resolve()}})}},flush(a){if(k)return k.promise;l||a.enqueue(p.encode(m))}})):null,c?D(c,!0):null,j?H():null,F(),A(f)])}async function K(a,{getServerInsertedHTML:b,getServerInsertedMetadata:c,deploymentId:d}){return I(a,[x(),new TransformStream({transform(a,b){(0,k.isEquivalentUint8Arrays)(a,j.ENCODED_TAGS.CLOSED.BODY_AND_HTML)||(0,k.isEquivalentUint8Arrays)(a,j.ENCODED_TAGS.CLOSED.BODY)||(0,k.isEquivalentUint8Arrays)(a,j.ENCODED_TAGS.CLOSED.HTML)||(a=(0,k.removeFromUint8Array)(a,j.ENCODED_TAGS.CLOSED.BODY),a=(0,k.removeFromUint8Array)(a,j.ENCODED_TAGS.CLOSED.HTML),b.enqueue(a))}}),d?G(d):null,A(b),z(c)])}async function L(a,{inlinedDataStream:b,getServerInsertedHTML:c,getServerInsertedMetadata:d,deploymentId:e}){return I(a,[x(),e?G(e):null,A(c),z(d),D(b,!0),F()])}async function M(a,{inlinedDataStream:b,getServerInsertedHTML:c,getServerInsertedMetadata:d,deploymentId:e}){return I(a,[x(),e?G(e):null,A(c),await B(),z(d),D(b,!0),F()])}async function N(a,{delayDataUntilFirstHtmlChunk:b,inlinedDataStream:c,getServerInsertedHTML:d,getServerInsertedMetadata:e,deploymentId:f}){return I(a,[x(),f?G(f):null,A(d),z(e),D(c,b),F()])}function O(){return r(E)}function P(a,b,c){let d=new TextEncoder,e=d.encode(`[${a}]`),f=e[0],g=d.encode(`[${b},${c}]`),h=e.length,i=null,j=!1;function k(a,b){if(j){b&&a.enqueue(b);return}if(i){let c=i.length-(h-1);if(b&&(c+=Math.min(b.length,h-1)),c<1){a.enqueue(i),i=b;return}let d=i.indexOf(f);a:for(;-1<d&&d<c;){let c=1;for(;c<h;){let a=d+c;if((a<i.length?i[a]:b[a-i.length])!==e[c]){d=i.indexOf(f,d+1);continue a}c++}if(j=!0,a.enqueue(i.subarray(0,d)),a.enqueue(g),d+h<i.length&&a.enqueue(i.slice(d+h)),b){let c=d+h-i.length,e=c>0?b.subarray(c):b;a.enqueue(e)}i=null;return}a.enqueue(i)}i=b}return new TransformStream({transform(a,b){k(b,a)},flush(a){k(a,null)}})}},28344:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={formatUrl:function(){return h},formatWithValidation:function(){return j},urlObjectKeys:function(){return i}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(44001)._(c(68202)),g=/https?|ftp|gopher|file/;function h(a){let{auth:b,hostname:c}=a,d=a.protocol||"",e=a.pathname||"",h=a.hash||"",i=a.query||"",j=!1;b=b?encodeURIComponent(b).replace(/%3A/i,":")+"@":"",a.host?j=b+a.host:c&&(j=b+(~c.indexOf(":")?`[${c}]`:c),a.port&&(j+=":"+a.port)),i&&"object"==typeof i&&(i=String(f.urlQueryToSearchParams(i)));let k=a.search||i&&`?${i}`||"";return d&&!d.endsWith(":")&&(d+=":"),a.slashes||(!d||g.test(d))&&!1!==j?(j="//"+(j||""),e&&"/"!==e[0]&&(e="/"+e)):j||(j=""),h&&"#"!==h[0]&&(h="#"+h),k&&"?"!==k[0]&&(k="?"+k),e=e.replace(/[?#]/g,encodeURIComponent),k=k.replace("#","%23"),`${d}${j}${e}${k}${h}`}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function j(a){return h(a)}},28516:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"normalizeLocalePath",{enumerable:!0,get:function(){return d}});let c=new WeakMap;function d(a,b){let d;if(!b)return{pathname:a};let e=c.get(b);e||(e=b.map(a=>a.toLowerCase()),c.set(b,e));let f=a.split("/",2);if(!f[1])return{pathname:a};let g=f[1].toLowerCase(),h=e.indexOf(g);return h<0?{pathname:a}:(d=b[h],{pathname:a=a.slice(d.length+1)||"/",detectedLocale:d})}},28704:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={atLeastOneTask:function(){return g},scheduleImmediate:function(){return f},scheduleOnNextTick:function(){return e},waitAtLeastOneReactRenderTask:function(){return h}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e=a=>{Promise.resolve().then(()=>{process.nextTick(a)})},f=a=>{setImmediate(a)};function g(){return new Promise(a=>f(a))}function h(){return new Promise(a=>setImmediate(a))}},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29299:(a,b)=>{"use strict";function c(){let a,b,c=new Promise((c,d)=>{a=c,b=d});return{resolve:a,reject:b,promise:c}}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"createPromiseWithResolvers",{enumerable:!0,get:function(){return c}})},30585:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"resolveParamValue",{enumerable:!0,get:function(){return f}});let d=c(42776),e=c(58486);function f(a,b,c,f,g){switch(b){case"catchall":case"optional-catchall":case"catchall-intercepted-(..)(..)":case"catchall-intercepted-(.)":case"catchall-intercepted-(..)":case"catchall-intercepted-(...)":let h=[];for(let a=c;a<f.segments.length;a++){let d=f.segments[a];if("static"===d.type){let f=d.name,g=(0,e.interceptionPrefixFromParamType)(b);g&&a===c&&g===d.interceptionMarker&&(f=f.replace(d.interceptionMarker,"")),h.push(f)}else{if(!g.hasOwnProperty(d.param.paramName)){if("optional-catchall"===d.param.paramType)break;return}let a=g[d.param.paramName];Array.isArray(a)?h.push(...a):h.push(a)}}if(h.length>0)return h;if("optional-catchall"===b)return;throw Object.defineProperty(new d.InvariantError(`Unexpected empty path segments match for a route "${f.pathname}" with param "${a}" of type "${b}"`),"__NEXT_ERROR_CODE",{value:"E931",enumerable:!1,configurable:!0});case"dynamic":case"dynamic-intercepted-(..)(..)":case"dynamic-intercepted-(.)":case"dynamic-intercepted-(..)":case"dynamic-intercepted-(...)":if(c<f.segments.length){let a=f.segments[c];if("dynamic"===a.type&&!g.hasOwnProperty(a.param.paramName))return;return"dynamic"===a.type?g[a.param.paramName]:(0,e.interceptionPrefixFromParamType)(b)===a.interceptionMarker?a.name.replace(a.interceptionMarker,""):a.name}return}}},31050:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ReflectAdapter",{enumerable:!0,get:function(){return c}});class c{static get(a,b,c){let d=Reflect.get(a,b,c);return"function"==typeof d?d.bind(a):d}static set(a,b,c,d){return Reflect.set(a,b,c,d)}static has(a,b){return Reflect.has(a,b)}static deleteProperty(a,b){return Reflect.deleteProperty(a,b)}}},31147:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={createLazyResult:function(){return e},isResolvedLazyResult:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});function e(a){let b,c={then:(d,e)=>(b||(b=Promise.resolve(a())),b.then(a=>{c.value=a}).catch(()=>{}),b.then(d,e))};return c}function f(a){return a.hasOwnProperty("value")}},31385:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={PARAMETER_PATTERN:function(){return l},getDynamicParam:function(){return k},interpolateParallelRouteParams:function(){return j},parseMatchedParameter:function(){return n},parseParameter:function(){return m}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(42776),g=c(71185),h=c(36081),i=c(30585);function j(a,b,c,d){let e=structuredClone(b),j=[{tree:a,depth:0}],k=(0,h.parseAppRoute)(c,!0);for(;j.length>0;){let{tree:a,depth:b}=j.pop(),{segment:c,parallelRoutes:l}=(0,g.parseLoaderTree)(a),m=(0,h.parseAppRouteSegment)(c);if(m?.type==="dynamic"&&!e.hasOwnProperty(m.param.paramName)&&!d?.has(m.param.paramName)){let{paramName:a,paramType:c}=m.param,d=(0,i.resolveParamValue)(a,c,b,k,e);if(void 0!==d)e[a]=d;else if("optional-catchall"!==c)throw Object.defineProperty(new f.InvariantError(`Could not resolve param value for segment: ${a}`),"__NEXT_ERROR_CODE",{value:"E932",enumerable:!1,configurable:!0})}let n=b;for(let a of(m&&"route-group"!==m.type&&"parallel-route"!==m.type&&n++,Object.values(l)))j.push({tree:a,depth:n})}return e}function k(a,b,c,d,e){let g=function(a,b,c){let d=a[b];if(c?.has(b)){let[a]=c.get(b);d=a}else Array.isArray(d)?d=d.map(a=>encodeURIComponent(a)):"string"==typeof d&&(d=encodeURIComponent(d));return d}(a,b,d);if(!g||0===g.length){if("oc"===c)return{param:b,value:null,type:c,treeSegment:[b,"",c,e]};throw Object.defineProperty(new f.InvariantError(`Missing value for segment key: "${b}" with dynamic param type: ${c}`),"__NEXT_ERROR_CODE",{value:"E864",enumerable:!1,configurable:!0})}let h=Array.isArray(g)?g.join("/"):g;return{param:b,value:g,treeSegment:[b,h,c,e],type:c}}let l=/^([^[]*)\[((?:\[[^\]]*\])|[^\]]+)\](.*)$/;function m(a){let b=a.match(l);return b?n(b[2]):n(a)}function n(a){let b=a.startsWith("[")&&a.endsWith("]");b&&(a=a.slice(1,-1));let c=a.startsWith("...");return c&&(a=a.slice(3)),{key:a,repeat:c,optional:b}}},31574:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"getImplicitTags",{enumerable:!0,get:function(){return h}});let d=c(96100),e=c(57155),f=c(67751),g=c(31147);async function h(a,b,c){let h=new Set;for(let b of(a=>{let b=["/layout"];if(a.startsWith("/")){let c=a.split("/");for(let a=1;a<c.length+1;a++){let d=c.slice(0,a).join("/");d&&(d.endsWith("/page")||d.endsWith("/route")||(d=`${d}${!d.endsWith("/")?"/":""}layout`),b.push(d))}}return b})(a))b=(0,f.encodeCacheTag)(`${d.NEXT_CACHE_IMPLICIT_TAG_ID}${b}`),h.add(b);if(b&&(!c||0===c.size)){let a=(0,f.encodeCacheTag)(`${d.NEXT_CACHE_IMPLICIT_TAG_ID}${b}`);h.add(a)}h.has(`${d.NEXT_CACHE_IMPLICIT_TAG_ID}/`)&&h.add(`${d.NEXT_CACHE_IMPLICIT_TAG_ID}/index`),h.has(`${d.NEXT_CACHE_IMPLICIT_TAG_ID}/index`)&&h.add(`${d.NEXT_CACHE_IMPLICIT_TAG_ID}/`);let i=Array.from(h);return{tags:i,expirationsByCacheKind:function(a){let b=new Map,c=(0,e.getCacheHandlerEntries)();if(c)for(let[d,e]of c)"getExpiration"in e&&b.set(d,(0,g.createLazyResult)(async()=>e.getExpiration(a)));return b}(i)}}},32053:(a,b)=>{"use strict";function c(a){return null!==a&&"object"==typeof a&&"then"in a&&"function"==typeof a.then}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"isThenable",{enumerable:!0,get:function(){return c}})},32457:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"createDefaultCacheHandler",{enumerable:!0,get:function(){return f}});let d=c(9913),e=c(36820);function f(a){if(0===a)return{get:()=>Promise.resolve(void 0),set:()=>Promise.resolve(),refreshTags:()=>Promise.resolve(),getExpiration:()=>Promise.resolve(0),updateTags:()=>Promise.resolve()};let b=new d.LRUCache(a,a=>a.size),c=new Map,f=process.env.NEXT_PRIVATE_DEBUG_CACHE?console.debug.bind(console,"DefaultCacheHandler:"):void 0;return{async get(a){let d=c.get(a);d&&(null==f||f("get",a,"pending"),await d);let g=b.get(a);if(!g){null==f||f("get",a,"not found");return}let h=g.entry;if(performance.timeOrigin+performance.now()>h.timestamp+1e3*h.revalidate){null==f||f("get",a,"expired");return}let i=h.revalidate;if((0,e.areTagsExpired)(h.tags,h.timestamp)){null==f||f("get",a,"had expired tag");return}(0,e.areTagsStale)(h.tags,h.timestamp)&&(null==f||f("get",a,"had stale tag"),i=-1);let[j,k]=h.value.tee();return h.value=k,null==f||f("get",a,"found",{tags:h.tags,timestamp:h.timestamp,expire:h.expire,revalidate:i}),{...h,revalidate:i,value:j}},async set(a,d){null==f||f("set",a,"start");let e=()=>{},g=new Promise(a=>{e=a});c.set(a,g);let h=await d,i=0;try{let[c,d]=h.value.tee();h.value=c;let e=d.getReader();for(let a;!(a=await e.read()).done;)i+=Buffer.from(a.value).byteLength;b.set(a,{entry:h,isErrored:!1,errorRetryCount:0,size:i}),null==f||f("set",a,"done")}catch(b){null==f||f("set",a,"failed",b)}finally{e(),c.delete(a)}},async refreshTags(){},async getExpiration(a){let b=Math.max(...a.map(a=>{let b=e.tagsManifest.get(a);return b&&b.expired||0}),0);return null==f||f("getExpiration",{tags:a,expiration:b}),b},async updateTags(a,b){let c=Math.round(performance.timeOrigin+performance.now());for(let d of(null==f||f("updateTags",{tags:a,timestamp:c}),a)){let a=e.tagsManifest.get(d)||{};if(b){let f={...a};f.stale=c,void 0!==b.expire&&(f.expired=c+1e3*b.expire),e.tagsManifest.set(d,f)}else e.tagsManifest.set(d,{...a,expired:c})}}}}},32648:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={edgeInstrumentationOnRequestError:function(){return h},ensureInstrumentationRegistered:function(){return j},getEdgeInstrumentationModule:function(){return e}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});async function e(){return"_ENTRIES"in globalThis&&_ENTRIES.middleware_instrumentation&&await _ENTRIES.middleware_instrumentation}let f=null;async function g(){if("phase-production-build"===process.env.NEXT_PHASE)return;f||(f=e());let a=await f;if(null==a?void 0:a.register)try{await a.register()}catch(a){throw a.message=`An error occurred while loading instrumentation hook: ${a.message}`,a}}async function h(...a){let b=await e();try{var c;await (null==b||null==(c=b.onRequestError)?void 0:c.call(b,...a))}catch(a){console.error("Error in instrumentation.onRequestError:",a)}}let i=null;function j(){return i||(i=g()),i}},33323:(a,b,c)=>{"use strict";function d(a,b=null){if(null==a)return b;if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return b}}function e(a){return JSON.stringify(a??null)}c.d(b,{q:()=>d,s:()=>e})},33701:(a,b,c)=>{"use strict";c.r(b),c.d(b,{addKeySpend:()=>$,budgetPeriodMs:()=>Z,createApiKey:()=>U,deleteApiKey:()=>W,getApiKeyById:()=>S,getApiKeyBySecret:()=>Y,getApiKeyByValue:()=>T,getApiKeyScopeByKey:()=>ab,getApiKeys:()=>R,reserveApiKeyTokens:()=>_,settleApiKeyTokens:()=>aa,updateApiKey:()=>V,validateApiKey:()=>X});var d=c(43892),e=c(59339),f=c(21820);let g={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"};(function(a=(0,f.arch)()){})(),function(a=(0,f.platform)()){}();let h="https://daily-cloudcode-pa.googleapis.com",i="antigravity/ide/2.11.0 darwin/arm64",j={id:"antigravity",priority:20,alias:"ag",uiAlias:"ag",display:{name:"Antigravity",icon:"rocket_launch",color:"#F59E0B",website:"https://antigravity.google",notice:{signupUrl:"https://antigravity.google"},deprecated:!0,deprecationNotice:"RISK_NOTICE"},category:"oauth",serviceKinds:["llm","image","webSearch"],transport:{baseUrls:[h],format:"antigravity",forceStream:!0,headers:{"User-Agent":i},retry:{429:{attempts:6},500:{attempts:3},503:{attempts:3}},usage:{quotaApiUrl:`${h}/v1internal:fetchAvailableModels`,quotaSummaryApiUrl:`${h}/v1internal:retrieveUserQuotaSummary`,loadProjectApiUrl:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",tokenUrl:"https://oauth2.googleapis.com/token"},clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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"},models:[{id:"gemini-3.8-flash-high",name:"Gemini 3.8 Flash (High)",upstreamModelId:"gemini-3.8-flash-high(high)"},{id:"gemini-3.8-flash-medium",name:"Gemini 3.8 Flash (Medium)",upstreamModelId:"gemini-3.8-flash-medium(medium)"},{id:"gemini-3.8-flash-low",name:"Gemini 3.8 Flash (Low)",upstreamModelId:"gemini-3.8-flash-low(low)"},{id:"gemini-3.8-flash",name:"Gemini 3.8 Flash",upstreamModelId:"gemini-3.8-flash-medium(medium)"},{id:"gemini-3.7-flash-high",name:"Gemini 3.7 Flash (High)",upstreamModelId:"gemini-3.7-flash-tiered(high)"},{id:"gemini-3.7-flash-medium",name:"Gemini 3.7 Flash (Medium)",upstreamModelId:"gemini-3.7-flash-tiered(medium)"},{id:"gemini-3.7-flash-low",name:"Gemini 3.7 Flash (Low)",upstreamModelId:"gemini-3.7-flash-tiered(low)"},{id:"gemini-3.7-flash",name:"Gemini 3.7 Flash",upstreamModelId:"gemini-3.7-flash-tiered(medium)"},{id:"gemini-3.6-flash-high",name:"Gemini 3.6 Flash (High)",upstreamModelId:"gemini-3.6-flash-tiered(high)"},{id:"gemini-3.6-flash-medium",name:"Gemini 3.6 Flash (Medium)",upstreamModelId:"gemini-3.6-flash-tiered(medium)"},{id:"gemini-3.6-flash-low",name:"Gemini 3.6 Flash (Low)",upstreamModelId:"gemini-3.6-flash-tiered(low)"},{id:"gemini-pro-agent",name:"Gemini 3.1 Pro (High)"},{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview",upstreamModelId:"gemini-pro-agent"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro",upstreamModelId:"gemini-pro-agent"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro (Low)"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6 (Thinking)"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 (Thinking)"},{id:"gpt-oss-120b-medium",name:"GPT-OSS 120B (Medium)"},{id:"gemini-3-flash",name:"Gemini 3 Flash",thinking:!1},{id:"gemini-3.1-flash-image",name:"Gemini 3.1 Flash (Image)",kind:"image",imageGen:!0,capabilities:["textToImage","edit","multiImage"]}],oauth:{authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/cclog","https://www.googleapis.com/auth/experimentsandconfigs"],apiEndpoint:"https://daily-cloudcode-pa.googleapis.com",apiVersion:"v1internal",loadCodeAssistEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",onboardUserEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:onboardUser",loadCodeAssistUserAgent:i,refreshLeadMs:3e5},searchViaChat:{defaultModel:"gemini-2.5-flash",endpoint:`${h}/v1internal:generateContent`,freeTier:"Free — Google Search grounding through an Antigravity OAuth account."},features:{usage:!0}},k="0.154.0",l={id:"codex",priority:30,alias:"cx",uiAlias:"cx",display:{name:"OpenAI Codex",icon:"code",color:"#3B82F6",website:"https://chatgpt.com/codex",notice:{signupUrl:"https://chatgpt.com/codex"},deprecated:!0,deprecationNotice:"RISK_NOTICE",kindNotice:{image:"Requires a ChatGPT Plus (or higher) account. Free accounts are not supported for image generation."}},category:"oauth",thinkingConfig:{options:["auto","none","low","medium","high"],defaultMode:"auto"},transport:{baseUrl:"https://chatgpt.com/backend-api/codex/responses",format:"openai-responses",forceStream:!0,cliVersion:k,headers:{originator:"codex_cli_rs","User-Agent":`codex_cli_rs/${k}`},usage:{url:"https://chatgpt.com/backend-api/wham/usage",resetCreditsUrl:"https://chatgpt.com/backend-api/wham/rate-limit-reset-credits",resetCreditsConsumeUrl:"https://chatgpt.com/backend-api/wham/rate-limit-reset-credits/consume"}},models:[{id:"gpt-5.6-sol",name:"GPT 5.6 Sol"},{id:"gpt-5.6-sol-review",name:"GPT 5.6 Sol Review",upstreamModelId:"gpt-5.6-sol",quotaFamily:"review"},{id:"gpt-5.6-terra",name:"GPT 5.6 Terra"},{id:"gpt-5.6-terra-review",name:"GPT 5.6 Terra Review",upstreamModelId:"gpt-5.6-terra",quotaFamily:"review"},{id:"gpt-5.6-luna",name:"GPT 5.6 Luna"},{id:"gpt-5.6-luna-review",name:"GPT 5.6 Luna Review",upstreamModelId:"gpt-5.6-luna",quotaFamily:"review"},{id:"gpt-5.5",name:"GPT 5.5"},{id:"gpt-5.5-review",name:"GPT 5.5 Review",upstreamModelId:"gpt-5.5",quotaFamily:"review"},{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.4-review",name:"GPT 5.4 Review",upstreamModelId:"gpt-5.4",quotaFamily:"review"},{id:"gpt-5.4-mini",name:"GPT 5.4 Mini"},{id:"gpt-5.4-mini-review",name:"GPT 5.4 Mini Review",upstreamModelId:"gpt-5.4-mini",quotaFamily:"review"},{id:"gpt-5.3-codex-spark",name:"GPT 5.3 Codex Spark"},{id:"gpt-5.3-codex-spark-review",name:"GPT 5.3 Codex Spark Review",upstreamModelId:"gpt-5.3-codex-spark",quotaFamily:"review"},{id:"gpt-image-2.5",name:"GPT Image 2.5",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-image-2.5-flare",name:"GPT Image 2.5 Flare",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-image-2.5-sunburst",name:"GPT Image 2.5 Sunburst",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-5.6-sol-image",name:"GPT 5.6 Sol Image",capabilities:["text2img","edit"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-5.6-terra-image",name:"GPT 5.6 Terra Image",capabilities:["text2img","edit"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-5.6-luna-image",name:"GPT 5.6 Luna Image",capabilities:["text2img","edit"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-image-2",name:"GPT Image 2",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format","output_compression","moderation","partial_images"],kind:"image"},{id:"gpt-image-1.5",name:"GPT Image 1.5",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format","output_compression","moderation","partial_images"],kind:"image"},{id:"gpt-5.5-image",name:"GPT 5.5 Image",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-5.4-image",name:"GPT 5.4 Image",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format"],kind:"image"},{id:"gpt-5.3-image",name:"GPT 5.3 Image",capabilities:["text2img","edit","multiImage"],params:["size","quality","background","image_detail","output_format"],kind:"image"}],serviceKinds:["llm","image"],oauth:{clientId:"app_EMoamEEZ73f0CkXaXp7hrann",authorizeUrl:"https://auth.openai.com/oauth/authorize",tokenUrl:"https://auth.openai.com/oauth/token",scope:"openid profile email offline_access",codeChallengeMethod:"S256",fixedPort:1455,callbackPath:"/auth/callback",extraParams:{id_token_add_organizations:"true",codex_cli_simplified_flow:"true",originator:"codex_cli_rs"},refreshLeadMs:432e6,refresh:{encoding:"form",scope:"openid profile email offline_access"},maxRefreshAgeMs:6912e5,trackRefreshAt:!0},features:{usage:!0}},m={id:"deepseek",priority:110,alias:"deepseek",aliases:["ds"],uiAlias:"ds",display:{name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com",notice:{apiKeyUrl:"https://platform.deepseek.com/api_keys"}},category:"apikey",transport:{baseUrl:"https://api.deepseek.com/chat/completions",validateUrl:"https://api.deepseek.com/models",reasoningInject:{scope:"all"},quirks:{claudeSupportedToolTypes:["web_search_20250305","web_search_20260209"]}},transports:[{format:"openai",baseUrl:"https://api.deepseek.com/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},{format:"claude",baseUrl:"https://api.deepseek.com/anthropic/v1/messages",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw"}}],models:[{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro"},{id:"deepseek-v4-pro-max",name:"DeepSeek V4 Pro Max",upstreamModelId:"deepseek-v4-pro"},{id:"deepseek-v4-pro-none",name:"DeepSeek V4 Pro No Thinking",upstreamModelId:"deepseek-v4-pro"},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash"},{id:"deepseek-v4-flash-vision-exp",name:"DeepSeek V4 Flash Vision (Exp)"},{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}],features:{usage:!0,usageApikey:!0}},n={id:"glm",priority:140,alias:"glm",display:{name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn",notice:{apiKeyUrl:"https://open.bigmodel.cn/usercenter/apikeys"}},category:"apikey",transport:{baseUrl:"https://api.z.ai/api/anthropic/v1/messages",format:"claude",urlSuffix:"?beta=true",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw"},usage:{url:"https://api.z.ai/api/monitor/usage/quota/limit"}},transports:[{format:"openai",baseUrl:"https://api.z.ai/api/coding/paas/v4/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},{format:"claude",baseUrl:"https://api.z.ai/api/anthropic/v1/messages",urlSuffix:"?beta=true",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw"}}],models:[{id:"glm-5.3",name:"GLM 5.3"},{id:"glm-5.3-flash",name:"GLM 5.3 Flash (Vision)"},{id:"glm-5.2",name:"GLM 5.2"},{id:"glm-5.1",name:"GLM 5.1"},{id:"glm-5-turbo",name:"GLM 5 Turbo"},{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"}],serviceKinds:["llm","webSearch"],searchConfig:{baseUrl:"https://api.z.ai/api/mcp/web_search_prime/mcp",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:0,searchTypes:["web"],defaultMaxResults:5,maxMaxResults:50,timeoutMs:1e4,cacheTTLMs:3e5},features:{usage:!0,usageApikey:!0}},o="0.2.99",p="https://cli-chat-proxy.grok.com/v1",q="grok-shell",r=`grok-shell/${o} (linux; x86_64)`,s={id:"grok-cli",priority:275,alias:"gcli",aliases:["grok-build","gb"],uiAlias:"gcli",display:{name:"Grok CLI (Grok Build)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"GC",website:"https://x.ai",notice:{text:"Sign in with your xAI / Grok account via device code. Uses Grok Build subscription credits (cli-chat-proxy.grok.com).",signupUrl:"https://grok.com/supergrok"}},category:"oauth",authModes:["oauth"],hasOAuth:!0,thinkingConfig:{options:["low","medium","high","xhigh"],defaultMode:"high"},transport:{baseUrl:`${p}/responses`,format:"openai-responses",forceStream:!0,modelsUrl:`${p}/models`,userUrl:`${p}/user`,billingUrl:`${p}/billing`,clientVersion:o,clientIdentifier:q,tokenAuth:"xai-grok-cli",headers:{"User-Agent":r,"x-grok-client-identifier":q,"x-grok-client-version":o},usage:{url:`${p}/billing?format=credits`,userUrl:`${p}/user?include=subscription`},retry:{429:{attempts:2,delayMs:2e3},502:{attempts:2,delayMs:1500},503:{attempts:2,delayMs:1500}}},models:[{id:"grok-build",name:"Grok Build",contextLength:5e5,maxOutputTokens:64e3},{id:"grok-4.5",name:"Grok 4.5"},{id:"grok-4.5-high",name:"Grok 4.5 (High)",upstreamModelId:"grok-4.5"},{id:"grok-4.5-medium",name:"Grok 4.5 (Medium)",upstreamModelId:"grok-4.5"},{id:"grok-4.5-low",name:"Grok 4.5 (Low)",upstreamModelId:"grok-4.5"}],features:{usage:!0},oauth:{clientId:"b1a00492-073a-47ea-816f-4c329264a828",deviceCodeUrl:"https://auth.x.ai/oauth2/device/code",tokenUrl:"https://auth.x.ai/oauth2/token",refreshUrl:"https://auth.x.ai/oauth2/token",scope:"openid profile email offline_access grok-cli:access api:access conversations:read conversations:write",referrer:"grok-build",refreshLeadMs:3e5}},t={id:"kimi",priority:170,alias:"kimi",aliases:["kimi-coding","kmc"],display:{name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn",notice:{apiKeyUrl:"https://platform.moonshot.ai/console/api-keys",signupUrl:"https://www.kimi.com/code"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,transport:{baseUrl:"https://api.kimi.com/coding/v1/messages",format:"claude",urlSuffix:"?beta=true",forceStream:!0,headers:{...g},clientId:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",auth:{combined:!0,header:"x-api-key",scheme:"raw",hooks:["kimiHeaders"]}},transports:[{format:"openai",authType:"oauth",baseUrl:"https://api.kimi.com/coding/v1/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer",hooks:["kimiHeaders"]}},{format:"claude",authType:"oauth",baseUrl:"https://api.kimi.com/coding/v1/messages",urlSuffix:"?beta=true",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw",hooks:["kimiHeaders"]}},{format:"openai-apikey",baseUrl:"https://api.moonshot.cn/v1/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}}],models:[{id:"kimi-k3",name:"Kimi K3"},{id:"k3",name:"Kimi K3 (Code)"},{id:"kimi-for-coding",name:"Kimi for Coding"},{id:"kimi-for-coding-highspeed",name:"Kimi for Coding Highspeed"},{id:"kimi-k2.7-code",name:"Kimi K2.7 Code"},{id:"kimi-k2.7-code-highspeed",name:"Kimi K2.7 Code Highspeed"},{id:"kimi-k2.6",name:"Kimi K2.6"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],serviceKinds:["llm","webSearch"],searchViaChat:{defaultModel:"kimi-k3",endpoint:"https://api.moonshot.cn/v1/chat/completions",pricingUrl:"https://platform.kimi.ai/docs/pricing/chat"},oauth:{clientId:"17e5f671-d194-4dfb-9706-5516cb48c098",deviceCodeUrl:"https://auth.kimi.com/api/oauth/device_authorization",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",refreshLeadMs:3e5,authorizeDeviceUrl:"https://www.kimi.com/code/authorize_device"},features:{usage:!0,usageApikey:!0}},u={id:"minimax-cn",priority:190,alias:"minimax-cn",display:{name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com",notice:{apiKeyUrl:"https://platform.minimaxi.com/user-center/basic-information/interface-key"}},category:"apikey",transport:{baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",format:"claude",urlSuffix:"?beta=true",headers:{...g},quirks:{dropOutputConfig:!0,ensureThinkingSignature:!0,requireClaudeToolType:!0},reasoningInject:{scope:"all"},auth:{combined:!0,header:"x-api-key",scheme:"raw"},usage:{urls:["https://www.minimaxi.com/v1/api/openplatform/coding_plan/remains","https://api.minimaxi.com/v1/api/openplatform/coding_plan/remains"]}},transports:[{format:"openai",baseUrl:"https://api.minimaxi.com/v1/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},{format:"claude",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw"}}],models:[{id:"MiniMax-M3",name:"MiniMax M3",targetFormat:"claude"},{id:"MiniMax-M2.7",name:"MiniMax M2.7"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"},{id:"MiniMax-H3",name:"MiniMax H3",params:["duration","resolution","aspect_ratio"],kind:"video"},{id:"speech-2.8-hd",name:"Speech 2.8 HD",kind:"tts"},{id:"speech-2.8-turbo",name:"Speech 2.8 Turbo",kind:"tts"},{id:"speech-2.6-hd",name:"Speech 2.6 HD",kind:"tts"},{id:"speech-2.6-turbo",name:"Speech 2.6 Turbo",kind:"tts"},{id:"speech-02-hd",name:"Speech 02 HD",kind:"tts"},{id:"speech-02-turbo",name:"Speech 02 Turbo",kind:"tts"},{id:"speech-01-hd",name:"Speech 01 HD",kind:"tts"},{id:"speech-01-turbo",name:"Speech 01 Turbo",kind:"tts"}],serviceKinds:["llm","tts","video"],ttsConfig:{baseUrl:"https://api.minimaxi.com/v1/t2a_v2",authType:"apikey",authHeader:"bearer",format:"minimax-tts"},videoConfig:{format:"minimax-v2",createUrl:"https://api.minimaxi.com/v2/video_generation",queryUrl:"https://api.minimaxi.com/v2/query/video_generation",defaultModel:"MiniMax-H3",models:["MiniMax-H3"],resolutions:["2K"],duration:{min:4,max:15},textToVideoRatios:["adaptive","21:9","16:9","4:3","1:1","3:4","9:16"],maxPromptCharacters:7e3,supportsAigcWatermark:!0},features:{usage:!0,usageApikey:!0}},v={id:"minimax",priority:90,alias:"minimax",display:{name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com",notice:{apiKeyUrl:"https://platform.minimaxi.com/user-center/basic-information/interface-key"}},category:"apikey",transport:{baseUrl:"https://api.minimax.io/anthropic/v1/messages",format:"claude",urlSuffix:"?beta=true",headers:{...g},quirks:{dropOutputConfig:!0,ensureThinkingSignature:!0,requireClaudeToolType:!0},reasoningInject:{scope:"all"},auth:{combined:!0,header:"x-api-key",scheme:"raw"},usage:{urls:["https://www.minimax.io/v1/token_plan/remains","https://api.minimax.io/v1/api/openplatform/coding_plan/remains"]}},transports:[{format:"openai",baseUrl:"https://api.minimax.io/v1/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},{format:"claude",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw"}}],models:[{id:"MiniMax-M3",name:"MiniMax M3",targetFormat:"claude"},{id:"MiniMax-M2.7",name:"MiniMax M2.7"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"},{id:"minimax-image-01",name:"MiniMax Image 01",params:["n","size","response_format"],kind:"image"},{id:"MiniMax-H3",name:"MiniMax H3",params:["duration","resolution","aspect_ratio"],kind:"video"},{id:"speech-2.8-hd",name:"Speech 2.8 HD",kind:"tts"},{id:"speech-2.8-turbo",name:"Speech 2.8 Turbo",kind:"tts"},{id:"speech-2.6-hd",name:"Speech 2.6 HD",kind:"tts"},{id:"speech-2.6-turbo",name:"Speech 2.6 Turbo",kind:"tts"},{id:"speech-02-hd",name:"Speech 02 HD",kind:"tts"},{id:"speech-02-turbo",name:"Speech 02 Turbo",kind:"tts"},{id:"speech-01-hd",name:"Speech 01 HD",kind:"tts"},{id:"speech-01-turbo",name:"Speech 01 Turbo",kind:"tts"}],serviceKinds:["llm","image","imageToText","webSearch","tts","video"],ttsConfig:{baseUrl:"https://api.minimax.io/v1/t2a_v2",authType:"apikey",authHeader:"bearer",format:"minimax-tts"},videoConfig:{format:"minimax-v2",createUrl:"https://api.minimax.io/v2/video_generation",queryUrl:"https://api.minimax.io/v2/query/video_generation",defaultModel:"MiniMax-H3",models:["MiniMax-H3"],resolutions:["2K"],duration:{min:4,max:15},textToVideoRatios:["adaptive","21:9","16:9","4:3","1:1","3:4","9:16"],maxPromptCharacters:7e3},imageConfig:{baseUrl:"https://api.minimaxi.com/v1/images/generations"},searchViaChat:{defaultModel:"MiniMax-M2.7",endpoint:"https://api.minimaxi.com/v1/text/chatcompletion_v2",pricingUrl:"https://www.minimaxi.com/document/price"},features:{usage:!0,usageApikey:!0}},w="https://inference-api.nousresearch.com/v1",x=`${w}/chat/completions`,y=`${w}/models`;function z(a,b){let c=process.env[a];if(null==c||""===c)return b;let d=parseInt(c,10);return Number.isFinite(d)&&d>0?d:b}[...["model is not supported","model not supported","model not found","model does not exist","unknown model","invalid model","modelerror"].map(a=>({text:a,permanent:!0})),...[/\bmodel\s+\S+\s+is\s+not\s+supported\b/,/\bmodel\s+\S+\s+(?:does\s+not\s+exist|not\s+found)\b/].map(a=>({pattern:a,permanent:!0})),...[/upstream request failed:\s*\[invalid_request_error\]/].map(a=>({pattern:a,permanent:!0}))];let A=process.env.SEARXNG_URL?.trim()||"http://localhost:8888/search";z("STREAM_STALL_TIMEOUT_MS",36e4),z("STREAM_FIRST_CHUNK_TIMEOUT_MS",3e4),(()=>{let a=process.env.SSE_KEEPALIVE_MS;if(null!=a&&""!==a)return Number.isFinite(parseInt(a,10))})(),z("FETCH_CONNECT_TIMEOUT_MS",6e4),z("RESPONSE_BODY_TIMEOUT_MS",3e5),z("GEMINI_NATIVE_TTS_FETCH_TIMEOUT_MS",45e3);let B=[{id:"alicode-intl",priority:10,alias:"alicode-intl",display:{name:"Alibaba Coding",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://www.alibabacloud.com/product/coding",notice:{apiKeyUrl:"https://www.alibabacloud.com/product/coding"}},category:"apikey",transport:{baseUrl:"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",headers:{},quirks:{preserveCacheControl:!0}},models:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}]},{id:"alicode",priority:20,alias:"alicode",display:{name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com",notice:{apiKeyUrl:"https://bailian.console.aliyun.com/?apiKey=1"}},category:"apikey",transport:{baseUrl:"https://coding.dashscope.aliyuncs.com/v1/chat/completions",headers:{},quirks:{preserveCacheControl:!0}},models:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}]},{id:"alims-intl",priority:11,alias:"alims-intl",display:{name:"Alibaba Studio",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com",notice:{apiKeyUrl:"https://modelstudio.console.alibabacloud.com/?apiKey=1"}},category:"apikey",transport:{baseUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions",headers:{},quirks:{preserveCacheControl:!0}},models:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}]},{id:"alitp-intl",priority:11,alias:"alitp-intl",display:{name:"Alibaba Token Plan",icon:"cloud",color:"#FF6A00",textIcon:"ATP",website:"https://www.alibabacloud.com/campaign/ai-landing-page-token",notice:{apiKeyUrl:"https://modelstudio.console.alibabacloud.com/?apiKey=1"}},category:"apikey",transport:{baseUrl:"https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions",headers:{},quirks:{preserveCacheControl:!0}},models:[{id:"qwen3.8-max-preview",name:"Qwen3.8 Max Preview"},{id:"qwen3.7-max",name:"Qwen3.7 Max"},{id:"qwen3.7-plus",name:"Qwen3.7 Plus"},{id:"qwen3.6-flash",name:"Qwen3.6 Flash"},{id:"glm-5.2",name:"GLM 5.2"},{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro"}]},{id:"anthropic",priority:30,alias:"anthropic",display:{name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com",notice:{apiKeyUrl:"https://console.anthropic.com/settings/keys"}},category:"apikey",transport:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{"anthropic-version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"}},models:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}],serviceKinds:["llm","imageToText"]},j,{id:"api-airforce",alias:"af",aliases:["airforce"],uiAlias:"af",display:{name:"API.airforce",icon:"flight",color:"#0EA5E9",textIcon:"AF",website:"https://api.airforce",notice:{apiKeyUrl:"https://api.airforce"}},category:"freeTier",authType:"apikey",authModes:["apikey"],passthroughModels:!0,modelsFetcher:{url:"https://api.airforce/v1/models",type:"airforce-free"},transport:{baseUrl:"https://api.airforce/v1/chat/completions",validateUrl:"https://api.airforce/v1/models",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},forceStream:!0},models:[{id:"gpt-oss-120b",name:"GPT-OSS 120B (Free)",contextLength:131072},{id:"gpt-oss-20b",name:"GPT-OSS 20B (Free)",contextLength:131072},{id:"kimi-k2.7-code",name:"Kimi K2.7 Code (Free)",contextLength:262144}]},{id:"assemblyai",priority:30,alias:"assemblyai",aliases:["aai"],uiAlias:"aai",display:{name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com",notice:{apiKeyUrl:"https://www.assemblyai.com/app/api-keys"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.assemblyai.com/v1/audio/transcriptions",validateUrl:"https://api.assemblyai.com/v1/account"},models:[{id:"universal-3-pro",name:"Universal 3 Pro",params:["language"],kind:"stt"},{id:"universal-2",name:"Universal 2",params:["language"],kind:"stt"},{id:"best",name:"Best (Nano + Universal)",kind:"stt"},{id:"nano",name:"Nano (Fast)",kind:"stt"}],serviceKinds:["stt"],sttConfig:{baseUrl:"https://api.assemblyai.com/v2/transcript",authType:"apikey",authHeader:"authorization",format:"assemblyai"}},{id:"aws-polly",alias:"polly",display:{name:"AWS Polly",icon:"record_voice_over",color:"#FF9900",textIcon:"PL",website:"https://aws.amazon.com/polly/",notice:{text:"Use AWS Secret Access Key as API key; set providerSpecificData.accessKeyId and optional region.",apiKeyUrl:"https://console.aws.amazon.com/iam/home#/security_credentials"}},category:"apikey",authType:"apikey",serviceKinds:["tts"],ttsConfig:{baseUrl:"https://polly.{region}.amazonaws.com/v1/speech",authType:"apikey",authHeader:"aws-sigv4",format:"aws-polly",models:[{id:"standard",name:"Standard"},{id:"neural",name:"Neural"},{id:"long-form",name:"Long-form"},{id:"generative",name:"Generative"}]},hasProviderSpecificData:!0},{id:"azure",priority:40,alias:"azure",display:{name:"Azure OpenAI",icon:"cloud",color:"#0078D4",textIcon:"AZ",website:"https://azure.microsoft.com/en-us/products/ai-services/openai-service",notice:{apiKeyUrl:"https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/OpenAI"}},category:"apikey",hasProviderSpecificData:!0,transport:{baseUrl:"",headers:{}}},{id:"baidu",alias:"qianfan",aliases:["qianfan","ernie","baidu-qianfan"],uiAlias:"qianfan",category:"apikey",authType:"apikey",authModes:["apikey"],display:{name:"Baidu Qianfan",icon:"search",color:"#2932E1",textIcon:"BD",website:"https://cloud.baidu.com/product/qianfan.html",notice:{apiKeyUrl:"https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application"}},transport:{baseUrl:"https://qianfan.baidubce.com/v2/chat/completions",validateUrl:"https://qianfan.baidubce.com/v2/models"},models:[{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro",contextLength:1048576},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash",contextLength:1048576},{id:"glm-5.2",name:"GLM 5.2",contextLength:512e3},{id:"glm-5.1",name:"GLM 5.1",contextLength:198e3},{id:"kimi-k2.6",name:"Kimi K2.6",contextLength:262144},{id:"qwen3.5-397b-a17b",name:"Qwen 3.5 397B A17B",contextLength:262144},{id:"qwen3.5-27b",name:"Qwen 3.5 27B",contextLength:262144}]},{id:"bazaarlink",alias:"bzl",aliases:["bazaar-link"],uiAlias:"bzl",category:"freeTier",authType:"apikey",authModes:["apikey"],display:{name:"Bazaarlink",icon:"storefront",color:"#DC2626",textIcon:"BZ",website:"https://bazaarlink.ai",notice:{apiKeyUrl:"https://bazaarlink.ai"}},transport:{baseUrl:"https://bazaarlink.ai/api/v1/chat/completions",validateUrl:"https://bazaarlink.ai/api/v1/models"},models:[{id:"auto:free",name:"Auto Free (Zero Cost)"},{id:"claude-opus-4.7",name:"Claude Opus 4.7",contextLength:1e6},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6",contextLength:1e6},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",contextLength:2e5},{id:"gpt-5.5",name:"GPT-5.5",contextLength:105e4},{id:"gpt-5.4",name:"GPT-5.4",contextLength:105e4},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini",contextLength:4e5},{id:"gpt-5.4-nano",name:"GPT-5.4 Nano",contextLength:4e5},{id:"grok-4.3",name:"Grok 4.3",contextLength:1e6},{id:"grok-4.20",name:"Grok 4.20",contextLength:2e6},{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro",contextLength:1048576},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash",contextLength:1048576},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite",contextLength:1048576},{id:"kimi-k2.6",name:"Kimi K2.6",contextLength:262144},{id:"kimi-k2.5",name:"Kimi K2.5",contextLength:262144},{id:"glm-5.1",name:"GLM 5.1",contextLength:204800},{id:"glm-5",name:"GLM 5",contextLength:204800},{id:"mimo-v2.5-pro",name:"MiMo-V2.5-Pro",contextLength:105e4},{id:"mimo-v2.5",name:"MiMo-V2.5",contextLength:105e4},{id:"minimax-m3",name:"MiniMax M3",contextLength:1048576},{id:"minimax-m2.7",name:"MiniMax M2.7",contextLength:204800},{id:"minimax-m2.5",name:"MiniMax M2.5",contextLength:204800},{id:"qwen3.6-plus",name:"Qwen 3.6 Plus",contextLength:1e6},{id:"nemotron-3-super-120b-a12b",name:"Nemotron 3 Super",contextLength:1e6}]},{id:"black-forest-labs",priority:50,alias:"black-forest-labs",aliases:["bfl"],uiAlias:"bfl",display:{name:"Black Forest Labs",icon:"image",color:"#111827",textIcon:"BF",website:"https://blackforestlabs.ai",notice:{apiKeyUrl:"https://api.bfl.ai"}},category:"apikey",authType:"apikey",transport:null,models:[{id:"flux-pro-1.1",name:"FLUX Pro 1.1",params:["n","size"],kind:"image"},{id:"flux-pro-1.1-ultra",name:"FLUX Pro 1.1 Ultra",params:["size"],kind:"image"},{id:"flux-pro",name:"FLUX Pro",params:["n","size"],kind:"image"},{id:"flux-dev",name:"FLUX Dev",params:["n","size"],kind:"image"},{id:"flux-kontext-pro",name:"FLUX Kontext Pro (Edit)",params:["size"],capabilities:["edit"],kind:"image"},{id:"flux-kontext-max",name:"FLUX Kontext Max (Edit)",params:["size"],capabilities:["edit"],kind:"image"}],serviceKinds:["image"],imageConfig:{baseUrl:"https://api.bfl.ai/v1"}},{id:"blackbox",priority:50,alias:"blackbox",aliases:["bb"],uiAlias:"bb",display:{name:"Blackbox AI",icon:"smart_toy",color:"#5B5FEF",textIcon:"BB",website:"https://blackbox.ai",notice:{apiKeyUrl:"https://www.blackbox.ai/api-management"}},category:"apikey",serviceKinds:["llm"],thinkingConfig:{options:["auto","none","low","medium","high","xhigh"],defaultMode:"auto"},transport:{baseUrl:"https://api.blackbox.ai/v1/chat/completions",thinkingFormat:"openai"},models:[{id:"claude-fable-5",name:"Claude Fable 5",upstreamModelId:"blackboxai/anthropic/claude-fable-5"},{id:"claude-opus-4.8",name:"Claude Opus 4.8",upstreamModelId:"blackboxai/anthropic/claude-opus-4.8"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6",upstreamModelId:"blackboxai/anthropic/claude-sonnet-4.6"},{id:"gpt-5.5",name:"GPT-5.5",upstreamModelId:"blackboxai/openai/gpt-5.5"},{id:"gpt-5.4-pro",name:"GPT-5.4 Pro",upstreamModelId:"blackboxai/openai/gpt-5.4-pro"},{id:"gpt-5.4",name:"GPT-5.4",upstreamModelId:"blackboxai/openai/gpt-5.4"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex",upstreamModelId:"blackboxai/openai/gpt-5.3-codex"},{id:"gpt-5.4-nano",name:"GPT-5.4 Nano",upstreamModelId:"blackboxai/openai/gpt-5.4-nano"},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash",upstreamModelId:"blackboxai/deepseek/deepseek-v4-flash"},{id:"grok-4.3",name:"Grok 4.3",upstreamModelId:"blackboxai/x-ai/grok-4.3"}]},{id:"bluesminds",alias:"bm",aliases:["blue-sminds"],uiAlias:"bm",hidden:!0,display:{name:"BluesMinds",icon:"psychology",color:"#2563EB",textIcon:"BM",website:"https://bluesminds.com",notice:{apiKeyUrl:"https://bluesminds.com"}},category:"apikey",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://api.bluesminds.com/v1/chat/completions",validateUrl:"https://api.bluesminds.com/v1/models"},models:[{id:"gpt-4.1",name:"GPT-4.1",contextLength:1048576},{id:"gpt-4.1-mini",name:"GPT-4.1 Mini",contextLength:1048576},{id:"gpt-4.1-nano",name:"GPT-4.1 Nano",contextLength:1048576},{id:"claude-sonnet-4-5",name:"Claude Sonnet 4.5",contextLength:2e5},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5",contextLength:2e5},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash",contextLength:1048576},{id:"gemini-2.0-flash-exp",name:"Gemini 2.0 Flash (Exp)",contextLength:1048576},{id:"qwen-turbo",name:"Qwen Turbo",contextLength:1e6},{id:"kimi-k2",name:"Kimi K2",contextLength:262144},{id:"kimi-k2-thinking",name:"Kimi K2 Thinking",contextLength:262144},{id:"glm-4.7",name:"GLM 4.7",contextLength:204800},{id:"minimax-m2.5",name:"MiniMax M2.5",contextLength:204800},{id:"claude-opus-4-5",name:"Claude Opus 4.5 (VIP)",contextLength:2e5},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro (VIP)",contextLength:1048576}]},{id:"brave-search",alias:"brave",display:{name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",notice:{apiKeyUrl:"https://api-dashboard.search.brave.com/app/keys"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://api.search.brave.com/res/v1",method:"GET",authType:"apikey",authHeader:"x-subscription-token",costPerQuery:.005,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5}},{id:"byteplus",priority:70,alias:"byteplus",aliases:["bpm"],uiAlias:"bpm",display:{name:"BytePlus ModelArk",icon:"cloud",color:"#2563EB",textIcon:"BP",website:"https://console.byteplus.com/ark",notice:{text:"Free credits for new accounts. Access to Seed 2.0, Kimi K2 Thinking, GLM 4.7, GPT-OSS-120B models.",apiKeyUrl:"https://console.byteplus.com/ark/region:ark+ap-southeast-1/apiKey"}},category:"freeTier",transport:{baseUrl:"https://ark.ap-southeast.bytepluses.com/api/v3/chat/completions",headers:{}},models:[{id:"seed-2-0-pro-260328",name:"Seed 2.0 Pro"},{id:"seed-2-0-code-preview-260328",name:"Seed 2.0 Code Preview"},{id:"seed-2-0-mini-260215",name:"Seed 2.0 Mini"},{id:"seed-2-0-lite-260228",name:"Seed 2.0 Lite"},{id:"kimi-k2-thinking-251104",name:"Kimi K2 Thinking"},{id:"glm-4-7-251222",name:"GLM 4.7"},{id:"gpt-oss-120b-250805",name:"GPT-OSS-120B"}],serviceKinds:["llm"]},{id:"cartesia",alias:"cartesia",display:{name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai",notice:{apiKeyUrl:"https://play.cartesia.ai/keys"}},category:"apikey",authType:"apikey",serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.cartesia.ai/tts/bytes",authType:"apikey",authHeader:"x-api-key",format:"cartesia",models:[{id:"sonic-2",name:"Sonic 2"},{id:"sonic-3",name:"Sonic 3"}]},hidden:!0},{id:"cerebras",priority:60,alias:"cerebras",display:{name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai",notice:{apiKeyUrl:"https://cloud.cerebras.ai/platform"}},category:"apikey",transport:{baseUrl:"https://api.cerebras.ai/v1/chat/completions",validateUrl:"https://api.cerebras.ai/v1/models",quirks:{dropClientMetadata:!0}},models:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}]},{id:"chenzk",priority:350,alias:"chenzk",aliases:["chenzk-api","ezkielyna"],display:{name:"Chenzk API",icon:"hub",color:"#10B981",textIcon:"CZ",website:"https://chenzk.top",notice:{apiKeyUrl:"https://chenzk.top/token"}},category:"apikey",transport:{format:"openai",baseUrl:"https://chenzk.top/v1/chat/completions",validateUrl:"https://chenzk.top/v1/models",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},models:[{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.4-mini",name:"GPT 5.4 Mini"},{id:"gpt-5.4-nano",name:"GPT 5.4 Nano"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5",name:"GPT 5"},{id:"gpt-5-mini",name:"GPT 5 Mini"},{id:"gpt-5-nano",name:"GPT 5 Nano"},{id:"gpt-4o",name:"GPT 4o"},{id:"gpt-4o-mini",name:"GPT 4o Mini"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"deepseek-v3.2",name:"DeepSeek V3.2"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"glm-4.7",name:"GLM 4.7"},{id:"gpt-image-1",name:"GPT Image 1",params:["n","size","quality","response_format"],kind:"image"}]},{id:"chutes",priority:70,alias:"chutes",aliases:["ch"],uiAlias:"ch",display:{name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai",notice:{apiKeyUrl:"https://chutes.ai/app/api"}},category:"apikey",transport:{baseUrl:"https://llm.chutes.ai/v1/chat/completions",validateUrl:"https://llm.chutes.ai/v1/models"}},{id:"claude",priority:10,alias:"cc",uiAlias:"cc",display:{name:"Claude Code",icon:"smart_toy",color:"#D97757",website:"https://claude.ai",notice:{signupUrl:"https://claude.ai"},deprecated:!0,deprecationNotice:"RISK_NOTICE"},category:"oauth",transport:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",urlSuffix:"?beta=true",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05,advanced-tool-use-2025-11-20,effort-2025-11-24,structured-outputs-2025-12-15,fast-mode-2026-02-01,redact-thinking-2026-02-12,token-efficient-tools-2026-03-28","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/2.1.258 (external, sdk-cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.14.0","X-Stainless-Package-Version":"0.80.0","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":"arm64","X-Stainless-Os":"MacOS","X-Stainless-Timeout":"600"},quirks:{cloakToolsOnOAuth:!0},auth:{apiKey:{header:"x-api-key",scheme:"raw"},oauth:{header:"Authorization",scheme:"bearer"},hooks:["claudeOverlay"]},usage:{oauthUrl:"https://api.anthropic.com/api/oauth/usage",orgUrl:"https://api.anthropic.com/v1/organizations/{org_id}/usage",settingsUrl:"https://api.anthropic.com/v1/settings"}},models:[{id:"claude-opus-5",name:"Claude Opus 5"},{id:"claude-fable-5-1",name:"Claude Fable 5.1"},{id:"claude-fable-5",name:"Claude Fable 5"},{id:"claude-sonnet-5",name:"Claude Sonnet 5"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}],oauth:{clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",authorizeUrl:"https://claude.ai/oauth/authorize",tokenUrl:"https://api.anthropic.com/v1/oauth/token",scopes:["org:create_api_key","user:profile","user:inference"],codeChallengeMethod:"S256",refreshLeadMs:144e5,refresh:{encoding:"json"}},features:{usage:!0}},{id:"cline",priority:80,alias:"cl",uiAlias:"cl",display:{name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL",website:"https://cline.bot",notice:{signupUrl:"https://cline.bot"}},category:"oauth",authModes:["oauth"],hasOAuth:!0,transport:{baseUrl:"https://api.cline.bot/api/v1/chat/completions",headers:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},quirks:{clineEnvelope:!0},tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",auth:{combined:!0,header:"Authorization",scheme:"bearer",hooks:["clineHeaders"]}},models:[{id:"anthropic/claude-opus-4.7",name:"Claude Opus 4.7"},{id:"anthropic/claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"anthropic/claude-opus-4.6",name:"Claude Opus 4.6"},{id:"openai/gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"openai/gpt-5.4",name:"GPT-5.4"},{id:"google/gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"google/gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"kwaipilot/kat-coder-pro",name:"KAT Coder Pro"}],oauth:{appBaseUrl:"https://app.cline.bot",apiBaseUrl:"https://api.cline.bot",authorizeUrl:"https://api.cline.bot/api/v1/auth/authorize",tokenExchangeUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"}},{id:"clinepass",priority:85,alias:"clinepass",uiAlias:"clinepass",display:{name:"ClinePass",icon:"vpn_key",color:"#5B9BD5",textIcon:"CP",website:"https://cline.bot",notice:{signupUrl:"https://app.cline.bot"}},category:"oauth",authModes:["apikey","oauth"],hasOAuth:!0,transport:{baseUrl:"https://api.cline.bot/api/v1/chat/completions",headers:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},quirks:{clineEnvelope:!0},auth:{combined:!0,header:"Authorization",scheme:"bearer",hooks:["clineHeaders"]}},models:[{id:"cline-pass/glm-5.2",name:"GLM-5.2 (ClinePass)"},{id:"cline-pass/kimi-k2.7-code",name:"Kimi K2.7 Code (ClinePass)"},{id:"cline-pass/kimi-k2.6",name:"Kimi K2.6 (ClinePass)"},{id:"cline-pass/deepseek-v4-pro",name:"DeepSeek V4 Pro (ClinePass)"},{id:"cline-pass/deepseek-v4-flash",name:"DeepSeek V4 Flash (ClinePass)"},{id:"cline-pass/mimo-v2.5",name:"MiMo-V2.5 (ClinePass)"},{id:"cline-pass/mimo-v2.5-pro",name:"MiMo-V2.5-Pro (ClinePass)"},{id:"cline-pass/minimax-m3",name:"MiniMax M3 (ClinePass)"},{id:"cline-pass/qwen3.7-max",name:"Qwen3.7 Max (ClinePass)"},{id:"cline-pass/qwen3.7-plus",name:"Qwen3.7 Plus (ClinePass)"}],oauth:{appBaseUrl:"https://app.cline.bot",apiBaseUrl:"https://api.cline.bot",authorizeUrl:"https://api.cline.bot/api/v1/auth/authorize",tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},thinkingConfig:{options:["auto","on","off"],defaultMode:"auto"}},{id:"cloudflare-ai",priority:60,hasFree:!0,alias:"cloudflare-ai",aliases:["cf"],uiAlias:"cf",display:{name:"Cloudflare",icon:"cloud",color:"#F38020",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",notice:{text:"Workers AI free tier. Requires a Cloudflare API token and Account ID.",apiKeyUrl:"https://dash.cloudflare.com/profile/api-tokens"}},category:"freeTier",authType:"apikey",authModes:["apikey"],hasProviderSpecificData:!0,transport:{baseUrl:"https://api.cloudflare.com/client/v4/accounts/{accountId}/ai/v1/chat/completions",thinkingFormat:"openai"},models:[{id:"@cf/meta/llama-3.2-1b-instruct",name:"Llama 3.2 1B Instruct"},{id:"@cf/meta/llama-3.2-3b-instruct",name:"Llama 3.2 3B Instruct"},{id:"@cf/meta/llama-3.1-8b-instruct-fp8-fast",name:"Llama 3.1 8B Instruct FP8 Fast"},{id:"@cf/meta/llama-3.1-8b-instruct-awq",name:"Llama 3.1 8B Instruct AWQ"},{id:"@cf/mistralai/mistral-small-3.1-24b-instruct",name:"Mistral Small 3.1 24B Instruct"},{id:"@cf/meta/llama-3.1-70b-instruct-fp8-fast",name:"Llama 3.1 70B Instruct FP8 Fast"},{id:"@cf/meta/llama-3.3-70b-instruct-fp8-fast",name:"Llama 3.3 70B Instruct FP8 Fast"},{id:"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b",name:"DeepSeek R1 Distill Qwen 32B"},{id:"@cf/moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"@cf/moonshotai/kimi-k2.6",name:"Kimi K2.6"},{id:"@cf/zai-org/glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"@cf/qwen/qwq-32b",name:"QwQ 32B"},{id:"@cf/qwen/qwen2.5-coder-32b-instruct",name:"Qwen 2.5 Coder 32B Instruct"},{id:"@cf/black-forest-labs/flux-2-klein-9b",name:"FLUX.2 Klein 9B",params:["size"],kind:"image"},{id:"@cf/black-forest-labs/flux-2-klein-4b",name:"FLUX.2 Klein 4B",params:["size"],kind:"image"},{id:"@cf/black-forest-labs/flux-2-dev",name:"FLUX.2 Dev",params:["size"],kind:"image"},{id:"@cf/leonardo/lucid-origin",name:"Lucid Origin",params:["size"],kind:"image"},{id:"@cf/leonardo/phoenix-1.0",name:"Phoenix 1.0",params:["size"],kind:"image"},{id:"@cf/black-forest-labs/flux-1-schnell",name:"FLUX.1 Schnell",params:["size"],kind:"image"},{id:"@cf/bytedance/stable-diffusion-xl-lightning",name:"SDXL Lightning",params:["size"],kind:"image"},{id:"@cf/lykon/dreamshaper-8-lcm",name:"DreamShaper 8 LCM",params:["size"],kind:"image"},{id:"@cf/runwayml/stable-diffusion-v1-5-img2img",name:"Stable Diffusion v1.5 Img2Img",params:["size"],capabilities:["edit"],kind:"image"},{id:"@cf/runwayml/stable-diffusion-v1-5-inpainting",name:"Stable Diffusion v1.5 Inpainting",params:["size"],capabilities:["edit","mask"],kind:"image"},{id:"@cf/stabilityai/stable-diffusion-xl-base-1.0",name:"SDXL Base 1.0",params:["size"],kind:"image"}],serviceKinds:["llm","image"],imageConfig:{baseUrl:"https://api.cloudflare.com/client/v4/accounts"}},{id:"codebuddy-cn",alias:"cbcn",uiAlias:"cbcn",hidden:!1,priority:90,display:{name:"CodeBuddy CN",icon:"smart_toy",color:"#006EFF",website:"https://copilot.tencent.com",notice:{signupUrl:"https://copilot.tencent.com"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,transport:{baseUrl:"https://copilot.tencent.com/v2/chat/completions",forceStream:!0,thinkingFormat:"openai",headers:{"User-Agent":"CLI/2.108.1 CodeBuddy/2.108.1","X-Product":"SaaS","X-IDE-Type":"CLI","X-IDE-Name":"CLI","x-requested-with":"XMLHttpRequest","x-codebuddy-request":"1"},auth:{combined:!0,header:"Authorization",scheme:"bearer"},usage:{url:"https://copilot.tencent.com/v2/billing/meter/get-user-resource"},modelDiscovery:{urlTemplate:"https://copilot.tencent.com/console/enterprises/{enterpriseId}/models",headers:{"Content-Type":"application/json","User-Agent":"CodeBuddy/5.3.3","X-Requested-With":"XMLHttpRequest"}}},models:[{id:"glm-5.2",name:"GLM-5.2"},{id:"glm-5.1",name:"GLM-5.1"},{id:"glm-5v-turbo",name:"GLM-5v-Turbo"},{id:"minimax-m3",name:"MiniMax-M3"},{id:"kimi-k2.7",name:"Kimi-K2.7-Code"},{id:"kimi-k2.6",name:"Kimi-K2.6"},{id:"hy3",name:"Hy3"},{id:"hy4-preview",name:"Hy4-Preview"},{id:"glm-5.3",name:"GLM-5.3"},{id:"glm-5.3-flash",name:"GLM-5.3-Flash"},{id:"kimi-k3-1",name:"Kimi-K3"},{id:"deepseek-v4-pro",name:"DeepSeek-V4-Pro"},{id:"deepseek-v4.1-flash",name:"DeepSeek-V4.1-Flash"}],oauth:{baseUrl:"https://copilot.tencent.com",stateUrl:"https://copilot.tencent.com/v2/plugin/auth/state",tokenUrl:"https://copilot.tencent.com/v2/plugin/auth/token",refreshUrl:"https://copilot.tencent.com/v2/plugin/auth/token/refresh",userAgent:"CLI/2.63.2 CodeBuddy/2.63.2",platform:"CLI",pollInterval:5e3},features:{usage:!0,usageApikey:!0,profileRefresh:!0}},{id:"codebuddy-intl",alias:"cbai",uiAlias:"cbai",hidden:!1,priority:90,display:{name:"CodeBuddy",icon:"smart_toy",color:"#006EFF",website:"https://www.codebuddy.ai",notice:{signupUrl:"https://www.codebuddy.ai"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,transport:{baseUrl:"https://www.codebuddy.ai/v2/chat/completions",forceStream:!0,thinkingFormat:"openai",headers:{"User-Agent":"IDE/2.108.1 CodeBuddy/2.108.1","X-Product":"SaaS","X-IDE-Type":"IDE","X-IDE-Name":"IDE","x-requested-with":"XMLHttpRequest","x-codebuddy-request":"1"},auth:{combined:!0,header:"Authorization",scheme:"bearer"},usage:{url:"https://www.codebuddy.ai/v2/billing/meter/get-user-resource"}},models:[{id:"glm-5.2",name:"GLM-5.2"},{id:"glm-5.1",name:"GLM-5.1"},{id:"glm-5.0",name:"GLM-5.0"},{id:"glm-5.0-turbo",name:"GLM-5.0-Turbo"},{id:"glm-5v-turbo",name:"GLM-5v-Turbo"},{id:"glm-4.7",name:"GLM-4.7"},{id:"minimax-m3",name:"MiniMax-M3"},{id:"minimax-m2.7",name:"MiniMax-M2.7"},{id:"kimi-k2.7",name:"Kimi-K2.7-Code"},{id:"kimi-k2.6",name:"Kimi-K2.6"},{id:"kimi-k2.5",name:"Kimi-K2.5"},{id:"hy3-preview",name:"Hy3 Preview"},{id:"deepseek-v4-pro",name:"DeepSeek-V4-Pro"},{id:"deepseek-v4-flash",name:"DeepSeek-V4-Flash"},{id:"deepseek-v3-2-volc",name:"DeepSeek-V3.2"}],oauth:{baseUrl:"https://www.codebuddy.ai",stateUrl:"https://www.codebuddy.ai/v2/plugin/auth/state",tokenUrl:"https://www.codebuddy.ai/v2/plugin/auth/token",refreshUrl:"https://www.codebuddy.ai/v2/plugin/auth/token/refresh",userAgent:"IDE/2.63.2 CodeBuddy/2.63.2",platform:"ide",pollInterval:5e3},features:{usage:!0,usageApikey:!0}},l,{id:"cohere",priority:90,alias:"cohere",display:{name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com",notice:{apiKeyUrl:"https://dashboard.cohere.com/api-keys"}},category:"apikey",transport:{baseUrl:"https://api.cohere.ai/v1/chat/completions",validateUrl:"https://api.cohere.ai/v1/models"},models:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}]},{id:"comfyui",priority:120,alias:"comfyui",display:{name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"},category:"apikey",transport:null,models:[{id:"flux-dev",name:"FLUX Dev",params:["n","size"],kind:"image"},{id:"sdxl",name:"SDXL",params:["n","size"],kind:"image"}],serviceKinds:["image"],imageConfig:{baseUrl:"http://localhost:8188"}},{id:"commandcode",priority:100,alias:"commandcode",aliases:["cmc"],uiAlias:"cmc",display:{name:"Command Code",icon:"smart_toy",color:"#000000",textIcon:"CC",website:"https://commandcode.ai",notice:{text:"Use your CommandCode CLI API key (starts with user_...) from ~/.commandcode/auth.json or commandcode.ai/studio.",apiKeyUrl:"https://commandcode.ai/studio"}},category:"apikey",transport:{baseUrl:"https://api.commandcode.ai/alpha/generate",format:"commandcode",forceStream:!0,headers:{"x-command-code-version":"0.25.7","x-cli-environment":"cli"}},models:[{id:"deepseek/deepseek-v4-pro",name:"DeepSeek V4 Pro"},{id:"deepseek/deepseek-v4-flash",name:"DeepSeek V4 Flash"},{id:"deepseek/deepseek-v4-flash-vision-exp",name:"DeepSeek V4 Flash Vision Exp"},{id:"deepseek-v4-flash-vision-exp",name:"DeepSeek V4 Flash Vision Exp",upstreamModelId:"deepseek/deepseek-v4-flash-vision-exp"},{id:"moonshotai/Kimi-K2.6",name:"Kimi K2.6"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-5.1",name:"GLM 5.1"},{id:"zai-org/GLM-5",name:"GLM 5"},{id:"MiniMaxAI/MiniMax-M2.7",name:"MiniMax M2.7"},{id:"MiniMaxAI/MiniMax-M2.5",name:"MiniMax M2.5"},{id:"Qwen/Qwen3.6-Max-Preview",name:"Qwen 3.6 Max Preview"},{id:"Qwen/Qwen3.6-Plus",name:"Qwen 3.6 Plus"},{id:"stepfun/Step-3.5-Flash",name:"Step 3.5 Flash"}],features:{usage:!0,usageApikey:!0}},{id:"coqui",alias:"coqui",display:{name:"Coqui TTS",icon:"record_voice_over",color:"#10B981",textIcon:"CQ",website:"https://github.com/coqui-ai/TTS"},category:"freeTier",authType:"none",serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"http://localhost:5002/api/tts",authType:"none",authHeader:"none",format:"coqui",models:[{id:"tts_models/en/ljspeech/tacotron2-DDC",name:"Tacotron2 DDC (LJSpeech)"}]},hidden:!0},{id:"cursor",priority:50,alias:"cu",uiAlias:"cu",display:{name:"Cursor IDE",icon:"edit_note",color:"#00D4AA",website:"https://cursor.com",notice:{signupUrl:"https://cursor.com"}},category:"oauth",transport:{baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",format:"cursor",forceStream:!0,headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"3.12.17",usage:{usageUrl:"https://api2.cursor.sh/aiserver.v1.DashboardService/GetCurrentPeriodUsage",planUrl:"https://api2.cursor.sh/aiserver.v1.DashboardService/GetPlanInfo"}},models:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"claude-4.6-opus-max",name:"Claude 4.6 Opus Max"},{id:"claude-4.6-sonnet-medium-thinking",name:"Claude 4.6 Sonnet Medium Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"}],oauth:{apiEndpoint:"https://api2.cursor.sh",chatEndpoint:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",modelsEndpoint:"/agent.v1.AgentService/GetUsableModels",api3Endpoint:"https://api3.cursor.sh",agentEndpoint:"https://agent.api5.cursor.sh",agentNonPrivacyEndpoint:"https://agentn.api5.cursor.sh",clientVersion:"3.12.17",clientType:"ide",loginUrl:"https://cursor.com/loginDeepControl",pollUrl:"https://api2.cursor.sh/auth/poll",refreshUrl:"https://api2.cursor.sh/auth/exchange_user_api_key",refreshLeadMs:3e5,dbKeys:{accessToken:"cursorAuth/accessToken",machineId:"storage.serviceMachineId"}},features:{usage:!0}},{id:"deepgram",priority:20,alias:"deepgram",aliases:["dg"],uiAlias:"dg",display:{name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com",notice:{text:"$200 free credit on signup (no card required). Aura-1: $0.015/1k chars, Aura-2: $0.030/1k chars (Pay-As-You-Go).",apiKeyUrl:"https://console.deepgram.com/api-keys"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.deepgram.com/v1/listen"},models:[{id:"nova-3",name:"Nova 3",params:["language"],kind:"stt"},{id:"nova-2",name:"Nova 2",params:["language"],kind:"stt"},{id:"whisper-large",name:"Whisper Large",params:["language"],kind:"stt"},{id:"nova",name:"Nova",kind:"stt"}],serviceKinds:["stt"],sttConfig:{baseUrl:"https://api.deepgram.com/v1/listen",authType:"apikey",authHeader:"token",format:"deepgram"}},m,{id:"edge-tts",alias:"edge-tts",display:{name:"Edge TTS",icon:"record_voice_over",color:"#0078D4",textIcon:"ET"},category:"freeTier",authType:"none",serviceKinds:["tts"],mediaPriority:5,noAuth:!0,ttsConfig:{baseUrl:"edge-tts",authType:"none",authHeader:"none",format:"edge-tts",models:[]}},{id:"elevenlabs",alias:"el",display:{name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io",notice:{apiKeyUrl:"https://elevenlabs.io/app/settings/api-keys"}},category:"apikey",authType:"apikey",features:{usageApikey:!0},serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.elevenlabs.io/v1/text-to-speech",authType:"apikey",authHeader:"xi-api-key",format:"elevenlabs",models:[{id:"eleven_v3",name:"Eleven v3"},{id:"eleven_multilingual_v2",name:"Eleven Multilingual v2"},{id:"eleven_flash_v2_5",name:"Eleven Flash v2.5"},{id:"eleven_turbo_v2_5",name:"Eleven Turbo v2.5"}]}},{id:"exa",alias:"exa",display:{name:"Exa",icon:"manage_search",color:"#2563EB",textIcon:"EX",website:"https://exa.ai",notice:{apiKeyUrl:"https://dashboard.exa.ai/api-keys"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch","webFetch"],searchConfig:{baseUrl:"https://api.exa.ai/search",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.007,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5},fetchConfig:{baseUrl:"https://api.exa.ai/contents",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.001,freeMonthlyQuota:1e3,formats:["text","markdown"],maxCharacters:1e5,timeoutMs:15e3}},{id:"fal-ai",priority:90,hasFree:!0,alias:"fal-ai",aliases:["fal"],uiAlias:"fal",display:{name:"Fal.ai",icon:"image",color:"#2563EB",textIcon:"FL",website:"https://fal.ai",notice:{apiKeyUrl:"https://fal.ai/dashboard/keys"}},category:"apikey",authType:"apikey",transport:null,models:[{id:"fal-ai/flux/schnell",name:"FLUX Schnell",params:["n","size"],kind:"image"},{id:"fal-ai/flux/dev",name:"FLUX Dev",params:["n","size"],kind:"image"},{id:"fal-ai/flux-pro/v1.1",name:"FLUX Pro v1.1",params:["n","size"],kind:"image"},{id:"fal-ai/flux-pro/v1.1-ultra",name:"FLUX Pro v1.1 Ultra",params:["n","size"],kind:"image"},{id:"fal-ai/recraft-v3",name:"Recraft V3",params:["n","size","style"],kind:"image"},{id:"fal-ai/ideogram/v2",name:"Ideogram V2",params:["n","size","style"],kind:"image"},{id:"fal-ai/stable-diffusion-v35-large",name:"SD 3.5 Large",params:["n","size"],kind:"image"}],serviceKinds:["image"],imageConfig:{baseUrl:"https://queue.fal.run"}},{id:"featherless",priority:65,alias:"featherless",aliases:["fl"],uiAlias:"fl",display:{name:"Featherless",icon:"flutter_dash",color:"#111827",textIcon:"FL",website:"https://featherless.ai",notice:{apiKeyUrl:"https://featherless.ai/account/api-keys"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.featherless.ai/v1/chat/completions",validateUrl:"https://api.featherless.ai/v1/models"},models:[{id:"deepseek-ai/DeepSeek-V4-Pro",name:"DeepSeek V4 Pro"},{id:"deepseek-ai/DeepSeek-V4-Flash",name:"DeepSeek V4 Flash"},{id:"zai-org/GLM-5.2",name:"GLM 5.2"},{id:"zai-org/GLM-5.1",name:"GLM 5.1"},{id:"moonshotai/Kimi-K2.7-Code",name:"Kimi K2.7 Code"},{id:"moonshotai/Kimi-K2.6",name:"Kimi K2.6"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"}]},{id:"firecrawl",alias:"firecrawl",display:{name:"Firecrawl",icon:"local_fire_department",color:"#F59E0B",textIcon:"FC",website:"https://firecrawl.dev",notice:{apiKeyUrl:"https://www.firecrawl.dev/app/api-keys"}},category:"apikey",authType:"apikey",serviceKinds:["webFetch"],fetchConfig:{baseUrl:"https://api.firecrawl.dev/v1/scrape",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.002,freeMonthlyQuota:500,formats:["markdown","html","text"],maxCharacters:2e5,timeoutMs:3e4}},{id:"fireworks",priority:50,alias:"fireworks",display:{name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai",notice:{apiKeyUrl:"https://fireworks.ai/account/api-keys"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",validateUrl:"https://api.fireworks.ai/inference/v1/models"},models:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"},{id:"nomic-ai/nomic-embed-text-v1.5",name:"Nomic Embed Text v1.5",kind:"embedding"}],serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.fireworks.ai/inference/v1/embeddings"}},{id:"fish-audio",alias:"fish",display:{name:"Fish Audio",icon:"record_voice_over",color:"#1E9BF0",textIcon:"FA",website:"https://fish.audio",notice:{apiKeyUrl:"https://fish.audio/app/api-keys/"}},category:"apikey",authType:"apikey",serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.fish.audio/v1/tts",authType:"apikey",authHeader:"bearer",format:"fish-audio",models:[{id:"s2.1-pro-free",name:"S2.1 Pro Free"},{id:"s2.1-pro",name:"S2.1 Pro"},{id:"s2-pro",name:"S2 Pro"},{id:"s1",name:"S1"}]}},{id:"frontier-for-all",priority:15,hasFree:!0,alias:"ffa",aliases:["frontier"],uiAlias:"ffa",display:{name:"Frontier for All",icon:"travel_explore",color:"#6366F1",textIcon:"FF",website:"https://frontier-for-all.vercel.app",notice:{text:'Sign in with your Frontier account via device code. Requests run on the model you picked for 9Router on your Frontier dashboard — the model id sent by the client is ignored unless you turn on "Let 9Router suggest a model" there. Limits: 20 req/min, 300 req/hour per token.',signupUrl:"https://frontier-for-all.vercel.app"}},category:"freeTier",authType:"oauth",authModes:["oauth"],hasOAuth:!0,transport:{baseUrl:"https://frontier-for-all.vercel.app/api/v1/chat/completions",validateUrl:"https://frontier-for-all.vercel.app/api/v1/models",retry:{429:{attempts:3,delayMs:3e3}}},models:[{id:"auto",name:"Frontier Auto (your dashboard model)"}],passthroughModels:!0,modelsFetcher:{type:"static",label:"Frontier catalogue — grouped by upstream provider (see the note above)",notice:'A model id here only does anything when "Let 9Router suggest a model" is on — the checkbox on the Frontier consent screen, or Dashboard → Connected apps if you already signed in. Off, Frontier ignores the id and runs your dashboard default, which is what ffa/auto is for. A hint also swaps the model only, never the provider: pick an id from the provider set for 9Router (Groq unless you changed it on the consent screen or in Frontier settings) and make sure that provider\'s key is connected. An id from any other provider will fail.',models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B (Groq)",contextLength:131072},{id:"llama-3.1-8b-instant",name:"Llama 3.1 8B (Groq)",contextLength:131072},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B (Groq)",contextLength:131072},{id:"openai/gpt-oss-20b",name:"GPT OSS 20B (Groq)",contextLength:131072},{id:"llama-3.3-70b",name:"Llama 3.3 70B (Cerebras)"},{id:"llama3.1-8b",name:"Llama 3.1 8B (Cerebras)"},{id:"qwen-3-32b",name:"Qwen 3 32B (Cerebras)"},{id:"gpt-oss-120b",name:"GPT OSS 120B (Cerebras)",contextLength:131072},{id:"mistral-small-latest",name:"Mistral Small (Mistral)"},{id:"mistral-large-latest",name:"Mistral Large (Mistral)"},{id:"codestral-latest",name:"Codestral (Mistral)"},{id:"magistral-small-latest",name:"Magistral Small (Mistral)"},{id:"meta-llama/llama-3.3-70b-instruct:free",name:"Llama 3.3 70B free (OpenRouter)"},{id:"deepseek/deepseek-chat-v3-0324:free",name:"DeepSeek V3 free (OpenRouter)"},{id:"qwen/qwen3-235b-a22b:free",name:"Qwen 3 235B free (OpenRouter)"},{id:"google/gemma-3-27b-it:free",name:"Gemma 3 27B free (OpenRouter)"}]},oauth:{clientId:"07b329d7-59a0-429d-8037-0f036b7b1efb",deviceCodeUrl:"https://frontier-for-all.vercel.app/device/code",deviceTokenUrl:"https://frontier-for-all.vercel.app/device/token",tokenUrl:"https://frontier-for-all.vercel.app/token",refreshUrl:"https://frontier-for-all.vercel.app/token",revokeUrl:"https://frontier-for-all.vercel.app/revoke",modelsUrl:"https://frontier-for-all.vercel.app/api/v1/models",scope:"inference",refreshLeadMs:3e5}},{id:"gemini-cli",priority:20,hasFree:!0,alias:"gc",uiAlias:"gc",display:{name:"Gemini CLI",icon:"terminal",color:"#4285F4",website:"https://github.com/google-gemini/gemini-cli",notice:{signupUrl:"https://github.com/google-gemini/gemini-cli"},deprecated:!0,deprecationNotice:"RISK_NOTICE"},category:"free",transport:{baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",format:"gemini-cli",forceStream:!0,cliVersion:"0.34.0",apiClient:"google-genai-sdk/1.41.0 gl-node/v22.19.0",usage:{quotaUrl:"https://cloudcode-pa.googleapis.com/v1internal:retrieveUserQuota",loadCodeAssistUrl:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist"},clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},models:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}],oauth:{authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile"],refresh:{encoding:"form"}},features:{usage:!0}},{id:"gemini",priority:50,hasFree:!0,alias:"gemini",display:{name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev",notice:{apiKeyUrl:"https://aistudio.google.com/app/apikey"}},category:"freeTier",authType:"apikey",authModes:["apikey"],mediaPriority:1,transport:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",format:"gemini",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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",auth:{apiKey:{header:"x-goog-api-key",scheme:"raw"},oauth:{header:"Authorization",scheme:"bearer"}}},models:[{id:"gemini-3.8-flash",name:"Gemini 3.8 Flash"},{id:"gemini-3.7-flash",name:"Gemini 3.7 Flash"},{id:"gemini-3.6-flash",name:"Gemini 3.6 Flash"},{id:"gemini-3.5-flash-lite",name:"Gemini 3.5 Flash Lite"},{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"gemma-4-31b-it",name:"Gemma 4 31B IT"},{id:"gemini-embedding-2-preview",name:"Gemini Embedding 2 Preview",kind:"embedding"},{id:"gemini-embedding-001",name:"Gemini Embedding 001",kind:"embedding"},{id:"text-embedding-005",name:"Text Embedding 005",kind:"embedding"},{id:"text-embedding-004",name:"Text Embedding 004 (Legacy)",kind:"embedding"},{id:"gemini-3.1-flash-image-preview",name:"Gemini 3.1 Flash Image (Nano Banana 2)",params:[],kind:"image"},{id:"gemini-3-pro-image-preview",name:"Gemini 3 Pro Image (Nano Banana Pro)",params:[],kind:"image"},{id:"gemini-2.5-flash-image",name:"Gemini 2.5 Flash Image (Nano Banana)",params:[],kind:"image"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro (Best)",params:["language","prompt"],kind:"stt"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash",params:["language","prompt"],kind:"stt"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite (Cheapest)",params:["language","prompt"],kind:"stt"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash",params:["language","prompt"],kind:"stt"},{id:"gemini-3.1-flash-tts-preview",name:"Gemini 3.1 Flash TTS",kind:"tts"},{id:"gemini-2.5-flash-preview-tts",name:"Gemini 2.5 Flash TTS",kind:"tts"},{id:"gemini-2.5-pro-preview-tts",name:"Gemini 2.5 Pro TTS",kind:"tts"},{id:"embedding-001",name:"Embedding 001",dimensions:768,kind:"embedding"}],serviceKinds:["llm","embedding","image","imageToText","webSearch","tts","stt"],ttsConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",format:"gemini-tts"},sttConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",format:"gemini-stt"},embeddingConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key"},imageConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models"},searchViaChat:{defaultModel:"gemini-2.5-flash",endpoint:"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent",pricingUrl:"https://ai.google.dev/pricing",freeTier:"Free tier: 15 RPM, 1M tokens/day on gemini-2.5-flash via AI Studio."}},{id:"github",priority:40,alias:"gh",uiAlias:"gh",display:{name:"GitHub Copilot",icon:"code",color:"#333333",website:"https://github.com/features/copilot",notice:{signupUrl:"https://github.com/features/copilot"},deprecated:!0,deprecationNotice:"RISK_NOTICE"},category:"oauth",transport:{baseUrl:"https://api.githubcopilot.com/chat/completions",responsesUrl:"https://api.githubcopilot.com/responses",messagesUrl:"https://api.githubcopilot.com/v1/messages",countTokensUrl:"https://api.githubcopilot.com/v1/messages/count_tokens",countTokensPreflightRatio:.5,countTokensTimeoutMs:1e4,headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.110.0","editor-plugin-version":"copilot-chat/0.38.0","user-agent":"GitHubCopilotChat/0.38.0","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},copilot:{vscodeVersion:"1.110.0",chatVersion:"0.38.0",userAgent:"GitHubCopilotChat/0.38.0",apiVersion:"2025-04-01"},usage:{url:"https://api.github.com/copilot_internal/user"}},models:[{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"gpt-5.4",name:"GPT-5.4"},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.5",name:"Claude Opus 4.5"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-opus-4.7",name:"Claude Opus 4.7"},{id:"claude-opus-4.8",name:"Claude Opus 4.8"},{id:"claude-opus-5",name:"Claude Opus 5"},{id:"claude-fable-5",name:"Claude Fable 5"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash"},{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"},{id:"goldeneye-free-auto",name:"GoldenEye"},{id:"text-embedding-3-small",name:"Text Embedding 3 Small (GitHub)",kind:"embedding"},{id:"text-embedding-3-large",name:"Text Embedding 3 Large (GitHub)",kind:"embedding"}],serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://models.github.ai/inference/embeddings",authType:"apikey",authHeader:"bearer"},oauth:{clientId:"Iv1.b507a08c87ecfe98",authorizeUrl:"https://github.com/login/oauth/authorize",deviceCodeUrl:"https://github.com/login/device/code",tokenUrl:"https://github.com/login/oauth/access_token",userInfoUrl:"https://api.github.com/user",scopes:"read:user",apiVersion:"2022-11-28",copilotTokenUrl:"https://api.github.com/copilot_internal/v2/token",userAgent:"GitHubCopilotChat/0.26.7",editorVersion:"vscode/1.85.0",editorPluginVersion:"copilot-chat/0.26.7"},features:{usage:!0}},{id:"gitlab",hidden:!0,priority:100,display:{name:"GitLab Duo",icon:"code",color:"#FC6D26",textIcon:"GL",website:"https://gitlab.com",notice:{signupUrl:"https://gitlab.com"}},category:"oauth",transport:{baseUrl:"https://gitlab.com/api/v4/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},oauth:{defaultBaseUrl:"https://gitlab.com",authorizeUrlPath:"/oauth/authorize",tokenUrlPath:"/oauth/token",userInfoUrlPath:"/api/v4/user",scope:"api read_user",codeChallengeMethod:"S256"}},{id:"glm-cn",priority:130,alias:"glm-cn",display:{name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn",notice:{apiKeyUrl:"https://open.bigmodel.cn/usercenter/apikeys"}},category:"apikey",transport:{baseUrl:"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",headers:{},usage:{url:"https://open.bigmodel.cn/api/monitor/usage/quota/limit"}},models:[{id:"glm-5.3",name:"GLM 5.3"},{id:"glm-5.3-flash",name:"GLM 5.3 Flash (Vision)"},{id:"glm-5.2",name:"GLM 5.2"},{id:"glm-5.1",name:"GLM 5.1"},{id:"glm-5-turbo",name:"GLM 5 Turbo"},{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM-4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"},{id:"glm-4.6",name:"GLM-4.6"},{id:"glm-4.5-air",name:"GLM-4.5-Air"}],features:{usage:!0,usageApikey:!0}},n,{id:"google-pse",alias:"gpse",display:{name:"Google PSE",icon:"search",color:"#4285F4",textIcon:"GP",website:"https://programmablesearchengine.google.com",notice:{apiKeyUrl:"https://programmablesearchengine.google.com/controlpanel/create"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://www.googleapis.com/customsearch/v1",method:"GET",authType:"apikey",authHeader:"key",costPerQuery:.005,freeMonthlyQuota:3e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:10,timeoutMs:1e4,cacheTTLMs:3e5}},{id:"google-tts",alias:"google-tts",display:{name:"Google TTS",icon:"record_voice_over",color:"#4285F4",textIcon:"GT"},category:"freeTier",authType:"none",serviceKinds:["tts"],mediaPriority:5,noAuth:!0,ttsConfig:{baseUrl:"google-tts",authType:"none",authHeader:"none",format:"google-tts",models:[]}},s,{id:"grok-web",priority:150,alias:"grok-web",aliases:["gw"],uiAlias:"gw",display:{name:"Grok Web (Subscription)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"GW",website:"https://grok.com"},category:"webCookie",authType:"cookie",authHint:"Paste your sso= cookie value from grok.com",transport:{baseUrl:"https://grok.com/rest/app-chat/conversations/new",format:"grok-web",authType:"cookie"},models:[{id:"grok-3",name:"Grok 3"},{id:"grok-3-mini",name:"Grok 3 Mini (Thinking)"},{id:"grok-3-thinking",name:"Grok 3 Thinking"},{id:"grok-4",name:"Grok 4"},{id:"grok-4-mini",name:"Grok 4 Mini (Thinking)"},{id:"grok-4-thinking",name:"Grok 4 Thinking"},{id:"grok-4-heavy",name:"Grok 4 Heavy (SuperGrok)"},{id:"grok-4.1-mini",name:"Grok 4.1 Mini (Thinking)"},{id:"grok-4.1-fast",name:"Grok 4.1 Fast"},{id:"grok-4.1-expert",name:"Grok 4.1 Expert"},{id:"grok-4.1-thinking",name:"Grok 4.1 Thinking"},{id:"grok-4.2",name:"Grok 4.2 (4.20 Beta)"}],passthroughModels:!0},{id:"groq",priority:60,hasFree:!0,alias:"groq",display:{name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",notice:{apiKeyUrl:"https://console.groq.com/keys"}},category:"apikey",transport:{baseUrl:"https://api.groq.com/openai/v1/chat/completions",validateUrl:"https://api.groq.com/openai/v1/models",usage:{url:"https://api.groq.com/openai/v1/models"}},models:[{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"},{id:"openai/gpt-oss-20b",name:"GPT-OSS 20B"},{id:"openai/gpt-oss-safeguard-20b",name:"GPT-OSS Safeguard 20B"},{id:"qwen/qwen3.6-27b",name:"Qwen3.6 27B"},{id:"groq/compound",name:"Compound"},{id:"groq/compound-mini",name:"Compound Mini"},{id:"allam-2-7b",name:"Allam 2 7B"},{id:"whisper-large-v3",name:"Whisper Large v3",params:["language","response_format","temperature","prompt"],kind:"stt"},{id:"whisper-large-v3-turbo",name:"Whisper Large v3 Turbo",params:["language","response_format","temperature","prompt"],kind:"stt"},{id:"distil-whisper-large-v3-en",name:"Distil Whisper Large v3 EN",params:["language","response_format","temperature","prompt"],kind:"stt"}],serviceKinds:["llm","imageToText","stt"],sttConfig:{baseUrl:"https://api.groq.com/openai/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"openai"},modelsFetcher:{url:"https://api.groq.com/openai/v1/models",type:"openai"},passthroughModels:!0,features:{usage:!0,usageApikey:!0}},{id:"huggingface",priority:70,hasFree:!0,alias:"huggingface",aliases:["hf"],uiAlias:"hf",display:{name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",notice:{apiKeyUrl:"https://huggingface.co/settings/tokens"}},category:"apikey",authType:"apikey",hiddenKinds:["tts"],transport:null,models:[{id:"black-forest-labs/FLUX.1-schnell",name:"FLUX.1 Schnell",params:[],kind:"image"},{id:"stabilityai/stable-diffusion-xl-base-1.0",name:"SDXL Base 1.0",params:[],kind:"image"},{id:"openai/whisper-large-v3",name:"Whisper Large v3 (HF)",params:["language"],kind:"stt"},{id:"openai/whisper-small",name:"Whisper Small (HF)",params:["language"],kind:"stt"}],serviceKinds:["image","stt"],imageConfig:{baseUrl:"https://api-inference.huggingface.co/models"},sttConfig:{baseUrl:"https://api-inference.huggingface.co/models",authType:"apikey",authHeader:"bearer",format:"huggingface-asr"}},{id:"hyperbolic",priority:160,alias:"hyperbolic",aliases:["hyp"],uiAlias:"hyp",display:{name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz",notice:{apiKeyUrl:"https://app.hyperbolic.xyz/settings"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",validateUrl:"https://api.hyperbolic.xyz/v1/models"},models:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}]},{id:"iflow",hidden:!0,priority:110,alias:"if",display:{name:"iFlow AI",icon:"water_drop",color:"#6366F1",website:"https://iflow.cn",notice:{signupUrl:"https://iflow.cn"}},category:"oauth",transport:{baseUrl:"https://apis.iflow.cn/v1/chat/completions",thinkingFormat:"openai",headers:{"User-Agent":"iFlow-Cli"}},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-max",name:"Qwen3 Max"},{id:"qwen3-vl-plus",name:"Qwen3 VL Plus"},{id:"qwen3-max-preview",name:"Qwen3 Max Preview"},{id:"qwen3-235b",name:"Qwen3 235B A22B"},{id:"qwen3-235b-a22b-instruct",name:"Qwen3 235B A22B Instruct"},{id:"qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking"},{id:"qwen3-32b",name:"Qwen3 32B"},{id:"kimi-k2",name:"Kimi K2"},{id:"deepseek-v3.2",name:"DeepSeek V3.2 Exp"},{id:"deepseek-v3.1",name:"DeepSeek V3.1 Terminus"},{id:"deepseek-v3",name:"DeepSeek V3 671B"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"glm-4.7",name:"GLM 4.7"},{id:"iflow-rome-30ba3b",name:"iFlow ROME"}],features:{usage:!0},oauth:{clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",authorizeUrl:"https://iflow.cn/oauth",tokenUrl:"https://iflow.cn/oauth/token",userInfoUrl:"https://iflow.cn/api/oauth/getUserInfo",extraParams:{loginMethod:"phone",type:"phone"},refreshLeadMs:864e5}},{id:"inworld",alias:"inworld",display:{name:"Inworld TTS",icon:"record_voice_over",color:"#FF6B6B",textIcon:"IW",website:"https://inworld.ai",notice:{text:"Free tier: 40 minutes/month TTS. Paid: TTS-1.5 Mini $0.01/min ($15/1M chars), TTS-1.5 Max $0.025/min ($30/1M chars). 270+ voices, 15 languages.",apiKeyUrl:"https://platform.inworld.ai/api-keys"}},category:"apikey",authType:"apikey",serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.inworld.ai/tts/v1/voice",authType:"apikey",authHeader:"basic",format:"inworld",models:[{id:"inworld-tts-1.5-mini",name:"Inworld TTS 1.5 Mini ($0.01/min)"},{id:"inworld-tts-1.5-max",name:"Inworld TTS 1.5 Max ($0.025/min)"}]}},{id:"jina-ai",alias:"jina",display:{name:"Jina AI",icon:"blur_on",color:"#2563EB",textIcon:"JA",website:"https://jina.ai",notice:{text:"10M free tokens on signup (non-commercial), no credit card required.",apiKeyUrl:"https://jina.ai/?sui=apikey"}},category:"apikey",authType:"apikey",serviceKinds:["embedding"],embeddingConfig:{baseUrl:"https://api.jina.ai/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"jina-embeddings-v3",name:"Jina Embeddings v3",dimensions:1024},{id:"jina-embeddings-v2-base-en",name:"Jina Embeddings v2 Base EN",dimensions:768},{id:"jina-embeddings-v2-base-code",name:"Jina Embeddings v2 Base Code",dimensions:768}]}},{id:"jina-reader",alias:"jina-reader",display:{name:"Jina Reader",icon:"menu_book",color:"#000000",textIcon:"JR",website:"https://jina.ai/reader",notice:{apiKeyUrl:"https://jina.ai/?sui=apikey"}},category:"apikey",authType:"apikey",serviceKinds:["webFetch"],fetchConfig:{baseUrl:"https://r.jina.ai",method:"GET",authType:"apikey",authHeader:"bearer",costPerQuery:0,freeMonthlyQuota:1e6,formats:["markdown","text","html"],maxCharacters:2e5,timeoutMs:3e4}},{id:"joycode",priority:122,alias:"joycode",uiAlias:"joycode",display:{name:"JD JoyCode",icon:"code",color:"#FF6B35",textIcon:"JC",website:"https://joycode.jd.com",notice:{apiKeyUrl:"https://joycode.jd.com/settings/api-keys"}},category:"apikey",transport:{baseUrl:"https://api.joycode.jd.com/v1/chat/completions",validateUrl:"https://api.joycode.jd.com/v1/models"},models:[{id:"joycode-v1",name:"JoyCode V1"},{id:"joycode-v1-code",name:"JoyCode V1 Code"}],features:{usage:!0,usageApikey:!0}},{id:"kilo-gateway",alias:"kgw",aliases:["kilo-gateway","kilogateway"],uiAlias:"kgw",category:"freeTier",display:{name:"Kilo Gateway",icon:"login",color:"#8B5CF6",textIcon:"KG",website:"https://kilo.ai",notice:{apiKeyUrl:"https://kilo.ai/dashboard?tab=apiKeys"}},authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://api.kilo.ai/api/gateway/chat/completions",validateUrl:"https://api.kilo.ai/api/gateway/models"},models:[{id:"kilo-auto/free",name:"Kilo Auto Free",contextLength:256e3},{id:"nvidia/nemotron-3-super-120b-a12b:free",name:"Nemotron 3 Super 120B (Free)",contextLength:262144},{id:"nvidia/nemotron-3-ultra-550b-a55b:free",name:"Nemotron 3 Ultra 550B (Free)",contextLength:1e6},{id:"kwaipilot/kat-coder-pro-v2.5:free",name:"Kat Coder Pro v2.5 (Free)",contextLength:256e3},{id:"kilo-auto/frontier",name:"Kilo Auto Frontier",contextLength:1e6},{id:"kilo-auto/balanced",name:"Kilo Auto Balanced",contextLength:1e6}]},{id:"kilocode",priority:70,alias:"kc",uiAlias:"kc",display:{name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC",website:"https://kilocode.ai",notice:{signupUrl:"https://kilocode.ai"}},category:"oauth",transport:{baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",headers:{},auth:{combined:!0,header:"Authorization",scheme:"bearer",hooks:["kilocodeOrg"]}},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"},{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner"}],modelsFetcher:{url:"https://api.kilo.ai/api/gateway/models",type:"openrouter-free"},passthroughModels:!0,oauth:{apiBaseUrl:"https://api.kilo.ai",initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"}},{id:"kimchi",priority:95,alias:"kimchi",uiAlias:"kimchi",display:{name:"Kimchi",icon:"restaurant",color:"#FF521D",textIcon:"KC",website:"https://kimchi.dev",notice:{signupUrl:"https://app.kimchi.dev"}},category:"freeTier",authModes:["oauth","apikey"],hasOAuth:!0,transport:{baseUrl:"https://llm.kimchi.dev/openai/v1/chat/completions",format:"openai",headers:{"User-Agent":"kimchi/0.1.50"},auth:{combined:!0,header:"Authorization",scheme:"bearer"}},models:[{id:"minimax-m3",name:"MiniMax-M3"},{id:"kimi-k2.7",name:"Kimi-K2.7"},{id:"kimi-k2.6",name:"Kimi-K2.6"},{id:"kimi-k2.5",name:"Kimi-K2.5"},{id:"nemotron-3-ultra-fp4",name:"Nemotron 3 Ultra FP4"},{id:"minimax-m2.7",name:"MiniMax-M2.7"},{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"}],serviceKinds:["llm","imageToText"],oauth:{webAppUrl:"https://app.kimchi.dev",validationUrl:"https://api.cast.ai/v1/llm/openai/supported-providers",userInfoUrl:"https://app.kimchi.dev/api/v1/me",modelsUrl:"https://llm.kimchi.dev/v1/models/metadata?include_in_cli=true"},passthroughModels:!0},t,{id:"kiro",priority:10,alias:"kr",uiAlias:"kr",display:{name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35",website:"https://kiro.dev",notice:{signupUrl:"https://kiro.dev"},deprecated:!0,deprecationNotice:"RISK_NOTICE"},category:"free",transport:{baseUrl:"https://runtime.us-east-1.kiro.dev/generateAssistantResponse",baseUrls:["https://runtime.us-east-1.kiro.dev/generateAssistantResponse","https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse","https://q.us-east-1.amazonaws.com/generateAssistantResponse"],format:"kiro",forceStream:!0,retry:{429:0},headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev",usage:{cwHost:"https://codewhisperer.us-east-1.amazonaws.com",qHost:"https://q.us-east-1.amazonaws.com",limitsPath:"/getUsageLimits"}},models:[{id:"claude-opus-5",name:"Claude Opus 5"},{id:"claude-opus-5-thinking",name:"Claude Opus 5 (Thinking)"},{id:"claude-opus-5-agentic",name:"Claude Opus 5 (Agentic)"},{id:"claude-opus-5-thinking-agentic",name:"Claude Opus 5 (Thinking + Agentic)"},{id:"claude-opus-4.8",name:"Claude Opus 4.8"},{id:"claude-opus-4.8-thinking",name:"Claude Opus 4.8 (Thinking)"},{id:"claude-opus-4.8-agentic",name:"Claude Opus 4.8 (Agentic)"},{id:"claude-opus-4.8-thinking-agentic",name:"Claude Opus 4.8 (Thinking + Agentic)"},{id:"claude-opus-4.7",name:"Claude Opus 4.7"},{id:"claude-opus-4.7-thinking",name:"Claude Opus 4.7 (Thinking)"},{id:"claude-opus-4.7-agentic",name:"Claude Opus 4.7 (Agentic)"},{id:"claude-opus-4.7-thinking-agentic",name:"Claude Opus 4.7 (Thinking + Agentic)"},{id:"claude-opus-4.5",name:"Claude Opus 4.5"},{id:"claude-opus-4.5-thinking",name:"Claude Opus 4.5 (Thinking)"},{id:"claude-opus-4.5-agentic",name:"Claude Opus 4.5 (Agentic)"},{id:"claude-opus-4.5-thinking-agentic",name:"Claude Opus 4.5 (Thinking + Agentic)"},{id:"claude-sonnet-5",name:"Claude Sonnet 5"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2",strip:["image","audio"]},{id:"qwen3-coder-next",name:"Qwen3 Coder Next",strip:["image","audio"]},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"gpt-5.6-sol",name:"GPT 5.6 Sol",contextLength:272e3,rateMultiplier:2.4,upstreamModelId:"gpt-5.6-sol",description:"Experimental preview of OpenAI GPT 5.6 Sol with 272k context window"},{id:"gpt-5.6-terra",name:"GPT 5.6 Terra",contextLength:272e3,rateMultiplier:1.2,upstreamModelId:"gpt-5.6-terra",description:"Experimental preview of OpenAI GPT 5.6 Terra with 272k context window"},{id:"gpt-5.6-luna",name:"GPT 5.6 Luna",contextLength:272e3,rateMultiplier:.6,upstreamModelId:"gpt-5.6-luna",description:"Experimental preview of OpenAI GPT 5.6 Luna with 272k context window"},{id:"claude-sonnet-5-thinking",name:"Claude Sonnet 5 (Thinking)"},{id:"claude-sonnet-4.5-thinking",name:"Claude Sonnet 4.5 (Thinking)"},{id:"claude-haiku-4.5-thinking",name:"Claude Haiku 4.5 (Thinking)"},{id:"gpt-5.6-sol-thinking",name:"GPT 5.6 Sol (Thinking)",contextLength:272e3,rateMultiplier:2.4,upstreamModelId:"gpt-5.6-sol",description:"Experimental preview of OpenAI GPT 5.6 Sol with 272k context window"},{id:"gpt-5.6-terra-thinking",name:"GPT 5.6 Terra (Thinking)",contextLength:272e3,rateMultiplier:1.2,upstreamModelId:"gpt-5.6-terra",description:"Experimental preview of OpenAI GPT 5.6 Terra with 272k context window"},{id:"gpt-5.6-luna-thinking",name:"GPT 5.6 Luna (Thinking)",contextLength:272e3,rateMultiplier:.6,upstreamModelId:"gpt-5.6-luna",description:"Experimental preview of OpenAI GPT 5.6 Luna with 272k context window"},{id:"claude-sonnet-5-agentic",name:"Claude Sonnet 5 (Agentic)"},{id:"claude-sonnet-4.5-agentic",name:"Claude Sonnet 4.5 (Agentic)"},{id:"claude-haiku-4.5-agentic",name:"Claude Haiku 4.5 (Agentic)"},{id:"gpt-5.6-sol-agentic",name:"GPT 5.6 Sol (Agentic)",contextLength:272e3,rateMultiplier:2.4,upstreamModelId:"gpt-5.6-sol",description:"Experimental preview of OpenAI GPT 5.6 Sol with 272k context window"},{id:"gpt-5.6-terra-agentic",name:"GPT 5.6 Terra (Agentic)",contextLength:272e3,rateMultiplier:1.2,upstreamModelId:"gpt-5.6-terra",description:"Experimental preview of OpenAI GPT 5.6 Terra with 272k context window"},{id:"gpt-5.6-luna-agentic",name:"GPT 5.6 Luna (Agentic)",contextLength:272e3,rateMultiplier:.6,upstreamModelId:"gpt-5.6-luna",description:"Experimental preview of OpenAI GPT 5.6 Luna with 272k context window"},{id:"claude-sonnet-5-thinking-agentic",name:"Claude Sonnet 5 (Thinking + Agentic)"},{id:"claude-sonnet-4.5-thinking-agentic",name:"Claude Sonnet 4.5 (Thinking + Agentic)"},{id:"claude-haiku-4.5-thinking-agentic",name:"Claude Haiku 4.5 (Thinking + Agentic)"},{id:"gpt-5.6-sol-thinking-agentic",name:"GPT 5.6 Sol (Thinking + Agentic)",contextLength:272e3,rateMultiplier:2.4,upstreamModelId:"gpt-5.6-sol",description:"Experimental preview of OpenAI GPT 5.6 Sol with 272k context window"},{id:"gpt-5.6-terra-thinking-agentic",name:"GPT 5.6 Terra (Thinking + Agentic)",contextLength:272e3,rateMultiplier:1.2,upstreamModelId:"gpt-5.6-terra",description:"Experimental preview of OpenAI GPT 5.6 Terra with 272k context window"},{id:"gpt-5.6-luna-thinking-agentic",name:"GPT 5.6 Luna (Thinking + Agentic)",contextLength:272e3,rateMultiplier:.6,upstreamModelId:"gpt-5.6-luna",description:"Experimental preview of OpenAI GPT 5.6 Luna with 272k context window"}],oauth:{ssoOidcEndpoint:"https://oidc.us-east-1.amazonaws.com",registerClientUrl:"https://oidc.us-east-1.amazonaws.com/client/register",deviceAuthUrl:"https://oidc.us-east-1.amazonaws.com/device_authorization",tokenUrl:"https://oidc.us-east-1.amazonaws.com/token",startUrl:"https://view.awsapps.com/start",clientName:"kiro-oauth-client",clientType:"public",scopes:["codewhisperer:completions","codewhisperer:analysis","codewhisperer:conversations"],grantTypes:["urn:ietf:params:oauth:grant-type:device_code","refresh_token"],issuerUrl:"https://identitycenter.amazonaws.com/ssoins-722374e8c3c8e6c6",socialAuthEndpoint:"https://prod.us-east-1.auth.desktop.kiro.dev",socialLoginUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/login",socialTokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/oauth/token",socialRefreshUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authMethods:["builder-id","idc","google","github","import"]},features:{usage:!0,usageApikey:!0}},{id:"linkup",alias:"linkup",display:{name:"Linkup",icon:"link",color:"#0EA5E9",textIcon:"LK",website:"https://linkup.so",notice:{apiKeyUrl:"https://app.linkup.so/api-keys"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://api.linkup.so/v1/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.005,freeMonthlyQuota:1e3,searchTypes:["web"],defaultMaxResults:5,maxMaxResults:50,timeoutMs:1e4,cacheTTLMs:3e5}},{id:"llm7",alias:"llm7",aliases:["llm-7"],uiAlias:"llm7",display:{name:"LLM7",icon:"pool",color:"#7C3AED",textIcon:"L7",website:"https://llm7.io",notice:{apiKeyUrl:"https://llm7.io"}},category:"apikey",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://api.llm7.io/v1/chat/completions",validateUrl:"https://api.llm7.io/v1/models"},models:[{id:"gpt-5.5",name:"GPT-5.5 (LLM7)",contextLength:105e4},{id:"claude-opus-5",name:"Claude Opus 5 (LLM7)",contextLength:1e6},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash (LLM7)",contextLength:1e6},{id:"grok-4.5",name:"Grok 4.5 (LLM7)",contextLength:5e5},{id:"kimi-k3",name:"Kimi K3 (LLM7)",contextLength:1e6}],passthroughModels:!0},{id:"local-device",alias:"local-device",display:{name:"Local Device",icon:"speaker",color:"#64748B",textIcon:"LD"},category:"freeTier",authType:"none",serviceKinds:["tts"],mediaPriority:5,noAuth:!0,ttsConfig:{baseUrl:"local-device",authType:"none",authHeader:"none",format:"local-device",models:[]}},{id:"meta",alias:"meta",aliases:["meta-ai","llama"],uiAlias:"meta",display:{name:"Meta AI",icon:"bolt",color:"#0064E0",textIcon:"MA",website:"https://dev.meta.ai",notice:{text:"Meta Model API. OpenAI-compatible endpoint for Meta's Muse Spark reasoning models.",apiKeyUrl:"https://dev.meta.ai"}},category:"apikey",thinkingConfig:{options:["minimal","low","medium","high","xhigh"],defaultMode:"low"},transport:{baseUrl:"https://api.meta.ai/v1/chat/completions",validateUrl:"https://api.meta.ai/v1/models",thinkingFormat:"meta"},models:[{id:"muse-spark-1.2-contributor",name:"Muse Spark 1.2 Contributor"},{id:"muse-spark-1.2",name:"Muse Spark 1.2"},{id:"muse-spark-1.1",name:"Muse Spark 1.1"}],serviceKinds:["llm"],modelsFetcher:{url:"https://api.meta.ai/v1/models",type:"openai"},passthroughModels:!0},{id:"mimo-free",hidden:!0,priority:50,hasFree:!0,alias:"mmf",uiAlias:"mmf",display:{name:"MiMo Code Free",icon:"smart_toy",color:"#FF6900",textIcon:"MF"},category:"free",noAuth:!0,transport:{baseUrl:"https://api.xiaomimimo.com/api/free-ai/openai/chat",noAuth:!0},models:[{id:"mimo-auto",name:"MiMo Auto"}],modelsFetcher:{url:"https://models.dev/api.json",type:"mimo-free"},passthroughModels:!0},u,v,{id:"mistral",priority:80,alias:"mistral",display:{name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai",notice:{apiKeyUrl:"https://console.mistral.ai/api-keys"}},category:"apikey",transport:{baseUrl:"https://api.mistral.ai/v1/chat/completions",validateUrl:"https://api.mistral.ai/v1/models",quirks:{dropClientMetadata:!0}},models:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"},{id:"mistral-embed",name:"Mistral Embed",kind:"embedding"}],serviceKinds:["llm","imageToText","embedding"],embeddingConfig:{baseUrl:"https://api.mistral.ai/v1/embeddings",authType:"apikey",authHeader:"bearer"}},{id:"mmf",hidden:!0,priority:200,display:{name:"MMF",icon:"hub",color:"#6366F1",textIcon:"MF"},category:"apikey",transport:{baseUrl:"https://api.xiaomimimo.com/api/free-ai/openai/chat",noAuth:!0},models:[{id:"mimo-auto",name:"MiMo Auto"}]},{id:"morph",alias:"morph",aliases:["morphllm"],uiAlias:"morph",display:{name:"Morph",icon:"change_history",color:"#14B8A6",textIcon:"MP",website:"https://morphllm.com",notice:{apiKeyUrl:"https://morphllm.com"}},category:"apikey",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://api.morphllm.com/v1/chat/completions",validateUrl:"https://api.morphllm.com/v1/models"},models:[{id:"morph-v3-large",name:"Morph v3 Large"},{id:"morph-v3-fast",name:"Morph v3 Fast"},{id:"morph-qwen35-397b",name:"Qwen 3.5 397B (Morph)",contextLength:262144},{id:"morph-minimax27-230b",name:"MiniMax M2.7 (Morph)",contextLength:200704},{id:"morph-qwen36-27b",name:"Qwen 3.6 27B (Morph)",contextLength:262144},{id:"morph-dsv4flash",name:"DeepSeek V4 Flash (Morph)",contextLength:1048576}]},{id:"nanobanana",priority:80,hasFree:!0,alias:"nanobanana",aliases:["nb"],uiAlias:"nb",display:{name:"NanoBanana API",icon:"extension",color:"#FFD700",textIcon:"\uD83C\uDF4C",website:"https://nanobananaapi.ai",notice:{text:"3rd-party proxy for Google Nano Banana (Gemini 2.5/3 Flash Image). For official, use Gemini provider.",apiKeyUrl:"https://nanobananaapi.ai/dashboard"}},category:"apikey",transport:{baseUrl:"https://api.nanobananaapi.ai/v1/chat/completions",validateUrl:"https://api.nanobananaapi.ai/v1/models"},models:[{id:"nanobanana-flash",name:"NanoBanana Flash",params:["n","size"],kind:"image"},{id:"nanobanana-pro",name:"NanoBanana Pro",params:["n","size"],kind:"image"}],serviceKinds:["image"],imageConfig:{baseUrl:"https://api.nanobananaapi.ai/api/v1/nanobanana/generate",pollUrl:"https://api.nanobananaapi.ai/api/v1/nanobanana/record-info"}},{id:"nebius",priority:70,alias:"nebius",display:{name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com",notice:{apiKeyUrl:"https://studio.nebius.com/settings/api-keys"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.studio.nebius.ai/v1/chat/completions",validateUrl:"https://api.studio.nebius.ai/v1/models"},models:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"},{id:"Qwen/Qwen3-Embedding-8B",name:"Qwen3 Embedding 8B",kind:"embedding"}],serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.tokenfactory.nebius.com/v1/embeddings"}},{id:"nous",priority:65,hasFree:!0,alias:"nous",aliases:["nous-portal","nous-research"],uiAlias:"nous",display:{name:"Nous Research",icon:"psychology",color:"#111827",textIcon:"NR",website:"https://nousresearch.com",notice:{text:"OpenAI-compatible inference. Third-party apps authenticate with a static Nous Portal API key; Hermes 4 does not currently advertise tool calling.",apiKeyUrl:"https://portal.nousresearch.com/api-keys"}},category:"freeTier",authType:"apikey",authModes:["apikey"],transport:{baseUrl:x},models:[{id:"nousresearch/hermes-4-70b",name:"Nous: Hermes 4 70B",contextLength:131072},{id:"nousresearch/hermes-4-405b",name:"Nous: Hermes 4 405B",contextLength:131072}],serviceKinds:["llm"],modelsFetcher:{url:y,type:"nous-free"},passthroughModels:!0},{id:"novita",priority:70,alias:"novita",display:{name:"Novita AI",icon:"cloud",color:"#7C3AED",textIcon:"NV",website:"https://novita.ai",notice:{apiKeyUrl:"https://novita.ai/settings/key-management"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.novita.ai/openai/v1/chat/completions",validateUrl:"https://api.novita.ai/openai/v1/models"},models:[{id:"deepseek/deepseek-v4-pro",name:"DeepSeek V4 Pro"},{id:"qwen/qwen3-coder-480b-a35b-instruct",name:"Qwen3 Coder 480B"},{id:"moonshotai/kimi-k3",name:"Kimi K3"},{id:"zai-org/glm-5.2",name:"GLM 5.2"}]},{id:"nvidia",priority:20,hasFree:!0,alias:"nvidia",display:{name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"}},category:"freeTier",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",validateUrl:"https://integrate.api.nvidia.com/v1/models"},models:[{id:"minimaxai/minimax-m3",name:"MiniMax M3"},{id:"moonshotai/kimi-k3",name:"Kimi K3"},{id:"deepseek-ai/deepseek-v4-pro-0813",name:"DeepSeek V4 Pro"},{id:"deepseek-ai/deepseek-v4-flash-0731",name:"DeepSeek V4 Flash"},{id:"moonshotai/kimi-k2.6",name:"Kimi K2.6"},{id:"nvidia/nemotron-3-ultra-550b-a55b",name:"Nemotron 3 Ultra"},{id:"nvidia/nemotron-3-super-120b-a12b",name:"Nemotron 3 Super"},{id:"nvidia/nv-embedqa-e5-v5",name:"NV EmbedQA E5 v5",kind:"embedding"},{id:"nvidia/parakeet-ctc-1.1b-asr",name:"Parakeet CTC 1.1B",params:["language"],kind:"stt"},{id:"fastpitch",name:"FastPitch",kind:"tts"},{id:"tacotron2",name:"Tacotron2",kind:"tts"}],serviceKinds:["llm","tts","embedding"],ttsConfig:{baseUrl:"https://integrate.api.nvidia.com/v1/audio/speech",authType:"apikey",authHeader:"bearer",format:"nvidia-tts"},embeddingConfig:{baseUrl:"https://integrate.api.nvidia.com/v1/embeddings",authType:"apikey",authHeader:"bearer"}},{id:"ollama-local",priority:50,hasFree:!0,alias:"ollama-local",display:{name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},category:"apikey",baseUrlField:{label:"Ollama Host URL",placeholder:"http://localhost:11434"},transport:{baseUrl:"http://localhost:11434/api/chat",format:"ollama",thinkingFormat:"ollama"},models:[{id:"embeddinggemma",name:"EmbeddingGemma",kind:"embedding"},{id:"nomic-embed-text",name:"Nomic Embed Text",kind:"embedding"},{id:"bge-m3",name:"BGE M3",kind:"embedding"}],serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"http://localhost:11434/v1/embeddings",authType:"none"}},{id:"ollama-search",alias:"ollama-search",display:{name:"Ollama Search",icon:"cloud",color:"#ffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Web search via Ollama Cloud subscription. Reuses the API key from the Ollama (chat) provider.",apiKeyUrl:"https://ollama.com/settings/keys"}},category:"apikey",authType:"apikey",authModes:["apikey"],serviceKinds:["webSearch"],credentialFallback:"ollama",searchConfig:{baseUrl:"https://ollama.com/api/web_search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:0,freeMonthlyQuota:1e3,searchTypes:["web"],defaultMaxResults:5,maxMaxResults:10,timeoutMs:1e4,cacheTTLMs:3e5}},{id:"ollama",priority:30,hasFree:!0,alias:"ollama",display:{name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo \xb7 Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},category:"freeTier",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://ollama.com/api/chat",validateUrl:"https://ollama.com/api/tags",format:"ollama",thinkingFormat:"ollama"},models:[{id:"gpt-oss:120b",name:"GPT OSS 120B"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"minimax-m2.5",name:"MiniMax M2.5"},{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"qwen3.5",name:"Qwen3.5"},{id:"minimax-m3",name:"MiniMax M3"}],serviceKinds:["llm","webFetch"],fetchConfig:{baseUrl:"https://ollama.com/api/web_fetch",method:"POST",authType:"apikey",authHeader:"bearer",formats:["markdown"],maxCharacters:2e5,timeoutMs:3e4},features:{usage:!0,usageApikey:!0}},{id:"openai",priority:30,alias:"openai",display:{name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com",notice:{apiKeyUrl:"https://platform.openai.com/api-keys"}},category:"apikey",thinkingConfig:{options:["auto","none","low","medium","high"],defaultMode:"auto"},transport:{baseUrl:"https://api.openai.com/v1/chat/completions",forceStream:!0},models:[{id:"gpt-5.4",name:"GPT-5.4"},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini"},{id:"gpt-5.4-nano",name:"GPT-5.4 Nano"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-nano",name:"GPT-5 Nano"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-4.1-mini",name:"GPT-4.1 Mini"},{id:"gpt-4.1-nano",name:"GPT-4.1 Nano"},{id:"o3",name:"O3"},{id:"o3-mini",name:"O3 Mini"},{id:"o3-pro",name:"O3 Pro"},{id:"o4-mini",name:"O4 Mini"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"},{id:"text-embedding-3-large",name:"Text Embedding 3 Large",kind:"embedding"},{id:"text-embedding-3-small",name:"Text Embedding 3 Small",kind:"embedding"},{id:"text-embedding-ada-002",name:"Text Embedding Ada 002",kind:"embedding"},{id:"tts-1",name:"TTS-1",kind:"tts"},{id:"tts-1-hd",name:"TTS-1 HD",kind:"tts"},{id:"gpt-4o-mini-tts",name:"GPT-4o Mini TTS",kind:"tts"},{id:"whisper-1",name:"Whisper 1",params:["language","response_format","temperature","prompt"],kind:"stt"},{id:"gpt-4o-transcribe",name:"GPT-4o Transcribe",params:["language","response_format","temperature","prompt"],kind:"stt"},{id:"gpt-4o-mini-transcribe",name:"GPT-4o Mini Transcribe",params:["language","response_format","temperature","prompt"],kind:"stt"},{id:"gpt-image-2.5",name:"GPT Image 2.5",params:["n","size","quality","response_format"],kind:"image"},{id:"gpt-image-2.5-flare",name:"GPT Image 2.5 Flare",params:["n","size","quality","response_format"],kind:"image"},{id:"gpt-image-2.5-sunburst",name:"GPT Image 2.5 Sunburst",params:["n","size","quality","response_format"],kind:"image"},{id:"gpt-image-1",name:"GPT Image 1",params:["n","size","quality","response_format"],kind:"image"},{id:"dall-e-3",name:"DALL-E 3",params:["size","quality","style","response_format"],kind:"image"},{id:"dall-e-2",name:"DALL-E 2",params:["n","size","response_format"],kind:"image"}],serviceKinds:["llm","embedding","tts","stt","image","imageToText","webSearch"],ttsConfig:{baseUrl:"https://api.openai.com/v1/audio/speech",authType:"apikey",authHeader:"bearer",format:"openai",defaultModel:"gpt-4o-mini-tts"},sttConfig:{baseUrl:"https://api.openai.com/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"openai"},embeddingConfig:{baseUrl:"https://api.openai.com/v1/embeddings",authType:"apikey",authHeader:"bearer"},imageConfig:{baseUrl:"https://api.openai.com/v1/images/generations"},searchViaChat:{defaultModel:"gpt-4o-mini",pricingUrl:"https://openai.com/api/pricing"}},{id:"opencode-go",priority:210,alias:"opencode-go",aliases:["ocg"],uiAlias:"ocg",display:{name:"OpenCode Go",icon:"terminal",color:"#E87040",textIcon:"OC",website:"https://opencode.ai/auth",notice:{text:"OpenCode Go subscription: $5/mo (then 0/mo). Access to Kimi, GLM, Qwen, MiMo, MiniMax models.",apiKeyUrl:"https://opencode.ai/auth"}},category:"apikey",transport:{baseUrl:"https://opencode.ai/zen/go/v1/chat/completions",headers:{},usage:{url:"https://opencode.ai/zen/go/v1/usage"},quirks:{forceAutoToolChoiceModels:["muse-spark-1.2-contributor","muse-spark-1.3-contributor"]}},transports:[{format:"openai",baseUrl:"https://opencode.ai/zen/go/v1/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},{format:"claude",baseUrl:"https://opencode.ai/zen/go/v1/messages",auth:{combined:!0,header:"x-api-key",scheme:"raw",anthropicVersion:!0}},{format:"openai-responses",baseUrl:"https://opencode.ai/zen/go/v1/responses",auth:{combined:!0,header:"Authorization",scheme:"bearer"}}],models:[{id:"deepseek-flash",name:"DeepSeek V4.1 Flash",supportedFormats:["openai"]},{id:"glm-5.3-flash",name:"GLM 5.3 Flash (Vision)",supportedFormats:["openai"]},{id:"glm-5.3",name:"GLM 5.3",supportedFormats:["openai"]},{id:"glm-5.2",name:"GLM 5.2",supportedFormats:["openai"]},{id:"glm-5.1",name:"GLM 5.1",supportedFormats:["openai"]},{id:"kimi-k2.7-code",name:"Kimi K2.7 Code",supportedFormats:["openai"]},{id:"kimi-k2.6",name:"Kimi K2.6",supportedFormats:["openai"]},{id:"kimi-k3",name:"Kimi K3",supportedFormats:["openai"]},{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro",supportedFormats:["openai","claude","openai-responses"]},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash",supportedFormats:["openai","claude","openai-responses"]},{id:"deepseek-v4-flash-vision-exp",name:"DeepSeek V4 Flash Vision (Exp)",supportedFormats:["openai","claude","openai-responses"]},{id:"longcat-2.0",name:"LongCat 2.0",supportedFormats:["openai"]},{id:"mimo-v2.5",name:"MiMo V2.5",supportedFormats:["openai"]},{id:"mimo-v2.5-pro",name:"MiMo V2.5 Pro",supportedFormats:["openai"]},{id:"minimax-m3",name:"MiniMax M3",supportedFormats:["openai","claude"]},{id:"minimax-m2.7",name:"MiniMax M2.7",supportedFormats:["openai","claude"]},{id:"minimax-m2.5",name:"MiniMax M2.5",supportedFormats:["openai","claude"]},{id:"qwen3.8-max",name:"Qwen 3.8 Max",supportedFormats:["openai","claude"]},{id:"qwen3.8-flash",name:"Qwen 3.8 Flash",supportedFormats:["openai","claude"]},{id:"qwen3.7-max",name:"Qwen 3.7 Max",supportedFormats:["openai","claude"]},{id:"qwen3.7-plus",name:"Qwen 3.7 Plus",supportedFormats:["openai","claude"]},{id:"qwen3.6-plus",name:"Qwen 3.6 Plus",supportedFormats:["openai","claude"]},{id:"hy4-preview",name:"Hy4 Preview",supportedFormats:["openai"]},{id:"hy3",name:"Hy3",supportedFormats:["openai"]},{id:"grok-4.6",name:"Grok 4.6",targetFormat:"openai-responses",supportedFormats:["openai-responses"]},{id:"gpt-5.6-luna",name:"GPT 5.6 Luna",targetFormat:"openai-responses",supportedFormats:["openai-responses"]},{id:"muse-spark-1.2-contributor",name:"Muse Spark 1.2 Contributor",targetFormat:"openai-responses",supportedFormats:["openai-responses"]},{id:"muse-spark-1.3-contributor",name:"Muse Spark 1.3 Contributor",targetFormat:"openai-responses",supportedFormats:["openai-responses"]},{id:"ox-alpha-free",name:"Ox Alpha Free",supportedFormats:["openai"]}],features:{usage:!0,usageApikey:!0},usageUrl:"https://opencode.ai/zen/go/v1/usage"},{id:"opencode-zen",priority:205,alias:"opencode-zen",aliases:["ocz"],uiAlias:"ocz",display:{name:"OpenCode Zen",icon:"terminal",color:"#E87040",textIcon:"OCZ",website:"https://opencode.ai/auth",notice:{text:"OpenCode Zen: Pay-as-you-go access to Zen models. Requires an API key and a payment method.",apiKeyUrl:"https://opencode.ai/auth"}},category:"apikey",transport:{baseUrl:"https://opencode.ai/zen/v1",headers:{}},models:[{id:"claude-fable-5",name:"Claude Fable 5",targetFormat:"claude"},{id:"claude-opus-5",name:"Claude Opus 5",targetFormat:"claude"},{id:"claude-opus-4-8",name:"Claude Opus 4.8",targetFormat:"claude"},{id:"claude-opus-4-7",name:"Claude Opus 4.7",targetFormat:"claude"},{id:"claude-opus-4-6",name:"Claude Opus 4.6",targetFormat:"claude"},{id:"claude-opus-4-5",name:"Claude Opus 4.5",targetFormat:"claude"},{id:"claude-opus-4-1",name:"Claude Opus 4.1",targetFormat:"claude"},{id:"claude-sonnet-5",name:"Claude Sonnet 5",targetFormat:"claude"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",targetFormat:"claude"},{id:"claude-sonnet-4-5",name:"Claude Sonnet 4.5",targetFormat:"claude"},{id:"claude-sonnet-4",name:"Claude Sonnet 4",targetFormat:"claude"},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5",targetFormat:"claude"},{id:"gemini-3.6-flash",name:"Gemini 3.6 Flash"},{id:"gemini-3.5-flash-lite",name:"Gemini 3.5 Flash Lite"},{id:"gemini-3.5-flash",name:"Gemini 3.5 Flash"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro"},{id:"gemini-3-flash",name:"Gemini 3 Flash"},{id:"gpt-5.6-sol",name:"GPT 5.6 Sol"},{id:"gpt-5.6-terra",name:"GPT 5.6 Terra"},{id:"gpt-5.6-luna",name:"GPT 5.6 Luna"},{id:"gpt-5.5",name:"GPT 5.5"},{id:"gpt-5.5-pro",name:"GPT 5.5 Pro"},{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.4-pro",name:"GPT 5.4 Pro"},{id:"gpt-5.4-mini",name:"GPT 5.4 Mini"},{id:"gpt-5.4-nano",name:"GPT 5.4 Nano"},{id:"gpt-5.3-codex-spark",name:"GPT 5.3 Codex Spark"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5",name:"GPT 5"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-nano",name:"GPT 5 Nano"},{id:"grok-build-0.1",name:"Grok Build 0.1"},{id:"grok-4.5",name:"Grok 4.5"},{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro"},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash"},{id:"glm-5.2",name:"GLM 5.2"},{id:"glm-5.1",name:"GLM 5.1"},{id:"glm-5",name:"GLM 5"},{id:"minimax-m3",name:"MiniMax M3",targetFormat:"claude"},{id:"minimax-m2.7",name:"MiniMax M2.7",targetFormat:"claude"},{id:"minimax-m2.5",name:"MiniMax M2.5",targetFormat:"claude"},{id:"kimi-k3",name:"Kimi K3"},{id:"kimi-k2.7-code",name:"Kimi K2.7 Code"},{id:"kimi-k2.6",name:"Kimi K2.6"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"qwen3.6-plus",name:"Qwen 3.6 Plus",targetFormat:"claude"},{id:"qwen3.5-plus",name:"Qwen 3.5 Plus",targetFormat:"claude"}]},{id:"opencode",priority:40,hasFree:!0,alias:"oc",uiAlias:"oc",display:{name:"OpenCode Free",icon:"terminal",color:"#E87040",textIcon:"OC"},category:"free",noAuth:!0,transport:{baseUrl:"https://opencode.ai",headers:{"x-opencode-client":"desktop"},noAuth:!0},models:[{id:"x-preview-f-free",name:"Ox Alpha Free",targetFormat:"openai",supportedFormats:["openai"]},{id:"ox-alpha-free",name:"Ox Alpha Free",upstreamModelId:"x-preview-f-free",targetFormat:"openai",supportedFormats:["openai"]},{id:"ox-alpha",name:"Ox Alpha",upstreamModelId:"x-preview-f-free",targetFormat:"openai",supportedFormats:["openai"]},{id:"muse-spark-1.2-contributor-free",name:"Muse Spark 1.2 Contributor Free",targetFormat:"openai-responses",supportedFormats:["openai-responses"]},{id:"muse-spark-1.3-contributor-free",name:"Muse Spark 1.3 Contributor Free",targetFormat:"openai-responses",supportedFormats:["openai-responses"]},{id:"mimo-v2.5-free",name:"MiMo v2.5 Free",targetFormat:"openai",supportedFormats:["openai"]},{id:"hy3-free",name:"Hunyuan 3 Free",targetFormat:"openai",supportedFormats:["openai"]},{id:"nemotron-3.5-lightning-free",name:"Nemotron 3.5 Lightning Free",targetFormat:"openai",supportedFormats:["openai"]},{id:"nemotron-3-ultra-free",name:"Nemotron 3 Ultra Free",targetFormat:"openai",supportedFormats:["openai"]},{id:"laguna-s-2.1-free",name:"Laguna S 2.1 Free",targetFormat:"openai",supportedFormats:["openai"]}],modelsFetcher:{url:"https://opencode.ai/zen/v1/models",type:"opencode-free"},passthroughModels:!0},{id:"openmodel",priority:100,alias:"openmodel",uiAlias:"openmodel",display:{name:"OpenModel.ai",icon:"smart_toy",color:"#7C3AED",textIcon:"OM",website:"https://openmodel.ai",notice:{apiKeyUrl:"https://openmodel.ai/settings/api-keys",text:"OpenModel.ai uses the OpenAI Responses API format (/v1/responses). Compatible with Codex, Claude Code Responses mode."}},category:"apikey",transport:{baseUrl:"https://api.openmodel.ai/v1/chat/completions",format:"openai"},models:[],features:{usage:!0}},{id:"openrouter",priority:10,hasFree:!0,alias:"openrouter",display:{name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After 0 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"}},category:"freeTier",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://openrouter.ai/api/v1/chat/completions",thinkingFormat:"openai",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},models:[{id:"openai/text-embedding-3-large",name:"OpenAI Text Embedding 3 Large",kind:"embedding"},{id:"openai/text-embedding-3-small",name:"OpenAI Text Embedding 3 Small",kind:"embedding"},{id:"openai/text-embedding-ada-002",name:"OpenAI Text Embedding Ada 002",kind:"embedding"},{id:"qwen/qwen3-embedding-8b",name:"Qwen3 Embedding 8B",kind:"embedding"},{id:"perplexity/pplx-embed-v1-4b",name:"Perplexity Embed V1 4B",kind:"embedding"},{id:"perplexity/pplx-embed-v1-0.6b",name:"Perplexity Embed V1 0.6B",kind:"embedding"},{id:"nvidia/llama-nemotron-embed-vl-1b-v2:free",name:"NVIDIA Nemotron Embed VL 1B V2 (Free)",kind:"embedding"},{id:"openai/gpt-4o-mini-tts",name:"GPT-4o Mini TTS",kind:"tts"},{id:"openai/tts-1-hd",name:"TTS-1 HD",kind:"tts"},{id:"openai/tts-1",name:"TTS-1",kind:"tts"},{id:"openai/dall-e-3",name:"DALL-E 3 (via OpenRouter)",params:["size","quality","style","response_format"],kind:"image"},{id:"openai/gpt-image-1",name:"GPT Image 1 (via OpenRouter)",params:["n","size","quality","response_format"],kind:"image"},{id:"google/imagen-3.0-generate-002",name:"Imagen 3 (via OpenRouter)",params:["n","size"],kind:"image"},{id:"black-forest-labs/FLUX.1-schnell",name:"FLUX.1 Schnell (via OpenRouter)",params:["n","size"],kind:"image"},{id:"google/veo-3.1",name:"Veo 3.1 (via OpenRouter)",params:["duration","aspect_ratio","resolution"],kind:"video"},{id:"openai/sora-2-pro",name:"Sora 2 Pro (via OpenRouter)",params:["duration","aspect_ratio","resolution"],kind:"video"},{id:"bytedance/seedance-2.0",name:"Seedance 2.0 (via OpenRouter)",params:["duration","aspect_ratio","resolution"],kind:"video"}],serviceKinds:["llm","embedding","tts","imageToText","video"],ttsConfig:{baseUrl:"https://openrouter.ai/api/v1/chat/completions",defaultModel:"openai/gpt-4o-mini-tts",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},embeddingConfig:{baseUrl:"https://openrouter.ai/api/v1/embeddings",authType:"apikey",authHeader:"bearer",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},imageConfig:{baseUrl:"https://openrouter.ai/api/v1/images/generations",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},videoConfig:{baseUrl:"https://openrouter.ai/api/v1/videos",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"},passthroughModels:!0},{id:"ovh",priority:90,hasFree:!0,alias:"ovh",uiAlias:"ovh",display:{name:"OVH AI Endpoints",icon:"cloud",color:"#0078D4",textIcon:"OV",website:"https://ai.endpoints.ovh.com",notice:{text:"Free tier available with generous limits",apiKeyUrl:"https://ai.endpoints.ovh.com/settings/api-keys"}},category:"freeTier",transport:{baseUrl:"https://ai.endpoints.ovh.com/v1/chat/completions",validateUrl:"https://ai.endpoints.ovh.com/v1/models"},models:[{id:"ovh/mistral-7b-instruct",name:"Mistral 7B Instruct"},{id:"ovh/llama-3-8b-instruct",name:"Llama 3 8B Instruct"},{id:"ovh/llama-3-70b-instruct",name:"Llama 3 70B Instruct"},{id:"ovh/mixtral-8x7b-instruct",name:"Mixtral 8x7B Instruct"},{id:"ovh/codellama-7b-instruct",name:"CodeLlama 7B Instruct"},{id:"ovh/codellama-34b-instruct",name:"CodeLlama 34B Instruct"}],features:{usage:!0,usageApikey:!0}},{id:"perplexity-agent",priority:181,alias:"perplexity-agent",aliases:["pplx-agent","pplx-responses"],uiAlias:"pa",display:{name:"Perplexity Agent",icon:"travel_explore",color:"#20808D",textIcon:"PA",website:"https://www.perplexity.ai",notice:{text:"Perplexity Agent API exposes GPT, Claude, Gemini, Grok, GLM, Kimi, and Sonar models through one OpenAI-compatible Responses API.",apiKeyUrl:"https://www.perplexity.ai/settings/api"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.perplexity.ai/v1/responses",validateUrl:"https://api.perplexity.ai/v1/models",format:"openai-responses"},models:[{id:"perplexity/sonar",name:"Perplexity Sonar"},{id:"openai/gpt-5.5",name:"GPT-5.5"},{id:"openai/gpt-5.4",name:"GPT-5.4"},{id:"openai/gpt-5.4-mini",name:"GPT-5.4 Mini"},{id:"anthropic/claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"anthropic/claude-opus-4-8",name:"Claude Opus 4.8"},{id:"google/gemini-3.1-pro-preview",name:"Gemini 3.1 Pro"},{id:"xai/grok-4.20-reasoning",name:"Grok 4.20 Reasoning"},{id:"perplexity/glm-5.2",name:"GLM 5.2"},{id:"perplexity/kimi-k2.7-code",name:"Kimi K2.7 Code"},{id:"nvidia/nemotron-3-super-120b-a12b",name:"Nemotron 3 Super 120B"}],serviceKinds:["llm","webSearch"],searchViaChat:{defaultModel:"perplexity/sonar",endpoint:"https://api.perplexity.ai/v1/responses",pricingUrl:"https://docs.perplexity.ai/docs/agent-api/models"},modelsFetcher:{url:"https://api.perplexity.ai/v1/models",type:"openai"},passthroughModels:!0},{id:"perplexity-web",priority:220,alias:"perplexity-web",aliases:["pw"],uiAlias:"pw",display:{name:"Perplexity Web (Pro/Max)",icon:"search",color:"#20808D",textIcon:"PW",website:"https://www.perplexity.ai"},category:"webCookie",authType:"cookie",authHint:"Paste your __Secure-next-auth.session-token cookie value from perplexity.ai",transport:{baseUrl:"https://www.perplexity.ai/rest/sse/perplexity_ask",format:"perplexity-web",authType:"cookie"},models:[{id:"pplx-auto",name:"Perplexity Auto (Free)"},{id:"pplx-sonar",name:"Perplexity Sonar"},{id:"pplx-gpt",name:"GPT-5.4 (via Perplexity)"},{id:"pplx-gemini",name:"Gemini 3.1 Pro (via Perplexity)"},{id:"pplx-sonnet",name:"Claude Sonnet 4.6 (via Perplexity)"},{id:"pplx-opus",name:"Claude Opus 4.6 (via Perplexity)"},{id:"pplx-nemotron",name:"Nemotron 3 Super (via Perplexity)"}]},{id:"perplexity",priority:180,alias:"perplexity",aliases:["pplx"],uiAlias:"pplx",display:{name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai",notice:{apiKeyUrl:"https://www.perplexity.ai/settings/api"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.perplexity.ai/chat/completions",validateUrl:"https://api.perplexity.ai/models"},models:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}],serviceKinds:["llm","webSearch"],searchViaChat:{defaultModel:"sonar",endpoint:"https://api.perplexity.ai/chat/completions",pricingUrl:"https://docs.perplexity.ai/guides/pricing"}},{id:"playht",alias:"playht",display:{name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht",notice:{apiKeyUrl:"https://play.ht/studio/api-access"}},category:"apikey",authType:"apikey",serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.play.ht/api/v2/tts/stream",authType:"apikey",authHeader:"playht",format:"playht",models:[{id:"PlayDialog",name:"PlayDialog"},{id:"Play3.0-mini",name:"Play 3.0 Mini"}]},hidden:!0},{id:"poolside",priority:60,alias:"poolside",aliases:["ps"],uiAlias:"ps",display:{name:"Poolside",icon:"water_drop",color:"#0EA5E9",textIcon:"PS",website:"https://poolside.ai",notice:{apiKeyUrl:"https://platform.poolside.ai/api-keys"}},category:"freeTier",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://inference.poolside.ai/v1/chat/completions",validateUrl:"https://inference.poolside.ai/v1/models"},models:[{id:"poolside/laguna-s-2.1",name:"Laguna S 2.1"},{id:"poolside/laguna-xs-2.1",name:"Laguna XS 2.1"}]},{id:"qoder",priority:30,alias:"qd",uiAlias:"qd",display:{name:"Qoder",icon:"water_drop",color:"#EC4899",website:"https://qoder.com",notice:{signupUrl:"https://qoder.com"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,thinkingFormat:"qoder",authHint:"Personal Access Token (pt-...) từ https://qoder.com/account/integrations",transport:{baseUrl:"https://api3.qoder.sh/algo/api/v2/service/pro/sse/agent_chat_generation",forceStream:!0,headers:{},timeoutMs:12e4,usage:{url:"https://openapi.qoder.sh/api/v2/quota/usage"}},models:[{id:"ultimate",name:"Ultimate"},{id:"auto",name:"Auto"},{id:"performance",name:"Performance"},{id:"efficient",name:"Efficient"},{id:"lite",name:"Lite"},{id:"qmodel_38max",name:"Qwen3.8-Max"},{id:"qmodel_latest",name:"Qwen3.7-Max"},{id:"qmodel",name:"Qwen3.7-Plus"},{id:"kmodel_latest",name:"Kimi-K3"},{id:"kmodel",name:"Kimi-K2.7-Code"},{id:"gmodel",name:"GLM-5.3"},{id:"dmodel",name:"DeepSeek-V4-Pro"},{id:"dfmodel",name:"DeepSeek-V4-Flash"},{id:"mmodel",name:"MiniMax-M3"}],oauth:{openApiBaseUrl:"https://openapi.qoder.sh",centerBaseUrl:"https://center.qoder.sh",chatBaseUrl:"https://api3.qoder.sh",deviceTokenUrl:"https://openapi.qoder.sh/api/v1/deviceToken/poll",refreshUrl:"https://openapi.qoder.sh/api/v1/deviceToken/refresh",userInfoUrl:"https://openapi.qoder.sh/api/v1/userinfo",quotaUsageUrl:"https://openapi.qoder.sh/api/v2/quota/usage",loginUrl:"https://qoder.com/device/selectAccounts"},features:{usage:!0,usageApikey:!0},protocolProfile:"intl"},{id:"qoderwork-cn",priority:85,alias:"qdcn",uiAlias:"qdcn",display:{name:"QoderWork CN",icon:"water_drop",color:"#DB2777",website:"https://qoder.com.cn",notice:{signupUrl:"https://qoder.com.cn"}},category:"oauth",hasOAuth:!0,authModes:["oauth"],transport:{baseUrl:"https://gateway.qoder.com.cn/algo/api/v2/service/pro/sse/agent_chat_generation",forceStream:!0,headers:{},timeoutMs:12e4,usage:{url:"https://openapi.qoder.com.cn/api/v2/quota/usage"}},models:[{id:"auto",name:"Auto"},{id:"qmodel_preview",name:"Qwen3.8-Max-Preview"},{id:"qmodel_latest",name:"Qwen3.7-Max"},{id:"qmodel",name:"Qwen3.7-Plus"},{id:"q36fmodel",name:"Qwen3.6-Flash"},{id:"dmodel",name:"DeepSeek-V4-Pro"},{id:"dfmodel",name:"DeepSeek-V4-Flash"},{id:"gm51model",name:"GLM-5.2"},{id:"kmodel",name:"Kimi-K2.7-Code"},{id:"mmodel",name:"MiniMax-M2.7"}],oauth:{openApiBaseUrl:"https://openapi.qoder.com.cn",chatBaseUrl:"https://gateway.qoder.com.cn",deviceTokenUrl:"https://openapi.qoder.com.cn/api/v1/deviceToken/poll",refreshUrl:"https://openapi.qoder.com.cn/api/v1/deviceToken/refresh",userInfoUrl:"https://openapi.qoder.com.cn/api/v1/userinfo",loginUrl:"https://qoder.com.cn/device/selectAccounts",clientId:"1c5e33e1-364d-4ce6-b02c-acaa81274a5c",redirectUri:"qoder-work-cn://"},features:{usage:!0,profileRefresh:!0},protocolProfile:"cn-work"},{id:"reasonix",priority:121,alias:"reasonix",uiAlias:"reasonix",display:{name:"Reasonix IDE",icon:"psychology",color:"#8B5CF6",textIcon:"RX",website:"https://reasonix.ai",notice:{apiKeyUrl:"https://platform.reasonix.ai/api-keys"}},category:"apikey",transport:{baseUrl:"https://api.reasonix.ai/v1/chat/completions",validateUrl:"https://api.reasonix.ai/v1/models"},models:[{id:"reasonix-v1",name:"Reasonix V1"},{id:"reasonix-v1-reasoning",name:"Reasonix V1 Reasoning"}],features:{usage:!0,usageApikey:!0}},{id:"recraft",priority:70,alias:"recraft",display:{name:"Recraft",icon:"image",color:"#EC4899",textIcon:"RC",website:"https://recraft.ai",notice:{apiKeyUrl:"https://www.recraft.ai/profile/api"}},category:"apikey",authType:"apikey",transport:null,models:[{id:"recraftv3",name:"Recraft V3",params:["n","size","style"],kind:"image"},{id:"recraftv2",name:"Recraft V2",params:["n","size","style"],kind:"image"}],serviceKinds:["image"],imageConfig:{baseUrl:"https://external.api.recraft.ai/v1/images/generations"}},{id:"runwayml",priority:80,alias:"runwayml",aliases:["runway"],uiAlias:"runway",display:{name:"Runway ML",icon:"movie",color:"#000000",textIcon:"RW",website:"https://runwayml.com",notice:{apiKeyUrl:"https://dev.runwayml.com"}},category:"apikey",authType:"apikey",transport:null,models:[{id:"gen4_image",name:"Gen-4 Image",params:["size"],kind:"image"},{id:"gen4_image_turbo",name:"Gen-4 Image Turbo",params:["size"],kind:"image"},{id:"gen4_turbo",name:"Gen-4 Turbo",params:[],kind:"video"},{id:"gen3a_turbo",name:"Gen-3 Alpha Turbo",params:[],kind:"video"}],serviceKinds:["image"],imageConfig:{baseUrl:"https://api.dev.runwayml.com/v1"}},{id:"sambanova",alias:"samba",aliases:["sambanova-ai"],uiAlias:"samba",hidden:!0,display:{name:"SambaNova",icon:"memory",color:"#F97316",textIcon:"SN",website:"https://sambanova.ai",notice:{apiKeyUrl:"https://cloud.sambanova.ai/apis"}},category:"apikey",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://api.sambanova.ai/v1/chat/completions",validateUrl:"https://api.sambanova.ai/v1/models"},models:[{id:"MiniMax-M2.7",name:"MiniMax M2.7",contextLength:196608}]},{id:"sdwebui",priority:110,alias:"sdwebui",display:{name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},category:"apikey",transport:null,models:[{id:"stable-diffusion-v1-5",name:"Stable Diffusion v1.5",params:["n","size"],kind:"image"},{id:"sdxl-base-1.0",name:"SDXL Base 1.0",params:["n","size"],kind:"image"}],serviceKinds:["image"],imageConfig:{baseUrl:"http://localhost:7860/sdapi/v1/txt2img"}},{id:"searchapi",alias:"searchapi",display:{name:"SearchAPI",icon:"search",color:"#0EA5A4",textIcon:"SA",website:"https://www.searchapi.io",notice:{apiKeyUrl:"https://www.searchapi.io/dashboard"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://www.searchapi.io/api/v1/search",method:"GET",authType:"apikey",authHeader:"api_key",costPerQuery:.004,freeMonthlyQuota:100,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},{id:"searxng",alias:"searxng",display:{name:"SearXNG",icon:"saved_search",color:"#3B82F6",textIcon:"SX",website:"https://docs.searxng.org"},category:"freeTier",authType:"none",serviceKinds:["webSearch"],noAuth:!0,searchConfig:{baseUrl:A,method:"GET",authType:"none",authHeader:"none",costPerQuery:0,freeMonthlyQuota:999999,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:50,timeoutMs:1e4,cacheTTLMs:18e4}},{id:"selfhosted-embedding",priority:50,hasFree:!0,alias:"selfhosted-embedding",display:{name:"Self-hosted Embedding",icon:"cloud",color:"#ffffffff",textIcon:"SE",website:"https://github.com/ggml-org/llama.cpp"},category:"apikey",baseUrlField:{label:"Base URL",placeholder:"http://localhost:8080/v1",help:"OpenAI base URL — /embeddings is appended."},auth:{apiKey:{text:"Set providerSpecificData.baseUrl to the OpenAI base URL, e.g. http://host:8080/v1 — /embeddings is appended. The API key is not checked by local servers; any value works."}},models:[{id:"embedding",name:"Self-hosted embedding model",kind:"embedding"}],serviceKinds:["embedding"],embeddingConfig:{baseUrl:"http://localhost:8080/v1/embeddings",authType:"apikey",authHeader:"bearer"}},{id:"selfhosted-stt",priority:50,hasFree:!0,alias:"selfhosted-stt",display:{name:"Self-hosted STT",icon:"cloud",color:"#ffffffff",textIcon:"ST",website:"https://github.com/ggml-org/whisper.cpp"},category:"apikey",baseUrlField:{label:"Base URL",placeholder:"http://localhost:8080/v1/audio/transcriptions",help:"Full transcriptions endpoint."},auth:{apiKey:{text:"Set providerSpecificData.baseUrl to the full transcriptions URL, e.g. http://host:8080/v1/audio/transcriptions. The API key is not checked by local servers; any value works."}},models:[{id:"whisper-1",name:"Whisper (self-hosted)",params:["language","response_format","temperature","prompt"],kind:"stt"}],serviceKinds:["stt"],sttConfig:{baseUrl:"http://localhost:8080/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"openai"}},{id:"selfhosted-tts",priority:50,hasFree:!0,alias:"selfhosted-tts",display:{name:"Self-hosted TTS",icon:"cloud",color:"#ffffffff",textIcon:"TT",website:"https://github.com/remsky/Kokoro-FastAPI"},category:"apikey",baseUrlField:{label:"Base URL",placeholder:"http://localhost:8880",help:"Server root — /v1/audio/speech is appended."},auth:{apiKey:{text:"Set providerSpecificData.baseUrl to the server root, e.g. http://host:8080 — /v1/audio/speech is appended. The API key is not checked by local servers; any value works."}},models:[{id:"kokoro",name:"Kokoro (self-hosted)",params:["voice","response_format","speed"],kind:"tts"}],serviceKinds:["tts"],ttsConfig:{baseUrl:"http://localhost:8880",defaultModel:"kokoro",authType:"apikey",format:"openai-speech"}},{id:"serper",alias:"serper",display:{name:"Serper",icon:"search",color:"#4F46E5",textIcon:"SP",website:"https://serper.dev",notice:{apiKeyUrl:"https://serper.dev/api-key"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://google.serper.dev",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.001,freeMonthlyQuota:2500,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},{id:"siliconflow",priority:250,alias:"siliconflow",display:{name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com",notice:{apiKeyUrl:"https://cloud.siliconflow.com/account/ak"}},category:"apikey",transport:{baseUrl:"https://api.siliconflow.com/v1/chat/completions",validateUrl:"https://api.siliconflow.com/v1/models",thinkingFormat:"openai"},models:[{id:"deepseek-ai/DeepSeek-V4-Pro",name:"DeepSeek V4 Pro"},{id:"deepseek-ai/DeepSeek-V4-Flash",name:"DeepSeek V4 Flash"},{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.2-Exp",name:"DeepSeek V3.2 Exp"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-V3.1-Terminus",name:"DeepSeek V3.1 Terminus"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3.5-397B-A17B",name:"Qwen 3.5 397B A17B"},{id:"Qwen/Qwen3.5-122B-A10B",name:"Qwen 3.5 122B A10B"},{id:"zai-org/GLM-5.1",name:"GLM 5.1"},{id:"zai-org/GLM-5",name:"GLM 5"},{id:"moonshotai/Kimi-K2.6",name:"Kimi K2.6"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"MiniMaxAI/MiniMax-M2.5",name:"MiniMax M2.5"},{id:"inclusionAI/Ling-flash-2.0",name:"Ling Flash 2.0"}]},{id:"stability-ai",priority:60,alias:"stability-ai",aliases:["stability"],uiAlias:"stability",display:{name:"Stability AI",icon:"image",color:"#8B5CF6",textIcon:"SA",website:"https://stability.ai",notice:{apiKeyUrl:"https://platform.stability.ai/account/keys"}},category:"apikey",authType:"apikey",transport:null,models:[{id:"stable-image-ultra",name:"Stable Image Ultra",params:["size"],kind:"image"},{id:"stable-image-core",name:"Stable Image Core",params:["size","style"],kind:"image"},{id:"sd3.5-large",name:"Stable Diffusion 3.5 Large",params:["size"],kind:"image"},{id:"sd3.5-large-turbo",name:"Stable Diffusion 3.5 Large Turbo",params:["size"],kind:"image"},{id:"sd3.5-medium",name:"Stable Diffusion 3.5 Medium",params:["size"],kind:"image"}],serviceKinds:["image"],imageConfig:{baseUrl:"https://api.stability.ai/v2beta/stable-image/generate"}},{id:"tavily",alias:"tavily",display:{name:"Tavily",icon:"search",color:"#5B21B6",textIcon:"TV",website:"https://tavily.com",notice:{apiKeyUrl:"https://app.tavily.com/home"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch","webFetch"],searchConfig:{baseUrl:"https://api.tavily.com/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.008,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5},fetchConfig:{baseUrl:"https://api.tavily.com/extract",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.008,freeMonthlyQuota:1e3,formats:["markdown","text"],maxCharacters:1e5,timeoutMs:15e3}},{id:"tencent",alias:"hunyuan",aliases:["hunyuan","tencent-hunyuan"],uiAlias:"hunyuan",display:{name:"Tencent Hunyuan",icon:"cloud",color:"#0052D9",textIcon:"HY",website:"https://cloud.tencent.com/product/hunyuan",notice:{apiKeyUrl:"https://console.cloud.tencent.com/hunyuan/api-key"}},category:"apikey",authType:"apikey",authModes:["apikey"],transport:{baseUrl:"https://api.hunyuan.cloud.tencent.com/v1/chat/completions",validateUrl:"https://api.hunyuan.cloud.tencent.com/v1/models"},models:[{id:"hunyuan-turbos-latest",name:"Hunyuan TurboS Latest",contextLength:2e5},{id:"hunyuan-t1-latest",name:"Hunyuan T1 Latest",contextLength:256e3}]},{id:"together",priority:60,alias:"together",display:{name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",notice:{apiKeyUrl:"https://api.together.xyz/settings/api-keys"}},category:"apikey",authType:"apikey",transport:{baseUrl:"https://api.together.xyz/v1/chat/completions",validateUrl:"https://api.together.xyz/v1/models"},models:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"},{id:"BAAI/bge-large-en-v1.5",name:"BGE Large EN v1.5",kind:"embedding"},{id:"togethercomputer/m2-bert-80M-8k-retrieval",name:"M2 BERT 80M 8K",kind:"embedding"}],serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.together.xyz/v1/embeddings"}},{id:"tokenrouter",alias:"tokenrouter",aliases:["tr"],uiAlias:"tokenrouter",display:{name:"TokenRouter",icon:"hub",color:"#0EA5E9",textIcon:"TR",website:"https://www.tokenrouter.com",notice:{text:"OpenAI-compatible gateway. 300+ models (OpenAI, Claude, Gemini, Qwen, DeepSeek, Kimi, GLM, dsb).",apiKeyUrl:"https://www.tokenrouter.com"}},category:"apikey",thinkingConfig:{options:["low","medium","high","xhigh","max"],defaultMode:"high"},transport:{baseUrl:"https://api.tokenrouter.com/v1/chat/completions",validateUrl:"https://api.tokenrouter.com/v1/models",thinkingFormat:"tokenrouter"},models:[{id:"anthropic/claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"anthropic/claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"anthropic/claude-opus-4.8",name:"Claude Opus 4.8"},{id:"anthropic/claude-opus-4.8-fast",name:"Claude Opus 4.8 Fast"},{id:"openai/gpt-5.4",name:"Gpt 5.4"},{id:"openai/gpt-5.4-mini",name:"Gpt 5.4 Mini"},{id:"openai/gpt-5.4-pro",name:"Gpt 5.4 Pro"},{id:"openai/gpt-5.5",name:"Gpt 5.5"},{id:"openai/gpt-5.6-sol",name:"Gpt 5.6 Sol"},{id:"google/gemini-3.5-flash",name:"Gemini 3.5 Flash"},{id:"google/gemini-3.6-flash",name:"Gemini 3.6 Flash"},{id:"deepseek/deepseek-v4-flash",name:"Deepseek V4 Flash"},{id:"deepseek/deepseek-v4-pro",name:"Deepseek V4 Pro"},{id:"qwen/qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen/qwen3.7-max",name:"Qwen3.7 Max"},{id:"qwen/qwen3.8-max",name:"Qwen3.8 Max"},{id:"moonshotai/kimi-k2.7-code",name:"Kimi K2.7 Code"},{id:"moonshotai/kimi-k3-free",name:"Kimi K3 Free"},{id:"z-ai/glm-5.3-free",name:"Glm 5.3 Free"},{id:"z-ai/glm-5.2",name:"Glm 5.2"},{id:"z-ai/glm-5-turbo",name:"Glm 5 Turbo"},{id:"x-ai/grok-4.5",name:"Grok 4.5"}],serviceKinds:["llm","embedding","image"],embeddingConfig:{baseUrl:"https://api.tokenrouter.com/v1/embeddings",authType:"apikey",authHeader:"bearer"},imageConfig:{baseUrl:"https://api.tokenrouter.com/v1/images/generations"},modelsFetcher:{url:"https://api.tokenrouter.com/v1/models",type:"openai"},passthroughModels:!0},{id:"topaz",alias:"topaz",display:{name:"Topaz",icon:"image",color:"#059669",textIcon:"TP",website:"https://topazlabs.com",notice:{apiKeyUrl:"https://topazlabs.com/account"}},category:"apikey",authType:"apikey",serviceKinds:["image"]},{id:"tortoise",alias:"tortoise",display:{name:"Tortoise TTS",icon:"record_voice_over",color:"#7C3AED",textIcon:"TT",website:"https://github.com/neonbjb/tortoise-tts"},category:"freeTier",authType:"none",serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"http://localhost:5000/api/tts",authType:"none",authHeader:"none",format:"tortoise",models:[{id:"tortoise-v2",name:"Tortoise v2"}]},hidden:!0},{id:"venice",priority:115,alias:"venice",aliases:["vn"],uiAlias:"venice",display:{name:"Venice AI",icon:"shield",color:"#DC2626",textIcon:"VE",website:"https://venice.ai",notice:{text:"OpenAI-compatible. Private inference + uncensored models (Venice Uncensored, GLM, Qwen, DeepSeek, Llama).",apiKeyUrl:"https://venice.ai/settings/api"}},category:"apikey",transport:{baseUrl:"https://api.venice.ai/api/v1/chat/completions",validateUrl:"https://api.venice.ai/api/v1/models",thinkingFormat:"openai"},models:[{id:"venice-uncensored-1-2",name:"Venice Uncensored 1.2"},{id:"zai-org-glm-5",name:"GLM-5"},{id:"qwen3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B Instruct"},{id:"qwen3-coder-480b-a35b-instruct-turbo",name:"Qwen3 Coder 480B A35B Turbo"},{id:"qwen3-vl-235b-a22b",name:"Qwen3 VL 235B A22B"},{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"hermes-3-llama-3.1-405b",name:"Hermes 3 Llama 3.1 405B"},{id:"mistral-small-3-2-24b-instruct",name:"Mistral Small 3.2 24B"},{id:"text-embedding-3-large",name:"Text Embedding 3 Large",kind:"embedding"},{id:"text-embedding-bge-m3",name:"BGE-M3 Embedding",kind:"embedding"},{id:"text-embedding-qwen3-8b",name:"Qwen3 8B Embedding",kind:"embedding"},{id:"venice-sd35",name:"Venice SD3.5",params:["n","size"],kind:"image"},{id:"flux-2-pro",name:"FLUX.2 Pro",params:["n","size"],kind:"image"},{id:"gpt-image-2",name:"GPT Image 2 (via Venice)",params:["n","size","quality"],kind:"image"}],serviceKinds:["llm","embedding","image"],embeddingConfig:{baseUrl:"https://api.venice.ai/api/v1/embeddings",authType:"apikey",authHeader:"bearer"},imageConfig:{baseUrl:"https://api.venice.ai/api/v1/images/generations"},modelsFetcher:{url:"https://api.venice.ai/api/v1/models",type:"openai"},passthroughModels:!0},{id:"vercel-ai-gateway",priority:160,alias:"vercel-ai-gateway",aliases:["vercel"],uiAlias:"vercel",display:{name:"Vercel AI Gateway",icon:"deployed_code",color:"#111827",textIcon:"VG",website:"https://vercel.com/ai-gateway",notice:{text:"Unified OpenAI-compatible endpoint from Vercel. Use your AI Gateway API key, then pick models with provider/model IDs like anthropic/claude-sonnet-4.6 or openai/gpt-5.4.",apiKeyUrl:"https://vercel.com/dashboard/~/ai-gateway"}},category:"apikey",transport:{baseUrl:"https://ai-gateway.vercel.sh/v1/chat/completions",thinkingFormat:"openai",retry:{429:2},usage:{url:"https://ai-gateway.vercel.sh/v1/credits"}},serviceKinds:["llm","embedding","image","imageToText","webSearch"],embeddingConfig:{baseUrl:"https://ai-gateway.vercel.sh/v1/embeddings"},imageConfig:{baseUrl:"https://ai-gateway.vercel.sh/v1/images/generations"},searchViaChat:{defaultModel:"openai/gpt-4o-mini",pricingUrl:"https://vercel.com/docs/ai-gateway/pricing"},modelsFetcher:{url:"https://ai-gateway.vercel.sh/v1/models",type:"openai"},passthroughModels:!0,features:{usage:!0,usageApikey:!0}},{id:"vertex-partner",priority:260,alias:"vertex-partner",aliases:["vxp"],uiAlias:"vxp",display:{name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models",notice:{apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}},category:"apikey",transport:{baseUrl:"https://aiplatform.googleapis.com"},models:[{id:"deepseek-ai/deepseek-v3.2-maas",name:"DeepSeek V3.2 (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-thinking-maas",name:"Qwen3 Next 80B Thinking (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-instruct-maas",name:"Qwen3 Next 80B Instruct (Vertex)"},{id:"zai-org/glm-5-maas",name:"GLM-5 (Vertex)"}]},{id:"vertex",priority:40,alias:"vertex",aliases:["vx"],uiAlias:"vx",display:{name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}},category:"freeTier",regions:[{id:"us-central1",label:"us-central1 (Iowa)"},{id:"us-east4",label:"us-east4 (Northern Virginia)"},{id:"us-west1",label:"us-west1 (Oregon)"},{id:"europe-west1",label:"europe-west1 (Belgium)"},{id:"europe-west4",label:"europe-west4 (Netherlands)"},{id:"asia-east1",label:"asia-east1 (Taiwan)"},{id:"asia-northeast1",label:"asia-northeast1 (Tokyo)"},{id:"asia-southeast1",label:"asia-southeast1 (Singapore)"},{id:"global",label:"global (Global)"}],defaultRegion:"us-central1",transport:{baseUrl:"https://aiplatform.googleapis.com",format:"vertex"},models:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"veo-3.1-generate-preview",name:"Veo 3.1 (Preview)",params:["duration","aspect_ratio","resolution","negative_prompt","seed","storage_uri","generate_audio"],kind:"video"},{id:"veo-3.1-fast-generate-preview",name:"Veo 3.1 Fast (Preview)",params:["duration","aspect_ratio","resolution","negative_prompt","seed","storage_uri","generate_audio"],kind:"video"},{id:"veo-3.0-generate-001",name:"Veo 3",params:["duration","aspect_ratio","resolution","negative_prompt","seed","storage_uri","generate_audio"],kind:"video"},{id:"veo-2.0-generate-001",name:"Veo 2",params:["duration","aspect_ratio","negative_prompt","seed","storage_uri"],kind:"video"}],serviceKinds:["llm","imageToText","video"],videoConfig:{baseUrl:"https://aiplatform.googleapis.com"}},{id:"volcengine-ark",priority:270,alias:"volcengine-ark",aliases:["ark"],uiAlias:"ark",display:{name:"Volcengine Ark",icon:"cloud",color:"#1677FF",textIcon:"ARK",website:"https://ark.cn-beijing.volces.com",notice:{apiKeyUrl:"https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey"}},category:"apikey",transport:{baseUrl:"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",headers:{}},models:[{id:"Doubao-Seed-2.0-Code",name:"Doubao-Seed-2.0-Code"},{id:"Doubao-Seed-2.0-pro",name:"Doubao-Seed-2.0-pro"},{id:"Doubao-Seed-2.0-lite",name:"Doubao-Seed-2.0-lite"},{id:"Doubao-Seed-Code",name:"Doubao-Seed-Code"},{id:"DeepSeek-V4-Flash",name:"DeepSeek-V4-Flash"},{id:"DeepSeek-V4-Pro",name:"DeepSeek-V4-Pro"},{id:"GLM-5.1",name:"GLM-5.1"},{id:"MiniMax-M2.7",name:"MiniMax-M2.7"},{id:"Kimi-K2.6",name:"Kimi-K2.6"}]},{id:"voyage-ai",priority:40,alias:"voyage-ai",uiAlias:"voyage",display:{name:"Voyage AI",icon:"data_array",color:"#0EA5E9",textIcon:"VG",website:"https://www.voyageai.com",notice:{apiKeyUrl:"https://dash.voyageai.com/api-keys"}},category:"apikey",authType:"apikey",transport:null,models:[{id:"voyage-3-large",name:"Voyage 3 Large",kind:"embedding"},{id:"voyage-3.5",name:"Voyage 3.5",kind:"embedding"},{id:"voyage-3.5-lite",name:"Voyage 3.5 Lite",kind:"embedding"},{id:"voyage-code-3",name:"Voyage Code 3",kind:"embedding"},{id:"voyage-finance-2",name:"Voyage Finance 2",kind:"embedding"},{id:"voyage-law-2",name:"Voyage Law 2",kind:"embedding"},{id:"voyage-multilingual-2",name:"Voyage Multilingual 2",kind:"embedding"}],serviceKinds:["embedding"],embeddingConfig:{baseUrl:"https://api.voyageai.com/v1/embeddings"}},{id:"xai",priority:280,alias:"xai",display:{name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai",notice:{apiKeyUrl:"https://console.x.ai"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,transport:{baseUrl:"https://api.x.ai/v1/chat/completions",validateUrl:"https://api.x.ai/v1/models",responsesUrl:"https://api.x.ai/v1/responses",clientId:"b1a00492-073a-47ea-816f-4c329264a828",tokenUrl:"https://auth.x.ai/oauth2/token",refreshUrl:"https://auth.x.ai/oauth2/token"},models:[{id:"grok-4.6",name:"Grok 4.6"},{id:"grok-4.5",name:"Grok 4.5"},{id:"grok-build-0.1",name:"Grok Build 0.1"},{id:"grok-4.3",name:"Grok 4.3"},{id:"grok-4.20-0309-reasoning",name:"Grok 4.20 0309 Reasoning"},{id:"grok-4.20-0309-non-reasoning",name:"Grok 4.20 0309 Non-Reasoning"},{id:"grok-4.20-multi-agent-0309",name:"Grok 4.20 Multi-Agent 0309"},{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"},{id:"grok-2-image-1212",name:"Grok 2 Image",params:["n","response_format"],kind:"image"},{id:"grok-imagine-image",name:"Grok Imagine Image",params:["n","response_format"],kind:"image"},{id:"grok-imagine-image-quality",name:"Grok Imagine Image Quality",params:["n","response_format"],kind:"image"},{id:"grok-imagine-video",name:"Grok Imagine Video",params:["duration","aspect_ratio","resolution"],kind:"video"},{id:"grok-imagine-video-1.5",name:"Grok Imagine Video 1.5",params:[],kind:"video"}],serviceKinds:["llm","imageToText","webSearch","image","video"],imageConfig:{baseUrl:"https://api.x.ai/v1/images/generations",bodyFields:["model","prompt","n","response_format"]},videoConfig:{baseUrl:"https://api.x.ai/v1/videos"},searchViaChat:{defaultModel:"grok-4.20-reasoning",endpoint:"https://api.x.ai/v1/responses",pricingUrl:"https://x.ai/api#pricing"}},{id:"xiaomi-mimo",priority:290,alias:"xiaomi-mimo",aliases:["mimo","mimo-desktop","xmd"],uiAlias:"mimo",display:{name:"Xiaomi MiMo",icon:"smart_toy",color:"#FF6900",textIcon:"XM",website:"https://xiaomimimo.com",notice:{apiKeyUrl:"https://platform.xiaomimimo.com/console/api-keys",signupUrl:"https://mimo.xiaomimimo.com/desktop/invite/"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,serviceKinds:["llm","tts"],transport:{baseUrl:"https://api.xiaomimimo.com/v1/chat/completions",validateUrl:"https://api.xiaomimimo.com/v1/models"},transports:[{format:"openai",baseUrl:"https://api.xiaomimimo.com/v1/chat/completions",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},{format:"claude",baseUrl:"https://api.xiaomimimo.com/anthropic/v1/messages",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw"}}],models:[{id:"mimo-x-pro-preview",name:"MiMo-X-Pro-Preview",upstreamModelId:"xiaomi/mimo-x-pro-preview",supportedFormats:["openai"]},{id:"mimo-x-flash-preview",name:"MiMo-X-Flash-Preview",upstreamModelId:"xiaomi/mimo-x-flash-preview",supportedFormats:["openai"]},{id:"mimo-v2.5-pro",name:"MiMo V2.5 Pro"},{id:"mimo-v2.5",name:"MiMo V2.5"},{id:"mimo-v2-omni",name:"MiMo V2 Omni"},{id:"mimo-v2-flash",name:"MiMo V2 Flash"},{id:"mimo-v2.5-tts",name:"MiMo V2.5 TTS",kind:"tts"}],ttsConfig:{baseUrl:"https://api.xiaomimimo.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",format:"xiaomi-mimo-tts"},features:{usage:!0,usageApikey:!0},oauth:{custom:!0,authorizeUrl:"https://platform.xiaomimimo.com/authorize",callbackParam:"u",kn:"mimocode"}},{id:"xiaomi-tokenplan",priority:300,alias:"xiaomi-tokenplan",aliases:["xmtp"],uiAlias:"xmtp",display:{name:"Xiaomi MiMo (Token Plan)",icon:"smart_toy",color:"#FF6700",textIcon:"XT",website:"https://mimo.xiaomi.com",notice:{text:"Xiaomi MiMo Token Plan subscription (API key starts with tp-). Token Plan keys are cluster-specific — select the region matching your subscription.",apiKeyUrl:"https://mimo.xiaomi.com"}},category:"apikey",hasProviderSpecificData:!0,regions:[{id:"sgp",label:"Singapore (新加坡)"},{id:"cn",label:"China (中国大陆)"},{id:"ams",label:"Amsterdam (阿姆斯特丹)"}],defaultRegion:"sgp",transport:{baseUrl:"https://token-plan-sgp.xiaomimimo.com/v1/chat/completions",regions:{sgp:"https://token-plan-sgp.xiaomimimo.com/v1",cn:"https://token-plan-cn.xiaomimimo.com/v1",ams:"https://token-plan-ams.xiaomimimo.com/v1"},defaultRegion:"sgp"},transports:[{format:"openai",auth:{combined:!0,header:"Authorization",scheme:"bearer"}},{format:"claude",headers:{...g},auth:{combined:!0,header:"x-api-key",scheme:"raw"}}],models:[{id:"mimo-v2.5-pro",name:"MiMo V2.5 Pro"},{id:"mimo-v2.5-pro-claude",name:"MiMo V2.5 Pro (Claude Native)",targetFormat:"claude",upstreamModelId:"mimo-v2.5-pro"},{id:"mimo-v2.5",name:"MiMo V2.5"},{id:"mimo-v2-pro",name:"MiMo V2 Pro"},{id:"mimo-v2-omni",name:"MiMo V2 Omni"},{id:"mimo-v2-tts",name:"MiMo V2 TTS"},{id:"mimo-v2.5-tts",name:"MiMo V2.5 TTS"},{id:"mimo-v2.5-tts-voiceclone",name:"MiMo V2.5 TTS Voice Clone"},{id:"mimo-v2.5-tts-voicedesign",name:"MiMo V2.5 TTS Voice Design"}]},{id:"xquik",alias:"xquik",display:{name:"Xquik",icon:"tag",color:"#5C3327",textIcon:"XQ",website:"https://docs.xquik.com/api-reference/x/search-tweets",notice:{apiKeyUrl:"https://xquik.com",text:"Searches public X posts. Billing uses 1 Xquik credit per returned post."}},category:"apikey",authType:"apikey",serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://xquik.com/api/v1/x/tweets/search",validateUrl:"https://xquik.com/api/v1/credits",method:"GET",authType:"apikey",authHeader:"x-api-key",searchTypes:["x"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:6e4,creditsPerResult:1}},{id:"youcom",alias:"youcom",display:{name:"You.com Search",icon:"search",color:"#7C3AED",textIcon:"YC",website:"https://you.com",notice:{apiKeyUrl:"https://api.you.com"}},category:"apikey",authType:"apikey",serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://ydc-index.io/v1/search",method:"GET",authType:"apikey",authHeader:"x-api-key",costPerQuery:.005,freeMonthlyQuota:0,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},{id:"zed",priority:10,alias:"zd",uiAlias:"zd",hidden:!0,display:{name:"Zed",icon:"code",color:"#A855F7",website:"https://zed.dev",notice:{signupUrl:"https://zed.dev/native_app_signin"}},category:"oauth",authType:"oauth",hasOAuth:!0,transport:{baseUrl:"https://cloud.zed.dev/completions",format:"openai",forceStream:!0,headers:{"content-type":"application/json"},auth:{combined:!0,header:"Authorization",scheme:"<user_id> <access_token>"},usage:{url:"https://cloud.zed.dev/client/users/me"},modelsUrl:"https://cloud.zed.dev/models"},models:[],passthroughModels:!0,oauth:{authorizeUrl:"https://zed.dev/native_app_signin",platform:"zed",rsaKeyExchange:!0},features:{usage:!0}}],C="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.";Object.fromEntries(B.filter(a=>a.display).map(a=>{let b;return[a.id,"RISK_NOTICE"===(b=a.display).deprecationNotice?{...b,deprecationNotice:C}:b]}));let D=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","credentialFallback","modelsFetcher","mediaPriority","hiddenKinds"],E=a=>Object.fromEntries(B.filter(b=>b.category===a).map(a=>[a.id,function(a){let b={};for(let c of(a.media&&Object.assign(b,a.media),D))void 0!==a[c]&&(b[c]=a[c]);let c={...a.display||{}};return"RISK_NOTICE"===c.deprecationNotice&&(c.deprecationNotice=C),{...c,id:a.id,alias:a.uiAlias||a.alias,...a.hidden?{hidden:!0}:{},...b,...void 0!==a.priority?{priority:a.priority}:{},...a.hasFree?{hasFree:!0}:{},...a.thinkingConfig?{thinkingConfig:a.thinkingConfig}:{},...a.regions?{regions:a.regions,defaultRegion:a.defaultRegion}:{},...a.hasProviderSpecificData?{hasProviderSpecificData:!0}:{},...a.baseUrlField?{baseUrlField:a.baseUrlField}:{},...a.noAuth?{noAuth:!0}:{},...a.passthroughModels?{passthroughModels:!0}:{},...a.hasOAuth?{hasOAuth:!0}:{},...a.models?{models:a.models}:{},...a.authModes?{authModes:a.authModes}:{},...a.features?{features:{...a.features}}:{},...a.authType?{authType:a.authType}:{},...a.authHint?{authHint:a.authHint}:{}}}(a)])),F=E("free"),G=E("freeTier"),H=E("oauth"),I=E("apikey"),J=E("webCookie"),K={...F,...G,...H,...I,...J};function L(a){if(null==a||"object"!=typeof a)return null;let b={};return(Array.isArray(a.providers)&&(b.providers=a.providers.filter(a=>"string"==typeof a&&""!==a.trim())),Array.isArray(a.models)&&(b.models=a.models.filter(a=>"string"==typeof a&&a.includes("/"))),"providers"in b||"models"in b)?b:null}function M(a){if(!a)return null;try{let b=JSON.parse(a);return b&&"object"==typeof b?b:null}catch{return null}}function N(a){if(!Array.isArray(a))return null;let b=[...new Set(a.filter(a=>"string"==typeof a&&a.trim()).map(a=>a.trim()))];return b.length?b:null}function O(a){if(null==a||""===a)return null;let b=Number(a);if(!Number.isSafeInteger(b)||b<1)throw Error("tokenLimit must be a positive integer");return b}function P(a){if(null==a||""===a)return null;let b=new Date(a);if(Number.isNaN(b.getTime()))throw Error("expiresAt must be a valid date");return b.toISOString()}function Q(a){return a?{id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive||!0===a.isActive,expiresAt:a.expiresAt||null,tokenLimit:null==a.tokenLimit?null:Number(a.tokenLimit),tokensUsed:Number(a.tokensUsed||0),tokensReserved:Number(a.tokensReserved||0),allowedModels:(()=>{try{return a.allowedModels?JSON.parse(a.allowedModels):null}catch{return null}})(),createdAt:a.createdAt,scope:M(a.scope)}:null}async function R(){return(await (0,e.c)()).all("SELECT * FROM apiKeys ORDER BY createdAt ASC").map(Q)}async function S(a){return Q((await (0,e.c)()).get("SELECT * FROM apiKeys WHERE id = ?",[a]))}async function T(a){return Q((await (0,e.c)()).get("SELECT * FROM apiKeys WHERE key = ?",[a]))}async function U(a,b,f={}){if(!b)throw Error("machineId is required");let g=await (0,e.c)(),{generateApiKeyWithMachine:h}=await c.e(241).then(c.bind(c,22622)),i=h(b),j=L(f&&"object"==typeof f&&"scope"in f?f.scope:f&&("providers"in f||"models"in f)?f:null),k={id:(0,d.A)(),name:a,key:i.key,machineId:b,isActive:!0,expiresAt:P(f?.expiresAt),tokenLimit:O(f?.tokenLimit),tokensUsed:0,tokensReserved:0,allowedModels:N(f?.allowedModels),createdAt:new Date().toISOString(),scope:j};return g.run("INSERT INTO apiKeys(id, key, name, machineId, isActive, expiresAt, tokenLimit, tokensUsed, tokensReserved, allowedModels, createdAt, scope) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[k.id,k.key,k.name,k.machineId,1,k.expiresAt,k.tokenLimit,0,0,k.allowedModels?JSON.stringify(k.allowedModels):null,k.createdAt,j?JSON.stringify(j):null]),k}async function V(a,b){let c=await (0,e.c)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!e)return;let f={...Q(e),...b};if(void 0!==b.allowedModels&&(f.allowedModels=N(b.allowedModels)),void 0!==b.expiresAt&&(f.expiresAt=P(b.expiresAt)),void 0!==b.tokenLimit&&(f.tokenLimit=O(b.tokenLimit)),void 0!==b.tokenLimitIncrement){let a=O(b.tokenLimitIncrement);if(null==f.tokenLimit)throw Error("Cannot add tokens to an unlimited key; set a token limit first");f.tokenLimit+=a}"scope"in b&&(f.scope=L(b.scope)),c.run("UPDATE apiKeys SET key = ?, name = ?, machineId = ?, isActive = ?, expiresAt = ?, tokenLimit = ?, tokensUsed = ?, tokensReserved = ?, allowedModels = ?, scope = ? WHERE id = ?",[f.key,f.name,f.machineId,+!!f.isActive,f.expiresAt||null,null==f.tokenLimit?null:Number(f.tokenLimit),Number(f.tokensUsed||0),Number(f.tokensReserved||0),f.allowedModels?JSON.stringify(f.allowedModels):null,f.scope?JSON.stringify(f.scope):null,a]),d=f}),d}async function W(a){let b=await (0,e.c)();return(b.run("DELETE FROM apiKeys WHERE id = ?",[a])?.changes??0)>0}async function X(a){let b=await T(a);return!!b&&b.isActive&&(!b.expiresAt||new Date(b.expiresAt).getTime()>Date.now())}async function Y(a){return T(a)}function Z(a){switch(a){case"daily":return 864e5;case"weekly":return 6048e5;case"monthly":return 2592e6;default:return null}}async function $(a,b){b&&!(b<=0)&&await T(a)&&(await (0,e.c)()).run("UPDATE apiKeys SET tokensUsed = tokensUsed + ? WHERE key = ?",[Math.round(1e4*b),a])}async function _(a,b){let c=await T(a);if(c?.tokenLimit==null)return{ok:!0,reserved:0};let d=Math.max(0,Math.floor(Number(b)||0)),f=await (0,e.c)(),g=!1;return f.transaction(()=>{let b=f.get("SELECT tokenLimit, tokensUsed, tokensReserved FROM apiKeys WHERE key = ? AND isActive = 1",[a]);!b||null==b.tokenLimit||Number(b.tokensUsed||0)+Number(b.tokensReserved||0)+d>Number(b.tokenLimit)||(f.run("UPDATE apiKeys SET tokensReserved = tokensReserved + ? WHERE key = ?",[d,a]),g=!0)}),g?{ok:!0,reserved:d}:{ok:!1,error:"API key token quota exceeded"}}async function aa(a,b,c){if(!b)return;let d=Math.min(b,Math.max(0,Math.floor(Number(c)||0))),f=await (0,e.c)();f.transaction(()=>{f.run("UPDATE apiKeys SET tokensReserved = MAX(0, tokensReserved - ?), tokensUsed = tokensUsed + ? WHERE key = ?",[b,d,a])})}async function ab(a){let b=(await (0,e.c)()).get("SELECT scope, isActive FROM apiKeys WHERE key = ?",[a]);return b&&(1===b.isActive||!0===b.isActive)?M(b.scope):null}Object.values(K).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(K).reduce((a,b)=>(a[b.id]=b.alias,a),{}),B.filter(a=>a.features?.usage).map(a=>a.id),B.filter(a=>a.features?.usageApikey).map(a=>a.id)},33873:a=>{"use strict";a.exports=require("path")},34196:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"URLPattern",{enumerable:!0,get:function(){return c}});let c="u"<typeof URLPattern?void 0:URLPattern},34539:(a,b,c)=>{"use strict";a.exports=c(6796).vendored["react-rsc"].React},36023:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={HeadersAdapter:function(){return h},ReadonlyHeadersError:function(){return g}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(31050);class g extends Error{constructor(){super("Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers")}static callable(){throw new g}}class h extends Headers{constructor(a){super(),this.headers=new Proxy(a,{get(b,c,d){if("symbol"==typeof c)return f.ReflectAdapter.get(b,c,d);let e=c.toLowerCase(),g=Object.keys(a).find(a=>a.toLowerCase()===e);if(void 0!==g)return f.ReflectAdapter.get(b,g,d)},set(b,c,d,e){if("symbol"==typeof c)return f.ReflectAdapter.set(b,c,d,e);let g=c.toLowerCase(),h=Object.keys(a).find(a=>a.toLowerCase()===g);return f.ReflectAdapter.set(b,h??c,d,e)},has(b,c){if("symbol"==typeof c)return f.ReflectAdapter.has(b,c);let d=c.toLowerCase(),e=Object.keys(a).find(a=>a.toLowerCase()===d);return void 0!==e&&f.ReflectAdapter.has(b,e)},deleteProperty(b,c){if("symbol"==typeof c)return f.ReflectAdapter.deleteProperty(b,c);let d=c.toLowerCase(),e=Object.keys(a).find(a=>a.toLowerCase()===d);return void 0===e||f.ReflectAdapter.deleteProperty(b,e)}})}static seal(a){return new Proxy(a,{get(a,b,c){switch(b){case"append":case"delete":case"set":return g.callable;default:return f.ReflectAdapter.get(a,b,c)}}})}merge(a){return Array.isArray(a)?a.join(", "):a}static from(a){return a instanceof Headers?a:new h(a)}append(a,b){let c=this.headers[a];"string"==typeof c?this.headers[a]=[c,b]:Array.isArray(c)?c.push(b):this.headers[a]=b}delete(a){delete this.headers[a]}get(a){let b=this.headers[a];return void 0!==b?this.merge(b):null}has(a){return void 0!==this.headers[a]}set(a,b){this.headers[a]=b}forEach(a,b){for(let[c,d]of this.entries())a.call(b,d,c,this)}*entries(){for(let a of Object.keys(this.headers)){let b=a.toLowerCase(),c=this.get(b);yield[b,c]}}*keys(){for(let a of Object.keys(this.headers)){let b=a.toLowerCase();yield b}}*values(){for(let a of Object.keys(this.headers)){let b=this.get(a);yield b}}[Symbol.iterator](){return this.entries()}}},36066:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"addPathSuffix",{enumerable:!0,get:function(){return e}});let d=c(77890);function e(a,b){if(!a.startsWith("/")||!b)return a;let{pathname:c,query:e,hash:f}=(0,d.parsePath)(a);return`${c}${b}${e}${f}`}},36081:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={isInterceptionAppRoute:function(){return k},isNormalizedAppRoute:function(){return j},parseAppRoute:function(){return function a(b,c){let d,e,h,j=b.split("/").filter(Boolean),k=[];for(let l of j){let j=i(function(a){if(!/%5b|%5d/i.test(a))return a;try{let b=decodeURIComponent(a);return(0,g.getSegmentParam)(b)?b:a}catch{return a}}(l));if(j){if(c&&("route-group"===j.type||"parallel-route"===j.type))throw Object.defineProperty(new f.InvariantError(`${b} is being parsed as a normalized route, but it has a route group or parallel route segment.`),"__NEXT_ERROR_CODE",{value:"E923",enumerable:!1,configurable:!0});if(k.push(j),j.interceptionMarker){let f=b.split(j.interceptionMarker);if(2!==f.length)throw Object.defineProperty(Error(`Invalid interception route: ${b}`),"__NEXT_ERROR_CODE",{value:"E924",enumerable:!1,configurable:!0});e=c?a(f[0],!0):a(f[0],!1),h=c?a(f[1],!0):a(f[1],!1),d=j.interceptionMarker}}}let l=k.filter(a=>"dynamic"===a.type);return{normalized:c,pathname:b,segments:k,dynamicSegments:l,interceptionMarker:d,interceptingRoute:e,interceptedRoute:h}}},parseAppRouteSegment:function(){return i}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(42776),g=c(51597),h=c(11042);function i(a){if(""===a)return null;let b=h.INTERCEPTION_ROUTE_MARKERS.find(b=>a.startsWith(b)),c=(0,g.getSegmentParam)(a);return c?{type:"dynamic",name:a,param:c,interceptionMarker:b}:a.startsWith("(")&&a.endsWith(")")?{type:"route-group",name:a,interceptionMarker:b}:a.startsWith("@")?{type:"parallel-route",name:a,interceptionMarker:b}:{type:"static",name:a,interceptionMarker:b}}function j(a){return a.normalized}function k(a){return void 0!==a.interceptionMarker&&void 0!==a.interceptingRoute&&void 0!==a.interceptedRoute}},36241:(a,b,c)=>{"use strict";c.d(b,{getPricingForModel:()=>f}),c(59339);let d=(0,c(71509).U)("pricing");async function e(){return await d.getAll()}async function f(a,b){if(!b)return null;let d=await e();if(a&&d[a]?.[b])return d[a][b];let{getPricingForModel:f}=await c.e(2269).then(c.bind(c,92269));return f(a,b)}},36299:(a,b)=>{"use strict";function c(a,b,c){if(a){for(let d of(c&&(c=c.toLowerCase()),a))if(b===d.domain?.split(":",1)[0].toLowerCase()||c===d.defaultLocale.toLowerCase()||d.locales?.some(a=>a.toLowerCase()===c))return d}}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"detectDomainLocale",{enumerable:!0,get:function(){return c}})},36820:a=>{"use strict";a.exports=require("next/dist/server/lib/incremental-cache/tags-manifest.external.js")},38169:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"DraftModeProvider",{enumerable:!0,get:function(){return e}});let d=c(97010);class e{constructor(a,b,c,e){var f;const g=a&&(0,d.checkIsOnDemandRevalidate)(b,a).isOnDemandRevalidate,h=null==(f=c.get(d.COOKIE_NAME_PRERENDER_BYPASS))?void 0:f.value;this._isEnabled=!!(!g&&h&&a&&h===a.previewModeId),this._previewModeId=null==a?void 0:a.previewModeId,this._mutableCookies=e}get isEnabled(){return this._isEnabled}enable(){if(!this._previewModeId)throw Object.defineProperty(Error("Invariant: previewProps missing previewModeId this should never happen"),"__NEXT_ERROR_CODE",{value:"E93",enumerable:!1,configurable:!0});this._mutableCookies.set({name:d.COOKIE_NAME_PRERENDER_BYPASS,value:this._previewModeId,httpOnly:!0,sameSite:"none",secure:!0,path:"/"}),this._isEnabled=!0}disable(){this._mutableCookies.set({name:d.COOKIE_NAME_PRERENDER_BYPASS,value:"",httpOnly:!0,sameSite:"none",secure:!0,path:"/",expires:new Date(0)}),this._isEnabled=!1}}},38955:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={RequestCookies:function(){return f.RequestCookies},ResponseCookies:function(){return f.ResponseCookies},stringifyCookie:function(){return f.stringifyCookie}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(90810)},42097:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={isNodeNextRequest:function(){return g},isNodeNextResponse:function(){return h},isWebNextRequest:function(){return e},isWebNextResponse:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e=a=>!1,f=a=>!1,g=a=>!0,h=a=>!0},42501:(a,b)=>{"use strict";function c(){throw Object.defineProperty(Error('ImageResponse moved from "next/server" to "next/og" since Next.js 14, please import from "next/og" instead'),"__NEXT_ERROR_CODE",{value:"E183",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ImageResponse",{enumerable:!0,get:function(){return c}})},42776:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"InvariantError",{enumerable:!0,get:function(){return c}});class c extends Error{constructor(a,b){super(`Invariant: ${a.endsWith(".")?a:a+"."} This is a bug in Next.js.`,b),this.name="InvariantError"}}},43892:(a,b,c)=>{"use strict";c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length,h=[];for(let a=0;a<256;++a)h.push((a+256).toString(16).slice(1));let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return function(a,b=0){return(h[a[b+0]]+h[a[b+1]]+h[a[b+2]]+h[a[b+3]]+"-"+h[a[b+4]]+h[a[b+5]]+"-"+h[a[b+6]]+h[a[b+7]]+"-"+h[a[b+8]]+h[a[b+9]]+"-"+h[a[b+10]]+h[a[b+11]]+h[a[b+12]]+h[a[b+13]]+h[a[b+14]]+h[a[b+15]]).toLowerCase()}(k)}},44001:(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}function e(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}c.r(b),c.d(b,{_:()=>e})},46293:a=>{"use strict";a.exports=require("sql.js")},49540:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={StaticGenBailoutError:function(){return f},isStaticGenBailoutError:function(){return g}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e="NEXT_STATIC_GEN_BAILOUT";class f extends Error{constructor(...a){super(...a),this.code=e}}function g(a){return"object"==typeof a&&null!==a&&"code"in a&&a.code===e}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},49731:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={compileNonPath:function(){return m},matchHas:function(){return l},parseDestination:function(){return n},prepareDestination:function(){return o}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(73896),g=c(21804),h=c(11042),i=c(8007),j=c(20742);function k(a){return a.replace(/__ESC_COLON_/gi,":")}function l(a,b,c=[],d=[]){let e={},f=c=>{let d,f=c.key;switch(c.type){case"header":f=f.toLowerCase(),d=a.headers[f];break;case"cookie":d="cookies"in a?a.cookies[c.key]:(0,i.getCookieParser)(a.headers)()[c.key];break;case"query":d=b[f];break;case"host":{let{host:b}=a?.headers||{};d=b?.split(":",1)[0].toLowerCase()}}if(!c.value&&d)return e[function(a){let b="";for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);(d>64&&d<91||d>96&&d<123)&&(b+=a[c])}return b}(f)]=d,!0;if(d){let a=RegExp(`^${c.value}$`),b=Array.isArray(d)?d.slice(-1)[0].match(a):d.match(a);if(b)return Array.isArray(b)&&(b.groups?Object.keys(b.groups).forEach(a=>{e[a]=b.groups[a]}):"host"===c.type&&b[0]&&(e.host=b[0])),!0}return!1};return!(!c.every(a=>f(a))||d.some(a=>f(a)))&&e}function m(a,b){if(!a.includes(":"))return a;for(let c of Object.keys(b))a.includes(`:${c}`)&&(a=a.replace(RegExp(`:${c}\\*`,"g"),`:${c}--ESCAPED_PARAM_ASTERISKS`).replace(RegExp(`:${c}\\?`,"g"),`:${c}--ESCAPED_PARAM_QUESTION`).replace(RegExp(`:${c}\\+`,"g"),`:${c}--ESCAPED_PARAM_PLUS`).replace(RegExp(`:${c}(?!\\w)`,"g"),`--ESCAPED_PARAM_COLON${c}`));return a=a.replace(/(:|\*|\?|\+|\(|\)|\{|\})/g,"\\$1").replace(/--ESCAPED_PARAM_PLUS/g,"+").replace(/--ESCAPED_PARAM_COLON/g,":").replace(/--ESCAPED_PARAM_QUESTION/g,"?").replace(/--ESCAPED_PARAM_ASTERISKS/g,"*"),(0,j.safeCompile)(`/${a}`,{validate:!1})(b).slice(1)}function n(a){let b=a.destination;for(let c of Object.keys({...a.params,...a.query}))c&&(b=b.replace(RegExp(`:${(0,f.escapeStringRegexp)(c)}`,"g"),`__ESC_COLON_${c}`));let c=(0,g.parseUrl)(b),d=c.pathname;d&&(d=k(d));let e=c.href;e&&(e=k(e));let h=c.hostname;h&&(h=k(h));let i=c.hash;i&&(i=k(i));let j=c.search;j&&(j=k(j));let l=c.origin;return l&&(l=k(l)),{...c,pathname:d,hostname:h,href:e,hash:i,search:j,origin:l}}function o(a){let b,c,d=n(a),{hostname:e,query:f,search:g}=d,i=d.pathname;d.hash&&(i=`${i}${d.hash}`);let l=[],o=[];for(let a of((0,j.safePathToRegexp)(i,o),o))l.push(a.name);if(e){let a=[];for(let b of((0,j.safePathToRegexp)(e,a),a))l.push(b.name)}let p=(0,j.safeCompile)(i,{validate:!1});for(let[c,d]of(e&&(b=(0,j.safeCompile)(e,{validate:!1,encode:encodeURIComponent})),Object.entries(f)))Array.isArray(d)?f[c]=d.map(b=>m(k(b),a.params)):"string"==typeof d&&(f[c]=m(k(d),a.params));let q=Object.keys(a.params).filter(a=>"nextInternalLocale"!==a);if(a.appendParamsToQuery&&!q.some(a=>l.includes(a)))for(let b of q)b in f||(f[b]=a.params[b]);if((0,h.isInterceptionRouteAppPath)(i))for(let b of i.split("/")){let c=h.INTERCEPTION_ROUTE_MARKERS.find(a=>b.startsWith(a));if(c){"(..)(..)"===c?(a.params["0"]="(..)",a.params["1"]="(..)"):a.params["0"]=c;break}}try{let[e,f]=(c=p(a.params)).split("#",2);b&&(d.hostname=b(a.params)),d.pathname=e,d.hash=`${f?"#":""}${f||""}`,d.search=g?m(g,a.params):""}catch(a){if(a.message.match(/Expected .*? to not repeat, but got an array/))throw Object.defineProperty(Error("To use a multi-match in the destination you must add `*` at the end of the param name to signify it should repeat. https://nextjs.org/docs/messages/invalid-multi-match"),"__NEXT_ERROR_CODE",{value:"E329",enumerable:!1,configurable:!0});throw a}return d.query={...a.query,...d.query},{newUrl:c,destQuery:f,parsedDestination:d}}},50158:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={METADATA_BOUNDARY_NAME:function(){return e},OUTLET_BOUNDARY_NAME:function(){return g},ROOT_LAYOUT_BOUNDARY_NAME:function(){return h},VIEWPORT_BOUNDARY_NAME:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e="__next_metadata_boundary__",f="__next_viewport_boundary__",g="__next_outlet_boundary__",h="__next_root_layout_boundary__"},51597:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={getParamProperties:function(){return i},getSegmentParam:function(){return g},isCatchAll:function(){return h}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(11042);function g(a){let b=f.INTERCEPTION_ROUTE_MARKERS.find(b=>a.startsWith(b));return(b&&(a=a.slice(b.length)),a.startsWith("[[...")&&a.endsWith("]]"))?{paramType:"optional-catchall",paramName:a.slice(5,-2)}:a.startsWith("[...")&&a.endsWith("]")?{paramType:b?`catchall-intercepted-${b}`:"catchall",paramName:a.slice(4,-1)}:a.startsWith("[")&&a.endsWith("]")?{paramType:b?`dynamic-intercepted-${b}`:"dynamic",paramName:a.slice(1,-1)}:null}function h(a){return"catchall"===a||"catchall-intercepted-(..)(..)"===a||"catchall-intercepted-(.)"===a||"catchall-intercepted-(..)"===a||"catchall-intercepted-(...)"===a||"optional-catchall"===a}function i(a){let b=!1,c=!1;switch(a){case"catchall":case"catchall-intercepted-(..)(..)":case"catchall-intercepted-(.)":case"catchall-intercepted-(..)":case"catchall-intercepted-(...)":b=!0;break;case"optional-catchall":b=!0,c=!0}return{repeat:b,optional:c}}},52201:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"MISSING_ROOT_TAGS_ERROR",{enumerable:!0,get:function(){return c}});let c="NEXT_MISSING_ROOT_TAGS";("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},53180:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"getPathMatch",{enumerable:!0,get:function(){return e}});let d=c(7039);function e(a,b){let c=[],e=(0,d.pathToRegexp)(a,c,{delimiter:"/",sensitive:"boolean"==typeof b?.sensitive&&b.sensitive,strict:b?.strict}),f=(0,d.regexpToFunction)(b?.regexModifier?new RegExp(b.regexModifier(e.source),e.flags):e,c);return(a,d)=>{if("string"!=typeof a)return!1;let e=f(a);if(!e)return!1;if(b?.removeUnnamedParams)for(let a of c)"number"==typeof a.name&&delete e.params[a.name];return{...d,...e.params}}}},53610:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={DEFAULT_SEGMENT_KEY:function(){return k},NOT_FOUND_SEGMENT_KEY:function(){return l},PAGE_SEGMENT_KEY:function(){return j},addSearchParamsIfPageSegment:function(){return h},computeSelectedLayoutSegment:function(){return i},getSegmentValue:function(){return e},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,f=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return f;let h=e(g[0]);return!h||h.startsWith(j)?f:(f.push(h),a(g,c,!1,f))}},isGroupSegment:function(){return f},isParallelRouteSegment:function(){return g}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});function e(a){return Array.isArray(a)?a[1]:a}function f(a){return"("===a[0]&&a.endsWith(")")}function g(a){return a.startsWith("@")&&"@children"!==a}function h(a,b){if(a.includes(j)){let a=JSON.stringify(b);return"{}"!==a?j+"?"+a:j}return a}function i(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===k?null:c}let j="__PAGE__",k="__DEFAULT__",l="/_not-found"},54795:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d,e={RenderStage:function(){return i},StagedRenderingController:function(){return j}};for(var f in e)Object.defineProperty(b,f,{enumerable:!0,get:e[f]});let g=c(42776),h=c(29299);var i=((d={})[d.Before=1]="Before",d[d.EarlyStatic=2]="EarlyStatic",d[d.Static=3]="Static",d[d.EarlyRuntime=4]="EarlyRuntime",d[d.Runtime=5]="Runtime",d[d.Dynamic=6]="Dynamic",d[d.Abandoned=7]="Abandoned",d);class j{constructor(a,b,c){this.abortSignal=a,this.abandonController=b,this.shouldTrackSyncIO=c,this.currentStage=1,this.syncInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.staticStageListeners=[],this.earlyRuntimeStageListeners=[],this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.staticStagePromise=(0,h.createPromiseWithResolvers)(),this.earlyRuntimeStagePromise=(0,h.createPromiseWithResolvers)(),this.runtimeStagePromise=(0,h.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,h.createPromiseWithResolvers)(),a&&a.addEventListener("abort",()=>{let{reason:b}=a;this.staticStagePromise.promise.catch(k),this.staticStagePromise.reject(b),this.earlyRuntimeStagePromise.promise.catch(k),this.earlyRuntimeStagePromise.reject(b),this.runtimeStagePromise.promise.catch(k),this.runtimeStagePromise.reject(b),this.dynamicStagePromise.promise.catch(k),this.dynamicStagePromise.reject(b)},{once:!0}),b&&b.signal.addEventListener("abort",()=>{this.abandonRender()},{once:!0})}onStage(a,b){if(this.currentStage>=a)b();else if(3===a)this.staticStageListeners.push(b);else if(4===a)this.earlyRuntimeStageListeners.push(b);else if(5===a)this.runtimeStageListeners.push(b);else if(6===a)this.dynamicStageListeners.push(b);else throw Object.defineProperty(new g.InvariantError(`Invalid render stage: ${a}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}shouldTrackSyncInterrupt(){if(!this.shouldTrackSyncIO)return!1;switch(this.currentStage){case 1:case 5:case 6:case 7:default:return!1;case 2:case 3:case 4:return!0}}syncInterruptCurrentStageWithReason(a){if(1!==this.currentStage&&7!==this.currentStage){if(this.abandonController)return void this.abandonController.abort();if(this.abortSignal){this.syncInterruptReason=a,this.currentStage=7;return}switch(this.currentStage){case 2:case 3:case 4:this.syncInterruptReason=a,this.advanceStage(6);return;case 5:return}}}getSyncInterruptReason(){return this.syncInterruptReason}getStaticStageEndTime(){return this.staticStageEndTime}getRuntimeStageEndTime(){return this.runtimeStageEndTime}abandonRender(){let{currentStage:a}=this;switch(a){case 2:this.resolveStaticStage();case 3:this.resolveEarlyRuntimeStage();case 4:this.resolveRuntimeStage();case 5:this.currentStage=7;return}}advanceStage(a){if(a<=this.currentStage)return;let b=this.currentStage;if(this.currentStage=a,b<3&&a>=3&&this.resolveStaticStage(),b<4&&a>=4&&this.resolveEarlyRuntimeStage(),b<5&&a>=5&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),b<6&&a>=6){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveStaticStage(){let a=this.staticStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.staticStagePromise.resolve()}resolveEarlyRuntimeStage(){let a=this.earlyRuntimeStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.earlyRuntimeStagePromise.resolve()}resolveRuntimeStage(){let a=this.runtimeStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.runtimeStagePromise.resolve()}resolveDynamicStage(){let a=this.dynamicStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.dynamicStagePromise.resolve()}getStagePromise(a){switch(a){case 3:return this.staticStagePromise.promise;case 4:return this.earlyRuntimeStagePromise.promise;case 5:return this.runtimeStagePromise.promise;case 6:return this.dynamicStagePromise.promise;default:throw Object.defineProperty(new g.InvariantError(`Invalid render stage: ${a}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}}waitForStage(a){return this.getStagePromise(a)}delayUntilStage(a,b,c){var d,e,f;let g,h=(d=this.getStagePromise(a),e=b,f=c,g=new Promise((a,b)=>{d.then(a.bind(null,f),b)}),void 0!==e&&(g.displayName=e),g);return this.abortSignal&&h.catch(k),h}}function k(){}},55122:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={getPreviouslyRevalidatedTags:function(){return w},getServerUtils:function(){return v},interpolateDynamicPath:function(){return t},normalizeCdnUrl:function(){return s},normalizeDynamicRouteParams:function(){return u}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(28516),g=c(53180),h=c(70580),i=c(62447),j=c(49731),k=c(19524),l=c(92539),m=c(96100),n=c(99751),o=c(4522),p=c(86948),q=c(28344);function r(a,b){for(let c in delete a.nextInternalLocale,a){let d=c!==m.NEXT_QUERY_PARAM_PREFIX&&c.startsWith(m.NEXT_QUERY_PARAM_PREFIX),e=c!==m.NEXT_INTERCEPTION_MARKER_PREFIX&&c.startsWith(m.NEXT_INTERCEPTION_MARKER_PREFIX);(d||e||b.includes(c))&&delete a[c]}}function s(a,b){let c=(0,p.parseReqUrl)(a.url);if(!c)return a.url;delete c.search,r(c.query,b),a.url=(0,q.formatUrl)(c)}function t(a,b,c){if(!c)return a;for(let d of Object.keys(c.groups)){let e,{optional:f,repeat:g}=c.groups[d],h=`[${g?"...":""}${d}]`;f&&(h=`[${h}]`);let i=b[d];((e=Array.isArray(i)?i.map(a=>a&&encodeURIComponent(a)).join("/"):i?encodeURIComponent(i):"")||f)&&(a=a.replaceAll(h,e))}return a}function u(a,b,c,d){let e=(a,b)=>{if(!a)return!1;let c=(0,l.normalizeRscURL)(a);for(let a=0;a<3;a++){if(c===b)return!0;let a=(0,o.decodeQueryPathParameter)(c);if(a===c)break;c=a}return!1},f={};for(let g of Object.keys(b.groups)){let h=a[g];"string"==typeof h?h=(0,l.normalizeRscURL)(h):Array.isArray(h)&&(h=h.map(l.normalizeRscURL));let i=c[g],j=b.groups[g].optional;if((Array.isArray(i)?i.some(a=>Array.isArray(h)?h.some(b=>e(b,a)):e(h,a)):Array.isArray(h)?h.some(a=>e(a,i)):e(h,i))||void 0===h&&!(j&&d))return{params:{},hasValidParams:!1};j&&(!h||Array.isArray(h)&&1===h.length&&("index"===h[0]||h[0]===`[[...${g}]]`)||"index"===h||h===`[[...${g}]]`)&&(h=void 0,delete a[g]),h&&"string"==typeof h&&b.groups[g].repeat&&(h=h.split("/")),h&&(f[g]=h)}return{params:f,hasValidParams:!0}}function v({page:a,i18n:b,basePath:c,rewrites:d,pageIsDynamic:e,trailingSlash:l,caseSensitive:m}){let p,q,w;return e&&(p=(0,h.getNamedRouteRegex)(a,{prefixRouteKeys:!1}),w=(q=(0,i.getRouteMatcher)(p))(a)),{handleRewrites:function(h,i){let n=structuredClone(i),o={},p=n.pathname,r=d=>{let i=(0,g.getPathMatch)(d.source+(l?"(/)?":""),{removeUnnamedParams:!0,strict:!0,sensitive:!!m});if(!n.pathname)return!1;let k=i(n.pathname);if((d.has||d.missing)&&k){let a=(0,j.matchHas)(h,n.query,d.has,d.missing);a?Object.assign(k,a):k=!1}if(k){let{parsedDestination:g,destQuery:h}=(0,j.prepareDestination)({appendParamsToQuery:!0,destination:d.destination,params:k,query:n.query});if(g.protocol)return!0;if(Object.assign(o,h,k),Object.assign(n.query,g.query),delete g.query,Object.assign(n,g),!(p=n.pathname))return!1;if(c&&(p=p.replace(RegExp(`^${c}`),"")||"/"),b){let a=(0,f.normalizeLocalePath)(p,b.locales);p=a.pathname,n.query.nextInternalLocale=a.detectedLocale||k.nextInternalLocale}if(p===a)return!0;if(e&&q){let a=q(p);if(a)return n.query={...n.query,...a},!0}}return!1};for(let a of d.beforeFiles||[])r(a);if(p!==a){let b,c=!1;for(let a of d.afterFiles||[])if(c=r(a))break;if(!c&&!((b=(0,k.removeTrailingSlash)(p||""))===(0,k.removeTrailingSlash)(a)||(null==q?void 0:q(b)))){for(let a of d.fallback||[])if(c=r(a))break}}return{rewriteParams:o,rewrittenParsedUrl:n}},defaultRouteRegex:p,dynamicRouteMatcher:q,defaultRouteMatches:w,normalizeQueryParams:function(a,b){for(let[c,d]of(delete a.nextInternalLocale,Object.entries(a))){let e=(0,n.normalizeNextQueryParam)(c);e&&(delete a[c],b.add(e),void 0!==d&&(a[e]=Array.isArray(d)?d.map(a=>(0,o.decodeQueryPathParameter)(a)):(0,o.decodeQueryPathParameter)(d)))}},getParamsFromRouteMatches:function(a){if(!p)return null;let{groups:b,routeKeys:c}=p,d=(0,i.getRouteMatcher)({re:{exec:a=>{let d=Object.fromEntries(new URLSearchParams(a));for(let[a,b]of Object.entries(d)){let c=(0,n.normalizeNextQueryParam)(a);c&&(d[c]=b,delete d[a])}let e={};for(let a of Object.keys(c)){let f=c[a];if(!f)continue;let g=b[f],h=d[a];if(!g.optional&&!h)return null;e[g.pos]=h}return e}},groups:b})(a);return d||null},normalizeDynamicRouteParams:(a,b)=>p&&w?u(a,p,w,b):{params:{},hasValidParams:!1},normalizeCdnUrl:(a,b)=>s(a,b),interpolateDynamicPath:(a,b)=>t(a,b,p),filterInternalQuery:(a,b)=>r(a,b)}}function w(a,b){return"string"==typeof a[m.NEXT_CACHE_REVALIDATED_TAGS_HEADER]&&a[m.NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER]===b?a[m.NEXT_CACHE_REVALIDATED_TAGS_HEADER].split(","):[]}},55511:a=>{"use strict";a.exports=require("crypto")},56840:(a,b,c)=>{"use strict";c.r(b),c.d(b,{cleanupProviderConnections:()=>s,createProviderConnection:()=>n,deleteProviderConnection:()=>p,deleteProviderConnectionsByProvider:()=>q,getProviderConnectionById:()=>l,getProviderConnections:()=>k,reorderProviderConnections:()=>r,updateProviderConnection:()=>o});var d=c(43892),e=c(59339),f=c(33323);let g=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount","idToken","lastRefreshAt"];function h(a,b){if(b?.testStatus!=="active")return b;let c={...b,testStatus:"active",lastError:Object.hasOwn(b,"lastError")?b.lastError:null,lastErrorAt:Object.hasOwn(b,"lastErrorAt")?b.lastErrorAt:null,errorCode:null,rateLimitedUntil:null,backoffLevel:0};for(let b of Object.keys(a||{}))b.startsWith("modelLock_")&&(c[b]=null);return c}function i(a){return a?{...(0,f.q)(a.data,{}),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive||!0===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function j(a,b){let c=function(a){let{id:b,provider:c,authType:d,name:e,email:g,priority:h,isActive:i,createdAt:j,updatedAt:k,...l}=a;return{id:b,provider:c,authType:d,name:e??null,email:g??null,priority:h??null,isActive:+(!1!==i),data:(0,f.s)(l),createdAt:j,updatedAt:k}}(b);a.run(`INSERT INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt)
|
|
11
|
+
`))}})}function I(a,b){let c=a;for(let a of b)a&&(c=c.pipeThrough(a));return c}async function J(a,{suffix:b,inlinedDataStream:c,isStaticGeneration:d,deploymentId:e,getServerInsertedHTML:f,getServerInsertedMetadata:g,validateRootLayout:j}){let k,l,m=b?b.split(E,1)[0]:null;return d?await a.allReady:await (0,i.waitAtLeastOneReactRenderTask)(),I(a,[x(),e?G(e):null,z(g),null!=m&&m.length>0?(l=!1,new TransformStream({transform(a,b){if(b.enqueue(a),!l){let a;l=!0,k=a=new h.DetachedPromise,(0,i.scheduleImmediate)(()=>{try{b.enqueue(p.encode(m))}catch{}finally{k=void 0,a.resolve()}})}},flush(a){if(k)return k.promise;l||a.enqueue(p.encode(m))}})):null,c?D(c,!0):null,j?H():null,F(),A(f)])}async function K(a,{getServerInsertedHTML:b,getServerInsertedMetadata:c,deploymentId:d}){return I(a,[x(),new TransformStream({transform(a,b){(0,k.isEquivalentUint8Arrays)(a,j.ENCODED_TAGS.CLOSED.BODY_AND_HTML)||(0,k.isEquivalentUint8Arrays)(a,j.ENCODED_TAGS.CLOSED.BODY)||(0,k.isEquivalentUint8Arrays)(a,j.ENCODED_TAGS.CLOSED.HTML)||(a=(0,k.removeFromUint8Array)(a,j.ENCODED_TAGS.CLOSED.BODY),a=(0,k.removeFromUint8Array)(a,j.ENCODED_TAGS.CLOSED.HTML),b.enqueue(a))}}),d?G(d):null,A(b),z(c)])}async function L(a,{inlinedDataStream:b,getServerInsertedHTML:c,getServerInsertedMetadata:d,deploymentId:e}){return I(a,[x(),e?G(e):null,A(c),z(d),D(b,!0),F()])}async function M(a,{inlinedDataStream:b,getServerInsertedHTML:c,getServerInsertedMetadata:d,deploymentId:e}){return I(a,[x(),e?G(e):null,A(c),await B(),z(d),D(b,!0),F()])}async function N(a,{delayDataUntilFirstHtmlChunk:b,inlinedDataStream:c,getServerInsertedHTML:d,getServerInsertedMetadata:e,deploymentId:f}){return I(a,[x(),f?G(f):null,A(d),z(e),D(c,b),F()])}function O(){return r(E)}function P(a,b,c){let d=new TextEncoder,e=d.encode(`[${a}]`),f=e[0],g=d.encode(`[${b},${c}]`),h=e.length,i=null,j=!1;function k(a,b){if(j){b&&a.enqueue(b);return}if(i){let c=i.length-(h-1);if(b&&(c+=Math.min(b.length,h-1)),c<1){a.enqueue(i),i=b;return}let d=i.indexOf(f);a:for(;-1<d&&d<c;){let c=1;for(;c<h;){let a=d+c;if((a<i.length?i[a]:b[a-i.length])!==e[c]){d=i.indexOf(f,d+1);continue a}c++}if(j=!0,a.enqueue(i.subarray(0,d)),a.enqueue(g),d+h<i.length&&a.enqueue(i.slice(d+h)),b){let c=d+h-i.length,e=c>0?b.subarray(c):b;a.enqueue(e)}i=null;return}a.enqueue(i)}i=b}return new TransformStream({transform(a,b){k(b,a)},flush(a){k(a,null)}})}},28344:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={formatUrl:function(){return h},formatWithValidation:function(){return j},urlObjectKeys:function(){return i}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(44001)._(c(68202)),g=/https?|ftp|gopher|file/;function h(a){let{auth:b,hostname:c}=a,d=a.protocol||"",e=a.pathname||"",h=a.hash||"",i=a.query||"",j=!1;b=b?encodeURIComponent(b).replace(/%3A/i,":")+"@":"",a.host?j=b+a.host:c&&(j=b+(~c.indexOf(":")?`[${c}]`:c),a.port&&(j+=":"+a.port)),i&&"object"==typeof i&&(i=String(f.urlQueryToSearchParams(i)));let k=a.search||i&&`?${i}`||"";return d&&!d.endsWith(":")&&(d+=":"),a.slashes||(!d||g.test(d))&&!1!==j?(j="//"+(j||""),e&&"/"!==e[0]&&(e="/"+e)):j||(j=""),h&&"#"!==h[0]&&(h="#"+h),k&&"?"!==k[0]&&(k="?"+k),e=e.replace(/[?#]/g,encodeURIComponent),k=k.replace("#","%23"),`${d}${j}${e}${k}${h}`}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function j(a){return h(a)}},28516:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"normalizeLocalePath",{enumerable:!0,get:function(){return d}});let c=new WeakMap;function d(a,b){let d;if(!b)return{pathname:a};let e=c.get(b);e||(e=b.map(a=>a.toLowerCase()),c.set(b,e));let f=a.split("/",2);if(!f[1])return{pathname:a};let g=f[1].toLowerCase(),h=e.indexOf(g);return h<0?{pathname:a}:(d=b[h],{pathname:a=a.slice(d.length+1)||"/",detectedLocale:d})}},28704:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={atLeastOneTask:function(){return g},scheduleImmediate:function(){return f},scheduleOnNextTick:function(){return e},waitAtLeastOneReactRenderTask:function(){return h}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e=a=>{Promise.resolve().then(()=>{process.nextTick(a)})},f=a=>{setImmediate(a)};function g(){return new Promise(a=>f(a))}function h(){return new Promise(a=>setImmediate(a))}},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29299:(a,b)=>{"use strict";function c(){let a,b,c=new Promise((c,d)=>{a=c,b=d});return{resolve:a,reject:b,promise:c}}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"createPromiseWithResolvers",{enumerable:!0,get:function(){return c}})},30585:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"resolveParamValue",{enumerable:!0,get:function(){return f}});let d=c(42776),e=c(58486);function f(a,b,c,f,g){switch(b){case"catchall":case"optional-catchall":case"catchall-intercepted-(..)(..)":case"catchall-intercepted-(.)":case"catchall-intercepted-(..)":case"catchall-intercepted-(...)":let h=[];for(let a=c;a<f.segments.length;a++){let d=f.segments[a];if("static"===d.type){let f=d.name,g=(0,e.interceptionPrefixFromParamType)(b);g&&a===c&&g===d.interceptionMarker&&(f=f.replace(d.interceptionMarker,"")),h.push(f)}else{if(!g.hasOwnProperty(d.param.paramName)){if("optional-catchall"===d.param.paramType)break;return}let a=g[d.param.paramName];Array.isArray(a)?h.push(...a):h.push(a)}}if(h.length>0)return h;if("optional-catchall"===b)return;throw Object.defineProperty(new d.InvariantError(`Unexpected empty path segments match for a route "${f.pathname}" with param "${a}" of type "${b}"`),"__NEXT_ERROR_CODE",{value:"E931",enumerable:!1,configurable:!0});case"dynamic":case"dynamic-intercepted-(..)(..)":case"dynamic-intercepted-(.)":case"dynamic-intercepted-(..)":case"dynamic-intercepted-(...)":if(c<f.segments.length){let a=f.segments[c];if("dynamic"===a.type&&!g.hasOwnProperty(a.param.paramName))return;return"dynamic"===a.type?g[a.param.paramName]:(0,e.interceptionPrefixFromParamType)(b)===a.interceptionMarker?a.name.replace(a.interceptionMarker,""):a.name}return}}},31050:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ReflectAdapter",{enumerable:!0,get:function(){return c}});class c{static get(a,b,c){let d=Reflect.get(a,b,c);return"function"==typeof d?d.bind(a):d}static set(a,b,c,d){return Reflect.set(a,b,c,d)}static has(a,b){return Reflect.has(a,b)}static deleteProperty(a,b){return Reflect.deleteProperty(a,b)}}},31147:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={createLazyResult:function(){return e},isResolvedLazyResult:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});function e(a){let b,c={then:(d,e)=>(b||(b=Promise.resolve(a())),b.then(a=>{c.value=a}).catch(()=>{}),b.then(d,e))};return c}function f(a){return a.hasOwnProperty("value")}},31385:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={PARAMETER_PATTERN:function(){return l},getDynamicParam:function(){return k},interpolateParallelRouteParams:function(){return j},parseMatchedParameter:function(){return n},parseParameter:function(){return m}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(42776),g=c(71185),h=c(36081),i=c(30585);function j(a,b,c,d){let e=structuredClone(b),j=[{tree:a,depth:0}],k=(0,h.parseAppRoute)(c,!0);for(;j.length>0;){let{tree:a,depth:b}=j.pop(),{segment:c,parallelRoutes:l}=(0,g.parseLoaderTree)(a),m=(0,h.parseAppRouteSegment)(c);if(m?.type==="dynamic"&&!e.hasOwnProperty(m.param.paramName)&&!d?.has(m.param.paramName)){let{paramName:a,paramType:c}=m.param,d=(0,i.resolveParamValue)(a,c,b,k,e);if(void 0!==d)e[a]=d;else if("optional-catchall"!==c)throw Object.defineProperty(new f.InvariantError(`Could not resolve param value for segment: ${a}`),"__NEXT_ERROR_CODE",{value:"E932",enumerable:!1,configurable:!0})}let n=b;for(let a of(m&&"route-group"!==m.type&&"parallel-route"!==m.type&&n++,Object.values(l)))j.push({tree:a,depth:n})}return e}function k(a,b,c,d,e){let g=function(a,b,c){let d=a[b];if(c?.has(b)){let[a]=c.get(b);d=a}else Array.isArray(d)?d=d.map(a=>encodeURIComponent(a)):"string"==typeof d&&(d=encodeURIComponent(d));return d}(a,b,d);if(!g||0===g.length){if("oc"===c)return{param:b,value:null,type:c,treeSegment:[b,"",c,e]};throw Object.defineProperty(new f.InvariantError(`Missing value for segment key: "${b}" with dynamic param type: ${c}`),"__NEXT_ERROR_CODE",{value:"E864",enumerable:!1,configurable:!0})}let h=Array.isArray(g)?g.join("/"):g;return{param:b,value:g,treeSegment:[b,h,c,e],type:c}}let l=/^([^[]*)\[((?:\[[^\]]*\])|[^\]]+)\](.*)$/;function m(a){let b=a.match(l);return b?n(b[2]):n(a)}function n(a){let b=a.startsWith("[")&&a.endsWith("]");b&&(a=a.slice(1,-1));let c=a.startsWith("...");return c&&(a=a.slice(3)),{key:a,repeat:c,optional:b}}},31574:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"getImplicitTags",{enumerable:!0,get:function(){return h}});let d=c(96100),e=c(57155),f=c(67751),g=c(31147);async function h(a,b,c){let h=new Set;for(let b of(a=>{let b=["/layout"];if(a.startsWith("/")){let c=a.split("/");for(let a=1;a<c.length+1;a++){let d=c.slice(0,a).join("/");d&&(d.endsWith("/page")||d.endsWith("/route")||(d=`${d}${!d.endsWith("/")?"/":""}layout`),b.push(d))}}return b})(a))b=(0,f.encodeCacheTag)(`${d.NEXT_CACHE_IMPLICIT_TAG_ID}${b}`),h.add(b);if(b&&(!c||0===c.size)){let a=(0,f.encodeCacheTag)(`${d.NEXT_CACHE_IMPLICIT_TAG_ID}${b}`);h.add(a)}h.has(`${d.NEXT_CACHE_IMPLICIT_TAG_ID}/`)&&h.add(`${d.NEXT_CACHE_IMPLICIT_TAG_ID}/index`),h.has(`${d.NEXT_CACHE_IMPLICIT_TAG_ID}/index`)&&h.add(`${d.NEXT_CACHE_IMPLICIT_TAG_ID}/`);let i=Array.from(h);return{tags:i,expirationsByCacheKind:function(a){let b=new Map,c=(0,e.getCacheHandlerEntries)();if(c)for(let[d,e]of c)"getExpiration"in e&&b.set(d,(0,g.createLazyResult)(async()=>e.getExpiration(a)));return b}(i)}}},32053:(a,b)=>{"use strict";function c(a){return null!==a&&"object"==typeof a&&"then"in a&&"function"==typeof a.then}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"isThenable",{enumerable:!0,get:function(){return c}})},32457:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"createDefaultCacheHandler",{enumerable:!0,get:function(){return f}});let d=c(9913),e=c(36820);function f(a){if(0===a)return{get:()=>Promise.resolve(void 0),set:()=>Promise.resolve(),refreshTags:()=>Promise.resolve(),getExpiration:()=>Promise.resolve(0),updateTags:()=>Promise.resolve()};let b=new d.LRUCache(a,a=>a.size),c=new Map,f=process.env.NEXT_PRIVATE_DEBUG_CACHE?console.debug.bind(console,"DefaultCacheHandler:"):void 0;return{async get(a){let d=c.get(a);d&&(null==f||f("get",a,"pending"),await d);let g=b.get(a);if(!g){null==f||f("get",a,"not found");return}let h=g.entry;if(performance.timeOrigin+performance.now()>h.timestamp+1e3*h.revalidate){null==f||f("get",a,"expired");return}let i=h.revalidate;if((0,e.areTagsExpired)(h.tags,h.timestamp)){null==f||f("get",a,"had expired tag");return}(0,e.areTagsStale)(h.tags,h.timestamp)&&(null==f||f("get",a,"had stale tag"),i=-1);let[j,k]=h.value.tee();return h.value=k,null==f||f("get",a,"found",{tags:h.tags,timestamp:h.timestamp,expire:h.expire,revalidate:i}),{...h,revalidate:i,value:j}},async set(a,d){null==f||f("set",a,"start");let e=()=>{},g=new Promise(a=>{e=a});c.set(a,g);let h=await d,i=0;try{let[c,d]=h.value.tee();h.value=c;let e=d.getReader();for(let a;!(a=await e.read()).done;)i+=Buffer.from(a.value).byteLength;b.set(a,{entry:h,isErrored:!1,errorRetryCount:0,size:i}),null==f||f("set",a,"done")}catch(b){null==f||f("set",a,"failed",b)}finally{e(),c.delete(a)}},async refreshTags(){},async getExpiration(a){let b=Math.max(...a.map(a=>{let b=e.tagsManifest.get(a);return b&&b.expired||0}),0);return null==f||f("getExpiration",{tags:a,expiration:b}),b},async updateTags(a,b){let c=Math.round(performance.timeOrigin+performance.now());for(let d of(null==f||f("updateTags",{tags:a,timestamp:c}),a)){let a=e.tagsManifest.get(d)||{};if(b){let f={...a};f.stale=c,void 0!==b.expire&&(f.expired=c+1e3*b.expire),e.tagsManifest.set(d,f)}else e.tagsManifest.set(d,{...a,expired:c})}}}}},32648:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={edgeInstrumentationOnRequestError:function(){return h},ensureInstrumentationRegistered:function(){return j},getEdgeInstrumentationModule:function(){return e}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});async function e(){return"_ENTRIES"in globalThis&&_ENTRIES.middleware_instrumentation&&await _ENTRIES.middleware_instrumentation}let f=null;async function g(){if("phase-production-build"===process.env.NEXT_PHASE)return;f||(f=e());let a=await f;if(null==a?void 0:a.register)try{await a.register()}catch(a){throw a.message=`An error occurred while loading instrumentation hook: ${a.message}`,a}}async function h(...a){let b=await e();try{var c;await (null==b||null==(c=b.onRequestError)?void 0:c.call(b,...a))}catch(a){console.error("Error in instrumentation.onRequestError:",a)}}let i=null;function j(){return i||(i=g()),i}},33323:(a,b,c)=>{"use strict";function d(a,b=null){if(null==a)return b;if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return b}}function e(a){return JSON.stringify(a??null)}c.d(b,{q:()=>d,s:()=>e})},33873:a=>{"use strict";a.exports=require("path")},34196:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"URLPattern",{enumerable:!0,get:function(){return c}});let c="u"<typeof URLPattern?void 0:URLPattern},34539:(a,b,c)=>{"use strict";a.exports=c(6796).vendored["react-rsc"].React},36023:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={HeadersAdapter:function(){return h},ReadonlyHeadersError:function(){return g}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(31050);class g extends Error{constructor(){super("Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers")}static callable(){throw new g}}class h extends Headers{constructor(a){super(),this.headers=new Proxy(a,{get(b,c,d){if("symbol"==typeof c)return f.ReflectAdapter.get(b,c,d);let e=c.toLowerCase(),g=Object.keys(a).find(a=>a.toLowerCase()===e);if(void 0!==g)return f.ReflectAdapter.get(b,g,d)},set(b,c,d,e){if("symbol"==typeof c)return f.ReflectAdapter.set(b,c,d,e);let g=c.toLowerCase(),h=Object.keys(a).find(a=>a.toLowerCase()===g);return f.ReflectAdapter.set(b,h??c,d,e)},has(b,c){if("symbol"==typeof c)return f.ReflectAdapter.has(b,c);let d=c.toLowerCase(),e=Object.keys(a).find(a=>a.toLowerCase()===d);return void 0!==e&&f.ReflectAdapter.has(b,e)},deleteProperty(b,c){if("symbol"==typeof c)return f.ReflectAdapter.deleteProperty(b,c);let d=c.toLowerCase(),e=Object.keys(a).find(a=>a.toLowerCase()===d);return void 0===e||f.ReflectAdapter.deleteProperty(b,e)}})}static seal(a){return new Proxy(a,{get(a,b,c){switch(b){case"append":case"delete":case"set":return g.callable;default:return f.ReflectAdapter.get(a,b,c)}}})}merge(a){return Array.isArray(a)?a.join(", "):a}static from(a){return a instanceof Headers?a:new h(a)}append(a,b){let c=this.headers[a];"string"==typeof c?this.headers[a]=[c,b]:Array.isArray(c)?c.push(b):this.headers[a]=b}delete(a){delete this.headers[a]}get(a){let b=this.headers[a];return void 0!==b?this.merge(b):null}has(a){return void 0!==this.headers[a]}set(a,b){this.headers[a]=b}forEach(a,b){for(let[c,d]of this.entries())a.call(b,d,c,this)}*entries(){for(let a of Object.keys(this.headers)){let b=a.toLowerCase(),c=this.get(b);yield[b,c]}}*keys(){for(let a of Object.keys(this.headers)){let b=a.toLowerCase();yield b}}*values(){for(let a of Object.keys(this.headers)){let b=this.get(a);yield b}}[Symbol.iterator](){return this.entries()}}},36066:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"addPathSuffix",{enumerable:!0,get:function(){return e}});let d=c(77890);function e(a,b){if(!a.startsWith("/")||!b)return a;let{pathname:c,query:e,hash:f}=(0,d.parsePath)(a);return`${c}${b}${e}${f}`}},36081:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={isInterceptionAppRoute:function(){return k},isNormalizedAppRoute:function(){return j},parseAppRoute:function(){return function a(b,c){let d,e,h,j=b.split("/").filter(Boolean),k=[];for(let l of j){let j=i(function(a){if(!/%5b|%5d/i.test(a))return a;try{let b=decodeURIComponent(a);return(0,g.getSegmentParam)(b)?b:a}catch{return a}}(l));if(j){if(c&&("route-group"===j.type||"parallel-route"===j.type))throw Object.defineProperty(new f.InvariantError(`${b} is being parsed as a normalized route, but it has a route group or parallel route segment.`),"__NEXT_ERROR_CODE",{value:"E923",enumerable:!1,configurable:!0});if(k.push(j),j.interceptionMarker){let f=b.split(j.interceptionMarker);if(2!==f.length)throw Object.defineProperty(Error(`Invalid interception route: ${b}`),"__NEXT_ERROR_CODE",{value:"E924",enumerable:!1,configurable:!0});e=c?a(f[0],!0):a(f[0],!1),h=c?a(f[1],!0):a(f[1],!1),d=j.interceptionMarker}}}let l=k.filter(a=>"dynamic"===a.type);return{normalized:c,pathname:b,segments:k,dynamicSegments:l,interceptionMarker:d,interceptingRoute:e,interceptedRoute:h}}},parseAppRouteSegment:function(){return i}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(42776),g=c(51597),h=c(11042);function i(a){if(""===a)return null;let b=h.INTERCEPTION_ROUTE_MARKERS.find(b=>a.startsWith(b)),c=(0,g.getSegmentParam)(a);return c?{type:"dynamic",name:a,param:c,interceptionMarker:b}:a.startsWith("(")&&a.endsWith(")")?{type:"route-group",name:a,interceptionMarker:b}:a.startsWith("@")?{type:"parallel-route",name:a,interceptionMarker:b}:{type:"static",name:a,interceptionMarker:b}}function j(a){return a.normalized}function k(a){return void 0!==a.interceptionMarker&&void 0!==a.interceptingRoute&&void 0!==a.interceptedRoute}},36241:(a,b,c)=>{"use strict";c.d(b,{getPricingForModel:()=>f}),c(59339);let d=(0,c(71509).U)("pricing");async function e(){return await d.getAll()}async function f(a,b){if(!b)return null;let d=await e();if(a&&d[a]?.[b])return d[a][b];let{getPricingForModel:f}=await c.e(2269).then(c.bind(c,92269));return f(a,b)}},36299:(a,b)=>{"use strict";function c(a,b,c){if(a){for(let d of(c&&(c=c.toLowerCase()),a))if(b===d.domain?.split(":",1)[0].toLowerCase()||c===d.defaultLocale.toLowerCase()||d.locales?.some(a=>a.toLowerCase()===c))return d}}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"detectDomainLocale",{enumerable:!0,get:function(){return c}})},36820:a=>{"use strict";a.exports=require("next/dist/server/lib/incremental-cache/tags-manifest.external.js")},38169:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"DraftModeProvider",{enumerable:!0,get:function(){return e}});let d=c(97010);class e{constructor(a,b,c,e){var f;const g=a&&(0,d.checkIsOnDemandRevalidate)(b,a).isOnDemandRevalidate,h=null==(f=c.get(d.COOKIE_NAME_PRERENDER_BYPASS))?void 0:f.value;this._isEnabled=!!(!g&&h&&a&&h===a.previewModeId),this._previewModeId=null==a?void 0:a.previewModeId,this._mutableCookies=e}get isEnabled(){return this._isEnabled}enable(){if(!this._previewModeId)throw Object.defineProperty(Error("Invariant: previewProps missing previewModeId this should never happen"),"__NEXT_ERROR_CODE",{value:"E93",enumerable:!1,configurable:!0});this._mutableCookies.set({name:d.COOKIE_NAME_PRERENDER_BYPASS,value:this._previewModeId,httpOnly:!0,sameSite:"none",secure:!0,path:"/"}),this._isEnabled=!0}disable(){this._mutableCookies.set({name:d.COOKIE_NAME_PRERENDER_BYPASS,value:"",httpOnly:!0,sameSite:"none",secure:!0,path:"/",expires:new Date(0)}),this._isEnabled=!1}}},38955:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={RequestCookies:function(){return f.RequestCookies},ResponseCookies:function(){return f.ResponseCookies},stringifyCookie:function(){return f.stringifyCookie}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(90810)},42097:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={isNodeNextRequest:function(){return g},isNodeNextResponse:function(){return h},isWebNextRequest:function(){return e},isWebNextResponse:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e=a=>!1,f=a=>!1,g=a=>!0,h=a=>!0},42501:(a,b)=>{"use strict";function c(){throw Object.defineProperty(Error('ImageResponse moved from "next/server" to "next/og" since Next.js 14, please import from "next/og" instead'),"__NEXT_ERROR_CODE",{value:"E183",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ImageResponse",{enumerable:!0,get:function(){return c}})},42776:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"InvariantError",{enumerable:!0,get:function(){return c}});class c extends Error{constructor(a,b){super(`Invariant: ${a.endsWith(".")?a:a+"."} This is a bug in Next.js.`,b),this.name="InvariantError"}}},43892:(a,b,c)=>{"use strict";c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length,h=[];for(let a=0;a<256;++a)h.push((a+256).toString(16).slice(1));let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return function(a,b=0){return(h[a[b+0]]+h[a[b+1]]+h[a[b+2]]+h[a[b+3]]+"-"+h[a[b+4]]+h[a[b+5]]+"-"+h[a[b+6]]+h[a[b+7]]+"-"+h[a[b+8]]+h[a[b+9]]+"-"+h[a[b+10]]+h[a[b+11]]+h[a[b+12]]+h[a[b+13]]+h[a[b+14]]+h[a[b+15]]).toLowerCase()}(k)}},44001:(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}function e(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}c.r(b),c.d(b,{_:()=>e})},46293:a=>{"use strict";a.exports=require("sql.js")},49540:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={StaticGenBailoutError:function(){return f},isStaticGenBailoutError:function(){return g}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e="NEXT_STATIC_GEN_BAILOUT";class f extends Error{constructor(...a){super(...a),this.code=e}}function g(a){return"object"==typeof a&&null!==a&&"code"in a&&a.code===e}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},49731:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={compileNonPath:function(){return m},matchHas:function(){return l},parseDestination:function(){return n},prepareDestination:function(){return o}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(73896),g=c(21804),h=c(11042),i=c(8007),j=c(20742);function k(a){return a.replace(/__ESC_COLON_/gi,":")}function l(a,b,c=[],d=[]){let e={},f=c=>{let d,f=c.key;switch(c.type){case"header":f=f.toLowerCase(),d=a.headers[f];break;case"cookie":d="cookies"in a?a.cookies[c.key]:(0,i.getCookieParser)(a.headers)()[c.key];break;case"query":d=b[f];break;case"host":{let{host:b}=a?.headers||{};d=b?.split(":",1)[0].toLowerCase()}}if(!c.value&&d)return e[function(a){let b="";for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);(d>64&&d<91||d>96&&d<123)&&(b+=a[c])}return b}(f)]=d,!0;if(d){let a=RegExp(`^${c.value}$`),b=Array.isArray(d)?d.slice(-1)[0].match(a):d.match(a);if(b)return Array.isArray(b)&&(b.groups?Object.keys(b.groups).forEach(a=>{e[a]=b.groups[a]}):"host"===c.type&&b[0]&&(e.host=b[0])),!0}return!1};return!(!c.every(a=>f(a))||d.some(a=>f(a)))&&e}function m(a,b){if(!a.includes(":"))return a;for(let c of Object.keys(b))a.includes(`:${c}`)&&(a=a.replace(RegExp(`:${c}\\*`,"g"),`:${c}--ESCAPED_PARAM_ASTERISKS`).replace(RegExp(`:${c}\\?`,"g"),`:${c}--ESCAPED_PARAM_QUESTION`).replace(RegExp(`:${c}\\+`,"g"),`:${c}--ESCAPED_PARAM_PLUS`).replace(RegExp(`:${c}(?!\\w)`,"g"),`--ESCAPED_PARAM_COLON${c}`));return a=a.replace(/(:|\*|\?|\+|\(|\)|\{|\})/g,"\\$1").replace(/--ESCAPED_PARAM_PLUS/g,"+").replace(/--ESCAPED_PARAM_COLON/g,":").replace(/--ESCAPED_PARAM_QUESTION/g,"?").replace(/--ESCAPED_PARAM_ASTERISKS/g,"*"),(0,j.safeCompile)(`/${a}`,{validate:!1})(b).slice(1)}function n(a){let b=a.destination;for(let c of Object.keys({...a.params,...a.query}))c&&(b=b.replace(RegExp(`:${(0,f.escapeStringRegexp)(c)}`,"g"),`__ESC_COLON_${c}`));let c=(0,g.parseUrl)(b),d=c.pathname;d&&(d=k(d));let e=c.href;e&&(e=k(e));let h=c.hostname;h&&(h=k(h));let i=c.hash;i&&(i=k(i));let j=c.search;j&&(j=k(j));let l=c.origin;return l&&(l=k(l)),{...c,pathname:d,hostname:h,href:e,hash:i,search:j,origin:l}}function o(a){let b,c,d=n(a),{hostname:e,query:f,search:g}=d,i=d.pathname;d.hash&&(i=`${i}${d.hash}`);let l=[],o=[];for(let a of((0,j.safePathToRegexp)(i,o),o))l.push(a.name);if(e){let a=[];for(let b of((0,j.safePathToRegexp)(e,a),a))l.push(b.name)}let p=(0,j.safeCompile)(i,{validate:!1});for(let[c,d]of(e&&(b=(0,j.safeCompile)(e,{validate:!1,encode:encodeURIComponent})),Object.entries(f)))Array.isArray(d)?f[c]=d.map(b=>m(k(b),a.params)):"string"==typeof d&&(f[c]=m(k(d),a.params));let q=Object.keys(a.params).filter(a=>"nextInternalLocale"!==a);if(a.appendParamsToQuery&&!q.some(a=>l.includes(a)))for(let b of q)b in f||(f[b]=a.params[b]);if((0,h.isInterceptionRouteAppPath)(i))for(let b of i.split("/")){let c=h.INTERCEPTION_ROUTE_MARKERS.find(a=>b.startsWith(a));if(c){"(..)(..)"===c?(a.params["0"]="(..)",a.params["1"]="(..)"):a.params["0"]=c;break}}try{let[e,f]=(c=p(a.params)).split("#",2);b&&(d.hostname=b(a.params)),d.pathname=e,d.hash=`${f?"#":""}${f||""}`,d.search=g?m(g,a.params):""}catch(a){if(a.message.match(/Expected .*? to not repeat, but got an array/))throw Object.defineProperty(Error("To use a multi-match in the destination you must add `*` at the end of the param name to signify it should repeat. https://nextjs.org/docs/messages/invalid-multi-match"),"__NEXT_ERROR_CODE",{value:"E329",enumerable:!1,configurable:!0});throw a}return d.query={...a.query,...d.query},{newUrl:c,destQuery:f,parsedDestination:d}}},50158:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={METADATA_BOUNDARY_NAME:function(){return e},OUTLET_BOUNDARY_NAME:function(){return g},ROOT_LAYOUT_BOUNDARY_NAME:function(){return h},VIEWPORT_BOUNDARY_NAME:function(){return f}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});let e="__next_metadata_boundary__",f="__next_viewport_boundary__",g="__next_outlet_boundary__",h="__next_root_layout_boundary__"},51597:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={getParamProperties:function(){return i},getSegmentParam:function(){return g},isCatchAll:function(){return h}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(11042);function g(a){let b=f.INTERCEPTION_ROUTE_MARKERS.find(b=>a.startsWith(b));return(b&&(a=a.slice(b.length)),a.startsWith("[[...")&&a.endsWith("]]"))?{paramType:"optional-catchall",paramName:a.slice(5,-2)}:a.startsWith("[...")&&a.endsWith("]")?{paramType:b?`catchall-intercepted-${b}`:"catchall",paramName:a.slice(4,-1)}:a.startsWith("[")&&a.endsWith("]")?{paramType:b?`dynamic-intercepted-${b}`:"dynamic",paramName:a.slice(1,-1)}:null}function h(a){return"catchall"===a||"catchall-intercepted-(..)(..)"===a||"catchall-intercepted-(.)"===a||"catchall-intercepted-(..)"===a||"catchall-intercepted-(...)"===a||"optional-catchall"===a}function i(a){let b=!1,c=!1;switch(a){case"catchall":case"catchall-intercepted-(..)(..)":case"catchall-intercepted-(.)":case"catchall-intercepted-(..)":case"catchall-intercepted-(...)":b=!0;break;case"optional-catchall":b=!0,c=!0}return{repeat:b,optional:c}}},52201:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"MISSING_ROOT_TAGS_ERROR",{enumerable:!0,get:function(){return c}});let c="NEXT_MISSING_ROOT_TAGS";("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},53180:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"getPathMatch",{enumerable:!0,get:function(){return e}});let d=c(7039);function e(a,b){let c=[],e=(0,d.pathToRegexp)(a,c,{delimiter:"/",sensitive:"boolean"==typeof b?.sensitive&&b.sensitive,strict:b?.strict}),f=(0,d.regexpToFunction)(b?.regexModifier?new RegExp(b.regexModifier(e.source),e.flags):e,c);return(a,d)=>{if("string"!=typeof a)return!1;let e=f(a);if(!e)return!1;if(b?.removeUnnamedParams)for(let a of c)"number"==typeof a.name&&delete e.params[a.name];return{...d,...e.params}}}},53610:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var c={DEFAULT_SEGMENT_KEY:function(){return k},NOT_FOUND_SEGMENT_KEY:function(){return l},PAGE_SEGMENT_KEY:function(){return j},addSearchParamsIfPageSegment:function(){return h},computeSelectedLayoutSegment:function(){return i},getSegmentValue:function(){return e},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,f=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return f;let h=e(g[0]);return!h||h.startsWith(j)?f:(f.push(h),a(g,c,!1,f))}},isGroupSegment:function(){return f},isParallelRouteSegment:function(){return g}};for(var d in c)Object.defineProperty(b,d,{enumerable:!0,get:c[d]});function e(a){return Array.isArray(a)?a[1]:a}function f(a){return"("===a[0]&&a.endsWith(")")}function g(a){return a.startsWith("@")&&"@children"!==a}function h(a,b){if(a.includes(j)){let a=JSON.stringify(b);return"{}"!==a?j+"?"+a:j}return a}function i(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===k?null:c}let j="__PAGE__",k="__DEFAULT__",l="/_not-found"},54795:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d,e={RenderStage:function(){return i},StagedRenderingController:function(){return j}};for(var f in e)Object.defineProperty(b,f,{enumerable:!0,get:e[f]});let g=c(42776),h=c(29299);var i=((d={})[d.Before=1]="Before",d[d.EarlyStatic=2]="EarlyStatic",d[d.Static=3]="Static",d[d.EarlyRuntime=4]="EarlyRuntime",d[d.Runtime=5]="Runtime",d[d.Dynamic=6]="Dynamic",d[d.Abandoned=7]="Abandoned",d);class j{constructor(a,b,c){this.abortSignal=a,this.abandonController=b,this.shouldTrackSyncIO=c,this.currentStage=1,this.syncInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.staticStageListeners=[],this.earlyRuntimeStageListeners=[],this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.staticStagePromise=(0,h.createPromiseWithResolvers)(),this.earlyRuntimeStagePromise=(0,h.createPromiseWithResolvers)(),this.runtimeStagePromise=(0,h.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,h.createPromiseWithResolvers)(),a&&a.addEventListener("abort",()=>{let{reason:b}=a;this.staticStagePromise.promise.catch(k),this.staticStagePromise.reject(b),this.earlyRuntimeStagePromise.promise.catch(k),this.earlyRuntimeStagePromise.reject(b),this.runtimeStagePromise.promise.catch(k),this.runtimeStagePromise.reject(b),this.dynamicStagePromise.promise.catch(k),this.dynamicStagePromise.reject(b)},{once:!0}),b&&b.signal.addEventListener("abort",()=>{this.abandonRender()},{once:!0})}onStage(a,b){if(this.currentStage>=a)b();else if(3===a)this.staticStageListeners.push(b);else if(4===a)this.earlyRuntimeStageListeners.push(b);else if(5===a)this.runtimeStageListeners.push(b);else if(6===a)this.dynamicStageListeners.push(b);else throw Object.defineProperty(new g.InvariantError(`Invalid render stage: ${a}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}shouldTrackSyncInterrupt(){if(!this.shouldTrackSyncIO)return!1;switch(this.currentStage){case 1:case 5:case 6:case 7:default:return!1;case 2:case 3:case 4:return!0}}syncInterruptCurrentStageWithReason(a){if(1!==this.currentStage&&7!==this.currentStage){if(this.abandonController)return void this.abandonController.abort();if(this.abortSignal){this.syncInterruptReason=a,this.currentStage=7;return}switch(this.currentStage){case 2:case 3:case 4:this.syncInterruptReason=a,this.advanceStage(6);return;case 5:return}}}getSyncInterruptReason(){return this.syncInterruptReason}getStaticStageEndTime(){return this.staticStageEndTime}getRuntimeStageEndTime(){return this.runtimeStageEndTime}abandonRender(){let{currentStage:a}=this;switch(a){case 2:this.resolveStaticStage();case 3:this.resolveEarlyRuntimeStage();case 4:this.resolveRuntimeStage();case 5:this.currentStage=7;return}}advanceStage(a){if(a<=this.currentStage)return;let b=this.currentStage;if(this.currentStage=a,b<3&&a>=3&&this.resolveStaticStage(),b<4&&a>=4&&this.resolveEarlyRuntimeStage(),b<5&&a>=5&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),b<6&&a>=6){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveStaticStage(){let a=this.staticStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.staticStagePromise.resolve()}resolveEarlyRuntimeStage(){let a=this.earlyRuntimeStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.earlyRuntimeStagePromise.resolve()}resolveRuntimeStage(){let a=this.runtimeStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.runtimeStagePromise.resolve()}resolveDynamicStage(){let a=this.dynamicStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.dynamicStagePromise.resolve()}getStagePromise(a){switch(a){case 3:return this.staticStagePromise.promise;case 4:return this.earlyRuntimeStagePromise.promise;case 5:return this.runtimeStagePromise.promise;case 6:return this.dynamicStagePromise.promise;default:throw Object.defineProperty(new g.InvariantError(`Invalid render stage: ${a}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}}waitForStage(a){return this.getStagePromise(a)}delayUntilStage(a,b,c){var d,e,f;let g,h=(d=this.getStagePromise(a),e=b,f=c,g=new Promise((a,b)=>{d.then(a.bind(null,f),b)}),void 0!==e&&(g.displayName=e),g);return this.abortSignal&&h.catch(k),h}}function k(){}},55122:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={getPreviouslyRevalidatedTags:function(){return w},getServerUtils:function(){return v},interpolateDynamicPath:function(){return t},normalizeCdnUrl:function(){return s},normalizeDynamicRouteParams:function(){return u}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(28516),g=c(53180),h=c(70580),i=c(62447),j=c(49731),k=c(19524),l=c(92539),m=c(96100),n=c(99751),o=c(4522),p=c(86948),q=c(28344);function r(a,b){for(let c in delete a.nextInternalLocale,a){let d=c!==m.NEXT_QUERY_PARAM_PREFIX&&c.startsWith(m.NEXT_QUERY_PARAM_PREFIX),e=c!==m.NEXT_INTERCEPTION_MARKER_PREFIX&&c.startsWith(m.NEXT_INTERCEPTION_MARKER_PREFIX);(d||e||b.includes(c))&&delete a[c]}}function s(a,b){let c=(0,p.parseReqUrl)(a.url);if(!c)return a.url;delete c.search,r(c.query,b),a.url=(0,q.formatUrl)(c)}function t(a,b,c){if(!c)return a;for(let d of Object.keys(c.groups)){let e,{optional:f,repeat:g}=c.groups[d],h=`[${g?"...":""}${d}]`;f&&(h=`[${h}]`);let i=b[d];((e=Array.isArray(i)?i.map(a=>a&&encodeURIComponent(a)).join("/"):i?encodeURIComponent(i):"")||f)&&(a=a.replaceAll(h,e))}return a}function u(a,b,c,d){let e=(a,b)=>{if(!a)return!1;let c=(0,l.normalizeRscURL)(a);for(let a=0;a<3;a++){if(c===b)return!0;let a=(0,o.decodeQueryPathParameter)(c);if(a===c)break;c=a}return!1},f={};for(let g of Object.keys(b.groups)){let h=a[g];"string"==typeof h?h=(0,l.normalizeRscURL)(h):Array.isArray(h)&&(h=h.map(l.normalizeRscURL));let i=c[g],j=b.groups[g].optional;if((Array.isArray(i)?i.some(a=>Array.isArray(h)?h.some(b=>e(b,a)):e(h,a)):Array.isArray(h)?h.some(a=>e(a,i)):e(h,i))||void 0===h&&!(j&&d))return{params:{},hasValidParams:!1};j&&(!h||Array.isArray(h)&&1===h.length&&("index"===h[0]||h[0]===`[[...${g}]]`)||"index"===h||h===`[[...${g}]]`)&&(h=void 0,delete a[g]),h&&"string"==typeof h&&b.groups[g].repeat&&(h=h.split("/")),h&&(f[g]=h)}return{params:f,hasValidParams:!0}}function v({page:a,i18n:b,basePath:c,rewrites:d,pageIsDynamic:e,trailingSlash:l,caseSensitive:m}){let p,q,w;return e&&(p=(0,h.getNamedRouteRegex)(a,{prefixRouteKeys:!1}),w=(q=(0,i.getRouteMatcher)(p))(a)),{handleRewrites:function(h,i){let n=structuredClone(i),o={},p=n.pathname,r=d=>{let i=(0,g.getPathMatch)(d.source+(l?"(/)?":""),{removeUnnamedParams:!0,strict:!0,sensitive:!!m});if(!n.pathname)return!1;let k=i(n.pathname);if((d.has||d.missing)&&k){let a=(0,j.matchHas)(h,n.query,d.has,d.missing);a?Object.assign(k,a):k=!1}if(k){let{parsedDestination:g,destQuery:h}=(0,j.prepareDestination)({appendParamsToQuery:!0,destination:d.destination,params:k,query:n.query});if(g.protocol)return!0;if(Object.assign(o,h,k),Object.assign(n.query,g.query),delete g.query,Object.assign(n,g),!(p=n.pathname))return!1;if(c&&(p=p.replace(RegExp(`^${c}`),"")||"/"),b){let a=(0,f.normalizeLocalePath)(p,b.locales);p=a.pathname,n.query.nextInternalLocale=a.detectedLocale||k.nextInternalLocale}if(p===a)return!0;if(e&&q){let a=q(p);if(a)return n.query={...n.query,...a},!0}}return!1};for(let a of d.beforeFiles||[])r(a);if(p!==a){let b,c=!1;for(let a of d.afterFiles||[])if(c=r(a))break;if(!c&&!((b=(0,k.removeTrailingSlash)(p||""))===(0,k.removeTrailingSlash)(a)||(null==q?void 0:q(b)))){for(let a of d.fallback||[])if(c=r(a))break}}return{rewriteParams:o,rewrittenParsedUrl:n}},defaultRouteRegex:p,dynamicRouteMatcher:q,defaultRouteMatches:w,normalizeQueryParams:function(a,b){for(let[c,d]of(delete a.nextInternalLocale,Object.entries(a))){let e=(0,n.normalizeNextQueryParam)(c);e&&(delete a[c],b.add(e),void 0!==d&&(a[e]=Array.isArray(d)?d.map(a=>(0,o.decodeQueryPathParameter)(a)):(0,o.decodeQueryPathParameter)(d)))}},getParamsFromRouteMatches:function(a){if(!p)return null;let{groups:b,routeKeys:c}=p,d=(0,i.getRouteMatcher)({re:{exec:a=>{let d=Object.fromEntries(new URLSearchParams(a));for(let[a,b]of Object.entries(d)){let c=(0,n.normalizeNextQueryParam)(a);c&&(d[c]=b,delete d[a])}let e={};for(let a of Object.keys(c)){let f=c[a];if(!f)continue;let g=b[f],h=d[a];if(!g.optional&&!h)return null;e[g.pos]=h}return e}},groups:b})(a);return d||null},normalizeDynamicRouteParams:(a,b)=>p&&w?u(a,p,w,b):{params:{},hasValidParams:!1},normalizeCdnUrl:(a,b)=>s(a,b),interpolateDynamicPath:(a,b)=>t(a,b,p),filterInternalQuery:(a,b)=>r(a,b)}}function w(a,b){return"string"==typeof a[m.NEXT_CACHE_REVALIDATED_TAGS_HEADER]&&a[m.NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER]===b?a[m.NEXT_CACHE_REVALIDATED_TAGS_HEADER].split(","):[]}},55511:a=>{"use strict";a.exports=require("crypto")},56840:(a,b,c)=>{"use strict";c.r(b),c.d(b,{cleanupProviderConnections:()=>s,createProviderConnection:()=>n,deleteProviderConnection:()=>p,deleteProviderConnectionsByProvider:()=>q,getProviderConnectionById:()=>l,getProviderConnections:()=>k,reorderProviderConnections:()=>r,updateProviderConnection:()=>o});var d=c(43892),e=c(59339),f=c(33323);let g=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount","idToken","lastRefreshAt"];function h(a,b){if(b?.testStatus!=="active")return b;let c={...b,testStatus:"active",lastError:Object.hasOwn(b,"lastError")?b.lastError:null,lastErrorAt:Object.hasOwn(b,"lastErrorAt")?b.lastErrorAt:null,errorCode:null,rateLimitedUntil:null,backoffLevel:0};for(let b of Object.keys(a||{}))b.startsWith("modelLock_")&&(c[b]=null);return c}function i(a){return a?{...(0,f.q)(a.data,{}),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive||!0===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function j(a,b){let c=function(a){let{id:b,provider:c,authType:d,name:e,email:g,priority:h,isActive:i,createdAt:j,updatedAt:k,...l}=a;return{id:b,provider:c,authType:d,name:e??null,email:g??null,priority:h??null,isActive:+(!1!==i),data:(0,f.s)(l),createdAt:j,updatedAt:k}}(b);a.run(`INSERT INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt)
|
|
12
12
|
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
13
13
|
ON CONFLICT(id) DO UPDATE SET
|
|
14
14
|
provider=excluded.provider, authType=excluded.authType, name=excluded.name,
|