tokenhop 1.0.0 → 1.0.3
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 +4 -4
- package/app/.next-cli-build/build-manifest.json +3 -3
- package/app/.next-cli-build/prerender-manifest.json +3 -3
- package/app/.next-cli-build/react-loadable-manifest.json +43 -43
- package/app/.next-cli-build/required-server-files.json +1 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/[...missing]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/[...missing]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/[...missing]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +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/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/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 +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +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 +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/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/ui-kit/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ui-kit/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ui-kit/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/_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 +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -5
- 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/cli-tool-settings/[toolId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tool-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
- 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-settings/route.js +3 -3
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
- 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 +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +3 -3
- 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 +3 -3
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/headroom/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/headroom/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/test/route.js +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/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/gateway/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/home/live-routes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/home/quota/route.js +1 -1
- package/app/.next-cli-build/server/app/api/home/quota/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/home/summary/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +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 +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/catalog-sync/route.js +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 +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 +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/codex/bulk-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +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 +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 +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 +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/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 +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 +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js +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/settings/config/export/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/config/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/config/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/environment/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shell/savings-milestone/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shell/summary/route.js +1 -1
- package/app/.next-cli-build/server/app/api/shell/summary/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +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 +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js +9 -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 +9 -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 +2 -2
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +9 -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 +9 -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/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/last-activity/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 +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/savings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +9 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[...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 +2 -2
- 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/shutdown/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 +5 -5
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +9 -9
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +11 -11
- 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/media-providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/media-providers.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/media-providers.segments/_full.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/media-providers.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +11 -11
- 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 +10 -10
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/pxpipe.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +10 -10
- 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 +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/settings.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/settings.segments/_full.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/settings.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +8 -8
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/ui-kit.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/ui-kit.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/ui-kit.segments/!KGRhc2hib2FyZCk/dashboard/ui-kit/__PAGE__.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/ui-kit.segments/_full.segment.rsc +10 -10
- package/app/.next-cli-build/server/app/dashboard/ui-kit.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 +11 -11
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +11 -11
- 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 +11 -11
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +11 -11
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
- 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 +6 -6
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
- 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 +6 -6
- 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/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +5 -5
- 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/skills/[...slug]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +4 -4
- package/app/.next-cli-build/server/chunks/1004.js +1 -0
- package/app/.next-cli-build/server/chunks/1152.js +1 -1
- package/app/.next-cli-build/server/chunks/1215.js +1 -0
- package/app/.next-cli-build/server/chunks/1336.js +1 -1
- package/app/.next-cli-build/server/chunks/1432.js +1 -1
- package/app/.next-cli-build/server/chunks/1533.js +1 -1
- package/app/.next-cli-build/server/chunks/2217.js +1 -1
- package/app/.next-cli-build/server/chunks/2380.js +7 -7
- package/app/.next-cli-build/server/chunks/24.js +1 -1
- package/app/.next-cli-build/server/chunks/2460.js +1 -1
- package/app/.next-cli-build/server/chunks/257.js +10 -0
- package/app/.next-cli-build/server/chunks/2592.js +1 -1
- package/app/.next-cli-build/server/chunks/2705.js +9 -0
- package/app/.next-cli-build/server/chunks/318.js +9 -16
- package/app/.next-cli-build/server/chunks/3593.js +1 -1
- package/app/.next-cli-build/server/chunks/3919.js +1 -1
- package/app/.next-cli-build/server/chunks/3943.js +1 -1
- package/app/.next-cli-build/server/chunks/4123.js +1 -1
- package/app/.next-cli-build/server/chunks/4125.js +1 -1
- package/app/.next-cli-build/server/chunks/4334.js +1 -1
- package/app/.next-cli-build/server/chunks/4406.js +2 -2
- package/app/.next-cli-build/server/chunks/4521.js +1 -1
- package/app/.next-cli-build/server/chunks/4730.js +1 -1
- package/app/.next-cli-build/server/chunks/4780.js +1 -1
- package/app/.next-cli-build/server/chunks/5055.js +1 -0
- package/app/.next-cli-build/server/chunks/5230.js +1 -0
- package/app/.next-cli-build/server/chunks/{1026.js → 5260.js} +1 -1
- package/app/.next-cli-build/server/chunks/5335.js +1 -0
- package/app/.next-cli-build/server/chunks/5559.js +9 -0
- package/app/.next-cli-build/server/chunks/5615.js +1 -1
- package/app/.next-cli-build/server/chunks/5649.js +1 -0
- package/app/.next-cli-build/server/chunks/5765.js +1 -0
- package/app/.next-cli-build/server/chunks/5827.js +1 -0
- package/app/.next-cli-build/server/chunks/5869.js +9 -0
- package/app/.next-cli-build/server/chunks/5908.js +1 -0
- package/app/.next-cli-build/server/chunks/620.js +1 -0
- package/app/.next-cli-build/server/chunks/6252.js +1 -1
- package/app/.next-cli-build/server/chunks/6328.js +1 -0
- package/app/.next-cli-build/server/chunks/6355.js +1 -0
- package/app/.next-cli-build/server/chunks/6493.js +1 -0
- package/app/.next-cli-build/server/chunks/6496.js +1 -1
- package/app/.next-cli-build/server/chunks/7211.js +1 -1
- package/app/.next-cli-build/server/chunks/7485.js +9 -0
- package/app/.next-cli-build/server/chunks/7616.js +1 -1
- package/app/.next-cli-build/server/chunks/7695.js +1 -0
- package/app/.next-cli-build/server/chunks/7716.js +1 -1
- package/app/.next-cli-build/server/chunks/7819.js +1 -1
- package/app/.next-cli-build/server/chunks/7828.js +1 -1
- package/app/.next-cli-build/server/chunks/8171.js +1 -1
- package/app/.next-cli-build/server/chunks/8255.js +1 -1
- package/app/.next-cli-build/server/chunks/8261.js +1 -0
- package/app/.next-cli-build/server/chunks/8416.js +1 -1
- package/app/.next-cli-build/server/chunks/878.js +1 -0
- package/app/.next-cli-build/server/chunks/8895.js +13 -13
- package/app/.next-cli-build/server/chunks/8954.js +1 -0
- package/app/.next-cli-build/server/chunks/8988.js +1 -0
- package/app/.next-cli-build/server/chunks/9016.js +9 -0
- package/app/.next-cli-build/server/chunks/9243.js +1 -0
- package/app/.next-cli-build/server/chunks/9326.js +1 -0
- package/app/.next-cli-build/server/chunks/9343.js +1 -1
- package/app/.next-cli-build/server/chunks/9421.js +1 -1
- package/app/.next-cli-build/server/chunks/9489.js +3 -0
- package/app/.next-cli-build/server/chunks/9578.js +1 -1
- package/app/.next-cli-build/server/chunks/9594.js +1 -0
- package/app/.next-cli-build/server/chunks/965.js +1 -1
- package/app/.next-cli-build/server/chunks/9899.js +1 -1
- package/app/.next-cli-build/server/instrumentation.js +1 -1
- package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware-react-loadable-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
- package/app/.next-cli-build/static/chunks/{198-145d0ed2ec3c54f5.js → 198-7c5bbea89ef8bc14.js} +1 -1
- package/app/.next-cli-build/static/chunks/{3670-e7a22341025498f8.js → 3670-d6dc44bc181c9b8a.js} +1 -1
- package/app/.next-cli-build/static/chunks/5014-a5d960f4c6bc6297.js +1 -0
- package/app/.next-cli-build/static/chunks/{6174.18e2c57e892d721a.js → 6174.a18fedfa3d765b1e.js} +1 -1
- package/app/.next-cli-build/static/chunks/6448-71a8c2ac8d9ecc09.js +1 -0
- package/app/.next-cli-build/static/chunks/7899-a12f962af02edf7f.js +1 -0
- package/app/.next-cli-build/static/chunks/8105-71d1aea9708976db.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/{page-8147ae8fa9c04381.js → page-42bfc760fbea3b96.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/{page-9cbf62f78701882a.js → page-1df6ad7d9adfc2a7.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-5f91e148400a241b.js → page-59ee0b412f972940.js} +3 -3
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/{page-dac4ab98fc595054.js → page-25d06b77bd1a5edb.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-463f9fa33be9426a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/{page-06f4e52ee3b63f82.js → page-5bb99ecaf48bde39.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/ui-kit/{page-6c982cc50b6af101.js → page-1bc393f267badc04.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-923f864ec0be0fc8.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-dd9d1e49b2f69197.js → layout-a94f45e334f1841b.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/landing/{page-02b7bfebd65c41f1.js → page-98f05847e3372b16.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/{layout-c266f1acedfb4651.js → layout-29d74e164758a126.js} +1 -1
- package/app/.next-cli-build/static/chunks/webpack-1e19a4b05298b49d.js +1 -0
- package/app/.next-cli-build/static/css/{9f0b95a0d0bc5e51.css → ffa1d9c3cbb4e959.css} +1 -1
- package/app/custom-server.js +0 -37
- package/app/package.json +4 -5
- package/app/server.js +1 -1
- package/app/src/lib/db/adapters/sqljsAdapter.js +39 -4
- package/app/src/lib/oauth/services/xai.js +19 -12
- package/app/src/shared/services/quotaAutoPing.js +43 -8
- package/app/src/shared/services/quotaSnapshotPoller.js +2 -1
- package/app/src/sse/services/backgroundTokenRefresh.js +13 -1
- package/package.json +1 -1
- package/src/cli/menus/combos.js +3 -1
- package/app/.next-cli-build/server/chunks/1764.js +0 -1
- package/app/.next-cli-build/server/chunks/2384.js +0 -1
- package/app/.next-cli-build/server/chunks/3093.js +0 -1
- package/app/.next-cli-build/server/chunks/3306.js +0 -1
- package/app/.next-cli-build/server/chunks/331.js +0 -1
- package/app/.next-cli-build/server/chunks/3414.js +0 -1
- package/app/.next-cli-build/server/chunks/3558.js +0 -1
- package/app/.next-cli-build/server/chunks/3586.js +0 -1
- package/app/.next-cli-build/server/chunks/3676.js +0 -1
- package/app/.next-cli-build/server/chunks/4037.js +0 -1
- package/app/.next-cli-build/server/chunks/4199.js +0 -2
- package/app/.next-cli-build/server/chunks/4278.js +0 -1
- package/app/.next-cli-build/server/chunks/6158.js +0 -1
- package/app/.next-cli-build/server/chunks/6354.js +0 -1
- package/app/.next-cli-build/server/chunks/6734.js +0 -1
- package/app/.next-cli-build/server/chunks/6769.js +0 -1
- package/app/.next-cli-build/server/chunks/7261.js +0 -1
- package/app/.next-cli-build/server/chunks/7901.js +0 -1
- package/app/.next-cli-build/server/chunks/8372.js +0 -1
- package/app/.next-cli-build/server/chunks/8635.js +0 -3
- package/app/.next-cli-build/server/chunks/994.js +0 -1
- package/app/.next-cli-build/static/chunks/5014-a441cde708542153.js +0 -1
- package/app/.next-cli-build/static/chunks/6448-4eabf683083596e6.js +0 -1
- package/app/.next-cli-build/static/chunks/7899-e6a70cb9d3684f7f.js +0 -1
- package/app/.next-cli-build/static/chunks/8105-5c7e7c73b4bd532d.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-9fadf2c38665c20c.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-7571538830147099.js +0 -1
- package/app/.next-cli-build/static/chunks/webpack-187fa25c98ba99f3.js +0 -1
- /package/app/.next-cli-build/static/{3Qm_WgU2xvFJ9U_G7SKhT → gdVYVwJMM6JES9Y1KPQyw}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{3Qm_WgU2xvFJ9U_G7SKhT → gdVYVwJMM6JES9Y1KPQyw}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=24,exports.ids=[24],exports.modules={24:(a,b,c)=>{c.r(b),c.d(b,{DEFAULT_CAPABILITIES:()=>h,MODEL_CAPABILITIES:()=>k,PATTERN_CAPABILITIES:()=>p,PROVIDER_CAPABILITIES:()=>o,capabilitiesFromServiceKind:()=>j,getCapabilitiesForModel:()=>v,setCatalogSource:()=>s});var d=c(58920);let e="[-_/:.]",f=RegExp(`(^|${e})(image|img)(${e}|$)|stable-image|gen[0-9]_image|nanobanana|imagine|t2v|i2v|flux|dall|sdxl|diffusion|embed|rerank|guard|moderation|tts|stt|whisper|voice|speech|audio`,"i"),g=RegExp(`(^|${e})(vision|vl|vlm|multimodal|omni|visual)(${e}|$)|[0-9]\\.[0-9]+v(${e}|$)|(^|${e})glm-[0-9]+v(${e}|$)|(^|[-_/:.])(llava|pixtral|internvl|cogvlm|minicpm-v|moondream|idefics|fuyu)`,"i"),h={vision:!1,pdf:!1,audioInput:!1,videoInput:!1,imageOutput:!1,audioOutput:!1,search:!1,tools:!0,reasoning:!1,thinkingFormat:null,thinkingCanDisable:!0,thinkingRange:null,thinkingEffortSupported:!1,contextWindow:2e5,maxOutput:64e3},i={imageToText:{vision:!0},image:{imageOutput:!0},stt:{audioInput:!0},tts:{audioOutput:!0},embedding:{tools:!1}};function j(a){return i[a]||null}let k={"claude-fable-5-1":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},"claude-opus-5-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},"claude-opus-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-thinking-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.7":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-7":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.8":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-8":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.8-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-8-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4.6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4-6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-thinking-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"gpt-image-1":{imageOutput:!0,tools:!1},"glm-5.3-flash":{vision:!0,videoInput:!0,pdf:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:1e6,maxOutput:131072},"glm-4.6v":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:128e3,maxOutput:32768},"glm-4.5v":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:64e3,maxOutput:16384},"deepseek-v4-flash-vision-exp":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"deepseek-flash":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:128e3,maxOutput:64e3},"vision-model":{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6},"coder-model":{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6},"kimi-k3":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072},k3:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072},"kimi-for-coding":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-for-coding-highspeed":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-k2.7-code":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-k2.7-code-highspeed":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"muse-spark-1.2-contributor-free":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"muse-spark-1.3-contributor-free":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"union-alpha":{vision:!0,contextWindow:262144,maxOutput:131072}},l={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},m={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:372e3,maxOutput:128e3},n={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},o={nvidia:{"minimaxai/minimax-m2.7":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:131072},"minimaxai/minimax-m3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:512e3,maxOutput:131072},"z-ai/glm-5.2":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:128e3},"deepseek-ai/deepseek-v4-pro":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536},"deepseek-ai/deepseek-v4-flash":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536}},codex:{"gpt-6-astra":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},"gpt-5.6-sol":m,"gpt-5.6-sol-review":m,"gpt-5.6-terra":n,"gpt-5.6-terra-review":n,"gpt-5.6-luna":n,"gpt-5.6-luna-review":n},kiro:{"gpt-5.6-sol":l,"gpt-5.6-terra":l,"gpt-5.6-luna":l,"gpt-5.6-sol-thinking":l,"gpt-5.6-terra-thinking":l,"gpt-5.6-luna-thinking":l,"gpt-5.6-sol-agentic":l,"gpt-5.6-terra-agentic":l,"gpt-5.6-luna-agentic":l,"gpt-5.6-sol-thinking-agentic":l,"gpt-5.6-terra-thinking-agentic":l,"gpt-5.6-luna-thinking-agentic":l},"codebuddy-cn":{"glm-5.2":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:48e3},"glm-5.1":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:48e3},"glm-5.0":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:48e3},"glm-5v-turbo":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:64e3},"glm-4.7":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:48e3},"minimax-m3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:512e3,maxOutput:128e3},"kimi-k2.7":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},"kimi-k2.6":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},hy3:{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:192e3,maxOutput:64e3},"hy4-preview":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:64e3},"glm-5.3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:48e3},"glm-5.3-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:32e3},"kimi-k3-1":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:32e3},"deepseek-v4-pro":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:5e4},"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:128e3}},"codebuddy-intl":{"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:128e3}},qoder:{ultimate:{vision:!0,reasoning:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},performance:{vision:!0,reasoning:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},dmodel:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},dfmodel:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},gmodel:{reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},gfmodel:{vision:!0,reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},kmodel_latest:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},kmodel:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:65536},mmodel:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:512e3},qmodel_latest:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qmodel:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qfmodel:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qmodel_38max:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536}},poolside:{"laguna-s-2.1":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:32e3},"laguna-xs-2.1":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},ollama:{"deepseek-v4.1-flash:cloud":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3}}},p=[{pattern:"*claude*opus-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude*opus-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.8*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*haiku*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*opus*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*sonnet*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*fable*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude*mythos*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude-3*",caps:{vision:!0}},{pattern:"*claude*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*gemini*image*",caps:{vision:!0,imageOutput:!0,contextWindow:1048576}},{pattern:"*gemini-3.8*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-3.7*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-3*pro*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65535}},{pattern:"*gemini-3*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2.5*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-budget",thinkingRange:{min:0,max:24576},contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2*",caps:{vision:!0,audioInput:!0,videoInput:!0,search:!0,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini*",caps:{vision:!0,search:!0,contextWindow:1048576}},{pattern:"*gemma*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*nanobanana*",caps:{vision:!0,imageOutput:!0}},{pattern:"*gpt-6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3}},{pattern:"*gpt-5*image*",caps:{imageOutput:!0}},{pattern:"*gpt-5*codex*",caps:{reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-4o*",caps:{vision:!0,search:!0,contextWindow:128e3,maxOutput:16384}},{pattern:"*gpt-4.1*",caps:{vision:!0,contextWindow:1e6,maxOutput:32768}},{pattern:"*gpt-4-turbo*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*gpt-4*",caps:{contextWindow:128e3}},{pattern:"*gpt-3.5*",caps:{contextWindow:16385,maxOutput:4096}},{pattern:"*gpt-oss*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1-mini*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o4*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*grok*image*",caps:{imageOutput:!0}},{pattern:"*grok-code*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:5e5}},{pattern:"*grok-4.5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:64e3}},{pattern:"*grok-4*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-3*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:131072}},{pattern:"*grok*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*qwen*vl*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwen*omni*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144,maxOutput:65536}},{pattern:"*qwen*coder*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6}},{pattern:"*qwen*max*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.5*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.6*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.7*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*plus*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*235b*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwq*",caps:{reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:131072}},{pattern:"*qwen*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*kimi*k3*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072}},{pattern:"*kimi*for-coding*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536}},{pattern:"*kimi*k2.7*code*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536}},{pattern:"*kimi*k2*",caps:{vision:!0,reasoning:!0,thinkingFormat:"kimi",contextWindow:262144,maxOutput:262144}},{pattern:"*kimi*",caps:{reasoning:!0,thinkingFormat:"kimi",contextWindow:262144}},{pattern:"*glm-5.3*",caps:{reasoning:!0,thinkingFormat:"zai",thinkingEffortSupported:!0,contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-5.2*",caps:{reasoning:!0,thinkingFormat:"zai",thinkingEffortSupported:!0,contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-5*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4.7*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*glm*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*deepseek-v4.*",caps:{vision:!0,reasoning:!0,thinkingFormat:"deepseek",thinkingEffortSupported:!0,contextWindow:1e6,maxOutput:128e3}},{pattern:"*deepseek-v4*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingEffortSupported:!0,contextWindow:1e6,maxOutput:384e3}},{pattern:"*reasoner*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-r*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-chat*",caps:{contextWindow:128e3}},{pattern:"*deepseek*",caps:{reasoning:!0,thinkingFormat:"deepseek",contextWindow:128e3}},{pattern:"*minimax*image*",caps:{imageOutput:!0}},{pattern:"*minimax-m3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"minimax",contextWindow:1048576,maxOutput:512e3}},{pattern:"*minimax-m2.7*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:204800,maxOutput:131072}},{pattern:"*minimax*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:131072}},{pattern:"*mimo*v2.5*",caps:{vision:!0,audioInput:!0,videoInput:!0,contextWindow:1048576,maxOutput:131072}},{pattern:"*mimo*omni*",caps:{vision:!0,audioInput:!0,contextWindow:262144,maxOutput:131072}},{pattern:"*mimo*",caps:{vision:!0,contextWindow:262144,maxOutput:131072}},{pattern:"*llama-4*",caps:{vision:!0,contextWindow:1e6}},{pattern:"*llama*",caps:{contextWindow:128e3}},{pattern:"*codestral*",caps:{contextWindow:256e3}},{pattern:"*mistral-large*",caps:{vision:!0,contextWindow:256e3}},{pattern:"*mistral*",caps:{contextWindow:128e3}},{pattern:"*command-a-vision*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*command*",caps:{contextWindow:128e3}},{pattern:"*sonar*",caps:{search:!0,contextWindow:128e3}},{pattern:"*pplx*",caps:{search:!0,contextWindow:128e3}},{pattern:"*perplexity*",caps:{search:!0,contextWindow:128e3}},{pattern:"*laguna-s-2.1*free*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},{pattern:"*laguna-s-2.1*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:32e3}},{pattern:"*laguna*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},{pattern:"*muse*spark*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072}},{pattern:"*hunyuan*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"hy3*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"*step-*",caps:{reasoning:!0,thinkingFormat:"step",contextWindow:128e3}},{pattern:"*nemotron*",caps:{reasoning:!0,contextWindow:128e3}},{pattern:"*ling-*",caps:{reasoning:!0,contextWindow:128e3}}],q=["vision","pdf","audioInput","videoInput"],r=null;function s(a){r=a,"u">typeof globalThis&&(globalThis.__9rCatalogSource=a)}function t(a,b,c){let d={...h,...a},e=r||("u"<typeof globalThis?null:r=globalThis.__9rCatalogSource||null);if(e){let a=e.getModalities(b,c);if(a)for(let b of q)!0===a[b]&&(d[b]=!0);let f=e.getLimits(b,c);f&&(f.contextWindow>0&&(d.contextWindow=f.contextWindow),f.maxOutput>0&&(d.maxOutput=f.maxOutput))}return!d.vision&&function(a){if(!a)return!1;let b=String(a).toLowerCase();return!f.test(b)&&g.test(b)}(c)&&(d.vision=!0),d}let u=new Set(["deepseek/deepseek-v4-pro","deepseek/deepseek-v4-flash","deepseek/deepseek-v4-flash-fast","zai-org/glm-5.3","zai-org/glm-5.2","zai-org/glm-5.2-fast","zai-org/glm-5.1","zai-org/glm-5","minimaxai/minimax-m2.7","minimax/minimax-m2.7-free","minimaxai/minimax-m2.5","xiaomi/mimo-v2.5-pro","qwen/qwen3.6-max-preview","qwen/qwen3.7-max","meituan/longcat-2.0:free","stepfun/step-3.5-flash","tencent/hy4-preview","tencent/hy3","tencent/hy3-paid","nvidia/nemotron-3-ultra-550b-a55b","poolside/laguna-s-2.1-free","inclusionai/ling-3.0-flash-free","inclusionai/ling-3.0-flash-sante:free"]);function v(a,b){if(!b)return{...h};let c=b.includes("/")?b.split("/").pop():b;if("commandcode"===a||"cmc"===a){let a=o.commandcode;return a?.[b]?{...h,...a[b]}:a?.[c]?{...h,...a[c]}:{...h,reasoning:!0,thinkingFormat:"commandcode",thinkingEffortSupported:!0,vision:!function(a){let b=String(a||"").toLowerCase();if(u.has(b))return!0;for(let a of u){let c=a.includes("/")?a.slice(a.lastIndexOf("/")+1):a;if(b===c||b.endsWith("/"+c))return!0}return!1}(b),contextWindow:1e6,maxOutput:384e3}}if(a){let d=o[a];if(d?.[b])return{...h,...d[b]};if(d?.[c])return{...h,...d[c]}}if(k[c])return{...h,...k[c]};if(k[b])return{...h,...k[b]};for(let{pattern:e,caps:f}of p)if((0,d.gH)(e,c)||(0,d.gH)(e,b))return t(f,a,b);return t(null,a,b)}}};
|
|
1
|
+
"use strict";exports.id=24,exports.ids=[24],exports.modules={24:(a,b,c)=>{c.r(b),c.d(b,{DEFAULT_CAPABILITIES:()=>h,MODEL_CAPABILITIES:()=>k,PATTERN_CAPABILITIES:()=>q,PROVIDER_CAPABILITIES:()=>p,capabilitiesFromServiceKind:()=>j,getCapabilitiesForModel:()=>y,setCatalogSource:()=>t,setCustomCapsSource:()=>x});var d=c(58920);let e="[-_/:.]",f=RegExp(`(^|${e})(image|img)(${e}|$)|stable-image|gen[0-9]_image|nanobanana|imagine|t2v|i2v|flux|dall|sdxl|diffusion|embed|rerank|guard|moderation|tts|stt|whisper|voice|speech|audio`,"i"),g=RegExp(`(^|${e})(vision|vl|vlm|multimodal|omni|visual)(${e}|$)|[0-9]\\.[0-9]+v(${e}|$)|(^|${e})glm-[0-9]+v(${e}|$)|(^|[-_/:.])(llava|pixtral|internvl|cogvlm|minicpm-v|moondream|idefics|fuyu)`,"i"),h={vision:!1,pdf:!1,audioInput:!1,videoInput:!1,imageOutput:!1,audioOutput:!1,search:!1,tools:!0,forcedToolChoice:!0,reasoning:!1,thinkingFormat:null,thinkingCanDisable:!0,thinkingRange:null,thinkingEffortSupported:!1,contextWindow:2e5,maxOutput:64e3},i={imageToText:{vision:!0},image:{imageOutput:!0},stt:{audioInput:!0},tts:{audioOutput:!0},embedding:{tools:!1}};function j(a){return i[a]||null}let k={"claude-fable-5-1":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3,forcedToolChoice:!1},"claude-opus-5-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3,forcedToolChoice:!1},"claude-sonnet-5-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3,forcedToolChoice:!1},"claude-opus-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-5-thinking-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.7":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-7":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.8":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-8":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4.8-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-opus-4-8-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4.6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-4-6":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-thinking":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"claude-sonnet-5-thinking-agentic":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3},"gpt-image-1":{imageOutput:!0,tools:!1},"glm-5.3-flash":{vision:!0,videoInput:!0,pdf:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:1e6,maxOutput:131072},"glm-4.6v":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:128e3,maxOutput:32768},"glm-4.5v":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"zai",contextWindow:64e3,maxOutput:16384},"deepseek-v4-flash-vision-exp":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3},"deepseek-flash":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:128e3,maxOutput:64e3},"vision-model":{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6},"coder-model":{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6},"kimi-k3":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072,forcedToolChoice:"any"},k3:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072,forcedToolChoice:"any"},"kimi-for-coding":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-for-coding-highspeed":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-k2.7-code":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"kimi-k2.7-code-highspeed":{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536},"muse-spark-1.2-contributor-free":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"muse-spark-1.3-contributor-free":{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072},"union-alpha":{vision:!0,contextWindow:262144,maxOutput:131072}},l={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},m={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:372e3,maxOutput:128e3},n={vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},o={"glm-5.3":{reasoning:!0,thinkingFormat:"zai",thinkingEffortSupported:!0,thinkingCanDisable:!1,contextWindow:2e5,maxOutput:128e3},"glm-5.3-flash":{...k["glm-5.3-flash"],thinkingEffortSupported:!0,thinkingCanDisable:!1}},p={glm:o,"glm-cn":o,nvidia:{"minimaxai/minimax-m2.7":{reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:131072},"minimaxai/minimax-m3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:512e3,maxOutput:131072},"z-ai/glm-5.2":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:128e3},"deepseek-ai/deepseek-v4-pro":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536},"deepseek-ai/deepseek-v4-flash":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:65536}},"opencode-go":{"glm-5.3-flash":{vision:!0,videoInput:!0,pdf:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:131072},"glm-5.3":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:128e3},"glm-5.2":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:128e3},"glm-5.1":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:128e3}},codex:{"gpt-6-astra":{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3},"gpt-5.6-sol":m,"gpt-5.6-sol-review":m,"gpt-5.6-terra":n,"gpt-5.6-terra-review":n,"gpt-5.6-luna":n,"gpt-5.6-luna-review":n},kiro:{"gpt-5.6-sol":l,"gpt-5.6-terra":l,"gpt-5.6-luna":l,"gpt-5.6-sol-thinking":l,"gpt-5.6-terra-thinking":l,"gpt-5.6-luna-thinking":l,"gpt-5.6-sol-agentic":l,"gpt-5.6-terra-agentic":l,"gpt-5.6-luna-agentic":l,"gpt-5.6-sol-thinking-agentic":l,"gpt-5.6-terra-thinking-agentic":l,"gpt-5.6-luna-thinking-agentic":l},"codebuddy-cn":{"glm-5.2":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:48e3},"glm-5.1":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:48e3},"glm-5.0":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:48e3},"glm-5v-turbo":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:64e3},"glm-4.7":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:48e3},"minimax-m3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:512e3,maxOutput:128e3},"kimi-k2.7":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},"kimi-k2.6":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:32e3},hy3:{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:192e3,maxOutput:64e3},"hy4-preview":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:64e3},"glm-5.3":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:48e3},"glm-5.3-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:32e3},"kimi-k3-1":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:32e3,forcedToolChoice:"any"},"deepseek-v4-pro":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:5e4},"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:128e3}},"codebuddy-intl":{"deepseek-v4.1-flash":{vision:!0,reasoning:!0,thinkingFormat:"openai",thinkingCanDisable:!0,contextWindow:1e6,maxOutput:128e3}},qoder:{ultimate:{vision:!0,reasoning:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},performance:{vision:!0,reasoning:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},dmodel:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},dfmodel:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},gmodel:{reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},gfmodel:{vision:!0,reasoning:!0,thinkingFormat:"zai",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3},kmodel_latest:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536,forcedToolChoice:"any"},kmodel:{vision:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:256e3,maxOutput:65536},mmodel:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:512e3},qmodel_latest:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qmodel:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qfmodel:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536},qmodel_38max:{vision:!0,reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:65536}},poolside:{"laguna-s-2.1":{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:32e3},"laguna-xs-2.1":{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},ollama:{"deepseek-v4.1-flash:cloud":{vision:!0,reasoning:!0,thinkingFormat:"deepseek",contextWindow:1e6,maxOutput:384e3}}},q=[{pattern:"*claude*opus-5-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3,forcedToolChoice:!1}},{pattern:"*claude*opus-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude*opus-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*opus-4.8*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*sonnet-4.7*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive"}},{pattern:"*claude*haiku*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*opus*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*sonnet-5-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,contextWindow:1e6,maxOutput:128e3,forcedToolChoice:!1}},{pattern:"*claude*sonnet*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*claude*fable-5-1*",caps:{vision:!0,reasoning:!0,search:!0,contextWindow:1e6,maxOutput:128e3,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,forcedToolChoice:!1}},{pattern:"*claude*fable*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude*mythos-5-1*",caps:{vision:!0,reasoning:!0,search:!0,contextWindow:1e6,maxOutput:128e3,thinkingFormat:"claude-adaptive",thinkingCanDisable:!1,forcedToolChoice:!1}},{pattern:"*claude*mythos*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget",contextWindow:1e6,maxOutput:128e3}},{pattern:"*claude-3*",caps:{vision:!0}},{pattern:"*claude*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"claude-budget"}},{pattern:"*gemini*image*",caps:{vision:!0,imageOutput:!0,contextWindow:1048576}},{pattern:"*gemini-3.8*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-3.7*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-3*pro*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65535}},{pattern:"*gemini-3*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-level",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2.5*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,search:!0,thinkingFormat:"gemini-budget",thinkingRange:{min:0,max:24576},contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini-2*",caps:{vision:!0,audioInput:!0,videoInput:!0,search:!0,contextWindow:1048576,maxOutput:65536}},{pattern:"*gemini*",caps:{vision:!0,search:!0,contextWindow:1048576}},{pattern:"*gemma*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*nanobanana*",caps:{vision:!0,imageOutput:!0}},{pattern:"*gpt-6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:272e3,maxOutput:128e3}},{pattern:"*gpt-5*image*",caps:{imageOutput:!0}},{pattern:"*gpt-5*codex*",caps:{reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:4e5,maxOutput:128e3}},{pattern:"*gpt-4o*",caps:{vision:!0,search:!0,contextWindow:128e3,maxOutput:16384}},{pattern:"*gpt-4.1*",caps:{vision:!0,contextWindow:1e6,maxOutput:32768}},{pattern:"*gpt-4-turbo*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*gpt-4*",caps:{contextWindow:128e3}},{pattern:"*gpt-3.5*",caps:{contextWindow:16385,maxOutput:4096}},{pattern:"*gpt-oss*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1-mini*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:128e3}},{pattern:"*o1*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*o4*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:1e5}},{pattern:"*grok*image*",caps:{imageOutput:!0}},{pattern:"*grok-code*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-4.6*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:5e5}},{pattern:"*grok-4.5*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:5e5,maxOutput:64e3}},{pattern:"*grok-4*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*grok-3*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:131072}},{pattern:"*grok*",caps:{vision:!0,reasoning:!0,search:!0,thinkingFormat:"openai",contextWindow:256e3}},{pattern:"*qwen*vl*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwen*omni*",caps:{vision:!0,audioInput:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:262144,maxOutput:65536}},{pattern:"*qwen*coder*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6}},{pattern:"*qwen*max*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.5*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.6*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen3.7*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*plus*",caps:{vision:!0,reasoning:!0,thinkingFormat:"qwen",contextWindow:1e6,maxOutput:65536}},{pattern:"*qwen*235b*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*qwq*",caps:{reasoning:!0,thinkingFormat:"qwen",thinkingCanDisable:!1,contextWindow:131072}},{pattern:"*qwen*",caps:{reasoning:!0,thinkingFormat:"qwen",contextWindow:262144}},{pattern:"*kimi*k3*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:1048576,maxOutput:131072,forcedToolChoice:"any"}},{pattern:"*kimi*for-coding*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536}},{pattern:"*kimi*k2.7*code*",caps:{vision:!0,videoInput:!0,reasoning:!0,thinkingFormat:"kimi",thinkingCanDisable:!1,contextWindow:262144,maxOutput:65536}},{pattern:"*kimi*k2*",caps:{vision:!0,reasoning:!0,thinkingFormat:"kimi",contextWindow:262144,maxOutput:262144}},{pattern:"*kimi*",caps:{reasoning:!0,thinkingFormat:"kimi",contextWindow:262144}},{pattern:"*glm-5.3*",caps:{reasoning:!0,thinkingFormat:"zai",thinkingEffortSupported:!0,contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-5.2*",caps:{reasoning:!0,thinkingFormat:"zai",thinkingEffortSupported:!0,contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-5*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4.7*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5,maxOutput:128e3}},{pattern:"*glm-4*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*glm*",caps:{reasoning:!0,thinkingFormat:"zai",contextWindow:2e5}},{pattern:"*deepseek-v4.*",caps:{vision:!0,reasoning:!0,thinkingFormat:"deepseek",thinkingEffortSupported:!0,contextWindow:1e6,maxOutput:128e3}},{pattern:"*deepseek-v4*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingEffortSupported:!0,contextWindow:1e6,maxOutput:384e3}},{pattern:"*reasoner*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-r*",caps:{reasoning:!0,thinkingFormat:"deepseek",thinkingCanDisable:!1,contextWindow:128e3}},{pattern:"*deepseek-chat*",caps:{contextWindow:128e3}},{pattern:"*deepseek*",caps:{reasoning:!0,thinkingFormat:"deepseek",contextWindow:128e3}},{pattern:"*minimax*image*",caps:{imageOutput:!0}},{pattern:"*minimax-m3*",caps:{vision:!0,reasoning:!0,thinkingFormat:"minimax",contextWindow:1048576,maxOutput:512e3}},{pattern:"*minimax-m2.7*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:204800,maxOutput:131072}},{pattern:"*minimax*",caps:{reasoning:!0,thinkingFormat:"minimax",thinkingCanDisable:!1,contextWindow:2e5,maxOutput:131072}},{pattern:"*mimo*v2.5*",caps:{vision:!0,audioInput:!0,videoInput:!0,contextWindow:1048576,maxOutput:131072}},{pattern:"*mimo*omni*",caps:{vision:!0,audioInput:!0,contextWindow:262144,maxOutput:131072}},{pattern:"*mimo*preview*",caps:{vision:!0,reasoning:!0,thinkingFormat:"mimo",contextWindow:262144,maxOutput:131072}},{pattern:"*mimo*",caps:{vision:!0,contextWindow:262144,maxOutput:131072}},{pattern:"*llama-4*",caps:{vision:!0,contextWindow:1e6}},{pattern:"*llama*",caps:{contextWindow:128e3}},{pattern:"*codestral*",caps:{contextWindow:256e3}},{pattern:"*mistral-large*",caps:{vision:!0,contextWindow:256e3}},{pattern:"*mistral*",caps:{contextWindow:128e3}},{pattern:"*command-a-vision*",caps:{vision:!0,contextWindow:128e3}},{pattern:"*command*",caps:{contextWindow:128e3}},{pattern:"*sonar*",caps:{search:!0,contextWindow:128e3}},{pattern:"*pplx*",caps:{search:!0,contextWindow:128e3}},{pattern:"*perplexity*",caps:{search:!0,contextWindow:128e3}},{pattern:"*laguna-s-2.1*free*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},{pattern:"*laguna-s-2.1*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:1e6,maxOutput:32e3}},{pattern:"*laguna*",caps:{reasoning:!0,thinkingFormat:"openai",contextWindow:2e5,maxOutput:32e3}},{pattern:"*muse*spark*",caps:{vision:!0,reasoning:!0,thinkingFormat:"openai",contextWindow:1048576,maxOutput:131072}},{pattern:"*hunyuan*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"hy3*",caps:{reasoning:!0,thinkingFormat:"hunyuan",contextWindow:262144,maxOutput:262144}},{pattern:"*step-*",caps:{reasoning:!0,thinkingFormat:"step",contextWindow:128e3}},{pattern:"*nemotron*",caps:{reasoning:!0,contextWindow:128e3}},{pattern:"*ling-*",caps:{reasoning:!0,contextWindow:128e3}}],r=["vision","pdf","audioInput","videoInput"],s=null;function t(a){s=a,"u">typeof globalThis&&(globalThis.__9rCatalogSource=a)}function u(a,b,c){let d={...h,...a},e=s||("u"<typeof globalThis?null:s=globalThis.__9rCatalogSource||null);if(e){let a=e.getModalities(b,c);if(a)for(let b of r)!0===a[b]&&(d[b]=!0);let f=e.getLimits(b,c);f&&(f.contextWindow>0&&(d.contextWindow=f.contextWindow),f.maxOutput>0&&(d.maxOutput=f.maxOutput))}return!d.vision&&function(a){if(!a)return!1;let b=String(a).toLowerCase();return!f.test(b)&&g.test(b)}(c)&&(d.vision=!0),d}let v=new Set(["deepseek/deepseek-v4-pro","deepseek/deepseek-v4-flash","deepseek/deepseek-v4-flash-fast","zai-org/glm-5.3","zai-org/glm-5.2","zai-org/glm-5.2-fast","zai-org/glm-5.1","zai-org/glm-5","minimaxai/minimax-m2.7","minimax/minimax-m2.7-free","minimaxai/minimax-m2.5","xiaomi/mimo-v2.5-pro","qwen/qwen3.6-max-preview","qwen/qwen3.7-max","meituan/longcat-2.0:free","stepfun/step-3.5-flash","tencent/hy4-preview","tencent/hy3","tencent/hy3-paid","nvidia/nemotron-3-ultra-550b-a55b","poolside/laguna-s-2.1-free","inclusionai/ling-3.0-flash-free","inclusionai/ling-3.0-flash-sante:free"]),w=null;function x(a){w=a||null,"u">typeof globalThis&&(globalThis.__9rCustomCapsSource=w)}function y(a,b){let c,e=function(a,b){if(!b)return{...h};let c=b.includes("/")?b.split("/").pop():b;if("commandcode"===a||"cmc"===a){let a=p.commandcode;return a?.[b]?{...h,...a[b]}:a?.[c]?{...h,...a[c]}:{...h,reasoning:!0,thinkingFormat:"commandcode",thinkingEffortSupported:!0,vision:!function(a){let b=String(a||"").toLowerCase();if(v.has(b))return!0;for(let a of v){let c=a.includes("/")?a.slice(a.lastIndexOf("/")+1):a;if(b===c||b.endsWith("/"+c))return!0}return!1}(b),contextWindow:1e6,maxOutput:384e3}}if(a){let d=p[a];if(d?.[b])return{...h,...d[b]};if(d?.[c])return{...h,...d[c]}}if(k[c])return{...h,...k[c]};if(k[b])return{...h,...k[b]};for(let{pattern:e,caps:f}of q)if((0,d.gH)(e,c)||(0,d.gH)(e,b))return u(f,a,b);return u(null,a,b)}(a,b),f=b&&(c=w||globalThis?.__9rCustomCapsSource)&&a&&c.get(`${a}|${b}`)||null;if(!f)return e;let g={};for(let[a,b]of Object.entries(f))"boolean"==typeof b&&(g[a]=b);return{...e,...g}}}};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
exports.id=2460,exports.ids=[2460],exports.modules={7985:(a,b,c)=>{"use strict";c.d(b,{Jm:()=>i,N:()=>o,eI:()=>j,eW:()=>l,mH:()=>n,uZ:()=>r,wu:()=>p,x7:()=>q});var d=c(15081),e=c(31673);c(42655);var f=c(31223);globalThis.__tokenhopSamlRequestCache||(globalThis.__tokenhopSamlRequestCache=new e.InMemoryCacheProvider({keyExpirationPeriodMs:6e5}));let g=globalThis.__tokenhopSamlRequestCache,h=new Set;function i(a){if(!a||"string"!=typeof a)return"";let b=a.replace(/-----BEGIN CERTIFICATE-----/gi,"").replace(/-----END CERTIFICATE-----/gi,"").replace(/[^A-Za-z0-9+/=]/g,"");if(!b)return"";let c=b.match(/.{1,64}/g)||[];return`-----BEGIN CERTIFICATE-----
|
|
2
2
|
${c.join("\n")}
|
|
3
|
-
-----END CERTIFICATE-----`}function j(a){return!!(a?.samlEntryPoint&&a?.samlCert)}function k(a){return(a||"").replace(/\/+$/,"")}function l(a,b){let c=(b?.baseUrl||"").trim()||process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||"";if(c)return k(c);if(a){let b=a?.headers?.get?.("x-forwarded-proto")||"",c=a?.headers?.get?.("x-forwarded-host")||a?.headers?.get?.("host")||"";if(c){let d=(b||new URL(a.url).protocol||"http:").replace(/:$/,"");return`${d}://${c}`.replace(/\/+$/,"")}if(a.url)return k(new URL(a.url).origin)}return"http://localhost:20128"}function m(a,b){let c=i(a?.samlCert||"")||"-----BEGIN CERTIFICATE-----\nMIIC...DUMMY...\n-----END CERTIFICATE-----",e=`${b}/api/auth/saml/acs`;return new d.Qb({entryPoint:a?.samlEntryPoint||"https://example.com/sso",issuer:a?.samlIssuer||f.Hc.samlIssuerDefault,idpCert:c,cert:c,callbackUrl:e,acceptedClockSkewMs:6e4,wantAssertionsSigned:!0,validateInResponseTo:d.EK.always,requestIdExpirationPeriodMs:6e5,cacheProvider:g})}async function n(a,b){let c=l(a,b),d=m(b,c),e=await d.generateAuthorizeRequestAsync(!1,!1),f=e.match(/ID="([^"]+)"/),g=f?f[1]:"";return{authorizeUrl:await d._requestToUrlAsync(e,null,"authorize",{}),requestId:g}}async function o(a,b,c,d){if(!c)throw Error("Missing SAML request state (saml_state cookie); start sign-in again");if(!d?.samlCert)throw Error("IdP X.509 certificate (samlCert) is missing or not configured");let e=l(a,d),f=m(d,e),g=("object"==typeof b&&null!==b?b:{SAMLResponse:b}).SAMLResponse;if(!g)throw Error("Missing SAMLResponse parameter in assertion POST body");let i=Buffer.from(g,"base64").toString("utf8").match(/InResponseTo=["']([^"']+)["']/i),j=i?i[1]:null;if(!j||j!==c)throw Error(`InResponseTo mismatch: expected ${c}, received ${j||"none"}`);if(h.has(c))throw Error("SAML response for this request is already being processed");h.add(c);try{let a=await f.validatePostResponseAsync({SAMLResponse:g}),b=a?.profile||a;if(b?.inResponseTo!==c)throw Error("InResponseTo mismatch after validation");return b}finally{h.delete(c)}}function p(a,b){return m(b,a).generateServiceProviderMetadata()}function q(a={},b={}){if(!a)return"";let c=b.samlAttributeEmail;if(c&&a[c]){let b=a[c];return Array.isArray(b)?b[0]:String(b)}let d=["email","emailAddress","mail","nameID","nameId","upn","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"];for(let b of d)if(a[b]){let c=a[b];return Array.isArray(c)?c[0]:String(c)}if(a.attributes){for(let b of d)if(a.attributes[b]){let c=a.attributes[b];return Array.isArray(c)?c[0]:String(c)}}return""}function r(a={},b={}){if(!a)return"";let c=b.samlAttributeName;if(c&&a[c]){let b=a[c];return Array.isArray(b)?b[0]:String(b)}for(let b of["displayName","name","cn","commonName","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"])if(a[b]){let c=a[b];return Array.isArray(c)?c[0]:String(c)}if(a.givenName||a.sn||a.surname){let b=a.givenName||"",c=a.sn||a.surname||"",d=`${b} ${c}`.trim();if(d)return d}return q(a,b)}},11720:(a,b,c)=>{"use strict";c.d(b,{E8:()=>h,X8:()=>i});var d=c(70900);let e=null;async function f(a){try{let b=await a();(0,d.aj)(g(b))}catch{}}function g(a){let b={};for(let c of["retryPolicy","cooldowns","backoff","streamTimeouts"])a?.[c]!==void 0&&(b[c]=a[c]);return b}function h(a,b){!a||"object"!=typeof a||(Object.hasOwn(a,"retryPolicy")||Object.hasOwn(a,"cooldowns")||Object.hasOwn(a,"backoff")||Object.hasOwn(a,"streamTimeouts"))&&(0,d.aj)(g(b))}function i(a){return e??=f(a)}},13708:(a,b,c)=>{"use strict";function d({authMode:a,ssoType:b}={}){let c="sso"===a||"oidc"===a||"saml"===a,e=c||"both"===a,f="oidc"===a||"saml"===a?a:"saml"===b?"saml":"oidc";return{password:!c,oidc:e&&"oidc"===f,saml:e&&"saml"===f,protocol:f,ssoOnly:c}}c.d(b,{b:()=>d})},25334:(a,b,c)=>{"use strict";function d(a){return null==a?"":String(a).trim()}c.d(b,{k:()=>f});let e=["http:","https:","socks5:","socks4:","socks5h:","socks4a:"];function f({outboundProxyEnabled:a,outboundProxyUrl:b,outboundNoProxy:c}={}){if("u"<typeof process||!process.env)return;let g=d(b),h=d(c);if(!a){"1"===process.env.TOKENHOP_PROXY_MANAGED&&(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.NO_PROXY,delete process.env.TOKENHOP_PROXY_MANAGED,delete process.env.TOKENHOP_PROXY_URL,delete process.env.TOKENHOP_NO_PROXY);return}let i="1"===process.env.TOKENHOP_PROXY_MANAGED,j=!1;if(i&&(g||(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.TOKENHOP_PROXY_URL),h||(delete process.env.NO_PROXY,delete process.env.TOKENHOP_NO_PROXY)),g){let a=function(a){if(!a||/[\n\r`$]/.test(a))return null;try{let b=new URL(a);if(!e.includes(b.protocol))return null;return b.href}catch{return null}}(g);a&&(process.env.HTTP_PROXY=a,process.env.HTTPS_PROXY=a,process.env.ALL_PROXY=a,process.env.TOKENHOP_PROXY_URL=a,j=!0)}h&&(process.env.NO_PROXY=h,process.env.TOKENHOP_NO_PROXY=h,j=!0),j?process.env.TOKENHOP_PROXY_MANAGED="1":i&&delete process.env.TOKENHOP_PROXY_MANAGED}},57729:()=>{},58691:(a,b,c)=>{"use strict";c.d(b,{VF:()=>i,er:()=>h});let d=Object.freeze(["fallback","round-robin","fusion","weighted"]),e="fallback",f=new Set(["__proto__","constructor","prototype"]);function g(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function h(a,b){let c=a?.comboStrategies,f=g(c)&&Object.hasOwn(c,b)&&g(c[b])?c[b]:{},h=f.fallbackStrategy||a?.comboStrategy||e;return{strategy:d.includes(h)?h:e,stickyLimit:a?.comboStickyRoundRobinLimit,weights:g(f.weights)?f.weights:{},judgeModel:f.judgeModel,fusionTuning:f.fusionTuning}}function i(a){if(!g(a))return null;if(Object.hasOwn(a,"comboStrategy")&&!d.includes(a.comboStrategy))return"Invalid comboStrategy";if(!Object.hasOwn(a,"comboStrategies"))return null;let b=a.comboStrategies;if(!g(b))return"comboStrategies must be an object";let c=Object.entries(b);if(c.length>500)return"Too many comboStrategies entries";for(let[a,b]of c){if(f.has(a))return`Invalid combo name "${a}"`;if(!g(b)||void 0!==b.fallbackStrategy&&!d.includes(b.fallbackStrategy))return`Invalid strategy for combo "${a}"`;let c=b.weights;if(void 0!==c){if(!g(c)||Object.keys(c).length>200)return`Invalid weights for combo "${a}"`;for(let[b,d]of Object.entries(c))if(f.has(b)||"number"!=typeof d||!Number.isFinite(d)||d<0||d>1e3)return`Invalid weight for combo "${a}" model "${b}"`}}return null}},73284:(a,b,c)=>{"use strict";let d;c.d(b,{gR:()=>F,hT:()=>E,Pf:()=>D,GY:()=>C,sP:()=>G,Ir:()=>B,Mj:()=>A,iw:()=>y,EJ:()=>z,Ui:()=>M,Rj:()=>N,HO:()=>H,mx:()=>L,x8:()=>K});var e=c(77598),f=c.n(e),g=c(38805),h=c(99129),i=c(64416),j=c(80700);async function k(a,b,c){let d=a.get(b)||a.set(b,{}).get(b),{alg:e}=c;if(void 0===d[e]){let a=(0,i.xY)(c,b,!0).then(a=>{if("public"!==a.type)throw new h.Dm("JSON Web Key Set members must be public keys");return d[e]=a,a}).catch(b=>{throw d[e]===a&&delete d[e],b});d[e]=a}return d[e]}function l(a){let b;try{b=structuredClone(a)}catch{}if(!(0,g.fV)(b))throw new h.Dm("JSON Web Key Set malformed");let c=b.keys.map(a=>{let b=(0,i.ZZ)(a);return Array.isArray(b.key_ops)&&(b.key_ops=[...b.key_ops]),b}),d=new WeakMap;return Object.defineProperty(async(a,e)=>{let{alg:f,kid:g}={...a,...e?.header},i="string"==typeof f?j.p[f]:void 0;if(!i||i.secret)throw new h.T0('Unsupported "alg" value for a JSON Web Key Set');let l=b.keys.filter((a,b)=>(function(a,b,c,d){let{kty:e,key_ops:f,ext:g,kid:h,alg:i,use:j,crv:k}=a;return(void 0===g||"boolean"==typeof g)&&(void 0===f||Array.isArray(f)&&f.every((a,b)=>"string"==typeof a&&f.indexOf(a)===b)&&f.includes("verify"))&&b.kty.includes(e)&&(void 0===d||"string"==typeof d&&d===h)&&(void 0===i?"AKP"!==e:c===i)&&(void 0===j||"sig"===j)&&(!b.crv||k===b.crv)})(c[b],i,f,g)),{0:m,length:n}=l;if(!n)throw new h.BT;if(1!==n){let a=new h.$4;throw a[Symbol.asyncIterator]=async function*(){for(let a of l)try{yield await k(d,a,i)}catch{}},a}return k(d,m,i)},"jwks",{value:()=>structuredClone(b)})}(typeof navigator>"u"||!navigator.userAgent?.startsWith?.("Mozilla/5.0 "))&&(d="jose/v6.2.12");let m=Symbol();async function n(a,b,c,d=fetch){let e=await d(a,{method:"GET",signal:c,redirect:"manual",headers:b}).catch(a=>{throw"TimeoutError"===a.name?new h.xb:a});if(200!==e.status)throw new h.i4("Expected 200 OK from the JSON Web Key Set HTTP response");try{return await e.json()}catch{throw new h.i4("Failed to parse the JSON Web Key Set HTTP response as JSON")}}let o=Symbol();function p(a,b){return Number.isFinite(a)&&Date.now()<a+b}function q(a,b,c){if(Number.isNaN(a))throw TypeError(`"${c}" option must not be NaN`);return"number"==typeof a?a:b}var r=c(17509),s=c(89718),t=c(13708);let u="openid profile email",v="Sign in with OIDC";function w(a){return(a||"").trim().replace(/\/+$/,"")}function x(a){return(a||u).trim()||u}function y(a){let b=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||"";if(b)return w(b);let c=a?.headers?.get?.("x-forwarded-proto")||"",d=a?.headers?.get?.("x-forwarded-host")||a?.headers?.get?.("host")||"";if(d){let b=(c||new URL(a.url).protocol||"http:").replace(/:$/,"");return`${b}://${d}`.replace(/\/+$/,"")}return w(new URL(a.url).origin)}function z(a){return!!(w(a?.oidcIssuerUrl)&&(a?.oidcClientId||"").trim()&&(a?.oidcClientSecret||"").trim())}async function A(){let a=await (0,s.getSettings)();return(0,t.b)(a).oidc&&z(a)?{issuerUrl:w(a.oidcIssuerUrl),clientId:a.oidcClientId.trim(),clientSecret:a.oidcClientSecret.trim(),scopes:x(a.oidcScopes),loginLabel:(a.oidcLoginLabel||v).trim()||v}:null}async function B(a){let b=`${w(a)}/.well-known/openid-configuration`,c=await fetch(b,{cache:"no-store"});if(!c.ok)throw Error(`Failed to load OIDC discovery document from ${b}`);return await c.json()}function C(){let a=f().randomBytes(32).toString("base64url"),b=f().createHash("sha256").update(a).digest("base64url");return{verifier:a,challenge:b}}function D(){return f().randomBytes(16).toString("base64url")}function E(){return f().randomBytes(16).toString("base64url")}function F({authorizationEndpoint:a,clientId:b,redirectUri:c,scopes:d=u,state:e,nonce:f,codeChallenge:g}){let h=new URL(a);return h.searchParams.set("response_type","code"),h.searchParams.set("client_id",b),h.searchParams.set("redirect_uri",c),h.searchParams.set("scope",x(d)),h.searchParams.set("state",e),h.searchParams.set("nonce",f),h.searchParams.set("code_challenge",g),h.searchParams.set("code_challenge_method","S256"),h.toString()}async function G({tokenEndpoint:a,clientId:b,clientSecret:c,code:d,redirectUri:e,codeVerifier:f}){let g=new URLSearchParams({grant_type:"authorization_code",client_id:b,code:d,redirect_uri:e,code_verifier:f});c&&g.set("client_secret",c);let h=await fetch(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:g}),i=await h.json().catch(()=>({}));if(!h.ok)throw Error(i?.error_description||i?.error||`OIDC token exchange failed (${h.status})`);return i}async function H({tokenEndpoint:a,clientId:b,clientSecret:c,redirectUri:d}){if(!c)return{tested:!1,valid:null,message:"No client secret was provided, so secret validation was skipped."};let e=new URLSearchParams({grant_type:"authorization_code",client_id:b,client_secret:c,code:"__oidc_test_invalid_code__",redirect_uri:d,code_verifier:"__oidc_test_invalid_verifier__"}),f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e}),g=await f.json().catch(()=>({})),h=(g?.error||"").toLowerCase(),i=g?.error_description||g?.error||"";return f.ok?{tested:!0,valid:!0,message:"Client secret was accepted by the token endpoint.",raw:g}:"invalid_client"===h||"unauthorized_client"===h||/client.*(invalid|failed|mismatch)/i.test(i)?{tested:!0,valid:!1,message:i||"Client secret is not valid.",raw:g}:"invalid_grant"===h||"invalid_code"===h||/grant|code/i.test(i)?{tested:!0,valid:!0,message:"Client secret was accepted; the token exchange failed only because the test authorization code is invalid.",raw:g}:{tested:!0,valid:null,message:i||`Token endpoint responded with ${f.status}`,raw:g}}let I=["RS256","RS384","RS512","PS256","PS384","PS512","ES256","ES384","ES512","EdDSA"],J=["HS256","HS384","HS512"];async function K({idToken:a,issuer:b,audience:c,jwksUri:e,nonce:f,clientSecret:i,allowedAlgs:j}){let k,s;if(!f)throw Error("id_token verification requires the login nonce");let t=(s=Array.isArray(j)?j.filter(a=>"string"==typeof a&&"none"!==a.toLowerCase()):[]).length>0?s:I,{alg:u}=function(a){let b;if("string"==typeof a){let c=a.split(".");(3===c.length||5===c.length)&&([b]=c)}else if("object"==typeof a&&a)if("protected"in a)b=a.protected;else throw TypeError("Token does not contain a Protected Header");let c="Invalid Token or Protected Header formatting";if("string"!=typeof b||!b)throw TypeError(c);return(0,g.OX)(b,TypeError,c)}(a);if(!u||"none"===u.toLowerCase()||!t.includes(u))throw Error(`id_token alg "${u}" is not allowed (advertised: ${t.join(", ")})`);if(J.includes(u)){if(!i)throw Error(`id_token alg "${u}" requires a client secret`);k=new TextEncoder().encode(i)}else{if(!e)throw Error("OIDC discovery document has no jwks_uri");k=function(a){if(!(a instanceof URL))throw TypeError("url must be an instance of URL");let b=new URL(a.href).href,c=(void 0)??{},e=c.timeoutDuration;if("number"==typeof e&&(!Number.isInteger(e)||e<0))throw TypeError('"timeoutDuration" option must be a non-negative integer');let f="number"==typeof e?e:5e3,i=q(c.cooldownDuration,3e4,"cooldownDuration"),j=q(c.cacheMaxAge,6e5,"cacheMaxAge"),k=new Headers(c.headers);d&&!k.has("User-Agent")&&k.set("User-Agent",d),k.has("accept")||k.set("accept","application/json, application/jwk-set+json");let r=c[m],s=c[o],t,u,v=0,w=0,x;if(s&&"object"==typeof s){let{uat:a,jwks:b}=s;p(a,j)&&(0,g.fV)(b)&&(t=a,x=l(b))}let y=async()=>{if(u&&("u">typeof WebSocketPair||"u">typeof navigator&&"Cloudflare-Workers"===navigator.userAgent||"u">typeof EdgeRuntime&&"vercel"===EdgeRuntime)&&(u=void 0),!u){let a=++v,c=u=n(b,k,AbortSignal.timeout(f),r).then(b=>{let c=l(b);if(a<=w)return;x=c;let d=Date.now();s&&(s.uat=d,s.jwks=b),t=d,w=a}).finally(()=>{u===c&&(u=void 0)})}await u};return Object.defineProperties(async(a,b)=>{x&&p(t,j)||await y();try{return await x(a,b)}catch(c){if(c instanceof h.BT&&!p(t,i))return await y(),x(a,b);throw c}},{coolingDown:{get:()=>p(t,i),enumerable:!0},fresh:{get:()=>p(t,j),enumerable:!0},reload:{value:y,enumerable:!0},reloading:{get:()=>!!u,enumerable:!0},jwks:{value:()=>x?.jwks(),enumerable:!0}})}(new URL(e))}let{payload:v}=await (0,r.V)(a,k,{issuer:b,audience:c,algorithms:[u]});if(v.nonce!==f)throw Error("id_token nonce mismatch");return v}function L(a,b){let c=Array.isArray(a?.id_token_signing_alg_values_supported)?a.id_token_signing_alg_values_supported.filter(a=>"string"==typeof a):[],d=c.length>0&&c.every(a=>J.includes(a)),e=c.some(a=>"none"!==a.toLowerCase()&&!J.includes(a)),f=[];return d?f.push("The provider signs id_tokens only with HS* (client secret). Sign-in works, but selecting a signing key in the IdP (RS256) is recommended."):0===b&&(e||0===c.length)&&f.push("The provider's JWKS has no keys, so RS/ES-signed id_tokens cannot be verified."),c.some(a=>"none"===a.toLowerCase())&&f.push('The provider advertises alg "none"; unsigned id_tokens are always rejected.'),{signingAlgs:c,warnings:f}}function M(a={}){return a.preferred_username||a.email||a.name||a.given_name||a.sub||"OIDC user"}function N(a={}){return a.email||""}},92844:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GET:()=>ag,PATCH:()=>ah,dynamic:()=>O,revalidate:()=>P,ssoLockoutError:()=>ad,validateSettingsBody:()=>af});var d=c(23211),e=c(89718),f=c(25334),g=c(50835),h=c(25921),i=c(58691);let j=new Set(["__proto__","constructor","prototype"]),k=new Set(["tunnelProvider","SEARXNG_URL","CLAUDE_CLI_VERSION","CODEX_CLI_VERSION","GROK_CLI_VERSION","ZED_CLIENT_VERSION"]);function l(a){for(let b=0;b<a.length;b+=1){let c=a.charCodeAt(b);if(c<=31||127===c)return!0}return!1}let m=/[\n\r`$]/,n=new Set(["http:","https:","socks5:","socks4:","socks5h:","socks4a:"]),o=new Set(["fill-first","round-robin","weighted"]),p=new Set(["round-robin","random"]),q=new Set(["vision","pdf","audioInput","videoInput"]),r=new Set(["enabled","roundRobin","models"]),s=new Set(["lite","full","ultra","wenyan-lite","wenyan","wenyan-ultra"]),t=new Set(["lite","full","ultra"]),u=new Set(["auto","none","minimal","low","medium","high","xhigh","max","ultra","thinking"]),v=new Set(["enabled","connections"]);function w(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)&&Object.getPrototypeOf(a)===Object.prototype}function x(a,b,c){return Number.isInteger(a)&&a>=b&&a<=c}function y(a,b=256){return"string"==typeof a&&a.length>0&&a.length<=b&&a===a.trim()&&!j.has(a)}function z(a){if("string"!=typeof a||a.length>2048)return!1;let b=a.trim();if(!b)return!0;if(l(a))return!1;try{let a=new URL(b);return"http:"===a.protocol||"https:"===a.protocol}catch{return!1}}let A=new Set(["__proto__","constructor","prototype"]),B=["retryPolicy","cooldowns","backoff","streamTimeouts"],C=new Set(["502","503","504"]),D=new Set(["rateLimitCapMs","longMs","shortMs","transientMs"]),E=new Set(["startMs","maxMs","levels"]),F=new Set(["firstChunkMs","stallMs","connectMs"]);function G(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)&&Object.getPrototypeOf(a)===Object.prototype}function H(a,b,c){return Number.isInteger(a)&&a>=b&&a<=c}var I=c(11720),J=c(56588),K=c(34013),L=c(73284),M=c(7985),N=c(13708);let O="force-dynamic",P=0,Q={"Cache-Control":"no-store"},R=["password","mitmSudoEncrypted"],S=/^[a-zA-Z0-9_.-]+$/,T=new Set(["__proto__","constructor","prototype"]);function U(a){let b=Object.fromEntries(Object.entries(a).filter(([a])=>!J.Pq.has(a)));return b.oidcConfigured=!!(a.oidcIssuerUrl&&a.oidcClientId&&a.oidcClientSecret),b}function V(a){let b=U(a);return b.startPage=(0,g.ES)(b.startPage),b.uiDensity=(0,g.b5)(b.uiDensity),d.NextResponse.json(b,{headers:Q})}async function W(a){let b,f,{name:g,patch:j}=a.comboStrategyPatch||{};if("string"!=typeof g||!S.test(g)||T.has(g))return d.NextResponse.json({error:"Invalid combo name"},{status:400});if(!j||"object"!=typeof j||Array.isArray(j))return d.NextResponse.json({error:"Invalid combo strategy patch"},{status:400});let k=new Set(["fallbackStrategy","weights","judgeModel","fusionTuning"]);if(Object.keys(j).some(a=>!k.has(a)))return d.NextResponse.json({error:"Invalid combo strategy patch"},{status:400});let l=(0,i.VF)({comboStrategies:{[g]:j}});if(l)return d.NextResponse.json({error:l},{status:400});let m=!1;try{f=await (0,e.ln)(a=>{let c=Object.hasOwn(a,g)?a[g]:{};if(Object.hasOwn(j,"weights")&&!Object.hasOwn(j,"fallbackStrategy")&&c?.fallbackStrategy!=="weighted")return m=!0,a;let d={...c,...j};if(j.weights&&(d.weights={...c?.weights,...j.weights}),b=(0,i.VF)({comboStrategies:{[g]:d}}))return a;let e={...a};return d.fallbackStrategy&&"fallback"!==d.fallbackStrategy?e[g]=d:delete e[g],e},g)}catch(a){if("COMBO_NOT_FOUND"===a.code)return d.NextResponse.json({error:"Combo not found"},{status:409});throw a}return m?d.NextResponse.json({error:"Combo not found"},{status:409}):b?d.NextResponse.json({error:b},{status:400}):((0,h.UP)(),Promise.all([c.e(7774),c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(3943),c.e(965),c.e(3225),c.e(2051),c.e(9124),c.e(2380),c.e(8416),c.e(318),c.e(8895),c.e(1245),c.e(7211),c.e(1026)]).then(c.bind(c,78632)).then(({syncQuotaSnapshotPoller:a})=>a()).catch(a=>console.warn("[QuotaSnapshotPoller] settings update failed:",a.message)),V(f))}let X=new Set(["fill-first","round-robin","weighted"]),Y=new Set(["password","sso","both","saml","oidc"]),Z=new Set(["oidc","saml"]),$=new Set(["__proto__","constructor","prototype"]);function _(a){return Number.isInteger(a)&&a>=1&&a<=100}function aa(a,b=256){return"string"==typeof a&&a.length<=b}function ab(a){if("string"!=typeof a||a.length>2048)return!1;if(!a.trim())return!0;try{let b=new URL(a.trim());return"http:"===b.protocol||"https:"===b.protocol}catch{return!1}}let ac=["authMode","ssoType","oidcIssuerUrl","oidcClientId","oidcClientSecret","samlEntryPoint","samlCert"];function ad(a,b){if(!ac.some(a=>Object.hasOwn(b,a)))return"";let c={...a,...b};String(b.oidcClientSecret??"").trim()||(c.oidcClientSecret=a.oidcClientSecret);let d=(0,N.b)(c);return d.ssoOnly?d.saml&&!(0,M.eI)(c)?'Cannot enable SSO-only sign-in: SAML is not fully configured (entry point and certificate are required). Configure and test it with "Password + SSO" first.':d.oidc&&!(0,L.EJ)(c)?'Cannot enable SSO-only sign-in: OIDC is not fully configured (issuer URL, client ID and client secret are required). Configure and test it with "Password + SSO" first.':"":""}function ae(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)&&Object.getPrototypeOf(a)===Object.prototype}function af(a){let b=(0,i.VF)(a);return b||(!function(a){if(Object.hasOwn(a,"fallbackStrategy")&&!X.has(a.fallbackStrategy)||Object.hasOwn(a,"stickyRoundRobinLimit")&&!_(a.stickyRoundRobinLimit))return!1;if(Object.hasOwn(a,"providerStrategies")){if(!ae(a.providerStrategies))return!1;for(let[b,c]of Object.entries(a.providerStrategies))if(b!==b.trim()||!b||$.has(b)||!ae(c)||Object.keys(c).some(a=>$.has(a))||Object.hasOwn(c,"fallbackStrategy")&&!X.has(c.fallbackStrategy)||Object.hasOwn(c,"stickyRoundRobinLimit")&&!_(c.stickyRoundRobinLimit))return!1}return!0}(a)?"Invalid account strategy settings":function(a){for(let b of["requireLogin","requireApiKey","tunnelDashboardAccess"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;for(let b of["requestLogsEnabled","translatorEnabled"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;if(Object.hasOwn(a,"startPage")&&("string"!=typeof a.startPage||(0,g.ES)(a.startPage)!==a.startPage))return"Invalid startPage: must be a dashboard route";if(Object.hasOwn(a,"uiDensity")&&("string"!=typeof a.uiDensity||(0,g.b5)(a.uiDensity)!==a.uiDensity))return"Invalid uiDensity: must be comfortable or compact";if(Object.hasOwn(a,"authMode")&&!Y.has(a.authMode))return"Invalid authMode";if(Object.hasOwn(a,"ssoType")&&!Z.has(a.ssoType))return"Invalid ssoType";for(let b of["oidcClientId","oidcScopes","oidcLoginLabel"])if(Object.hasOwn(a,b)&&!aa(a[b]))return`Invalid ${b}`;if(Object.hasOwn(a,"oidcIssuerUrl")&&!ab(a.oidcIssuerUrl))return"Invalid oidcIssuerUrl: must be an http(s) URL";if(Object.hasOwn(a,"oidcClientSecret")&&!aa(a.oidcClientSecret,2048))return"Invalid oidcClientSecret";if(Object.hasOwn(a,"samlEntryPoint")&&!ab(a.samlEntryPoint))return"Invalid samlEntryPoint: must be an http(s) URL";for(let b of["samlIssuer","samlLoginLabel","samlAttributeEmail","samlAttributeName"])if(Object.hasOwn(a,b)&&!aa(a[b]))return`Invalid ${b}`;if(Object.hasOwn(a,"samlCert")&&!aa(a.samlCert,16384))return"Invalid samlCert";for(let b of["currentPassword","newPassword"])if(Object.hasOwn(a,b)&&("string"!=typeof a[b]||a[b].length>256))return`Invalid ${b}`;return""}(a)||function(a){if(!w(a))return null;for(let b of Object.keys(a)){if(j.has(b))return`Invalid setting "${b}"`;if(k.has(b))return`Invalid ${b}: read-only`}if(Object.hasOwn(a,"fallbackStrategy")&&!o.has(a.fallbackStrategy))return"Invalid fallbackStrategy";if(Object.hasOwn(a,"stickyRoundRobinLimit")&&!x(a.stickyRoundRobinLimit,1,100))return"Invalid stickyRoundRobinLimit: must be an integer between 1 and 100";if(Object.hasOwn(a,"comboStickyRoundRobinLimit")&&!x(a.comboStickyRoundRobinLimit,1,100))return"Invalid comboStickyRoundRobinLimit: must be an integer between 1 and 100";if(Object.hasOwn(a,"providerStrategies")&&!function(a){if(!w(a))return!1;for(let[b,c]of Object.entries(a)){if(!y(b,128)||!w(c))return!1;for(let a of Object.keys(c))if(j.has(a))return!1;if(Object.hasOwn(c,"fallbackStrategy")&&!o.has(c.fallbackStrategy)||Object.hasOwn(c,"stickyRoundRobinLimit")&&!x(c.stickyRoundRobinLimit,1,100)||Object.hasOwn(c,"proxyPoolId")&&("string"!=typeof c.proxyPoolId||!c.proxyPoolId.trim()||c.proxyPoolId.length>256)||Object.hasOwn(c,"rotateStrategy")&&!p.has(c.rotateStrategy))return!1}return!0}(a.providerStrategies))return"Invalid providerStrategies";if(Object.hasOwn(a,"capacityAdapter")&&!function(a){if(!w(a))return!1;for(let[b,c]of Object.entries(a)){if(!q.has(b))return!1;if(Array.isArray(c)){if(c.length>500)return!1;for(let a of c)if(!("string"==typeof a&&a.trim()&&a.length<=256)&&!(w(a)&&"string"==typeof a.model&&a.model.trim()&&a.model.length<=256&&Object.keys(a).every(a=>"model"===a||"enabled"===a)&&(!Object.hasOwn(a,"enabled")||"boolean"==typeof a.enabled)))return!1;continue}if(!w(c))return!1;for(let a of Object.keys(c))if(!r.has(a))return!1;if(Object.hasOwn(c,"enabled")&&"boolean"!=typeof c.enabled||Object.hasOwn(c,"roundRobin")&&"boolean"!=typeof c.roundRobin)return!1;if(Object.hasOwn(c,"models")){if(!Array.isArray(c.models)||c.models.length>500)return!1;for(let a of c.models)if("string"!=typeof a||!a.trim()||a.length>256)return!1}}return!0}(a.capacityAdapter))return"Invalid capacityAdapter";for(let b of["outboundProxyEnabled","tunnelEnabled","tailscaleEnabled"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;if(Object.hasOwn(a,"outboundProxyUrl")&&!function(a){if("string"!=typeof a||a.length>2048)return!1;let b=a.trim();if(!b)return!0;if(m.test(a))return!1;try{return n.has(new URL(b).protocol)}catch{return!1}}(a.outboundProxyUrl))return"Invalid outboundProxyUrl: must be an http/https/socks proxy URL";if(Object.hasOwn(a,"outboundNoProxy")&&!function(a){if("string"!=typeof a||a.length>2048)return!1;if(!a.trim())return!0;if(l(a)||/[`$]/.test(a))return!1;for(let b of a.split(",")){let a=b.trim();if(a&&(a.length>253||/\s/.test(a)||a.includes("://")))return!1}return!0}(a.outboundNoProxy))return"Invalid outboundNoProxy: must be a comma-separated host list";for(let b of["rtkEnabled","headroomEnabled","headroomCompressUserMessages","headroomCodeAware","headroomKompress","cavemanEnabled","ponytailEnabled","pxpipeEnabled","pxpipeAutoInstall"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;if(Object.hasOwn(a,"headroomUrl")&&!z(a.headroomUrl))return"Invalid headroomUrl: must be an http(s) URL";if(Object.hasOwn(a,"headroomTimeoutMs")&&!x(a.headroomTimeoutMs,1,3e5))return"Invalid headroomTimeoutMs: must be an integer between 1 and 300000";if(Object.hasOwn(a,"cavemanLevel")&&!s.has(a.cavemanLevel))return"Invalid cavemanLevel";if(Object.hasOwn(a,"ponytailLevel")&&!t.has(a.ponytailLevel))return"Invalid ponytailLevel";if(Object.hasOwn(a,"pxpipeMinChars")&&!x(a.pxpipeMinChars,0,1e7))return"Invalid pxpipeMinChars: must be an integer between 0 and 10000000";if(Object.hasOwn(a,"pxpipeTimeoutMs")&&!x(a.pxpipeTimeoutMs,1,6e5))return"Invalid pxpipeTimeoutMs: must be an integer between 1 and 600000";if(Object.hasOwn(a,"providerThinking")&&!function(a){if(!w(a)||Object.keys(a).length>500)return!1;for(let[b,c]of Object.entries(a))if(!y(b,128)||!w(c)||Object.keys(c).some(a=>"mode"!==a||j.has(a))||!Object.hasOwn(c,"mode")||!u.has(c.mode))return!1;return!0}(a.providerThinking))return"Invalid providerThinking";for(let b of["claudeAutoPing","codexAutoPing"])if(Object.hasOwn(a,b)&&!function(a){if(!w(a))return!1;for(let b of Object.keys(a))if(!v.has(b))return!1;if(Object.hasOwn(a,"enabled")&&"boolean"!=typeof a.enabled)return!1;if(void 0===a.connections)return!0;if(!w(a.connections))return!1;let b=Object.entries(a.connections);if(b.length>1e4)return!1;for(let[a,c]of b)if(!y(a)||"boolean"!=typeof c)return!1;return!0}(a[b]))return`Invalid ${b}: must be a per-connection map`;return Object.hasOwn(a,"ccFilterNaming")&&"boolean"!=typeof a.ccFilterNaming?"Invalid ccFilterNaming: must be a boolean":Object.hasOwn(a,"quotaVisibility")&&!function(a){if(!w(a)||Object.keys(a).length>500)return!1;for(let[b,c]of Object.entries(a)){if(!y(b,128)||!w(c))return!1;for(let a of Object.keys(c))if(j.has(a))return!1;if(!Object.hasOwn(c,"hidden")||!Array.isArray(c.hidden)||c.hidden.length>1e3)return!1;for(let a of c.hidden)if("string"!=typeof a||!a.trim()||a.length>256)return!1}return!0}(a.quotaVisibility)?"Invalid quotaVisibility":Object.hasOwn(a,"mitmRouterBaseUrl")&&!z(a.mitmRouterBaseUrl)?"Invalid mitmRouterBaseUrl: must be an http(s) URL":Object.hasOwn(a,"enableObservability")&&"boolean"!=typeof a.enableObservability?"Invalid enableObservability: must be a boolean":Object.hasOwn(a,"observabilityMaxRecords")&&!x(a.observabilityMaxRecords,1,1e7)?"Invalid observabilityMaxRecords: must be an integer between 1 and 10000000":Object.hasOwn(a,"observabilityBatchSize")&&!x(a.observabilityBatchSize,1,1e4)?"Invalid observabilityBatchSize: must be an integer between 1 and 10000":Object.hasOwn(a,"observabilityFlushIntervalMs")&&!x(a.observabilityFlushIntervalMs,1,36e5)?"Invalid observabilityFlushIntervalMs: must be an integer between 1 and 3600000":Object.hasOwn(a,"observabilityMaxJsonSize")&&!x(a.observabilityMaxJsonSize,1,1048576)?"Invalid observabilityMaxJsonSize: must be an integer number of kilobytes":null}(a)||"")}async function ag(){try{let a=await (0,e.getSettings)(),b=U(a),f=(0,g.rK)("ENABLE_REQUEST_LOGS",a.requestLogsEnabled,!1),h=(0,g.rK)("ENABLE_TRANSLATOR",a.translatorEnabled,!1),i=a=>{let b=process.env[a];if(null==b||""===b)return!1;let c=parseInt(b,10);return Number.isFinite(c)&&c>0},j={...i("STREAM_FIRST_CHUNK_TIMEOUT_MS")?{firstChunkMs:!0}:{},...i("STREAM_STALL_TIMEOUT_MS")?{stallMs:!0}:{},...i("FETCH_CONNECT_TIMEOUT_MS")?{connectMs:!0}:{}},{CLAUDE_CLI_VERSION:k}=await c.e(1432).then(c.bind(c,51432)),{CODEX_CLI_VERSION:l}=await c.e(6703).then(c.bind(c,6703)),{GROK_CLI_VERSION:m}=await c.e(737).then(c.bind(c,90737)),{ZED_CLIENT_VERSION:n}=await c.e(524).then(c.bind(c,70524));return d.NextResponse.json({...b,enableRequestLogs:f.value,enableTranslator:h.value,requestLogsOverridden:f.overridden,translatorOverridden:h.overridden,startPage:(0,g.ES)(a.startPage),uiDensity:(0,g.b5)(a.uiDensity),hasPassword:!!a.password,searxngUrl:process.env.SEARXNG_URL?.trim()||"",headroomUrlFromEnv:!!process.env.HEADROOM_URL?.trim(),requestLogEnvOverride:f.overridden,streamEnvOverrides:j,CLAUDE_CLI_VERSION:k,CODEX_CLI_VERSION:l,GROK_CLI_VERSION:m,ZED_CLIENT_VERSION:n},{headers:Q})}catch(a){return console.log("Error getting settings:",a),d.NextResponse.json({error:a.message},{status:500})}}async function ah(a){try{let b=await a.json();if(!ae(b))return d.NextResponse.json({error:"Settings body must be an object"},{status:400});if(Object.hasOwn(b,"comboStrategyPatch")&&1!==Object.keys(b).length)return d.NextResponse.json({error:"comboStrategyPatch must be the only setting"},{status:400});for(let a of R)delete b[a];if(Object.hasOwn(b,"comboStrategyPatch"))return await W(b);let g=af(b);if(g)return d.NextResponse.json({error:g},{status:400});let i=await (0,e.getSettings)(),j=function(a,b=null){var c;let d;if(!G(a))return null;for(let b of Object.keys(a))if(A.has(b))return`Invalid setting "${b}"`;return Object.hasOwn(a,"retryPolicy")&&!function(a){if(!G(a))return!1;for(let[b,c]of Object.entries(a)){if(A.has(b)||!C.has(b)||!G(c))return!1;for(let a of Object.keys(c))if(A.has(a)||"tries"!==a&&"delayMs"!==a)return!1;if(Object.hasOwn(c,"tries")&&!H(c.tries,0,10)||Object.hasOwn(c,"delayMs")&&!H(c.delayMs,0,6e4))return!1}return!0}(a.retryPolicy)?"Invalid retryPolicy: statuses 502/503/504 with tries 0-10 and delayMs 0-60000":Object.hasOwn(a,"cooldowns")&&!function(a){if(!G(a))return!1;for(let[b,c]of Object.entries(a))if(A.has(b)||!D.has(b)||!H(c,1e3,864e5))return!1;return!0}(a.cooldowns)?"Invalid cooldowns: rateLimitCapMs/longMs/shortMs/transientMs between 1000 and 86400000":Object.hasOwn(a,"backoff")&&!function(a){if(!G(a))return!1;for(let b of Object.keys(a))if(A.has(b)||!E.has(b))return!1;return!(Object.hasOwn(a,"startMs")&&!H(a.startMs,100,6e4)||Object.hasOwn(a,"maxMs")&&!H(a.maxMs,1e3,36e5)||Object.hasOwn(a,"levels")&&!H(a.levels,1,30)||Object.hasOwn(a,"startMs")&&Object.hasOwn(a,"maxMs")&&a.maxMs<a.startMs)}(a.backoff)?"Invalid backoff: startMs 100-60000, maxMs 1000-3600000 (>= startMs), levels 1-30":Object.hasOwn(a,"backoff")&&(d={...G(c=b?.backoff)?c:{}},G(a.backoff)&&Object.assign(d,a.backoff),Object.hasOwn(d,"startMs")&&Object.hasOwn(d,"maxMs")&&d.maxMs<d.startMs)?"Invalid backoff: maxMs must be >= startMs (including stored values)":Object.hasOwn(a,"streamTimeouts")&&!function(a){if(!G(a))return!1;for(let[b,c]of Object.entries(a))if(A.has(b)||!F.has(b)||!H(c,1e3,18e5))return!1;return!0}(a.streamTimeouts)?"Invalid streamTimeouts: firstChunkMs/stallMs/connectMs between 1000 and 1800000":null}(b,i);if(j)return d.NextResponse.json({error:j},{status:400});let k=ad(i,b);if(k)return d.NextResponse.json({error:k},{status:400});if(B.some(a=>Object.hasOwn(b,a)))for(let a of B)Object.hasOwn(b,a)&&(b[a]=function(a,b){let c={...G(a)?a:{}};for(let[a,d]of Object.entries(b))c[a]=G(d)?{...c[a]||{},...d}:d;return c}(i[a],b[a]));let l="string"==typeof b.newPassword?b.newPassword:"",m="string"==typeof b.currentPassword?b.currentPassword:"";if(delete b.newPassword,delete b.currentPassword,l){let a=(await (0,e.getSettings)()).password;if(a){if(!m)return d.NextResponse.json({error:"Current password required"},{status:400});if(!await K.Ay.compare(m,a))return d.NextResponse.json({error:"Invalid current password"},{status:401})}else if(m&&"123456"!==m)return d.NextResponse.json({error:"Invalid current password"},{status:401});let c=await K.Ay.genSalt(10);b.password=await K.Ay.hash(l,c)}!Object.hasOwn(b,"oidcClientSecret")||b.oidcClientSecret&&String(b.oidcClientSecret).trim()||delete b.oidcClientSecret;let n=await (0,e.Xx)(b);return(0,I.E8)(b,n),(Object.hasOwn(b,"outboundProxyEnabled")||Object.hasOwn(b,"outboundProxyUrl")||Object.hasOwn(b,"outboundNoProxy"))&&(0,f.k)(n),Object.hasOwn(b,"requestLogsEnabled")&&c.e(1336).then(c.bind(c,71336)).then(({notifyRequestLogsEnabled:a})=>a(!0===n.requestLogsEnabled)).catch(a=>console.warn("[RequestLogger] settings update failed:",a.message)),(Object.hasOwn(b,"comboStrategy")||Object.hasOwn(b,"comboStickyRoundRobinLimit")||Object.hasOwn(b,"comboStrategies"))&&(0,h.UP)(),(Object.hasOwn(b,"fallbackStrategy")||Object.hasOwn(b,"stickyRoundRobinLimit")||Object.hasOwn(b,"providerStrategies"))&&Promise.all([c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(9124),c.e(8416),c.e(3093)]).then(c.bind(c,80238)).then(({resetAccountSelection:a})=>a?.()).catch(a=>console.warn("[AccountSelection] reset failed:",a.message)),(Object.hasOwn(b,"claudeAutoPing")||Object.hasOwn(b,"codexAutoPing"))&&Promise.all([c.e(7774),c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(3943),c.e(965),c.e(3225),c.e(2051),c.e(9124),c.e(2380),c.e(8416),c.e(318),c.e(8895),c.e(1245),c.e(7211),c.e(6354),c.e(9713)]).then(c.bind(c,1133)).then(({configureQuotaAutoPing:a})=>{a(n)}).catch(a=>console.warn("[AutoPing] settings update failed:",a.message)),(Object.hasOwn(b,"fallbackStrategy")||Object.hasOwn(b,"providerStrategies")||Object.hasOwn(b,"comboStrategies")||Object.hasOwn(b,"comboStrategy"))&&Promise.all([c.e(7774),c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(3943),c.e(965),c.e(3225),c.e(2051),c.e(9124),c.e(2380),c.e(8416),c.e(318),c.e(8895),c.e(1245),c.e(7211),c.e(1026)]).then(c.bind(c,78632)).then(({syncQuotaSnapshotPoller:a})=>{a()}).catch(a=>console.warn("[QuotaSnapshotPoller] settings update failed:",a.message)),V(n)}catch(a){return console.log("Error updating settings:",a),d.NextResponse.json({error:a.message},{status:500})}}}};
|
|
3
|
+
-----END CERTIFICATE-----`}function j(a){return!!(a?.samlEntryPoint&&a?.samlCert)}function k(a){return(a||"").replace(/\/+$/,"")}function l(a,b){let c=(b?.baseUrl||"").trim()||process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||"";if(c)return k(c);if(a){let b=a?.headers?.get?.("x-forwarded-proto")||"",c=a?.headers?.get?.("x-forwarded-host")||a?.headers?.get?.("host")||"";if(c){let d=(b||new URL(a.url).protocol||"http:").replace(/:$/,"");return`${d}://${c}`.replace(/\/+$/,"")}if(a.url)return k(new URL(a.url).origin)}return"http://localhost:20128"}function m(a,b){let c=i(a?.samlCert||"")||"-----BEGIN CERTIFICATE-----\nMIIC...DUMMY...\n-----END CERTIFICATE-----",e=`${b}/api/auth/saml/acs`;return new d.Qb({entryPoint:a?.samlEntryPoint||"https://example.com/sso",issuer:a?.samlIssuer||f.Hc.samlIssuerDefault,idpCert:c,cert:c,callbackUrl:e,acceptedClockSkewMs:6e4,wantAssertionsSigned:!0,validateInResponseTo:d.EK.always,requestIdExpirationPeriodMs:6e5,cacheProvider:g})}async function n(a,b){let c=l(a,b),d=m(b,c),e=await d.generateAuthorizeRequestAsync(!1,!1),f=e.match(/ID="([^"]+)"/),g=f?f[1]:"";return{authorizeUrl:await d._requestToUrlAsync(e,null,"authorize",{}),requestId:g}}async function o(a,b,c,d){if(!c)throw Error("Missing SAML request state (saml_state cookie); start sign-in again");if(!d?.samlCert)throw Error("IdP X.509 certificate (samlCert) is missing or not configured");let e=l(a,d),f=m(d,e),g=("object"==typeof b&&null!==b?b:{SAMLResponse:b}).SAMLResponse;if(!g)throw Error("Missing SAMLResponse parameter in assertion POST body");let i=Buffer.from(g,"base64").toString("utf8").match(/InResponseTo=["']([^"']+)["']/i),j=i?i[1]:null;if(!j||j!==c)throw Error(`InResponseTo mismatch: expected ${c}, received ${j||"none"}`);if(h.has(c))throw Error("SAML response for this request is already being processed");h.add(c);try{let a=await f.validatePostResponseAsync({SAMLResponse:g}),b=a?.profile||a;if(b?.inResponseTo!==c)throw Error("InResponseTo mismatch after validation");return b}finally{h.delete(c)}}function p(a,b){return m(b,a).generateServiceProviderMetadata()}function q(a={},b={}){if(!a)return"";let c=b.samlAttributeEmail;if(c&&a[c]){let b=a[c];return Array.isArray(b)?b[0]:String(b)}let d=["email","emailAddress","mail","nameID","nameId","upn","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"];for(let b of d)if(a[b]){let c=a[b];return Array.isArray(c)?c[0]:String(c)}if(a.attributes){for(let b of d)if(a.attributes[b]){let c=a.attributes[b];return Array.isArray(c)?c[0]:String(c)}}return""}function r(a={},b={}){if(!a)return"";let c=b.samlAttributeName;if(c&&a[c]){let b=a[c];return Array.isArray(b)?b[0]:String(b)}for(let b of["displayName","name","cn","commonName","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"])if(a[b]){let c=a[b];return Array.isArray(c)?c[0]:String(c)}if(a.givenName||a.sn||a.surname){let b=a.givenName||"",c=a.sn||a.surname||"",d=`${b} ${c}`.trim();if(d)return d}return q(a,b)}},11720:(a,b,c)=>{"use strict";c.d(b,{E8:()=>h,X8:()=>i});var d=c(70900);let e=null;async function f(a){try{let b=await a();(0,d.aj)(g(b))}catch{}}function g(a){let b={};for(let c of["retryPolicy","cooldowns","backoff","streamTimeouts"])a?.[c]!==void 0&&(b[c]=a[c]);return b}function h(a,b){!a||"object"!=typeof a||(Object.hasOwn(a,"retryPolicy")||Object.hasOwn(a,"cooldowns")||Object.hasOwn(a,"backoff")||Object.hasOwn(a,"streamTimeouts"))&&(0,d.aj)(g(b))}function i(a){return e??=f(a)}},13708:(a,b,c)=>{"use strict";function d({authMode:a,ssoType:b}={}){let c="sso"===a||"oidc"===a||"saml"===a,e=c||"both"===a,f="oidc"===a||"saml"===a?a:"saml"===b?"saml":"oidc";return{password:!c,oidc:e&&"oidc"===f,saml:e&&"saml"===f,protocol:f,ssoOnly:c}}c.d(b,{b:()=>d})},25334:(a,b,c)=>{"use strict";function d(a){return null==a?"":String(a).trim()}c.d(b,{k:()=>f});let e=["http:","https:","socks5:","socks4:","socks5h:","socks4a:"];function f({outboundProxyEnabled:a,outboundProxyUrl:b,outboundNoProxy:c}={}){if("u"<typeof process||!process.env)return;let g=d(b),h=d(c);if(!a){"1"===process.env.TOKENHOP_PROXY_MANAGED&&(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.NO_PROXY,delete process.env.TOKENHOP_PROXY_MANAGED,delete process.env.TOKENHOP_PROXY_URL,delete process.env.TOKENHOP_NO_PROXY);return}let i="1"===process.env.TOKENHOP_PROXY_MANAGED,j=!1;if(i&&(g||(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.TOKENHOP_PROXY_URL),h||(delete process.env.NO_PROXY,delete process.env.TOKENHOP_NO_PROXY)),g){let a=function(a){if(!a||/[\n\r`$]/.test(a))return null;try{let b=new URL(a);if(!e.includes(b.protocol))return null;return b.href}catch{return null}}(g);a&&(process.env.HTTP_PROXY=a,process.env.HTTPS_PROXY=a,process.env.ALL_PROXY=a,process.env.TOKENHOP_PROXY_URL=a,j=!0)}h&&(process.env.NO_PROXY=h,process.env.TOKENHOP_NO_PROXY=h,j=!0),j?process.env.TOKENHOP_PROXY_MANAGED="1":i&&delete process.env.TOKENHOP_PROXY_MANAGED}},57729:()=>{},58691:(a,b,c)=>{"use strict";c.d(b,{VF:()=>i,er:()=>h});let d=Object.freeze(["fallback","round-robin","fusion","weighted"]),e="fallback",f=new Set(["__proto__","constructor","prototype"]);function g(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function h(a,b){let c=a?.comboStrategies,f=g(c)&&Object.hasOwn(c,b)&&g(c[b])?c[b]:{},h=f.fallbackStrategy||a?.comboStrategy||e;return{strategy:d.includes(h)?h:e,stickyLimit:a?.comboStickyRoundRobinLimit,weights:g(f.weights)?f.weights:{},judgeModel:f.judgeModel,fusionTuning:f.fusionTuning}}function i(a){if(!g(a))return null;if(Object.hasOwn(a,"comboStrategy")&&!d.includes(a.comboStrategy))return"Invalid comboStrategy";if(!Object.hasOwn(a,"comboStrategies"))return null;let b=a.comboStrategies;if(!g(b))return"comboStrategies must be an object";let c=Object.entries(b);if(c.length>500)return"Too many comboStrategies entries";for(let[a,b]of c){if(f.has(a))return`Invalid combo name "${a}"`;if(!g(b)||void 0!==b.fallbackStrategy&&!d.includes(b.fallbackStrategy))return`Invalid strategy for combo "${a}"`;let c=b.weights;if(void 0!==c){if(!g(c)||Object.keys(c).length>200)return`Invalid weights for combo "${a}"`;for(let[b,d]of Object.entries(c))if(f.has(b)||"number"!=typeof d||!Number.isFinite(d)||d<0||d>1e3)return`Invalid weight for combo "${a}" model "${b}"`}}return null}},73284:(a,b,c)=>{"use strict";let d;c.d(b,{gR:()=>F,hT:()=>E,Pf:()=>D,GY:()=>C,sP:()=>G,Ir:()=>B,Mj:()=>A,iw:()=>y,EJ:()=>z,Ui:()=>M,Rj:()=>N,HO:()=>H,mx:()=>L,x8:()=>K});var e=c(77598),f=c.n(e),g=c(38805),h=c(99129),i=c(64416),j=c(80700);async function k(a,b,c){let d=a.get(b)||a.set(b,{}).get(b),{alg:e}=c;if(void 0===d[e]){let a=(0,i.xY)(c,b,!0).then(a=>{if("public"!==a.type)throw new h.Dm("JSON Web Key Set members must be public keys");return d[e]=a,a}).catch(b=>{throw d[e]===a&&delete d[e],b});d[e]=a}return d[e]}function l(a){let b;try{b=structuredClone(a)}catch{}if(!(0,g.fV)(b))throw new h.Dm("JSON Web Key Set malformed");let c=b.keys.map(a=>{let b=(0,i.ZZ)(a);return Array.isArray(b.key_ops)&&(b.key_ops=[...b.key_ops]),b}),d=new WeakMap;return Object.defineProperty(async(a,e)=>{let{alg:f,kid:g}={...a,...e?.header},i="string"==typeof f?j.p[f]:void 0;if(!i||i.secret)throw new h.T0('Unsupported "alg" value for a JSON Web Key Set');let l=b.keys.filter((a,b)=>(function(a,b,c,d){let{kty:e,key_ops:f,ext:g,kid:h,alg:i,use:j,crv:k}=a;return(void 0===g||"boolean"==typeof g)&&(void 0===f||Array.isArray(f)&&f.every((a,b)=>"string"==typeof a&&f.indexOf(a)===b)&&f.includes("verify"))&&b.kty.includes(e)&&(void 0===d||"string"==typeof d&&d===h)&&(void 0===i?"AKP"!==e:c===i)&&(void 0===j||"sig"===j)&&(!b.crv||k===b.crv)})(c[b],i,f,g)),{0:m,length:n}=l;if(!n)throw new h.BT;if(1!==n){let a=new h.$4;throw a[Symbol.asyncIterator]=async function*(){for(let a of l)try{yield await k(d,a,i)}catch{}},a}return k(d,m,i)},"jwks",{value:()=>structuredClone(b)})}(typeof navigator>"u"||!navigator.userAgent?.startsWith?.("Mozilla/5.0 "))&&(d="jose/v6.2.12");let m=Symbol();async function n(a,b,c,d=fetch){let e=await d(a,{method:"GET",signal:c,redirect:"manual",headers:b}).catch(a=>{throw"TimeoutError"===a.name?new h.xb:a});if(200!==e.status)throw new h.i4("Expected 200 OK from the JSON Web Key Set HTTP response");try{return await e.json()}catch{throw new h.i4("Failed to parse the JSON Web Key Set HTTP response as JSON")}}let o=Symbol();function p(a,b){return Number.isFinite(a)&&Date.now()<a+b}function q(a,b,c){if(Number.isNaN(a))throw TypeError(`"${c}" option must not be NaN`);return"number"==typeof a?a:b}var r=c(17509),s=c(89718),t=c(13708);let u="openid profile email",v="Sign in with OIDC";function w(a){return(a||"").trim().replace(/\/+$/,"")}function x(a){return(a||u).trim()||u}function y(a){let b=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||"";if(b)return w(b);let c=a?.headers?.get?.("x-forwarded-proto")||"",d=a?.headers?.get?.("x-forwarded-host")||a?.headers?.get?.("host")||"";if(d){let b=(c||new URL(a.url).protocol||"http:").replace(/:$/,"");return`${b}://${d}`.replace(/\/+$/,"")}return w(new URL(a.url).origin)}function z(a){return!!(w(a?.oidcIssuerUrl)&&(a?.oidcClientId||"").trim()&&(a?.oidcClientSecret||"").trim())}async function A(){let a=await (0,s.getSettings)();return(0,t.b)(a).oidc&&z(a)?{issuerUrl:w(a.oidcIssuerUrl),clientId:a.oidcClientId.trim(),clientSecret:a.oidcClientSecret.trim(),scopes:x(a.oidcScopes),loginLabel:(a.oidcLoginLabel||v).trim()||v}:null}async function B(a){let b=`${w(a)}/.well-known/openid-configuration`,c=await fetch(b,{cache:"no-store"});if(!c.ok)throw Error(`Failed to load OIDC discovery document from ${b}`);return await c.json()}function C(){let a=f().randomBytes(32).toString("base64url"),b=f().createHash("sha256").update(a).digest("base64url");return{verifier:a,challenge:b}}function D(){return f().randomBytes(16).toString("base64url")}function E(){return f().randomBytes(16).toString("base64url")}function F({authorizationEndpoint:a,clientId:b,redirectUri:c,scopes:d=u,state:e,nonce:f,codeChallenge:g}){let h=new URL(a);return h.searchParams.set("response_type","code"),h.searchParams.set("client_id",b),h.searchParams.set("redirect_uri",c),h.searchParams.set("scope",x(d)),h.searchParams.set("state",e),h.searchParams.set("nonce",f),h.searchParams.set("code_challenge",g),h.searchParams.set("code_challenge_method","S256"),h.toString()}async function G({tokenEndpoint:a,clientId:b,clientSecret:c,code:d,redirectUri:e,codeVerifier:f}){let g=new URLSearchParams({grant_type:"authorization_code",client_id:b,code:d,redirect_uri:e,code_verifier:f});c&&g.set("client_secret",c);let h=await fetch(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:g}),i=await h.json().catch(()=>({}));if(!h.ok)throw Error(i?.error_description||i?.error||`OIDC token exchange failed (${h.status})`);return i}async function H({tokenEndpoint:a,clientId:b,clientSecret:c,redirectUri:d}){if(!c)return{tested:!1,valid:null,message:"No client secret was provided, so secret validation was skipped."};let e=new URLSearchParams({grant_type:"authorization_code",client_id:b,client_secret:c,code:"__oidc_test_invalid_code__",redirect_uri:d,code_verifier:"__oidc_test_invalid_verifier__"}),f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e}),g=await f.json().catch(()=>({})),h=(g?.error||"").toLowerCase(),i=g?.error_description||g?.error||"";return f.ok?{tested:!0,valid:!0,message:"Client secret was accepted by the token endpoint.",raw:g}:"invalid_client"===h||"unauthorized_client"===h||/client.*(invalid|failed|mismatch)/i.test(i)?{tested:!0,valid:!1,message:i||"Client secret is not valid.",raw:g}:"invalid_grant"===h||"invalid_code"===h||/grant|code/i.test(i)?{tested:!0,valid:!0,message:"Client secret was accepted; the token exchange failed only because the test authorization code is invalid.",raw:g}:{tested:!0,valid:null,message:i||`Token endpoint responded with ${f.status}`,raw:g}}let I=["RS256","RS384","RS512","PS256","PS384","PS512","ES256","ES384","ES512","EdDSA"],J=["HS256","HS384","HS512"];async function K({idToken:a,issuer:b,audience:c,jwksUri:e,nonce:f,clientSecret:i,allowedAlgs:j}){let k,s;if(!f)throw Error("id_token verification requires the login nonce");let t=(s=Array.isArray(j)?j.filter(a=>"string"==typeof a&&"none"!==a.toLowerCase()):[]).length>0?s:I,{alg:u}=function(a){let b;if("string"==typeof a){let c=a.split(".");(3===c.length||5===c.length)&&([b]=c)}else if("object"==typeof a&&a)if("protected"in a)b=a.protected;else throw TypeError("Token does not contain a Protected Header");let c="Invalid Token or Protected Header formatting";if("string"!=typeof b||!b)throw TypeError(c);return(0,g.OX)(b,TypeError,c)}(a);if(!u||"none"===u.toLowerCase()||!t.includes(u))throw Error(`id_token alg "${u}" is not allowed (advertised: ${t.join(", ")})`);if(J.includes(u)){if(!i)throw Error(`id_token alg "${u}" requires a client secret`);k=new TextEncoder().encode(i)}else{if(!e)throw Error("OIDC discovery document has no jwks_uri");k=function(a){if(!(a instanceof URL))throw TypeError("url must be an instance of URL");let b=new URL(a.href).href,c=(void 0)??{},e=c.timeoutDuration;if("number"==typeof e&&(!Number.isInteger(e)||e<0))throw TypeError('"timeoutDuration" option must be a non-negative integer');let f="number"==typeof e?e:5e3,i=q(c.cooldownDuration,3e4,"cooldownDuration"),j=q(c.cacheMaxAge,6e5,"cacheMaxAge"),k=new Headers(c.headers);d&&!k.has("User-Agent")&&k.set("User-Agent",d),k.has("accept")||k.set("accept","application/json, application/jwk-set+json");let r=c[m],s=c[o],t,u,v=0,w=0,x;if(s&&"object"==typeof s){let{uat:a,jwks:b}=s;p(a,j)&&(0,g.fV)(b)&&(t=a,x=l(b))}let y=async()=>{if(u&&("u">typeof WebSocketPair||"u">typeof navigator&&"Cloudflare-Workers"===navigator.userAgent||"u">typeof EdgeRuntime&&"vercel"===EdgeRuntime)&&(u=void 0),!u){let a=++v,c=u=n(b,k,AbortSignal.timeout(f),r).then(b=>{let c=l(b);if(a<=w)return;x=c;let d=Date.now();s&&(s.uat=d,s.jwks=b),t=d,w=a}).finally(()=>{u===c&&(u=void 0)})}await u};return Object.defineProperties(async(a,b)=>{x&&p(t,j)||await y();try{return await x(a,b)}catch(c){if(c instanceof h.BT&&!p(t,i))return await y(),x(a,b);throw c}},{coolingDown:{get:()=>p(t,i),enumerable:!0},fresh:{get:()=>p(t,j),enumerable:!0},reload:{value:y,enumerable:!0},reloading:{get:()=>!!u,enumerable:!0},jwks:{value:()=>x?.jwks(),enumerable:!0}})}(new URL(e))}let{payload:v}=await (0,r.V)(a,k,{issuer:b,audience:c,algorithms:[u]});if(v.nonce!==f)throw Error("id_token nonce mismatch");return v}function L(a,b){let c=Array.isArray(a?.id_token_signing_alg_values_supported)?a.id_token_signing_alg_values_supported.filter(a=>"string"==typeof a):[],d=c.length>0&&c.every(a=>J.includes(a)),e=c.some(a=>"none"!==a.toLowerCase()&&!J.includes(a)),f=[];return d?f.push("The provider signs id_tokens only with HS* (client secret). Sign-in works, but selecting a signing key in the IdP (RS256) is recommended."):0===b&&(e||0===c.length)&&f.push("The provider's JWKS has no keys, so RS/ES-signed id_tokens cannot be verified."),c.some(a=>"none"===a.toLowerCase())&&f.push('The provider advertises alg "none"; unsigned id_tokens are always rejected.'),{signingAlgs:c,warnings:f}}function M(a={}){return a.preferred_username||a.email||a.name||a.given_name||a.sub||"OIDC user"}function N(a={}){return a.email||""}},92844:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GET:()=>ag,PATCH:()=>ah,dynamic:()=>O,revalidate:()=>P,ssoLockoutError:()=>ad,validateSettingsBody:()=>af});var d=c(23211),e=c(89718),f=c(25334),g=c(50835),h=c(22274),i=c(58691);let j=new Set(["__proto__","constructor","prototype"]),k=new Set(["tunnelProvider","SEARXNG_URL","CLAUDE_CLI_VERSION","CODEX_CLI_VERSION","GROK_CLI_VERSION","ZED_CLIENT_VERSION"]);function l(a){for(let b=0;b<a.length;b+=1){let c=a.charCodeAt(b);if(c<=31||127===c)return!0}return!1}let m=/[\n\r`$]/,n=new Set(["http:","https:","socks5:","socks4:","socks5h:","socks4a:"]),o=new Set(["fill-first","round-robin","weighted"]),p=new Set(["round-robin","random"]),q=new Set(["vision","pdf","audioInput","videoInput"]),r=new Set(["enabled","roundRobin","models"]),s=new Set(["lite","full","ultra","wenyan-lite","wenyan","wenyan-ultra"]),t=new Set(["lite","full","ultra"]),u=new Set(["auto","none","minimal","low","medium","high","xhigh","max","ultra","thinking"]),v=new Set(["enabled","connections"]);function w(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)&&Object.getPrototypeOf(a)===Object.prototype}function x(a,b,c){return Number.isInteger(a)&&a>=b&&a<=c}function y(a,b=256){return"string"==typeof a&&a.length>0&&a.length<=b&&a===a.trim()&&!j.has(a)}function z(a){if("string"!=typeof a||a.length>2048)return!1;let b=a.trim();if(!b)return!0;if(l(a))return!1;try{let a=new URL(b);return"http:"===a.protocol||"https:"===a.protocol}catch{return!1}}let A=new Set(["__proto__","constructor","prototype"]),B=["retryPolicy","cooldowns","backoff","streamTimeouts"],C=new Set(["502","503","504"]),D=new Set(["rateLimitCapMs","longMs","shortMs","transientMs"]),E=new Set(["startMs","maxMs","levels"]),F=new Set(["firstChunkMs","stallMs","connectMs"]);function G(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)&&Object.getPrototypeOf(a)===Object.prototype}function H(a,b,c){return Number.isInteger(a)&&a>=b&&a<=c}var I=c(11720),J=c(56588),K=c(34013),L=c(73284),M=c(7985),N=c(13708);let O="force-dynamic",P=0,Q={"Cache-Control":"no-store"},R=["password","mitmSudoEncrypted"],S=/^[a-zA-Z0-9_.-]+$/,T=new Set(["__proto__","constructor","prototype"]);function U(a){let b=Object.fromEntries(Object.entries(a).filter(([a])=>!J.Pq.has(a)));return b.oidcConfigured=!!(a.oidcIssuerUrl&&a.oidcClientId&&a.oidcClientSecret),b}function V(a){let b=U(a);return b.startPage=(0,g.ES)(b.startPage),b.uiDensity=(0,g.b5)(b.uiDensity),d.NextResponse.json(b,{headers:Q})}async function W(a){let b,f,{name:g,patch:j}=a.comboStrategyPatch||{};if("string"!=typeof g||!S.test(g)||T.has(g))return d.NextResponse.json({error:"Invalid combo name"},{status:400});if(!j||"object"!=typeof j||Array.isArray(j))return d.NextResponse.json({error:"Invalid combo strategy patch"},{status:400});let k=new Set(["fallbackStrategy","weights","judgeModel","fusionTuning"]);if(Object.keys(j).some(a=>!k.has(a)))return d.NextResponse.json({error:"Invalid combo strategy patch"},{status:400});let l=(0,i.VF)({comboStrategies:{[g]:j}});if(l)return d.NextResponse.json({error:l},{status:400});let m=!1;try{f=await (0,e.ln)(a=>{let c=Object.hasOwn(a,g)?a[g]:{};if(Object.hasOwn(j,"weights")&&!Object.hasOwn(j,"fallbackStrategy")&&c?.fallbackStrategy!=="weighted")return m=!0,a;let d={...c,...j};if(j.weights&&(d.weights={...c?.weights,...j.weights}),b=(0,i.VF)({comboStrategies:{[g]:d}}))return a;let e={...a};return d.fallbackStrategy?e[g]=d:delete e[g],e},g)}catch(a){if("COMBO_NOT_FOUND"===a.code)return d.NextResponse.json({error:"Combo not found"},{status:409});throw a}return m?d.NextResponse.json({error:"Combo not found"},{status:409}):b?d.NextResponse.json({error:b},{status:400}):((0,h.UP)(),Promise.all([c.e(7774),c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(3943),c.e(965),c.e(3225),c.e(2051),c.e(9124),c.e(2380),c.e(8416),c.e(318),c.e(8895),c.e(1245),c.e(7211),c.e(5260)]).then(c.bind(c,78632)).then(({syncQuotaSnapshotPoller:a})=>a()).catch(a=>console.warn("[QuotaSnapshotPoller] settings update failed:",a.message)),V(f))}let X=new Set(["fill-first","round-robin","weighted"]),Y=new Set(["password","sso","both","saml","oidc"]),Z=new Set(["oidc","saml"]),$=new Set(["__proto__","constructor","prototype"]);function _(a){return Number.isInteger(a)&&a>=1&&a<=100}function aa(a,b=256){return"string"==typeof a&&a.length<=b}function ab(a){if("string"!=typeof a||a.length>2048)return!1;if(!a.trim())return!0;try{let b=new URL(a.trim());return"http:"===b.protocol||"https:"===b.protocol}catch{return!1}}let ac=["authMode","ssoType","oidcIssuerUrl","oidcClientId","oidcClientSecret","samlEntryPoint","samlCert"];function ad(a,b){if(!ac.some(a=>Object.hasOwn(b,a)))return"";let c={...a,...b};String(b.oidcClientSecret??"").trim()||(c.oidcClientSecret=a.oidcClientSecret);let d=(0,N.b)(c);return d.ssoOnly?d.saml&&!(0,M.eI)(c)?'Cannot enable SSO-only sign-in: SAML is not fully configured (entry point and certificate are required). Configure and test it with "Password + SSO" first.':d.oidc&&!(0,L.EJ)(c)?'Cannot enable SSO-only sign-in: OIDC is not fully configured (issuer URL, client ID and client secret are required). Configure and test it with "Password + SSO" first.':"":""}function ae(a){return null!==a&&"object"==typeof a&&!Array.isArray(a)&&Object.getPrototypeOf(a)===Object.prototype}function af(a){let b=(0,i.VF)(a);return b||(!function(a){if(Object.hasOwn(a,"fallbackStrategy")&&!X.has(a.fallbackStrategy)||Object.hasOwn(a,"stickyRoundRobinLimit")&&!_(a.stickyRoundRobinLimit))return!1;if(Object.hasOwn(a,"providerStrategies")){if(!ae(a.providerStrategies))return!1;for(let[b,c]of Object.entries(a.providerStrategies))if(b!==b.trim()||!b||$.has(b)||!ae(c)||Object.keys(c).some(a=>$.has(a))||Object.hasOwn(c,"fallbackStrategy")&&!X.has(c.fallbackStrategy)||Object.hasOwn(c,"stickyRoundRobinLimit")&&!_(c.stickyRoundRobinLimit))return!1}return!0}(a)?"Invalid account strategy settings":function(a){for(let b of["requireLogin","requireApiKey","tunnelDashboardAccess"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;for(let b of["requestLogsEnabled","translatorEnabled"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;if(Object.hasOwn(a,"startPage")&&("string"!=typeof a.startPage||(0,g.ES)(a.startPage)!==a.startPage))return"Invalid startPage: must be a dashboard route";if(Object.hasOwn(a,"uiDensity")&&("string"!=typeof a.uiDensity||(0,g.b5)(a.uiDensity)!==a.uiDensity))return"Invalid uiDensity: must be comfortable or compact";if(Object.hasOwn(a,"authMode")&&!Y.has(a.authMode))return"Invalid authMode";if(Object.hasOwn(a,"ssoType")&&!Z.has(a.ssoType))return"Invalid ssoType";for(let b of["oidcClientId","oidcScopes","oidcLoginLabel"])if(Object.hasOwn(a,b)&&!aa(a[b]))return`Invalid ${b}`;if(Object.hasOwn(a,"oidcIssuerUrl")&&!ab(a.oidcIssuerUrl))return"Invalid oidcIssuerUrl: must be an http(s) URL";if(Object.hasOwn(a,"oidcClientSecret")&&!aa(a.oidcClientSecret,2048))return"Invalid oidcClientSecret";if(Object.hasOwn(a,"samlEntryPoint")&&!ab(a.samlEntryPoint))return"Invalid samlEntryPoint: must be an http(s) URL";for(let b of["samlIssuer","samlLoginLabel","samlAttributeEmail","samlAttributeName"])if(Object.hasOwn(a,b)&&!aa(a[b]))return`Invalid ${b}`;if(Object.hasOwn(a,"samlCert")&&!aa(a.samlCert,16384))return"Invalid samlCert";for(let b of["currentPassword","newPassword"])if(Object.hasOwn(a,b)&&("string"!=typeof a[b]||a[b].length>256))return`Invalid ${b}`;return""}(a)||function(a){if(!w(a))return null;for(let b of Object.keys(a)){if(j.has(b))return`Invalid setting "${b}"`;if(k.has(b))return`Invalid ${b}: read-only`}if(Object.hasOwn(a,"fallbackStrategy")&&!o.has(a.fallbackStrategy))return"Invalid fallbackStrategy";if(Object.hasOwn(a,"stickyRoundRobinLimit")&&!x(a.stickyRoundRobinLimit,1,100))return"Invalid stickyRoundRobinLimit: must be an integer between 1 and 100";if(Object.hasOwn(a,"comboStickyRoundRobinLimit")&&!x(a.comboStickyRoundRobinLimit,1,100))return"Invalid comboStickyRoundRobinLimit: must be an integer between 1 and 100";if(Object.hasOwn(a,"providerStrategies")&&!function(a){if(!w(a))return!1;for(let[b,c]of Object.entries(a)){if(!y(b,128)||!w(c))return!1;for(let a of Object.keys(c))if(j.has(a))return!1;if(Object.hasOwn(c,"fallbackStrategy")&&!o.has(c.fallbackStrategy)||Object.hasOwn(c,"stickyRoundRobinLimit")&&!x(c.stickyRoundRobinLimit,1,100)||Object.hasOwn(c,"proxyPoolId")&&("string"!=typeof c.proxyPoolId||!c.proxyPoolId.trim()||c.proxyPoolId.length>256)||Object.hasOwn(c,"rotateStrategy")&&!p.has(c.rotateStrategy))return!1}return!0}(a.providerStrategies))return"Invalid providerStrategies";if(Object.hasOwn(a,"capacityAdapter")&&!function(a){if(!w(a))return!1;for(let[b,c]of Object.entries(a)){if(!q.has(b))return!1;if(Array.isArray(c)){if(c.length>500)return!1;for(let a of c)if(!("string"==typeof a&&a.trim()&&a.length<=256)&&!(w(a)&&"string"==typeof a.model&&a.model.trim()&&a.model.length<=256&&Object.keys(a).every(a=>"model"===a||"enabled"===a)&&(!Object.hasOwn(a,"enabled")||"boolean"==typeof a.enabled)))return!1;continue}if(!w(c))return!1;for(let a of Object.keys(c))if(!r.has(a))return!1;if(Object.hasOwn(c,"enabled")&&"boolean"!=typeof c.enabled||Object.hasOwn(c,"roundRobin")&&"boolean"!=typeof c.roundRobin)return!1;if(Object.hasOwn(c,"models")){if(!Array.isArray(c.models)||c.models.length>500)return!1;for(let a of c.models)if("string"!=typeof a||!a.trim()||a.length>256)return!1}}return!0}(a.capacityAdapter))return"Invalid capacityAdapter";for(let b of["outboundProxyEnabled","tunnelEnabled","tailscaleEnabled"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;if(Object.hasOwn(a,"outboundProxyUrl")&&!function(a){if("string"!=typeof a||a.length>2048)return!1;let b=a.trim();if(!b)return!0;if(m.test(a))return!1;try{return n.has(new URL(b).protocol)}catch{return!1}}(a.outboundProxyUrl))return"Invalid outboundProxyUrl: must be an http/https/socks proxy URL";if(Object.hasOwn(a,"outboundNoProxy")&&!function(a){if("string"!=typeof a||a.length>2048)return!1;if(!a.trim())return!0;if(l(a)||/[`$]/.test(a))return!1;for(let b of a.split(",")){let a=b.trim();if(a&&(a.length>253||/\s/.test(a)||a.includes("://")))return!1}return!0}(a.outboundNoProxy))return"Invalid outboundNoProxy: must be a comma-separated host list";for(let b of["rtkEnabled","headroomEnabled","headroomCompressUserMessages","headroomCodeAware","headroomKompress","cavemanEnabled","ponytailEnabled","pxpipeEnabled","pxpipeAutoInstall"])if(Object.hasOwn(a,b)&&"boolean"!=typeof a[b])return`Invalid ${b}: must be a boolean`;if(Object.hasOwn(a,"headroomUrl")&&!z(a.headroomUrl))return"Invalid headroomUrl: must be an http(s) URL";if(Object.hasOwn(a,"headroomTimeoutMs")&&!x(a.headroomTimeoutMs,1,3e5))return"Invalid headroomTimeoutMs: must be an integer between 1 and 300000";if(Object.hasOwn(a,"cavemanLevel")&&!s.has(a.cavemanLevel))return"Invalid cavemanLevel";if(Object.hasOwn(a,"ponytailLevel")&&!t.has(a.ponytailLevel))return"Invalid ponytailLevel";if(Object.hasOwn(a,"pxpipeMinChars")&&!x(a.pxpipeMinChars,0,1e7))return"Invalid pxpipeMinChars: must be an integer between 0 and 10000000";if(Object.hasOwn(a,"pxpipeTimeoutMs")&&!x(a.pxpipeTimeoutMs,1,6e5))return"Invalid pxpipeTimeoutMs: must be an integer between 1 and 600000";if(Object.hasOwn(a,"providerThinking")&&!function(a){if(!w(a)||Object.keys(a).length>500)return!1;for(let[b,c]of Object.entries(a))if(!y(b,128)||!w(c)||Object.keys(c).some(a=>"mode"!==a||j.has(a))||!Object.hasOwn(c,"mode")||!u.has(c.mode))return!1;return!0}(a.providerThinking))return"Invalid providerThinking";for(let b of["claudeAutoPing","codexAutoPing"])if(Object.hasOwn(a,b)&&!function(a){if(!w(a))return!1;for(let b of Object.keys(a))if(!v.has(b))return!1;if(Object.hasOwn(a,"enabled")&&"boolean"!=typeof a.enabled)return!1;if(void 0===a.connections)return!0;if(!w(a.connections))return!1;let b=Object.entries(a.connections);if(b.length>1e4)return!1;for(let[a,c]of b)if(!y(a)||"boolean"!=typeof c)return!1;return!0}(a[b]))return`Invalid ${b}: must be a per-connection map`;return Object.hasOwn(a,"ccFilterNaming")&&"boolean"!=typeof a.ccFilterNaming?"Invalid ccFilterNaming: must be a boolean":Object.hasOwn(a,"quotaVisibility")&&!function(a){if(!w(a)||Object.keys(a).length>500)return!1;for(let[b,c]of Object.entries(a)){if(!y(b,128)||!w(c))return!1;for(let a of Object.keys(c))if(j.has(a))return!1;if(!Object.hasOwn(c,"hidden")||!Array.isArray(c.hidden)||c.hidden.length>1e3)return!1;for(let a of c.hidden)if("string"!=typeof a||!a.trim()||a.length>256)return!1}return!0}(a.quotaVisibility)?"Invalid quotaVisibility":Object.hasOwn(a,"mitmRouterBaseUrl")&&!z(a.mitmRouterBaseUrl)?"Invalid mitmRouterBaseUrl: must be an http(s) URL":Object.hasOwn(a,"enableObservability")&&"boolean"!=typeof a.enableObservability?"Invalid enableObservability: must be a boolean":Object.hasOwn(a,"observabilityMaxRecords")&&!x(a.observabilityMaxRecords,1,1e7)?"Invalid observabilityMaxRecords: must be an integer between 1 and 10000000":Object.hasOwn(a,"observabilityBatchSize")&&!x(a.observabilityBatchSize,1,1e4)?"Invalid observabilityBatchSize: must be an integer between 1 and 10000":Object.hasOwn(a,"observabilityFlushIntervalMs")&&!x(a.observabilityFlushIntervalMs,1,36e5)?"Invalid observabilityFlushIntervalMs: must be an integer between 1 and 3600000":Object.hasOwn(a,"observabilityMaxJsonSize")&&!x(a.observabilityMaxJsonSize,1,1048576)?"Invalid observabilityMaxJsonSize: must be an integer number of kilobytes":null}(a)||"")}async function ag(){try{let a=await (0,e.getSettings)(),b=U(a),f=(0,g.rK)("ENABLE_REQUEST_LOGS",a.requestLogsEnabled,!1),h=(0,g.rK)("ENABLE_TRANSLATOR",a.translatorEnabled,!1),i=a=>{let b=process.env[a];if(null==b||""===b)return!1;let c=parseInt(b,10);return Number.isFinite(c)&&c>0},j={...i("STREAM_FIRST_CHUNK_TIMEOUT_MS")?{firstChunkMs:!0}:{},...i("STREAM_STALL_TIMEOUT_MS")?{stallMs:!0}:{},...i("FETCH_CONNECT_TIMEOUT_MS")?{connectMs:!0}:{}},{CLAUDE_CLI_VERSION:k}=await c.e(1432).then(c.bind(c,51432)),{CODEX_CLI_VERSION:l}=await c.e(6703).then(c.bind(c,6703)),{GROK_CLI_VERSION:m}=await c.e(737).then(c.bind(c,90737)),{ZED_CLIENT_VERSION:n}=await c.e(524).then(c.bind(c,70524));return d.NextResponse.json({...b,enableRequestLogs:f.value,enableTranslator:h.value,requestLogsOverridden:f.overridden,translatorOverridden:h.overridden,startPage:(0,g.ES)(a.startPage),uiDensity:(0,g.b5)(a.uiDensity),hasPassword:!!a.password,searxngUrl:process.env.SEARXNG_URL?.trim()||"",headroomUrlFromEnv:!!process.env.HEADROOM_URL?.trim(),requestLogEnvOverride:f.overridden,streamEnvOverrides:j,CLAUDE_CLI_VERSION:k,CODEX_CLI_VERSION:l,GROK_CLI_VERSION:m,ZED_CLIENT_VERSION:n},{headers:Q})}catch(a){return console.log("Error getting settings:",a),d.NextResponse.json({error:a.message},{status:500})}}async function ah(a){try{let b=await a.json();if(!ae(b))return d.NextResponse.json({error:"Settings body must be an object"},{status:400});if(Object.hasOwn(b,"comboStrategyPatch")&&1!==Object.keys(b).length)return d.NextResponse.json({error:"comboStrategyPatch must be the only setting"},{status:400});for(let a of R)delete b[a];if(Object.hasOwn(b,"comboStrategyPatch"))return await W(b);let g=af(b);if(g)return d.NextResponse.json({error:g},{status:400});let i=await (0,e.getSettings)(),j=function(a,b=null){var c;let d;if(!G(a))return null;for(let b of Object.keys(a))if(A.has(b))return`Invalid setting "${b}"`;return Object.hasOwn(a,"retryPolicy")&&!function(a){if(!G(a))return!1;for(let[b,c]of Object.entries(a)){if(A.has(b)||!C.has(b)||!G(c))return!1;for(let a of Object.keys(c))if(A.has(a)||"tries"!==a&&"delayMs"!==a)return!1;if(Object.hasOwn(c,"tries")&&!H(c.tries,0,10)||Object.hasOwn(c,"delayMs")&&!H(c.delayMs,0,6e4))return!1}return!0}(a.retryPolicy)?"Invalid retryPolicy: statuses 502/503/504 with tries 0-10 and delayMs 0-60000":Object.hasOwn(a,"cooldowns")&&!function(a){if(!G(a))return!1;for(let[b,c]of Object.entries(a))if(A.has(b)||!D.has(b)||!H(c,1e3,864e5))return!1;return!0}(a.cooldowns)?"Invalid cooldowns: rateLimitCapMs/longMs/shortMs/transientMs between 1000 and 86400000":Object.hasOwn(a,"backoff")&&!function(a){if(!G(a))return!1;for(let b of Object.keys(a))if(A.has(b)||!E.has(b))return!1;return!(Object.hasOwn(a,"startMs")&&!H(a.startMs,100,6e4)||Object.hasOwn(a,"maxMs")&&!H(a.maxMs,1e3,36e5)||Object.hasOwn(a,"levels")&&!H(a.levels,1,30)||Object.hasOwn(a,"startMs")&&Object.hasOwn(a,"maxMs")&&a.maxMs<a.startMs)}(a.backoff)?"Invalid backoff: startMs 100-60000, maxMs 1000-3600000 (>= startMs), levels 1-30":Object.hasOwn(a,"backoff")&&(d={...G(c=b?.backoff)?c:{}},G(a.backoff)&&Object.assign(d,a.backoff),Object.hasOwn(d,"startMs")&&Object.hasOwn(d,"maxMs")&&d.maxMs<d.startMs)?"Invalid backoff: maxMs must be >= startMs (including stored values)":Object.hasOwn(a,"streamTimeouts")&&!function(a){if(!G(a))return!1;for(let[b,c]of Object.entries(a))if(A.has(b)||!F.has(b)||!H(c,1e3,18e5))return!1;return!0}(a.streamTimeouts)?"Invalid streamTimeouts: firstChunkMs/stallMs/connectMs between 1000 and 1800000":null}(b,i);if(j)return d.NextResponse.json({error:j},{status:400});let k=ad(i,b);if(k)return d.NextResponse.json({error:k},{status:400});if(B.some(a=>Object.hasOwn(b,a)))for(let a of B)Object.hasOwn(b,a)&&(b[a]=function(a,b){let c={...G(a)?a:{}};for(let[a,d]of Object.entries(b))c[a]=G(d)?{...c[a]||{},...d}:d;return c}(i[a],b[a]));let l="string"==typeof b.newPassword?b.newPassword:"",m="string"==typeof b.currentPassword?b.currentPassword:"";if(delete b.newPassword,delete b.currentPassword,l){let a=(await (0,e.getSettings)()).password;if(a){if(!m)return d.NextResponse.json({error:"Current password required"},{status:400});if(!await K.Ay.compare(m,a))return d.NextResponse.json({error:"Invalid current password"},{status:401})}else if(m&&"123456"!==m)return d.NextResponse.json({error:"Invalid current password"},{status:401});let c=await K.Ay.genSalt(10);b.password=await K.Ay.hash(l,c)}!Object.hasOwn(b,"oidcClientSecret")||b.oidcClientSecret&&String(b.oidcClientSecret).trim()||delete b.oidcClientSecret;let n=await (0,e.Xx)(b);return(0,I.E8)(b,n),(Object.hasOwn(b,"outboundProxyEnabled")||Object.hasOwn(b,"outboundProxyUrl")||Object.hasOwn(b,"outboundNoProxy"))&&(0,f.k)(n),Object.hasOwn(b,"requestLogsEnabled")&&c.e(1336).then(c.bind(c,71336)).then(({notifyRequestLogsEnabled:a})=>a(!0===n.requestLogsEnabled)).catch(a=>console.warn("[RequestLogger] settings update failed:",a.message)),(Object.hasOwn(b,"comboStrategy")||Object.hasOwn(b,"comboStickyRoundRobinLimit")||Object.hasOwn(b,"comboStrategies"))&&(0,h.UP)(),(Object.hasOwn(b,"fallbackStrategy")||Object.hasOwn(b,"stickyRoundRobinLimit")||Object.hasOwn(b,"providerStrategies"))&&Promise.all([c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(9124),c.e(8416),c.e(5827)]).then(c.bind(c,80238)).then(({resetAccountSelection:a})=>a?.()).catch(a=>console.warn("[AccountSelection] reset failed:",a.message)),(Object.hasOwn(b,"claudeAutoPing")||Object.hasOwn(b,"codexAutoPing"))&&Promise.all([c.e(7774),c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(3943),c.e(965),c.e(3225),c.e(2051),c.e(9124),c.e(2380),c.e(8416),c.e(318),c.e(8895),c.e(1245),c.e(7211),c.e(7716),c.e(9713)]).then(c.bind(c,1133)).then(({configureQuotaAutoPing:a})=>{a(n)}).catch(a=>console.warn("[AutoPing] settings update failed:",a.message)),(Object.hasOwn(b,"fallbackStrategy")||Object.hasOwn(b,"providerStrategies")||Object.hasOwn(b,"comboStrategies")||Object.hasOwn(b,"comboStrategy"))&&Promise.all([c.e(7774),c.e(7819),c.e(6070),c.e(1152),c.e(7616),c.e(3943),c.e(965),c.e(3225),c.e(2051),c.e(9124),c.e(2380),c.e(8416),c.e(318),c.e(8895),c.e(1245),c.e(7211),c.e(5260)]).then(c.bind(c,78632)).then(({syncQuotaSnapshotPoller:a})=>{a()}).catch(a=>console.warn("[QuotaSnapshotPoller] settings update failed:",a.message)),V(n)}catch(a){return console.log("Error updating settings:",a),d.NextResponse.json({error:a.message},{status:500})}}}};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";exports.id=257,exports.ids=[257],exports.modules={2451:(a,b,c)=>{c.d(b,{T:()=>d});function d(a,b){try{if(!Array.isArray(a))return{id:null,currentWeights:new Map};let c=b instanceof Map?b:new Map,d=new Map,e=new Set,f=0,g=null,h=-1/0;for(let b of a){let a=b?.id;if("string"!=typeof a||0===a.length||e.has(a))continue;e.add(a);let i=b?.weight;if(!Number.isFinite(i)||i<=0)continue;let j=(c.get(a)??0)+i;d.set(a,j),f+=i,j>h&&(g=a,h=j)}if(null===g)return{id:null,currentWeights:new Map};return d.set(g,d.get(g)-f),{id:g,currentWeights:d}}catch{return{id:null,currentWeights:new Map}}}},3662:(a,b,c)=>{c.d(b,{LY:()=>d,O:()=>e,t2:()=>g,x6:()=>f});let d={400:{type:"invalid_request_error",code:"bad_request"},401:{type:"authentication_error",code:"invalid_api_key"},402:{type:"billing_error",code:"payment_required"},403:{type:"permission_error",code:"insufficient_quota"},404:{type:"invalid_request_error",code:"model_not_found"},406:{type:"invalid_request_error",code:"model_not_supported"},429:{type:"rate_limit_error",code:"rate_limit_exceeded"},500:{type:"server_error",code:"internal_server_error"},502:{type:"server_error",code:"bad_gateway"},503:{type:"server_error",code:"service_unavailable"},504:{type:"server_error",code:"gateway_timeout"}},e={400:"Bad request",401:"Invalid API key provided",402:"Payment required",403:"You exceeded your current quota",404:"Model not found",406:"Model not supported",429:"Rate limit exceeded",500:"Internal server error",502:"Bad gateway - upstream provider error",503:"Service temporarily unavailable",504:"Gateway timeout"},f="out of extra usage",g=[{text:"no credentials",cooldownMs:12e4},{text:"request not allowed",cooldownMs:5e3},{text:"improperly formed request",cooldownMs:12e4},{text:"rate limit",backoff:!0},{text:"too many requests",backoff:!0},{text:"quota exceeded",backoff:!0},{text:f,cooldownMs:0},{text:"capacity",backoff:!0},{text:"overloaded",backoff:!0},{text:"not supported when using codex with a chatgpt account",cooldownMs:12e4},{status:401,cooldownMs:12e4},{status:402,cooldownMs:12e4},{status:403,cooldownMs:12e4},{status:404,cooldownMs:12e4},{status:429,backoff:!0}]},9024:(a,b,c)=>{c.d(b,{A4:()=>p,c2:()=>k,mb:()=>s,tV:()=>j,uJ:()=>o,v8:()=>r});var d=c(14170),e=c(44090),f=c(19804),g=c(43659),h=c(78959);let i=new TextEncoder;function j(a,b=null){if(!a)return null;if(b===d.h.OLLAMA){let b=a.trim();if(b.startsWith("{"))try{return JSON.parse(b)}catch(a){}return null}if(100!==a.charCodeAt(0))return null;let c=a.slice(5).trim();if("[DONE]"===c)return{done:!0};try{return JSON.parse(c)}catch(a){return c.length>0&&c.length<1e3&&console.log(`[WARN] Failed to parse SSE line (${c.length} chars): ${c.substring(0,100)}...`),null}}function k(a,b){if(b===d.h.OPENAI&&a.choices?.[0]?.delta){let b=a.choices[0].delta;return b.content&&""!==b.content||""!==(0,e.V)(b)||b.tool_calls&&b.tool_calls.length>0||a.choices[0].finish_reason||b.role}if(b===d.h.CLAUDE){let b="content_block_delta"===a.type,c=a.delta?.text&&""!==a.delta.text,d=a.delta?.thinking&&""!==a.delta.thinking,e=a.delta?.partial_json&&""!==a.delta.partial_json;if(b&&!c&&!d&&!e)return!1}return!0}let l=a=>"string"==typeof a&&""!==a,m=a=>!!a&&(l(a.function?.name)||l(a.function?.arguments)||l(a.name)),n=new Set(["response.output_text.delta","response.refusal.delta","response.reasoning_text.delta","response.reasoning_summary_text.delta","response.function_call_arguments.delta","response.custom_tool_call_input.delta"]);function o(a){if(a&&"object"==typeof a&&a.event&&a.data&&(a=a.data),!a||"object"!=typeof a)return!1;if(Array.isArray(a.choices)){let b=a.choices[0];if(!b)return!1;let c=b.delta||b.message||null;return!!(l(c?.content)||l(b.text)||l(c?.refusal)||c&&""!==(0,e.V)(c)||l(c?.audio?.data)||l(c?.audio?.transcript)||Array.isArray(c?.images)&&c.images.length>0)||Array.isArray(c?.tool_calls)&&c.tool_calls.some(m)}if("string"==typeof a.type){let b=a.delta;if("content_block_delta"===a.type&&b&&"object"==typeof b)return l(b.text)||l(b.thinking);if("content_block_start"===a.type&&a.content_block){let b=a.content_block;return b.type===f.R4.TOOL_USE||b.type===f.R4.SERVER_TOOL_USE?l(b.name):l(b.text)||l(b.thinking)}if(n.has(a.type))return l(b);if(/audio|image/.test(a.type)&&/delta|partial/.test(a.type))return l(b)||l(a.partial_image_b64);if("response.output_item.added"===a.type&&a.item){let b=a.item;return(b.type===f.Du.FUNCTION_CALL||b.type===f.Du.CUSTOM_TOOL_CALL)&&l(b.name)}return!1}if(a.message&&"object"==typeof a.message){let b=a.message;return l(b.content)||""!==(0,e.V)(b)||Array.isArray(b.tool_calls)&&b.tool_calls.some(m)}if(l(a.content))return!0;let b=a.candidates?.[0]?.content?.parts??a.response?.candidates?.[0]?.content?.parts;return!!Array.isArray(b)&&b.some(a=>l(a?.text)||l(a?.functionCall?.name)||l(a?.inlineData?.data))}function p(a){if(a.id&&("chat"===a.id||"completion"===a.id||a.id.length<8)){let b=a.extend_fields?.requestId||a.extend_fields?.traceId||Date.now().toString(36);return a.id=`chatcmpl-${b}`,!0}return!1}function q(a){if(!a||"object"!=typeof a||Array.isArray(a))return a;let b=a;if("usage"in b){if(null===b.usage){let{usage:a,...c}=b;b=c}else if("object"==typeof b.usage&&null===b.usage.perf_metrics){let{perf_metrics:a,...c}=b.usage;b={...b,usage:c}}}if(b.response&&"object"==typeof b.response&&!Array.isArray(b.response)){let a=q(b.response);a!==b.response&&(b={...b,response:a})}return b}function r(a,b){if(null==a)return"data: null\n\n";if(a&&a.done)return"data: [DONE]\n\n";if(a&&a.event&&a.data){let b=q(a.data);return`event: ${a.event}
|
|
2
|
+
data: ${JSON.stringify(b)}
|
|
3
|
+
|
|
4
|
+
`}return(a=q(a),b===d.h.CLAUDE&&a&&a.type)?`event: ${a.type}
|
|
5
|
+
data: ${JSON.stringify(a)}
|
|
6
|
+
|
|
7
|
+
`:`data: ${JSON.stringify(a)}
|
|
8
|
+
|
|
9
|
+
`}function s(a,b,c){let{error:e}=(0,g.xJ)(a,b),f=c===d.h.CLAUDE?r({type:"error",error:e},d.h.CLAUDE):r({error:e},c)+h.$U;return i.encode(f)}},14170:(a,b,c)=>{c.d(b,{h:()=>d,t:()=>e});let d={OPENAI:"openai",OPENAI_RESPONSES:"openai-responses",OPENAI_RESPONSE:"openai-response",CLAUDE:"claude",GEMINI:"gemini",GEMINI_CLI:"gemini-cli",VERTEX:"vertex",CODEX:"codex",ANTIGRAVITY:"antigravity",KIRO:"kiro",CURSOR:"cursor",OLLAMA:"ollama",COMMANDCODE:"commandcode"};function e(a,b){return a.includes("/v1/responses")?d.OPENAI_RESPONSES:a.includes("/v1/messages")?d.CLAUDE:a.includes("/v1/chat/completions")&&Array.isArray(b?.input)?d.OPENAI:null}},22274:(a,b,c)=>{c.d(b,{t8:()=>u,findComboCycle:()=>z,Vu:()=>x,Pr:()=>B,vt:()=>E,wI:()=>y,UP:()=>w});var d=c(12557),e=c(9024);async function f(a,{maxBytes:b=262144,maxMs:c=1e4}={}){if(!a.body)return{outcome:"release",response:a};let d=(a.headers?.get?.("content-type")||"").toLowerCase(),g=d.includes("ndjson")&&!d.includes("text/event-stream"),h=a.body.getReader(),i=new TextDecoder,j=[],k=0,l="",m=(b=null)=>({outcome:"release",response:function(a,b,c,d=null){let e=0,f=d;return f&&f.catch(()=>{}),new Response(new ReadableStream({async pull(a){if(e<b.length)return void a.enqueue(b[e++]);try{let b=await (f??c.read());f=null,b.done?a.close():a.enqueue(b.value)}catch(b){a.error(b)}},async cancel(a){try{await c.cancel(a)}catch{}}}),{status:a.status,statusText:a.statusText,headers:a.headers})}(a,j,h,b)}),n=a=>(h.cancel().catch(()=>{}),a?{outcome:"error",error:a}:{outcome:"empty"}),o=a=>{if(a&&"object"==typeof a&&(null!=a.error||"error"===a.type||"response.failed"===a.type)){let b;return{error:"string"==typeof(b=a?.error)&&b||b?.message||a?.message||("object"==typeof a?.error?JSON.stringify(a.error):"")||"stream error"}}return!function(a){try{return(0,e.uJ)(a)}catch{return!1}}(a)?null:"meaningful"},p=a=>{let b=[],c=!1;if(g){let c=l.split("\n");for(let d of(l=a?"":c.pop()??"",c))if(""!==d.trim())try{b.push(JSON.parse(d))}catch{return"meaningful"}}else{let d,e=l.replace(/\r\n/g,"\n"),f=a?e.length:e.lastIndexOf("\n\n");if(f<0)return l=e,"more";if({payloads:b,done:c,unknown:d}=function(a){let b=[],c=!1,d=[],e=()=>{if(0===d.length)return;let a=d.join("\n");if(d.length=0,"[DONE]"===a){c=!0;return}if(""!==a.trim())try{b.push(JSON.parse(a))}catch{f=!0}},f=!1;for(let b of a.split("\n")){let a=b.endsWith("\r")?b.slice(0,-1):b;""===a?e():a.startsWith("data:")?d.push(a.slice(5).replace(/^ /,"")):/^(event|id|retry):|^:/.test(a)||(f=!0)}return e(),{payloads:b,done:c,unknown:f}}(e.slice(0,f)),l=a?"":e.slice(f+2),d)return"meaningful"}for(let a of b){let b=o(a);if(b)return b}return c||a?"done":"more"},q=Date.now()+c,r=a=>"done"===a?n():n(a.error);for(;;){let a,c,d=h.read();try{c=await Promise.race([d,new Promise(b=>{a=setTimeout(()=>b(null),Math.max(0,q-Date.now()))})])}catch(b){return clearTimeout(a),n(b?.message||String(b)||"stream error")}if(clearTimeout(a),null===c)return m(d);if(c.done){let a=p(!0);return"meaningful"===a?m():r(a)}j.push(c.value),k+=c.value.byteLength,l+=i.decode(c.value,{stream:!0});let e=p(!1);if("meaningful"===e)return m();if("more"!==e)return r(e);if(k>=b)return m()}}var g=c(41004),h=c(43659),i=c(24),j=c(26922),k=c(43698),l=c(37981),m=c(2451);let n=new Set(["vision","pdf","audioInput","videoInput"]),o="[Called tools: ",p="[Tool result: ";function q(a){return a.filter(a=>a).map(a=>{if(a.type===k.Du.FUNCTION_CALL||a.type===k.Du.CUSTOM_TOOL_CALL)return{role:"assistant",content:`${o}${a.name||"tool"}]`};if(a.type===k.Du.FUNCTION_CALL_OUTPUT||a.type===k.Du.CUSTOM_TOOL_CALL_OUTPUT)return{role:"assistant",content:`${p}${(0,l.DP)(a.output)}]`};if("tool"===a.role||"function"===a.role)return{role:"assistant",content:`${p}${(0,j.kU)(a.content)||String(a.content??"")}]`};if("assistant"===a.role&&Array.isArray(a.tool_calls)){let{tool_calls:b,...c}=a,d=b.map(a=>a?.function?.name||a?.name||"tool").join(", "),e=(0,j.kU)(c.content)||("string"==typeof c.content?c.content:"");return{...c,content:`${e}${e?"\n":""}${o}${d}]`}}if(Array.isArray(a.content)){let b=a.content.some(a=>"tool_use"===a.type),c=a.content.some(a=>"tool_result"===a.type);if(b||c){let b=[],c=[],d=[];for(let e of a.content)"text"===e.type&&e.text&&b.push(e.text),"tool_use"===e.type&&c.push(e.name||"tool"),"tool_result"===e.type&&d.push((0,j.kU)(e.content)||String(e.content??""));let{...e}=a,f=b.join("\n");return c.length>0&&(f=`${f}${f?"\n":""}${o}${c.join(", ")}]`),d.length>0&&(f=`${f}${f?"\n":""}${p}${d.join("\n")}]`),{...e,content:f}}}return a})}let r=new Map,s=new Map;function t(a){if(!Array.isArray(a)||0===a.length)return[];let b=a=>"assistant"===a||"model"===a,c=a.length-1;for(;c>=0&&!b(a[c]?.role);)c--;return a.slice(c+1)}function u(a){let b=new Set;if(!a||"object"!=typeof a)return b;let c=a=>{"string"==typeof a&&(a.startsWith("image/")?b.add("vision"):"application/pdf"===a?b.add("pdf"):a.startsWith("audio/")?b.add("audioInput"):a.startsWith("video/")&&b.add("videoInput"))},d=a=>{if(!a||"object"!=typeof a)return;let e=a.type;if(("image_url"===e||"image"===e||"input_image"===e)&&b.add("vision"),("input_audio"===e||"audio_url"===e||"audio"===e)&&b.add("audioInput"),("input_video"===e||"video_url"===e||"video"===e)&&b.add("videoInput"),"file"===e||"document"===e||"input_file"===e){let d=null;a.input_audio?.format?d=`audio/${a.input_audio.format}`:a.file?.file_data?d=String(a.file.file_data).match(/^data:([^;,]+)/)?.[1]:a.source?.media_type?d=a.source.media_type:a.source?.data&&(d=String(a.source.data).match(/^data:([^;,]+)/)?.[1]),d?c(d):b.add("pdf")}if(c(a.inlineData?.mimeType||a.fileData?.mimeType),"tool_result"===e&&Array.isArray(a.content))for(let b of a.content)d(b)},e=a=>{if(Array.isArray(a))for(let b of a)d(b)},f=a=>{if(!a||"object"!=typeof a)return;Array.isArray(a.images)&&a.images.length>0&&b.add("vision");let d=a.experimental_attachments||a.attachments;if(Array.isArray(d))for(let a of d){if(!a)continue;let d=a.contentType||a.mediaType||"string"==typeof a.url&&a.url.match(/^data:([^;,]+)/)?.[1];d?c(d):(a.url||a.data)&&b.add("vision")}(a.image_url||a.image)&&b.add("vision"),(a.audio_url||a.audio)&&b.add("audioInput"),e(a.content),"string"==typeof a.content&&(a.content.includes("data:image/")?b.add("vision"):a.content.includes("data:audio/")?b.add("audioInput"):a.content.includes("data:application/pdf")&&b.add("pdf"))};for(let b of t(a.messages))f(b);for(let b of t(a.input))e(b.content),b?.type==="function_call_output"&&e(b.output);for(let b of t(a.contents||a.request?.contents))e(b.parts);return b}function v(a){let b=Number.parseInt(a,10);return Number.isFinite(b)&&b>0?b:1}function w(a){a?(r.delete(a),s.delete(a)):(r.clear(),s.clear())}function x(a,b){if(a.includes("/"))return null;let c=(Array.isArray(b)?b:b?.combos||[]).find(b=>b.name===a);return c&&c.models&&c.models.length>0?c.models:null}function y(a){return Array.isArray(a)&&a.every(a=>"string"==typeof a)}function z(a,b,c){let d=new Map(c.map(a=>[a.name,a.models||[]]));d.set(a,b||[]);let e=new Set,f=(b,c)=>{for(let g of d.get(b)){if(g===a)return[...c,g];if("string"!=typeof g||!d.has(g)||e.has(g))continue;e.add(g);let b=f(g,[...c,g]);if(b)return b}return null};return f(a,[a])}let A=["not supported when using codex with a chatgpt account","invalid_model","invalid_model_id","unknown model","model not found","model_not_found","does not exist"];async function B({body:a,models:b,handleSingleModel:c,log:e,comboName:j,comboStrategy:k,comboStickyLimit:l=1,comboWeights:o,headroomFn:p,autoSwitch:q=!0,onFallback:t,onAttempt:w}){let x="weighted"===k?function(a,b,c,d,e=1){let f;if(!a||a.length<=1)return a;let g=b||"__default__",h=new Set,i=[];for(let b of a){if("string"!=typeof b||h.has(b))continue;h.add(b);let a=1;try{let c=d?.(b);Number.isFinite(c)&&(a=c)}catch{a=1}let e=function(a,b,c){return(b&&Object.hasOwn(b,a)&&Number.isFinite(b[a])&&b[a]>=0?b[a]:1)*("number"==typeof c&&Number.isFinite(c)&&c>=0?c:1)}(b,c,a);e>0&&i.push({id:b,weight:e})}if(0===i.length)return a;let j=s.get(g);j||(j={currentWeights:new Map,stickyId:null,count:0});let k=v(e);if(new Set(i.map(a=>a.id)).has(j.stickyId)&&j.count<k)f=j.stickyId,j.count+=1;else{let{id:b,currentWeights:c}=(0,m.T)(i,j.currentWeights);if(null===b)return a;j={currentWeights:c,stickyId:b,count:1},f=b}s.set(g,j);let l=[f],n=!1;for(let b of a){if(!n&&b===f){n=!0;continue}l.push(b)}return l}(b,j,o,p,l):function(a,b,c,d=1){if(!a||a.length<=1||"round-robin"!==c)return a;let e=b||"__default__",f=v(d),g=r.get(e),h="number"==typeof g?{index:g,consecutiveUseCount:0}:g||{index:0,consecutiveUseCount:0},i=h.index%a.length,j=function(a,b){let c=[...a];for(let a=0;a<b;a++){let a=c.shift();c.push(a)}return c}(a,i),k=h.consecutiveUseCount+1;return k>=f?r.set(e,{index:(i+1)%a.length,consecutiveUseCount:0}):r.set(e,{index:i,consecutiveUseCount:k}),j}(b,j,k,l);if(q){let b=u(a);if(b.size>0){let a=function(a,b){if(!b||0===b.size||!Array.isArray(a)||a.length<=1)return a;let c=[...b].filter(a=>n.has(a)),d=[...b].filter(a=>!n.has(a));return a.map((a,b)=>{let e,f,g,h;return{m:a,i:b,t:(f=(e="string"==typeof a?a.indexOf("/"):-1)>0?a.slice(0,e):"",g=e>0?a.slice(e+1):a,h=(0,i.getCapabilitiesForModel)(f,g),c.every(a=>!0===h[a])?+!d.every(a=>!0===h[a]):2)}}).sort((a,b)=>a.t-b.t||a.i-b.i).map(a=>a.m)}(x,b);a[0]!==x[0]&&e.info("COMBO",`auto-switch for [${[...b].join(",")}] → ${a[0]}`),x=a}}let y=a=>{if("function"==typeof w)try{w(a)}catch{}},z=null,C=null,E=null;for(let b=0;b<x.length;b++){let h=x[b];e.info("COMBO",`Trying model ${b+1}/${x.length}: ${h}`);let i=Date.now();try{let b=await c(a,h);if(b.ok&&b.body&&/text\/event-stream|ndjson/i.test(b.headers?.get?.("content-type")||"")){let a=await f(b,{maxBytes:g.O9,maxMs:g.h9});if("release"===a.outcome)b=a.response;else{let c="empty"===a.outcome?"empty-stream":"stream-error";if(z="empty"===a.outcome?"empty streaming response":a.error||"stream error",E=502,y({model:h,status:b.status,latencyMs:Date.now()-i,errorType:c,outcome:"skipped"}),e.warn("COMBO",`Model ${h} ${c}, trying next`),t)try{await t({model:h,status:502})}catch{}continue}}if(b.ok)return y({model:h,status:b.status,latencyMs:Date.now()-i,errorType:null,outcome:"served"}),e.info("COMBO",`Model ${h} succeeded`),b;let j=b.statusText||"";try{let a=await b.clone().json();j=a?.error?.message||a?.error||a?.message||j}catch{}let k=function(a){if(!a)return null;let b=new Date(/^\d+$/.test(a)?Date.now()+1e3*Number(a):a);return Number.isNaN(b.getTime())?null:b.toISOString()}(b.headers?.get?.("retry-after"));if(k&&(!C||new Date(k)<new Date(C))&&(C=k),"string"!=typeof j)try{j=JSON.stringify(j)}catch{j=String(j)}let{shouldFallback:l,cooldownMs:m}=(0,d.hk)(b.status,j);if(!l&&!function(a,b){if(404===a||410===a)return!0;if(400!==a)return!1;let c=String(b||"").toLowerCase();return A.some(a=>c.includes(a))||/model[^.]{0,80}not supported/.test(c)}(b.status,j))return y({model:h,status:b.status,latencyMs:Date.now()-i,errorType:D(b.status,j),outcome:"failed"}),e.warn("COMBO",`Model ${h} failed (no fallback)`,{status:b.status}),b;if(m&&m>0&&m<=5e3&&(503===b.status||502===b.status||504===b.status)&&(e.info("COMBO",`Model ${h} transient ${b.status}, waiting ${m}ms before next`),await new Promise(a=>setTimeout(a,m))),z=j||String(b.status),E=b.status,y({model:h,status:b.status,latencyMs:Date.now()-i,errorType:D(b.status,j),outcome:"skipped"}),e.warn("COMBO",`Model ${h} failed, trying next`,{status:b.status}),t)try{await t({model:h,status:b.status})}catch{}}catch(a){if(z=a.message||String(a),E=500,y({model:h,status:null,latencyMs:Date.now()-i,errorType:"exception",outcome:"skipped"}),e.warn("COMBO",`Model ${h} threw error, trying next`,{error:z}),t)try{await t({model:h,status:500})}catch{}}}let F=z&&z.toLowerCase().includes("no credentials")?503:E||503,G=z||"All combo models unavailable";if(C){let a=(0,d.Qo)(C);return e.warn("COMBO",`All models failed | ${G} (${a})`),(0,h.wO)(F,G,C,a)}return e.warn("COMBO",`All models failed | ${G}`),new Response(JSON.stringify({error:{message:G}}),{status:F,headers:{"Content-Type":"application/json"}})}let C={minPanel:2,stragglerGraceMs:8e3,panelHardTimeoutMs:9e4};function D(a,b){let c="string"==typeof b?b.toLowerCase():"";return 429===a||c.includes("rate limit")||c.includes("429")?"rate limited":401===a||403===a||c.includes("auth")||c.includes("unauthorized")?"auth error":408===a||c.includes("timeout")?"timeout":a>=500?"upstream error":404===a||c.includes("no active credentials")?"unavailable":`error ${a??"unknown"}`}async function E({body:a,models:b,handleSingleModel:c,log:d,comboName:e,judgeModel:f,tuning:g,onAttempt:h}){var i;let k,l,m="function"==typeof h?async(a,b,d)=>{let e=Date.now(),f=d?"panel":"judge",g=a=>{try{h({model:b,role:f,latencyMs:Date.now()-e,...a})}catch{}};try{let e=await c(a,b,d),f="";try{let a=await e?.clone().json();f=a?.error?.message||a?.error||a?.message||e?.statusText||""}catch{f=e?.statusText||""}return g({status:e?.status??null,errorType:e?.ok?null:D(e?.status,f),outcome:e?.ok?d?"answered":"served":"skipped"}),e}catch(a){throw g({status:null,errorType:"exception",outcome:"skipped"}),a}}:c,n=Array.isArray(b)?b.filter(Boolean):[];if(0===n.length)return new Response(JSON.stringify({error:{message:"Fusion combo has no models"}}),{status:400,headers:{"Content-Type":"application/json"}});if(1===n.length)return m(a,n[0]);let o={...C,...g||{}},p=Math.min(Math.max(2,o.minPanel),n.length),r=f&&f.trim()?f.trim():n[0];d.info("FUSION",`Combo "${e}" | panel=${n.length} [${n.join(", ")}] | judge=${r} | quorum=${p}`);let{tools:s,tool_choice:t,stream_options:u,...v}=a,w={...v,stream:!1};Array.isArray(w.messages)?w.messages=q(w.messages):Array.isArray(w.input)&&(w.input=q(w.input));let x=Date.now(),y=n.map(a=>{var b,c;return b=m(w,a,!0),c=o.panelHardTimeoutMs,new Promise(a=>{let d=setTimeout(()=>a({__timeout:!0}),c);Promise.resolve(b).then(b=>{clearTimeout(d),a(b)}).catch(b=>{clearTimeout(d),a({__error:b})})})}),z=await function(a,{minPanel:b,stragglerGraceMs:c,panelHardTimeoutMs:d}){return new Promise(e=>{let f=Array(a.length),g=0,h=0,i=!1,j=null,k=()=>{i||(i=!0,clearTimeout(l),j&&clearTimeout(j),e(f))},l=setTimeout(k,d);a.forEach((d,e)=>{Promise.resolve(d).then(a=>{f[e]=a}).catch(a=>{f[e]={__error:a}}).finally(()=>{if(g++,f[e]&&f[e].ok&&h++,g===a.length)return k();h>=b&&!j&&(j=setTimeout(k,c))})})})}(y,{...o,minPanel:p});d.info("FUSION",`fan-out collected in ${Date.now()-x}ms`);let A=[];for(let a=0;a<z.length;a++){let b=z[a],c=n[a];if(!b){d.warn("FUSION",`Panel ${c} dropped (straggler/timeout)`);continue}if(b.__timeout){d.warn("FUSION",`Panel ${c} timed out`);continue}if(b.__error){d.warn("FUSION",`Panel ${c} threw`,{error:b.__error?.message||String(b.__error)});continue}if(!b.ok){d.warn("FUSION",`Panel ${c} failed`,{status:b.status});continue}try{let a=await b.clone().json(),e=function(a){if(!a||"object"!=typeof a)return"";let b=a.choices?.[0];if(b){let a=b.message??b.delta??{},c=(0,j.kU)(a.content);if(c.trim())return c;if("string"==typeof b.text&&b.text.trim())return b.text}let c=(0,j.kU)(a.content);if(c.trim())return c;let d=a.candidates?.[0]?.content?.parts;if(Array.isArray(d)){let a=d.map(a=>a?.text||"").join("");if(a.trim())return a}if(Array.isArray(a.output)){let b=a.output.flatMap(a=>Array.isArray(a.content)?a.content.map(a=>a?.text||""):[]).join("");if(b.trim())return b}return""}(a);e?(A.push({model:c,text:e}),d.info("FUSION",`Panel ${c} ok (${e.length} chars)`)):d.warn("FUSION",`Panel ${c} returned empty content`)}catch(a){d.warn("FUSION",`Panel ${c} unparseable`,{error:a.message||String(a)})}}if(0===A.length)return d.warn("FUSION","All panel models failed"),new Response(JSON.stringify({error:{message:"All fusion panel models failed"}}),{status:503,headers:{"Content-Type":"application/json"}});if(1===A.length)return d.info("FUSION",`Only ${A[0].model} succeeded — answering directly (no fusion)`),m(a,A[0].model);let B=(k=A.map((a,b)=>`[Source ${b+1}]
|
|
10
|
+
${a.text}`).join("\n\n"),i=[`You are the JUDGE in a model-fusion panel. ${A.length} expert models independently answered the user's most recent request. Their responses are below, anonymized by source.`,"\nDo NOT mention that multiple models were used, and do NOT refer to the sources. Produce ONE authoritative final answer addressed directly to the user.\n\nFirst, internally analyze the panel along these dimensions: consensus (points most sources agree on — treat as higher-confidence), contradictions (where they disagree — resolve with your own judgment), partial coverage, unique insights only one source surfaced, and blind spots every source missed. Then write the best possible final answer grounded in that analysis — more complete and correct than any single response, with no filler.\n\n=== PANEL RESPONSES ===",k,"=== END PANEL RESPONSES ===\n\nNow write the final answer to the user's original request."].join("\n"),l={...a},Array.isArray(a.messages)?l.messages=[...a.messages,{role:"user",content:i}]:Array.isArray(a.input)?l.input=[...a.input,{role:"user",content:i}]:"string"==typeof a.input?l.input=[...a.input.trim()?[{role:"user",content:a.input}]:[],{role:"user",content:i}]:Array.isArray(a.contents)?l.contents=[...a.contents,{role:"user",parts:[{text:i}]}]:l.messages=[{role:"user",content:i}],l);return d.info("FUSION",`Judging ${A.length} answers with ${r}`),m(B,r)}},41004:(a,b,c)=>{c.d(b,{C8:()=>u,DR:()=>t,IK:()=>n,KV:()=>r,O9:()=>k,Ps:()=>i,SA:()=>q,Uc:()=>o,cI:()=>s,eo:()=>p,gx:()=>e,h9:()=>l,ii:()=>f,pH:()=>m,v1:()=>g,xM:()=>j});var d=c(31223);c(3662);let e={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,NOT_ACCEPTABLE:406,REQUEST_TIMEOUT:408,RATE_LIMITED:429,SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},f="/api/combos/probe",g={sessionTtlMs:72e5,sessionCleanupIntervalMs:18e5,dnsCacheTtlMs:3e5,proxyDispatchersMaxSize:20};function h(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}let i=process.env.SEARXNG_URL?.trim()||"http://localhost:8888/search",j=h("STREAM_STALL_TIMEOUT_MS",36e4),k=h("COMBO_STREAM_PROBE_MAX_BYTES",262144),l=h("COMBO_STREAM_PROBE_MAX_MS",1e4);h("STREAM_FIRST_CHUNK_TIMEOUT_MS",2e5);let m=h("FETCH_CONNECT_TIMEOUT_MS",6e4),n=h("GEMINI_NATIVE_TTS_FETCH_TIMEOUT_MS",45e3),o=64e3,p=32e3,q=`${d.qt.headerPrefix}token-saver`,r=`${d.qx.headerPrefix}token-saver`,s={429:{attempts:0,delayMs:0},502:{attempts:3,delayMs:3e3},503:{attempts:3,delayMs:2e3},504:{attempts:2,delayMs:3e3}};function t(a){return null==a?{attempts:0,delayMs:2e3}:"number"==typeof a?{attempts:a,delayMs:2e3}:{attempts:null!=a.attempts?a.attempts:a.tries||0,delayMs:null!=a.delayMs?a.delayMs:2e3}}let u=["Please write a 5-10 word title for the following conversation:"]},78959:(a,b,c)=>{c.d(b,{$U:()=>d,RK:()=>g,pb:()=>e,uB:()=>f});let d="data: [DONE]\n\n",e={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"},f={"Content-Type":"text/event-stream","Cache-Control":"no-cache","X-Accel-Buffering":"no"},g={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","Access-Control-Allow-Origin":"*"}},89718:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fk:()=>d.fk,fv:()=>d.fv,getProviderConnections:()=>d.P,getSettings:()=>d.mt,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,ln:()=>d.ln,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(79421)}};
|