@rsalmn/extremerouter 0.8.6 → 0.8.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +15 -11
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/prerender-manifest.json +3 -3
- package/app/.next-cli-build/routes-manifest.json +26 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/alerts/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/alerts/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/alerts/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +2 -2
- 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/health/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +3 -3
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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/overview/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/overview/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/overview/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
- 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/playground/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
- 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 +4 -4
- 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 +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -2
- 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/smart-routing/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/smart-routing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/smart-routing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/swarm/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/swarm/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/swarm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
- 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 +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
- 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 +3 -3
- package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js +2 -2
- 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 +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/api/alerts/test/route.js +2 -2
- package/app/.next-cli-build/server/app/api/alerts/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/breaker/route.js +1 -1
- package/app/.next-cli-build/server/app/api/breaker/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cache/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cache/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 +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 +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
- 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 +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/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 +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +3 -3
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/lab/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/lab/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/combos/simulate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/simulate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/validate-roles/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/validate-roles/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/dashboard/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js +2 -2
- 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/overview/route.js +1 -1
- package/app/.next-cli-build/server/app/api/health/overview/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/health/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/health/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +5 -5
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/catalog-sync/route.js +1 -0
- package/app/.next-cli-build/server/app/api/models/catalog-sync/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/models/catalog-sync/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/1min/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/1min/import/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 +2 -2
- 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/freebuff/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/freebuff/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kimi-desktop/auto-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kimi-desktop/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kimi-desktop/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kimi-desktop/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kimi-desktop/quota/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kimi-desktop/quota/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/qwen/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/qwen/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/wp-studio/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/wp-studio/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zcode/import/route.js +1 -0
- package/app/.next-cli-build/server/app/api/oauth/zcode/import/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/oauth/zcode/import/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js +2 -2
- package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/agnes-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/agnes-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/felo-profile/route.js +2 -2
- package/app/.next-cli-build/server/app/api/providers/[id]/felo-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/freebuff-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/freebuff-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/health-timeline/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/health-timeline/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/inxora-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/inxora-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +2 -2
- 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]/onemin-api-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/onemin-api-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/onemin-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/onemin-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/qwencloud-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/qwencloud-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/v0-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/v0-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/vault-pool/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/vault-pool/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/zai-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/zai-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/zenmux-plans/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/zenmux-plans/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/capture/launch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/capture/launch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/capture/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/capture/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/felo-capture/launch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/felo-capture/launch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/felo-capture/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/felo-capture/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +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/settings/database/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js +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/smart-routing/active/route.js +1 -1
- package/app/.next-cli-build/server/app/api/smart-routing/active/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/smart-routing/history/route.js +2 -2
- package/app/.next-cli-build/server/app/api/smart-routing/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/smart-routing/lab/route.js +2 -2
- package/app/.next-cli-build/server/app/api/smart-routing/lab/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/smart-routing/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/smart-routing/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/swarm/active/route.js +1 -1
- package/app/.next-cli-build/server/app/api/swarm/active/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/swarm/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/swarm/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/leaderboard/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/leaderboard/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/meta/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/meta/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 +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/retry-stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/retry-stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/media/results/[id]/route.js +1 -0
- package/app/.next-cli-build/server/app/api/v1/media/results/[id]/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/v1/media/results/[id]/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/video/generations/route.js +1 -0
- package/app/.next-cli-build/server/app/api/v1/video/generations/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/v1/video/generations/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page.js +2 -2
- 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 +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
- 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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
- package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing/page.js +2 -2
- 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/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/_index.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 +1 -1
- package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login/page.js +2 -2
- 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 +7 -7
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page.js +2 -2
- package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +15 -11
- package/app/.next-cli-build/server/chunks/1194.js +1 -1
- package/app/.next-cli-build/server/chunks/1241.js +1 -1
- package/app/.next-cli-build/server/chunks/1350.js +3 -3
- package/app/.next-cli-build/server/chunks/1411.js +9 -0
- package/app/.next-cli-build/server/chunks/1429.js +1 -1
- package/app/.next-cli-build/server/chunks/1719.js +1 -1
- package/app/.next-cli-build/server/chunks/212.js +1 -1
- package/app/.next-cli-build/server/chunks/2409.js +1 -1
- package/app/.next-cli-build/server/chunks/2436.js +1 -0
- package/app/.next-cli-build/server/chunks/3520.js +1 -1
- package/app/.next-cli-build/server/chunks/3535.js +1 -1
- package/app/.next-cli-build/server/chunks/3552.js +1 -0
- package/app/.next-cli-build/server/chunks/3593.js +1 -1
- package/app/.next-cli-build/server/chunks/4046.js +1 -1
- package/app/.next-cli-build/server/chunks/4109.js +1 -1
- package/app/.next-cli-build/server/chunks/412.js +1 -1
- package/app/.next-cli-build/server/chunks/4161.js +1 -0
- package/app/.next-cli-build/server/chunks/4502.js +6 -6
- package/app/.next-cli-build/server/chunks/4739.js +1 -1
- package/app/.next-cli-build/server/chunks/4780.js +1 -1
- package/app/.next-cli-build/server/chunks/4828.js +1 -0
- package/app/.next-cli-build/server/chunks/4957.js +1 -0
- package/app/.next-cli-build/server/chunks/4987.js +1 -0
- package/app/.next-cli-build/server/chunks/5050.js +2 -0
- package/app/.next-cli-build/server/chunks/507.js +1 -1
- package/app/.next-cli-build/server/chunks/5253.js +1 -1
- package/app/.next-cli-build/server/chunks/5258.js +1 -1
- package/app/.next-cli-build/server/chunks/5330.js +17 -17
- package/app/.next-cli-build/server/chunks/5473.js +9 -0
- package/app/.next-cli-build/server/chunks/5604.js +13 -0
- package/app/.next-cli-build/server/chunks/5612.js +1 -1
- package/app/.next-cli-build/server/chunks/5615.js +1 -1
- package/app/.next-cli-build/server/chunks/5628.js +1 -1
- package/app/.next-cli-build/server/chunks/5961.js +1 -1
- package/app/.next-cli-build/server/chunks/6007.js +10 -0
- package/app/.next-cli-build/server/chunks/6157.js +1 -0
- package/app/.next-cli-build/server/chunks/6182.js +1 -1
- package/app/.next-cli-build/server/chunks/6488.js +1 -0
- package/app/.next-cli-build/server/chunks/6777.js +1 -1
- package/app/.next-cli-build/server/chunks/698.js +1 -1
- package/app/.next-cli-build/server/chunks/7247.js +1 -0
- package/app/.next-cli-build/server/chunks/7566.js +2 -2
- package/app/.next-cli-build/server/chunks/7765.js +2 -2
- package/app/.next-cli-build/server/chunks/7965.js +1 -1
- package/app/.next-cli-build/server/chunks/809.js +1 -1
- package/app/.next-cli-build/server/chunks/8238.js +1 -1
- package/app/.next-cli-build/server/chunks/8240.js +1 -0
- package/app/.next-cli-build/server/chunks/8266.js +1 -1
- package/app/.next-cli-build/server/chunks/8271.js +1 -1
- package/app/.next-cli-build/server/chunks/8520.js +1 -1
- package/app/.next-cli-build/server/chunks/8802.js +2 -2
- package/app/.next-cli-build/server/chunks/885.js +15 -15
- package/app/.next-cli-build/server/chunks/8851.js +3 -0
- package/app/.next-cli-build/server/chunks/8895.js +6 -6
- package/app/.next-cli-build/server/chunks/9609.js +1 -1
- package/app/.next-cli-build/server/chunks/9715.js +1 -0
- package/app/.next-cli-build/server/chunks/9903.js +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js +6 -6
- package/app/.next-cli-build/server/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/1321-738b3efba6f43f03.js +1 -0
- package/app/.next-cli-build/static/chunks/5497-97801e653d366579.js +7 -0
- package/app/.next-cli-build/static/chunks/705-1b66113f1f9bdd89.js +1 -0
- package/app/.next-cli-build/static/chunks/9086-5e0c8ccb81f25cbb.js +1 -0
- package/app/.next-cli-build/static/chunks/{9622-fcd7c93a94eaa38f.js → 9622-1dc5485471326b33.js} +6 -6
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/alerts/{page-812b19e92ea94f14.js → page-5da9d88aea0f0c4d.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/{page-9a0e996c5bc5a169.js → page-af18b8bd5a604e31.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-0e1d5c3cf52823c3.js → page-c933ec2b61961be3.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-3122fd2735ba291c.js → page-3b6ddb5ae1f382fc.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-6e960c6e7b31b9df.js +3 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-dd4edb101f50cc0f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-f1add2aaae4a459c.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/health/{page-1c94a0710d61767e.js → page-2ac0245eea32c9aa.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-9e98db59d6b1d05f.js → page-e0b2567bb9fe606d.js} +7 -7
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/{page-026721fa921475e0.js → page-9da68f29ab52796d.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-ec37860600228def.js → page-2c80d26d992e4bb2.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/page-7cdd74503baa001a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/{page-825c8673e6351d02.js → page-ebc169fccd95e5d8.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/{page-65072e4024bb73b6.js → page-50b3f8c8ed3358f2.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/overview/{page-b92bc7ebaa0813b2.js → page-c4728000c2a09214.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-86eaf12ef68c60ba.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/playground/page-c43d594bf432dbb3.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-8147c101767a32a1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-9eea89b85926cfd8.js → page-f20fce2b984f4ef3.js} +3 -3
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/{page-aaaaeede554f51a5.js → page-99b2fb0411fa61e4.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-3231355c17df9913.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/{page-70bfba02b4fc414f.js → page-c619835a47dd125d.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-46f5c7b65b5bb9ad.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/{page-17bcf4e0db497e3a.js → page-fb7fe2c2ce8ee710.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/{page-6e8f34517990d858.js → page-971ad40322c4940b.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/{page-d9e35b679b85696a.js → page-33f472a9351a93f8.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-52a5ff6e854d82e7.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-20cc41f2e1307f06.js → layout-6605206f3a2e2db9.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/alerts/test/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/breaker/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cache/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/lab/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/simulate/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/validate-roles/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/stream/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/overview/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/providers/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/stream/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/init/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/locale/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/catalog-sync/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/1min/import/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/freebuff/import/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kimi-desktop/auto-import/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kimi-desktop/import/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kimi-desktop/quota/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/qwen/import/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/wp-studio/import/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/zcode/import/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/auto-import/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/import/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/agnes-profile/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/felo-profile/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/freebuff-profile/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/health-timeline/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/inxora-profile/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/onemin-api-profile/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/onemin-profile/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/qwencloud-profile/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/v0-profile/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/vault-pool/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/zai-profile/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/zenmux-plans/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/capture/launch/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/capture/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/felo-capture/launch/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/felo-capture/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/smart-routing/active/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/smart-routing/history/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/smart-routing/lab/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/smart-routing/stream/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/swarm/active/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/swarm/stream/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tags/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/leaderboard/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/meta/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/retry-stats/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/media/results/[id]/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/video/generations/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/dashboard/settings/pricing/{page-bc142d42a8a549b4.js → page-cb505396f61fd853.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/{layout-0e3fdd66d189006c.js → layout-43c49c1c04131398.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/login/{page-4b39978fc147efa3.js → page-783218bde9da4df5.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/app/page-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-fe046df355b8d174.js +1 -0
- package/app/.next-cli-build/static/css/4311ce5e9ab1213e.css +1 -0
- package/app/.next-cli-build/static/zahf-uMWnrDSCrrfcee0d/_buildManifest.js +1 -0
- package/app/package.json +1 -1
- package/app/public/favicon.svg +70 -8
- package/app/public/icons/icon-192.svg +73 -3
- package/app/public/icons/icon-512.svg +72 -3
- package/app/public/providers/ai21.png +0 -0
- package/app/public/providers/aimlapi.png +0 -0
- package/app/public/providers/ainative.png +0 -0
- package/app/public/providers/aion.png +0 -0
- package/app/public/providers/alibaba-cn.svg +1 -11
- package/app/public/providers/alibaba.svg +1 -11
- package/app/public/providers/alitp-intl.svg +1 -0
- package/app/public/providers/anyapi.png +0 -0
- package/app/public/providers/arcee-ai.png +0 -0
- package/app/public/providers/auriko.svg +61 -4
- package/app/public/providers/azure-ai.svg +23 -4
- package/app/public/providers/bai.png +0 -0
- package/app/public/providers/baseten.png +0 -0
- package/app/public/providers/blackbox-web.png +0 -0
- package/app/public/providers/bluesminds.png +0 -0
- package/app/public/providers/bytez.png +0 -0
- package/app/public/providers/charm-hyper.png +0 -0
- package/app/public/providers/chatanywhere.svg +1 -4
- package/app/public/providers/cheaperinference.png +0 -0
- package/app/public/providers/chenzk.png +0 -0
- package/app/public/providers/clarifai.svg +1 -4
- package/app/public/providers/cloudcode-one.svg +12 -3
- package/app/public/providers/conol-web.png +0 -0
- package/app/public/providers/crof.png +0 -0
- package/app/public/providers/datarobot.png +0 -0
- package/app/public/providers/digitalocean.svg +1 -4
- package/app/public/providers/dit.svg +9 -3
- package/app/public/providers/docker-model-runner.svg +1 -1
- package/app/public/providers/duckduckgo-web.svg +1 -7
- package/app/public/providers/dxnt.svg +9 -3
- package/app/public/providers/gemini-business.svg +1 -1
- package/app/public/providers/gitlab.svg +1 -0
- package/app/public/providers/hailuo-web.svg +1 -1
- package/app/public/providers/heroku.svg +15 -3
- package/app/public/providers/huggingchat.svg +1 -9
- package/app/public/providers/kimi-desktop.svg +1 -9
- package/app/public/providers/kimi-web.svg +1 -8
- package/app/public/providers/lm-studio.svg +1 -1
- package/app/public/providers/meta-llama.svg +1 -4
- package/app/public/providers/modal.svg +1 -4
- package/app/public/providers/modelscope.svg +1 -4
- package/app/public/providers/notion-web.svg +1 -1
- package/app/public/providers/oci.svg +19 -3
- package/app/public/providers/ollama-cloud.svg +1 -4
- package/app/public/providers/orcarouter.png +0 -0
- package/app/public/providers/ovhcloud.svg +1 -4
- package/app/public/providers/perplexity-agent.svg +1 -13
- package/app/public/providers/poe-web.svg +1 -8
- package/app/public/providers/qwen-cloud.svg +1 -1
- package/app/public/providers/qwen-web.svg +1 -6
- package/app/public/providers/qwencloud.svg +1 -6
- package/app/public/providers/sap.svg +1 -4
- package/app/public/providers/scaleway.svg +1 -4
- package/app/public/providers/snowflake.svg +1 -4
- package/app/public/providers/triton.svg +1 -1
- package/app/public/providers/vllm.svg +1 -1
- package/app/public/providers/wandb.svg +1 -4
- package/app/public/providers/watsonx.svg +50 -3
- package/app/public/providers/xkiro.svg +11 -0
- package/app/public/providers/zai-web.svg +1 -7
- package/app/public/providers/zcode.png +0 -0
- package/app/public/vercel.svg +73 -1
- package/app/src/lib/db/migrate.js +6 -3
- package/app/src/mitm/server.js +27 -27
- package/package.json +1 -1
- package/src/cli/menus/providers.js +6 -0
- package/src/cli/tray/icon.ico +0 -0
- package/src/cli/tray/icon.png +0 -0
- package/app/.next-cli-build/server/chunks/1891.js +0 -10
- package/app/.next-cli-build/server/chunks/3735.js +0 -1
- package/app/.next-cli-build/server/chunks/3841.js +0 -1
- package/app/.next-cli-build/server/chunks/3988.js +0 -1
- package/app/.next-cli-build/server/chunks/422.js +0 -9
- package/app/.next-cli-build/server/chunks/5699.js +0 -1
- package/app/.next-cli-build/server/chunks/6306.js +0 -1
- package/app/.next-cli-build/server/chunks/6878.js +0 -1
- package/app/.next-cli-build/server/chunks/7016.js +0 -3
- package/app/.next-cli-build/server/chunks/7410.js +0 -1
- package/app/.next-cli-build/server/chunks/8048.js +0 -1
- package/app/.next-cli-build/server/chunks/874.js +0 -9
- package/app/.next-cli-build/server/chunks/9703.js +0 -14
- package/app/.next-cli-build/static/FP2YsqoRbzETOIHRfld7X/_buildManifest.js +0 -1
- package/app/.next-cli-build/static/chunks/1321-a387932dc3179f86.js +0 -1
- package/app/.next-cli-build/static/chunks/5497-c6d8b48c8828240a.js +0 -7
- package/app/.next-cli-build/static/chunks/705-42ad329bbe0c47df.js +0 -1
- package/app/.next-cli-build/static/chunks/9497-d27e455b90c7936e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-a84afe4d66f3439a.js +0 -3
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-9850fafcf9dd605b.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-9879594c5128cd91.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/page-99c8024bece93467.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-d3be818ebce4ade2.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/playground/page-5ef2d54550eda9da.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-d208597b457fee58.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-1f465a9d64823fe6.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-e249d28461673557.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-7ea08e0acef52ce3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/alerts/test/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/breaker/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cache/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/lab/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/simulate/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/validate-roles/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/stream/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/overview/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/providers/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/stream/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/init/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/locale/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/1min/import/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/freebuff/import/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kimi-desktop/auto-import/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kimi-desktop/import/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kimi-desktop/quota/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/qwen/import/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/wp-studio/import/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/auto-import/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/import/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/agnes-profile/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/felo-profile/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/freebuff-profile/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/health-timeline/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/inxora-profile/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/onemin-api-profile/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/onemin-profile/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/qwencloud-profile/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/v0-profile/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/vault-pool/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/zai-profile/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/zenmux-plans/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/capture/launch/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/capture/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/felo-capture/launch/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/felo-capture/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/smart-routing/active/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/smart-routing/history/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/smart-routing/lab/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/smart-routing/stream/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/swarm/active/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/swarm/stream/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tags/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/leaderboard/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/meta/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/retry-stats/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/app/page-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-d93feb6893aee449.js +0 -1
- package/app/.next-cli-build/static/css/d30ee18d498368cc.css +0 -1
- package/app/public/providers/ai21.svg +0 -4
- package/app/public/providers/aimlapi.svg +0 -4
- package/app/public/providers/ainative.svg +0 -4
- package/app/public/providers/aion.svg +0 -4
- package/app/public/providers/anyapi.svg +0 -4
- package/app/public/providers/arcee-ai.svg +0 -4
- package/app/public/providers/bai.svg +0 -4
- package/app/public/providers/baseten.svg +0 -4
- package/app/public/providers/blackbox-web.svg +0 -6
- package/app/public/providers/bluesminds.svg +0 -4
- package/app/public/providers/bytez.svg +0 -4
- package/app/public/providers/charm-hyper.svg +0 -4
- package/app/public/providers/cheaperinference.svg +0 -4
- package/app/public/providers/chenzk.svg +0 -4
- package/app/public/providers/conol-web.svg +0 -1
- package/app/public/providers/crof.svg +0 -4
- package/app/public/providers/datarobot.svg +0 -4
- package/app/public/providers/orcarouter.svg +0 -4
- /package/app/.next-cli-build/static/{FP2YsqoRbzETOIHRfld7X → zahf-uMWnrDSCrrfcee0d}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(()=>{var a={};a.id=3649,a.ids=[3649],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},643:a=>{"use strict";a.exports=require("node:perf_hooks")},1708:a=>{"use strict";a.exports=require("node:process")},1932:a=>{"use strict";a.exports=require("url")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3725:a=>{"use strict";a.exports=require("wreq-js")},4573:a=>{"use strict";a.exports=require("node:buffer")},7066:a=>{"use strict";a.exports=require("node:tty")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14985:a=>{"use strict";a.exports=require("dns")},16698:a=>{"use strict";a.exports=require("node:async_hooks")},17006:(a,b,c)=>{Promise.resolve().then(c.bind(c,35447))},17891:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/get-segment-param")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},21820:a=>{"use strict";a.exports=require("os")},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},26915:a=>{"use strict";a.exports=import("playwright-core")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},30714:a=>{"use strict";a.exports=require("node:vm")},31421:a=>{"use strict";a.exports=require("node:child_process")},31456:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>O,handler:()=>Q,routeModule:()=>P});var d=c(7553),e=c(84006),f=c(67798),g=c(34775),h=c(99373),i=c(73461),j=c(1020),k=c(26349),l=c(54365),m=c(16023),n=c(14965),o=c(63747),p=c(24235),q=c(23938),r=c(261),s=c(66758),t=c(77243),u=c(26713),v=c(37527),w=c(22820),x=c(88216),y=c(47929),z=c(79551),A=c(71797),B=c(89125),C=c(86439),D=c(77068),E=c(27269),F=c(37525),G=c(61287),H=c(81494),I=c(70722),J=c(70753),K=c(43954),L=c(17891),M={};for(let a in G)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(M[a]=()=>G[a]);c.d(b,M);let N={children:["",{children:["(dashboard)",{children:["dashboard",{children:["combos",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,35447)),"/home/runner/work/ExtremeRouter/ExtremeRouter/src/app/(dashboard)/dashboard/combos/page.js"]}]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,30508)),"/home/runner/work/ExtremeRouter/ExtremeRouter/src/app/(dashboard)/layout.js"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,70440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,50385)),"/home/runner/work/ExtremeRouter/ExtremeRouter/src/app/layout.js"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,70440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]}.children,O={require:c,loadChunk:()=>Promise.resolve()},P=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/(dashboard)/dashboard/combos/page",pathname:"/dashboard/combos",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:N},distDir:".next-cli-build",relativeProjectDir:""});async function Q(a,b,d){var M,R,S,T,U;d.requestMeta&&(0,h.setRequestMeta)(a,d.requestMeta),P.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let V=!!(0,h.getRequestMeta)(a,"minimalMode"),W="/(dashboard)/dashboard/combos/page";"/index"===W&&(W="/");let X=await P.prepare(a,b,{srcPage:W,multiZoneDraftMode:!1});if(!X)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Y,query:Z,params:$,pageIsDynamic:_,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,serverActionsManifest:ad,clientReferenceManifest:ae,subresourceIntegrityManifest:af,prerenderManifest:ag,isDraftMode:ah,resolvedPathname:ai,revalidateOnlyGenerated:aj,routerServerContext:ak,nextConfig:al,parsedUrl:am,interceptionRoutePatterns:an,deploymentId:ao,clientAssetToken:ap}=X,aq=(0,r.normalizeAppPath)(W),{isOnDemandRevalidate:ar}=X,as=al.experimental.ppr&&!al.cacheComponents&&(0,K.isInterceptionRouteAppPath)(ai)?null:P.match(ai,ag),at=(null==as?void 0:as.route)??null,au=!!ag.routes[ai],av=a.headers["user-agent"]||"",aw=(0,u.getBotType)(av),ax=(0,q.isHtmlBotRequest)(a),ay=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[t.NEXT_ROUTER_PREFETCH_HEADER],az=(0,h.getRequestMeta)(a,"isRSCRequest")??(0,n.f)(a.headers[t.RSC_HEADER]),aA=(0,s.getIsPossibleServerAction)(a),aB=(0,m.checkIsAppPPREnabled)(al.experimental.ppr),aC=a.headers[y.NEXT_RESUME_STATE_LENGTH_HEADER];if(!(0,h.getRequestMeta)(a,"postponed")&&V&&aB&&aA&&aC&&"string"==typeof aC){let e=parseInt(aC,10),{maxPostponedStateSize:f,maxPostponedStateSizeBytes:g}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize);if(!isNaN(e)&&e>0){if(e>g)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(f)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let i="1 MB",j=(null==(U=al.experimental.serverActions)?void 0:U.bodySizeLimit)??i,k=e+(j!==i?c(95726).parse(j):1048576),l=await (0,E.readBodyWithSizeLimit)(a,k);if(null===l)return b.statusCode=413,b.end("Request body exceeded limit. To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;if(l.length>=e){let b=l.subarray(0,e).toString("utf8");(0,h.addRequestMeta)(a,"postponed",b);let c=l.subarray(e);(0,h.addRequestMeta)(a,"actionBody",c)}else throw Object.defineProperty(Error(`invariant: expected ${e} bytes of postponed state but only received ${l.length} bytes`),"__NEXT_ERROR_CODE",{value:"E979",enumerable:!1,configurable:!0})}}if(!(0,h.getRequestMeta)(a,"postponed")&&aB&&"1"===a.headers[y.NEXT_RESUME_HEADER]&&"POST"===a.method){let{maxPostponedStateSize:c,maxPostponedStateSizeBytes:e}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize),f=await (0,E.readBodyWithSizeLimit)(a,e);if(null===f)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(c)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let g=f.toString("utf8");(0,h.addRequestMeta)(a,"postponed",g)}let aD=!0===P.isDev||!0===al.experimental.exposeTestingApiInProductionBuild,aE=aD&&("1"===a.headers[t.NEXT_INSTANT_PREFETCH_HEADER]||!(0,n.f)(a.headers[t.RSC_HEADER])&&"string"==typeof a.headers.cookie&&a.headers.cookie.includes(t.NEXT_INSTANT_TEST_COOKIE+"=")),aF=(aB||aE)&&((null==(M=ag.routes[aq]??ag.dynamicRoutes[aq])?void 0:M.renderingMode)==="PARTIALLY_STATIC"||aE&&(aD||(null==ak?void 0:ak.experimentalTestProxy)===!0)),aG=aE&&aF,aH=aG&&!0===P.isDev,aI=!1,aJ=aF?(0,h.getRequestMeta)(a,"postponed"):void 0,aK=null==(R=ag.routes[ai])?void 0:R.prefetchDataRoute,aL=aF&&az&&!ay&&!aK;V&&(aL=aL&&!!aJ);let aM=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),aN=(!aw||!aF)&&(!av||(0,q.shouldServeStreamingMetadata)(av,al.htmlLimitedBots)),aO=!!((at||au||ag.routes[aq])&&!(aw&&aF)),aP=aF&&!0===al.cacheComponents,aQ=!0===P.isDev||!aO||"string"==typeof aJ||(aP&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aL&&!V:aL),aR=!!aw&&aF,aS=(null==at?void 0:at.remainingPrerenderableParams)??[],aT=(null==at?void 0:at.fallback)===null&&((null==(S=at.fallbackRootParams)?void 0:S.length)??0)>0,aU=null;if(!ah&&aO&&!aQ&&!aA&&!aJ&&!aL){let a=as?"string"==typeof(null==at?void 0:at.fallback)?at.fallback:as.source:null;if(!0===al.experimental.partialFallbacks&&a&&(null==at?void 0:at.fallbackRouteParams)&&!aT){if(aS.length>0){let b,c=(b=new Map(aS.map(a=>[a.paramName,a])),a.split("/").map(a=>{let c=(0,L.getSegmentParam)(a);if(!c)return a;let d=b.get(c.paramName);if(!d)return a;let e=null==$?void 0:$[d.paramName];if(!e)return a;let f=Array.isArray(e)?e.map(a=>encodeURIComponent(a)).join("/"):encodeURIComponent(e);return a.replace((0,o.buildDynamicSegmentPlaceholder)(d),f)}).join("/")||"/");aU=c!==a?c:null}}else aU=ai}let aV=aU;!aV&&(P.isDev||aO&&_&&(null==at?void 0:at.fallbackRouteParams)&&!aA)&&(aV=ai),P.isDev||ah||!aO||!az||aL||(0,k.d)(a.headers);let aW={...G,tree:N,handler:Q,routeModule:P,__next_app__:O};ad&&ae&&(0,p.setManifestsSingleton)({page:W,clientReferenceManifest:ae,serverActionsManifest:ad});let aX=a.method||"GET",aY=(0,g.getTracer)(),aZ=aY.getActiveScopeSpan(),a$=!!(null==ak?void 0:ak.isWrappedByNextServer),a_=!0===al.experimental.partialFallbacks&&aS.length>0?(null==at||null==(T=at.fallbackRouteParams)?void 0:T.filter(a=>!aS.some(b=>b.paramName===a.paramName)))??[]:[],a0=async()=>((null==ak?void 0:ak.render404)?await ak.render404(a,b,am,!1):b.end("This page could not be found"),null);try{let k,m=P.getVaryHeader(ai,an);b.setHeader("Vary",m);let n=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return P.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aY.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aX} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a),k&&k!==c&&(k.setAttribute("http.route",d),k.updateName(a))}else c.updateName(`${aX} ${W}`)})},p=(0,h.getRequestMeta)(a,"incrementalCache")||await P.getIncrementalCache(a,al,ag,V);null==p||p.resetRequestCache(),globalThis.__incrementalCache=p;let q=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let k={query:Z,params:$,page:aq,sharedContext:{buildId:Y,deploymentId:ao,clientAssetToken:ap},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aW,Component:(0,j.T)(aW),params:$,routeModule:P,page:W,postponed:f,shouldWaitOnAllReady:aR,serveStreamingMetadata:aN,supportsDynamicResponse:"string"==typeof f||aQ,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,subresourceIntegrityManifest:af,setCacheStatus:null==ak?void 0:ak.setCacheStatus,setIsrStatus:null==ak?void 0:ak.setIsrStatus,setReactDebugChannel:null==ak?void 0:ak.setReactDebugChannel,sendErrorsToBrowser:null==ak?void 0:ak.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),P.relativeProjectDir),isDraftMode:ah,botType:aw,isOnDemandRevalidate:ar,isPossibleServerAction:aA,assetPrefix:al.assetPrefix,nextConfigOutput:al.output,crossOrigin:al.crossOrigin,trailingSlash:al.trailingSlash,images:al.images,previewProps:ag.preview,enableTainting:al.experimental.taint,htmlLimitedBots:al.htmlLimitedBots,reactMaxHeadersLength:al.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:p,cacheLifeProfiles:al.cacheLife,basePath:al.basePath,serverActions:al.experimental.serverActions,logServerFunctions:"object"==typeof al.logging&&!!al.logging.serverFunctions,...aG||aH||aI?{isBuildTimePrerendering:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:aH}:{},cacheComponents:!!al.cacheComponents,experimental:{isRoutePPREnabled:aF,expireTime:al.expireTime,staleTimes:al.experimental.staleTimes,dynamicOnHover:!!al.experimental.dynamicOnHover,optimisticRouting:!!al.experimental.optimisticRouting,inlineCss:!!al.experimental.inlineCss,prefetchInlining:al.experimental.prefetchInlining??!1,authInterrupts:!!al.experimental.authInterrupts,cachedNavigations:!!al.experimental.cachedNavigations,clientTraceMetadata:al.experimental.clientTraceMetadata||[],clientParamParsingOrigins:al.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,D.parseMaxPostponedStateSize)(al.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>P.onRequestError(a,b,d,e,ak),err:(0,h.getRequestMeta)(a,"invokeError")}};i&&(k.renderOpts.supportsDynamicResponse=!1);let l=await n(e,k),{metadata:m}=l,{cacheControl:o,headers:q={},fetchTags:r,fetchMetrics:s}=m;if(r&&(q[y.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,aO&&(null==o?void 0:o.revalidate)===0&&!P.isDev&&!aF){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ai}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
|
|
2
|
-
see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:v.CachedRouteKind.APP_PAGE,html:l,headers:q,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:o}},r=async({hasResolved:c,previousCacheEntry:g,isRevalidating:i,span:j,forceStaticRender:k=!1})=>{let l=!1===P.isDev,m=c||b.writableEnded;try{var n;let f;if(ar&&aj&&!g&&!V)return(null==ak?void 0:ak.render404)?await ak.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(at&&(f=(0,w.parseFallbackField)(at.fallback)),!0===al.experimental.partialFallbacks&&(null==at?void 0:at.fallback)===null&&!aT&&aS.length>0&&(f=w.FallbackMode.PRERENDER),f===w.FallbackMode.PRERENDER&&(0,u.isBot)(av)&&(!aF||ax)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),(null==g?void 0:g.isStale)===-1&&(ar=!0),ar&&(f!==w.FallbackMode.NOT_FOUND||g)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),!V&&f!==w.FallbackMode.BLOCKING_STATIC_RENDER&&aV&&!m&&!ah&&_&&(l||!au)){if((l||at)&&f===w.FallbackMode.NOT_FOUND){if(al.adapterPath)return await a0();throw new C.NoFallbackError}if(aF&&(al.cacheComponents?!aL:!az)){let b=l&&"string"==typeof(null==at?void 0:at.fallback)?at.fallback:aq,f=(l||aG)&&(null==at?void 0:at.fallbackRouteParams)?(0,o.createOpaqueFallbackRouteParams)(at.fallbackRouteParams):aI?(0,o.getFallbackRouteParams)(aq,P):null;aG&&f&&(0,h.addRequestMeta)(a,"fallbackParams",f);let g=await P.handleResponse({cacheKey:b,req:a,nextConfig:al,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ag,isRoutePPREnabled:aF,responseGenerator:async()=>q({span:j,postponed:void 0,fallbackRouteParams:f,forceStaticRender:!0}),waitUntil:d.waitUntil,isMinimalMode:V});if(null===g)return null;if(g)return V||!aF||!(aS.length>0)||!0!==al.experimental.partialFallbacks||!aU||!p||ar||aI||aD||aE||ay||(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(aU,p,aF,!1,a=>q({span:a.span,postponed:void 0,fallbackRouteParams:a_.length>0?(0,o.createOpaqueFallbackRouteParams)(a_):null,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete g.cacheControl,g}}let s=ar||i||!aJ?void 0:aJ;if(aP&&!V&&p&&(aL||aA)&&!k){let b=await p.get(ai,{kind:v.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===v.CachedRouteKind.APP_PAGE&&(s=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(ai,p,aF,!1,a=>r({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aG||aH)&&void 0!==s)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:v.CachedRouteKind.PAGES,html:x.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let t=!P.isDev&&_&&(null==at?void 0:at.fallbackRouteParams)?(0,o.getPlaceholderFallbackRouteParams)($,at.fallbackRouteParams):null,y=t&&t.length>0?t:null==at?void 0:at.fallbackRouteParams,z=null!=t&&t.length>0,A=null;if(al.cacheComponents&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,h.getRequestMeta)(a,"resolvedRouteParamKeys");b&&b.size>0&&(A=at.fallbackRouteParams.filter(a=>!b.has(a.paramName)))}let B=(l&&(0,h.getRequestMeta)(a,"renderFallbackShell")||z||aG&&!au)&&y?(0,o.createOpaqueFallbackRouteParams)(y):A&&A.length>0&&A.length<((null==at||null==(n=at.fallbackRouteParams)?void 0:n.length)??0)?(0,o.createOpaqueFallbackRouteParams)(A):aI?(0,o.getFallbackRouteParams)(aq,P):null;if((l||aG)&&al.cacheComponents&&!au&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,o.createOpaqueFallbackRouteParams)(y??at.fallbackRouteParams);b&&(0,h.addRequestMeta)(a,"fallbackParams",b)}return q({span:j,postponed:s,fallbackRouteParams:B,forceStaticRender:k})}catch(b){throw(null==g?void 0:g.isStale)&&await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}},s=async c=>{var f,g,i,j,k,l;let m,n=await P.handleResponse({cacheKey:aU,responseGenerator:a=>r({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ar,isRoutePPREnabled:aF,req:a,nextConfig:al,prerenderManifest:ag,waitUntil:d.waitUntil,isMinimalMode:V});if(ah&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),P.isDev&&b.setHeader("Cache-Control","no-cache, must-revalidate"),!n){if(aU)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let o="string"==typeof n.value.postponed;az&&!aA&&ao&&b.setHeader(y.NEXT_NAV_DEPLOYMENT_ID_HEADER,ao),aO&&!aL&&(!o||ay)&&(V||b.setHeader("x-nextjs-cache",ar?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(t.NEXT_IS_PRERENDER_HEADER,"1"));let{value:p}=n;if(aJ)m={revalidate:0,expire:void 0};else if(aL)m={revalidate:0,expire:void 0};else if(!P.isDev)if(ah)m={revalidate:0,expire:void 0};else if(aO){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});m={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??al.expireTime}}else m={revalidate:y.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else b.getHeader("Cache-Control")||(m={revalidate:0,expire:void 0});if(n.cacheControl=m,"string"==typeof aM&&(null==p?void 0:p.kind)===v.CachedRouteKind.APP_PAGE&&p.segmentData){b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=p.headers)?void 0:k[y.NEXT_CACHE_TAGS_HEADER];V&&aO&&c&&"string"==typeof c&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,c);let d=p.segmentData.get(aM);return void 0!==d?(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(d,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl}))}let s=aP?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(s){let b=(0,h.getRequestMeta)(a,"initURL")??a.url,c=b?(null==(l=(0,F.parseUrl)(b))?void 0:l.pathname)??b:void 0;if(await s(n,{url:c}))return null}if(p.headers){let a={...p.headers};for(let[c,d]of(V&&aO||delete a[y.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let u=null==(g=p.headers)?void 0:g[y.NEXT_CACHE_TAGS_HEADER];if(V&&aO&&u&&"string"==typeof u&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,u),!p.status||az&&aF||(b.statusCode=p.status),!V&&p.status&&H.RedirectStatusCode[p.status]&&az&&(b.statusCode=200),o&&!aL&&b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"1"),az&&!ah){if(void 0===p.rscData){if(p.html.contentType!==t.RSC_CONTENT_TYPE_HEADER)if(al.cacheComponents)return b.statusCode=404,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl});else throw Object.defineProperty(new I.InvariantError(`Expected RSC response, got ${p.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:p.html,cacheControl:n.cacheControl})}return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(p.rscData,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let w=p.html;if(aE&&aG){let c=!0===P.isDev?crypto.randomUUID():null;return w.pipeThrough(await (0,A.createInstantTestScriptInsertionTransformStream)(c)),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})}if(!o||V||az)return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:n.cacheControl});if(aG||aH)return w.push(new ReadableStream({start(a){a.enqueue(z.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}});let C=new TransformStream;return w.push(C.readable),q({span:c,postponed:p.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(C.writable)}).catch(a=>{C.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})};if(!a$||!aZ)return k=aY.getActiveScopeSpan(),await aY.withPropagatedContext(a.headers,()=>aY.trace(i.BaseServerSpan.handleRequest,{spanName:`${aX} ${W}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aX,"http.target":a.url}},s),void 0,!a$);await s(aZ)}catch(b){throw b instanceof C.NoFallbackError||await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}}},32467:a=>{"use strict";a.exports=require("node:http2")},33873:a=>{"use strict";a.exports=require("path")},34589:a=>{"use strict";a.exports=require("node:assert")},35447:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/ExtremeRouter/ExtremeRouter/src/app/(dashboard)/dashboard/combos/page.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/ExtremeRouter/ExtremeRouter/src/app/(dashboard)/dashboard/combos/page.js","default")},37067:a=>{"use strict";a.exports=require("node:http")},37540:a=>{"use strict";a.exports=require("node:console")},38522:a=>{"use strict";a.exports=require("node:zlib")},40610:a=>{"use strict";a.exports=require("node:dns")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},41692:a=>{"use strict";a.exports=require("node:tls")},41792:a=>{"use strict";a.exports=require("node:querystring")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},46059:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>cg});var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w=c(48249),x=c(67484),y=c.n(x),z=c(19099),A=c(50412),B=c(50377);let C=/^[a-zA-Z0-9_.\-]+$/,D=[{value:"fallback",label:"Fallback",desc:"Try models in order, next on failure",icon:"layers"},{value:"round-robin",label:"Round Robin",desc:"Rotate models across requests",icon:"cached"},{value:"fusion",label:"Fusion",desc:"Parallel panel + judge synthesis",icon:"hub"},{value:"swarm",label:"Swarm",desc:"Hierarchical Manager→Staff→Workers",icon:"account_tree"},{value:"cascade",label:"Cascade",desc:"Escalate cheap→capable on low confidence",icon:"trending_up"},{value:"smart-routing",label:"Smart Routing",desc:"Auto-route by tool calls & research intent",icon:"alt_route"}],E={fallback:{icon:"layers",color:"#3B82F6",badge:"info"},"round-robin":{icon:"cached",color:"#10B981",badge:"success"},fusion:{icon:"hub",color:"#8B5CF6",badge:"primary"},swarm:{icon:"account_tree",color:"#F59E0B",badge:"warning"},cascade:{icon:"trending_up",color:"#06B6D4",badge:"cyan"},"smart-routing":{icon:"alt_route",color:"#EC4899",badge:"warning"}};function F(a){return E[a]||E.fallback}function G(a){let b=D.find(b=>b.value===a);return b?.label||"Fallback"}let H=[{value:"all",label:"All"},{value:"fallback",label:"Fallback"},{value:"round-robin",label:"Round Robin"},{value:"fusion",label:"Fusion"},{value:"swarm",label:"Swarm"},{value:"cascade",label:"Cascade"},{value:"smart-routing",label:"Smart Routing"}],I=[{value:"name",label:"Name"},{value:"models-desc",label:"Most Models"},{value:"models-asc",label:"Fewest Models"}];function J({combos:a,comboStrategies:b,activeProviders:c,onViewCombos:d,onCreate:e}){let f=a.length,g=function(a){let b=new Set;for(let c of a)for(let a of c.models||[])b.add(a);return b.size}(a),h=function(a,b){let c={fallback:0,"round-robin":0,fusion:0,swarm:0,cascade:0,"smart-routing":0},d=new Set(["fallback","round-robin","fusion","swarm","cascade","smart-routing"]);for(let e of a){let a=b[e.name]?.fallbackStrategy||"fallback",f=d.has(a)?a:"fallback";c[f]=(c[f]||0)+1}return c}(a,b),i=Object.values(h).filter(a=>a>0).length,j=f>0?Math.round(a.reduce((a,b)=>a+(b.models?.length||0),0)/f*10)/10:0,k=Math.max(...Object.values(h),1);return(0,w.jsxs)("div",{className:"flex flex-col gap-5",children:[(0,w.jsx)("div",{className:"grid grid-cols-2 gap-3 lg:grid-cols-4",children:[{label:"Total Combos",value:f,icon:"layers",color:"#3B82F6"},{label:"Unique Models",value:g,icon:"model_training",color:"#10B981"},{label:"Strategies Used",value:i,icon:"account_tree",color:"#8B5CF6"},{label:"Avg Models/Combo",value:j,icon:"analytics",color:"#F59E0B"}].map(a=>(0,w.jsx)(A.Zp,{padding:"sm",children:(0,w.jsxs)("div",{className:"flex items-center gap-3",children:[(0,w.jsx)("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-lg",style:{backgroundColor:`${a.color}15`},children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",style:{color:a.color},children:a.icon})}),(0,w.jsxs)("div",{children:[(0,w.jsx)("p",{className:"font-mono text-lg font-bold text-text-main",children:a.value}),(0,w.jsx)("p",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:a.label})]})]})},a.label))}),(0,w.jsxs)(A.Zp,{children:[(0,w.jsxs)("div",{className:"mb-3",children:[(0,w.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Strategy Distribution"}),(0,w.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:"How combos are distributed across routing strategies"})]}),(0,w.jsx)("div",{className:"flex flex-col gap-2.5",children:Object.entries(h).map(([a,b])=>{let c=F(a),d=f>0?Math.round(b/f*100):0;return(0,w.jsxs)("div",{className:"flex items-center gap-3",children:[(0,w.jsxs)("div",{className:"flex w-28 items-center gap-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",style:{color:c.color},children:c.icon}),(0,w.jsx)("span",{className:"text-xs font-medium text-text-main",children:G(a)})]}),(0,w.jsx)("div",{className:"flex-1 overflow-hidden rounded-full bg-surface-2",children:(0,w.jsx)("div",{className:"h-2.5 rounded-full transition-all",style:{width:`${b/k*100}%`,backgroundColor:c.color}})}),(0,w.jsxs)("span",{className:"w-16 text-right font-mono text-xs text-text-muted",children:[b," (",d,"%)"]})]},a)})})]}),(0,w.jsxs)(A.Zp,{children:[(0,w.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Combo Health"}),(0,w.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:"Overview of each combo's status"})]}),(0,w.jsx)(A.$n,{size:"sm",variant:"ghost",icon:"list_alt",onClick:d,children:"View All"})]}),0===a.length?(0,w.jsxs)("div",{className:"py-6 text-center text-sm text-text-muted",children:["No combos yet. ",(0,w.jsx)("button",{onClick:e,className:"text-primary hover:underline",children:"Create one →"})]}):(0,w.jsx)("div",{className:"flex flex-col gap-2",children:a.map(a=>{let d=b[a.name]?.fallbackStrategy||"fallback",e=F(d),f=(a.models||[]).filter(a=>{let b=a.split("/")[0];return c.some(a=>a.provider===b&&!1!==a.isActive)}).length,g=(a.models||[]).length,h=g>0?Math.round(f/g*100):0;return(0,w.jsxs)("div",{className:"flex items-center gap-3 rounded-lg border border-border-subtle px-3 py-2 hover:bg-sidebar/30",children:[(0,w.jsx)("div",{className:"flex size-7 shrink-0 items-center justify-center rounded",style:{backgroundColor:`${e.color}15`},children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[15px]",style:{color:e.color},children:e.icon})}),(0,w.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,w.jsx)("code",{className:"truncate font-mono text-xs font-medium",children:a.name}),(0,w.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[(0,w.jsx)(A.Ex,{variant:e.badge,size:"sm",children:G(d)}),(0,w.jsxs)("span",{className:"text-[10px] text-text-muted",children:[g," models"]})]})]}),(0,w.jsxs)("div",{className:"hidden sm:flex items-center gap-2 shrink-0",children:[(0,w.jsx)("div",{className:"w-20 overflow-hidden rounded-full bg-surface-2",children:(0,w.jsx)("div",{className:`h-1.5 rounded-full ${h>=80?"bg-success":h>=50?"bg-warning":"bg-danger"}`,style:{width:`${h}%`}})}),(0,w.jsxs)("span",{className:"w-8 text-right font-mono text-[10px] text-text-muted",children:[f,"/",g]})]})]},a.id)})})]})]})}var K=c(92592);let L=new Set(["claude-adaptive","claude-budget","claude","extended","gemini-level","gemini-budget","qwen","hunyuan","minimax","zai"]),M=a=>!!a?.reasoning&&(!a?.thinkingFormat||L.has(a.thinkingFormat)),N=[{value:"auto",label:"Auto (provider default)"},{value:"off",label:"Off"},{value:"effort",label:"Effort (OpenAI-style)"},{value:"extended",label:"Extended (Claude-style)"}],O=[{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"},{value:"max",label:"Max"}],P=[{key:"manager",label:"Manager",icon:"psychology"},{key:"staff",label:"Staff",icon:"badge"},{key:"audit",label:"Audit",icon:"fact_check"},{key:"worker",label:"Worker",icon:"group"}],Q=[{key:"panel",label:"Panel",icon:"dashboard"},{key:"judge",label:"Judge",icon:"gavel"}],R=a=>"unlimited"===a||a===1/0||"Infinity"===a;function S(a){let b=K.Q2[a]?.capabilities;return!b||!1!==b.toolUse&&!1!==b.fileAccess}function T(a){if(!a||"string"!=typeof a)return null;let b=a.indexOf("/");return b>=0?a.slice(0,b):a}function U(a,b){if(a){let b=T(a);return{blocked:!!b&&!S(b),provider:b}}let c=T(b&&b.length>0?b[0]:null);return{blocked:!!c&&!S(c),provider:c}}function V(a){return a.filter(a=>S(a.provider))}function W({combo:a,modelCaps:b={},activeProviders:c=[],copied:d,onCopy:e,onEdit:f,onDelete:g,strategy:h={},onSetStrategy:i}){let[j,k]=(0,x.useState)(!1),[l,m]=(0,x.useState)(!1),[n,o]=(0,x.useState)(null),p=Array.isArray(a?.models)?a.models:[],q=b[a.name]||null,r=h.fallbackStrategy||"fallback",s=h.judgeModel||"",t="fusion"===r,u="swarm"===r,v=h.managerModel||"",y=h.staffModel||"",z=h.auditModel||"",B=F(r),C=(a=>{let b=a?.budgets?.maxEstimatedCostUsd;if(R(b))return 1/0;let c=Number(b);return Number.isFinite(c)&&c>0?c:5})(h),E=R(h?.budgets?.maxEstimatedCostUsd),H=h?.budgets?.enabled===!0,I=H&&h?.budgets?.maxEstimatedCostUsd!=null&&!E&&Number(h.budgets.maxEstimatedCostUsd)>0,J=a=>{let b=Number(a);Number.isFinite(b)&&!(b<=0)&&i({budgets:{...h.budgets||{},enabled:!0,maxEstimatedCostUsd:b}})},K=h.thinking||{},L=K.type||"auto",S="auto"!==L&&"off"!==L,[T,X]=(0,x.useState)([]),Y=a=>i({thinking:{...K,...a}}),Z=(a,b)=>{let c={...K.roles||{}};null===b?delete c[a]:c[a]={...c[a]||{},...b},Y({roles:c})},{hasEffort:$,hasExtended:_,hasMaxEffort:aa,unresolvableModels:ab,unsupportedForCurrent:ac}=function(a,b=""){let c=a.some(a=>!!a.caps?.reasoning),d=a.some(a=>M(a.caps)),e=a.some(a=>!!a.caps?.thinkingMaxEffort);return{hasEffort:c,hasExtended:d,hasMaxEffort:e,unresolvableModels:a.filter(a=>!a.caps?.reasoning&&a.caps?.reasoning!==void 0),unsupportedForCurrent:"effort"===b?[]:"extended"===b?a.filter(a=>a.caps?.reasoning===!0&&!M(a.caps)):[]}}(p.map(a=>({model:a,caps:b[a]||{}})),L);return(0,w.jsxs)(A.Zp,{padding:"sm",className:"group transition-all hover:border-primary/20",children:[(0,w.jsxs)("div",{className:"flex min-w-0 flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,w.jsxs)("button",{className:"flex min-w-0 flex-1 items-start gap-3 text-left sm:items-center",onClick:()=>k(!j),children:[(0,w.jsx)("div",{className:"flex size-8 shrink-0 items-center justify-center rounded-lg",style:{backgroundColor:`${B.color}15`},children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",style:{color:B.color},children:B.icon})}),(0,w.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("code",{className:"truncate font-mono text-sm font-medium",children:a.name}),(0,w.jsx)(A.Ex,{variant:B.badge,size:"sm",children:G(r)}),q&&(0,w.jsxs)("span",{className:"inline-flex items-center gap-1",title:"Capabilities derived from member models",children:[(0,w.jsx)(A.nh,{caps:q,size:12,colorOverride:"text-text-muted"}),(0,w.jsx)("span",{className:"text-[9px] uppercase tracking-wide text-text-muted",children:"derived"})]}),S&&(0,w.jsxs)(A.Ex,{variant:"cyan",size:"sm",className:"flex items-center gap-0.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[10px]",children:"psychology"}),"effort"===L?K.effort||"on":L]}),H&&(0,w.jsxs)(A.Ex,{variant:"warning",size:"sm",className:"flex items-center gap-0.5",title:`Max cost budget: $${C.toFixed(2)} per request`,children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[10px]",children:"savings"}),"$",C.toFixed(2)]}),(0,w.jsxs)("span",{className:"text-[10px] text-text-muted",children:[p.length," models"]})]}),(0,w.jsxs)("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1",children:[0===p.length?(0,w.jsx)("span",{className:"text-xs text-text-muted italic",children:"No models"}):p.slice(0,3).map((a,c)=>(0,w.jsxs)("code",{className:"inline-flex items-center gap-1 rounded bg-black/5 px-1.5 py-0.5 font-mono text-xs text-text-muted dark:bg-white/5",children:[(0,w.jsx)("span",{className:"truncate max-w-[120px]",children:a}),b[a]&&(0,w.jsx)(A.nh,{caps:b[a],size:11})]},c)),p.length>3&&(0,w.jsxs)("span",{className:"text-[10px] text-text-muted",children:["+",p.length-3," more"]})]})]}),(0,w.jsx)("span",{className:`shrink-0 text-text-muted transition-transform ${j?"rotate-180":""}`,children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"expand_more"})})]}),(0,w.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center sm:gap-3 sm:shrink-0",children:[(0,w.jsx)("div",{className:"w-full sm:w-[180px]",children:(0,w.jsx)(A.l6,{options:D,value:r,onChange:a=>i({fallbackStrategy:a.target.value}),selectClassName:"py-1.5 text-xs"})}),(0,w.jsxs)("div",{className:"grid grid-cols-3 gap-1 sm:flex",children:[(0,w.jsxs)("button",{onClick:b=>{b.stopPropagation(),e(a.name,`combo-${a.id}`)},className:"flex flex-col items-center rounded px-2 py-1 text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5",title:"Copy combo name",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:d===`combo-${a.id}`?"check":"content_copy"}),(0,w.jsx)("span",{className:"text-[10px] leading-tight",children:"Copy"})]}),(0,w.jsxs)("button",{onClick:f,className:"flex flex-col items-center rounded px-2 py-1 text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5",title:"Edit",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"}),(0,w.jsx)("span",{className:"text-[10px] leading-tight",children:"Edit"})]}),(0,w.jsxs)("button",{onClick:g,className:"flex flex-col items-center rounded px-2 py-1 text-red-500 transition-colors hover:bg-red-500/10",title:"Delete",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"}),(0,w.jsx)("span",{className:"text-[10px] leading-tight",children:"Delete"})]})]})]})]}),j&&(0,w.jsxs)("div",{className:"mt-3 border-t border-border-subtle pt-3",children:[(0,w.jsxs)("div",{className:"mb-3",children:[(0,w.jsxs)("div",{className:"text-[10px] uppercase tracking-wide text-text-muted mb-1.5 flex items-center gap-1.5",children:["Models (",p.length,")",q&&(0,w.jsx)(A.nh,{caps:q,size:11,colorOverride:"text-text-muted"})]}),(0,w.jsx)("div",{className:"flex flex-col gap-1",children:p.map((a,c)=>(0,w.jsxs)("div",{className:"flex items-center gap-2 rounded px-2 py-1 bg-black/[0.02] dark:bg-white/[0.02]",children:[(0,w.jsx)("span",{className:"text-[10px] font-medium text-text-muted w-4 text-center",children:c+1}),(0,w.jsx)("code",{className:"min-w-0 flex-1 truncate font-mono text-xs text-text-main",children:a}),b[a]&&(0,w.jsx)(A.nh,{caps:b[a],size:11})]},c))})]}),t&&(0,w.jsxs)("div",{className:"mb-3",children:[(0,w.jsx)("p",{className:"text-[10px] uppercase tracking-wide text-text-muted mb-1.5",children:"Fusion Judge"}),(()=>{let{blocked:a,provider:b}=U(s,p);return(0,w.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsxs)("button",{onClick:()=>m(!0),className:`inline-flex max-w-full items-center gap-1 rounded border border-dashed px-2 py-1 font-mono text-xs hover:bg-primary/5 ${a?"border-red-400 text-red-500 hover:border-red-500":"border-primary/40 text-primary hover:border-primary"}`,children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"gavel"}),(0,w.jsx)("span",{className:"truncate",children:s||`Auto — ${p[0]||"first model"}`})]}),s&&(0,w.jsx)("button",{onClick:()=>i({judgeModel:""}),className:"p-1 rounded text-text-muted hover:text-red-500 hover:bg-red-500/10",title:"Reset to Auto",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),a&&(0,w.jsx)("p",{className:"text-[10px] text-red-500",children:s?"⚠ Web cookie providers cannot serve as Judge (no tool use / file access)":`⚠ Auto-fallback to "${b}" (first combo model) — web cookie cannot serve as Judge`})]})})()]}),u&&(0,w.jsxs)("div",{className:"mb-3",children:[(0,w.jsx)("p",{className:"text-[10px] uppercase tracking-wide text-text-muted mb-1.5",children:"Swarm Roles"}),(0,w.jsxs)("div",{className:"flex flex-col gap-1.5",children:[[{key:"manager",label:"Manager",icon:"psychology",value:v,placeholder:`Auto — ${p[0]||"first"}`},{key:"staff",label:"Staff",icon:"badge",value:y,placeholder:"Same as Manager"},{key:"audit",label:"Audit",icon:"fact_check",value:z,placeholder:"Same as Staff"}].map(a=>{let{blocked:b,provider:c}=U(a.value,p);return(0,w.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("span",{className:"text-xs font-medium text-text-muted w-16",children:a.label}),(0,w.jsxs)("button",{onClick:()=>o(a.key),className:`inline-flex max-w-full items-center gap-1 rounded border border-dashed px-2 py-0.5 font-mono text-[11px] hover:bg-primary/5 ${b?"border-red-400 text-red-500 hover:border-red-500":"border-primary/40 text-primary hover:border-primary"}`,children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:a.icon}),(0,w.jsx)("span",{className:"truncate",children:a.value||a.placeholder})]}),a.value&&(0,w.jsx)("button",{onClick:()=>i({[`${a.key}Model`]:""}),className:"p-0.5 rounded text-text-muted hover:text-red-500 hover:bg-red-500/10",title:`Reset ${a.label}`,children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"close"})})]}),b&&(0,w.jsx)("p",{className:"text-[10px] text-red-500 pl-[76px]",children:a.value?`⚠ Web cookie providers cannot serve as ${a.label} (no tool use / file access)`:`⚠ Auto-fallback to "${c}" (first combo model) — web cookie cannot serve as ${a.label}`})]},a.key)}),(0,w.jsxs)("div",{className:"flex items-center gap-2 text-[11px] text-text-muted",children:[(0,w.jsx)("span",{className:"font-medium",children:"Workers"}),(0,w.jsxs)("span",{children:["= combo models (",p.length,")"]}),(0,w.jsx)("span",{className:"text-text-subtle",children:"\xb7"}),(0,w.jsx)("a",{href:"/dashboard/swarm",className:"text-primary hover:underline",children:"Telemetry →"})]}),(0,w.jsxs)("div",{className:"flex items-center gap-3 mt-1",children:[(0,w.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,w.jsx)("input",{type:"checkbox",checked:h.autoScale?.enabled===!0,onChange:a=>i({autoScale:{...h.autoScale||{},enabled:a.target.checked}}),className:"rounded border-border accent-primary"}),(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"Auto-scale"})]}),h.autoScale?.enabled&&(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)("div",{className:"flex items-center gap-1",children:[(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"Min:"}),(0,w.jsx)("input",{type:"number",min:1,max:h.autoScale?.maxWorkers||8,value:h.autoScale?.minWorkers??1,onChange:a=>i({autoScale:{...h.autoScale||{},minWorkers:Number(a.target.value)||1}}),className:"w-10 rounded border border-border bg-background px-1 py-0.5 text-[10px] font-mono text-center focus:outline-none focus:border-primary"})]}),(0,w.jsxs)("div",{className:"flex items-center gap-1",children:[(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"Max:"}),(0,w.jsx)("input",{type:"number",min:1,max:8,value:h.autoScale?.maxWorkers??p.length,onChange:a=>i({autoScale:{...h.autoScale||{},maxWorkers:Number(a.target.value)||1}}),className:"w-10 rounded border border-border bg-background px-1 py-0.5 text-[10px] font-mono text-center focus:outline-none focus:border-primary"})]})]})]})]})]}),(0,w.jsxs)("div",{className:"mt-3 border-t border-border-subtle pt-3",children:[(0,w.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,w.jsx)("p",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:"Thinking"}),(0,w.jsx)("button",{onClick:()=>X(T.length>0?[]:(t?Q:u?P:[]).map(a=>a.key)),className:"text-[10px] text-primary hover:underline",children:T.length>0?"Hide roles":`Role overrides${S?" ("+Object.keys(K.roles||{}).length+")":""}`})]}),(0,w.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("label",{className:"text-[10px] text-text-muted",children:"Mode:"}),(0,w.jsx)("select",{value:L,onChange:a=>Y({type:a.target.value}),className:"rounded border border-border bg-background px-1.5 py-0.5 text-[11px] font-mono focus:outline-none focus:border-primary",children:N.map(a=>{let b="auto"===a.value||"off"===a.value||"effort"===a.value&&$||"extended"===a.value&&_;return(0,w.jsxs)("option",{value:a.value,disabled:!b,className:b?"":"text-text-muted",children:[a.label,b?"":" (not supported)"]},a.value)})})]}),ac.length>0&&(0,w.jsxs)("div",{className:"flex items-center gap-1 text-amber-600 dark:text-amber-400",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"warning"}),(0,w.jsxs)("span",{className:"text-[10px]",children:[L," not supported by ",ac.map(a=>a.model.split("/").pop()).join(", ")]})]}),ab.length>0&&"auto"!==L&&"off"!==L&&(0,w.jsxs)("div",{className:"flex items-center gap-1 text-amber-600 dark:text-amber-400",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"warning"}),(0,w.jsxs)("span",{className:"text-[10px]",children:["Thinking capability unknown for ",ab.map(a=>a.model.split("/").pop()).join(", ")]})]}),"effort"===L&&(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("label",{className:"text-[10px] text-text-muted",children:"Effort:"}),(0,w.jsx)("select",{value:K.effort||"high",onChange:a=>Y({effort:a.target.value}),className:"rounded border border-border bg-background px-1.5 py-0.5 text-[11px] font-mono focus:outline-none focus:border-primary",children:O.map(a=>{let b="max"!==a.value||aa;return(0,w.jsxs)("option",{value:a.value,disabled:!b,className:b?"":"text-text-muted",children:[a.label,b?"":" (not supported)"]},a.value)})})]}),"extended"===L&&(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("label",{className:"text-[10px] text-text-muted",children:"Budget:"}),(0,w.jsx)("input",{type:"number",min:1024,max:128e3,step:1024,value:K.budgetTokens||4096,onChange:a=>Y({budgetTokens:Number(a.target.value)||4096}),className:"w-20 rounded border border-border bg-background px-1.5 py-0.5 text-[11px] font-mono focus:outline-none focus:border-primary"})]})]}),T.length>0&&S&&(0,w.jsxs)("div",{className:"mt-2 flex flex-col gap-1.5 pl-1",children:[(0,w.jsx)("p",{className:"text-[10px] text-text-muted",children:"Per-role overrides (leave as parent to inherit global)"}),(t?Q:u?P:[]).map(a=>{let b,c=(b=a.key,K?.roles?.[b]);return(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[13px] text-text-muted",children:a.icon}),(0,w.jsx)("span",{className:"text-[11px] font-medium text-text-muted w-12",children:a.label}),(0,w.jsxs)("select",{value:c?.type||"inherit",onChange:b=>Z(a.key,"inherit"===b.target.value?null:{type:b.target.value}),className:"rounded border border-border bg-background px-1 py-0.5 text-[10px] font-mono focus:outline-none focus:border-primary",children:[(0,w.jsx)("option",{value:"inherit",children:"Inherit"}),(0,w.jsx)("option",{value:"off",children:"Off"}),(0,w.jsxs)("option",{value:"effort",disabled:!$,className:$?"":"text-text-muted",children:["Effort",$?"":" (not supported)"]}),(0,w.jsxs)("option",{value:"extended",disabled:!_,className:_?"":"text-text-muted",children:["Extended",_?"":" (not supported)"]})]}),c?.type==="effort"&&(0,w.jsx)("select",{value:c.effort||"high",onChange:b=>Z(a.key,{type:"effort",effort:b.target.value}),className:"rounded border border-border bg-background px-1 py-0.5 text-[10px] font-mono focus:outline-none focus:border-primary",children:O.map(a=>{let b="max"!==a.value||aa;return(0,w.jsxs)("option",{value:a.value,disabled:!b,className:b?"":"text-text-muted",children:[a.label,b?"":" (not supported)"]},a.value)})}),c?.type==="extended"&&(0,w.jsx)("input",{type:"number",min:1024,max:128e3,step:1024,value:c.budgetTokens||4096,onChange:b=>Z(a.key,{type:"extended",budgetTokens:Number(b.target.value)||4096}),className:"w-16 rounded border border-border bg-background px-1 py-0.5 text-[10px] font-mono focus:outline-none focus:border-primary"}),c&&(0,w.jsx)("button",{onClick:()=>Z(a.key,null),className:"p-0.5 rounded text-text-muted hover:text-red-500",title:"Reset to inherit",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},a.key)})]})]}),(0,w.jsxs)("div",{className:"text-xs text-text-muted bg-black/[0.02] dark:bg-white/[0.02] rounded px-2 py-1.5",children:[(0,w.jsxs)("span",{className:"font-medium",children:[G(r),":"]})," ",D.find(a=>a.value===r)?.desc]}),(0,w.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-x-3 gap-y-2 rounded-lg border border-warning/20 bg-warning/[0.04] px-3 py-2",children:[(0,w.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,w.jsx)("input",{type:"checkbox",checked:H,onChange:a=>{var b;return b=a.target.checked,void i({budgets:{...h.budgets||{},enabled:b}})},className:"rounded border accent-primary","aria-label":"Enable cost budget limit"}),(0,w.jsx)("span",{className:"material-symbols-outlined text-[16px] text-warning",children:"savings"}),(0,w.jsx)("span",{className:"text-[11px] font-semibold text-text-main",children:"Budget Limit"})]}),(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:H?"enabled":"off (no limit)"}),(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("span",{className:"text-[12px] font-medium text-text-muted",children:"$"}),(0,w.jsx)("input",{type:"number",min:.01,step:.5,value:E?"":C,onChange:a=>J(a.target.value),disabled:!H||E,"aria-label":"Max cost budget in USD per request",className:"w-20 rounded border border-border bg-background px-1.5 py-0.5 text-[11px] font-mono text-right focus:outline-none focus:border-primary disabled:opacity-60"}),(0,w.jsx)("button",{type:"button",onClick:E?()=>J(5):()=>{i({budgets:{...h.budgets||{},enabled:!0,maxEstimatedCostUsd:"unlimited"}})},disabled:!H,className:`rounded border px-2 py-0.5 text-[11px] font-medium ${E?"border-primary bg-primary/10 text-primary":"border-border text-text-muted hover:text-text-main"} disabled:opacity-40 disabled:cursor-not-allowed`,children:E?"Unlimited":"∞"})]}),(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"per request"}),(0,w.jsx)("span",{className:`text-[10px] ${I||E?"text-primary":"text-text-muted"}`,children:E?"Unlimited":I?`Custom $${Number(C).toFixed(2)}`:"Default $5.00"})]})]}),(0,w.jsx)(A.rq,{isOpen:l,onClose:()=>m(!1),onSelect:a=>{i({judgeModel:a?.value||""}),m(!1)},activeProviders:V(c),title:"Select Judge Model",addedModelValues:s?[s]:[],closeOnSelect:!0}),n&&(0,w.jsx)(A.rq,{isOpen:!0,onClose:()=>o(null),onSelect:a=>{i({[`${n}Model`]:a?.value||""}),o(null)},activeProviders:V(c),title:`Select ${"manager"===n?"Manager":"staff"===n?"Staff":"Audit"} Model`,addedModelValues:"manager"===n?v?[v]:[]:"staff"===n?y?[y]:[]:z?[z]:[],closeOnSelect:!0})]})}function X({combos:a,modelCaps:b,activeProviders:c,comboStrategies:d,copied:e,copy:f,onEdit:g,onDelete:h,onSetStrategy:i,onCreate:j}){let[k,l]=(0,x.useState)(""),[m,n]=(0,x.useState)("all"),[o,p]=(0,x.useState)("name"),q=(0,x.useMemo)(()=>{var b;let c;return b=function(a,b,c,d){let e=a;if("all"!==c&&(e=e.filter(a=>(d[a.name]?.fallbackStrategy||"fallback")===c)),b.trim()){let a=b.trim().toLowerCase();e=e.filter(b=>b.name.toLowerCase().includes(a)||(b.models||[]).some(b=>b.toLowerCase().includes(a)))}return e}(a,k,m,d),c=[...b],"models-desc"===o?c.sort((a,b)=>(b.models?.length||0)-(a.models?.length||0)):"models-asc"===o?c.sort((a,b)=>(a.models?.length||0)-(b.models?.length||0)):c.sort((a,b)=>a.name.localeCompare(b.name)),c},[a,k,m,o,d]);return 0===a.length?(0,w.jsx)(A.pp,{icon:"layers",title:"No combos yet",description:"Create model combos with fallback, round-robin, fusion, or swarm strategies",actionText:"Create Combo",onAction:j}):(0,w.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,w.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,w.jsx)(A.pd,{placeholder:"Search combos or models...",value:k,onChange:a=>l(a.target.value),className:"sm:max-w-xs"}),(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("div",{className:"flex flex-wrap gap-1",children:H.map(a=>(0,w.jsx)("button",{onClick:()=>n(a.value),className:`rounded-full px-2.5 py-1 text-xs font-medium transition-colors ${m===a.value?"bg-primary/15 text-primary ring-1 ring-primary/20":"bg-surface-2 text-text-muted hover:text-text-main"}`,children:a.label},a.value))}),(0,w.jsx)("select",{value:o,onChange:a=>p(a.target.value),className:"appearance-none rounded-lg border border-border bg-surface-2 py-1.5 pl-3 pr-8 text-xs text-text-main [-webkit-appearance:none] [-moz-appearance:none] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30",children:I.map(a=>(0,w.jsx)("option",{value:a.value,children:a.label},a.value))})]})]}),(0,w.jsx)("p",{className:"text-xs text-text-muted",children:q.length===a.length?`${a.length} combo${1!==a.length?"s":""}`:`${q.length} of ${a.length} combos`}),0===q.length?(0,w.jsx)(A.Zp,{children:(0,w.jsxs)("div",{className:"py-8 text-center text-sm text-text-muted",children:['No combos match "',k,'" ',"all"!==m&&`with ${m} strategy`]})}):(0,w.jsx)("div",{className:"flex flex-col gap-3",children:q.map(a=>(0,w.jsx)(W,{combo:a,modelCaps:b,activeProviders:c,copied:e,onCopy:f,onEdit:()=>g(a),onDelete:()=>h(a.id),strategy:d[a.name]||{},onSetStrategy:b=>i(a.name,b)},a.id))})]})}let Y=[{id:"always-on",name:"Always-On (5-Layer Fallback)",description:"Zero-downtime coding with 5 layers of fallback. Mix of subscription, cheap, and free tiers — if any model fails, the next picks up automatically.",icon:"shield",category:"reliability",strategy:"fallback",models:["claude-opus-4-7","gpt-5.4","glm-5.1","MiniMax-M2.7","claude-sonnet-4.5"],preferredProviders:{"claude-opus-4-7":"cc","gpt-5.4":"cx","glm-5.1":"glm","MiniMax-M2.7":"minimax","claude-sonnet-4.5":"kr"}},{id:"max-reasoning-swarm",name:"Max Reasoning Swarm",description:"Deep multi-agent analysis for complex coding tasks. Manager decomposes the problem, workers solve subtasks in parallel, audit reviews the result. Manager thinks at max effort.",icon:"psychology",category:"reasoning",strategy:"swarm",models:["claude-opus-4-7","gpt-5.4","glm-5.1","claude-sonnet-4.5"],preferredProviders:{"claude-opus-4-7":"cc","gpt-5.4":"cx","glm-5.1":"glm","claude-sonnet-4.5":"kr"},strategyConfig:{fallbackStrategy:"swarm",managerModel:"claude-opus-4-7",auditModel:"claude-sonnet-4.5",thinking:{type:"effort",effort:"high",roles:{manager:{type:"effort",effort:"max"},worker:{type:"effort",effort:"medium"},audit:{type:"effort",effort:"high"}}},autoScale:{enabled:!0,minWorkers:2,maxWorkers:4}}},{id:"flash-fusion",name:"Flash Fusion",description:"Two fast models answer in parallel, a judge picks the best result. Low latency with a quality check — great for everyday coding questions.",icon:"bolt",category:"balanced",strategy:"fusion",models:["gpt-5.4","MiniMax-M2.7"],preferredProviders:{"gpt-5.4":"cx","MiniMax-M2.7":"minimax"},strategyConfig:{fallbackStrategy:"fusion",thinking:{type:"effort",effort:"medium"}}},{id:"penny-pincher",name:"Penny-Pincher",description:"Ultra-low-cost daily driver built from cheap and free tiers. Thinking disabled to keep tokens minimal. Use for simple tasks where cost matters most.",icon:"savings",category:"budget",strategy:"fallback",models:["MiniMax-M2.7","glm-5.1","gpt-5.4"],preferredProviders:{"MiniMax-M2.7":"minimax","glm-5.1":"glm","gpt-5.4":"gh"},strategyConfig:{fallbackStrategy:"fallback",thinking:{type:"off"}}},{id:"ai-researcher",name:"AI Researcher",description:"Smart Routing research combo. Web (cookie) providers answer research tasks first; tool-capable API models handle anything that needs function calling. Auto-falls back if a web provider is blocked.",icon:"travel_explore",category:"research",strategy:"smart-routing",models:["deepseek-v4-flash","gpt-5-6-terra","gemini-3.6-flash","claude-sonnet-4.5","gpt-5.4","glm-5.2"],preferredProviders:{"deepseek-v4-flash":"felo","gpt-5-6-terra":"felo","gemini-3.6-flash":"felo","claude-sonnet-4.5":"kr","gpt-5.4":"cx","glm-5.2":"cl"},strategyConfig:{fallbackStrategy:"smart-routing",smartRouting:{cookiePoolEnabled:!0,intentDetection:{confidenceThreshold:.6,llmClassifierFallback:{enabled:!0,model:"kr/claude-haiku-4.5"}}}}},{id:"deep-research-web",name:"Deep Research Web",description:"Research-heavy smart routing. Maximizes the web (cookie) pool for deep research, with tool-capable models as fallback for verification and citations.",icon:"manage_search",category:"research",strategy:"smart-routing",models:["gpt-5-6-luna","claude-5-0-sonnet","kimi-k2-thinking","grok-4.6","claude-haiku-4.5","glm-5.2"],preferredProviders:{"gpt-5-6-luna":"felo","claude-5-0-sonnet":"felo","kimi-k2-thinking":"felo","grok-4.6":"felo","claude-haiku-4.5":"kr","glm-5.2":"cl"},strategyConfig:{fallbackStrategy:"smart-routing",smartRouting:{cookiePoolEnabled:!0,intentDetection:{confidenceThreshold:.6,llmClassifierFallback:{enabled:!0,model:"kr/claude-haiku-4.5"}}}}},{id:"bug-hunter",name:"Bug Hunter",description:"Three models independently diagnose the same bug, a strong judge picks the most likely root cause. High-precision debugging with thinking on.",icon:"bug_report",category:"debugging",strategy:"fusion",models:["gpt-5.4","glm-5.1","MiniMax-M2.7"],preferredProviders:{"gpt-5.4":"cx","glm-5.1":"glm","MiniMax-M2.7":"minimax"},strategyConfig:{fallbackStrategy:"fusion",thinking:{type:"effort",effort:"high"}}}],Z=["managerModel","staffModel","auditModel","judgeModel"];function $({combos:a,connections:b,modelIndex:c={},onApply:d}){let[e,f]=(0,x.useState)(null),g=new Set(b?.filter(a=>!1!==a.isActive).map(a=>a.provider)||[]),h=new Set((a||[]).map(a=>a.name)),i=a=>(function(a,{modelIndex:b={},connectedProviders:c=new Set}={}){return(a.models||[]).map(d=>{let e=d.indexOf("/"),f=e>0,g=f?d.slice(e+1):d,h=(f?d.slice(0,e):"")||(a.preferredProviders||{})[g]||"",i=h?(0,K.rs)(h):"",j=(b[g]||[]).map(a=>(0,K.rs)(a)).filter(a=>c.has(a));if(i&&j.includes(i)){let a=(0,K.wG)(i);return{ref:d,modelName:g,provider:i,providerAlias:a,full:`${a}/${g}`,available:!0}}if(j.length>0){let a=(0,K.wG)(j[0]);return{ref:d,modelName:g,provider:j[0],providerAlias:a,full:`${a}/${g}`,available:!0,resolvedFrom:h}}return{ref:d,modelName:g,provider:i||h,full:f?d:g,available:!1}})})(a,{modelIndex:c,connectedProviders:g}),j=async a=>{f(a.id);try{let b=i(a),c=b.filter(a=>a.available).map(a=>a.full);if(0===c.length)return void alert("No connected provider has any of this template's models.");let e=function(a,b){let c=a.strategyConfig?{...a.strategyConfig}:{fallbackStrategy:a.strategy},d=Object.fromEntries(b.filter(a=>a.available).map(a=>[a.modelName,a.full]));for(let a of Z){let b=c[a];if(!b)continue;let e=b.indexOf("/"),f=e>0?b.slice(e+1):b;d[f]&&(c[a]=d[f])}return c}(a,b),f=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:a.name,models:c,kind:a.kind||"llm",strategyConfig:e})});if(!f.ok){let a=await f.json();alert(a.error||"Failed to create combo from template");return}let g=await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({comboStrategies:{[a.name]:e}})});if(!g.ok){let a=await g.json().catch(()=>({}));alert(a.error||"Failed to apply template strategy");return}d&&d()}catch(a){alert("Failed to apply template: "+(a?.message||String(a)))}finally{f(null)}};return 0===Y.length?(0,w.jsx)(A.pp,{icon:"dashboard_customize",title:"No templates available",description:"Combo templates will appear here when added."}):(0,w.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,w.jsxs)("div",{className:"mb-1",children:[(0,w.jsx)("h2",{className:"text-sm font-semibold text-text-main",children:"Combo Templates"}),(0,w.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:"One-click prebuilt combos. Provider availability is checked automatically."})]}),(0,w.jsx)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",children:Y.map(a=>{let b=i(a),c=b.filter(a=>a.available).length,d=b.length,f=h.has(a.name),g=F(a.strategy),k=c===d;return(0,w.jsxs)(A.Zp,{padding:"sm",className:"flex flex-col gap-3 hover:border-primary/20 transition-all",children:[(0,w.jsxs)("div",{className:"flex items-start justify-between",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,w.jsx)("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-lg",style:{backgroundColor:`${g.color}15`},children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",style:{color:g.color},children:a.icon||g.icon})}),(0,w.jsxs)("div",{children:[(0,w.jsx)("p",{className:"text-sm font-semibold text-text-main",children:a.name}),(0,w.jsx)(A.Ex,{variant:g.badge,size:"sm",children:G(a.strategy)})]})]}),f&&(0,w.jsx)(A.Ex,{variant:"success",size:"sm",dot:!0,children:"Created"})]}),(0,w.jsx)("p",{className:"text-xs text-text-muted leading-relaxed",children:a.description}),(0,w.jsxs)("div",{className:"flex flex-wrap gap-1",children:[b.slice(0,4).map((a,b)=>(0,w.jsxs)("code",{className:`inline-flex items-center gap-1 rounded px-1.5 py-0.5 font-mono text-[10px] ${a.available?"bg-black/5 text-text-muted dark:bg-white/5":"bg-red-500/10 text-red-500"}`,title:a.available?`Resolved to ${a.provider}`:`No connected provider has ${a.modelName}`,children:[(0,w.jsx)("span",{className:a.available?"text-success":"text-red-500",children:a.available?"✓":"✗"}),(0,w.jsx)("span",{className:"truncate max-w-[110px]",children:a.modelName}),a.available&&(0,w.jsx)("span",{className:"rounded bg-black/10 px-0.5 text-[9px] dark:bg-white/10",children:a.provider})]},b)),b.length>4&&(0,w.jsxs)("span",{className:"text-[10px] text-text-muted",children:["+",b.length-4," more"]})]}),(0,w.jsx)("div",{className:"flex flex-wrap gap-1",children:b.map(a=>{let b=a.resolvedFrom?(0,K.rs)(a.resolvedFrom):"",c=a.available?`${a.provider}${a.resolvedFrom&&b!==a.provider?` (via ${a.resolvedFrom})`:""}`:`${a.provider||"?"} (missing)`,d=a.available;return(0,w.jsxs)("span",{className:`inline-flex items-center gap-0.5 rounded-full px-1.5 py-0.5 text-[10px] font-medium ${d?"bg-success/10 text-success":"bg-surface-2 text-text-muted"}`,children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[10px]",children:d?"check_circle":"radio_button_unchecked"}),c]},a.ref)})}),(0,w.jsx)("div",{className:"mt-auto pt-1",children:(0,w.jsx)(A.$n,{size:"sm",fullWidth:!0,variant:f?"secondary":"primary",icon:e===a.id?"progress_activity":"add",disabled:f||e===a.id||!k,onClick:()=>j(a),children:e===a.id?"Creating...":f?"Already Created":k?"Apply Template":`Missing ${d-c} model${d-c!=1?"s":""}`})})]},a.id)})})]})}var _=c(74429);let aa="u">typeof window&&void 0!==window.document&&void 0!==window.document.createElement;function ab(a){let b=Object.prototype.toString.call(a);return"[object Window]"===b||"[object global]"===b}function ac(a){return"nodeType"in a}function ad(a){var b,c;return a?ab(a)?a:ac(a)&&null!=(b=null==(c=a.ownerDocument)?void 0:c.defaultView)?b:window:window}function ae(a){let{Document:b}=ad(a);return a instanceof b}function af(a){return!ab(a)&&a instanceof ad(a).HTMLElement}function ag(a){return a instanceof ad(a).SVGElement}function ah(a){return a?ab(a)?a.document:ac(a)?ae(a)?a:af(a)||ag(a)?a.ownerDocument:document:document:document}let ai=aa?x.useLayoutEffect:x.useEffect;function aj(a){let b=(0,x.useRef)(a);return ai(()=>{b.current=a}),(0,x.useCallback)(function(){for(var a=arguments.length,c=Array(a),d=0;d<a;d++)c[d]=arguments[d];return null==b.current?void 0:b.current(...c)},[])}function ak(a,b){void 0===b&&(b=[a]);let c=(0,x.useRef)(a);return ai(()=>{c.current!==a&&(c.current=a)},b),c}function al(a,b){let c=(0,x.useRef)();return(0,x.useMemo)(()=>{let b=a(c.current);return c.current=b,b},[...b])}function am(a){let b=aj(a),c=(0,x.useRef)(null),d=(0,x.useCallback)(a=>{a!==c.current&&(null==b||b(a,c.current)),c.current=a},[]);return[c,d]}function an(a){let b=(0,x.useRef)();return(0,x.useEffect)(()=>{b.current=a},[a]),b.current}let ao={};function ap(a,b){return(0,x.useMemo)(()=>{if(b)return b;let c=null==ao[a]?0:ao[a]+1;return ao[a]=c,a+"-"+c},[a,b])}function aq(a){return function(b){for(var c=arguments.length,d=Array(c>1?c-1:0),e=1;e<c;e++)d[e-1]=arguments[e];return d.reduce((b,c)=>{for(let[d,e]of Object.entries(c)){let c=b[d];null!=c&&(b[d]=c+a*e)}return b},{...b})}}let ar=aq(1),as=aq(-1);function at(a){if(!a)return!1;let{KeyboardEvent:b}=ad(a.target);return b&&a instanceof b}function au(a){if(function(a){if(!a)return!1;let{TouchEvent:b}=ad(a.target);return b&&a instanceof b}(a)){if(a.touches&&a.touches.length){let{clientX:b,clientY:c}=a.touches[0];return{x:b,y:c}}else if(a.changedTouches&&a.changedTouches.length){let{clientX:b,clientY:c}=a.changedTouches[0];return{x:b,y:c}}}return"clientX"in a&&"clientY"in a?{x:a.clientX,y:a.clientY}:null}let av=Object.freeze({Translate:{toString(a){if(!a)return;let{x:b,y:c}=a;return"translate3d("+(b?Math.round(b):0)+"px, "+(c?Math.round(c):0)+"px, 0)"}},Scale:{toString(a){if(!a)return;let{scaleX:b,scaleY:c}=a;return"scaleX("+b+") scaleY("+c+")"}},Transform:{toString(a){if(a)return[av.Translate.toString(a),av.Scale.toString(a)].join(" ")}},Transition:{toString(a){let{property:b,duration:c,easing:d}=a;return b+" "+c+"ms "+d}}}),aw="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]",ax={display:"none"};function ay(a){let{id:b,value:c}=a;return y().createElement("div",{id:b,style:ax},c)}function az(a){let{id:b,announcement:c,ariaLiveType:d="assertive"}=a;return y().createElement("div",{id:b,style:{position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"},role:"status","aria-live":d,"aria-atomic":!0},c)}let aA=(0,x.createContext)(null),aB={draggable:"\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n "},aC={onDragStart(a){let{active:b}=a;return"Picked up draggable item "+b.id+"."},onDragOver(a){let{active:b,over:c}=a;return c?"Draggable item "+b.id+" was moved over droppable area "+c.id+".":"Draggable item "+b.id+" is no longer over a droppable area."},onDragEnd(a){let{active:b,over:c}=a;return c?"Draggable item "+b.id+" was dropped over droppable area "+c.id:"Draggable item "+b.id+" was dropped."},onDragCancel(a){let{active:b}=a;return"Dragging was cancelled. Draggable item "+b.id+" was dropped."}};function aD(a){var b;let c,{announcements:d=aC,container:e,hiddenTextDescribedById:f,screenReaderInstructions:g=aB}=a,{announce:h,announcement:i}=function(){let[a,b]=(0,x.useState)("");return{announce:(0,x.useCallback)(a=>{null!=a&&b(a)},[]),announcement:a}}(),j=ap("DndLiveRegion"),[k,l]=(0,x.useState)(!1);if((0,x.useEffect)(()=>{l(!0)},[]),b=(0,x.useMemo)(()=>({onDragStart(a){let{active:b}=a;h(d.onDragStart({active:b}))},onDragMove(a){let{active:b,over:c}=a;d.onDragMove&&h(d.onDragMove({active:b,over:c}))},onDragOver(a){let{active:b,over:c}=a;h(d.onDragOver({active:b,over:c}))},onDragEnd(a){let{active:b,over:c}=a;h(d.onDragEnd({active:b,over:c}))},onDragCancel(a){let{active:b,over:c}=a;h(d.onDragCancel({active:b,over:c}))}}),[h,d]),c=(0,x.useContext)(aA),(0,x.useEffect)(()=>{if(!c)throw Error("useDndMonitor must be used within a children of <DndContext>");return c(b)},[b,c]),!k)return null;let m=y().createElement(y().Fragment,null,y().createElement(ay,{id:f,value:g.draggable}),y().createElement(az,{id:j,announcement:i}));return e?(0,_.createPortal)(m,e):m}function aE(){}function aF(a,b){return(0,x.useMemo)(()=>({sensor:a,options:null!=b?b:{}}),[a,b])}(d=m||(m={})).DragStart="dragStart",d.DragMove="dragMove",d.DragEnd="dragEnd",d.DragCancel="dragCancel",d.DragOver="dragOver",d.RegisterDroppable="registerDroppable",d.SetDroppableDisabled="setDroppableDisabled",d.UnregisterDroppable="unregisterDroppable";let aG=Object.freeze({x:0,y:0});function aH(a,b){return Math.sqrt(Math.pow(a.x-b.x,2)+Math.pow(a.y-b.y,2))}function aI(a,b){let{data:{value:c}}=a,{data:{value:d}}=b;return c-d}function aJ(a,b){let{data:{value:c}}=a,{data:{value:d}}=b;return d-c}function aK(a){let{left:b,top:c,height:d,width:e}=a;return[{x:b,y:c},{x:b+e,y:c},{x:b,y:c+d},{x:b+e,y:c+d}]}function aL(a,b){if(!a||0===a.length)return null;let[c]=a;return b?c[b]:c}function aM(a,b,c){return void 0===b&&(b=a.left),void 0===c&&(c=a.top),{x:b+.5*a.width,y:c+.5*a.height}}let aN=a=>{let{collisionRect:b,droppableRects:c,droppableContainers:d}=a,e=aM(b,b.left,b.top),f=[];for(let a of d){let{id:b}=a,d=c.get(b);if(d){let c=aH(aM(d),e);f.push({id:b,data:{droppableContainer:a,value:c}})}}return f.sort(aI)},aO=a=>{let{collisionRect:b,droppableRects:c,droppableContainers:d}=a,e=[];for(let a of d){let{id:d}=a,f=c.get(d);if(f){let c=function(a,b){let c=Math.max(b.top,a.top),d=Math.max(b.left,a.left),e=Math.min(b.left+b.width,a.left+a.width),f=Math.min(b.top+b.height,a.top+a.height);if(d<e&&c<f){let g=b.width*b.height,h=a.width*a.height,i=(e-d)*(f-c);return Number((i/(g+h-i)).toFixed(4))}return 0}(f,b);c>0&&e.push({id:d,data:{droppableContainer:a,value:c}})}}return e.sort(aJ)};function aP(a,b){return a&&b?{x:a.left-b.left,y:a.top-b.top}:aG}let aQ=function(a){for(var b=arguments.length,c=Array(b>1?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];return c.reduce((a,b)=>({...a,top:a.top+ +b.y,bottom:a.bottom+ +b.y,left:a.left+ +b.x,right:a.right+ +b.x}),{...a})},aR={ignoreTransform:!1};function aS(a,b){void 0===b&&(b=aR);let c=a.getBoundingClientRect();if(b.ignoreTransform){let{transform:b,transformOrigin:d}=ad(a).getComputedStyle(a);b&&(c=function(a,b,c){let d=function(a){if(a.startsWith("matrix3d(")){let b=a.slice(9,-1).split(/, /);return{x:+b[12],y:+b[13],scaleX:+b[0],scaleY:+b[5]}}if(a.startsWith("matrix(")){let b=a.slice(7,-1).split(/, /);return{x:+b[4],y:+b[5],scaleX:+b[0],scaleY:+b[3]}}return null}(b);if(!d)return a;let{scaleX:e,scaleY:f,x:g,y:h}=d,i=a.left-g-(1-e)*parseFloat(c),j=a.top-h-(1-f)*parseFloat(c.slice(c.indexOf(" ")+1)),k=e?a.width/e:a.width,l=f?a.height/f:a.height;return{width:k,height:l,top:j,right:i+k,bottom:j+l,left:i}}(c,b,d))}let{top:d,left:e,width:f,height:g,bottom:h,right:i}=c;return{top:d,left:e,width:f,height:g,bottom:h,right:i}}function aT(a){return aS(a,{ignoreTransform:!0})}function aU(a,b){let c=[];return a?function d(e){var f,g;let h;if(null!=b&&c.length>=b||!e)return c;if(ae(e)&&null!=e.scrollingElement&&!c.includes(e.scrollingElement))return c.push(e.scrollingElement),c;if(!af(e)||ag(e)||c.includes(e))return c;let i=ad(a).getComputedStyle(e);return(e!==a&&(void 0===(f=i)&&(f=ad(e).getComputedStyle(e)),h=/(auto|scroll|overlay)/,["overflow","overflowX","overflowY"].some(a=>{let b=f[a];return"string"==typeof b&&h.test(b)}))&&c.push(e),void 0===(g=i)&&(g=ad(e).getComputedStyle(e)),"fixed"===g.position)?c:d(e.parentNode)}(a):c}function aV(a){let[b]=aU(a,1);return null!=b?b:null}function aW(a){return aa&&a?ab(a)?a:ac(a)?ae(a)||a===ah(a).scrollingElement?window:af(a)?a:null:null:null}function aX(a){return ab(a)?a.scrollX:a.scrollLeft}function aY(a){return ab(a)?a.scrollY:a.scrollTop}function aZ(a){return{x:aX(a),y:aY(a)}}function a$(a){return!!aa&&!!a&&a===document.scrollingElement}function a_(a){let b={x:0,y:0},c=a$(a)?{height:window.innerHeight,width:window.innerWidth}:{height:a.clientHeight,width:a.clientWidth},d={x:a.scrollWidth-c.width,y:a.scrollHeight-c.height},e=a.scrollTop<=b.y,f=a.scrollLeft<=b.x;return{isTop:e,isLeft:f,isBottom:a.scrollTop>=d.y,isRight:a.scrollLeft>=d.x,maxScroll:d,minScroll:b}}(e=n||(n={}))[e.Forward=1]="Forward",e[e.Backward=-1]="Backward";let a0={x:.2,y:.2};function a1(a){return a.reduce((a,b)=>ar(a,aZ(b)),aG)}let a2=[["x",["left","right"],function(a){return a.reduce((a,b)=>a+aX(b),0)}],["y",["top","bottom"],function(a){return a.reduce((a,b)=>a+aY(b),0)}]];class a3{constructor(a,b){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const c=aU(b),d=a1(c);for(const[b,e,f]of(this.rect={...a},this.width=a.width,this.height=a.height,a2))for(const a of e)Object.defineProperty(this,a,{get:()=>{let e=f(c),g=d[b]-e;return this.rect[a]+g},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class a4{constructor(a){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(a=>{var b;return null==(b=this.target)?void 0:b.removeEventListener(...a)})},this.target=a}add(a,b,c){var d;null==(d=this.target)||d.addEventListener(a,b,c),this.listeners.push([a,b,c])}}function a5(a,b){let c=Math.abs(a.x),d=Math.abs(a.y);return"number"==typeof b?Math.sqrt(c**2+d**2)>b:"x"in b&&"y"in b?c>b.x&&d>b.y:"x"in b?c>b.x:"y"in b&&d>b.y}function a6(a){a.preventDefault()}function a7(a){a.stopPropagation()}(f=o||(o={})).Click="click",f.DragStart="dragstart",f.Keydown="keydown",f.ContextMenu="contextmenu",f.Resize="resize",f.SelectionChange="selectionchange",f.VisibilityChange="visibilitychange",(g=p||(p={})).Space="Space",g.Down="ArrowDown",g.Right="ArrowRight",g.Left="ArrowLeft",g.Up="ArrowUp",g.Esc="Escape",g.Enter="Enter",g.Tab="Tab";let a8={start:[p.Space,p.Enter],cancel:[p.Esc],end:[p.Space,p.Enter,p.Tab]},a9=(a,b)=>{let{currentCoordinates:c}=b;switch(a.code){case p.Right:return{...c,x:c.x+25};case p.Left:return{...c,x:c.x-25};case p.Down:return{...c,y:c.y+25};case p.Up:return{...c,y:c.y-25}}};class ba{constructor(a){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=a;const{event:{target:b}}=a;this.props=a,this.listeners=new a4(ah(b)),this.windowListeners=new a4(ad(b)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(o.Resize,this.handleCancel),this.windowListeners.add(o.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(o.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:a,onStart:b}=this.props,c=a.node.current;c&&function(a,b){if(void 0===b&&(b=aS),!a)return;let{top:c,left:d,bottom:e,right:f}=b(a);aV(a)&&(e<=0||f<=0||c>=window.innerHeight||d>=window.innerWidth)&&a.scrollIntoView({block:"center",inline:"center"})}(c),b(aG)}handleKeyDown(a){if(at(a)){let{active:b,context:c,options:d}=this.props,{keyboardCodes:e=a8,coordinateGetter:f=a9,scrollBehavior:g="smooth"}=d,{code:h}=a;if(e.end.includes(h))return void this.handleEnd(a);if(e.cancel.includes(h))return void this.handleCancel(a);let{collisionRect:i}=c.current,j=i?{x:i.left,y:i.top}:aG;this.referenceCoordinates||(this.referenceCoordinates=j);let k=f(a,{active:b,context:c.current,currentCoordinates:j});if(k){let b=as(k,j),d={x:0,y:0},{scrollableAncestors:e}=c.current;for(let c of e){let e=a.code,{isTop:f,isRight:h,isLeft:i,isBottom:j,maxScroll:l,minScroll:m}=a_(c),n=function(a){if(a===document.scrollingElement){let{innerWidth:a,innerHeight:b}=window;return{top:0,left:0,right:a,bottom:b,width:a,height:b}}let{top:b,left:c,right:d,bottom:e}=a.getBoundingClientRect();return{top:b,left:c,right:d,bottom:e,width:a.clientWidth,height:a.clientHeight}}(c),o={x:Math.min(e===p.Right?n.right-n.width/2:n.right,Math.max(e===p.Right?n.left:n.left+n.width/2,k.x)),y:Math.min(e===p.Down?n.bottom-n.height/2:n.bottom,Math.max(e===p.Down?n.top:n.top+n.height/2,k.y))},q=e===p.Right&&!h||e===p.Left&&!i,r=e===p.Down&&!j||e===p.Up&&!f;if(q&&o.x!==k.x){let a=c.scrollLeft+b.x,f=e===p.Right&&a<=l.x||e===p.Left&&a>=m.x;if(f&&!b.y)return void c.scrollTo({left:a,behavior:g});f?d.x=c.scrollLeft-a:d.x=e===p.Right?c.scrollLeft-l.x:c.scrollLeft-m.x,d.x&&c.scrollBy({left:-d.x,behavior:g});break}if(r&&o.y!==k.y){let a=c.scrollTop+b.y,f=e===p.Down&&a<=l.y||e===p.Up&&a>=m.y;if(f&&!b.x)return void c.scrollTo({top:a,behavior:g});f?d.y=c.scrollTop-a:d.y=e===p.Down?c.scrollTop-l.y:c.scrollTop-m.y,d.y&&c.scrollBy({top:-d.y,behavior:g});break}}this.handleMove(a,ar(as(k,this.referenceCoordinates),d))}}}handleMove(a,b){let{onMove:c}=this.props;a.preventDefault(),c(b)}handleEnd(a){let{onEnd:b}=this.props;a.preventDefault(),this.detach(),b()}handleCancel(a){let{onCancel:b}=this.props;a.preventDefault(),this.detach(),b()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}function bb(a){return!!(a&&"distance"in a)}function bc(a){return!!(a&&"delay"in a)}ba.activators=[{eventName:"onKeyDown",handler:(a,b,c)=>{let{keyboardCodes:d=a8,onActivation:e}=b,{active:f}=c,{code:g}=a.nativeEvent;if(d.start.includes(g)){let b=f.activatorNode.current;return(!b||a.target===b)&&(a.preventDefault(),null==e||e({event:a.nativeEvent}),!0)}return!1}}];class bd{constructor(a,b,c){var d;void 0===c&&(c=function(a){let{EventTarget:b}=ad(a);return a instanceof b?a:ah(a)}(a.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=a,this.events=b;const{event:e}=a,{target:f}=e;this.props=a,this.events=b,this.document=ah(f),this.documentListeners=new a4(this.document),this.listeners=new a4(c),this.windowListeners=new a4(ad(f)),this.initialCoordinates=null!=(d=au(e))?d:aG,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:a,props:{options:{activationConstraint:b,bypassActivationConstraint:c}}}=this;if(this.listeners.add(a.move.name,this.handleMove,{passive:!1}),this.listeners.add(a.end.name,this.handleEnd),a.cancel&&this.listeners.add(a.cancel.name,this.handleCancel),this.windowListeners.add(o.Resize,this.handleCancel),this.windowListeners.add(o.DragStart,a6),this.windowListeners.add(o.VisibilityChange,this.handleCancel),this.windowListeners.add(o.ContextMenu,a6),this.documentListeners.add(o.Keydown,this.handleKeydown),b){if(null!=c&&c({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(bc(b)){this.timeoutId=setTimeout(this.handleStart,b.delay),this.handlePending(b);return}if(bb(b))return void this.handlePending(b)}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),null!==this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(a,b){let{active:c,onPending:d}=this.props;d(c,a,this.initialCoordinates,b)}handleStart(){let{initialCoordinates:a}=this,{onStart:b}=this.props;a&&(this.activated=!0,this.documentListeners.add(o.Click,a7,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(o.SelectionChange,this.removeTextSelection),b(a))}handleMove(a){var b;let{activated:c,initialCoordinates:d,props:e}=this,{onMove:f,options:{activationConstraint:g}}=e;if(!d)return;let h=null!=(b=au(a))?b:aG,i=as(d,h);if(!c&&g){if(bb(g)){if(null!=g.tolerance&&a5(i,g.tolerance))return this.handleCancel();if(a5(i,g.distance))return this.handleStart()}return bc(g)&&a5(i,g.tolerance)?this.handleCancel():void this.handlePending(g,i)}a.cancelable&&a.preventDefault(),f(h)}handleEnd(){let{onAbort:a,onEnd:b}=this.props;this.detach(),this.activated||a(this.props.active),b()}handleCancel(){let{onAbort:a,onCancel:b}=this.props;this.detach(),this.activated||a(this.props.active),b()}handleKeydown(a){a.code===p.Esc&&this.handleCancel()}removeTextSelection(){var a;null==(a=this.document.getSelection())||a.removeAllRanges()}}let be={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class bf extends bd{constructor(a){const{event:b}=a;super(a,be,ah(b.target))}}bf.activators=[{eventName:"onPointerDown",handler:(a,b)=>{let{nativeEvent:c}=a,{onActivation:d}=b;return!!c.isPrimary&&0===c.button&&(null==d||d({event:c}),!0)}}];let bg={move:{name:"mousemove"},end:{name:"mouseup"}};(h=q||(q={}))[h.RightClick=2]="RightClick";class bh extends bd{constructor(a){super(a,bg,ah(a.event.target))}}bh.activators=[{eventName:"onMouseDown",handler:(a,b)=>{let{nativeEvent:c}=a,{onActivation:d}=b;return c.button!==q.RightClick&&(null==d||d({event:c}),!0)}}];let bi={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class bj extends bd{constructor(a){super(a,bi)}static setup(){return window.addEventListener(bi.move.name,a,{capture:!1,passive:!1}),function(){window.removeEventListener(bi.move.name,a)};function a(){}}}bj.activators=[{eventName:"onTouchStart",handler:(a,b)=>{let{nativeEvent:c}=a,{onActivation:d}=b,{touches:e}=c;return!(e.length>1)&&(null==d||d({event:c}),!0)}}],(i=r||(r={}))[i.Pointer=0]="Pointer",i[i.DraggableRect=1]="DraggableRect",(j=s||(s={}))[j.TreeOrder=0]="TreeOrder",j[j.ReversedTreeOrder=1]="ReversedTreeOrder";let bk={x:{[n.Backward]:!1,[n.Forward]:!1},y:{[n.Backward]:!1,[n.Forward]:!1}};(k=t||(t={}))[k.Always=0]="Always",k[k.BeforeDragging=1]="BeforeDragging",k[k.WhileDragging=2]="WhileDragging",(u||(u={})).Optimized="optimized";let bl=new Map;function bm(a,b){return al(c=>a?c||("function"==typeof b?b(a):a):null,[b,a])}function bn(a){let{callback:b,disabled:c}=a,d=aj(b),e=(0,x.useMemo)(()=>{if(c||"u"<typeof window||void 0===window.ResizeObserver)return;let{ResizeObserver:a}=window;return new a(d)},[c]);return(0,x.useEffect)(()=>()=>null==e?void 0:e.disconnect(),[e]),e}function bo(a){return new a3(aS(a),a)}function bp(a,b,c){void 0===b&&(b=bo);let[d,e]=(0,x.useState)(null);function f(){e(d=>{if(!a)return null;if(!1===a.isConnected){var e;return null!=(e=null!=d?d:c)?e:null}let f=b(a);return JSON.stringify(d)===JSON.stringify(f)?d:f})}let g=function(a){let{callback:b,disabled:c}=a,d=aj(b),e=(0,x.useMemo)(()=>{if(c||"u"<typeof window||void 0===window.MutationObserver)return;let{MutationObserver:a}=window;return new a(d)},[d,c]);return(0,x.useEffect)(()=>()=>null==e?void 0:e.disconnect(),[e]),e}({callback(b){if(a)for(let c of b){let{type:b,target:d}=c;if("childList"===b&&d instanceof HTMLElement&&d.contains(a)){f();break}}}}),h=bn({callback:f});return ai(()=>{f(),a?(null==h||h.observe(a),null==g||g.observe(document.body,{childList:!0,subtree:!0})):(null==h||h.disconnect(),null==g||g.disconnect())},[a]),d}let bq=[];function br(a,b){void 0===b&&(b=[]);let c=(0,x.useRef)(null);return(0,x.useEffect)(()=>{c.current=null},b),(0,x.useEffect)(()=>{let b=a!==aG;b&&!c.current&&(c.current=a),!b&&c.current&&(c.current=null)},[a]),c.current?as(a,c.current):aG}function bs(a){return(0,x.useMemo)(()=>{let b,c;return a?(b=a.innerWidth,{top:0,left:0,right:b,bottom:c=a.innerHeight,width:b,height:c}):null},[a])}let bt=[],bu=[{sensor:bf,options:{}},{sensor:ba,options:{}}],bv={current:{}},bw={draggable:{measure:aT},droppable:{measure:aT,strategy:t.WhileDragging,frequency:u.Optimized},dragOverlay:{measure:aS}};class bx extends Map{get(a){var b;return null!=a&&null!=(b=super.get(a))?b:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(a=>{let{disabled:b}=a;return!b})}getNodeFor(a){var b,c;return null!=(b=null==(c=this.get(a))?void 0:c.node.current)?b:void 0}}let by={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new bx,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:aE},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:bw,measureDroppableContainers:aE,windowRect:null,measuringScheduled:!1},bz={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:aE,draggableNodes:new Map,over:null,measureDroppableContainers:aE},bA=(0,x.createContext)(bz),bB=(0,x.createContext)(by);function bC(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new bx}}}function bD(a,b){switch(b.type){case m.DragStart:return{...a,draggable:{...a.draggable,initialCoordinates:b.initialCoordinates,active:b.active}};case m.DragMove:if(null==a.draggable.active)return a;return{...a,draggable:{...a.draggable,translate:{x:b.coordinates.x-a.draggable.initialCoordinates.x,y:b.coordinates.y-a.draggable.initialCoordinates.y}}};case m.DragEnd:case m.DragCancel:return{...a,draggable:{...a.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case m.RegisterDroppable:{let{element:c}=b,{id:d}=c,e=new bx(a.droppable.containers);return e.set(d,c),{...a,droppable:{...a.droppable,containers:e}}}case m.SetDroppableDisabled:{let{id:c,key:d,disabled:e}=b,f=a.droppable.containers.get(c);if(!f||d!==f.key)return a;let g=new bx(a.droppable.containers);return g.set(c,{...f,disabled:e}),{...a,droppable:{...a.droppable,containers:g}}}case m.UnregisterDroppable:{let{id:c,key:d}=b,e=a.droppable.containers.get(c);if(!e||d!==e.key)return a;let f=new bx(a.droppable.containers);return f.delete(c),{...a,droppable:{...a.droppable,containers:f}}}default:return a}}function bE(a){let{disabled:b}=a,{active:c,activatorEvent:d,draggableNodes:e}=(0,x.useContext)(bA),f=an(d),g=an(null==c?void 0:c.id);return(0,x.useEffect)(()=>{if(!b&&!d&&f&&null!=g){if(!at(f)||document.activeElement===f.target)return;let a=e.get(g);if(!a)return;let{activatorNode:b,node:c}=a;(b.current||c.current)&&requestAnimationFrame(()=>{for(let a of[b.current,c.current]){if(!a)continue;let b=a.matches(aw)?a:a.querySelector(aw);if(b){b.focus();break}}})}},[d,b,e,g,f]),null}let bF=(0,x.createContext)({...aG,scaleX:1,scaleY:1});(l=v||(v={}))[l.Uninitialized=0]="Uninitialized",l[l.Initializing=1]="Initializing",l[l.Initialized=2]="Initialized";let bG=(0,x.memo)(function(a){var b,c,d,e,f,g,h,i;let j,k,l,o,p,q,u,w,{id:z,accessibility:A,autoScroll:B=!0,children:C,sensors:D=bu,collisionDetection:E=aO,measuring:F,modifiers:G,...H}=a,[I,J]=(0,x.useReducer)(bD,void 0,bC),[K,L]=function(){let[a]=(0,x.useState)(()=>new Set),b=(0,x.useCallback)(b=>(a.add(b),()=>a.delete(b)),[a]);return[(0,x.useCallback)(b=>{let{type:c,event:d}=b;a.forEach(a=>{var b;return null==(b=a[c])?void 0:b.call(a,d)})},[a]),b]}(),[M,N]=(0,x.useState)(v.Uninitialized),O=M===v.Initialized,{draggable:{active:P,nodes:Q,translate:R},droppable:{containers:S}}=I,T=null!=P?Q.get(P):null,U=(0,x.useRef)({initial:null,translated:null}),V=(0,x.useMemo)(()=>{var a;return null!=P?{id:P,data:null!=(a=null==T?void 0:T.data)?a:bv,rect:U}:null},[P,T]),W=(0,x.useRef)(null),[X,Y]=(0,x.useState)(null),[Z,$]=(0,x.useState)(null),ab=ak(H,Object.values(H)),ac=ap("DndDescribedBy",z),ae=(0,x.useMemo)(()=>S.getEnabled(),[S]),ag=(0,x.useMemo)(()=>({draggable:{...bw.draggable,...null==F?void 0:F.draggable},droppable:{...bw.droppable,...null==F?void 0:F.droppable},dragOverlay:{...bw.dragOverlay,...null==F?void 0:F.dragOverlay}}),[null==F?void 0:F.draggable,null==F?void 0:F.droppable,null==F?void 0:F.dragOverlay]),{droppableRects:ah,measureDroppableContainers:aj,measuringScheduled:ao}=function(a,b){let{dragging:c,dependencies:d,config:e}=b,[f,g]=(0,x.useState)(null),{frequency:h,measure:i,strategy:j}=e,k=(0,x.useRef)(a),l=function(){switch(j){case t.Always:return!1;case t.BeforeDragging:return c;default:return!c}}(),m=ak(l),n=(0,x.useCallback)(function(a){void 0===a&&(a=[]),m.current||g(b=>null===b?a:b.concat(a.filter(a=>!b.includes(a))))},[m]),o=(0,x.useRef)(null),p=al(b=>{if(l&&!c)return bl;if(!b||b===bl||k.current!==a||null!=f){let b=new Map;for(let c of a){if(!c)continue;if(f&&f.length>0&&!f.includes(c.id)&&c.rect.current){b.set(c.id,c.rect.current);continue}let a=c.node.current,d=a?new a3(i(a),a):null;c.rect.current=d,d&&b.set(c.id,d)}return b}return b},[a,f,c,l,i]);return(0,x.useEffect)(()=>{k.current=a},[a]),(0,x.useEffect)(()=>{l||n()},[c,l]),(0,x.useEffect)(()=>{f&&f.length>0&&g(null)},[JSON.stringify(f)]),(0,x.useEffect)(()=>{l||"number"!=typeof h||null!==o.current||(o.current=setTimeout(()=>{n(),o.current=null},h))},[h,l,n,...d]),{droppableRects:p,measureDroppableContainers:n,measuringScheduled:null!=f}}(ae,{dragging:O,dependencies:[R.x,R.y],config:ag.droppable}),aq=al(a=>{var b;return null==P?null:null!=(b=null!=p?p:a)?b:null},[p=(o=null!=P?Q.get(P):void 0)?o.node.current:null,P]),as=(0,x.useMemo)(()=>Z?au(Z):null,[Z]),at=(j=(null==X?void 0:X.autoScrollEnabled)===!1,k="object"==typeof B?!1===B.enabled:!1===B,l=O&&!j&&!k,"object"==typeof B?{...B,enabled:l}:{enabled:l}),av=bm(aq,ag.draggable.measure);!function(a){let{activeNode:b,measure:c,initialRect:d,config:e=!0}=a,f=(0,x.useRef)(!1),{x:g,y:h}="boolean"==typeof e?{x:e,y:e}:e;ai(()=>{if(!g&&!h||!b){f.current=!1;return}if(f.current||!d)return;let a=null==b?void 0:b.node.current;if(!a||!1===a.isConnected)return;let e=aP(c(a),d);if(g||(e.x=0),h||(e.y=0),f.current=!0,Math.abs(e.x)>0||Math.abs(e.y)>0){let b=aV(a);b&&b.scrollBy({top:e.y,left:e.x})}},[b,g,h,d,c])}({activeNode:null!=P?Q.get(P):null,config:at.layoutShiftCompensation,initialRect:av,measure:ag.draggable.measure});let aw=bp(aq,ag.draggable.measure,av),ax=bp(aq?aq.parentElement:null),ay=(0,x.useRef)({activatorEvent:null,active:null,activeNode:aq,collisionRect:null,collisions:null,droppableRects:ah,draggableNodes:Q,draggingNode:null,draggingNodeRect:null,droppableContainers:S,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),az=S.getNodeFor(null==(b=ay.current.over)?void 0:b.id),aB=function(a){let{measure:b}=a,[c,d]=(0,x.useState)(null),e=bn({callback:(0,x.useCallback)(a=>{for(let{target:c}of a)if(af(c)){d(a=>{let d=b(c);return a?{...a,width:d.width,height:d.height}:d});break}},[b])}),[f,g]=am((0,x.useCallback)(a=>{let c=function(a){if(!a)return null;if(a.children.length>1)return a;let b=a.children[0];return af(b)?b:a}(a);null==e||e.disconnect(),c&&(null==e||e.observe(c)),d(c?b(c):null)},[b,e]));return(0,x.useMemo)(()=>({nodeRef:f,rect:c,setRef:g}),[c,f,g])}({measure:ag.dragOverlay.measure}),aC=null!=(c=aB.nodeRef.current)?c:aq,aE=O?null!=(d=aB.rect)?d:aw:null,aF=!!(aB.nodeRef.current&&aB.rect),aH=(q=bm(f=aF?null:aw),aP(f,q)),aI=bs(aC?ad(aC):null),aJ=(g=O?null!=az?az:aq:null,u=(0,x.useRef)(g),w=al(a=>g?a&&a!==bq&&g&&u.current&&g.parentNode===u.current.parentNode?a:aU(g):bq,[g]),(0,x.useEffect)(()=>{u.current=g},[g]),w),aK=function(a,b){void 0===b&&(b=aS);let[c]=a,d=bs(c?ad(c):null),[e,f]=(0,x.useState)(bt);function g(){f(()=>a.length?a.map(a=>a$(a)?d:new a3(b(a),a)):bt)}let h=bn({callback:g});return ai(()=>{null==h||h.disconnect(),g(),a.forEach(a=>null==h?void 0:h.observe(a))},[a]),e}(aJ),aM=function(a,b){let{transform:c,...d}=b;return null!=a&&a.length?a.reduce((a,b)=>b({transform:a,...d}),c):c}(G,{transform:{x:R.x-aH.x,y:R.y-aH.y,scaleX:1,scaleY:1},activatorEvent:Z,active:V,activeNodeRect:aw,containerNodeRect:ax,draggingNodeRect:aE,over:ay.current.over,overlayNodeRect:aB.rect,scrollableAncestors:aJ,scrollableAncestorRects:aK,windowRect:aI}),aN=as?ar(as,R):null,aR=function(a){let[b,c]=(0,x.useState)(null),d=(0,x.useRef)(a),e=(0,x.useCallback)(a=>{let b=aW(a.target);b&&c(a=>a?(a.set(b,aZ(b)),new Map(a)):null)},[]);return(0,x.useEffect)(()=>{let b=d.current;if(a!==b){f(b);let g=a.map(a=>{let b=aW(a);return b?(b.addEventListener("scroll",e,{passive:!0}),[b,aZ(b)]):null}).filter(a=>null!=a);c(g.length?new Map(g):null),d.current=a}return()=>{f(a),f(b)};function f(a){a.forEach(a=>{let b=aW(a);null==b||b.removeEventListener("scroll",e)})}},[e,a]),(0,x.useMemo)(()=>a.length?b?Array.from(b.values()).reduce((a,b)=>ar(a,b),aG):a1(a):aG,[a,b])}(aJ),aT=br(aR),aX=br(aR,[aw]),aY=ar(aM,aT),a2=aE?aQ(aE,aM):null,a4=V&&a2?E({active:V,collisionRect:a2,droppableRects:ah,droppableContainers:ae,pointerCoordinates:aN}):null,a5=aL(a4,"id"),[a6,a7]=(0,x.useState)(null),a8=(h=aF?aM:ar(aM,aX),i=null!=(e=null==a6?void 0:a6.rect)?e:null,{...h,scaleX:i&&aw?i.width/aw.width:1,scaleY:i&&aw?i.height/aw.height:1}),a9=(0,x.useRef)(null),ba=(0,x.useCallback)((a,b)=>{let{sensor:c,options:d}=b;if(null==W.current)return;let e=Q.get(W.current);if(!e)return;let f=a.nativeEvent,g=new c({active:W.current,activeNode:e,event:f,options:d,context:ay,onAbort(a){if(!Q.get(a))return;let{onDragAbort:b}=ab.current,c={id:a};null==b||b(c),K({type:"onDragAbort",event:c})},onPending(a,b,c,d){if(!Q.get(a))return;let{onDragPending:e}=ab.current,f={id:a,constraint:b,initialCoordinates:c,offset:d};null==e||e(f),K({type:"onDragPending",event:f})},onStart(a){let b=W.current;if(null==b)return;let c=Q.get(b);if(!c)return;let{onDragStart:d}=ab.current,e={activatorEvent:f,active:{id:b,data:c.data,rect:U}};(0,_.unstable_batchedUpdates)(()=>{null==d||d(e),N(v.Initializing),J({type:m.DragStart,initialCoordinates:a,active:b}),K({type:"onDragStart",event:e}),Y(a9.current),$(f)})},onMove(a){J({type:m.DragMove,coordinates:a})},onEnd:h(m.DragEnd),onCancel:h(m.DragCancel)});function h(a){return async function(){let{active:b,collisions:c,over:d,scrollAdjustedTranslate:e}=ay.current,g=null;if(b&&e){let{cancelDrop:h}=ab.current;g={activatorEvent:f,active:b,collisions:c,delta:e,over:d},a===m.DragEnd&&"function"==typeof h&&await Promise.resolve(h(g))&&(a=m.DragCancel)}W.current=null,(0,_.unstable_batchedUpdates)(()=>{J({type:a}),N(v.Uninitialized),a7(null),Y(null),$(null),a9.current=null;let b=a===m.DragEnd?"onDragEnd":"onDragCancel";if(g){let a=ab.current[b];null==a||a(g),K({type:b,event:g})}})}}a9.current=g},[Q]),bb=(0,x.useCallback)((a,b)=>(c,d)=>{let e=c.nativeEvent,f=Q.get(d);null!==W.current||!f||e.dndKit||e.defaultPrevented||!0===a(c,b.options,{active:f})&&(e.dndKit={capturedBy:b.sensor},W.current=d,ba(c,b))},[Q,ba]),bc=(0,x.useMemo)(()=>D.reduce((a,b)=>{let{sensor:c}=b;return[...a,...c.activators.map(a=>({eventName:a.eventName,handler:bb(a.handler,b)}))]},[]),[D,bb]);(0,x.useEffect)(()=>{if(!aa)return;let a=D.map(a=>{let{sensor:b}=a;return null==b.setup?void 0:b.setup()});return()=>{for(let b of a)null==b||b()}},D.map(a=>{let{sensor:b}=a;return b})),ai(()=>{aw&&M===v.Initializing&&N(v.Initialized)},[aw,M]),(0,x.useEffect)(()=>{let{onDragMove:a}=ab.current,{active:b,activatorEvent:c,collisions:d,over:e}=ay.current;if(!b||!c)return;let f={active:b,activatorEvent:c,collisions:d,delta:{x:aY.x,y:aY.y},over:e};(0,_.unstable_batchedUpdates)(()=>{null==a||a(f),K({type:"onDragMove",event:f})})},[aY.x,aY.y]),(0,x.useEffect)(()=>{let{active:a,activatorEvent:b,collisions:c,droppableContainers:d,scrollAdjustedTranslate:e}=ay.current;if(!a||null==W.current||!b||!e)return;let{onDragOver:f}=ab.current,g=d.get(a5),h=g&&g.rect.current?{id:g.id,rect:g.rect.current,data:g.data,disabled:g.disabled}:null,i={active:a,activatorEvent:b,collisions:c,delta:{x:e.x,y:e.y},over:h};(0,_.unstable_batchedUpdates)(()=>{a7(h),null==f||f(i),K({type:"onDragOver",event:i})})},[a5]),ai(()=>{ay.current={activatorEvent:Z,active:V,activeNode:aq,collisionRect:a2,collisions:a4,droppableRects:ah,draggableNodes:Q,draggingNode:aC,draggingNodeRect:aE,droppableContainers:S,over:a6,scrollableAncestors:aJ,scrollAdjustedTranslate:aY},U.current={initial:aE,translated:a2}},[V,aq,a4,a2,Q,aC,aE,ah,S,a6,aJ,aY]),function(a){let b,{acceleration:c,activator:d=r.Pointer,canScroll:e,draggingRect:f,enabled:g,interval:h=5,order:i=s.TreeOrder,pointerCoordinates:j,scrollableAncestors:k,scrollableAncestorRects:l,delta:m,threshold:o}=a,p=function(a){let{delta:b,disabled:c}=a,d=an(b);return al(a=>{if(c||!d||!a)return bk;let e={x:Math.sign(b.x-d.x),y:Math.sign(b.y-d.y)};return{x:{[n.Backward]:a.x[n.Backward]||-1===e.x,[n.Forward]:a.x[n.Forward]||1===e.x},y:{[n.Backward]:a.y[n.Backward]||-1===e.y,[n.Forward]:a.y[n.Forward]||1===e.y}}},[c,b,d])}({delta:m,disabled:!g}),[q,t]=(b=(0,x.useRef)(null),[(0,x.useCallback)((a,c)=>{b.current=setInterval(a,c)},[]),(0,x.useCallback)(()=>{null!==b.current&&(clearInterval(b.current),b.current=null)},[])]),u=(0,x.useRef)({x:0,y:0}),v=(0,x.useRef)({x:0,y:0}),w=(0,x.useMemo)(()=>{switch(d){case r.Pointer:return j?{top:j.y,bottom:j.y,left:j.x,right:j.x}:null;case r.DraggableRect:return f}},[d,f,j]),y=(0,x.useRef)(null),z=(0,x.useCallback)(()=>{let a=y.current;if(!a)return;let b=u.current.x*v.current.x,c=u.current.y*v.current.y;a.scrollBy(b,c)},[]),A=(0,x.useMemo)(()=>i===s.TreeOrder?[...k].reverse():k,[i,k]);(0,x.useEffect)(()=>{if(!g||!k.length||!w)return void t();for(let a of A){if((null==e?void 0:e(a))===!1)continue;let b=l[k.indexOf(a)];if(!b)continue;let{direction:d,speed:f}=function(a,b,c,d,e){let{top:f,left:g,right:h,bottom:i}=c;void 0===d&&(d=10),void 0===e&&(e=a0);let{isTop:j,isBottom:k,isLeft:l,isRight:m}=a_(a),o={x:0,y:0},p={x:0,y:0},q={height:b.height*e.y,width:b.width*e.x};return!j&&f<=b.top+q.height?(o.y=n.Backward,p.y=d*Math.abs((b.top+q.height-f)/q.height)):!k&&i>=b.bottom-q.height&&(o.y=n.Forward,p.y=d*Math.abs((b.bottom-q.height-i)/q.height)),!m&&h>=b.right-q.width?(o.x=n.Forward,p.x=d*Math.abs((b.right-q.width-h)/q.width)):!l&&g<=b.left+q.width&&(o.x=n.Backward,p.x=d*Math.abs((b.left+q.width-g)/q.width)),{direction:o,speed:p}}(a,b,w,c,o);for(let a of["x","y"])p[a][d[a]]||(f[a]=0,d[a]=0);if(f.x>0||f.y>0){t(),y.current=a,q(z,h),u.current=f,v.current=d;return}}u.current={x:0,y:0},v.current={x:0,y:0},t()},[c,z,e,t,g,h,JSON.stringify(w),JSON.stringify(p),q,k,A,l,JSON.stringify(o)])}({...at,delta:R,draggingRect:a2,pointerCoordinates:aN,scrollableAncestors:aJ,scrollableAncestorRects:aK});let bd=(0,x.useMemo)(()=>({active:V,activeNode:aq,activeNodeRect:aw,activatorEvent:Z,collisions:a4,containerNodeRect:ax,dragOverlay:aB,draggableNodes:Q,droppableContainers:S,droppableRects:ah,over:a6,measureDroppableContainers:aj,scrollableAncestors:aJ,scrollableAncestorRects:aK,measuringConfiguration:ag,measuringScheduled:ao,windowRect:aI}),[V,aq,aw,Z,a4,ax,aB,Q,S,ah,a6,aj,aJ,aK,ag,ao,aI]),be=(0,x.useMemo)(()=>({activatorEvent:Z,activators:bc,active:V,activeNodeRect:aw,ariaDescribedById:{draggable:ac},dispatch:J,draggableNodes:Q,over:a6,measureDroppableContainers:aj}),[Z,bc,V,aw,J,ac,Q,a6,aj]);return y().createElement(aA.Provider,{value:L},y().createElement(bA.Provider,{value:be},y().createElement(bB.Provider,{value:bd},y().createElement(bF.Provider,{value:a8},C)),y().createElement(bE,{disabled:(null==A?void 0:A.restoreFocus)===!1})),y().createElement(aD,{...A,hiddenTextDescribedById:ac}))}),bH=(0,x.createContext)(null),bI="button",bJ={timeout:25};function bK(a,b,c){let d=a.slice();return d.splice(c<0?d.length+c:c,0,d.splice(b,1)[0]),d}function bL(a){return null!==a&&a>=0}let bM=a=>{let{rects:b,activeIndex:c,overIndex:d,index:e}=a,f=bK(b,d,c),g=b[e],h=f[e];return h&&g?{x:h.left-g.left,y:h.top-g.top,scaleX:h.width/g.width,scaleY:h.height/g.height}:null},bN={scaleX:1,scaleY:1},bO=a=>{var b,c,d,e;let f,g,h,{activeIndex:i,activeNodeRect:j,index:k,rects:l,overIndex:m}=a,n=null!=(b=l[i])?b:j;if(!n)return null;if(k===i){let a=l[m];return a?{x:0,y:i<m?a.top+a.height-(n.top+n.height):a.top-n.top,...bN}:null}let o=(c=l,d=k,e=i,f=c[d],g=c[d-1],h=c[d+1],f?e<d?g?f.top-(g.top+g.height):h?h.top-(f.top+f.height):0:h?h.top-(f.top+f.height):g?f.top-(g.top+g.height):0:0);return k>i&&k<=m?{x:0,y:-n.height-o,...bN}:k<i&&k>=m?{x:0,y:n.height+o,...bN}:{x:0,y:0,...bN}},bP="Sortable",bQ=y().createContext({activeIndex:-1,containerId:bP,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:bM,disabled:{draggable:!1,droppable:!1}});function bR(a){let{children:b,id:c,items:d,strategy:e=bM,disabled:f=!1}=a,{active:g,dragOverlay:h,droppableRects:i,over:j,measureDroppableContainers:k}=(0,x.useContext)(bB),l=ap(bP,c),m=null!==h.rect,n=(0,x.useMemo)(()=>d.map(a=>"object"==typeof a&&"id"in a?a.id:a),[d]),o=null!=g,p=g?n.indexOf(g.id):-1,q=j?n.indexOf(j.id):-1,r=(0,x.useRef)(n),s=!function(a,b){if(a===b)return!0;if(a.length!==b.length)return!1;for(let c=0;c<a.length;c++)if(a[c]!==b[c])return!1;return!0}(n,r.current),t=-1!==q&&-1===p||s,u="boolean"==typeof f?{draggable:f,droppable:f}:f;ai(()=>{s&&o&&k(n)},[s,n,o,k]),(0,x.useEffect)(()=>{r.current=n},[n]);let v=(0,x.useMemo)(()=>({activeIndex:p,containerId:l,disabled:u,disableTransforms:t,items:n,overIndex:q,useDragOverlay:m,sortedRects:n.reduce((a,b,c)=>{let d=i.get(b);return d&&(a[c]=d),a},Array(n.length)),strategy:e}),[p,l,u.draggable,u.droppable,t,n,q,i,m,e]);return y().createElement(bQ.Provider,{value:v},b)}let bS=a=>{let{id:b,items:c,activeIndex:d,overIndex:e}=a;return bK(c,d,e).indexOf(b)},bT=a=>{let{containerId:b,isSorting:c,wasDragging:d,index:e,items:f,newIndex:g,previousItems:h,previousContainerId:i,transition:j}=a;return!!j&&!!d&&(h===f||e!==g)&&(!!c||g!==e&&b===i)},bU={duration:200,easing:"ease"},bV="transform",bW=av.Transition.toString({property:bV,duration:0,easing:"linear"}),bX={roleDescription:"sortable"};function bY(a){if(!a)return!1;let b=a.data.current;return!!b&&"sortable"in b&&"object"==typeof b.sortable&&"containerId"in b.sortable&&"items"in b.sortable&&"index"in b.sortable}let bZ=[p.Down,p.Right,p.Up,p.Left],b$=(a,b)=>{let{context:{active:c,collisionRect:d,droppableRects:e,droppableContainers:f,over:g,scrollableAncestors:h}}=b;if(bZ.includes(a.code)){if(a.preventDefault(),!c||!d)return;let b=[];f.getEnabled().forEach(c=>{if(!c||null!=c&&c.disabled)return;let f=e.get(c.id);if(f)switch(a.code){case p.Down:d.top<f.top&&b.push(c);break;case p.Up:d.top>f.top&&b.push(c);break;case p.Left:d.left>f.left&&b.push(c);break;case p.Right:d.left<f.left&&b.push(c)}});let k=(a=>{let{collisionRect:b,droppableRects:c,droppableContainers:d}=a,e=aK(b),f=[];for(let a of d){let{id:b}=a,d=c.get(b);if(d){let c=aK(d),g=Number((e.reduce((a,b,d)=>a+aH(c[d],b),0)/4).toFixed(4));f.push({id:b,data:{droppableContainer:a,value:g}})}}return f.sort(aI)})({active:c,collisionRect:d,droppableRects:e,droppableContainers:b,pointerCoordinates:null}),l=aL(k,"id");if(l===(null==g?void 0:g.id)&&k.length>1&&(l=k[1].id),null!=l){let a=f.get(c.id),b=f.get(l),g=b?e.get(b.id):null,k=null==b?void 0:b.node.current;if(k&&g&&a&&b){var i,j;let c=aU(k).some((a,b)=>h[b]!==a),e=b_(a,b),f=(i=a,j=b,!!bY(i)&&!!bY(j)&&!!b_(i,j)&&i.data.current.sortable.index<j.data.current.sortable.index),l=c||!e?{x:0,y:0}:{x:f?d.width-g.width:0,y:f?d.height-g.height:0},m={x:g.left,y:g.top};return l.x&&l.y?m:as(m,l)}}}};function b_(a,b){return!!bY(a)&&!!bY(b)&&a.data.current.sortable.containerId===b.data.current.sortable.containerId}let b0=a=>{let b,{containerNodeRect:c,draggingNodeRect:d,transform:e}=a;return d&&c?(b={...e},d.top+e.y<=c.top?b.y=c.top-d.top:d.bottom+e.y>=c.top+c.height&&(b.y=c.top+c.height-d.bottom),d.left+e.x<=c.left?b.x=c.left-d.left:d.right+e.x>=c.left+c.width&&(b.x=c.left+c.width-d.right),b):e},b1=a=>{let{transform:b}=a;return{...b,x:0}};function b2({id:a,index:b,model:c,isFirst:d,isLast:e,modelCaps:f,onEdit:g,onMoveUp:h,onMoveDown:i,onRemove:j}){let{attributes:k,listeners:l,setNodeRef:n,transform:o,isDragging:p}=function(a){var b,c,d,e;let{animateLayoutChanges:f=bT,attributes:g,disabled:h,data:i,getNewIndex:j=bS,id:k,strategy:l,resizeObserverConfig:n,transition:o=bU}=a,{items:p,containerId:q,activeIndex:r,disabled:s,disableTransforms:t,sortedRects:u,overIndex:v,useDragOverlay:w,strategy:y}=(0,x.useContext)(bQ),z=(b=h,c=s,"boolean"==typeof b?{draggable:b,droppable:!1}:{draggable:null!=(d=null==b?void 0:b.draggable)?d:c.draggable,droppable:null!=(e=null==b?void 0:b.droppable)?e:c.droppable}),A=p.indexOf(k),B=(0,x.useMemo)(()=>({sortable:{containerId:q,index:A,items:p},...i}),[q,i,A,p]),C=(0,x.useMemo)(()=>p.slice(p.indexOf(k)),[p,k]),{rect:D,node:E,isOver:F,setNodeRef:G}=function(a){let{data:b,disabled:c=!1,id:d,resizeObserverConfig:e}=a,f=ap("Droppable"),{active:g,dispatch:h,over:i,measureDroppableContainers:j}=(0,x.useContext)(bA),k=(0,x.useRef)({disabled:c}),l=(0,x.useRef)(!1),n=(0,x.useRef)(null),o=(0,x.useRef)(null),{disabled:p,updateMeasurementsFor:q,timeout:r}={...bJ,...e},s=ak(null!=q?q:d),t=bn({callback:(0,x.useCallback)(()=>{if(!l.current){l.current=!0;return}null!=o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{j(Array.isArray(s.current)?s.current:[s.current]),o.current=null},r)},[r]),disabled:p||!g}),[u,v]=am((0,x.useCallback)((a,b)=>{t&&(b&&(t.unobserve(b),l.current=!1),a&&t.observe(a))},[t])),w=ak(b);return(0,x.useEffect)(()=>{t&&u.current&&(t.disconnect(),l.current=!1,t.observe(u.current))},[u,t]),(0,x.useEffect)(()=>(h({type:m.RegisterDroppable,element:{id:d,key:f,disabled:c,node:u,rect:n,data:w}}),()=>h({type:m.UnregisterDroppable,key:f,id:d})),[d]),(0,x.useEffect)(()=>{c!==k.current.disabled&&(h({type:m.SetDroppableDisabled,id:d,key:f,disabled:c}),k.current.disabled=c)},[d,f,c,h]),{active:g,rect:n,isOver:(null==i?void 0:i.id)===d,node:u,over:i,setNodeRef:v}}({id:k,data:B,disabled:z.droppable,resizeObserverConfig:{updateMeasurementsFor:C,...n}}),{active:H,activatorEvent:I,activeNodeRect:J,attributes:K,setNodeRef:L,listeners:M,isDragging:N,over:O,setActivatorNodeRef:P,transform:Q}=function(a){let{id:b,data:c,disabled:d=!1,attributes:e}=a,f=ap("Draggable"),{activators:g,activatorEvent:h,active:i,activeNodeRect:j,ariaDescribedById:k,draggableNodes:l,over:m}=(0,x.useContext)(bA),{role:n=bI,roleDescription:o="draggable",tabIndex:p=0}=null!=e?e:{},q=(null==i?void 0:i.id)===b,r=(0,x.useContext)(q?bF:bH),[s,t]=am(),[u,v]=am(),w=(0,x.useMemo)(()=>g.reduce((a,c)=>{let{eventName:d,handler:e}=c;return a[d]=a=>{e(a,b)},a},{}),[g,b]),y=ak(c);return ai(()=>(l.set(b,{id:b,key:f,node:s,activatorNode:u,data:y}),()=>{let a=l.get(b);a&&a.key===f&&l.delete(b)}),[l,b]),{active:i,activatorEvent:h,activeNodeRect:j,attributes:(0,x.useMemo)(()=>({role:n,tabIndex:p,"aria-disabled":d,"aria-pressed":!!q&&n===bI||void 0,"aria-roledescription":o,"aria-describedby":k.draggable}),[d,n,p,q,o,k.draggable]),isDragging:q,listeners:d?void 0:w,node:s,over:m,setNodeRef:t,setActivatorNodeRef:v,transform:r}}({id:k,data:B,attributes:{...bX,...g},disabled:z.draggable}),R=function(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return(0,x.useMemo)(()=>a=>{b.forEach(b=>b(a))},b)}(G,L),S=!!H,T=S&&!t&&bL(r)&&bL(v),U=!w&&N,V=U&&T?Q:null,W=T?null!=V?V:(null!=l?l:y)({rects:u,activeNodeRect:J,activeIndex:r,overIndex:v,index:A}):null,X=bL(r)&&bL(v)?j({id:k,items:p,activeIndex:r,overIndex:v}):A,Y=null==H?void 0:H.id,Z=(0,x.useRef)({activeId:Y,items:p,newIndex:X,containerId:q}),$=p!==Z.current.items,_=f({active:H,containerId:q,isDragging:N,isSorting:S,id:k,index:A,items:p,newIndex:Z.current.newIndex,previousItems:Z.current.items,previousContainerId:Z.current.containerId,transition:o,wasDragging:null!=Z.current.activeId}),aa=function(a){let{disabled:b,index:c,node:d,rect:e}=a,[f,g]=(0,x.useState)(null),h=(0,x.useRef)(c);return ai(()=>{if(!b&&c!==h.current&&d.current){let a=e.current;if(a){let b=aS(d.current,{ignoreTransform:!0}),c={x:a.left-b.left,y:a.top-b.top,scaleX:a.width/b.width,scaleY:a.height/b.height};(c.x||c.y)&&g(c)}}c!==h.current&&(h.current=c)},[b,c,d,e]),(0,x.useEffect)(()=>{f&&g(null)},[f]),f}({disabled:!_,index:A,node:E,rect:D});return(0,x.useEffect)(()=>{S&&Z.current.newIndex!==X&&(Z.current.newIndex=X),q!==Z.current.containerId&&(Z.current.containerId=q),p!==Z.current.items&&(Z.current.items=p)},[S,X,q,p]),(0,x.useEffect)(()=>{if(Y===Z.current.activeId)return;if(null!=Y&&null==Z.current.activeId){Z.current.activeId=Y;return}let a=setTimeout(()=>{Z.current.activeId=Y},50);return()=>clearTimeout(a)},[Y]),{active:H,activeIndex:r,attributes:K,data:B,rect:D,index:A,newIndex:X,items:p,isOver:F,isSorting:S,isDragging:N,listeners:M,node:E,overIndex:v,over:O,setNodeRef:R,setActivatorNodeRef:P,setDroppableNodeRef:G,setDraggableNodeRef:L,transform:null!=aa?aa:W,transition:aa||$&&Z.current.newIndex===A?bW:(!U||at(I))&&o&&(S||_)?av.Transition.toString({...o,property:bV}):void 0}}({id:a}),q={transform:av.Transform.toString(o),opacity:p?.5:1,zIndex:p?999:void 0},[r,s]=(0,x.useState)(!1),[t,u]=(0,x.useState)(c),v=()=>{let a=t.trim();a&&a!==c?g(a):u(c),s(!1)};return(0,w.jsxs)("div",{ref:n,style:q,className:`group flex min-w-0 items-center gap-2 rounded-lg border px-2.5 py-1.5 transition-all ${p?"border-primary/40 bg-panel shadow-md ring-1 ring-primary/20":"border-transparent bg-panel hover:border-border-subtle"}`,children:[(0,w.jsx)("span",{className:"flex size-5 shrink-0 items-center justify-center rounded bg-primary/10 text-[10px] font-bold text-primary",children:b+1}),(0,w.jsx)("button",{...k,...l,type:"button",className:"cursor-grab touch-none shrink-0 p-0.5 rounded text-text-muted/50 hover:text-text-main active:cursor-grabbing",title:"Drag to reorder",children:(0,w.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",children:[(0,w.jsx)("circle",{cx:"9",cy:"4",r:"1.5"}),(0,w.jsx)("circle",{cx:"15",cy:"4",r:"1.5"}),(0,w.jsx)("circle",{cx:"9",cy:"12",r:"1.5"}),(0,w.jsx)("circle",{cx:"15",cy:"12",r:"1.5"}),(0,w.jsx)("circle",{cx:"9",cy:"20",r:"1.5"}),(0,w.jsx)("circle",{cx:"15",cy:"20",r:"1.5"})]})}),r?(0,w.jsx)("input",{autoFocus:!0,value:t,onChange:a=>u(a.target.value),onBlur:v,onKeyDown:a=>{"Enter"===a.key&&v(),"Escape"===a.key&&(u(c),s(!1))},className:"min-w-0 flex-1 rounded border border-primary/40 bg-panel px-1.5 py-0.5 font-mono text-xs text-text-main outline-none"}):(0,w.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-1.5 cursor-text rounded px-1 py-0.5 hover:bg-black/[0.03] dark:hover:bg-white/[0.03]",onClick:()=>s(!0),title:"Click to edit",children:[(0,w.jsx)("code",{className:"min-w-0 flex-1 truncate font-mono text-xs text-text-main",children:c}),f?.[c]&&(0,w.jsx)(A.nh,{caps:f[c],size:11})]}),(0,w.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100",children:[(0,w.jsx)("button",{onClick:h,disabled:d,className:`rounded p-1 transition-colors ${d?"cursor-not-allowed text-text-muted/20":"text-text-muted hover:bg-black/5 hover:text-primary dark:hover:bg-white/5"}`,title:"Move up",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"arrow_upward"})}),(0,w.jsx)("button",{onClick:i,disabled:e,className:`rounded p-1 transition-colors ${e?"cursor-not-allowed text-text-muted/20":"text-text-muted hover:bg-black/5 hover:text-primary dark:hover:bg-white/5"}`,title:"Move down",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"arrow_downward"})})]}),(0,w.jsx)("button",{onClick:j,className:"shrink-0 rounded p-1 text-text-muted opacity-0 transition-all hover:bg-danger/10 hover:text-danger group-hover:opacity-100",title:"Remove model",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})}var b3=c(81449),b4=c(38930);let b5=[500,1e3,2e3,5e3,1e4,25e3,5e4,1e5],b6=a=>"number"==typeof a&&Number.isFinite(a)?`$${a.toFixed(3).replace(/\.?0+$/,"")}`:"—";function b7({models:a=[],strategyConfig:b={},onStrategyChange:c}){let[d,e]=(0,x.useState)(1e3),[f,g]=(0,x.useState)(null),[h,i]=(0,x.useState)(!1),[j,k]=(0,x.useState)("");(0,x.useRef)(0),b?.fallbackStrategy;let l=(a,b,c,d="")=>(0,w.jsxs)("div",{className:`rounded-lg border border-border-subtle bg-surface-2/50 px-2.5 py-2 ${d}`,children:[(0,w.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:a}),(0,w.jsx)("div",{className:"mt-0.5 text-sm font-semibold text-text-main",children:b}),c?(0,w.jsx)("div",{className:"text-[10px] text-text-muted",children:c}):null]});return(0,w.jsxs)("div",{className:"rounded-lg border border-border-subtle bg-surface-2/50 p-3",children:[(0,w.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary",children:"query_stats"}),(0,w.jsx)("span",{className:"text-xs font-medium text-text-main",children:"Combo Simulator"}),h&&(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"simulating…"})]}),(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"assumed input"}),(0,w.jsx)("select",{value:d,onChange:a=>e(Number(a.target.value)),className:"rounded border border-border-subtle bg-surface-1 px-1.5 py-0.5 text-[10px] text-text-main",children:b5.map(a=>(0,w.jsxs)("option",{value:a,children:[a>=1e3?`${a/1e3}k`:a," tok"]},a))})]})]}),f?(0,w.jsxs)("div",{className:"flex flex-col gap-2.5",children:[(0,w.jsxs)("div",{className:"grid grid-cols-2 gap-1.5 sm:grid-cols-4",children:[l("Strategy",G(f.strategy),`${f.members} member${1!==f.members?"s":""}`),l("Logical calls",f.calls.min===f.calls.max?`${f.calls.max}`:`${f.calls.min}–${f.calls.max}`,`per request \xb7 max ${f.calls.max}`),l("Provider fanout",String(f.maxProviderFanout),"parallel calls at peak"),l("Est. cost",f.calls.min===f.calls.max?b6(f.estimatedCost.worst):`${b6(f.estimatedCost.optimistic)}–${b6(f.estimatedCost.worst)}`,`${b6(f.perCallCost)} / call`)]}),f.budgetRisk?.rejected?(0,w.jsxs)("div",{className:"flex items-start gap-1.5 rounded-lg border border-red-500/30 bg-red-500/10 px-2.5 py-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px] text-red-400",children:"error"}),(0,w.jsxs)("p",{className:"text-[11px] text-red-300",children:["Will be rejected at runtime: worst-case cost ",b6(f.budgetRisk.estimatedCostUsd)," exceeds the budget limit ",b6(f.budgetRisk.limit)," (combo_cost_budget_exceeded)."]})]}):f.budgetsEnabled?(0,w.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg border border-emerald-500/30 bg-emerald-500/10 px-2.5 py-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px] text-emerald-400",children:"check_circle"}),(0,w.jsxs)("p",{className:"text-[11px] text-emerald-300",children:["Within the configured budget limit (",b6(f.budgetRisk.limit),")."]})]}):(0,w.jsx)("p",{className:"text-[10px] text-text-muted",children:"Budgets are off — unlimited cost/calls allowed."}),f.roleViolations.length>0&&(0,w.jsxs)("div",{className:"flex items-start gap-1.5 rounded-lg border border-amber-500/30 bg-amber-500/10 px-2.5 py-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px] text-amber-400",children:"warning"}),(0,w.jsx)("div",{className:"text-[11px] text-amber-300",children:f.roleViolations.map(a=>(0,w.jsx)("p",{children:a.reason},`${a.role}-${a.model}`))})]}),(0,w.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-border-subtle bg-surface-1/60 px-2.5 py-1.5",children:[(0,w.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:"Capabilities"}),(0,w.jsx)(b4.default,{caps:{thinking:f.capabilities?.thinking,vision:f.capabilities?.vision?.input,tools:f.capabilities?.tools,pdf:f.capabilities?.pdf,audio:f.capabilities?.audio?.input},size:13}),f.capabilities?.contextWindow?(0,w.jsxs)("span",{className:"ml-auto text-[10px] text-text-muted",children:["ctx ",(f.capabilities.contextWindow/1e3).toFixed(0),"k \xb7 max out"," ",f.capabilities.maxOutput?`${Math.round(f.capabilities.maxOutput/1e3)}k`:"—"]}):null]}),(0,w.jsx)("div",{className:"flex flex-col gap-1",children:f.memberRows.map(a=>{let b=(0,b3.vT)(a.latency?.p95,a.latency?.sampleCount);return(0,w.jsxs)("div",{className:"flex items-center gap-2 rounded-md border border-border-subtle bg-surface-1/40 px-2 py-1.5",children:[(0,w.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono text-[10px] text-text-main",children:a.fullModel}),a.roles.length>0&&(0,w.jsx)("span",{className:"rounded bg-primary/15 px-1 py-0.5 text-[9px] font-medium uppercase tracking-wide text-primary",children:a.roles.join("+")}),(0,w.jsxs)("span",{className:"text-[10px] text-text-muted",children:[b6(a.costPerCall),"/call"]}),(0,w.jsx)("span",{className:`w-24 text-right text-[10px] ${b.insufficient?"text-amber-400":"text-text-muted"}`,title:b.insufficient?`${a.latency?.sampleCount??0} latency samples — need ≥ 10`:"",children:b.value})]},a.fullModel)})}),(0,w.jsx)("p",{className:"text-[9px] leading-relaxed text-text-muted",children:"Worst-case calls match the runtime call-cap budget; cost uses the same per-leaf formula as the runtime budget guard (output capped at 4k tokens/call, input assumed above). Latency = p95 over the last 30d of usage for that model."})]}):(0,w.jsx)("p",{className:"py-2 text-center text-[11px] text-text-muted",children:j||"Add at least one model to preview the simulation."})]})}function b8({isOpen:a,combo:b,onClose:c,onSave:d,activeProviders:e,modelCaps:f={},kindFilter:g=null,comboStrategies:h={}}){let[i,j]=(0,x.useState)(b?.name||""),[k,l]=(0,x.useState)(b?.models||[]),[m,n]=(0,x.useState)(b&&h?.[b.name]?.fallbackStrategy||b?.strategyConfig?.fallbackStrategy||"fallback"),[o,p]=(0,x.useState)(!1),[q,r]=(0,x.useState)(!1),[s,t]=(0,x.useState)(""),[u,v]=(0,x.useState)({}),[y,z]=(0,x.useState)(!0),[B,E]=(0,x.useState)(!0),[G,H]=(0,x.useState)(60),[I,J]=(0,x.useState)(""),[K,L]=(0,x.useState)(!1),[M,N]=(0,x.useState)(""),[O,P]=(0,x.useState)(a),Q=function(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return(0,x.useMemo)(()=>[...b].filter(a=>null!=a),[...b])}(aF(bf,{activationConstraint:{distance:5}}),aF(ba,{coordinateGetter:b$})),R=k.map((a,b)=>({uid:`item-${b}`,model:a})),S=a=>a.trim()?C.test(a)?(t(""),!0):(t("Only letters, numbers, -, _ and . allowed"),!1):(t("Name is required"),!1),T=async()=>{if(!S(i))return;r(!0);let a={...b?.strategyConfig||{},fallbackStrategy:m};"smart-routing"===m&&(a.smartRouting={cookiePoolEnabled:y,intentDetection:{confidenceThreshold:G/100,urlPatternBoost:B,...I.trim()?{keywords:I.split(",").map(a=>a.trim()).filter(Boolean)}:{},llmClassifierFallback:{enabled:K,...M.trim()?{model:M.trim()}:{}}}}),await d({name:i.trim(),models:k,strategyConfig:a}),r(!1)},U=!!b;return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(A.aF,{isOpen:a,onClose:c,title:U?"Edit Combo":"Create Combo",size:"lg",children:(0,w.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)(A.pd,{label:"Combo Name",value:i,onChange:a=>{let b=a.target.value;j(b),b?S(b):t("")},placeholder:"my-combo",error:s}),(0,w.jsxs)("div",{className:"mt-1.5 flex items-center gap-2",children:[(0,w.jsx)("p",{className:"text-[10px] text-text-muted",children:"Use this name as the model in your client:"}),i.trim()&&(0,w.jsx)("code",{className:"rounded bg-primary/10 px-1.5 py-0.5 font-mono text-[10px] text-primary",children:i.trim()})]})]}),(0,w.jsxs)("div",{children:[(0,w.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("label",{className:"text-sm font-medium text-text-main",children:"Models"}),k.length>0&&(0,w.jsxs)(A.Ex,{variant:"info",size:"sm",children:[k.length," model",1!==k.length?"s":""]})]}),(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"Drag to reorder priority"})]}),0===k.length?(0,w.jsxs)("div",{className:"flex flex-col items-center justify-center py-8 border border-dashed border-border rounded-lg bg-surface-2/50",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-text-muted text-2xl mb-2",children:"layers"}),(0,w.jsx)("p",{className:"text-xs text-text-muted mb-3",children:"Add models to build your combo"}),(0,w.jsx)(A.$n,{size:"sm",variant:"secondary",icon:"add",onClick:()=>p(!0),children:"Add First Model"})]}):(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(bG,{sensors:Q,collisionDetection:aN,onDragEnd:a=>{let{active:b,over:c}=a;if(c&&b.id!==c.id){let a=R.findIndex(a=>a.uid===b.id),d=R.findIndex(a=>a.uid===c.id);-1!==a&&-1!==d&&l(b=>bK(b,a,d))}},modifiers:[b1,b0],children:(0,w.jsx)(bR,{items:R.map(a=>a.uid),strategy:bO,children:(0,w.jsx)("div",{className:"flex max-h-[45vh] min-w-0 flex-col gap-1 overflow-y-auto rounded-lg bg-surface-2/30 p-1.5",children:R.map(({uid:a,model:b},c)=>(0,w.jsx)(b2,{id:a,index:c,model:b,modelCaps:f,isFirst:0===c,isLast:c===R.length-1,onEdit:a=>{let b=[...k];b[c]=a,l(b)},onMoveUp:()=>(a=>{if(0===a)return;let b=[...k];[b[a-1],b[a]]=[b[a],b[a-1]],l(b)})(c),onMoveDown:()=>(a=>{if(a===k.length-1)return;let b=[...k];[b[a],b[a+1]]=[b[a+1],b[a]],l(b)})(c),onRemove:()=>{l(a=>a.filter((a,b)=>b!==c))}},a))})})}),(0,w.jsxs)("button",{onClick:()=>p(!0),className:"w-full mt-2 py-2 border border-dashed border-primary/30 rounded-lg text-xs text-primary font-medium hover:border-primary hover:bg-primary/5 transition-colors flex items-center justify-center gap-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"add"}),"Add Model"]})]})]}),(0,w.jsxs)("div",{children:[(0,w.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,w.jsx)("label",{className:"text-sm font-medium text-text-main",children:"Strategy"}),(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"How the combo dispatches requests"})]}),(0,w.jsx)("div",{className:"grid grid-cols-2 gap-1.5 sm:grid-cols-3 lg:grid-cols-6",children:D.map(a=>{let b=m===a.value,c=F(a.value);return(0,w.jsxs)("button",{type:"button",onClick:()=>n(a.value),title:a.desc,className:`flex flex-col items-center gap-1 rounded-lg border px-2 py-1.5 text-[11px] transition-colors ${b?"border-primary/50 bg-primary/10 text-primary":"border-border-subtle bg-surface-2/50 text-text-muted hover:border-border hover:text-text-main"}`,children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[16px]",style:{color:b?void 0:c.color},children:a.icon}),(0,w.jsx)("span",{className:"font-medium",children:a.label})]},a.value)})})]}),"smart-routing"===m&&(0,w.jsxs)("div",{className:"flex flex-col gap-2.5 rounded-lg border border-primary/20 bg-primary/[0.04] px-3 py-2.5",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[16px]",style:{color:"#EC4899"},children:"alt_route"}),(0,w.jsx)("span",{className:"text-xs font-medium text-text-main",children:"Smart Routing"}),(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"Routes each request by tool-calling need & research intent"})]}),(0,w.jsxs)("label",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,w.jsx)("input",{type:"checkbox",checked:y,onChange:a=>z(a.target.checked),className:"rounded border-border accent-primary"}),(0,w.jsx)("span",{className:"text-[11px] text-text-muted",children:"Route research intents to web (cookie) providers first"})]}),(0,w.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,w.jsx)("label",{className:"text-[10px] text-text-muted",children:"Research keywords (comma-separated — leave empty for defaults)"}),(0,w.jsx)("textarea",{value:I,onChange:a=>J(a.target.value),rows:2,placeholder:"research, compare, bandingkan, cari sumber, jurnal, ...",className:"resize-none rounded border border-border bg-background px-2 py-1.5 font-mono text-[11px] focus:border-primary focus:outline-none"})]}),(0,w.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,w.jsxs)("label",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,w.jsx)("input",{type:"checkbox",checked:B,onChange:a=>E(a.target.checked),className:"rounded border-border accent-primary"}),(0,w.jsx)("span",{className:"text-[11px] text-text-muted",children:"Treat prompts containing a URL as research"})]}),(0,w.jsxs)("label",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,w.jsx)("input",{type:"checkbox",checked:K,onChange:a=>L(a.target.checked),className:"rounded border-border accent-primary"}),(0,w.jsx)("span",{className:"text-[11px] text-text-muted",children:"LLM classifier fallback for ambiguous prompts"})]}),K&&(0,w.jsx)("input",{value:M,onChange:a=>N(a.target.value),placeholder:"kr/claude-haiku-4.5",className:"rounded border border-border bg-background px-2 py-1 font-mono text-[11px] focus:border-primary focus:outline-none"})]}),(0,w.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,w.jsxs)("div",{className:"flex items-center justify-between",children:[(0,w.jsx)("label",{className:"text-[10px] text-text-muted",children:"Heuristic confidence threshold"}),(0,w.jsxs)("span",{className:"font-mono text-[10px] text-primary",children:[G,"%"]})]}),(0,w.jsx)("input",{type:"range",min:0,max:100,value:G,onChange:a=>H(Number(a.target.value)),className:"w-full accent-primary"})]})]}),k.length>0&&(0,w.jsx)(b7,{models:k,strategyConfig:{fallbackStrategy:m}}),k.length>=2&&(0,w.jsxs)("div",{className:"rounded-lg border border-border-subtle bg-surface-2/50 px-3 py-2",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"lightbulb"}),(0,w.jsx)("span",{className:"text-xs font-medium text-text-main",children:"Strategy Tips"})]}),(0,w.jsx)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-2",children:D.map(a=>(0,w.jsxs)("div",{className:"flex items-start gap-1.5 text-[11px] text-text-muted",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[12px] mt-0.5 text-primary/60",children:a.icon}),(0,w.jsxs)("span",{children:[(0,w.jsx)("span",{className:"font-medium text-text-main",children:a.label})," — ",a.desc]})]},a.value))}),(0,w.jsx)("p",{className:"mt-1.5 text-[10px] text-text-muted",children:"Set strategy after creating the combo from the Combos tab."})]}),(0,w.jsxs)("div",{className:"flex flex-col gap-2 pt-1 sm:flex-row",children:[(0,w.jsx)(A.$n,{onClick:c,variant:"ghost",fullWidth:!0,size:"sm",children:"Cancel"}),(0,w.jsx)(A.$n,{onClick:T,fullWidth:!0,size:"sm",icon:U?"save":"add",disabled:!i.trim()||!!s||q,children:q?"Saving...":U?"Save Changes":"Create Combo"})]})]})}),(0,w.jsx)(A.rq,{isOpen:o,onClose:()=>p(!1),onSelect:a=>{l(b=>b.includes(a.value)?b:[...b,a.value])},onDeselect:a=>{l(b=>b.filter(b=>b!==a.value))},activeProviders:e,modelAliases:u,title:"Add Model to Combo",kindFilter:g,addedModelValues:k,closeOnSelect:!1})]})}var b9=c(83352);let ca=[500,1e3,2e3,5e3,1e4,25e3,5e4,1e5],cb=D.map(a=>a.value),cc={latency:"Latency",cost:"Cost",reliability:"Reliability"};function cd({activeProviders:a=[]}){let b,[c,d]=(0,x.useState)([]),[e,f]=(0,x.useState)(""),[g,h]=(0,x.useState)(1e3),[i,j]=(0,x.useState)({latency:40,cost:40,reliability:20}),[k,l]=(0,x.useState)([...cb]),[m,n]=(0,x.useState)(null),[o,p]=(0,x.useState)(!1),[q,r]=(0,x.useState)(""),[s,t]=(0,x.useState)([]),[u,v]=(0,x.useState)(!1),[y,z]=(0,x.useState)({}),A=(0,x.useRef)(0),B=a=>{d(a),f(a.join(", "))};(0,x.useEffect)(()=>{if(0===c.length){n(null),r("");return}if(k.length<1)return;let a=++A.current;p(!0),r("");let b=setTimeout(async()=>{try{let b,d,e=await fetch("/api/combos/lab",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({models:c,inputTokens:g,weights:(d=(b={latency:i.latency,cost:i.cost,reliability:i.reliability}).latency+b.cost+b.reliability)<=0?{latency:.4,cost:.4,reliability:.2}:{latency:b.latency/d,cost:b.cost/d,reliability:b.reliability/d},strategies:k})});if(!e.ok){let a=await e.json().catch(()=>({}));throw Error(a?.error||"Analysis failed")}let f=await e.json();a===A.current&&n(f)}catch(b){a===A.current&&(r(b?.message||"Analysis failed"),n(null))}finally{a===A.current&&p(!1)}},350);return()=>clearTimeout(b)},[c.join("|"),g,i.latency,i.cost,i.reliability,k.join("|")]);let C=m?.comparison||[],E=Math.max(...C.map(a=>a.score||0),1e-9),H=m?.dataCoverage;return(0,w.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,w.jsxs)("div",{className:"rounded-lg border border-border-subtle bg-surface-2/50 p-3",children:[(0,w.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary",children:"science"}),(0,w.jsx)("span",{className:"text-xs font-medium text-text-main",children:"Combo Lab — what-if analysis"}),o&&(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"analyzing…"})]}),(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"assumed input"}),(0,w.jsx)("select",{value:g,onChange:a=>h(Number(a.target.value)),className:"rounded border border-border-subtle bg-surface-1 px-1.5 py-0.5 text-[10px] text-text-main",children:ca.map(a=>(0,w.jsxs)("option",{value:a,children:[a>=1e3?`${a/1e3}k`:a," tok"]},a))})]})]}),(0,w.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,w.jsxs)("div",{className:"flex items-stretch gap-1.5",children:[(0,w.jsx)("input",{list:"combo-lab-models",value:e,onChange:a=>{var b;f(b=a.target.value),d([...new Set(b.split(/[\n,]+/).map(a=>a.trim()).filter(Boolean))])},placeholder:"provider/model, provider/model — e.g. cc/claude-opus-4-7, gh/gpt-5.3-codex",className:"min-w-0 flex-1 rounded-lg border border-border-subtle bg-surface-1 px-2.5 py-1.5 font-mono text-[11px] text-text-main placeholder:text-text-muted/60 focus:border-primary/50 focus:outline-none"}),(0,w.jsxs)("button",{type:"button",onClick:()=>v(!0),className:"flex shrink-0 items-center gap-1 rounded-lg border border-dashed border-border px-2.5 py-1.5 text-[11px] font-medium text-primary transition-colors hover:border-primary/50 hover:bg-primary/5",title:"Pick models from the provider catalog (same picker as Add Model in combos)",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"add"}),"Add Model"]})]}),(0,w.jsx)("datalist",{id:"combo-lab-models",children:s.map(a=>(0,w.jsx)("option",{value:a},a))}),c.length>0&&(0,w.jsx)("div",{className:"flex flex-wrap gap-1",children:c.map(a=>(0,w.jsxs)("span",{className:"flex items-center gap-1 rounded bg-surface-1 px-1.5 py-0.5 font-mono text-[10px] text-text-main",children:[a,(0,w.jsx)("button",{onClick:()=>{B(c.filter(b=>b!==a))},className:"text-text-muted hover:text-red-400",title:"Remove",children:"\xd7"})]},a))})]}),(0,w.jsxs)("div",{className:"mt-2.5 flex flex-col gap-2.5 sm:flex-row sm:items-start sm:justify-between",children:[(0,w.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,w.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:"Axis weights"}),["latency","cost","reliability"].map(a=>(0,w.jsxs)("label",{className:"flex items-center gap-2 text-[11px] text-text-muted",children:[(0,w.jsx)("span",{className:"w-16",children:cc[a]}),(0,w.jsx)("input",{type:"range",min:0,max:100,step:5,value:i[a],onChange:b=>j(c=>({...c,[a]:Number(b.target.value)})),className:"h-1 w-32 accent-primary"}),(0,w.jsxs)("span",{className:"w-8 text-right font-mono text-[10px] text-text-main",children:[i[a],"%"]})]},a))]}),(0,w.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,w.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:"Compare strategies"}),(0,w.jsx)("div",{className:"flex flex-wrap gap-1.5",children:D.map(a=>{let b=k.includes(a.value),c=F(a.value);return(0,w.jsxs)("button",{type:"button",onClick:()=>{var b;return b=a.value,void l(a=>a.includes(b)?a.filter(a=>a!==b):[...a,b])},title:a.desc,className:`flex items-center gap-1 rounded-md border px-1.5 py-1 text-[10px] transition-colors ${b?"border-primary/40 bg-primary/10 text-text-main":"border-border-subtle bg-surface-1 text-text-muted/60 hover:text-text-muted"}`,children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[13px]",style:{color:b?void 0:c.color},children:a.icon}),a.label]},a.value)})})]})]})]}),0===c.length?(0,w.jsx)("p",{className:"rounded-lg border border-border-subtle bg-surface-2/50 p-4 text-center text-[11px] text-text-muted",children:"Enter at least one model (provider/model) to compare strategies against historical latency, cost and reliability."}):q?(0,w.jsx)("p",{className:"rounded-lg border border-red-500/30 bg-red-500/10 px-3 py-2 text-[11px] text-red-300",children:q}):m?(0,w.jsxs)("div",{className:"flex flex-col gap-2.5",children:[m.recommendation&&(0,w.jsxs)("div",{className:"flex items-start gap-2 rounded-lg border border-emerald-500/30 bg-emerald-500/10 px-3 py-2.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px] text-emerald-400",children:"recommend"}),(0,w.jsxs)("div",{className:"flex min-w-0 flex-col gap-0.5",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsxs)("span",{className:"text-xs font-semibold text-text-main",children:["Recommended: ",G(m.recommendation.strategy)]}),(b=F(m.recommendation.strategy),(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",style:{color:b.color},children:b.icon}))]}),(0,w.jsx)("p",{className:"text-[11px] text-emerald-200/80",children:m.recommendation.reason}),m.recommendation.runnerUp&&(0,w.jsxs)("p",{className:"text-[10px] text-text-muted",children:["Runner-up: ",G(m.recommendation.runnerUp.strategy)," (score ",(100*m.recommendation.runnerUp.score).toFixed(0),")"]})]})]}),m.atRiskProviders?.length>0&&(0,w.jsxs)("div",{className:"flex items-start gap-1.5 rounded-lg border border-amber-500/30 bg-amber-500/10 px-2.5 py-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px] text-amber-400",children:"warning"}),(0,w.jsxs)("p",{className:"text-[11px] text-amber-300",children:["Provider",m.atRiskProviders.length>1?"s":""," currently locked or breaker-open:"," ",m.atRiskProviders.join(", ")," — expect failures on those members right now."]})]}),H&&(0,w.jsxs)("p",{className:"text-[10px] text-text-muted",children:["Data coverage: latency ",H.latency.known,"/",H.latency.total," \xb7 reliability ",H.reliability.known,"/",H.reliability.total," \xb7 pricing"," ",H.cost.known,"/",H.cost.total," member",1!==H.cost.total?"s":""," (30d usage history).",H.reliability.known<H.reliability.total&&" Members without history are assumed 90% reliable."]}),(0,w.jsx)("div",{className:"overflow-x-auto rounded-lg border border-border-subtle bg-surface-2/50",children:(0,w.jsxs)("table",{className:"w-full min-w-[640px] text-left",children:[(0,w.jsx)("thead",{children:(0,w.jsxs)("tr",{className:"border-b border-border-subtle text-[9px] uppercase tracking-wide text-text-muted",children:[(0,w.jsx)("th",{className:"px-2.5 py-1.5 font-medium",children:"#"}),(0,w.jsx)("th",{className:"px-2.5 py-1.5 font-medium",children:"Strategy"}),(0,w.jsx)("th",{className:"px-2.5 py-1.5 font-medium",children:"Score"}),(0,w.jsx)("th",{className:"px-2.5 py-1.5 font-medium",children:"Calls (typ)"}),(0,w.jsx)("th",{className:"px-2.5 py-1.5 font-medium",children:"Latency p95"}),(0,w.jsx)("th",{className:"px-2.5 py-1.5 font-medium",children:"Cost / req"}),(0,w.jsx)("th",{className:"px-2.5 py-1.5 font-medium",children:"Reliability"})]})}),(0,w.jsx)("tbody",{children:C.map((a,b)=>{let c,d,e,f=F(a.strategy);(0,b3.vT)(a.wallClockP95Ms,null);let g=m.recommendation&&a.strategy===m.recommendation.strategy;return(0,w.jsxs)("tr",{className:`border-b border-border-subtle/50 last:border-0 ${g?"bg-emerald-500/5":""}`,children:[(0,w.jsx)("td",{className:"px-2.5 py-1.5 text-[11px] text-text-muted",children:b+1}),(0,w.jsx)("td",{className:"px-2.5 py-1.5",children:(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[15px]",style:{color:f.color},children:f.icon}),(0,w.jsx)("span",{className:"text-[11px] font-medium text-text-main",children:G(a.strategy)}),g&&(0,w.jsx)("span",{className:"rounded bg-emerald-500/20 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-emerald-400",children:"Best"}),a.invalid&&(0,w.jsx)("span",{className:"rounded bg-red-500/20 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-red-400",title:a.invalidReasons.join(" \xb7 "),children:"Invalid"})]})}),(0,w.jsx)("td",{className:"px-2.5 py-1.5",children:(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("div",{className:"h-1.5 w-16 overflow-hidden rounded bg-surface-1",children:(0,w.jsx)("div",{className:"h-full rounded bg-primary",style:{width:`${Math.round(a.score/E*100)}%`}})}),(0,w.jsx)("span",{className:"text-[10px] font-mono text-text-main",children:null!=a.score?a.score.toFixed(2):"—"})]})}),(0,w.jsxs)("td",{className:"px-2.5 py-1.5 text-[11px] text-text-muted",children:["number"==typeof(c=a.expectedCalls)&&Number.isFinite(c)?Number.isInteger(c)?String(c):c.toFixed(1):"—",a.calls&&a.calls.min!==a.calls.max&&(0,w.jsxs)("span",{className:"text-[9px] text-text-muted/70",children:[" (",a.calls.min,"–",a.calls.max,")"]})]}),(0,w.jsx)("td",{className:"px-2.5 py-1.5 text-[11px] text-text-main",title:null!=a.wallClockP95Ms?`${a.wallClockP95Ms}ms`:"",children:null!=a.wallClockP95Ms?(0,b3.Se)(a.wallClockP95Ms):"—"}),(0,w.jsx)("td",{className:"px-2.5 py-1.5 text-[11px] text-text-main",children:"number"==typeof(d=a.expectedCostUsd)&&Number.isFinite(d)?`$${d.toFixed(4).replace(/\.?0+$/,"")}`:"—"}),(0,w.jsx)("td",{className:"px-2.5 py-1.5 text-[11px] text-text-main",children:"number"==typeof(e=a.reliability)&&Number.isFinite(e)?`${(100*e).toFixed(1)}%`:"—"})]},a.strategy)})})]})}),(0,w.jsxs)("p",{className:"text-[9px] leading-relaxed text-text-muted",children:["Expected = typical request (midpoint of the runtime call range). Cost uses the same per-leaf formula as the runtime budget guard (output capped 4k tokens/call, input assumed ",g,"). Latency = expected wall-clock p95 including parallel fanout (fusion panel, swarm workers). Reliability = success rate from 30d usage history per model. Axis scores are normalized relative to the best strategy; weights renormalize over axes with data."]})]}):(0,w.jsx)("p",{className:"rounded-lg border border-border-subtle bg-surface-2/50 p-4 text-center text-[11px] text-text-muted",children:"Analyzing…"}),(0,w.jsx)(b9.default,{isOpen:u,onClose:()=>v(!1),onSelect:a=>{let b=a?.value;!b||c.includes(b)||B([...c,b])},onDeselect:a=>{let b=a?.value;b&&B(c.filter(a=>a!==b))},activeProviders:a,modelAliases:y,addedModelValues:c,closeOnSelect:!1,title:"Add Model to Combo Lab"})]})}let ce=[{value:"overview",label:"Overview"},{value:"combos",label:"Combos"},{value:"templates",label:"Templates"},{value:"lab",label:"Lab"}];function cf(){let a=(0,z.useRouter)(),b=(0,z.useSearchParams)().get("tab")||"overview",[c,d]=(0,x.useState)([]),[e,f]=(0,x.useState)(!0),[g,h]=(0,x.useState)(!1),[i,j]=(0,x.useState)(null),[k,l]=(0,x.useState)([]),[m,n]=(0,x.useState)({}),[o,p]=(0,x.useState)({}),[q,r]=(0,x.useState)({}),[s,t]=(0,x.useState)(null),{copied:u,copy:v}=(0,B.C)(),y=(0,x.useCallback)(async()=>{try{let[a,b,c,e]=await Promise.all([fetch("/api/combos"),fetch("/api/providers"),fetch("/api/settings"),fetch("/api/models")]),f=await a.json(),g=await b.json(),h=c.ok?await c.json():{};if(a.ok&&d((f.combos||[]).filter(a=>!a.kind||"llm"===a.kind)),b.ok&&l(g.connections||[]),e.ok){let a=await e.json(),b={},c={};for(let d of a.models||[]){d.caps&&(b[d.fullModel]=d.caps);let a=(d.fullModel||"").split("/").slice(1).join("/");a&&d.provider&&(c[a]||(c[a]=[]),c[a].includes(d.provider)||c[a].push(d.provider))}p(b),r(c)}n(h.comboStrategies||{})}catch(a){console.log("Error fetching data:",a)}finally{f(!1)}},[]),C=b=>a.push(`/dashboard/combos?tab=${b}`),D=async a=>{try{let b=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(b.ok)await y(),h(!1);else{let a=await b.json();alert(a.error||"Failed to create combo")}}catch(a){console.log("Error creating combo:",a)}},E=async(a,b)=>{try{let c=await fetch(`/api/combos/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(c.ok){let a=b.strategyConfig?.fallbackStrategy,c=i?.name,d=b.name?.trim();a&&(d&&d!==c&&m[c]&&await F(c,{fallbackStrategy:"fallback"}),d&&await F(d,{fallbackStrategy:a})),await y(),j(null)}else{let a=await c.json();alert(a.error||"Failed to update combo")}}catch(a){console.log("Error updating combo:",a)}},F=async(a,b)=>{try{let d=m[a]||{},e={...d,...b},f=e.fallbackStrategy,g=new Set(["fallbackStrategy","thinking","autoScale","budgets",...{fusion:["judgeModel","fusionTuning"],swarm:["managerModel","staffModel","auditModel","workerCount","swarmTuning","enableTelemetry"],cascade:["cascade"],"smart-routing":["smartRouting"],fallback:[],"round-robin":[]}[f]||[]]),h={};for(let[a,b]of Object.entries(e))g.has(a)&&(h[a]=b);let i=Object.keys(d).some(a=>"fallbackStrategy"!==a&&null!=d[a]&&""!==d[a]),j=Object.keys(h).some(a=>"fallbackStrategy"!==a),k="fallback"===h.fallbackStrategy&&i&&!j;if(!k&&("swarm"===h.fallbackStrategy||"fusion"===h.fallbackStrategy)){let b=c.find(b=>b.name===a),d=b?.models||[];try{let a=await fetch("/api/combos/validate-roles",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({strategy:h.fallbackStrategy,managerModel:h.managerModel,staffModel:h.staffModel,auditModel:h.auditModel,judgeModel:h.judgeModel,panel:d})});if(a.ok){let b=await a.json();if(!b.valid&&Array.isArray(b.violations)&&b.violations.length>0){let a=b.violations.map(a=>`${a.role}: ${a.reason}`).join("\n");alert(`Cannot save strategy — invalid role models:
|
|
1
|
+
(()=>{var a={};a.id=3649,a.ids=[3649],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},643:a=>{"use strict";a.exports=require("node:perf_hooks")},1708:a=>{"use strict";a.exports=require("node:process")},1932:a=>{"use strict";a.exports=require("url")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3725:a=>{"use strict";a.exports=require("wreq-js")},4573:a=>{"use strict";a.exports=require("node:buffer")},7066:a=>{"use strict";a.exports=require("node:tty")},7665:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>O,handler:()=>Q,routeModule:()=>P});var d=c(7553),e=c(84006),f=c(67798),g=c(34775),h=c(99373),i=c(73461),j=c(1020),k=c(26349),l=c(54365),m=c(16023),n=c(14965),o=c(63747),p=c(24235),q=c(23938),r=c(261),s=c(66758),t=c(77243),u=c(26713),v=c(37527),w=c(22820),x=c(88216),y=c(47929),z=c(79551),A=c(71797),B=c(89125),C=c(86439),D=c(77068),E=c(27269),F=c(37525),G=c(61287),H=c(81494),I=c(70722),J=c(70753),K=c(43954),L=c(17891),M={};for(let a in G)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(M[a]=()=>G[a]);c.d(b,M);let N={children:["",{children:["(dashboard)",{children:["dashboard",{children:["combos",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,35447)),"/home/runner/work/ExtremeRouter/ExtremeRouter/src/app/(dashboard)/dashboard/combos/page.js"]}]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"]},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,30508)),"/home/runner/work/ExtremeRouter/ExtremeRouter/src/app/(dashboard)/layout.js"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,70440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,50385)),"/home/runner/work/ExtremeRouter/ExtremeRouter/src/app/layout.js"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,70440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:"/manifest.webmanifest"}},[]]}.children,O={require:c,loadChunk:()=>Promise.resolve()},P=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/(dashboard)/dashboard/combos/page",pathname:"/dashboard/combos",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:N},distDir:".next-cli-build",relativeProjectDir:""});async function Q(a,b,d){var M,R,S,T,U;d.requestMeta&&(0,h.setRequestMeta)(a,d.requestMeta),P.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let V=!!(0,h.getRequestMeta)(a,"minimalMode"),W="/(dashboard)/dashboard/combos/page";"/index"===W&&(W="/");let X=await P.prepare(a,b,{srcPage:W,multiZoneDraftMode:!1});if(!X)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Y,query:Z,params:$,pageIsDynamic:_,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,serverActionsManifest:ad,clientReferenceManifest:ae,subresourceIntegrityManifest:af,prerenderManifest:ag,isDraftMode:ah,resolvedPathname:ai,revalidateOnlyGenerated:aj,routerServerContext:ak,nextConfig:al,parsedUrl:am,interceptionRoutePatterns:an,deploymentId:ao,clientAssetToken:ap}=X,aq=(0,r.normalizeAppPath)(W),{isOnDemandRevalidate:ar}=X,as=al.experimental.ppr&&!al.cacheComponents&&(0,K.isInterceptionRouteAppPath)(ai)?null:P.match(ai,ag),at=(null==as?void 0:as.route)??null,au=!!ag.routes[ai],av=a.headers["user-agent"]||"",aw=(0,u.getBotType)(av),ax=(0,q.isHtmlBotRequest)(a),ay=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[t.NEXT_ROUTER_PREFETCH_HEADER],az=(0,h.getRequestMeta)(a,"isRSCRequest")??(0,n.f)(a.headers[t.RSC_HEADER]),aA=(0,s.getIsPossibleServerAction)(a),aB=(0,m.checkIsAppPPREnabled)(al.experimental.ppr),aC=a.headers[y.NEXT_RESUME_STATE_LENGTH_HEADER];if(!(0,h.getRequestMeta)(a,"postponed")&&V&&aB&&aA&&aC&&"string"==typeof aC){let e=parseInt(aC,10),{maxPostponedStateSize:f,maxPostponedStateSizeBytes:g}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize);if(!isNaN(e)&&e>0){if(e>g)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(f)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let i="1 MB",j=(null==(U=al.experimental.serverActions)?void 0:U.bodySizeLimit)??i,k=e+(j!==i?c(95726).parse(j):1048576),l=await (0,E.readBodyWithSizeLimit)(a,k);if(null===l)return b.statusCode=413,b.end("Request body exceeded limit. To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;if(l.length>=e){let b=l.subarray(0,e).toString("utf8");(0,h.addRequestMeta)(a,"postponed",b);let c=l.subarray(e);(0,h.addRequestMeta)(a,"actionBody",c)}else throw Object.defineProperty(Error(`invariant: expected ${e} bytes of postponed state but only received ${l.length} bytes`),"__NEXT_ERROR_CODE",{value:"E979",enumerable:!1,configurable:!0})}}if(!(0,h.getRequestMeta)(a,"postponed")&&aB&&"1"===a.headers[y.NEXT_RESUME_HEADER]&&"POST"===a.method){let{maxPostponedStateSize:c,maxPostponedStateSizeBytes:e}=(0,E.getMaxPostponedStateSize)(al.experimental.maxPostponedStateSize),f=await (0,E.readBodyWithSizeLimit)(a,e);if(null===f)return b.statusCode=413,b.end((0,E.getPostponedStateExceededErrorMessage)(c)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let g=f.toString("utf8");(0,h.addRequestMeta)(a,"postponed",g)}let aD=!0===P.isDev||!0===al.experimental.exposeTestingApiInProductionBuild,aE=aD&&("1"===a.headers[t.NEXT_INSTANT_PREFETCH_HEADER]||!(0,n.f)(a.headers[t.RSC_HEADER])&&"string"==typeof a.headers.cookie&&a.headers.cookie.includes(t.NEXT_INSTANT_TEST_COOKIE+"=")),aF=(aB||aE)&&((null==(M=ag.routes[aq]??ag.dynamicRoutes[aq])?void 0:M.renderingMode)==="PARTIALLY_STATIC"||aE&&(aD||(null==ak?void 0:ak.experimentalTestProxy)===!0)),aG=aE&&aF,aH=aG&&!0===P.isDev,aI=!1,aJ=aF?(0,h.getRequestMeta)(a,"postponed"):void 0,aK=null==(R=ag.routes[ai])?void 0:R.prefetchDataRoute,aL=aF&&az&&!ay&&!aK;V&&(aL=aL&&!!aJ);let aM=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),aN=(!aw||!aF)&&(!av||(0,q.shouldServeStreamingMetadata)(av,al.htmlLimitedBots)),aO=!!((at||au||ag.routes[aq])&&!(aw&&aF)),aP=aF&&!0===al.cacheComponents,aQ=!0===P.isDev||!aO||"string"==typeof aJ||(aP&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aL&&!V:aL),aR=!!aw&&aF,aS=(null==at?void 0:at.remainingPrerenderableParams)??[],aT=(null==at?void 0:at.fallback)===null&&((null==(S=at.fallbackRootParams)?void 0:S.length)??0)>0,aU=null;if(!ah&&aO&&!aQ&&!aA&&!aJ&&!aL){let a=as?"string"==typeof(null==at?void 0:at.fallback)?at.fallback:as.source:null;if(!0===al.experimental.partialFallbacks&&a&&(null==at?void 0:at.fallbackRouteParams)&&!aT){if(aS.length>0){let b,c=(b=new Map(aS.map(a=>[a.paramName,a])),a.split("/").map(a=>{let c=(0,L.getSegmentParam)(a);if(!c)return a;let d=b.get(c.paramName);if(!d)return a;let e=null==$?void 0:$[d.paramName];if(!e)return a;let f=Array.isArray(e)?e.map(a=>encodeURIComponent(a)).join("/"):encodeURIComponent(e);return a.replace((0,o.buildDynamicSegmentPlaceholder)(d),f)}).join("/")||"/");aU=c!==a?c:null}}else aU=ai}let aV=aU;!aV&&(P.isDev||aO&&_&&(null==at?void 0:at.fallbackRouteParams)&&!aA)&&(aV=ai),P.isDev||ah||!aO||!az||aL||(0,k.d)(a.headers);let aW={...G,tree:N,handler:Q,routeModule:P,__next_app__:O};ad&&ae&&(0,p.setManifestsSingleton)({page:W,clientReferenceManifest:ae,serverActionsManifest:ad});let aX=a.method||"GET",aY=(0,g.getTracer)(),aZ=aY.getActiveScopeSpan(),a$=!!(null==ak?void 0:ak.isWrappedByNextServer),a_=!0===al.experimental.partialFallbacks&&aS.length>0?(null==at||null==(T=at.fallbackRouteParams)?void 0:T.filter(a=>!aS.some(b=>b.paramName===a.paramName)))??[]:[],a0=async()=>((null==ak?void 0:ak.render404)?await ak.render404(a,b,am,!1):b.end("This page could not be found"),null);try{let k,m=P.getVaryHeader(ai,an);b.setHeader("Vary",m);let n=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return P.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aY.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aX} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a),k&&k!==c&&(k.setAttribute("http.route",d),k.updateName(a))}else c.updateName(`${aX} ${W}`)})},p=(0,h.getRequestMeta)(a,"incrementalCache")||await P.getIncrementalCache(a,al,ag,V);null==p||p.resetRequestCache(),globalThis.__incrementalCache=p;let q=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let k={query:Z,params:$,page:aq,sharedContext:{buildId:Y,deploymentId:ao,clientAssetToken:ap},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aW,Component:(0,j.T)(aW),params:$,routeModule:P,page:W,postponed:f,shouldWaitOnAllReady:aR,serveStreamingMetadata:aN,supportsDynamicResponse:"string"==typeof f||aQ,buildManifest:aa,nextFontManifest:ab,reactLoadableManifest:ac,subresourceIntegrityManifest:af,setCacheStatus:null==ak?void 0:ak.setCacheStatus,setIsrStatus:null==ak?void 0:ak.setIsrStatus,setReactDebugChannel:null==ak?void 0:ak.setReactDebugChannel,sendErrorsToBrowser:null==ak?void 0:ak.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),P.relativeProjectDir),isDraftMode:ah,botType:aw,isOnDemandRevalidate:ar,isPossibleServerAction:aA,assetPrefix:al.assetPrefix,nextConfigOutput:al.output,crossOrigin:al.crossOrigin,trailingSlash:al.trailingSlash,images:al.images,previewProps:ag.preview,enableTainting:al.experimental.taint,htmlLimitedBots:al.htmlLimitedBots,reactMaxHeadersLength:al.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:p,cacheLifeProfiles:al.cacheLife,basePath:al.basePath,serverActions:al.experimental.serverActions,logServerFunctions:"object"==typeof al.logging&&!!al.logging.serverFunctions,...aG||aH||aI?{isBuildTimePrerendering:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:aH}:{},cacheComponents:!!al.cacheComponents,experimental:{isRoutePPREnabled:aF,expireTime:al.expireTime,staleTimes:al.experimental.staleTimes,dynamicOnHover:!!al.experimental.dynamicOnHover,optimisticRouting:!!al.experimental.optimisticRouting,inlineCss:!!al.experimental.inlineCss,prefetchInlining:al.experimental.prefetchInlining??!1,authInterrupts:!!al.experimental.authInterrupts,cachedNavigations:!!al.experimental.cachedNavigations,clientTraceMetadata:al.experimental.clientTraceMetadata||[],clientParamParsingOrigins:al.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,D.parseMaxPostponedStateSize)(al.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>P.onRequestError(a,b,d,e,ak),err:(0,h.getRequestMeta)(a,"invokeError")}};i&&(k.renderOpts.supportsDynamicResponse=!1);let l=await n(e,k),{metadata:m}=l,{cacheControl:o,headers:q={},fetchTags:r,fetchMetrics:s}=m;if(r&&(q[y.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,aO&&(null==o?void 0:o.revalidate)===0&&!P.isDev&&!aF){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ai}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
|
|
2
|
+
see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:v.CachedRouteKind.APP_PAGE,html:l,headers:q,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:o}},r=async({hasResolved:c,previousCacheEntry:g,isRevalidating:i,span:j,forceStaticRender:k=!1})=>{let l=!1===P.isDev,m=c||b.writableEnded;try{var n;let f;if(ar&&aj&&!g&&!V)return(null==ak?void 0:ak.render404)?await ak.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(at&&(f=(0,w.parseFallbackField)(at.fallback)),!0===al.experimental.partialFallbacks&&(null==at?void 0:at.fallback)===null&&!aT&&aS.length>0&&(f=w.FallbackMode.PRERENDER),f===w.FallbackMode.PRERENDER&&(0,u.isBot)(av)&&(!aF||ax)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),(null==g?void 0:g.isStale)===-1&&(ar=!0),ar&&(f!==w.FallbackMode.NOT_FOUND||g)&&(f=w.FallbackMode.BLOCKING_STATIC_RENDER),!V&&f!==w.FallbackMode.BLOCKING_STATIC_RENDER&&aV&&!m&&!ah&&_&&(l||!au)){if((l||at)&&f===w.FallbackMode.NOT_FOUND){if(al.adapterPath)return await a0();throw new C.NoFallbackError}if(aF&&(al.cacheComponents?!aL:!az)){let b=l&&"string"==typeof(null==at?void 0:at.fallback)?at.fallback:aq,f=(l||aG)&&(null==at?void 0:at.fallbackRouteParams)?(0,o.createOpaqueFallbackRouteParams)(at.fallbackRouteParams):aI?(0,o.getFallbackRouteParams)(aq,P):null;aG&&f&&(0,h.addRequestMeta)(a,"fallbackParams",f);let g=await P.handleResponse({cacheKey:b,req:a,nextConfig:al,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ag,isRoutePPREnabled:aF,responseGenerator:async()=>q({span:j,postponed:void 0,fallbackRouteParams:f,forceStaticRender:!0}),waitUntil:d.waitUntil,isMinimalMode:V});if(null===g)return null;if(g)return V||!aF||!(aS.length>0)||!0!==al.experimental.partialFallbacks||!aU||!p||ar||aI||aD||aE||ay||(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(aU,p,aF,!1,a=>q({span:a.span,postponed:void 0,fallbackRouteParams:a_.length>0?(0,o.createOpaqueFallbackRouteParams)(a_):null,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete g.cacheControl,g}}let s=ar||i||!aJ?void 0:aJ;if(aP&&!V&&p&&(aL||aA)&&!k){let b=await p.get(ai,{kind:v.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===v.CachedRouteKind.APP_PAGE&&(s=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,J.scheduleOnNextTick)(async()=>{let b=P.getResponseCache(a);try{await b.revalidate(ai,p,aF,!1,a=>r({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aG||aH)&&void 0!==s)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:v.CachedRouteKind.PAGES,html:x.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let t=!P.isDev&&_&&(null==at?void 0:at.fallbackRouteParams)?(0,o.getPlaceholderFallbackRouteParams)($,at.fallbackRouteParams):null,y=t&&t.length>0?t:null==at?void 0:at.fallbackRouteParams,z=null!=t&&t.length>0,A=null;if(al.cacheComponents&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,h.getRequestMeta)(a,"resolvedRouteParamKeys");b&&b.size>0&&(A=at.fallbackRouteParams.filter(a=>!b.has(a.paramName)))}let B=(l&&(0,h.getRequestMeta)(a,"renderFallbackShell")||z||aG&&!au)&&y?(0,o.createOpaqueFallbackRouteParams)(y):A&&A.length>0&&A.length<((null==at||null==(n=at.fallbackRouteParams)?void 0:n.length)??0)?(0,o.createOpaqueFallbackRouteParams)(A):aI?(0,o.getFallbackRouteParams)(aq,P):null;if((l||aG)&&al.cacheComponents&&!au&&(null==at?void 0:at.fallbackRouteParams)){let b=(0,o.createOpaqueFallbackRouteParams)(y??at.fallbackRouteParams);b&&(0,h.addRequestMeta)(a,"fallbackParams",b)}return q({span:j,postponed:s,fallbackRouteParams:B,forceStaticRender:k})}catch(b){throw(null==g?void 0:g.isStale)&&await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}},s=async c=>{var f,g,i,j,k,l;let m,n=await P.handleResponse({cacheKey:aU,responseGenerator:a=>r({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ar,isRoutePPREnabled:aF,req:a,nextConfig:al,prerenderManifest:ag,waitUntil:d.waitUntil,isMinimalMode:V});if(ah&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),P.isDev&&b.setHeader("Cache-Control","no-cache, must-revalidate"),!n){if(aU)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let o="string"==typeof n.value.postponed;az&&!aA&&ao&&b.setHeader(y.NEXT_NAV_DEPLOYMENT_ID_HEADER,ao),aO&&!aL&&(!o||ay)&&(V||b.setHeader("x-nextjs-cache",ar?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(t.NEXT_IS_PRERENDER_HEADER,"1"));let{value:p}=n;if(aJ)m={revalidate:0,expire:void 0};else if(aL)m={revalidate:0,expire:void 0};else if(!P.isDev)if(ah)m={revalidate:0,expire:void 0};else if(aO){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});m={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??al.expireTime}}else m={revalidate:y.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else b.getHeader("Cache-Control")||(m={revalidate:0,expire:void 0});if(n.cacheControl=m,"string"==typeof aM&&(null==p?void 0:p.kind)===v.CachedRouteKind.APP_PAGE&&p.segmentData){b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=p.headers)?void 0:k[y.NEXT_CACHE_TAGS_HEADER];V&&aO&&c&&"string"==typeof c&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,c);let d=p.segmentData.get(aM);return void 0!==d?(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(d,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl}))}let s=aP?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(s){let b=(0,h.getRequestMeta)(a,"initURL")??a.url,c=b?(null==(l=(0,F.parseUrl)(b))?void 0:l.pathname)??b:void 0;if(await s(n,{url:c}))return null}if(p.headers){let a={...p.headers};for(let[c,d]of(V&&aO||delete a[y.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let u=null==(g=p.headers)?void 0:g[y.NEXT_CACHE_TAGS_HEADER];if(V&&aO&&u&&"string"==typeof u&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,u),!p.status||az&&aF||(b.statusCode=p.status),!V&&p.status&&H.RedirectStatusCode[p.status]&&az&&(b.statusCode=200),o&&!aL&&b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"1"),az&&!ah){if(void 0===p.rscData){if(p.html.contentType!==t.RSC_CONTENT_TYPE_HEADER)if(al.cacheComponents)return b.statusCode=404,(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl});else throw Object.defineProperty(new I.InvariantError(`Expected RSC response, got ${p.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:p.html,cacheControl:n.cacheControl})}return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:x.default.fromStatic(p.rscData,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let w=p.html;if(aE&&aG){let c=!0===P.isDev?crypto.randomUUID():null;return w.pipeThrough(await (0,A.createInstantTestScriptInsertionTransformStream)(c)),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})}if(!o||V||az)return(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:n.cacheControl});if(aG||aH)return w.push(new ReadableStream({start(a){a.enqueue(z.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}});let C=new TransformStream;return w.push(C.readable),q({span:c,postponed:p.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(C.writable)}).catch(a=>{C.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,B.sendRenderResult)({req:a,res:b,generateEtags:al.generateEtags,poweredByHeader:al.poweredByHeader,result:w,cacheControl:{revalidate:0,expire:void 0}})};if(!a$||!aZ)return k=aY.getActiveScopeSpan(),await aY.withPropagatedContext(a.headers,()=>aY.trace(i.BaseServerSpan.handleRequest,{spanName:`${aX} ${W}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aX,"http.target":a.url}},s),void 0,!a$);await s(aZ)}catch(b){throw b instanceof C.NoFallbackError||await P.onRequestError(a,b,{routerKind:"App Router",routePath:W,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aO,isOnDemandRevalidate:ar})},!1,ak),b}}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14985:a=>{"use strict";a.exports=require("dns")},16698:a=>{"use strict";a.exports=require("node:async_hooks")},17006:(a,b,c)=>{Promise.resolve().then(c.bind(c,35447))},17891:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/get-segment-param")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},21820:a=>{"use strict";a.exports=require("os")},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},26915:a=>{"use strict";a.exports=import("playwright-core")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},30714:a=>{"use strict";a.exports=require("node:vm")},31421:a=>{"use strict";a.exports=require("node:child_process")},32467:a=>{"use strict";a.exports=require("node:http2")},33873:a=>{"use strict";a.exports=require("path")},34589:a=>{"use strict";a.exports=require("node:assert")},35447:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/ExtremeRouter/ExtremeRouter/src/app/(dashboard)/dashboard/combos/page.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/ExtremeRouter/ExtremeRouter/src/app/(dashboard)/dashboard/combos/page.js","default")},37067:a=>{"use strict";a.exports=require("node:http")},37540:a=>{"use strict";a.exports=require("node:console")},38522:a=>{"use strict";a.exports=require("node:zlib")},40610:a=>{"use strict";a.exports=require("node:dns")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},41692:a=>{"use strict";a.exports=require("node:tls")},41792:a=>{"use strict";a.exports=require("node:querystring")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},46059:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>cg});var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w=c(48249),x=c(67484),y=c.n(x),z=c(19099),A=c(50412),B=c(50377);let C=/^[a-zA-Z0-9_.\-]+$/,D=[{value:"fallback",label:"Fallback",desc:"Try models in order, next on failure",icon:"layers"},{value:"round-robin",label:"Round Robin",desc:"Rotate models across requests",icon:"cached"},{value:"fusion",label:"Fusion",desc:"Parallel panel + judge synthesis",icon:"hub"},{value:"swarm",label:"Swarm",desc:"Hierarchical Manager→Staff→Workers",icon:"account_tree"},{value:"cascade",label:"Cascade",desc:"Escalate cheap→capable on low confidence",icon:"trending_up"},{value:"smart-routing",label:"Smart Routing",desc:"Auto-route by tool calls & research intent",icon:"alt_route"}],E={fallback:{icon:"layers",color:"#3B82F6",badge:"info"},"round-robin":{icon:"cached",color:"#10B981",badge:"success"},fusion:{icon:"hub",color:"#8B5CF6",badge:"primary"},swarm:{icon:"account_tree",color:"#F59E0B",badge:"warning"},cascade:{icon:"trending_up",color:"#06B6D4",badge:"cyan"},"smart-routing":{icon:"alt_route",color:"#EC4899",badge:"warning"}};function F(a){return E[a]||E.fallback}function G(a){let b=D.find(b=>b.value===a);return b?.label||"Fallback"}let H=[{value:"all",label:"All"},{value:"fallback",label:"Fallback"},{value:"round-robin",label:"Round Robin"},{value:"fusion",label:"Fusion"},{value:"swarm",label:"Swarm"},{value:"cascade",label:"Cascade"},{value:"smart-routing",label:"Smart Routing"}],I=[{value:"name",label:"Name"},{value:"models-desc",label:"Most Models"},{value:"models-asc",label:"Fewest Models"}];function J({combos:a,comboStrategies:b,activeProviders:c,onViewCombos:d,onCreate:e}){let f=a.length,g=function(a){let b=new Set;for(let c of a)for(let a of c.models||[])b.add(a);return b.size}(a),h=function(a,b){let c={fallback:0,"round-robin":0,fusion:0,swarm:0,cascade:0,"smart-routing":0},d=new Set(["fallback","round-robin","fusion","swarm","cascade","smart-routing"]);for(let e of a){let a=b[e.name]?.fallbackStrategy||"fallback",f=d.has(a)?a:"fallback";c[f]=(c[f]||0)+1}return c}(a,b),i=Object.values(h).filter(a=>a>0).length,j=f>0?Math.round(a.reduce((a,b)=>a+(b.models?.length||0),0)/f*10)/10:0,k=Math.max(...Object.values(h),1);return(0,w.jsxs)("div",{className:"flex flex-col gap-5",children:[(0,w.jsx)("div",{className:"grid grid-cols-2 gap-3 lg:grid-cols-4",children:[{label:"Total Combos",value:f,icon:"layers",color:"#3B82F6"},{label:"Unique Models",value:g,icon:"model_training",color:"#10B981"},{label:"Strategies Used",value:i,icon:"account_tree",color:"#8B5CF6"},{label:"Avg Models/Combo",value:j,icon:"analytics",color:"#F59E0B"}].map(a=>(0,w.jsx)(A.Zp,{padding:"sm",children:(0,w.jsxs)("div",{className:"flex items-center gap-3",children:[(0,w.jsx)("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-lg",style:{backgroundColor:`${a.color}15`},children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",style:{color:a.color},children:a.icon})}),(0,w.jsxs)("div",{children:[(0,w.jsx)("p",{className:"font-mono text-lg font-bold text-text-main",children:a.value}),(0,w.jsx)("p",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:a.label})]})]})},a.label))}),(0,w.jsxs)(A.Zp,{children:[(0,w.jsxs)("div",{className:"mb-3",children:[(0,w.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Strategy Distribution"}),(0,w.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:"How combos are distributed across routing strategies"})]}),(0,w.jsx)("div",{className:"flex flex-col gap-2.5",children:Object.entries(h).map(([a,b])=>{let c=F(a),d=f>0?Math.round(b/f*100):0;return(0,w.jsxs)("div",{className:"flex items-center gap-3",children:[(0,w.jsxs)("div",{className:"flex w-28 items-center gap-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",style:{color:c.color},children:c.icon}),(0,w.jsx)("span",{className:"text-xs font-medium text-text-main",children:G(a)})]}),(0,w.jsx)("div",{className:"flex-1 overflow-hidden rounded-full bg-surface-2",children:(0,w.jsx)("div",{className:"h-2.5 rounded-full transition-all",style:{width:`${b/k*100}%`,backgroundColor:c.color}})}),(0,w.jsxs)("span",{className:"w-16 text-right font-mono text-xs text-text-muted",children:[b," (",d,"%)"]})]},a)})})]}),(0,w.jsxs)(A.Zp,{children:[(0,w.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Combo Health"}),(0,w.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:"Overview of each combo's status"})]}),(0,w.jsx)(A.$n,{size:"sm",variant:"ghost",icon:"list_alt",onClick:d,children:"View All"})]}),0===a.length?(0,w.jsxs)("div",{className:"py-6 text-center text-sm text-text-muted",children:["No combos yet. ",(0,w.jsx)("button",{onClick:e,className:"text-primary hover:underline",children:"Create one →"})]}):(0,w.jsx)("div",{className:"flex flex-col gap-2",children:a.map(a=>{let d=b[a.name]?.fallbackStrategy||"fallback",e=F(d),f=(a.models||[]).filter(a=>{let b=a.split("/")[0];return c.some(a=>a.provider===b&&!1!==a.isActive)}).length,g=(a.models||[]).length,h=g>0?Math.round(f/g*100):0;return(0,w.jsxs)("div",{className:"flex items-center gap-3 rounded-lg border border-border-subtle px-3 py-2 hover:bg-sidebar/30",children:[(0,w.jsx)("div",{className:"flex size-7 shrink-0 items-center justify-center rounded",style:{backgroundColor:`${e.color}15`},children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[15px]",style:{color:e.color},children:e.icon})}),(0,w.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,w.jsx)("code",{className:"truncate font-mono text-xs font-medium",children:a.name}),(0,w.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[(0,w.jsx)(A.Ex,{variant:e.badge,size:"sm",children:G(d)}),(0,w.jsxs)("span",{className:"text-[10px] text-text-muted",children:[g," models"]})]})]}),(0,w.jsxs)("div",{className:"hidden sm:flex items-center gap-2 shrink-0",children:[(0,w.jsx)("div",{className:"w-20 overflow-hidden rounded-full bg-surface-2",children:(0,w.jsx)("div",{className:`h-1.5 rounded-full ${h>=80?"bg-success":h>=50?"bg-warning":"bg-danger"}`,style:{width:`${h}%`}})}),(0,w.jsxs)("span",{className:"w-8 text-right font-mono text-[10px] text-text-muted",children:[f,"/",g]})]})]},a.id)})})]})]})}var K=c(92592);let L=new Set(["claude-adaptive","claude-budget","claude","extended","gemini-level","gemini-budget","qwen","hunyuan","minimax","zai"]),M=a=>!!a?.reasoning&&(!a?.thinkingFormat||L.has(a.thinkingFormat)),N=[{value:"auto",label:"Auto (provider default)"},{value:"off",label:"Off"},{value:"effort",label:"Effort (OpenAI-style)"},{value:"extended",label:"Extended (Claude-style)"}],O=[{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"},{value:"max",label:"Max"}],P=[{key:"manager",label:"Manager",icon:"psychology"},{key:"staff",label:"Staff",icon:"badge"},{key:"audit",label:"Audit",icon:"fact_check"},{key:"worker",label:"Worker",icon:"group"}],Q=[{key:"panel",label:"Panel",icon:"dashboard"},{key:"judge",label:"Judge",icon:"gavel"}],R=a=>"unlimited"===a||a===1/0||"Infinity"===a;function S(a){let b=(0,K.rs)(a),c=K.Q2[b]?.capabilities;return!c||!1!==c.toolUse&&!1!==c.fileAccess}function T(a){if(!a||"string"!=typeof a)return null;let b=a.indexOf("/");return b>=0?a.slice(0,b):a}function U(a,b){if(a){let b=T(a);return{blocked:!!b&&!S(b),provider:b}}let c=T(b&&b.length>0?b[0]:null);return{blocked:!!c&&!S(c),provider:c}}function V(a){return a.filter(a=>S(a.provider))}function W({combo:a,modelCaps:b={},activeProviders:c=[],copied:d,onCopy:e,onEdit:f,onDelete:g,strategy:h={},onSetStrategy:i}){let[j,k]=(0,x.useState)(!1),[l,m]=(0,x.useState)(!1),[n,o]=(0,x.useState)(null),p=Array.isArray(a?.models)?a.models:[],q=b[a.name]||null,r=h.fallbackStrategy||"fallback",s=h.judgeModel||"",t="fusion"===r,u="swarm"===r,v=h.managerModel||"",y=h.staffModel||"",z=h.auditModel||"",B=F(r),C=(a=>{let b=a?.budgets?.maxEstimatedCostUsd;if(R(b))return 1/0;let c=Number(b);return Number.isFinite(c)&&c>0?c:5})(h),E=R(h?.budgets?.maxEstimatedCostUsd),H=h?.budgets?.enabled===!0,I=H&&h?.budgets?.maxEstimatedCostUsd!=null&&!E&&Number(h.budgets.maxEstimatedCostUsd)>0,J=a=>{let b=Number(a);Number.isFinite(b)&&!(b<=0)&&i({budgets:{...h.budgets||{},enabled:!0,maxEstimatedCostUsd:b}})},K=h.thinking||{},L=K.type||"auto",S="auto"!==L&&"off"!==L,[T,X]=(0,x.useState)([]),Y=a=>i({thinking:{...K,...a}}),Z=(a,b)=>{let c={...K.roles||{}};null===b?delete c[a]:c[a]={...c[a]||{},...b},Y({roles:c})},{hasEffort:$,hasExtended:_,hasMaxEffort:aa,unresolvableModels:ab,unsupportedForCurrent:ac}=function(a,b=""){let c=a.some(a=>!!a.caps?.reasoning),d=a.some(a=>M(a.caps)),e=a.some(a=>!!a.caps?.thinkingMaxEffort);return{hasEffort:c,hasExtended:d,hasMaxEffort:e,unresolvableModels:a.filter(a=>!a.caps?.reasoning&&a.caps?.reasoning!==void 0),unsupportedForCurrent:"effort"===b?[]:"extended"===b?a.filter(a=>a.caps?.reasoning===!0&&!M(a.caps)):[]}}(p.map(a=>({model:a,caps:b[a]||{}})),L);return(0,w.jsxs)(A.Zp,{padding:"sm",className:"group transition-all hover:border-primary/20",children:[(0,w.jsxs)("div",{className:"flex min-w-0 flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,w.jsxs)("button",{className:"flex min-w-0 flex-1 items-start gap-3 text-left sm:items-center",onClick:()=>k(!j),children:[(0,w.jsx)("div",{className:"flex size-8 shrink-0 items-center justify-center rounded-lg",style:{backgroundColor:`${B.color}15`},children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",style:{color:B.color},children:B.icon})}),(0,w.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("code",{className:"truncate font-mono text-sm font-medium",children:a.name}),(0,w.jsx)(A.Ex,{variant:B.badge,size:"sm",children:G(r)}),q&&(0,w.jsxs)("span",{className:"inline-flex items-center gap-1",title:"Capabilities derived from member models",children:[(0,w.jsx)(A.nh,{caps:q,size:12,colorOverride:"text-text-muted"}),(0,w.jsx)("span",{className:"text-[9px] uppercase tracking-wide text-text-muted",children:"derived"})]}),S&&(0,w.jsxs)(A.Ex,{variant:"cyan",size:"sm",className:"flex items-center gap-0.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[10px]",children:"psychology"}),"effort"===L?K.effort||"on":L]}),H&&(0,w.jsxs)(A.Ex,{variant:"warning",size:"sm",className:"flex items-center gap-0.5",title:`Max cost budget: $${C.toFixed(2)} per request`,children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[10px]",children:"savings"}),"$",C.toFixed(2)]}),(0,w.jsxs)("span",{className:"text-[10px] text-text-muted",children:[p.length," models"]})]}),(0,w.jsxs)("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1",children:[0===p.length?(0,w.jsx)("span",{className:"text-xs text-text-muted italic",children:"No models"}):p.slice(0,3).map((a,c)=>(0,w.jsxs)("code",{className:"inline-flex items-center gap-1 rounded bg-black/5 px-1.5 py-0.5 font-mono text-xs text-text-muted dark:bg-white/5",children:[(0,w.jsx)("span",{className:"truncate max-w-[120px]",children:a}),b[a]&&(0,w.jsx)(A.nh,{caps:b[a],size:11})]},c)),p.length>3&&(0,w.jsxs)("span",{className:"text-[10px] text-text-muted",children:["+",p.length-3," more"]})]})]}),(0,w.jsx)("span",{className:`shrink-0 text-text-muted transition-transform ${j?"rotate-180":""}`,children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"expand_more"})})]}),(0,w.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center sm:gap-3 sm:shrink-0",children:[(0,w.jsx)("div",{className:"w-full sm:w-[180px]",children:(0,w.jsx)(A.l6,{options:D,value:r,onChange:a=>i({fallbackStrategy:a.target.value}),selectClassName:"py-1.5 text-xs"})}),(0,w.jsxs)("div",{className:"grid grid-cols-3 gap-1 sm:flex",children:[(0,w.jsxs)("button",{onClick:b=>{b.stopPropagation(),e(a.name,`combo-${a.id}`)},className:"flex flex-col items-center rounded px-2 py-1 text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5",title:"Copy combo name",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:d===`combo-${a.id}`?"check":"content_copy"}),(0,w.jsx)("span",{className:"text-[10px] leading-tight",children:"Copy"})]}),(0,w.jsxs)("button",{onClick:f,className:"flex flex-col items-center rounded px-2 py-1 text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5",title:"Edit",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"}),(0,w.jsx)("span",{className:"text-[10px] leading-tight",children:"Edit"})]}),(0,w.jsxs)("button",{onClick:g,className:"flex flex-col items-center rounded px-2 py-1 text-red-500 transition-colors hover:bg-red-500/10",title:"Delete",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"}),(0,w.jsx)("span",{className:"text-[10px] leading-tight",children:"Delete"})]})]})]})]}),j&&(0,w.jsxs)("div",{className:"mt-3 border-t border-border-subtle pt-3",children:[(0,w.jsxs)("div",{className:"mb-3",children:[(0,w.jsxs)("div",{className:"text-[10px] uppercase tracking-wide text-text-muted mb-1.5 flex items-center gap-1.5",children:["Models (",p.length,")",q&&(0,w.jsx)(A.nh,{caps:q,size:11,colorOverride:"text-text-muted"})]}),(0,w.jsx)("div",{className:"flex flex-col gap-1",children:p.map((a,c)=>(0,w.jsxs)("div",{className:"flex items-center gap-2 rounded px-2 py-1 bg-black/[0.02] dark:bg-white/[0.02]",children:[(0,w.jsx)("span",{className:"text-[10px] font-medium text-text-muted w-4 text-center",children:c+1}),(0,w.jsx)("code",{className:"min-w-0 flex-1 truncate font-mono text-xs text-text-main",children:a}),b[a]&&(0,w.jsx)(A.nh,{caps:b[a],size:11})]},c))})]}),t&&(0,w.jsxs)("div",{className:"mb-3",children:[(0,w.jsx)("p",{className:"text-[10px] uppercase tracking-wide text-text-muted mb-1.5",children:"Fusion Judge"}),(()=>{let{blocked:a,provider:b}=U(s,p);return(0,w.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsxs)("button",{onClick:()=>m(!0),className:`inline-flex max-w-full items-center gap-1 rounded border border-dashed px-2 py-1 font-mono text-xs hover:bg-primary/5 ${a?"border-red-400 text-red-500 hover:border-red-500":"border-primary/40 text-primary hover:border-primary"}`,children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"gavel"}),(0,w.jsx)("span",{className:"truncate",children:s||`Auto — ${p[0]||"first model"}`})]}),s&&(0,w.jsx)("button",{onClick:()=>i({judgeModel:""}),className:"p-1 rounded text-text-muted hover:text-red-500 hover:bg-red-500/10",title:"Reset to Auto",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),a&&(0,w.jsx)("p",{className:"text-[10px] text-red-500",children:s?"⚠ Web cookie providers cannot serve as Judge (no tool use / file access)":`⚠ Auto-fallback to "${b}" (first combo model) — web cookie cannot serve as Judge`})]})})()]}),u&&(0,w.jsxs)("div",{className:"mb-3",children:[(0,w.jsx)("p",{className:"text-[10px] uppercase tracking-wide text-text-muted mb-1.5",children:"Swarm Roles"}),(0,w.jsxs)("div",{className:"flex flex-col gap-1.5",children:[[{key:"manager",label:"Manager",icon:"psychology",value:v,placeholder:`Auto — ${p[0]||"first"}`},{key:"staff",label:"Staff",icon:"badge",value:y,placeholder:"Same as Manager"},{key:"audit",label:"Audit",icon:"fact_check",value:z,placeholder:"Same as Staff"}].map(a=>{let{blocked:b,provider:c}=U(a.value,p);return(0,w.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("span",{className:"text-xs font-medium text-text-muted w-16",children:a.label}),(0,w.jsxs)("button",{onClick:()=>o(a.key),className:`inline-flex max-w-full items-center gap-1 rounded border border-dashed px-2 py-0.5 font-mono text-[11px] hover:bg-primary/5 ${b?"border-red-400 text-red-500 hover:border-red-500":"border-primary/40 text-primary hover:border-primary"}`,children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:a.icon}),(0,w.jsx)("span",{className:"truncate",children:a.value||a.placeholder})]}),a.value&&(0,w.jsx)("button",{onClick:()=>i({[`${a.key}Model`]:""}),className:"p-0.5 rounded text-text-muted hover:text-red-500 hover:bg-red-500/10",title:`Reset ${a.label}`,children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"close"})})]}),b&&(0,w.jsx)("p",{className:"text-[10px] text-red-500 pl-[76px]",children:a.value?`⚠ Web cookie providers cannot serve as ${a.label} (no tool use / file access)`:`⚠ Auto-fallback to "${c}" (first combo model) — web cookie cannot serve as ${a.label}`})]},a.key)}),(0,w.jsxs)("div",{className:"flex items-center gap-2 text-[11px] text-text-muted",children:[(0,w.jsx)("span",{className:"font-medium",children:"Workers"}),(0,w.jsxs)("span",{children:["= combo models (",p.length,")"]}),(0,w.jsx)("span",{className:"text-text-subtle",children:"\xb7"}),(0,w.jsx)("a",{href:"/dashboard/swarm",className:"text-primary hover:underline",children:"Telemetry →"})]}),(0,w.jsxs)("div",{className:"flex items-center gap-3 mt-1",children:[(0,w.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,w.jsx)("input",{type:"checkbox",checked:h.autoScale?.enabled===!0,onChange:a=>i({autoScale:{...h.autoScale||{},enabled:a.target.checked}}),className:"rounded border-border accent-primary"}),(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"Auto-scale"})]}),h.autoScale?.enabled&&(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)("div",{className:"flex items-center gap-1",children:[(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"Min:"}),(0,w.jsx)("input",{type:"number",min:1,max:h.autoScale?.maxWorkers||8,value:h.autoScale?.minWorkers??1,onChange:a=>i({autoScale:{...h.autoScale||{},minWorkers:Number(a.target.value)||1}}),className:"w-10 rounded border border-border bg-background px-1 py-0.5 text-[10px] font-mono text-center focus:outline-none focus:border-primary"})]}),(0,w.jsxs)("div",{className:"flex items-center gap-1",children:[(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"Max:"}),(0,w.jsx)("input",{type:"number",min:1,max:8,value:h.autoScale?.maxWorkers??p.length,onChange:a=>i({autoScale:{...h.autoScale||{},maxWorkers:Number(a.target.value)||1}}),className:"w-10 rounded border border-border bg-background px-1 py-0.5 text-[10px] font-mono text-center focus:outline-none focus:border-primary"})]})]})]})]})]}),(0,w.jsxs)("div",{className:"mt-3 border-t border-border-subtle pt-3",children:[(0,w.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,w.jsx)("p",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:"Thinking"}),(0,w.jsx)("button",{onClick:()=>X(T.length>0?[]:(t?Q:u?P:[]).map(a=>a.key)),className:"text-[10px] text-primary hover:underline",children:T.length>0?"Hide roles":`Role overrides${S?" ("+Object.keys(K.roles||{}).length+")":""}`})]}),(0,w.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("label",{className:"text-[10px] text-text-muted",children:"Mode:"}),(0,w.jsx)("select",{value:L,onChange:a=>Y({type:a.target.value}),className:"rounded border border-border bg-background px-1.5 py-0.5 text-[11px] font-mono focus:outline-none focus:border-primary",children:N.map(a=>{let b="auto"===a.value||"off"===a.value||"effort"===a.value&&$||"extended"===a.value&&_;return(0,w.jsxs)("option",{value:a.value,disabled:!b,className:b?"":"text-text-muted",children:[a.label,b?"":" (not supported)"]},a.value)})})]}),ac.length>0&&(0,w.jsxs)("div",{className:"flex items-center gap-1 text-amber-600 dark:text-amber-400",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"warning"}),(0,w.jsxs)("span",{className:"text-[10px]",children:[L," not supported by ",ac.map(a=>a.model.split("/").pop()).join(", ")]})]}),ab.length>0&&"auto"!==L&&"off"!==L&&(0,w.jsxs)("div",{className:"flex items-center gap-1 text-amber-600 dark:text-amber-400",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"warning"}),(0,w.jsxs)("span",{className:"text-[10px]",children:["Thinking capability unknown for ",ab.map(a=>a.model.split("/").pop()).join(", ")]})]}),"effort"===L&&(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("label",{className:"text-[10px] text-text-muted",children:"Effort:"}),(0,w.jsx)("select",{value:K.effort||"high",onChange:a=>Y({effort:a.target.value}),className:"rounded border border-border bg-background px-1.5 py-0.5 text-[11px] font-mono focus:outline-none focus:border-primary",children:O.map(a=>{let b="max"!==a.value||aa;return(0,w.jsxs)("option",{value:a.value,disabled:!b,className:b?"":"text-text-muted",children:[a.label,b?"":" (not supported)"]},a.value)})})]}),"extended"===L&&(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("label",{className:"text-[10px] text-text-muted",children:"Budget:"}),(0,w.jsx)("input",{type:"number",min:1024,max:128e3,step:1024,value:K.budgetTokens||4096,onChange:a=>Y({budgetTokens:Number(a.target.value)||4096}),className:"w-20 rounded border border-border bg-background px-1.5 py-0.5 text-[11px] font-mono focus:outline-none focus:border-primary"})]})]}),T.length>0&&S&&(0,w.jsxs)("div",{className:"mt-2 flex flex-col gap-1.5 pl-1",children:[(0,w.jsx)("p",{className:"text-[10px] text-text-muted",children:"Per-role overrides (leave as parent to inherit global)"}),(t?Q:u?P:[]).map(a=>{let b,c=(b=a.key,K?.roles?.[b]);return(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[13px] text-text-muted",children:a.icon}),(0,w.jsx)("span",{className:"text-[11px] font-medium text-text-muted w-12",children:a.label}),(0,w.jsxs)("select",{value:c?.type||"inherit",onChange:b=>Z(a.key,"inherit"===b.target.value?null:{type:b.target.value}),className:"rounded border border-border bg-background px-1 py-0.5 text-[10px] font-mono focus:outline-none focus:border-primary",children:[(0,w.jsx)("option",{value:"inherit",children:"Inherit"}),(0,w.jsx)("option",{value:"off",children:"Off"}),(0,w.jsxs)("option",{value:"effort",disabled:!$,className:$?"":"text-text-muted",children:["Effort",$?"":" (not supported)"]}),(0,w.jsxs)("option",{value:"extended",disabled:!_,className:_?"":"text-text-muted",children:["Extended",_?"":" (not supported)"]})]}),c?.type==="effort"&&(0,w.jsx)("select",{value:c.effort||"high",onChange:b=>Z(a.key,{type:"effort",effort:b.target.value}),className:"rounded border border-border bg-background px-1 py-0.5 text-[10px] font-mono focus:outline-none focus:border-primary",children:O.map(a=>{let b="max"!==a.value||aa;return(0,w.jsxs)("option",{value:a.value,disabled:!b,className:b?"":"text-text-muted",children:[a.label,b?"":" (not supported)"]},a.value)})}),c?.type==="extended"&&(0,w.jsx)("input",{type:"number",min:1024,max:128e3,step:1024,value:c.budgetTokens||4096,onChange:b=>Z(a.key,{type:"extended",budgetTokens:Number(b.target.value)||4096}),className:"w-16 rounded border border-border bg-background px-1 py-0.5 text-[10px] font-mono focus:outline-none focus:border-primary"}),c&&(0,w.jsx)("button",{onClick:()=>Z(a.key,null),className:"p-0.5 rounded text-text-muted hover:text-red-500",title:"Reset to inherit",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},a.key)})]})]}),(0,w.jsxs)("div",{className:"text-xs text-text-muted bg-black/[0.02] dark:bg-white/[0.02] rounded px-2 py-1.5",children:[(0,w.jsxs)("span",{className:"font-medium",children:[G(r),":"]})," ",D.find(a=>a.value===r)?.desc]}),(0,w.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-x-3 gap-y-2 rounded-lg border border-warning/20 bg-warning/[0.04] px-3 py-2",children:[(0,w.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,w.jsx)("input",{type:"checkbox",checked:H,onChange:a=>{var b;return b=a.target.checked,void i({budgets:{...h.budgets||{},enabled:b}})},className:"rounded border accent-primary","aria-label":"Enable cost budget limit"}),(0,w.jsx)("span",{className:"material-symbols-outlined text-[16px] text-warning",children:"savings"}),(0,w.jsx)("span",{className:"text-[11px] font-semibold text-text-main",children:"Budget Limit"})]}),(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:H?"enabled":"off (no limit)"}),(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("span",{className:"text-[12px] font-medium text-text-muted",children:"$"}),(0,w.jsx)("input",{type:"number",min:.01,step:.5,value:E?"":C,onChange:a=>J(a.target.value),disabled:!H||E,"aria-label":"Max cost budget in USD per request",className:"w-20 rounded border border-border bg-background px-1.5 py-0.5 text-[11px] font-mono text-right focus:outline-none focus:border-primary disabled:opacity-60"}),(0,w.jsx)("button",{type:"button",onClick:E?()=>J(5):()=>{i({budgets:{...h.budgets||{},enabled:!0,maxEstimatedCostUsd:"unlimited"}})},disabled:!H,className:`rounded border px-2 py-0.5 text-[11px] font-medium ${E?"border-primary bg-primary/10 text-primary":"border-border text-text-muted hover:text-text-main"} disabled:opacity-40 disabled:cursor-not-allowed`,children:E?"Unlimited":"∞"})]}),(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"per request"}),(0,w.jsx)("span",{className:`text-[10px] ${I||E?"text-primary":"text-text-muted"}`,children:E?"Unlimited":I?`Custom $${Number(C).toFixed(2)}`:"Default $5.00"})]})]}),(0,w.jsx)(A.rq,{isOpen:l,onClose:()=>m(!1),onSelect:a=>{i({judgeModel:a?.value||""}),m(!1)},activeProviders:V(c),title:"Select Judge Model",addedModelValues:s?[s]:[],closeOnSelect:!0}),n&&(0,w.jsx)(A.rq,{isOpen:!0,onClose:()=>o(null),onSelect:a=>{i({[`${n}Model`]:a?.value||""}),o(null)},activeProviders:V(c),title:`Select ${"manager"===n?"Manager":"staff"===n?"Staff":"Audit"} Model`,addedModelValues:"manager"===n?v?[v]:[]:"staff"===n?y?[y]:[]:z?[z]:[],closeOnSelect:!0})]})}function X({combos:a,modelCaps:b,activeProviders:c,comboStrategies:d,copied:e,copy:f,onEdit:g,onDelete:h,onSetStrategy:i,onCreate:j}){let[k,l]=(0,x.useState)(""),[m,n]=(0,x.useState)("all"),[o,p]=(0,x.useState)("name"),q=(0,x.useMemo)(()=>{var b;let c;return b=function(a,b,c,d){let e=a;if("all"!==c&&(e=e.filter(a=>(d[a.name]?.fallbackStrategy||"fallback")===c)),b.trim()){let a=b.trim().toLowerCase();e=e.filter(b=>b.name.toLowerCase().includes(a)||(b.models||[]).some(b=>b.toLowerCase().includes(a)))}return e}(a,k,m,d),c=[...b],"models-desc"===o?c.sort((a,b)=>(b.models?.length||0)-(a.models?.length||0)):"models-asc"===o?c.sort((a,b)=>(a.models?.length||0)-(b.models?.length||0)):c.sort((a,b)=>a.name.localeCompare(b.name)),c},[a,k,m,o,d]);return 0===a.length?(0,w.jsx)(A.pp,{icon:"layers",title:"No combos yet",description:"Create model combos with fallback, round-robin, fusion, or swarm strategies",actionText:"Create Combo",onAction:j}):(0,w.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,w.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,w.jsx)(A.pd,{placeholder:"Search combos or models...",value:k,onChange:a=>l(a.target.value),className:"sm:max-w-xs"}),(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("div",{className:"flex flex-wrap gap-1",children:H.map(a=>(0,w.jsx)("button",{onClick:()=>n(a.value),className:`rounded-full px-2.5 py-1 text-xs font-medium transition-colors ${m===a.value?"bg-primary/15 text-primary ring-1 ring-primary/20":"bg-surface-2 text-text-muted hover:text-text-main"}`,children:a.label},a.value))}),(0,w.jsx)("select",{value:o,onChange:a=>p(a.target.value),className:"appearance-none rounded-lg border border-border bg-surface-2 py-1.5 pl-3 pr-8 text-xs text-text-main [-webkit-appearance:none] [-moz-appearance:none] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30",children:I.map(a=>(0,w.jsx)("option",{value:a.value,children:a.label},a.value))})]})]}),(0,w.jsx)("p",{className:"text-xs text-text-muted",children:q.length===a.length?`${a.length} combo${1!==a.length?"s":""}`:`${q.length} of ${a.length} combos`}),0===q.length?(0,w.jsx)(A.Zp,{children:(0,w.jsxs)("div",{className:"py-8 text-center text-sm text-text-muted",children:['No combos match "',k,'" ',"all"!==m&&`with ${m} strategy`]})}):(0,w.jsx)("div",{className:"flex flex-col gap-3",children:q.map(a=>(0,w.jsx)(W,{combo:a,modelCaps:b,activeProviders:c,copied:e,onCopy:f,onEdit:()=>g(a),onDelete:()=>h(a.id),strategy:d[a.name]||{},onSetStrategy:b=>i(a.name,b)},a.id))})]})}let Y=[{id:"always-on",name:"Always-On (5-Layer Fallback)",description:"Zero-downtime coding with 5 layers of fallback. Mix of subscription, cheap, and free tiers — if any model fails, the next picks up automatically.",icon:"shield",category:"reliability",strategy:"fallback",models:["claude-opus-4-7","gpt-5.4","glm-5.1","MiniMax-M2.7","claude-sonnet-4.5"],preferredProviders:{"claude-opus-4-7":"cc","gpt-5.4":"cx","glm-5.1":"glm","MiniMax-M2.7":"minimax","claude-sonnet-4.5":"kr"}},{id:"max-reasoning-swarm",name:"Max Reasoning Swarm",description:"Deep multi-agent analysis for complex coding tasks. Manager decomposes the problem, workers solve subtasks in parallel, audit reviews the result. Manager thinks at max effort.",icon:"psychology",category:"reasoning",strategy:"swarm",models:["claude-opus-4-7","gpt-5.4","glm-5.1","claude-sonnet-4.5"],preferredProviders:{"claude-opus-4-7":"cc","gpt-5.4":"cx","glm-5.1":"glm","claude-sonnet-4.5":"kr"},strategyConfig:{fallbackStrategy:"swarm",managerModel:"claude-opus-4-7",auditModel:"claude-sonnet-4.5",thinking:{type:"effort",effort:"high",roles:{manager:{type:"effort",effort:"max"},worker:{type:"effort",effort:"medium"},audit:{type:"effort",effort:"high"}}},autoScale:{enabled:!0,minWorkers:2,maxWorkers:4}}},{id:"flash-fusion",name:"Flash Fusion",description:"Two fast models answer in parallel, a judge picks the best result. Low latency with a quality check — great for everyday coding questions.",icon:"bolt",category:"balanced",strategy:"fusion",models:["gpt-5.4","MiniMax-M2.7"],preferredProviders:{"gpt-5.4":"cx","MiniMax-M2.7":"minimax"},strategyConfig:{fallbackStrategy:"fusion",thinking:{type:"effort",effort:"medium"}}},{id:"penny-pincher",name:"Penny-Pincher",description:"Ultra-low-cost daily driver built from cheap and free tiers. Thinking disabled to keep tokens minimal. Use for simple tasks where cost matters most.",icon:"savings",category:"budget",strategy:"fallback",models:["MiniMax-M2.7","glm-5.1","gpt-5.4"],preferredProviders:{"MiniMax-M2.7":"minimax","glm-5.1":"glm","gpt-5.4":"gh"},strategyConfig:{fallbackStrategy:"fallback",thinking:{type:"off"}}},{id:"ai-researcher",name:"AI Researcher",description:"Smart Routing research combo. Web (cookie) providers answer research tasks first; tool-capable API models handle anything that needs function calling. Auto-falls back if a web provider is blocked.",icon:"travel_explore",category:"research",strategy:"smart-routing",models:["deepseek-v4-flash","gpt-5-6-terra","gemini-3.6-flash","claude-sonnet-4.5","gpt-5.4","glm-5.2"],preferredProviders:{"deepseek-v4-flash":"felo","gpt-5-6-terra":"felo","gemini-3.6-flash":"felo","claude-sonnet-4.5":"kr","gpt-5.4":"cx","glm-5.2":"cl"},strategyConfig:{fallbackStrategy:"smart-routing",smartRouting:{cookiePoolEnabled:!0,intentDetection:{confidenceThreshold:.6,llmClassifierFallback:{enabled:!0,model:"kr/claude-haiku-4.5"}}}}},{id:"deep-research-web",name:"Deep Research Web",description:"Research-heavy smart routing. Maximizes the web (cookie) pool for deep research, with tool-capable models as fallback for verification and citations.",icon:"manage_search",category:"research",strategy:"smart-routing",models:["gpt-5-6-luna","claude-5-0-sonnet","kimi-k2-thinking","grok-4.6","claude-haiku-4.5","glm-5.2"],preferredProviders:{"gpt-5-6-luna":"felo","claude-5-0-sonnet":"felo","kimi-k2-thinking":"felo","grok-4.6":"felo","claude-haiku-4.5":"kr","glm-5.2":"cl"},strategyConfig:{fallbackStrategy:"smart-routing",smartRouting:{cookiePoolEnabled:!0,intentDetection:{confidenceThreshold:.6,llmClassifierFallback:{enabled:!0,model:"kr/claude-haiku-4.5"}}}}},{id:"bug-hunter",name:"Bug Hunter",description:"Three models independently diagnose the same bug, a strong judge picks the most likely root cause. High-precision debugging with thinking on.",icon:"bug_report",category:"debugging",strategy:"fusion",models:["gpt-5.4","glm-5.1","MiniMax-M2.7"],preferredProviders:{"gpt-5.4":"cx","glm-5.1":"glm","MiniMax-M2.7":"minimax"},strategyConfig:{fallbackStrategy:"fusion",thinking:{type:"effort",effort:"high"}}}],Z=["managerModel","staffModel","auditModel","judgeModel"];function $({combos:a,connections:b,modelIndex:c={},onApply:d}){let[e,f]=(0,x.useState)(null),g=new Set(b?.filter(a=>!1!==a.isActive).map(a=>a.provider)||[]),h=new Set((a||[]).map(a=>a.name)),i=a=>(function(a,{modelIndex:b={},connectedProviders:c=new Set}={}){return(a.models||[]).map(d=>{let e=d.indexOf("/"),f=e>0,g=f?d.slice(e+1):d,h=(f?d.slice(0,e):"")||(a.preferredProviders||{})[g]||"",i=h?(0,K.rs)(h):"",j=(b[g]||[]).map(a=>(0,K.rs)(a)).filter(a=>c.has(a));if(i&&j.includes(i)){let a=(0,K.wG)(i);return{ref:d,modelName:g,provider:i,providerAlias:a,full:`${a}/${g}`,available:!0}}if(j.length>0){let a=(0,K.wG)(j[0]);return{ref:d,modelName:g,provider:j[0],providerAlias:a,full:`${a}/${g}`,available:!0,resolvedFrom:h}}return{ref:d,modelName:g,provider:i||h,full:f?d:g,available:!1}})})(a,{modelIndex:c,connectedProviders:g}),j=async a=>{f(a.id);try{let b=i(a),c=b.filter(a=>a.available).map(a=>a.full);if(0===c.length)return void alert("No connected provider has any of this template's models.");let e=function(a,b){let c=a.strategyConfig?{...a.strategyConfig}:{fallbackStrategy:a.strategy},d=Object.fromEntries(b.filter(a=>a.available).map(a=>[a.modelName,a.full]));for(let a of Z){let b=c[a];if(!b)continue;let e=b.indexOf("/"),f=e>0?b.slice(e+1):b;d[f]&&(c[a]=d[f])}return c}(a,b),f=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:a.name,models:c,kind:a.kind||"llm",strategyConfig:e})});if(!f.ok){let a=await f.json();alert(a.error||"Failed to create combo from template");return}let g=await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({comboStrategies:{[a.name]:e}})});if(!g.ok){let a=await g.json().catch(()=>({}));alert(a.error||"Failed to apply template strategy");return}d&&d()}catch(a){alert("Failed to apply template: "+(a?.message||String(a)))}finally{f(null)}};return 0===Y.length?(0,w.jsx)(A.pp,{icon:"dashboard_customize",title:"No templates available",description:"Combo templates will appear here when added."}):(0,w.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,w.jsxs)("div",{className:"mb-1",children:[(0,w.jsx)("h2",{className:"text-sm font-semibold text-text-main",children:"Combo Templates"}),(0,w.jsx)("p",{className:"text-xs text-text-muted mt-0.5",children:"One-click prebuilt combos. Provider availability is checked automatically."})]}),(0,w.jsx)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",children:Y.map(a=>{let b=i(a),c=b.filter(a=>a.available).length,d=b.length,f=h.has(a.name),g=F(a.strategy),k=c===d;return(0,w.jsxs)(A.Zp,{padding:"sm",className:"flex flex-col gap-3 hover:border-primary/20 transition-all",children:[(0,w.jsxs)("div",{className:"flex items-start justify-between",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,w.jsx)("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-lg",style:{backgroundColor:`${g.color}15`},children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px]",style:{color:g.color},children:a.icon||g.icon})}),(0,w.jsxs)("div",{children:[(0,w.jsx)("p",{className:"text-sm font-semibold text-text-main",children:a.name}),(0,w.jsx)(A.Ex,{variant:g.badge,size:"sm",children:G(a.strategy)})]})]}),f&&(0,w.jsx)(A.Ex,{variant:"success",size:"sm",dot:!0,children:"Created"})]}),(0,w.jsx)("p",{className:"text-xs text-text-muted leading-relaxed",children:a.description}),(0,w.jsxs)("div",{className:"flex flex-wrap gap-1",children:[b.slice(0,4).map((a,b)=>(0,w.jsxs)("code",{className:`inline-flex items-center gap-1 rounded px-1.5 py-0.5 font-mono text-[10px] ${a.available?"bg-black/5 text-text-muted dark:bg-white/5":"bg-red-500/10 text-red-500"}`,title:a.available?`Resolved to ${a.provider}`:`No connected provider has ${a.modelName}`,children:[(0,w.jsx)("span",{className:a.available?"text-success":"text-red-500",children:a.available?"✓":"✗"}),(0,w.jsx)("span",{className:"truncate max-w-[110px]",children:a.modelName}),a.available&&(0,w.jsx)("span",{className:"rounded bg-black/10 px-0.5 text-[9px] dark:bg-white/10",children:a.provider})]},b)),b.length>4&&(0,w.jsxs)("span",{className:"text-[10px] text-text-muted",children:["+",b.length-4," more"]})]}),(0,w.jsx)("div",{className:"flex flex-wrap gap-1",children:b.map(a=>{let b=a.resolvedFrom?(0,K.rs)(a.resolvedFrom):"",c=a.available?`${a.provider}${a.resolvedFrom&&b!==a.provider?` (via ${a.resolvedFrom})`:""}`:`${a.provider||"?"} (missing)`,d=a.available;return(0,w.jsxs)("span",{className:`inline-flex items-center gap-0.5 rounded-full px-1.5 py-0.5 text-[10px] font-medium ${d?"bg-success/10 text-success":"bg-surface-2 text-text-muted"}`,children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[10px]",children:d?"check_circle":"radio_button_unchecked"}),c]},a.ref)})}),(0,w.jsx)("div",{className:"mt-auto pt-1",children:(0,w.jsx)(A.$n,{size:"sm",fullWidth:!0,variant:f?"secondary":"primary",icon:e===a.id?"progress_activity":"add",disabled:f||e===a.id||!k,onClick:()=>j(a),children:e===a.id?"Creating...":f?"Already Created":k?"Apply Template":`Missing ${d-c} model${d-c!=1?"s":""}`})})]},a.id)})})]})}var _=c(74429);let aa="u">typeof window&&void 0!==window.document&&void 0!==window.document.createElement;function ab(a){let b=Object.prototype.toString.call(a);return"[object Window]"===b||"[object global]"===b}function ac(a){return"nodeType"in a}function ad(a){var b,c;return a?ab(a)?a:ac(a)&&null!=(b=null==(c=a.ownerDocument)?void 0:c.defaultView)?b:window:window}function ae(a){let{Document:b}=ad(a);return a instanceof b}function af(a){return!ab(a)&&a instanceof ad(a).HTMLElement}function ag(a){return a instanceof ad(a).SVGElement}function ah(a){return a?ab(a)?a.document:ac(a)?ae(a)?a:af(a)||ag(a)?a.ownerDocument:document:document:document}let ai=aa?x.useLayoutEffect:x.useEffect;function aj(a){let b=(0,x.useRef)(a);return ai(()=>{b.current=a}),(0,x.useCallback)(function(){for(var a=arguments.length,c=Array(a),d=0;d<a;d++)c[d]=arguments[d];return null==b.current?void 0:b.current(...c)},[])}function ak(a,b){void 0===b&&(b=[a]);let c=(0,x.useRef)(a);return ai(()=>{c.current!==a&&(c.current=a)},b),c}function al(a,b){let c=(0,x.useRef)();return(0,x.useMemo)(()=>{let b=a(c.current);return c.current=b,b},[...b])}function am(a){let b=aj(a),c=(0,x.useRef)(null),d=(0,x.useCallback)(a=>{a!==c.current&&(null==b||b(a,c.current)),c.current=a},[]);return[c,d]}function an(a){let b=(0,x.useRef)();return(0,x.useEffect)(()=>{b.current=a},[a]),b.current}let ao={};function ap(a,b){return(0,x.useMemo)(()=>{if(b)return b;let c=null==ao[a]?0:ao[a]+1;return ao[a]=c,a+"-"+c},[a,b])}function aq(a){return function(b){for(var c=arguments.length,d=Array(c>1?c-1:0),e=1;e<c;e++)d[e-1]=arguments[e];return d.reduce((b,c)=>{for(let[d,e]of Object.entries(c)){let c=b[d];null!=c&&(b[d]=c+a*e)}return b},{...b})}}let ar=aq(1),as=aq(-1);function at(a){if(!a)return!1;let{KeyboardEvent:b}=ad(a.target);return b&&a instanceof b}function au(a){if(function(a){if(!a)return!1;let{TouchEvent:b}=ad(a.target);return b&&a instanceof b}(a)){if(a.touches&&a.touches.length){let{clientX:b,clientY:c}=a.touches[0];return{x:b,y:c}}else if(a.changedTouches&&a.changedTouches.length){let{clientX:b,clientY:c}=a.changedTouches[0];return{x:b,y:c}}}return"clientX"in a&&"clientY"in a?{x:a.clientX,y:a.clientY}:null}let av=Object.freeze({Translate:{toString(a){if(!a)return;let{x:b,y:c}=a;return"translate3d("+(b?Math.round(b):0)+"px, "+(c?Math.round(c):0)+"px, 0)"}},Scale:{toString(a){if(!a)return;let{scaleX:b,scaleY:c}=a;return"scaleX("+b+") scaleY("+c+")"}},Transform:{toString(a){if(a)return[av.Translate.toString(a),av.Scale.toString(a)].join(" ")}},Transition:{toString(a){let{property:b,duration:c,easing:d}=a;return b+" "+c+"ms "+d}}}),aw="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]",ax={display:"none"};function ay(a){let{id:b,value:c}=a;return y().createElement("div",{id:b,style:ax},c)}function az(a){let{id:b,announcement:c,ariaLiveType:d="assertive"}=a;return y().createElement("div",{id:b,style:{position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"},role:"status","aria-live":d,"aria-atomic":!0},c)}let aA=(0,x.createContext)(null),aB={draggable:"\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n "},aC={onDragStart(a){let{active:b}=a;return"Picked up draggable item "+b.id+"."},onDragOver(a){let{active:b,over:c}=a;return c?"Draggable item "+b.id+" was moved over droppable area "+c.id+".":"Draggable item "+b.id+" is no longer over a droppable area."},onDragEnd(a){let{active:b,over:c}=a;return c?"Draggable item "+b.id+" was dropped over droppable area "+c.id:"Draggable item "+b.id+" was dropped."},onDragCancel(a){let{active:b}=a;return"Dragging was cancelled. Draggable item "+b.id+" was dropped."}};function aD(a){var b;let c,{announcements:d=aC,container:e,hiddenTextDescribedById:f,screenReaderInstructions:g=aB}=a,{announce:h,announcement:i}=function(){let[a,b]=(0,x.useState)("");return{announce:(0,x.useCallback)(a=>{null!=a&&b(a)},[]),announcement:a}}(),j=ap("DndLiveRegion"),[k,l]=(0,x.useState)(!1);if((0,x.useEffect)(()=>{l(!0)},[]),b=(0,x.useMemo)(()=>({onDragStart(a){let{active:b}=a;h(d.onDragStart({active:b}))},onDragMove(a){let{active:b,over:c}=a;d.onDragMove&&h(d.onDragMove({active:b,over:c}))},onDragOver(a){let{active:b,over:c}=a;h(d.onDragOver({active:b,over:c}))},onDragEnd(a){let{active:b,over:c}=a;h(d.onDragEnd({active:b,over:c}))},onDragCancel(a){let{active:b,over:c}=a;h(d.onDragCancel({active:b,over:c}))}}),[h,d]),c=(0,x.useContext)(aA),(0,x.useEffect)(()=>{if(!c)throw Error("useDndMonitor must be used within a children of <DndContext>");return c(b)},[b,c]),!k)return null;let m=y().createElement(y().Fragment,null,y().createElement(ay,{id:f,value:g.draggable}),y().createElement(az,{id:j,announcement:i}));return e?(0,_.createPortal)(m,e):m}function aE(){}function aF(a,b){return(0,x.useMemo)(()=>({sensor:a,options:null!=b?b:{}}),[a,b])}(d=m||(m={})).DragStart="dragStart",d.DragMove="dragMove",d.DragEnd="dragEnd",d.DragCancel="dragCancel",d.DragOver="dragOver",d.RegisterDroppable="registerDroppable",d.SetDroppableDisabled="setDroppableDisabled",d.UnregisterDroppable="unregisterDroppable";let aG=Object.freeze({x:0,y:0});function aH(a,b){return Math.sqrt(Math.pow(a.x-b.x,2)+Math.pow(a.y-b.y,2))}function aI(a,b){let{data:{value:c}}=a,{data:{value:d}}=b;return c-d}function aJ(a,b){let{data:{value:c}}=a,{data:{value:d}}=b;return d-c}function aK(a){let{left:b,top:c,height:d,width:e}=a;return[{x:b,y:c},{x:b+e,y:c},{x:b,y:c+d},{x:b+e,y:c+d}]}function aL(a,b){if(!a||0===a.length)return null;let[c]=a;return b?c[b]:c}function aM(a,b,c){return void 0===b&&(b=a.left),void 0===c&&(c=a.top),{x:b+.5*a.width,y:c+.5*a.height}}let aN=a=>{let{collisionRect:b,droppableRects:c,droppableContainers:d}=a,e=aM(b,b.left,b.top),f=[];for(let a of d){let{id:b}=a,d=c.get(b);if(d){let c=aH(aM(d),e);f.push({id:b,data:{droppableContainer:a,value:c}})}}return f.sort(aI)},aO=a=>{let{collisionRect:b,droppableRects:c,droppableContainers:d}=a,e=[];for(let a of d){let{id:d}=a,f=c.get(d);if(f){let c=function(a,b){let c=Math.max(b.top,a.top),d=Math.max(b.left,a.left),e=Math.min(b.left+b.width,a.left+a.width),f=Math.min(b.top+b.height,a.top+a.height);if(d<e&&c<f){let g=b.width*b.height,h=a.width*a.height,i=(e-d)*(f-c);return Number((i/(g+h-i)).toFixed(4))}return 0}(f,b);c>0&&e.push({id:d,data:{droppableContainer:a,value:c}})}}return e.sort(aJ)};function aP(a,b){return a&&b?{x:a.left-b.left,y:a.top-b.top}:aG}let aQ=function(a){for(var b=arguments.length,c=Array(b>1?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];return c.reduce((a,b)=>({...a,top:a.top+ +b.y,bottom:a.bottom+ +b.y,left:a.left+ +b.x,right:a.right+ +b.x}),{...a})},aR={ignoreTransform:!1};function aS(a,b){void 0===b&&(b=aR);let c=a.getBoundingClientRect();if(b.ignoreTransform){let{transform:b,transformOrigin:d}=ad(a).getComputedStyle(a);b&&(c=function(a,b,c){let d=function(a){if(a.startsWith("matrix3d(")){let b=a.slice(9,-1).split(/, /);return{x:+b[12],y:+b[13],scaleX:+b[0],scaleY:+b[5]}}if(a.startsWith("matrix(")){let b=a.slice(7,-1).split(/, /);return{x:+b[4],y:+b[5],scaleX:+b[0],scaleY:+b[3]}}return null}(b);if(!d)return a;let{scaleX:e,scaleY:f,x:g,y:h}=d,i=a.left-g-(1-e)*parseFloat(c),j=a.top-h-(1-f)*parseFloat(c.slice(c.indexOf(" ")+1)),k=e?a.width/e:a.width,l=f?a.height/f:a.height;return{width:k,height:l,top:j,right:i+k,bottom:j+l,left:i}}(c,b,d))}let{top:d,left:e,width:f,height:g,bottom:h,right:i}=c;return{top:d,left:e,width:f,height:g,bottom:h,right:i}}function aT(a){return aS(a,{ignoreTransform:!0})}function aU(a,b){let c=[];return a?function d(e){var f,g;let h;if(null!=b&&c.length>=b||!e)return c;if(ae(e)&&null!=e.scrollingElement&&!c.includes(e.scrollingElement))return c.push(e.scrollingElement),c;if(!af(e)||ag(e)||c.includes(e))return c;let i=ad(a).getComputedStyle(e);return(e!==a&&(void 0===(f=i)&&(f=ad(e).getComputedStyle(e)),h=/(auto|scroll|overlay)/,["overflow","overflowX","overflowY"].some(a=>{let b=f[a];return"string"==typeof b&&h.test(b)}))&&c.push(e),void 0===(g=i)&&(g=ad(e).getComputedStyle(e)),"fixed"===g.position)?c:d(e.parentNode)}(a):c}function aV(a){let[b]=aU(a,1);return null!=b?b:null}function aW(a){return aa&&a?ab(a)?a:ac(a)?ae(a)||a===ah(a).scrollingElement?window:af(a)?a:null:null:null}function aX(a){return ab(a)?a.scrollX:a.scrollLeft}function aY(a){return ab(a)?a.scrollY:a.scrollTop}function aZ(a){return{x:aX(a),y:aY(a)}}function a$(a){return!!aa&&!!a&&a===document.scrollingElement}function a_(a){let b={x:0,y:0},c=a$(a)?{height:window.innerHeight,width:window.innerWidth}:{height:a.clientHeight,width:a.clientWidth},d={x:a.scrollWidth-c.width,y:a.scrollHeight-c.height},e=a.scrollTop<=b.y,f=a.scrollLeft<=b.x;return{isTop:e,isLeft:f,isBottom:a.scrollTop>=d.y,isRight:a.scrollLeft>=d.x,maxScroll:d,minScroll:b}}(e=n||(n={}))[e.Forward=1]="Forward",e[e.Backward=-1]="Backward";let a0={x:.2,y:.2};function a1(a){return a.reduce((a,b)=>ar(a,aZ(b)),aG)}let a2=[["x",["left","right"],function(a){return a.reduce((a,b)=>a+aX(b),0)}],["y",["top","bottom"],function(a){return a.reduce((a,b)=>a+aY(b),0)}]];class a3{constructor(a,b){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const c=aU(b),d=a1(c);for(const[b,e,f]of(this.rect={...a},this.width=a.width,this.height=a.height,a2))for(const a of e)Object.defineProperty(this,a,{get:()=>{let e=f(c),g=d[b]-e;return this.rect[a]+g},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class a4{constructor(a){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(a=>{var b;return null==(b=this.target)?void 0:b.removeEventListener(...a)})},this.target=a}add(a,b,c){var d;null==(d=this.target)||d.addEventListener(a,b,c),this.listeners.push([a,b,c])}}function a5(a,b){let c=Math.abs(a.x),d=Math.abs(a.y);return"number"==typeof b?Math.sqrt(c**2+d**2)>b:"x"in b&&"y"in b?c>b.x&&d>b.y:"x"in b?c>b.x:"y"in b&&d>b.y}function a6(a){a.preventDefault()}function a7(a){a.stopPropagation()}(f=o||(o={})).Click="click",f.DragStart="dragstart",f.Keydown="keydown",f.ContextMenu="contextmenu",f.Resize="resize",f.SelectionChange="selectionchange",f.VisibilityChange="visibilitychange",(g=p||(p={})).Space="Space",g.Down="ArrowDown",g.Right="ArrowRight",g.Left="ArrowLeft",g.Up="ArrowUp",g.Esc="Escape",g.Enter="Enter",g.Tab="Tab";let a8={start:[p.Space,p.Enter],cancel:[p.Esc],end:[p.Space,p.Enter,p.Tab]},a9=(a,b)=>{let{currentCoordinates:c}=b;switch(a.code){case p.Right:return{...c,x:c.x+25};case p.Left:return{...c,x:c.x-25};case p.Down:return{...c,y:c.y+25};case p.Up:return{...c,y:c.y-25}}};class ba{constructor(a){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=a;const{event:{target:b}}=a;this.props=a,this.listeners=new a4(ah(b)),this.windowListeners=new a4(ad(b)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(o.Resize,this.handleCancel),this.windowListeners.add(o.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(o.Keydown,this.handleKeyDown))}handleStart(){let{activeNode:a,onStart:b}=this.props,c=a.node.current;c&&function(a,b){if(void 0===b&&(b=aS),!a)return;let{top:c,left:d,bottom:e,right:f}=b(a);aV(a)&&(e<=0||f<=0||c>=window.innerHeight||d>=window.innerWidth)&&a.scrollIntoView({block:"center",inline:"center"})}(c),b(aG)}handleKeyDown(a){if(at(a)){let{active:b,context:c,options:d}=this.props,{keyboardCodes:e=a8,coordinateGetter:f=a9,scrollBehavior:g="smooth"}=d,{code:h}=a;if(e.end.includes(h))return void this.handleEnd(a);if(e.cancel.includes(h))return void this.handleCancel(a);let{collisionRect:i}=c.current,j=i?{x:i.left,y:i.top}:aG;this.referenceCoordinates||(this.referenceCoordinates=j);let k=f(a,{active:b,context:c.current,currentCoordinates:j});if(k){let b=as(k,j),d={x:0,y:0},{scrollableAncestors:e}=c.current;for(let c of e){let e=a.code,{isTop:f,isRight:h,isLeft:i,isBottom:j,maxScroll:l,minScroll:m}=a_(c),n=function(a){if(a===document.scrollingElement){let{innerWidth:a,innerHeight:b}=window;return{top:0,left:0,right:a,bottom:b,width:a,height:b}}let{top:b,left:c,right:d,bottom:e}=a.getBoundingClientRect();return{top:b,left:c,right:d,bottom:e,width:a.clientWidth,height:a.clientHeight}}(c),o={x:Math.min(e===p.Right?n.right-n.width/2:n.right,Math.max(e===p.Right?n.left:n.left+n.width/2,k.x)),y:Math.min(e===p.Down?n.bottom-n.height/2:n.bottom,Math.max(e===p.Down?n.top:n.top+n.height/2,k.y))},q=e===p.Right&&!h||e===p.Left&&!i,r=e===p.Down&&!j||e===p.Up&&!f;if(q&&o.x!==k.x){let a=c.scrollLeft+b.x,f=e===p.Right&&a<=l.x||e===p.Left&&a>=m.x;if(f&&!b.y)return void c.scrollTo({left:a,behavior:g});f?d.x=c.scrollLeft-a:d.x=e===p.Right?c.scrollLeft-l.x:c.scrollLeft-m.x,d.x&&c.scrollBy({left:-d.x,behavior:g});break}if(r&&o.y!==k.y){let a=c.scrollTop+b.y,f=e===p.Down&&a<=l.y||e===p.Up&&a>=m.y;if(f&&!b.x)return void c.scrollTo({top:a,behavior:g});f?d.y=c.scrollTop-a:d.y=e===p.Down?c.scrollTop-l.y:c.scrollTop-m.y,d.y&&c.scrollBy({top:-d.y,behavior:g});break}}this.handleMove(a,ar(as(k,this.referenceCoordinates),d))}}}handleMove(a,b){let{onMove:c}=this.props;a.preventDefault(),c(b)}handleEnd(a){let{onEnd:b}=this.props;a.preventDefault(),this.detach(),b()}handleCancel(a){let{onCancel:b}=this.props;a.preventDefault(),this.detach(),b()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}function bb(a){return!!(a&&"distance"in a)}function bc(a){return!!(a&&"delay"in a)}ba.activators=[{eventName:"onKeyDown",handler:(a,b,c)=>{let{keyboardCodes:d=a8,onActivation:e}=b,{active:f}=c,{code:g}=a.nativeEvent;if(d.start.includes(g)){let b=f.activatorNode.current;return(!b||a.target===b)&&(a.preventDefault(),null==e||e({event:a.nativeEvent}),!0)}return!1}}];class bd{constructor(a,b,c){var d;void 0===c&&(c=function(a){let{EventTarget:b}=ad(a);return a instanceof b?a:ah(a)}(a.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=a,this.events=b;const{event:e}=a,{target:f}=e;this.props=a,this.events=b,this.document=ah(f),this.documentListeners=new a4(this.document),this.listeners=new a4(c),this.windowListeners=new a4(ad(f)),this.initialCoordinates=null!=(d=au(e))?d:aG,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){let{events:a,props:{options:{activationConstraint:b,bypassActivationConstraint:c}}}=this;if(this.listeners.add(a.move.name,this.handleMove,{passive:!1}),this.listeners.add(a.end.name,this.handleEnd),a.cancel&&this.listeners.add(a.cancel.name,this.handleCancel),this.windowListeners.add(o.Resize,this.handleCancel),this.windowListeners.add(o.DragStart,a6),this.windowListeners.add(o.VisibilityChange,this.handleCancel),this.windowListeners.add(o.ContextMenu,a6),this.documentListeners.add(o.Keydown,this.handleKeydown),b){if(null!=c&&c({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(bc(b)){this.timeoutId=setTimeout(this.handleStart,b.delay),this.handlePending(b);return}if(bb(b))return void this.handlePending(b)}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),null!==this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(a,b){let{active:c,onPending:d}=this.props;d(c,a,this.initialCoordinates,b)}handleStart(){let{initialCoordinates:a}=this,{onStart:b}=this.props;a&&(this.activated=!0,this.documentListeners.add(o.Click,a7,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(o.SelectionChange,this.removeTextSelection),b(a))}handleMove(a){var b;let{activated:c,initialCoordinates:d,props:e}=this,{onMove:f,options:{activationConstraint:g}}=e;if(!d)return;let h=null!=(b=au(a))?b:aG,i=as(d,h);if(!c&&g){if(bb(g)){if(null!=g.tolerance&&a5(i,g.tolerance))return this.handleCancel();if(a5(i,g.distance))return this.handleStart()}return bc(g)&&a5(i,g.tolerance)?this.handleCancel():void this.handlePending(g,i)}a.cancelable&&a.preventDefault(),f(h)}handleEnd(){let{onAbort:a,onEnd:b}=this.props;this.detach(),this.activated||a(this.props.active),b()}handleCancel(){let{onAbort:a,onCancel:b}=this.props;this.detach(),this.activated||a(this.props.active),b()}handleKeydown(a){a.code===p.Esc&&this.handleCancel()}removeTextSelection(){var a;null==(a=this.document.getSelection())||a.removeAllRanges()}}let be={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class bf extends bd{constructor(a){const{event:b}=a;super(a,be,ah(b.target))}}bf.activators=[{eventName:"onPointerDown",handler:(a,b)=>{let{nativeEvent:c}=a,{onActivation:d}=b;return!!c.isPrimary&&0===c.button&&(null==d||d({event:c}),!0)}}];let bg={move:{name:"mousemove"},end:{name:"mouseup"}};(h=q||(q={}))[h.RightClick=2]="RightClick";class bh extends bd{constructor(a){super(a,bg,ah(a.event.target))}}bh.activators=[{eventName:"onMouseDown",handler:(a,b)=>{let{nativeEvent:c}=a,{onActivation:d}=b;return c.button!==q.RightClick&&(null==d||d({event:c}),!0)}}];let bi={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class bj extends bd{constructor(a){super(a,bi)}static setup(){return window.addEventListener(bi.move.name,a,{capture:!1,passive:!1}),function(){window.removeEventListener(bi.move.name,a)};function a(){}}}bj.activators=[{eventName:"onTouchStart",handler:(a,b)=>{let{nativeEvent:c}=a,{onActivation:d}=b,{touches:e}=c;return!(e.length>1)&&(null==d||d({event:c}),!0)}}],(i=r||(r={}))[i.Pointer=0]="Pointer",i[i.DraggableRect=1]="DraggableRect",(j=s||(s={}))[j.TreeOrder=0]="TreeOrder",j[j.ReversedTreeOrder=1]="ReversedTreeOrder";let bk={x:{[n.Backward]:!1,[n.Forward]:!1},y:{[n.Backward]:!1,[n.Forward]:!1}};(k=t||(t={}))[k.Always=0]="Always",k[k.BeforeDragging=1]="BeforeDragging",k[k.WhileDragging=2]="WhileDragging",(u||(u={})).Optimized="optimized";let bl=new Map;function bm(a,b){return al(c=>a?c||("function"==typeof b?b(a):a):null,[b,a])}function bn(a){let{callback:b,disabled:c}=a,d=aj(b),e=(0,x.useMemo)(()=>{if(c||"u"<typeof window||void 0===window.ResizeObserver)return;let{ResizeObserver:a}=window;return new a(d)},[c]);return(0,x.useEffect)(()=>()=>null==e?void 0:e.disconnect(),[e]),e}function bo(a){return new a3(aS(a),a)}function bp(a,b,c){void 0===b&&(b=bo);let[d,e]=(0,x.useState)(null);function f(){e(d=>{if(!a)return null;if(!1===a.isConnected){var e;return null!=(e=null!=d?d:c)?e:null}let f=b(a);return JSON.stringify(d)===JSON.stringify(f)?d:f})}let g=function(a){let{callback:b,disabled:c}=a,d=aj(b),e=(0,x.useMemo)(()=>{if(c||"u"<typeof window||void 0===window.MutationObserver)return;let{MutationObserver:a}=window;return new a(d)},[d,c]);return(0,x.useEffect)(()=>()=>null==e?void 0:e.disconnect(),[e]),e}({callback(b){if(a)for(let c of b){let{type:b,target:d}=c;if("childList"===b&&d instanceof HTMLElement&&d.contains(a)){f();break}}}}),h=bn({callback:f});return ai(()=>{f(),a?(null==h||h.observe(a),null==g||g.observe(document.body,{childList:!0,subtree:!0})):(null==h||h.disconnect(),null==g||g.disconnect())},[a]),d}let bq=[];function br(a,b){void 0===b&&(b=[]);let c=(0,x.useRef)(null);return(0,x.useEffect)(()=>{c.current=null},b),(0,x.useEffect)(()=>{let b=a!==aG;b&&!c.current&&(c.current=a),!b&&c.current&&(c.current=null)},[a]),c.current?as(a,c.current):aG}function bs(a){return(0,x.useMemo)(()=>{let b,c;return a?(b=a.innerWidth,{top:0,left:0,right:b,bottom:c=a.innerHeight,width:b,height:c}):null},[a])}let bt=[],bu=[{sensor:bf,options:{}},{sensor:ba,options:{}}],bv={current:{}},bw={draggable:{measure:aT},droppable:{measure:aT,strategy:t.WhileDragging,frequency:u.Optimized},dragOverlay:{measure:aS}};class bx extends Map{get(a){var b;return null!=a&&null!=(b=super.get(a))?b:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(a=>{let{disabled:b}=a;return!b})}getNodeFor(a){var b,c;return null!=(b=null==(c=this.get(a))?void 0:c.node.current)?b:void 0}}let by={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new bx,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:aE},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:bw,measureDroppableContainers:aE,windowRect:null,measuringScheduled:!1},bz={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:aE,draggableNodes:new Map,over:null,measureDroppableContainers:aE},bA=(0,x.createContext)(bz),bB=(0,x.createContext)(by);function bC(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new bx}}}function bD(a,b){switch(b.type){case m.DragStart:return{...a,draggable:{...a.draggable,initialCoordinates:b.initialCoordinates,active:b.active}};case m.DragMove:if(null==a.draggable.active)return a;return{...a,draggable:{...a.draggable,translate:{x:b.coordinates.x-a.draggable.initialCoordinates.x,y:b.coordinates.y-a.draggable.initialCoordinates.y}}};case m.DragEnd:case m.DragCancel:return{...a,draggable:{...a.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case m.RegisterDroppable:{let{element:c}=b,{id:d}=c,e=new bx(a.droppable.containers);return e.set(d,c),{...a,droppable:{...a.droppable,containers:e}}}case m.SetDroppableDisabled:{let{id:c,key:d,disabled:e}=b,f=a.droppable.containers.get(c);if(!f||d!==f.key)return a;let g=new bx(a.droppable.containers);return g.set(c,{...f,disabled:e}),{...a,droppable:{...a.droppable,containers:g}}}case m.UnregisterDroppable:{let{id:c,key:d}=b,e=a.droppable.containers.get(c);if(!e||d!==e.key)return a;let f=new bx(a.droppable.containers);return f.delete(c),{...a,droppable:{...a.droppable,containers:f}}}default:return a}}function bE(a){let{disabled:b}=a,{active:c,activatorEvent:d,draggableNodes:e}=(0,x.useContext)(bA),f=an(d),g=an(null==c?void 0:c.id);return(0,x.useEffect)(()=>{if(!b&&!d&&f&&null!=g){if(!at(f)||document.activeElement===f.target)return;let a=e.get(g);if(!a)return;let{activatorNode:b,node:c}=a;(b.current||c.current)&&requestAnimationFrame(()=>{for(let a of[b.current,c.current]){if(!a)continue;let b=a.matches(aw)?a:a.querySelector(aw);if(b){b.focus();break}}})}},[d,b,e,g,f]),null}let bF=(0,x.createContext)({...aG,scaleX:1,scaleY:1});(l=v||(v={}))[l.Uninitialized=0]="Uninitialized",l[l.Initializing=1]="Initializing",l[l.Initialized=2]="Initialized";let bG=(0,x.memo)(function(a){var b,c,d,e,f,g,h,i;let j,k,l,o,p,q,u,w,{id:z,accessibility:A,autoScroll:B=!0,children:C,sensors:D=bu,collisionDetection:E=aO,measuring:F,modifiers:G,...H}=a,[I,J]=(0,x.useReducer)(bD,void 0,bC),[K,L]=function(){let[a]=(0,x.useState)(()=>new Set),b=(0,x.useCallback)(b=>(a.add(b),()=>a.delete(b)),[a]);return[(0,x.useCallback)(b=>{let{type:c,event:d}=b;a.forEach(a=>{var b;return null==(b=a[c])?void 0:b.call(a,d)})},[a]),b]}(),[M,N]=(0,x.useState)(v.Uninitialized),O=M===v.Initialized,{draggable:{active:P,nodes:Q,translate:R},droppable:{containers:S}}=I,T=null!=P?Q.get(P):null,U=(0,x.useRef)({initial:null,translated:null}),V=(0,x.useMemo)(()=>{var a;return null!=P?{id:P,data:null!=(a=null==T?void 0:T.data)?a:bv,rect:U}:null},[P,T]),W=(0,x.useRef)(null),[X,Y]=(0,x.useState)(null),[Z,$]=(0,x.useState)(null),ab=ak(H,Object.values(H)),ac=ap("DndDescribedBy",z),ae=(0,x.useMemo)(()=>S.getEnabled(),[S]),ag=(0,x.useMemo)(()=>({draggable:{...bw.draggable,...null==F?void 0:F.draggable},droppable:{...bw.droppable,...null==F?void 0:F.droppable},dragOverlay:{...bw.dragOverlay,...null==F?void 0:F.dragOverlay}}),[null==F?void 0:F.draggable,null==F?void 0:F.droppable,null==F?void 0:F.dragOverlay]),{droppableRects:ah,measureDroppableContainers:aj,measuringScheduled:ao}=function(a,b){let{dragging:c,dependencies:d,config:e}=b,[f,g]=(0,x.useState)(null),{frequency:h,measure:i,strategy:j}=e,k=(0,x.useRef)(a),l=function(){switch(j){case t.Always:return!1;case t.BeforeDragging:return c;default:return!c}}(),m=ak(l),n=(0,x.useCallback)(function(a){void 0===a&&(a=[]),m.current||g(b=>null===b?a:b.concat(a.filter(a=>!b.includes(a))))},[m]),o=(0,x.useRef)(null),p=al(b=>{if(l&&!c)return bl;if(!b||b===bl||k.current!==a||null!=f){let b=new Map;for(let c of a){if(!c)continue;if(f&&f.length>0&&!f.includes(c.id)&&c.rect.current){b.set(c.id,c.rect.current);continue}let a=c.node.current,d=a?new a3(i(a),a):null;c.rect.current=d,d&&b.set(c.id,d)}return b}return b},[a,f,c,l,i]);return(0,x.useEffect)(()=>{k.current=a},[a]),(0,x.useEffect)(()=>{l||n()},[c,l]),(0,x.useEffect)(()=>{f&&f.length>0&&g(null)},[JSON.stringify(f)]),(0,x.useEffect)(()=>{l||"number"!=typeof h||null!==o.current||(o.current=setTimeout(()=>{n(),o.current=null},h))},[h,l,n,...d]),{droppableRects:p,measureDroppableContainers:n,measuringScheduled:null!=f}}(ae,{dragging:O,dependencies:[R.x,R.y],config:ag.droppable}),aq=al(a=>{var b;return null==P?null:null!=(b=null!=p?p:a)?b:null},[p=(o=null!=P?Q.get(P):void 0)?o.node.current:null,P]),as=(0,x.useMemo)(()=>Z?au(Z):null,[Z]),at=(j=(null==X?void 0:X.autoScrollEnabled)===!1,k="object"==typeof B?!1===B.enabled:!1===B,l=O&&!j&&!k,"object"==typeof B?{...B,enabled:l}:{enabled:l}),av=bm(aq,ag.draggable.measure);!function(a){let{activeNode:b,measure:c,initialRect:d,config:e=!0}=a,f=(0,x.useRef)(!1),{x:g,y:h}="boolean"==typeof e?{x:e,y:e}:e;ai(()=>{if(!g&&!h||!b){f.current=!1;return}if(f.current||!d)return;let a=null==b?void 0:b.node.current;if(!a||!1===a.isConnected)return;let e=aP(c(a),d);if(g||(e.x=0),h||(e.y=0),f.current=!0,Math.abs(e.x)>0||Math.abs(e.y)>0){let b=aV(a);b&&b.scrollBy({top:e.y,left:e.x})}},[b,g,h,d,c])}({activeNode:null!=P?Q.get(P):null,config:at.layoutShiftCompensation,initialRect:av,measure:ag.draggable.measure});let aw=bp(aq,ag.draggable.measure,av),ax=bp(aq?aq.parentElement:null),ay=(0,x.useRef)({activatorEvent:null,active:null,activeNode:aq,collisionRect:null,collisions:null,droppableRects:ah,draggableNodes:Q,draggingNode:null,draggingNodeRect:null,droppableContainers:S,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),az=S.getNodeFor(null==(b=ay.current.over)?void 0:b.id),aB=function(a){let{measure:b}=a,[c,d]=(0,x.useState)(null),e=bn({callback:(0,x.useCallback)(a=>{for(let{target:c}of a)if(af(c)){d(a=>{let d=b(c);return a?{...a,width:d.width,height:d.height}:d});break}},[b])}),[f,g]=am((0,x.useCallback)(a=>{let c=function(a){if(!a)return null;if(a.children.length>1)return a;let b=a.children[0];return af(b)?b:a}(a);null==e||e.disconnect(),c&&(null==e||e.observe(c)),d(c?b(c):null)},[b,e]));return(0,x.useMemo)(()=>({nodeRef:f,rect:c,setRef:g}),[c,f,g])}({measure:ag.dragOverlay.measure}),aC=null!=(c=aB.nodeRef.current)?c:aq,aE=O?null!=(d=aB.rect)?d:aw:null,aF=!!(aB.nodeRef.current&&aB.rect),aH=(q=bm(f=aF?null:aw),aP(f,q)),aI=bs(aC?ad(aC):null),aJ=(g=O?null!=az?az:aq:null,u=(0,x.useRef)(g),w=al(a=>g?a&&a!==bq&&g&&u.current&&g.parentNode===u.current.parentNode?a:aU(g):bq,[g]),(0,x.useEffect)(()=>{u.current=g},[g]),w),aK=function(a,b){void 0===b&&(b=aS);let[c]=a,d=bs(c?ad(c):null),[e,f]=(0,x.useState)(bt);function g(){f(()=>a.length?a.map(a=>a$(a)?d:new a3(b(a),a)):bt)}let h=bn({callback:g});return ai(()=>{null==h||h.disconnect(),g(),a.forEach(a=>null==h?void 0:h.observe(a))},[a]),e}(aJ),aM=function(a,b){let{transform:c,...d}=b;return null!=a&&a.length?a.reduce((a,b)=>b({transform:a,...d}),c):c}(G,{transform:{x:R.x-aH.x,y:R.y-aH.y,scaleX:1,scaleY:1},activatorEvent:Z,active:V,activeNodeRect:aw,containerNodeRect:ax,draggingNodeRect:aE,over:ay.current.over,overlayNodeRect:aB.rect,scrollableAncestors:aJ,scrollableAncestorRects:aK,windowRect:aI}),aN=as?ar(as,R):null,aR=function(a){let[b,c]=(0,x.useState)(null),d=(0,x.useRef)(a),e=(0,x.useCallback)(a=>{let b=aW(a.target);b&&c(a=>a?(a.set(b,aZ(b)),new Map(a)):null)},[]);return(0,x.useEffect)(()=>{let b=d.current;if(a!==b){f(b);let g=a.map(a=>{let b=aW(a);return b?(b.addEventListener("scroll",e,{passive:!0}),[b,aZ(b)]):null}).filter(a=>null!=a);c(g.length?new Map(g):null),d.current=a}return()=>{f(a),f(b)};function f(a){a.forEach(a=>{let b=aW(a);null==b||b.removeEventListener("scroll",e)})}},[e,a]),(0,x.useMemo)(()=>a.length?b?Array.from(b.values()).reduce((a,b)=>ar(a,b),aG):a1(a):aG,[a,b])}(aJ),aT=br(aR),aX=br(aR,[aw]),aY=ar(aM,aT),a2=aE?aQ(aE,aM):null,a4=V&&a2?E({active:V,collisionRect:a2,droppableRects:ah,droppableContainers:ae,pointerCoordinates:aN}):null,a5=aL(a4,"id"),[a6,a7]=(0,x.useState)(null),a8=(h=aF?aM:ar(aM,aX),i=null!=(e=null==a6?void 0:a6.rect)?e:null,{...h,scaleX:i&&aw?i.width/aw.width:1,scaleY:i&&aw?i.height/aw.height:1}),a9=(0,x.useRef)(null),ba=(0,x.useCallback)((a,b)=>{let{sensor:c,options:d}=b;if(null==W.current)return;let e=Q.get(W.current);if(!e)return;let f=a.nativeEvent,g=new c({active:W.current,activeNode:e,event:f,options:d,context:ay,onAbort(a){if(!Q.get(a))return;let{onDragAbort:b}=ab.current,c={id:a};null==b||b(c),K({type:"onDragAbort",event:c})},onPending(a,b,c,d){if(!Q.get(a))return;let{onDragPending:e}=ab.current,f={id:a,constraint:b,initialCoordinates:c,offset:d};null==e||e(f),K({type:"onDragPending",event:f})},onStart(a){let b=W.current;if(null==b)return;let c=Q.get(b);if(!c)return;let{onDragStart:d}=ab.current,e={activatorEvent:f,active:{id:b,data:c.data,rect:U}};(0,_.unstable_batchedUpdates)(()=>{null==d||d(e),N(v.Initializing),J({type:m.DragStart,initialCoordinates:a,active:b}),K({type:"onDragStart",event:e}),Y(a9.current),$(f)})},onMove(a){J({type:m.DragMove,coordinates:a})},onEnd:h(m.DragEnd),onCancel:h(m.DragCancel)});function h(a){return async function(){let{active:b,collisions:c,over:d,scrollAdjustedTranslate:e}=ay.current,g=null;if(b&&e){let{cancelDrop:h}=ab.current;g={activatorEvent:f,active:b,collisions:c,delta:e,over:d},a===m.DragEnd&&"function"==typeof h&&await Promise.resolve(h(g))&&(a=m.DragCancel)}W.current=null,(0,_.unstable_batchedUpdates)(()=>{J({type:a}),N(v.Uninitialized),a7(null),Y(null),$(null),a9.current=null;let b=a===m.DragEnd?"onDragEnd":"onDragCancel";if(g){let a=ab.current[b];null==a||a(g),K({type:b,event:g})}})}}a9.current=g},[Q]),bb=(0,x.useCallback)((a,b)=>(c,d)=>{let e=c.nativeEvent,f=Q.get(d);null!==W.current||!f||e.dndKit||e.defaultPrevented||!0===a(c,b.options,{active:f})&&(e.dndKit={capturedBy:b.sensor},W.current=d,ba(c,b))},[Q,ba]),bc=(0,x.useMemo)(()=>D.reduce((a,b)=>{let{sensor:c}=b;return[...a,...c.activators.map(a=>({eventName:a.eventName,handler:bb(a.handler,b)}))]},[]),[D,bb]);(0,x.useEffect)(()=>{if(!aa)return;let a=D.map(a=>{let{sensor:b}=a;return null==b.setup?void 0:b.setup()});return()=>{for(let b of a)null==b||b()}},D.map(a=>{let{sensor:b}=a;return b})),ai(()=>{aw&&M===v.Initializing&&N(v.Initialized)},[aw,M]),(0,x.useEffect)(()=>{let{onDragMove:a}=ab.current,{active:b,activatorEvent:c,collisions:d,over:e}=ay.current;if(!b||!c)return;let f={active:b,activatorEvent:c,collisions:d,delta:{x:aY.x,y:aY.y},over:e};(0,_.unstable_batchedUpdates)(()=>{null==a||a(f),K({type:"onDragMove",event:f})})},[aY.x,aY.y]),(0,x.useEffect)(()=>{let{active:a,activatorEvent:b,collisions:c,droppableContainers:d,scrollAdjustedTranslate:e}=ay.current;if(!a||null==W.current||!b||!e)return;let{onDragOver:f}=ab.current,g=d.get(a5),h=g&&g.rect.current?{id:g.id,rect:g.rect.current,data:g.data,disabled:g.disabled}:null,i={active:a,activatorEvent:b,collisions:c,delta:{x:e.x,y:e.y},over:h};(0,_.unstable_batchedUpdates)(()=>{a7(h),null==f||f(i),K({type:"onDragOver",event:i})})},[a5]),ai(()=>{ay.current={activatorEvent:Z,active:V,activeNode:aq,collisionRect:a2,collisions:a4,droppableRects:ah,draggableNodes:Q,draggingNode:aC,draggingNodeRect:aE,droppableContainers:S,over:a6,scrollableAncestors:aJ,scrollAdjustedTranslate:aY},U.current={initial:aE,translated:a2}},[V,aq,a4,a2,Q,aC,aE,ah,S,a6,aJ,aY]),function(a){let b,{acceleration:c,activator:d=r.Pointer,canScroll:e,draggingRect:f,enabled:g,interval:h=5,order:i=s.TreeOrder,pointerCoordinates:j,scrollableAncestors:k,scrollableAncestorRects:l,delta:m,threshold:o}=a,p=function(a){let{delta:b,disabled:c}=a,d=an(b);return al(a=>{if(c||!d||!a)return bk;let e={x:Math.sign(b.x-d.x),y:Math.sign(b.y-d.y)};return{x:{[n.Backward]:a.x[n.Backward]||-1===e.x,[n.Forward]:a.x[n.Forward]||1===e.x},y:{[n.Backward]:a.y[n.Backward]||-1===e.y,[n.Forward]:a.y[n.Forward]||1===e.y}}},[c,b,d])}({delta:m,disabled:!g}),[q,t]=(b=(0,x.useRef)(null),[(0,x.useCallback)((a,c)=>{b.current=setInterval(a,c)},[]),(0,x.useCallback)(()=>{null!==b.current&&(clearInterval(b.current),b.current=null)},[])]),u=(0,x.useRef)({x:0,y:0}),v=(0,x.useRef)({x:0,y:0}),w=(0,x.useMemo)(()=>{switch(d){case r.Pointer:return j?{top:j.y,bottom:j.y,left:j.x,right:j.x}:null;case r.DraggableRect:return f}},[d,f,j]),y=(0,x.useRef)(null),z=(0,x.useCallback)(()=>{let a=y.current;if(!a)return;let b=u.current.x*v.current.x,c=u.current.y*v.current.y;a.scrollBy(b,c)},[]),A=(0,x.useMemo)(()=>i===s.TreeOrder?[...k].reverse():k,[i,k]);(0,x.useEffect)(()=>{if(!g||!k.length||!w)return void t();for(let a of A){if((null==e?void 0:e(a))===!1)continue;let b=l[k.indexOf(a)];if(!b)continue;let{direction:d,speed:f}=function(a,b,c,d,e){let{top:f,left:g,right:h,bottom:i}=c;void 0===d&&(d=10),void 0===e&&(e=a0);let{isTop:j,isBottom:k,isLeft:l,isRight:m}=a_(a),o={x:0,y:0},p={x:0,y:0},q={height:b.height*e.y,width:b.width*e.x};return!j&&f<=b.top+q.height?(o.y=n.Backward,p.y=d*Math.abs((b.top+q.height-f)/q.height)):!k&&i>=b.bottom-q.height&&(o.y=n.Forward,p.y=d*Math.abs((b.bottom-q.height-i)/q.height)),!m&&h>=b.right-q.width?(o.x=n.Forward,p.x=d*Math.abs((b.right-q.width-h)/q.width)):!l&&g<=b.left+q.width&&(o.x=n.Backward,p.x=d*Math.abs((b.left+q.width-g)/q.width)),{direction:o,speed:p}}(a,b,w,c,o);for(let a of["x","y"])p[a][d[a]]||(f[a]=0,d[a]=0);if(f.x>0||f.y>0){t(),y.current=a,q(z,h),u.current=f,v.current=d;return}}u.current={x:0,y:0},v.current={x:0,y:0},t()},[c,z,e,t,g,h,JSON.stringify(w),JSON.stringify(p),q,k,A,l,JSON.stringify(o)])}({...at,delta:R,draggingRect:a2,pointerCoordinates:aN,scrollableAncestors:aJ,scrollableAncestorRects:aK});let bd=(0,x.useMemo)(()=>({active:V,activeNode:aq,activeNodeRect:aw,activatorEvent:Z,collisions:a4,containerNodeRect:ax,dragOverlay:aB,draggableNodes:Q,droppableContainers:S,droppableRects:ah,over:a6,measureDroppableContainers:aj,scrollableAncestors:aJ,scrollableAncestorRects:aK,measuringConfiguration:ag,measuringScheduled:ao,windowRect:aI}),[V,aq,aw,Z,a4,ax,aB,Q,S,ah,a6,aj,aJ,aK,ag,ao,aI]),be=(0,x.useMemo)(()=>({activatorEvent:Z,activators:bc,active:V,activeNodeRect:aw,ariaDescribedById:{draggable:ac},dispatch:J,draggableNodes:Q,over:a6,measureDroppableContainers:aj}),[Z,bc,V,aw,J,ac,Q,a6,aj]);return y().createElement(aA.Provider,{value:L},y().createElement(bA.Provider,{value:be},y().createElement(bB.Provider,{value:bd},y().createElement(bF.Provider,{value:a8},C)),y().createElement(bE,{disabled:(null==A?void 0:A.restoreFocus)===!1})),y().createElement(aD,{...A,hiddenTextDescribedById:ac}))}),bH=(0,x.createContext)(null),bI="button",bJ={timeout:25};function bK(a,b,c){let d=a.slice();return d.splice(c<0?d.length+c:c,0,d.splice(b,1)[0]),d}function bL(a){return null!==a&&a>=0}let bM=a=>{let{rects:b,activeIndex:c,overIndex:d,index:e}=a,f=bK(b,d,c),g=b[e],h=f[e];return h&&g?{x:h.left-g.left,y:h.top-g.top,scaleX:h.width/g.width,scaleY:h.height/g.height}:null},bN={scaleX:1,scaleY:1},bO=a=>{var b,c,d,e;let f,g,h,{activeIndex:i,activeNodeRect:j,index:k,rects:l,overIndex:m}=a,n=null!=(b=l[i])?b:j;if(!n)return null;if(k===i){let a=l[m];return a?{x:0,y:i<m?a.top+a.height-(n.top+n.height):a.top-n.top,...bN}:null}let o=(c=l,d=k,e=i,f=c[d],g=c[d-1],h=c[d+1],f?e<d?g?f.top-(g.top+g.height):h?h.top-(f.top+f.height):0:h?h.top-(f.top+f.height):g?f.top-(g.top+g.height):0:0);return k>i&&k<=m?{x:0,y:-n.height-o,...bN}:k<i&&k>=m?{x:0,y:n.height+o,...bN}:{x:0,y:0,...bN}},bP="Sortable",bQ=y().createContext({activeIndex:-1,containerId:bP,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:bM,disabled:{draggable:!1,droppable:!1}});function bR(a){let{children:b,id:c,items:d,strategy:e=bM,disabled:f=!1}=a,{active:g,dragOverlay:h,droppableRects:i,over:j,measureDroppableContainers:k}=(0,x.useContext)(bB),l=ap(bP,c),m=null!==h.rect,n=(0,x.useMemo)(()=>d.map(a=>"object"==typeof a&&"id"in a?a.id:a),[d]),o=null!=g,p=g?n.indexOf(g.id):-1,q=j?n.indexOf(j.id):-1,r=(0,x.useRef)(n),s=!function(a,b){if(a===b)return!0;if(a.length!==b.length)return!1;for(let c=0;c<a.length;c++)if(a[c]!==b[c])return!1;return!0}(n,r.current),t=-1!==q&&-1===p||s,u="boolean"==typeof f?{draggable:f,droppable:f}:f;ai(()=>{s&&o&&k(n)},[s,n,o,k]),(0,x.useEffect)(()=>{r.current=n},[n]);let v=(0,x.useMemo)(()=>({activeIndex:p,containerId:l,disabled:u,disableTransforms:t,items:n,overIndex:q,useDragOverlay:m,sortedRects:n.reduce((a,b,c)=>{let d=i.get(b);return d&&(a[c]=d),a},Array(n.length)),strategy:e}),[p,l,u.draggable,u.droppable,t,n,q,i,m,e]);return y().createElement(bQ.Provider,{value:v},b)}let bS=a=>{let{id:b,items:c,activeIndex:d,overIndex:e}=a;return bK(c,d,e).indexOf(b)},bT=a=>{let{containerId:b,isSorting:c,wasDragging:d,index:e,items:f,newIndex:g,previousItems:h,previousContainerId:i,transition:j}=a;return!!j&&!!d&&(h===f||e!==g)&&(!!c||g!==e&&b===i)},bU={duration:200,easing:"ease"},bV="transform",bW=av.Transition.toString({property:bV,duration:0,easing:"linear"}),bX={roleDescription:"sortable"};function bY(a){if(!a)return!1;let b=a.data.current;return!!b&&"sortable"in b&&"object"==typeof b.sortable&&"containerId"in b.sortable&&"items"in b.sortable&&"index"in b.sortable}let bZ=[p.Down,p.Right,p.Up,p.Left],b$=(a,b)=>{let{context:{active:c,collisionRect:d,droppableRects:e,droppableContainers:f,over:g,scrollableAncestors:h}}=b;if(bZ.includes(a.code)){if(a.preventDefault(),!c||!d)return;let b=[];f.getEnabled().forEach(c=>{if(!c||null!=c&&c.disabled)return;let f=e.get(c.id);if(f)switch(a.code){case p.Down:d.top<f.top&&b.push(c);break;case p.Up:d.top>f.top&&b.push(c);break;case p.Left:d.left>f.left&&b.push(c);break;case p.Right:d.left<f.left&&b.push(c)}});let k=(a=>{let{collisionRect:b,droppableRects:c,droppableContainers:d}=a,e=aK(b),f=[];for(let a of d){let{id:b}=a,d=c.get(b);if(d){let c=aK(d),g=Number((e.reduce((a,b,d)=>a+aH(c[d],b),0)/4).toFixed(4));f.push({id:b,data:{droppableContainer:a,value:g}})}}return f.sort(aI)})({active:c,collisionRect:d,droppableRects:e,droppableContainers:b,pointerCoordinates:null}),l=aL(k,"id");if(l===(null==g?void 0:g.id)&&k.length>1&&(l=k[1].id),null!=l){let a=f.get(c.id),b=f.get(l),g=b?e.get(b.id):null,k=null==b?void 0:b.node.current;if(k&&g&&a&&b){var i,j;let c=aU(k).some((a,b)=>h[b]!==a),e=b_(a,b),f=(i=a,j=b,!!bY(i)&&!!bY(j)&&!!b_(i,j)&&i.data.current.sortable.index<j.data.current.sortable.index),l=c||!e?{x:0,y:0}:{x:f?d.width-g.width:0,y:f?d.height-g.height:0},m={x:g.left,y:g.top};return l.x&&l.y?m:as(m,l)}}}};function b_(a,b){return!!bY(a)&&!!bY(b)&&a.data.current.sortable.containerId===b.data.current.sortable.containerId}let b0=a=>{let b,{containerNodeRect:c,draggingNodeRect:d,transform:e}=a;return d&&c?(b={...e},d.top+e.y<=c.top?b.y=c.top-d.top:d.bottom+e.y>=c.top+c.height&&(b.y=c.top+c.height-d.bottom),d.left+e.x<=c.left?b.x=c.left-d.left:d.right+e.x>=c.left+c.width&&(b.x=c.left+c.width-d.right),b):e},b1=a=>{let{transform:b}=a;return{...b,x:0}};function b2({id:a,index:b,model:c,isFirst:d,isLast:e,modelCaps:f,onEdit:g,onMoveUp:h,onMoveDown:i,onRemove:j}){let{attributes:k,listeners:l,setNodeRef:n,transform:o,isDragging:p}=function(a){var b,c,d,e;let{animateLayoutChanges:f=bT,attributes:g,disabled:h,data:i,getNewIndex:j=bS,id:k,strategy:l,resizeObserverConfig:n,transition:o=bU}=a,{items:p,containerId:q,activeIndex:r,disabled:s,disableTransforms:t,sortedRects:u,overIndex:v,useDragOverlay:w,strategy:y}=(0,x.useContext)(bQ),z=(b=h,c=s,"boolean"==typeof b?{draggable:b,droppable:!1}:{draggable:null!=(d=null==b?void 0:b.draggable)?d:c.draggable,droppable:null!=(e=null==b?void 0:b.droppable)?e:c.droppable}),A=p.indexOf(k),B=(0,x.useMemo)(()=>({sortable:{containerId:q,index:A,items:p},...i}),[q,i,A,p]),C=(0,x.useMemo)(()=>p.slice(p.indexOf(k)),[p,k]),{rect:D,node:E,isOver:F,setNodeRef:G}=function(a){let{data:b,disabled:c=!1,id:d,resizeObserverConfig:e}=a,f=ap("Droppable"),{active:g,dispatch:h,over:i,measureDroppableContainers:j}=(0,x.useContext)(bA),k=(0,x.useRef)({disabled:c}),l=(0,x.useRef)(!1),n=(0,x.useRef)(null),o=(0,x.useRef)(null),{disabled:p,updateMeasurementsFor:q,timeout:r}={...bJ,...e},s=ak(null!=q?q:d),t=bn({callback:(0,x.useCallback)(()=>{if(!l.current){l.current=!0;return}null!=o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{j(Array.isArray(s.current)?s.current:[s.current]),o.current=null},r)},[r]),disabled:p||!g}),[u,v]=am((0,x.useCallback)((a,b)=>{t&&(b&&(t.unobserve(b),l.current=!1),a&&t.observe(a))},[t])),w=ak(b);return(0,x.useEffect)(()=>{t&&u.current&&(t.disconnect(),l.current=!1,t.observe(u.current))},[u,t]),(0,x.useEffect)(()=>(h({type:m.RegisterDroppable,element:{id:d,key:f,disabled:c,node:u,rect:n,data:w}}),()=>h({type:m.UnregisterDroppable,key:f,id:d})),[d]),(0,x.useEffect)(()=>{c!==k.current.disabled&&(h({type:m.SetDroppableDisabled,id:d,key:f,disabled:c}),k.current.disabled=c)},[d,f,c,h]),{active:g,rect:n,isOver:(null==i?void 0:i.id)===d,node:u,over:i,setNodeRef:v}}({id:k,data:B,disabled:z.droppable,resizeObserverConfig:{updateMeasurementsFor:C,...n}}),{active:H,activatorEvent:I,activeNodeRect:J,attributes:K,setNodeRef:L,listeners:M,isDragging:N,over:O,setActivatorNodeRef:P,transform:Q}=function(a){let{id:b,data:c,disabled:d=!1,attributes:e}=a,f=ap("Draggable"),{activators:g,activatorEvent:h,active:i,activeNodeRect:j,ariaDescribedById:k,draggableNodes:l,over:m}=(0,x.useContext)(bA),{role:n=bI,roleDescription:o="draggable",tabIndex:p=0}=null!=e?e:{},q=(null==i?void 0:i.id)===b,r=(0,x.useContext)(q?bF:bH),[s,t]=am(),[u,v]=am(),w=(0,x.useMemo)(()=>g.reduce((a,c)=>{let{eventName:d,handler:e}=c;return a[d]=a=>{e(a,b)},a},{}),[g,b]),y=ak(c);return ai(()=>(l.set(b,{id:b,key:f,node:s,activatorNode:u,data:y}),()=>{let a=l.get(b);a&&a.key===f&&l.delete(b)}),[l,b]),{active:i,activatorEvent:h,activeNodeRect:j,attributes:(0,x.useMemo)(()=>({role:n,tabIndex:p,"aria-disabled":d,"aria-pressed":!!q&&n===bI||void 0,"aria-roledescription":o,"aria-describedby":k.draggable}),[d,n,p,q,o,k.draggable]),isDragging:q,listeners:d?void 0:w,node:s,over:m,setNodeRef:t,setActivatorNodeRef:v,transform:r}}({id:k,data:B,attributes:{...bX,...g},disabled:z.draggable}),R=function(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return(0,x.useMemo)(()=>a=>{b.forEach(b=>b(a))},b)}(G,L),S=!!H,T=S&&!t&&bL(r)&&bL(v),U=!w&&N,V=U&&T?Q:null,W=T?null!=V?V:(null!=l?l:y)({rects:u,activeNodeRect:J,activeIndex:r,overIndex:v,index:A}):null,X=bL(r)&&bL(v)?j({id:k,items:p,activeIndex:r,overIndex:v}):A,Y=null==H?void 0:H.id,Z=(0,x.useRef)({activeId:Y,items:p,newIndex:X,containerId:q}),$=p!==Z.current.items,_=f({active:H,containerId:q,isDragging:N,isSorting:S,id:k,index:A,items:p,newIndex:Z.current.newIndex,previousItems:Z.current.items,previousContainerId:Z.current.containerId,transition:o,wasDragging:null!=Z.current.activeId}),aa=function(a){let{disabled:b,index:c,node:d,rect:e}=a,[f,g]=(0,x.useState)(null),h=(0,x.useRef)(c);return ai(()=>{if(!b&&c!==h.current&&d.current){let a=e.current;if(a){let b=aS(d.current,{ignoreTransform:!0}),c={x:a.left-b.left,y:a.top-b.top,scaleX:a.width/b.width,scaleY:a.height/b.height};(c.x||c.y)&&g(c)}}c!==h.current&&(h.current=c)},[b,c,d,e]),(0,x.useEffect)(()=>{f&&g(null)},[f]),f}({disabled:!_,index:A,node:E,rect:D});return(0,x.useEffect)(()=>{S&&Z.current.newIndex!==X&&(Z.current.newIndex=X),q!==Z.current.containerId&&(Z.current.containerId=q),p!==Z.current.items&&(Z.current.items=p)},[S,X,q,p]),(0,x.useEffect)(()=>{if(Y===Z.current.activeId)return;if(null!=Y&&null==Z.current.activeId){Z.current.activeId=Y;return}let a=setTimeout(()=>{Z.current.activeId=Y},50);return()=>clearTimeout(a)},[Y]),{active:H,activeIndex:r,attributes:K,data:B,rect:D,index:A,newIndex:X,items:p,isOver:F,isSorting:S,isDragging:N,listeners:M,node:E,overIndex:v,over:O,setNodeRef:R,setActivatorNodeRef:P,setDroppableNodeRef:G,setDraggableNodeRef:L,transform:null!=aa?aa:W,transition:aa||$&&Z.current.newIndex===A?bW:(!U||at(I))&&o&&(S||_)?av.Transition.toString({...o,property:bV}):void 0}}({id:a}),q={transform:av.Transform.toString(o),opacity:p?.5:1,zIndex:p?999:void 0},[r,s]=(0,x.useState)(!1),[t,u]=(0,x.useState)(c),v=()=>{let a=t.trim();a&&a!==c?g(a):u(c),s(!1)};return(0,w.jsxs)("div",{ref:n,style:q,className:`group flex min-w-0 items-center gap-2 rounded-lg border px-2.5 py-1.5 transition-all ${p?"border-primary/40 bg-panel shadow-md ring-1 ring-primary/20":"border-transparent bg-panel hover:border-border-subtle"}`,children:[(0,w.jsx)("span",{className:"flex size-5 shrink-0 items-center justify-center rounded bg-primary/10 text-[10px] font-bold text-primary",children:b+1}),(0,w.jsx)("button",{...k,...l,type:"button",className:"cursor-grab touch-none shrink-0 p-0.5 rounded text-text-muted/50 hover:text-text-main active:cursor-grabbing",title:"Drag to reorder",children:(0,w.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",children:[(0,w.jsx)("circle",{cx:"9",cy:"4",r:"1.5"}),(0,w.jsx)("circle",{cx:"15",cy:"4",r:"1.5"}),(0,w.jsx)("circle",{cx:"9",cy:"12",r:"1.5"}),(0,w.jsx)("circle",{cx:"15",cy:"12",r:"1.5"}),(0,w.jsx)("circle",{cx:"9",cy:"20",r:"1.5"}),(0,w.jsx)("circle",{cx:"15",cy:"20",r:"1.5"})]})}),r?(0,w.jsx)("input",{autoFocus:!0,value:t,onChange:a=>u(a.target.value),onBlur:v,onKeyDown:a=>{"Enter"===a.key&&v(),"Escape"===a.key&&(u(c),s(!1))},className:"min-w-0 flex-1 rounded border border-primary/40 bg-panel px-1.5 py-0.5 font-mono text-xs text-text-main outline-none"}):(0,w.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-1.5 cursor-text rounded px-1 py-0.5 hover:bg-black/[0.03] dark:hover:bg-white/[0.03]",onClick:()=>s(!0),title:"Click to edit",children:[(0,w.jsx)("code",{className:"min-w-0 flex-1 truncate font-mono text-xs text-text-main",children:c}),f?.[c]&&(0,w.jsx)(A.nh,{caps:f[c],size:11})]}),(0,w.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100",children:[(0,w.jsx)("button",{onClick:h,disabled:d,className:`rounded p-1 transition-colors ${d?"cursor-not-allowed text-text-muted/20":"text-text-muted hover:bg-black/5 hover:text-primary dark:hover:bg-white/5"}`,title:"Move up",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"arrow_upward"})}),(0,w.jsx)("button",{onClick:i,disabled:e,className:`rounded p-1 transition-colors ${e?"cursor-not-allowed text-text-muted/20":"text-text-muted hover:bg-black/5 hover:text-primary dark:hover:bg-white/5"}`,title:"Move down",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"arrow_downward"})})]}),(0,w.jsx)("button",{onClick:j,className:"shrink-0 rounded p-1 text-text-muted opacity-0 transition-all hover:bg-danger/10 hover:text-danger group-hover:opacity-100",title:"Remove model",children:(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})}var b3=c(81449),b4=c(38930);let b5=[500,1e3,2e3,5e3,1e4,25e3,5e4,1e5],b6=a=>"number"==typeof a&&Number.isFinite(a)?`$${a.toFixed(3).replace(/\.?0+$/,"")}`:"—";function b7({models:a=[],strategyConfig:b={},onStrategyChange:c}){let[d,e]=(0,x.useState)(1e3),[f,g]=(0,x.useState)(null),[h,i]=(0,x.useState)(!1),[j,k]=(0,x.useState)("");(0,x.useRef)(0),b?.fallbackStrategy;let l=(a,b,c,d="")=>(0,w.jsxs)("div",{className:`rounded-lg border border-border-subtle bg-surface-2/50 px-2.5 py-2 ${d}`,children:[(0,w.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:a}),(0,w.jsx)("div",{className:"mt-0.5 text-sm font-semibold text-text-main",children:b}),c?(0,w.jsx)("div",{className:"text-[10px] text-text-muted",children:c}):null]});return(0,w.jsxs)("div",{className:"rounded-lg border border-border-subtle bg-surface-2/50 p-3",children:[(0,w.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary",children:"query_stats"}),(0,w.jsx)("span",{className:"text-xs font-medium text-text-main",children:"Combo Simulator"}),h&&(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"simulating…"})]}),(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"assumed input"}),(0,w.jsx)("select",{value:d,onChange:a=>e(Number(a.target.value)),className:"rounded border border-border-subtle bg-surface-1 px-1.5 py-0.5 text-[10px] text-text-main",children:b5.map(a=>(0,w.jsxs)("option",{value:a,children:[a>=1e3?`${a/1e3}k`:a," tok"]},a))})]})]}),f?(0,w.jsxs)("div",{className:"flex flex-col gap-2.5",children:[(0,w.jsxs)("div",{className:"grid grid-cols-2 gap-1.5 sm:grid-cols-4",children:[l("Strategy",G(f.strategy),`${f.members} member${1!==f.members?"s":""}`),l("Logical calls",f.calls.min===f.calls.max?`${f.calls.max}`:`${f.calls.min}–${f.calls.max}`,`per request \xb7 max ${f.calls.max}`),l("Provider fanout",String(f.maxProviderFanout),"parallel calls at peak"),l("Est. cost",f.calls.min===f.calls.max?b6(f.estimatedCost.worst):`${b6(f.estimatedCost.optimistic)}–${b6(f.estimatedCost.worst)}`,`${b6(f.perCallCost)} / call`)]}),f.budgetRisk?.rejected?(0,w.jsxs)("div",{className:"flex items-start gap-1.5 rounded-lg border border-red-500/30 bg-red-500/10 px-2.5 py-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px] text-red-400",children:"error"}),(0,w.jsxs)("p",{className:"text-[11px] text-red-300",children:["Will be rejected at runtime: worst-case cost ",b6(f.budgetRisk.estimatedCostUsd)," exceeds the budget limit ",b6(f.budgetRisk.limit)," (combo_cost_budget_exceeded)."]})]}):f.budgetsEnabled?(0,w.jsxs)("div",{className:"flex items-center gap-1.5 rounded-lg border border-emerald-500/30 bg-emerald-500/10 px-2.5 py-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px] text-emerald-400",children:"check_circle"}),(0,w.jsxs)("p",{className:"text-[11px] text-emerald-300",children:["Within the configured budget limit (",b6(f.budgetRisk.limit),")."]})]}):(0,w.jsx)("p",{className:"text-[10px] text-text-muted",children:"Budgets are off — unlimited cost/calls allowed."}),f.roleViolations.length>0&&(0,w.jsxs)("div",{className:"flex items-start gap-1.5 rounded-lg border border-amber-500/30 bg-amber-500/10 px-2.5 py-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px] text-amber-400",children:"warning"}),(0,w.jsx)("div",{className:"text-[11px] text-amber-300",children:f.roleViolations.map(a=>(0,w.jsx)("p",{children:a.reason},`${a.role}-${a.model}`))})]}),(0,w.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-border-subtle bg-surface-1/60 px-2.5 py-1.5",children:[(0,w.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:"Capabilities"}),(0,w.jsx)(b4.default,{caps:{thinking:f.capabilities?.thinking,vision:f.capabilities?.vision?.input,tools:f.capabilities?.tools,pdf:f.capabilities?.pdf,audio:f.capabilities?.audio?.input},size:13}),f.capabilities?.contextWindow?(0,w.jsxs)("span",{className:"ml-auto text-[10px] text-text-muted",children:["ctx ",(f.capabilities.contextWindow/1e3).toFixed(0),"k \xb7 max out"," ",f.capabilities.maxOutput?`${Math.round(f.capabilities.maxOutput/1e3)}k`:"—"]}):null]}),(0,w.jsx)("div",{className:"flex flex-col gap-1",children:f.memberRows.map(a=>{let b=(0,b3.vT)(a.latency?.p95,a.latency?.sampleCount);return(0,w.jsxs)("div",{className:"flex items-center gap-2 rounded-md border border-border-subtle bg-surface-1/40 px-2 py-1.5",children:[(0,w.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono text-[10px] text-text-main",children:a.fullModel}),a.roles.length>0&&(0,w.jsx)("span",{className:"rounded bg-primary/15 px-1 py-0.5 text-[9px] font-medium uppercase tracking-wide text-primary",children:a.roles.join("+")}),(0,w.jsxs)("span",{className:"text-[10px] text-text-muted",children:[b6(a.costPerCall),"/call"]}),(0,w.jsx)("span",{className:`w-24 text-right text-[10px] ${b.insufficient?"text-amber-400":"text-text-muted"}`,title:b.insufficient?`${a.latency?.sampleCount??0} latency samples — need ≥ 10`:"",children:b.value})]},a.fullModel)})}),(0,w.jsx)("p",{className:"text-[9px] leading-relaxed text-text-muted",children:"Worst-case calls match the runtime call-cap budget; cost uses the same per-leaf formula as the runtime budget guard (output capped at 4k tokens/call, input assumed above). Latency = p95 over the last 30d of usage for that model."})]}):(0,w.jsx)("p",{className:"py-2 text-center text-[11px] text-text-muted",children:j||"Add at least one model to preview the simulation."})]})}function b8({isOpen:a,combo:b,onClose:c,onSave:d,activeProviders:e,modelCaps:f={},kindFilter:g=null,comboStrategies:h={}}){let[i,j]=(0,x.useState)(b?.name||""),[k,l]=(0,x.useState)(b?.models||[]),[m,n]=(0,x.useState)(b&&h?.[b.name]?.fallbackStrategy||b?.strategyConfig?.fallbackStrategy||"fallback"),[o,p]=(0,x.useState)(!1),[q,r]=(0,x.useState)(!1),[s,t]=(0,x.useState)(""),[u,v]=(0,x.useState)({}),[y,z]=(0,x.useState)(!0),[B,E]=(0,x.useState)(!0),[G,H]=(0,x.useState)(60),[I,J]=(0,x.useState)(""),[K,L]=(0,x.useState)(!1),[M,N]=(0,x.useState)(""),[O,P]=(0,x.useState)(a),Q=function(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return(0,x.useMemo)(()=>[...b].filter(a=>null!=a),[...b])}(aF(bf,{activationConstraint:{distance:5}}),aF(ba,{coordinateGetter:b$})),R=k.map((a,b)=>({uid:`item-${b}`,model:a})),S=a=>a.trim()?C.test(a)?(t(""),!0):(t("Only letters, numbers, -, _ and . allowed"),!1):(t("Name is required"),!1),T=async()=>{if(!S(i))return;r(!0);let a={...b?.strategyConfig||{},fallbackStrategy:m};"smart-routing"===m&&(a.smartRouting={cookiePoolEnabled:y,intentDetection:{confidenceThreshold:G/100,urlPatternBoost:B,...I.trim()?{keywords:I.split(",").map(a=>a.trim()).filter(Boolean)}:{},llmClassifierFallback:{enabled:K,...M.trim()?{model:M.trim()}:{}}}}),await d({name:i.trim(),models:k,strategyConfig:a}),r(!1)},U=!!b;return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(A.aF,{isOpen:a,onClose:c,title:U?"Edit Combo":"Create Combo",size:"lg",children:(0,w.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)(A.pd,{label:"Combo Name",value:i,onChange:a=>{let b=a.target.value;j(b),b?S(b):t("")},placeholder:"my-combo",error:s}),(0,w.jsxs)("div",{className:"mt-1.5 flex items-center gap-2",children:[(0,w.jsx)("p",{className:"text-[10px] text-text-muted",children:"Use this name as the model in your client:"}),i.trim()&&(0,w.jsx)("code",{className:"rounded bg-primary/10 px-1.5 py-0.5 font-mono text-[10px] text-primary",children:i.trim()})]})]}),(0,w.jsxs)("div",{children:[(0,w.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("label",{className:"text-sm font-medium text-text-main",children:"Models"}),k.length>0&&(0,w.jsxs)(A.Ex,{variant:"info",size:"sm",children:[k.length," model",1!==k.length?"s":""]})]}),(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"Drag to reorder priority"})]}),0===k.length?(0,w.jsxs)("div",{className:"flex flex-col items-center justify-center py-8 border border-dashed border-border rounded-lg bg-surface-2/50",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-text-muted text-2xl mb-2",children:"layers"}),(0,w.jsx)("p",{className:"text-xs text-text-muted mb-3",children:"Add models to build your combo"}),(0,w.jsx)(A.$n,{size:"sm",variant:"secondary",icon:"add",onClick:()=>p(!0),children:"Add First Model"})]}):(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(bG,{sensors:Q,collisionDetection:aN,onDragEnd:a=>{let{active:b,over:c}=a;if(c&&b.id!==c.id){let a=R.findIndex(a=>a.uid===b.id),d=R.findIndex(a=>a.uid===c.id);-1!==a&&-1!==d&&l(b=>bK(b,a,d))}},modifiers:[b1,b0],children:(0,w.jsx)(bR,{items:R.map(a=>a.uid),strategy:bO,children:(0,w.jsx)("div",{className:"flex max-h-[45vh] min-w-0 flex-col gap-1 overflow-y-auto rounded-lg bg-surface-2/30 p-1.5",children:R.map(({uid:a,model:b},c)=>(0,w.jsx)(b2,{id:a,index:c,model:b,modelCaps:f,isFirst:0===c,isLast:c===R.length-1,onEdit:a=>{let b=[...k];b[c]=a,l(b)},onMoveUp:()=>(a=>{if(0===a)return;let b=[...k];[b[a-1],b[a]]=[b[a],b[a-1]],l(b)})(c),onMoveDown:()=>(a=>{if(a===k.length-1)return;let b=[...k];[b[a],b[a+1]]=[b[a+1],b[a]],l(b)})(c),onRemove:()=>{l(a=>a.filter((a,b)=>b!==c))}},a))})})}),(0,w.jsxs)("button",{onClick:()=>p(!0),className:"w-full mt-2 py-2 border border-dashed border-primary/30 rounded-lg text-xs text-primary font-medium hover:border-primary hover:bg-primary/5 transition-colors flex items-center justify-center gap-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"add"}),"Add Model"]})]})]}),(0,w.jsxs)("div",{children:[(0,w.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,w.jsx)("label",{className:"text-sm font-medium text-text-main",children:"Strategy"}),(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"How the combo dispatches requests"})]}),(0,w.jsx)("div",{className:"grid grid-cols-2 gap-1.5 sm:grid-cols-3 lg:grid-cols-6",children:D.map(a=>{let b=m===a.value,c=F(a.value);return(0,w.jsxs)("button",{type:"button",onClick:()=>n(a.value),title:a.desc,className:`flex flex-col items-center gap-1 rounded-lg border px-2 py-1.5 text-[11px] transition-colors ${b?"border-primary/50 bg-primary/10 text-primary":"border-border-subtle bg-surface-2/50 text-text-muted hover:border-border hover:text-text-main"}`,children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[16px]",style:{color:b?void 0:c.color},children:a.icon}),(0,w.jsx)("span",{className:"font-medium",children:a.label})]},a.value)})})]}),"smart-routing"===m&&(0,w.jsxs)("div",{className:"flex flex-col gap-2.5 rounded-lg border border-primary/20 bg-primary/[0.04] px-3 py-2.5",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[16px]",style:{color:"#EC4899"},children:"alt_route"}),(0,w.jsx)("span",{className:"text-xs font-medium text-text-main",children:"Smart Routing"}),(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"Routes each request by tool-calling need & research intent"})]}),(0,w.jsxs)("label",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,w.jsx)("input",{type:"checkbox",checked:y,onChange:a=>z(a.target.checked),className:"rounded border-border accent-primary"}),(0,w.jsx)("span",{className:"text-[11px] text-text-muted",children:"Route research intents to web (cookie) providers first"})]}),(0,w.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,w.jsx)("label",{className:"text-[10px] text-text-muted",children:"Research keywords (comma-separated — leave empty for defaults)"}),(0,w.jsx)("textarea",{value:I,onChange:a=>J(a.target.value),rows:2,placeholder:"research, compare, bandingkan, cari sumber, jurnal, ...",className:"resize-none rounded border border-border bg-background px-2 py-1.5 font-mono text-[11px] focus:border-primary focus:outline-none"})]}),(0,w.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,w.jsxs)("label",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,w.jsx)("input",{type:"checkbox",checked:B,onChange:a=>E(a.target.checked),className:"rounded border-border accent-primary"}),(0,w.jsx)("span",{className:"text-[11px] text-text-muted",children:"Treat prompts containing a URL as research"})]}),(0,w.jsxs)("label",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,w.jsx)("input",{type:"checkbox",checked:K,onChange:a=>L(a.target.checked),className:"rounded border-border accent-primary"}),(0,w.jsx)("span",{className:"text-[11px] text-text-muted",children:"LLM classifier fallback for ambiguous prompts"})]}),K&&(0,w.jsx)("input",{value:M,onChange:a=>N(a.target.value),placeholder:"kr/claude-haiku-4.5",className:"rounded border border-border bg-background px-2 py-1 font-mono text-[11px] focus:border-primary focus:outline-none"})]}),(0,w.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,w.jsxs)("div",{className:"flex items-center justify-between",children:[(0,w.jsx)("label",{className:"text-[10px] text-text-muted",children:"Heuristic confidence threshold"}),(0,w.jsxs)("span",{className:"font-mono text-[10px] text-primary",children:[G,"%"]})]}),(0,w.jsx)("input",{type:"range",min:0,max:100,value:G,onChange:a=>H(Number(a.target.value)),className:"w-full accent-primary"})]})]}),k.length>0&&(0,w.jsx)(b7,{models:k,strategyConfig:{fallbackStrategy:m}}),k.length>=2&&(0,w.jsxs)("div",{className:"rounded-lg border border-border-subtle bg-surface-2/50 px-3 py-2",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"lightbulb"}),(0,w.jsx)("span",{className:"text-xs font-medium text-text-main",children:"Strategy Tips"})]}),(0,w.jsx)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-2",children:D.map(a=>(0,w.jsxs)("div",{className:"flex items-start gap-1.5 text-[11px] text-text-muted",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[12px] mt-0.5 text-primary/60",children:a.icon}),(0,w.jsxs)("span",{children:[(0,w.jsx)("span",{className:"font-medium text-text-main",children:a.label})," — ",a.desc]})]},a.value))}),(0,w.jsx)("p",{className:"mt-1.5 text-[10px] text-text-muted",children:"Set strategy after creating the combo from the Combos tab."})]}),(0,w.jsxs)("div",{className:"flex flex-col gap-2 pt-1 sm:flex-row",children:[(0,w.jsx)(A.$n,{onClick:c,variant:"ghost",fullWidth:!0,size:"sm",children:"Cancel"}),(0,w.jsx)(A.$n,{onClick:T,fullWidth:!0,size:"sm",icon:U?"save":"add",disabled:!i.trim()||!!s||q,children:q?"Saving...":U?"Save Changes":"Create Combo"})]})]})}),(0,w.jsx)(A.rq,{isOpen:o,onClose:()=>p(!1),onSelect:a=>{l(b=>b.includes(a.value)?b:[...b,a.value])},onDeselect:a=>{l(b=>b.filter(b=>b!==a.value))},activeProviders:e,modelAliases:u,title:"Add Model to Combo",kindFilter:g,addedModelValues:k,closeOnSelect:!1})]})}var b9=c(83352);let ca=[500,1e3,2e3,5e3,1e4,25e3,5e4,1e5],cb=D.map(a=>a.value),cc={latency:"Latency",cost:"Cost",reliability:"Reliability"};function cd({activeProviders:a=[]}){let b,[c,d]=(0,x.useState)([]),[e,f]=(0,x.useState)(""),[g,h]=(0,x.useState)(1e3),[i,j]=(0,x.useState)({latency:40,cost:40,reliability:20}),[k,l]=(0,x.useState)([...cb]),[m,n]=(0,x.useState)(null),[o,p]=(0,x.useState)(!1),[q,r]=(0,x.useState)(""),[s,t]=(0,x.useState)([]),[u,v]=(0,x.useState)(!1),[y,z]=(0,x.useState)({}),A=(0,x.useRef)(0),B=a=>{d(a),f(a.join(", "))};(0,x.useEffect)(()=>{if(0===c.length){n(null),r("");return}if(k.length<1)return;let a=++A.current;p(!0),r("");let b=setTimeout(async()=>{try{let b,d,e=await fetch("/api/combos/lab",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({models:c,inputTokens:g,weights:(d=(b={latency:i.latency,cost:i.cost,reliability:i.reliability}).latency+b.cost+b.reliability)<=0?{latency:.4,cost:.4,reliability:.2}:{latency:b.latency/d,cost:b.cost/d,reliability:b.reliability/d},strategies:k})});if(!e.ok){let a=await e.json().catch(()=>({}));throw Error(a?.error||"Analysis failed")}let f=await e.json();a===A.current&&n(f)}catch(b){a===A.current&&(r(b?.message||"Analysis failed"),n(null))}finally{a===A.current&&p(!1)}},350);return()=>clearTimeout(b)},[c.join("|"),g,i.latency,i.cost,i.reliability,k.join("|")]);let C=m?.comparison||[],E=Math.max(...C.map(a=>a.score||0),1e-9),H=m?.dataCoverage;return(0,w.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,w.jsxs)("div",{className:"rounded-lg border border-border-subtle bg-surface-2/50 p-3",children:[(0,w.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary",children:"science"}),(0,w.jsx)("span",{className:"text-xs font-medium text-text-main",children:"Combo Lab — what-if analysis"}),o&&(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"analyzing…"})]}),(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("span",{className:"text-[10px] text-text-muted",children:"assumed input"}),(0,w.jsx)("select",{value:g,onChange:a=>h(Number(a.target.value)),className:"rounded border border-border-subtle bg-surface-1 px-1.5 py-0.5 text-[10px] text-text-main",children:ca.map(a=>(0,w.jsxs)("option",{value:a,children:[a>=1e3?`${a/1e3}k`:a," tok"]},a))})]})]}),(0,w.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,w.jsxs)("div",{className:"flex items-stretch gap-1.5",children:[(0,w.jsx)("input",{list:"combo-lab-models",value:e,onChange:a=>{var b;f(b=a.target.value),d([...new Set(b.split(/[\n,]+/).map(a=>a.trim()).filter(Boolean))])},placeholder:"provider/model, provider/model — e.g. cc/claude-opus-4-7, gh/gpt-5.3-codex",className:"min-w-0 flex-1 rounded-lg border border-border-subtle bg-surface-1 px-2.5 py-1.5 font-mono text-[11px] text-text-main placeholder:text-text-muted/60 focus:border-primary/50 focus:outline-none"}),(0,w.jsxs)("button",{type:"button",onClick:()=>v(!0),className:"flex shrink-0 items-center gap-1 rounded-lg border border-dashed border-border px-2.5 py-1.5 text-[11px] font-medium text-primary transition-colors hover:border-primary/50 hover:bg-primary/5",title:"Pick models from the provider catalog (same picker as Add Model in combos)",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"add"}),"Add Model"]})]}),(0,w.jsx)("datalist",{id:"combo-lab-models",children:s.map(a=>(0,w.jsx)("option",{value:a},a))}),c.length>0&&(0,w.jsx)("div",{className:"flex flex-wrap gap-1",children:c.map(a=>(0,w.jsxs)("span",{className:"flex items-center gap-1 rounded bg-surface-1 px-1.5 py-0.5 font-mono text-[10px] text-text-main",children:[a,(0,w.jsx)("button",{onClick:()=>{B(c.filter(b=>b!==a))},className:"text-text-muted hover:text-red-400",title:"Remove",children:"\xd7"})]},a))})]}),(0,w.jsxs)("div",{className:"mt-2.5 flex flex-col gap-2.5 sm:flex-row sm:items-start sm:justify-between",children:[(0,w.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,w.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:"Axis weights"}),["latency","cost","reliability"].map(a=>(0,w.jsxs)("label",{className:"flex items-center gap-2 text-[11px] text-text-muted",children:[(0,w.jsx)("span",{className:"w-16",children:cc[a]}),(0,w.jsx)("input",{type:"range",min:0,max:100,step:5,value:i[a],onChange:b=>j(c=>({...c,[a]:Number(b.target.value)})),className:"h-1 w-32 accent-primary"}),(0,w.jsxs)("span",{className:"w-8 text-right font-mono text-[10px] text-text-main",children:[i[a],"%"]})]},a))]}),(0,w.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,w.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-text-muted",children:"Compare strategies"}),(0,w.jsx)("div",{className:"flex flex-wrap gap-1.5",children:D.map(a=>{let b=k.includes(a.value),c=F(a.value);return(0,w.jsxs)("button",{type:"button",onClick:()=>{var b;return b=a.value,void l(a=>a.includes(b)?a.filter(a=>a!==b):[...a,b])},title:a.desc,className:`flex items-center gap-1 rounded-md border px-1.5 py-1 text-[10px] transition-colors ${b?"border-primary/40 bg-primary/10 text-text-main":"border-border-subtle bg-surface-1 text-text-muted/60 hover:text-text-muted"}`,children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[13px]",style:{color:b?void 0:c.color},children:a.icon}),a.label]},a.value)})})]})]})]}),0===c.length?(0,w.jsx)("p",{className:"rounded-lg border border-border-subtle bg-surface-2/50 p-4 text-center text-[11px] text-text-muted",children:"Enter at least one model (provider/model) to compare strategies against historical latency, cost and reliability."}):q?(0,w.jsx)("p",{className:"rounded-lg border border-red-500/30 bg-red-500/10 px-3 py-2 text-[11px] text-red-300",children:q}):m?(0,w.jsxs)("div",{className:"flex flex-col gap-2.5",children:[m.recommendation&&(0,w.jsxs)("div",{className:"flex items-start gap-2 rounded-lg border border-emerald-500/30 bg-emerald-500/10 px-3 py-2.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[18px] text-emerald-400",children:"recommend"}),(0,w.jsxs)("div",{className:"flex min-w-0 flex-col gap-0.5",children:[(0,w.jsxs)("div",{className:"flex items-center gap-2",children:[(0,w.jsxs)("span",{className:"text-xs font-semibold text-text-main",children:["Recommended: ",G(m.recommendation.strategy)]}),(b=F(m.recommendation.strategy),(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px]",style:{color:b.color},children:b.icon}))]}),(0,w.jsx)("p",{className:"text-[11px] text-emerald-200/80",children:m.recommendation.reason}),m.recommendation.runnerUp&&(0,w.jsxs)("p",{className:"text-[10px] text-text-muted",children:["Runner-up: ",G(m.recommendation.runnerUp.strategy)," (score ",(100*m.recommendation.runnerUp.score).toFixed(0),")"]})]})]}),m.atRiskProviders?.length>0&&(0,w.jsxs)("div",{className:"flex items-start gap-1.5 rounded-lg border border-amber-500/30 bg-amber-500/10 px-2.5 py-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[14px] text-amber-400",children:"warning"}),(0,w.jsxs)("p",{className:"text-[11px] text-amber-300",children:["Provider",m.atRiskProviders.length>1?"s":""," currently locked or breaker-open:"," ",m.atRiskProviders.join(", ")," — expect failures on those members right now."]})]}),H&&(0,w.jsxs)("p",{className:"text-[10px] text-text-muted",children:["Data coverage: latency ",H.latency.known,"/",H.latency.total," \xb7 reliability ",H.reliability.known,"/",H.reliability.total," \xb7 pricing"," ",H.cost.known,"/",H.cost.total," member",1!==H.cost.total?"s":""," (30d usage history).",H.reliability.known<H.reliability.total&&" Members without history are assumed 90% reliable."]}),(0,w.jsx)("div",{className:"overflow-x-auto rounded-lg border border-border-subtle bg-surface-2/50",children:(0,w.jsxs)("table",{className:"w-full min-w-[640px] text-left",children:[(0,w.jsx)("thead",{children:(0,w.jsxs)("tr",{className:"border-b border-border-subtle text-[9px] uppercase tracking-wide text-text-muted",children:[(0,w.jsx)("th",{className:"px-2.5 py-1.5 font-medium",children:"#"}),(0,w.jsx)("th",{className:"px-2.5 py-1.5 font-medium",children:"Strategy"}),(0,w.jsx)("th",{className:"px-2.5 py-1.5 font-medium",children:"Score"}),(0,w.jsx)("th",{className:"px-2.5 py-1.5 font-medium",children:"Calls (typ)"}),(0,w.jsx)("th",{className:"px-2.5 py-1.5 font-medium",children:"Latency p95"}),(0,w.jsx)("th",{className:"px-2.5 py-1.5 font-medium",children:"Cost / req"}),(0,w.jsx)("th",{className:"px-2.5 py-1.5 font-medium",children:"Reliability"})]})}),(0,w.jsx)("tbody",{children:C.map((a,b)=>{let c,d,e,f=F(a.strategy);(0,b3.vT)(a.wallClockP95Ms,null);let g=m.recommendation&&a.strategy===m.recommendation.strategy;return(0,w.jsxs)("tr",{className:`border-b border-border-subtle/50 last:border-0 ${g?"bg-emerald-500/5":""}`,children:[(0,w.jsx)("td",{className:"px-2.5 py-1.5 text-[11px] text-text-muted",children:b+1}),(0,w.jsx)("td",{className:"px-2.5 py-1.5",children:(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("span",{className:"material-symbols-outlined text-[15px]",style:{color:f.color},children:f.icon}),(0,w.jsx)("span",{className:"text-[11px] font-medium text-text-main",children:G(a.strategy)}),g&&(0,w.jsx)("span",{className:"rounded bg-emerald-500/20 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-emerald-400",children:"Best"}),a.invalid&&(0,w.jsx)("span",{className:"rounded bg-red-500/20 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-red-400",title:a.invalidReasons.join(" \xb7 "),children:"Invalid"})]})}),(0,w.jsx)("td",{className:"px-2.5 py-1.5",children:(0,w.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,w.jsx)("div",{className:"h-1.5 w-16 overflow-hidden rounded bg-surface-1",children:(0,w.jsx)("div",{className:"h-full rounded bg-primary",style:{width:`${Math.round(a.score/E*100)}%`}})}),(0,w.jsx)("span",{className:"text-[10px] font-mono text-text-main",children:null!=a.score?a.score.toFixed(2):"—"})]})}),(0,w.jsxs)("td",{className:"px-2.5 py-1.5 text-[11px] text-text-muted",children:["number"==typeof(c=a.expectedCalls)&&Number.isFinite(c)?Number.isInteger(c)?String(c):c.toFixed(1):"—",a.calls&&a.calls.min!==a.calls.max&&(0,w.jsxs)("span",{className:"text-[9px] text-text-muted/70",children:[" (",a.calls.min,"–",a.calls.max,")"]})]}),(0,w.jsx)("td",{className:"px-2.5 py-1.5 text-[11px] text-text-main",title:null!=a.wallClockP95Ms?`${a.wallClockP95Ms}ms`:"",children:null!=a.wallClockP95Ms?(0,b3.Se)(a.wallClockP95Ms):"—"}),(0,w.jsx)("td",{className:"px-2.5 py-1.5 text-[11px] text-text-main",children:"number"==typeof(d=a.expectedCostUsd)&&Number.isFinite(d)?`$${d.toFixed(4).replace(/\.?0+$/,"")}`:"—"}),(0,w.jsx)("td",{className:"px-2.5 py-1.5 text-[11px] text-text-main",children:"number"==typeof(e=a.reliability)&&Number.isFinite(e)?`${(100*e).toFixed(1)}%`:"—"})]},a.strategy)})})]})}),(0,w.jsxs)("p",{className:"text-[9px] leading-relaxed text-text-muted",children:["Expected = typical request (midpoint of the runtime call range). Cost uses the same per-leaf formula as the runtime budget guard (output capped 4k tokens/call, input assumed ",g,"). Latency = expected wall-clock p95 including parallel fanout (fusion panel, swarm workers). Reliability = success rate from 30d usage history per model. Axis scores are normalized relative to the best strategy; weights renormalize over axes with data."]})]}):(0,w.jsx)("p",{className:"rounded-lg border border-border-subtle bg-surface-2/50 p-4 text-center text-[11px] text-text-muted",children:"Analyzing…"}),(0,w.jsx)(b9.default,{isOpen:u,onClose:()=>v(!1),onSelect:a=>{let b=a?.value;!b||c.includes(b)||B([...c,b])},onDeselect:a=>{let b=a?.value;b&&B(c.filter(a=>a!==b))},activeProviders:a,modelAliases:y,addedModelValues:c,closeOnSelect:!1,title:"Add Model to Combo Lab"})]})}let ce=[{value:"overview",label:"Overview"},{value:"combos",label:"Combos"},{value:"templates",label:"Templates"},{value:"lab",label:"Lab"}];function cf(){let a=(0,z.useRouter)(),b=(0,z.useSearchParams)().get("tab")||"overview",[c,d]=(0,x.useState)([]),[e,f]=(0,x.useState)(!0),[g,h]=(0,x.useState)(!1),[i,j]=(0,x.useState)(null),[k,l]=(0,x.useState)([]),[m,n]=(0,x.useState)({}),[o,p]=(0,x.useState)({}),[q,r]=(0,x.useState)({}),[s,t]=(0,x.useState)(null),{copied:u,copy:v}=(0,B.C)(),y=(0,x.useCallback)(async()=>{try{let[a,b,c,e]=await Promise.all([fetch("/api/combos"),fetch("/api/providers"),fetch("/api/settings"),fetch("/api/models")]),f=await a.json(),g=await b.json(),h=c.ok?await c.json():{};if(a.ok&&d((f.combos||[]).filter(a=>!a.kind||"llm"===a.kind)),b.ok&&l(g.connections||[]),e.ok){let a=await e.json(),b={},c={};for(let d of a.models||[]){d.caps&&(b[d.fullModel]=d.caps);let a=(d.fullModel||"").split("/").slice(1).join("/");a&&d.provider&&(c[a]||(c[a]=[]),c[a].includes(d.provider)||c[a].push(d.provider))}p(b),r(c)}n(h.comboStrategies||{})}catch(a){console.log("Error fetching data:",a)}finally{f(!1)}},[]),C=b=>a.push(`/dashboard/combos?tab=${b}`),D=async a=>{try{let b=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(b.ok)await y(),h(!1);else{let a=await b.json();alert(a.error||"Failed to create combo")}}catch(a){console.log("Error creating combo:",a)}},E=async(a,b)=>{try{let c=await fetch(`/api/combos/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(c.ok){let a=b.strategyConfig?.fallbackStrategy,c=i?.name,d=b.name?.trim();a&&(d&&d!==c&&m[c]&&await F(c,{fallbackStrategy:"fallback"}),d&&await F(d,{fallbackStrategy:a})),await y(),j(null)}else{let a=await c.json();alert(a.error||"Failed to update combo")}}catch(a){console.log("Error updating combo:",a)}},F=async(a,b)=>{try{let d=m[a]||{},e={...d,...b},f=e.fallbackStrategy,g=new Set(["fallbackStrategy","thinking","autoScale","budgets",...{fusion:["judgeModel","fusionTuning"],swarm:["managerModel","staffModel","auditModel","workerCount","swarmTuning","enableTelemetry"],cascade:["cascade"],"smart-routing":["smartRouting"],fallback:[],"round-robin":[]}[f]||[]]),h={};for(let[a,b]of Object.entries(e))g.has(a)&&(h[a]=b);let i=Object.keys(d).some(a=>"fallbackStrategy"!==a&&null!=d[a]&&""!==d[a]),j=Object.keys(h).some(a=>"fallbackStrategy"!==a),k="fallback"===h.fallbackStrategy&&i&&!j;if(!k&&("swarm"===h.fallbackStrategy||"fusion"===h.fallbackStrategy)){let b=c.find(b=>b.name===a),d=b?.models||[];try{let a=await fetch("/api/combos/validate-roles",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({strategy:h.fallbackStrategy,managerModel:h.managerModel,staffModel:h.staffModel,auditModel:h.auditModel,judgeModel:h.judgeModel,panel:d})});if(a.ok){let b=await a.json();if(!b.valid&&Array.isArray(b.violations)&&b.violations.length>0){let a=b.violations.map(a=>`${a.role}: ${a.reason}`).join("\n");alert(`Cannot save strategy — invalid role models:
|
|
3
3
|
|
|
4
|
-
${a}`);return}}}catch{}}await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({comboStrategies:{[a]:k?null:h}})}),n(b=>{let c={...b};return k?delete c[a]:c[a]=h,c})}catch(a){console.log("Error updating combo strategy:",a)}};return e?(0,w.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,w.jsx)(A.Qv,{}),(0,w.jsx)(A.Qv,{})]}):(0,w.jsxs)("div",{className:"flex min-w-0 flex-col gap-5",children:[(0,w.jsx)(A.zY,{title:"Combos",description:"Group models under one name, then pick a strategy per combo",icon:"layers",actions:(0,w.jsx)(A.$n,{size:"sm",icon:"add",onClick:()=>h(!0),className:"whitespace-nowrap",children:"Create Combo"})}),(0,w.jsx)(A.Iz,{options:ce,value:b,onChange:C}),"overview"===b&&(0,w.jsx)(J,{combos:c,comboStrategies:m,activeProviders:k,onViewCombos:()=>C("combos"),onCreate:()=>h(!0)}),"combos"===b&&(0,w.jsx)(X,{combos:c,modelCaps:o,activeProviders:k,comboStrategies:m,copied:u,copy:v,onEdit:j,onDelete:a=>{t({title:"Delete Combo",message:"Delete this combo?",onConfirm:async()=>{t(null);try{let b=await fetch(`/api/combos/${a}`,{method:"DELETE"});if(b.ok)d(b=>b.filter(b=>b.id!==a));else{let a=await b.json().catch(()=>({}));alert(a.error||`Failed to delete combo (${b.status})`)}}catch(a){console.log("Error deleting combo:",a),alert("Failed to delete combo — network error")}}})},onSetStrategy:F,onCreate:()=>h(!0)}),"templates"===b&&(0,w.jsx)($,{combos:c,connections:k,modelIndex:q,onApply:y}),"lab"===b&&(0,w.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,w.jsx)("p",{className:"text-[11px] text-text-muted",children:"What-if engine — compare routing strategies side-by-side using your historical latency, cost and reliability data, then apply the recommended strategy to any combo."}),(0,w.jsx)(cd,{activeProviders:k})]}),(0,w.jsx)(b8,{isOpen:g,onClose:()=>h(!1),onSave:D,activeProviders:k,modelCaps:o},"create"),(0,w.jsx)(b8,{isOpen:!!i,combo:i,onClose:()=>j(null),onSave:a=>E(i.id,a),activeProviders:k,modelCaps:o,comboStrategies:m},i?.id||"new"),(0,w.jsx)(A.uo,{isOpen:!!s,onClose:()=>t(null),onConfirm:s?.onConfirm,title:s?.title||"Confirm",message:s?.message,variant:"danger"})]})}function cg(){return(0,w.jsx)(x.Suspense,{fallback:(0,w.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,w.jsx)("div",{className:"h-32 animate-pulse rounded-lg bg-sidebar"}),(0,w.jsx)("div",{className:"h-32 animate-pulse rounded-lg bg-sidebar"})]}),children:(0,w.jsx)(cf,{})})}},46293:a=>{"use strict";a.exports=require("sql.js")},48161:a=>{"use strict";a.exports=require("node:os")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53053:a=>{"use strict";a.exports=require("node:diagnostics_channel")},55511:a=>{"use strict";a.exports=require("crypto")},55591:a=>{"use strict";a.exports=require("https")},56758:(a,b,c)=>{Promise.resolve().then(c.bind(c,46059))},57075:a=>{"use strict";a.exports=require("node:stream")},57975:a=>{"use strict";a.exports=require("node:util")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},71553:a=>{"use strict";a.exports=require("node:dns/promises")},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},73429:a=>{"use strict";a.exports=require("node:util/types")},73496:a=>{"use strict";a.exports=require("http2")},74075:a=>{"use strict";a.exports=require("zlib")},75919:a=>{"use strict";a.exports=require("node:worker_threads")},76760:a=>{"use strict";a.exports=require("node:path")},77030:a=>{"use strict";a.exports=require("node:net")},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},77598:a=>{"use strict";a.exports=require("node:crypto")},78474:a=>{"use strict";a.exports=require("node:events")},79646:a=>{"use strict";a.exports=require("child_process")},80099:a=>{"use strict";a.exports=require("node:sqlite")},81449:(a,b,c)=>{"use strict";c.d(b,{Se:()=>f,Uk:()=>e,uv:()=>d,vT:()=>g});let d=10;function e(a){return null==a||a>=d}function f(a){return null==a?"—":a<1e3?`${a}ms`:`${(a/1e3).toFixed(1)}s`}function g(a,b){return null==a?{value:"—",insufficient:!1}:e(b)?{value:f(a),insufficient:!1}:{value:"insufficient data",insufficient:!0}}},81630:a=>{"use strict";a.exports=require("http")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},83997:a=>{"use strict";a.exports=require("tty")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},87997:a=>{"use strict";a.exports=require("node:timers")},91645:a=>{"use strict";a.exports=require("net")},94735:a=>{"use strict";a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,7774,1260,6935,4013,5573,319,6482,8e3,6591,
|
|
4
|
+
${a}`);return}}}catch{}}await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({comboStrategies:{[a]:k?null:h}})}),n(b=>{let c={...b};return k?delete c[a]:c[a]=h,c})}catch(a){console.log("Error updating combo strategy:",a)}};return e?(0,w.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,w.jsx)(A.Qv,{}),(0,w.jsx)(A.Qv,{})]}):(0,w.jsxs)("div",{className:"flex min-w-0 flex-col gap-5",children:[(0,w.jsx)(A.zY,{title:"Combos",description:"Group models under one name, then pick a strategy per combo",icon:"layers",actions:(0,w.jsx)(A.$n,{size:"sm",icon:"add",onClick:()=>h(!0),className:"whitespace-nowrap",children:"Create Combo"})}),(0,w.jsx)(A.Iz,{options:ce,value:b,onChange:C}),"overview"===b&&(0,w.jsx)(J,{combos:c,comboStrategies:m,activeProviders:k,onViewCombos:()=>C("combos"),onCreate:()=>h(!0)}),"combos"===b&&(0,w.jsx)(X,{combos:c,modelCaps:o,activeProviders:k,comboStrategies:m,copied:u,copy:v,onEdit:j,onDelete:a=>{t({title:"Delete Combo",message:"Delete this combo?",onConfirm:async()=>{t(null);try{let b=await fetch(`/api/combos/${a}`,{method:"DELETE"});if(b.ok)d(b=>b.filter(b=>b.id!==a));else{let a=await b.json().catch(()=>({}));alert(a.error||`Failed to delete combo (${b.status})`)}}catch(a){console.log("Error deleting combo:",a),alert("Failed to delete combo — network error")}}})},onSetStrategy:F,onCreate:()=>h(!0)}),"templates"===b&&(0,w.jsx)($,{combos:c,connections:k,modelIndex:q,onApply:y}),"lab"===b&&(0,w.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,w.jsx)("p",{className:"text-[11px] text-text-muted",children:"What-if engine — compare routing strategies side-by-side using your historical latency, cost and reliability data, then apply the recommended strategy to any combo."}),(0,w.jsx)(cd,{activeProviders:k})]}),(0,w.jsx)(b8,{isOpen:g,onClose:()=>h(!1),onSave:D,activeProviders:k,modelCaps:o},"create"),(0,w.jsx)(b8,{isOpen:!!i,combo:i,onClose:()=>j(null),onSave:a=>E(i.id,a),activeProviders:k,modelCaps:o,comboStrategies:m},i?.id||"new"),(0,w.jsx)(A.uo,{isOpen:!!s,onClose:()=>t(null),onConfirm:s?.onConfirm,title:s?.title||"Confirm",message:s?.message,variant:"danger"})]})}function cg(){return(0,w.jsx)(x.Suspense,{fallback:(0,w.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,w.jsx)("div",{className:"h-32 animate-pulse rounded-lg bg-sidebar"}),(0,w.jsx)("div",{className:"h-32 animate-pulse rounded-lg bg-sidebar"})]}),children:(0,w.jsx)(cf,{})})}},46293:a=>{"use strict";a.exports=require("sql.js")},48161:a=>{"use strict";a.exports=require("node:os")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},53053:a=>{"use strict";a.exports=require("node:diagnostics_channel")},55511:a=>{"use strict";a.exports=require("crypto")},55591:a=>{"use strict";a.exports=require("https")},56758:(a,b,c)=>{Promise.resolve().then(c.bind(c,46059))},57075:a=>{"use strict";a.exports=require("node:stream")},57975:a=>{"use strict";a.exports=require("node:util")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},71553:a=>{"use strict";a.exports=require("node:dns/promises")},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},73429:a=>{"use strict";a.exports=require("node:util/types")},73496:a=>{"use strict";a.exports=require("http2")},74075:a=>{"use strict";a.exports=require("zlib")},75919:a=>{"use strict";a.exports=require("node:worker_threads")},76760:a=>{"use strict";a.exports=require("node:path")},77030:a=>{"use strict";a.exports=require("node:net")},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},77598:a=>{"use strict";a.exports=require("node:crypto")},78474:a=>{"use strict";a.exports=require("node:events")},79646:a=>{"use strict";a.exports=require("child_process")},80099:a=>{"use strict";a.exports=require("node:sqlite")},81449:(a,b,c)=>{"use strict";c.d(b,{Se:()=>f,Uk:()=>e,uv:()=>d,vT:()=>g});let d=10;function e(a){return null==a||a>=d}function f(a){return null==a?"—":a<1e3?`${a}ms`:`${(a/1e3).toFixed(1)}s`}function g(a,b){return null==a?{value:"—",insufficient:!1}:e(b)?{value:f(a),insufficient:!1}:{value:"insufficient data",insufficient:!0}}},81630:a=>{"use strict";a.exports=require("http")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},83997:a=>{"use strict";a.exports=require("tty")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},87997:a=>{"use strict";a.exports=require("node:timers")},91645:a=>{"use strict";a.exports=require("net")},94735:a=>{"use strict";a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,7774,1260,6935,4013,5573,319,6482,8e3,6591,2436,5050,5604,7765,8266,3552,212,809,4957,6007,4109,885,9365,5330,8895,4046,6182,6457,8271,8802,6777,412,3520],()=>b(b.s=7665));module.exports=c})();
|