zevairouter 1.0.271 → 1.1.0
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/CHANGELOG.md +32 -0
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +5 -3
- package/cli/app/.next-cli-build/build-manifest.json +2 -2
- package/cli/app/.next-cli-build/prerender-manifest.json +3 -3
- package/cli/app/.next-cli-build/required-server-files.json +3 -1
- package/cli/app/.next-cli-build/routes-manifest.json +12 -0
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +10 -10
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js +3 -3
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/acs/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/start/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/test/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/changelog/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
- package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
- package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +3 -3
- package/cli/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/combos/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/media/videos/[id]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/media/videos/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/enable/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/enable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/health/ready/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/health/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/init/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/locale/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/metrics/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-token/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/codebuddy/discover-models/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/providers/codebuddy/discover-models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -51
- package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/logs/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tags/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +3 -3
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/quota-stream/route.js +3 -0
- package/cli/app/.next-cli-build/server/app/api/usage/quota-stream/route.js.nft.json +1 -0
- package/cli/app/.next-cli-build/server/app/api/usage/quota-stream/route_client-reference-manifest.js +1 -0
- package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/routing-stream/route.js +4 -0
- package/cli/app/.next-cli-build/server/app/api/usage/routing-stream/route.js.nft.json +1 -0
- package/cli/app/.next-cli-build/server/app/api/usage/routing-stream/route_client-reference-manifest.js +1 -0
- package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback.html +1 -1
- package/cli/app/.next-cli-build/server/app/callback.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/index.html +1 -1
- package/cli/app/.next-cli-build/server/app/index.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/landing/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/landing.html +1 -1
- package/cli/app/.next-cli-build/server/app/landing.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/login.html +1 -1
- package/cli/app/.next-cli-build/server/app/login.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/page.js +2 -2
- package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/provider-icons/[provider]/route.js +2 -2
- package/cli/app/.next-cli-build/server/app/provider-icons/[provider]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app-paths-manifest.json +5 -3
- package/cli/app/.next-cli-build/server/chunks/1131.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/1133.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/1283.js +15 -0
- package/cli/app/.next-cli-build/server/chunks/1350.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/1585.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/1756.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/220.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/2238.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/2442.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/2456.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/2557.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/287.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/{2732.js → 3016.js} +2 -2
- package/cli/app/.next-cli-build/server/chunks/3373.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/3662.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/3721.js +49 -0
- package/cli/app/.next-cli-build/server/chunks/3792.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/3815.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3926.js +2 -0
- package/cli/app/.next-cli-build/server/chunks/3949.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3999.js +3 -3
- package/cli/app/.next-cli-build/server/chunks/40.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/412.js +2 -2
- package/cli/app/.next-cli-build/server/chunks/421.js +4 -0
- package/cli/app/.next-cli-build/server/chunks/4236.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/4315.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/4322.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/437.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/4645.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/4720.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4721.js +2 -2
- package/cli/app/.next-cli-build/server/chunks/4827.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4897.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5019.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/5024.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5330.js +35 -39
- package/cli/app/.next-cli-build/server/chunks/5434.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/5436.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5752.js +4 -0
- package/cli/app/.next-cli-build/server/chunks/5754.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/5936.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/5949.js +11 -11
- package/cli/app/.next-cli-build/server/chunks/6182.js +49 -0
- package/cli/app/.next-cli-build/server/chunks/6200.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/6476.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/{3110.js → 6651.js} +6 -6
- package/cli/app/.next-cli-build/server/chunks/6802.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/6843.js +2 -0
- package/cli/app/.next-cli-build/server/chunks/6936.js +15 -0
- package/cli/app/.next-cli-build/server/chunks/6951.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/7170.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/7319.js +60 -128
- package/cli/app/.next-cli-build/server/chunks/7432.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/7568.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/7582.js +51 -0
- package/cli/app/.next-cli-build/server/chunks/7611.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/7634.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/7875.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/8028.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8136.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/8255.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8371.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8491.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/8590.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/{3069.js → 8653.js} +1 -1
- package/cli/app/.next-cli-build/server/chunks/8655.js +4 -0
- package/cli/app/.next-cli-build/server/chunks/8895.js +15 -13
- package/cli/app/.next-cli-build/server/chunks/891.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8910.js +2 -2
- package/cli/app/.next-cli-build/server/chunks/9445.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/9489.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/9539.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/9835.js +1 -0
- package/cli/app/.next-cli-build/server/chunks/static/media/server.f66733f4.js +8 -0
- package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/middleware.js +3 -3
- package/cli/app/.next-cli-build/server/pages/404.html +1 -1
- package/cli/app/.next-cli-build/server/pages/500.html +1 -1
- package/cli/app/.next-cli-build/server/server-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/server-reference-manifest.json +1 -1
- package/cli/app/.next-cli-build/server/webpack-runtime.js +1 -1
- package/cli/app/.next-cli-build/static/C6i_Bn3fJrnsz4at-ntco/_buildManifest.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/523-7f951d309a09f363.js +3 -0
- package/cli/app/.next-cli-build/static/chunks/5497-27b73ecf920843b1.js +7 -0
- package/cli/app/.next-cli-build/static/chunks/{620-014f7e265e6e9748.js → 620-ca95212890b67fc9.js} +1 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-489aca87c755610e.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-a8613adfc83b3096.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-15dd47ab818e675d.js → page-a096025e3edc5150.js} +9 -9
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-ca3d31524c44540f.js +3 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-7b3b291fb9d2dc65.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-36f947b5449cdf6b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/layout-9fadcbba0c598e87.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/_global-error/page-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/context/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/cli-tools/keys/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/[operation]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/videos/[id]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/enable/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/health/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/init/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/models/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/latest/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-token/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/codebuddy/discover-models/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/logs/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/quota-stream/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/routing-stream/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/version/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/landing/page-345d7bf34da86fee.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/page-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/app/provider-icons/[provider]/route-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-db8d22293b86486b.js +1 -0
- package/cli/app/.next-cli-build/static/css/2259cb9ea5269549.css +1 -0
- package/cli/app/.worktrees/v1-1-adaptive/.next-cli-build/standalone/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/.worktrees/v1-1-adaptive/cli/app/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/.worktrees/v1-1-adaptive/src/lib/terminal/ptyBridge.py +163 -0
- package/cli/app/CHANGELOG.md +32 -0
- package/cli/app/cli/hooks/safeGlobalInstall.js +112 -37
- package/cli/app/package.json +6 -1
- package/cli/app/server.js +1 -1
- package/cli/app/src/lib/alerter.js +13 -8
- package/cli/hooks/safeGlobalInstall.js +112 -37
- package/cli/package.json +1 -1
- package/package.json +6 -1
- package/cli/app/.next-cli-build/server/chunks/1051.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/2594.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/3743.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/3839.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/4177.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/5295.js +0 -51
- package/cli/app/.next-cli-build/server/chunks/5307.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/7239.js +0 -63
- package/cli/app/.next-cli-build/server/chunks/7688.js +0 -4
- package/cli/app/.next-cli-build/server/chunks/7769.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/7828.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/8666.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/9484.js +0 -1
- package/cli/app/.next-cli-build/server/chunks/9609.js +0 -1
- package/cli/app/.next-cli-build/static/824D95QIGoN3BCMQNuqnq/_buildManifest.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/523-7fce1a9128358c23.js +0 -3
- package/cli/app/.next-cli-build/static/chunks/5497-1f8d06cd65e1a031.js +0 -7
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-83d23a03d197fad2.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-c3d7b126bbcdeaa2.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-e68f446b9c94ade6.js +0 -3
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-aea189a918ed8a26.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-c865ef51004e93fa.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/layout-dbfca64b83745c80.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/_global-error/page-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/context/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/cli-tools/keys/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/[operation]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/videos/[id]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/enable/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/health/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/init/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/models/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/latest/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-token/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/codebuddy/discover-models/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/logs/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/version/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/landing/page-30ffb960e68fba1a.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/page-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/app/provider-icons/[provider]/route-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-7f1163bd918d92ca.js +0 -1
- package/cli/app/.next-cli-build/static/css/d3a75038b243e398.css +0 -1
- /package/cli/app/.next-cli-build/static/{824D95QIGoN3BCMQNuqnq → C6i_Bn3fJrnsz4at-ntco}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3554],{7905:(e,t,s)=>{Promise.resolve().then(s.bind(s,85309))},85309:(e,t,s)=>{"use strict";s.d(t,{default:()=>x});var a=s(95155),l=s(12115),r=s(98500),i=s.n(r),d=s(35497),o=s(3534),n=s(28777),c=s(5777);let u=s(41463).env.NEXT_PUBLIC_CLOUD_URL;function x({toolId:e,machineId:t}){let s=o.dM[e],[r,v]=(0,l.useState)([]),[m,h]=(0,l.useState)(!0),[p,b]=(0,l.useState)({}),[f,j]=(0,l.useState)(!1),[g,E]=(0,l.useState)(!1),[P,k]=(0,l.useState)(""),[w,N]=(0,l.useState)(!1),[y,_]=(0,l.useState)(""),[S,A]=(0,l.useState)([]),[C,U]=(0,l.useState)(!1);(0,l.useEffect)(()=>{let e=!0;return(async()=>{try{let[t,s,a,l]=await Promise.all([fetch("/api/providers"),fetch("/api/settings"),fetch("/api/tunnel/status"),fetch("/api/dashboard/cli-tools/keys",{cache:"no-store"})]);if(!e)return;if(401===t.status||401===s.status||401===a.status||401===l.status)return void U(!0);if(t.ok){let e=await t.json();v(e.connections||[])}if(s.ok){let e=await s.json();j(e.cloudEnabled||!1)}if(a.ok){let e=await a.json();E(!!(e.tunnel?.enabled||e.tunnel?.settingsEnabled)),k(e.tunnel?.publicUrl||""),N(!!(e.tailscale?.enabled||e.tailscale?.settingsEnabled)),_(e.tailscale?.tunnelUrl||"")}if(l.ok){let e=await l.json();A(e.keys||[])}}catch(e){console.log("Error loading tool data:",e)}finally{e&&h(!1)}})(),()=>{e=!1}},[]);let L=()=>r.filter(e=>!1!==e.isActive),I=(0,l.useCallback)((e,t,s)=>{b(a=>a[e]?.[t]===s?a:{...a,[e]:{...a[e],[t]:s}})},[]);return s?(0,a.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-4 px-1 sm:px-0",children:[(0,a.jsxs)(i(),{href:"/dashboard/cli-tools",className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary w-fit",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"arrow_back"}),"Back to CLI Tools"]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsx)("h1",{className:"text-xl font-semibold text-text-main sm:text-2xl",children:s.name}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:s.description})]}),m?(0,a.jsx)(d.Qv,{}):C?(0,a.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-red-500/10 border border-red-500/30 rounded-lg",children:[(0,a.jsxs)("div",{className:"flex items-start gap-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-red-500",children:"lock"}),(0,a.jsx)("p",{className:"flex-1 text-sm text-red-600",children:"Your session has expired — tool data, tunnel status, and API keys could not be loaded. Log in again before applying settings, otherwise the tool may be written with a fallback key."})]}),(0,a.jsx)("div",{className:"pl-9",children:(0,a.jsxs)("a",{href:"/login",className:"inline-flex items-center px-3 py-1.5 rounded-md border border-red-500/40 bg-red-500/20 text-red-700 dark:text-red-300 text-xs font-medium hover:bg-red-500/30",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] mr-1",children:"login"}),"Log in again"]})})]}):(()=>{let t,l,r,i=(t=L(),l=[],r=new Set,t.forEach(e=>{let t=n.Xg[e.provider]||e.provider;(0,n.KC)(e.provider).forEach(s=>{let a=`${t}/${s.id}`;r.has(a)||(r.add(a),l.push({value:a,label:`${t}/${s.id}`,provider:e.provider,alias:t,connectionName:e.name,modelId:s.id}))})}),l).length>0,d={tool:s,isExpanded:!0,onToggle:()=>{},baseUrl:g&&P?P:f&&u?u:window.location.origin,apiKeys:S,tunnelEnabled:g,tunnelPublicUrl:P,tailscaleEnabled:w,tailscaleUrl:y};switch(e){case"claude":return(0,a.jsx)(c.Tk,{...d,activeProviders:L(),modelMappings:p[e]||{},onModelMappingChange:(t,s)=>I(e,t,s),hasActiveProviders:i,cloudEnabled:f});case"codex":return(0,a.jsx)(c.Ah,{...d,activeProviders:L(),cloudEnabled:f});case"grok-build":return(0,a.jsx)(c.E_,{...d,activeProviders:L(),cloudEnabled:f});case"opencode":return(0,a.jsx)(c.qO,{...d,activeProviders:L(),cloudEnabled:f});case"cowork":return(0,a.jsx)(c.Q6,{...d,activeProviders:L(),hasActiveProviders:i,cloudEnabled:f,cloudUrl:u,tunnelEnabled:g,tunnelPublicUrl:P,tailscaleEnabled:w,tailscaleUrl:y});case"droid":return(0,a.jsx)(c.ZM,{...d,activeProviders:L(),hasActiveProviders:i,cloudEnabled:f});case"openclaw":return(0,a.jsx)(c.yZ,{...d,activeProviders:L(),hasActiveProviders:i,cloudEnabled:f});case"hermes":return(0,a.jsx)(c.RF,{...d,activeProviders:L(),hasActiveProviders:i,cloudEnabled:f});case"copilot":return(0,a.jsx)(c.h1,{...d,activeProviders:L(),cloudEnabled:f});case"cline":return(0,a.jsx)(c.aG,{...d,activeProviders:L(),cloudEnabled:f});case"kilo":return(0,a.jsx)(c.c9,{...d,activeProviders:L(),cloudEnabled:f});case"deepseek-tui":return(0,a.jsx)(c.lF,{...d,activeProviders:L(),hasActiveProviders:i,cloudEnabled:f});case"jcode":return(0,a.jsx)(c.mW,{...d,activeProviders:L(),hasActiveProviders:i,cloudEnabled:f});default:return(0,a.jsx)(c.a7,{toolId:e,...d,activeProviders:L(),cloudEnabled:f,tunnelEnabled:g})}})()]}):(0,a.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-4 px-1 sm:px-0",children:[(0,a.jsxs)(i(),{href:"/dashboard/cli-tools",className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary w-fit",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"arrow_back"}),"Back to CLI Tools"]}),(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Tool not found or disabled."})]})}}},e=>{e.O(0,[2574,3862,3745,3339,620,5497,4686,8441,3794,7358],()=>e(e.s=7905)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3649],{24636:(e,t,s)=>{Promise.resolve().then(s.bind(s,47295))},47295:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>x});var l=s(95155),a=s(12115),r=s(44923),o=s(87256),i=s(39768),n=s(5020),c=s(35497),d=s(11059);s(52679);let m=/^[a-zA-Z0-9_.\-]+$/;function x(){let[e,t]=(0,a.useState)([]),[s,r]=(0,a.useState)(!0),[o,i]=(0,a.useState)(!1),[n,m]=(0,a.useState)(null),[x,u]=(0,a.useState)([]),[p,g]=(0,a.useState)({}),[f,j]=(0,a.useState)(null),[y,v]=(0,a.useState)(1),[w,N]=(0,a.useState)(20),{copied:k,copy:C}=(0,d.C)();(0,a.useEffect)(()=>{S()},[]);let S=async()=>{try{let[e,s,l]=await Promise.all([fetch("/api/combos"),fetch("/api/providers"),fetch("/api/settings")]),a=await e.json(),r=await s.json(),o=l.ok?await l.json():{};e.ok&&t((a.combos||[]).filter(e=>!e.kind)),s.ok&&u(r.connections||[]),g(o.comboStrategies||{})}catch(e){console.log("Error fetching data:",e)}finally{r(!1)}},E=async e=>{try{let t=await fetch("/api/combos",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(t.ok)await S(),i(!1);else{let e=await t.json();alert(e.error||"Failed to create combo")}}catch(e){console.log("Error creating combo:",e)}},M=async(e,t)=>{try{let s=await fetch(`/api/combos/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(s.ok)await S(),m(null);else{let e=await s.json();alert(e.error||"Failed to update combo")}}catch(e){console.log("Error updating combo:",e)}},O=async s=>{j({title:"Delete Combo",message:"Delete this combo?",onConfirm:async()=>{j(null);try{(await fetch(`/api/combos/${s}`,{method:"DELETE"})).ok&&t(e.filter(e=>e.id!==s))}catch(e){console.log("Error deleting combo:",e)}}})},P=async(e,t)=>{try{let s={...p},l={...s[e]||{},...t};l.fallbackStrategy&&"fallback"!==l.fallbackStrategy?s[e]=l:delete s[e],await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({comboStrategies:s})}),g(s)}catch(e){console.log("Error updating combo strategy:",e)}};(0,a.useEffect)(()=>{v(t=>Math.min(t,Math.max(1,Math.ceil(e.length/w))))},[e.length,w]);let $=Math.min(y,Math.max(1,Math.ceil(e.length/w))),D=e.slice(($-1)*w,$*w);return s?(0,l.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,l.jsx)(c.Qv,{}),(0,l.jsx)(c.Qv,{})]}):(0,l.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:px-0",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsx)("h1",{className:"text-2xl font-semibold",children:"Combos"}),(0,l.jsx)("p",{className:"text-sm text-text-muted mt-1",children:"Group models under one name and choose fallback, round-robin, or fusion routing."}),(0,l.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:"Capability auto-switch prioritizes models that support the current image, PDF, audio, video, or search request."})]}),(0,l.jsx)(c.$n,{icon:"add",onClick:()=>i(!0),className:"w-full sm:w-auto",children:"Create Combo"})]}),0===e.length?(0,l.jsx)(c.Zp,{children:(0,l.jsxs)("div",{className:"text-center py-12",children:[(0,l.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"layers"})}),(0,l.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No combos yet"}),(0,l.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create model combos with fallback support"}),(0,l.jsx)(c.$n,{icon:"add",onClick:()=>i(!0),className:"w-full sm:w-auto",children:"Create Combo"})]})}):(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[D.map(e=>(0,l.jsx)(h,{combo:e,copied:k,activeProviders:x,onCopy:C,onEdit:()=>m(e),onDelete:()=>O(e.id),strategy:p[e.name]||{},onSetStrategy:t=>P(e.name,t)},e.id)),(0,l.jsx)(c.dK,{currentPage:$,pageSize:w,totalItems:e.length,onPageChange:v,onPageSizeChange:e=>{N(e),v(1)}})]}),(0,l.jsx)(b,{isOpen:o,onClose:()=>i(!1),onSave:E,activeProviders:x},"create"),(0,l.jsx)(b,{isOpen:!!n,combo:n,onClose:()=>m(null),onSave:e=>M(n.id,e),activeProviders:x},n?.id||"new"),(0,l.jsx)(c.uo,{isOpen:!!f,onClose:()=>j(null),onConfirm:f?.onConfirm,title:f?.title||"Confirm",message:f?.message,variant:"danger"})]})}let u=[{value:"fallback",label:"Fallback — try in order"},{value:"round-robin",label:"Round Robin — rotate"},{value:"fusion",label:"Fusion — panel + judge"}];function h({combo:e,activeProviders:t,copied:s,onCopy:r,onEdit:o,onDelete:i,strategy:n,onSetStrategy:d}){let[m,x]=(0,a.useState)(!1),p=n.fallbackStrategy||"fallback",b=n.judgeModel||"";return(0,l.jsxs)(c.Zp,{padding:"sm",className:"group",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,l.jsxs)("div",{className:"flex min-w-0 flex-1 items-start gap-3 sm:items-center",children:[(0,l.jsx)("div",{className:"size-8 rounded-lg bg-primary/10 flex items-center justify-center shrink-0",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-primary text-[18px]",children:"layers"})}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsx)("code",{className:"block truncate font-mono text-sm font-medium",children:e.name}),(0,l.jsxs)("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1",children:[0===e.models.length?(0,l.jsx)("span",{className:"text-xs text-text-muted italic",children:"No models"}):e.models.slice(0,3).map((e,t)=>(0,l.jsx)("code",{className:"max-w-full truncate rounded bg-black/5 px-1.5 py-0.5 font-mono text-[10px] text-text-muted dark:bg-white/5 sm:max-w-[220px]",children:e},t)),e.models.length>3&&(0,l.jsxs)("span",{className:"text-[10px] text-text-muted",children:["+",e.models.length-3," more"]})]}),"fusion"===p&&(0,l.jsxs)("div",{className:"mt-2 flex min-w-0 flex-wrap items-center gap-1.5",children:[(0,l.jsx)("span",{className:"text-[11px] font-medium text-text-muted",children:"Judge"}),(0,l.jsxs)("button",{type:"button",onClick:()=>x(!0),className:"inline-flex max-w-full items-center gap-1 rounded border border-dashed border-primary/40 px-1.5 py-0.5 font-mono text-[11px] text-primary transition-colors hover:border-primary hover:bg-primary/5",title:"Pick the model that synthesizes the panel answers",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"gavel"}),(0,l.jsx)("span",{className:"truncate",children:b||`Auto — ${e.models[0]||"first model"}`})]}),b&&(0,l.jsx)("button",{type:"button",onClick:()=>d({judgeModel:""}),className:"rounded p-0.5 text-text-muted transition-colors hover:bg-red-500/10 hover:text-red-500",title:"Reset judge to the first combo model",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"close"})})]})]})]}),(0,l.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,l.jsx)("div",{className:"w-full sm:w-[200px]",children:(0,l.jsx)(c.l6,{options:u,value:p,onChange:e=>d({fallbackStrategy:e.target.value}),selectClassName:"py-1.5 text-xs"})}),(0,l.jsxs)("div",{className:"grid grid-cols-3 gap-1 sm:flex",children:[(0,l.jsxs)("button",{onClick:t=>{t.stopPropagation(),r(e.name,`combo-${e.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,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:s===`combo-${e.id}`?"check":"content_copy"}),(0,l.jsx)("span",{className:"text-[10px] leading-tight",children:"Copy"})]}),(0,l.jsxs)("button",{onClick:o,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,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"}),(0,l.jsx)("span",{className:"text-[10px] leading-tight",children:"Edit"})]}),(0,l.jsxs)("button",{onClick:i,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,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"}),(0,l.jsx)("span",{className:"text-[10px] leading-tight",children:"Delete"})]})]})]})]}),m&&(0,l.jsx)(c.rq,{isOpen:m,onClose:()=>x(!1),onSelect:e=>{d({judgeModel:e?.value||""}),x(!1)},activeProviders:t,title:"Select Judge Model",addedModelValues:b?[b]:[],closeOnSelect:!0})]})}function p({id:e,index:t,model:s,isFirst:r,isLast:n,onEdit:c,onMoveUp:d,onMoveDown:m,onRemove:x}){let{attributes:u,listeners:h,setNodeRef:b,transform:g,isDragging:f}=(0,o.gl)({id:e}),j={transform:i.Ks.Transform.toString(g),opacity:f?.4:1,zIndex:f?999:void 0},[y,v]=(0,a.useState)(!1),[w,N]=(0,a.useState)(s),k=()=>{let e=w.trim();e&&e!==s?c(e):N(s),v(!1)};return(0,l.jsxs)("div",{ref:b,style:j,className:`group flex min-w-0 items-center gap-1.5 rounded-md px-2 py-1 bg-black/[0.02] hover:bg-black/[0.04] dark:bg-white/[0.02] dark:hover:bg-white/[0.04] transition-colors ${f?"shadow-md ring-1 ring-primary/30":""}`,children:[(0,l.jsx)("button",{...u,...h,type:"button",className:"cursor-grab touch-none p-0.5 rounded text-text-muted hover:text-primary active:cursor-grabbing shrink-0",title:"Drag to reorder",children:(0,l.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:[(0,l.jsx)("circle",{cx:"9",cy:"4",r:"2"}),(0,l.jsx)("circle",{cx:"15",cy:"4",r:"2"}),(0,l.jsx)("circle",{cx:"9",cy:"12",r:"2"}),(0,l.jsx)("circle",{cx:"15",cy:"12",r:"2"}),(0,l.jsx)("circle",{cx:"9",cy:"20",r:"2"}),(0,l.jsx)("circle",{cx:"15",cy:"20",r:"2"})]})}),(0,l.jsx)("span",{className:"text-[10px] font-medium text-text-muted w-3 text-center shrink-0",children:t+1}),y?(0,l.jsx)("input",{autoFocus:!0,value:w,onChange:e=>N(e.target.value),onBlur:k,onKeyDown:e=>{"Enter"===e.key&&k(),"Escape"===e.key&&(N(s),v(!1))},className:"min-w-0 flex-1 rounded border border-primary/40 bg-white px-1.5 py-0.5 font-mono text-xs text-text-main outline-none dark:bg-black/20"}):(0,l.jsx)("div",{className:"min-w-0 flex-1 cursor-text truncate rounded px-1.5 py-0.5 font-mono text-xs text-text-main hover:bg-black/5 dark:hover:bg-white/5",onClick:()=>v(!0),title:"Click to edit",children:s}),(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5",children:[(0,l.jsx)("button",{onClick:d,disabled:r,className:`p-0.5 rounded ${r?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-primary hover:bg-black/5 dark:hover:bg-white/5"}`,title:"Move up",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"arrow_upward"})}),(0,l.jsx)("button",{onClick:m,disabled:n,className:`p-0.5 rounded ${n?"text-text-muted/20 cursor-not-allowed":"text-text-muted hover:text-primary hover:bg-black/5 dark:hover:bg-white/5"}`,title:"Move down",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"arrow_downward"})})]}),(0,l.jsx)("button",{onClick:x,className:"p-0.5 hover:bg-red-500/10 rounded text-text-muted hover:text-red-500 transition-all",title:"Remove",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]})}function b({isOpen:e,combo:t,onClose:s,onSave:i,activeProviders:d,kindFilter:x=null}){let[u,h]=(0,a.useState)(t?.name||""),[g,f]=(0,a.useState)(t?.models||[]),[j,y]=(0,a.useState)(!1),[v,w]=(0,a.useState)(!1),[N,k]=(0,a.useState)(""),[C,S]=(0,a.useState)({}),E=(0,r.FR)((0,r.MS)(r.AN,{activationConstraint:{distance:5}}),(0,r.MS)(r.uN,{coordinateGetter:o.JR})),M=g.map((e,t)=>({uid:`item-${t}`,model:e})),O=async()=>{try{let e=await fetch("/api/models/alias");if(!e.ok)return;let t=await e.json();S(t.aliases||{})}catch(e){console.error("Error fetching modal data:",e)}};(0,a.useEffect)(()=>{e&&O()},[e]);let P=e=>e.trim()?m.test(e)?(k(""),!0):(k("Only letters, numbers, -, _ and . allowed"),!1):(k("Name is required"),!1),$=async()=>{P(u)&&(w(!0),await i({name:u.trim(),models:g}),w(!1))},D=!!t;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c.aF,{isOpen:e,onClose:s,title:D?"Edit Combo":"Create Combo",children:(0,l.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)(c.pd,{label:"Combo Name",value:u,onChange:e=>{let t=e.target.value;h(t),t?P(t):k("")},placeholder:"my-combo",error:N}),(0,l.jsx)("p",{className:"text-[10px] text-text-muted mt-0.5",children:"Only letters, numbers, -, _ and . allowed"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-sm font-medium mb-1.5 block",children:"Models"}),0===g.length?(0,l.jsxs)("div",{className:"text-center py-4 border border-dashed border-black/10 dark:border-white/10 rounded-lg bg-black/[0.01] dark:bg-white/[0.01]",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-xl mb-1",children:"layers"}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:"No models added yet"})]}):(0,l.jsx)(r.Mp,{sensors:E,collisionDetection:r.fp,onDragEnd:e=>{let{active:t,over:s}=e;if(s&&t.id!==s.id){let e=M.findIndex(e=>e.uid===t.id),l=M.findIndex(e=>e.uid===s.id);-1!==e&&-1!==l&&f(t=>(0,o.be)(t,e,l))}},modifiers:[n.FN,n.gj],children:(0,l.jsx)(o.gB,{items:M.map(e=>e.uid),strategy:o._G,children:(0,l.jsx)("div",{className:"flex max-h-[55vh] min-w-0 flex-col gap-1 overflow-y-auto sm:max-h-[350px]",children:M.map(({uid:e,model:t},s)=>(0,l.jsx)(p,{id:e,index:s,model:t,isFirst:0===s,isLast:s===M.length-1,onEdit:e=>{let t=[...g];t[s]=e,f(t)},onMoveUp:()=>(e=>{if(0===e)return;let t=[...g];[t[e-1],t[e]]=[t[e],t[e-1]],f(t)})(s),onMoveDown:()=>(e=>{if(e===g.length-1)return;let t=[...g];[t[e],t[e+1]]=[t[e+1],t[e]],f(t)})(s),onRemove:()=>{f(g.filter((e,t)=>t!==s))}},e))})})}),(0,l.jsxs)("button",{onClick:()=>y(!0),className:"w-full mt-2 py-2 border border-dashed border-black/10 dark:border-white/10 rounded-lg text-xs text-primary font-medium hover:text-primary hover:border-primary/50 transition-colors flex items-center justify-center gap-1",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"add"}),"Add Model"]})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2 pt-1 sm:flex-row",children:[(0,l.jsx)(c.$n,{onClick:s,variant:"ghost",fullWidth:!0,size:"sm",children:"Cancel"}),(0,l.jsx)(c.$n,{onClick:$,fullWidth:!0,size:"sm",disabled:!u.trim()||!!N||v,children:v?"Saving...":D?"Save":"Create"})]})]})}),(0,l.jsx)(c.rq,{isOpen:j,onClose:()=>y(!1),onSelect:e=>{g.includes(e.value)||f([...g,e.value])},onDeselect:e=>{f(g.filter(t=>t!==e.value))},activeProviders:d,modelAliases:C,title:"Add Model to Combo",kindFilter:x,addedModelValues:g,closeOnSelect:!1})]})}}},e=>{e.O(0,[2574,3862,3745,3339,7055,620,5497,8441,3794,7358],()=>e(e.s=24636)),_N_E=e.O()}]);
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2134],{28915:(e,t,s)=>{"use strict";s.d(t,{x6:()=>a.fetchJson,E2:()=>i,gs:()=>r});var a=s(68211);function i(e){if(!e)return null;let t=e.match(/\b([45]\d{2})\b/);return t?t[1]:"ERR"}function r(e){if(!e)return"";let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t}m ago`;let s=Math.floor(t/60);if(s<24)return`${s}h ago`;let a=Math.floor(s/24);return`${a}d ago`}},42911:(e,t,s)=>{Promise.resolve().then(s.bind(s,72440))},68211:(e,t,s)=>{"use strict";s.d(t,{fetchJson:()=>i});let a={"Content-Type":"application/json"};async function i(e,t={}){let{body:s,headers:r,...n}=t,l={...n,headers:{...a,...r}};void 0!==s&&"string"!=typeof s?l.body=JSON.stringify(s):void 0!==s&&(l.body=s);let o=await fetch(e,l),d=await o.text(),c=null;if(d)try{c=JSON.parse(d)}catch{let t=Error(`Non-JSON response from ${e} (HTTP ${o.status})`);throw t.status=o.status,t.rawBody=d.slice(0,300),t}if(!o.ok){let e=c&&(c.error?.message||c.error||c.message)||`Request failed (HTTP ${o.status})`,t=Error("string"==typeof e?e:`HTTP ${o.status}`);throw t.status=o.status,t.data=c,t}return c}i.get=(e,t)=>i(e,{...t,method:"GET"}),i.post=(e,t,s)=>i(e,{...s,method:"POST",body:t}),i.put=(e,t,s)=>i(e,{...s,method:"PUT",body:t}),i.patch=(e,t,s)=>i(e,{...s,method:"PATCH",body:t}),i.del=(e,t)=>i(e,{...t,method:"DELETE"})},70217:(e,t,s)=>{"use strict";s.d(t,{BU:()=>u,G9:()=>l,d4:()=>d,gJ:()=>a,i2:()=>c});let a=[{id:"all",label:"All"},{id:"active",label:"Active",keys:["active"]},{id:"errors",label:"Errors",keys:["connection_error","auth_error","quota_exhausted","rate_limited","banned","cooldown","unknown"]},{id:"connection",label:"Connection",keys:["connection_error"]},{id:"auth",label:"Auth",keys:["auth_error"]},{id:"limit",label:"Limit",keys:["rate_limited","cooldown"]},{id:"exhausted",label:"Exhausted",keys:["quota_exhausted"]},{id:"banned",label:"Banned",keys:["banned"]},{id:"disabled",label:"Disabled",keys:["disabled"]}],i={active:{label:"active",severity:"success",terminal:!1},disabled:{label:"disabled",severity:"default",terminal:!1},connection_error:{label:"connection error",severity:"error",terminal:!1},auth_error:{label:"auth error",severity:"error",terminal:!0},quota_exhausted:{label:"exhausted",severity:"error",terminal:!0},rate_limited:{label:"rate limited",severity:"warning",terminal:!1},banned:{label:"banned",severity:"error",terminal:!0},cooldown:{label:"cooldown",severity:"warning",terminal:!1},unknown:{label:"unknown",severity:"default",terminal:!1}},r={policy_suspended:"banned",credential_rejected:"auth_error",reauth_required:"auth_error",authentication:"auth_error",entitlement_or_quota:"quota_exhausted",rate_limited:"rate_limited",permission_denied:"auth_error",upstream_transient:"connection_error"};function n(e){if(!e)return"";if("string"==typeof e)return e.toLowerCase();try{return JSON.stringify(e).toLowerCase()}catch{return String(e).toLowerCase()}}function l(e={},t=Date.now()){let s=Object.entries(e).filter(([e])=>e.startsWith("modelLock_")).map(([,e])=>new Date(e).getTime()).filter(e=>Number.isFinite(e)&&e>t);return s.length>0?new Date(Math.min(...s)).toISOString():null}function o(e,t=""){let s=i[e]||i.unknown;return{key:e,...s,reason:t}}function d(e={}){var t;let s=(t=e).quarantinedAt?o(r[n(t.failureClass)]||"unknown",t.quarantineReason||t.lastError||"Connection is quarantined"):null;if(s)return s;if(!1===e.isActive)return o("disabled","Connection is disabled");if(function(e={}){return null!==l(e)}(e))return o("cooldown","Model cooldown is active");if(function(e){if(!e)return!1;let t=new Date(e).getTime();return Number.isFinite(t)&&t>Date.now()}(e.rateLimitedUntil))return o("rate_limited","Rate limit cooldown is active");let a=n(e.testStatus||e.status),i=n(e.lastErrorType||e.errorType),c=n(e.errorCode||e.statusCode),u=n(e.lastError||e.error),m=`${a} ${i} ${c} ${u}`.trim();return!m||["active","success","ok"].includes(a)?o("active",""):m.includes("ban")||m.includes("suspend")||m.includes("restricted")?o("banned",e.lastError||"Account appears restricted"):m.includes("exhaust")||m.includes("quota exceeded")||m.includes("insufficient_quota")||m.includes("payment required")||"402"===c?o("quota_exhausted",e.lastError||"Quota exhausted"):i.includes("rate_limited")||m.includes("rate limit")||m.includes("too many requests")||"429"===c?o("rate_limited",e.lastError||"Rate limited"):i.includes("auth")||i.includes("token")||m.includes("unauthorized")||m.includes("invalid api key")||m.includes("token invalid")||m.includes("token expired")||m.includes("revoked")||"401"===c||"403"===c?o("auth_error",e.lastError||"Authentication failed"):i.includes("network")||m.includes("network")||m.includes("timeout")||m.includes("fetch failed")||m.includes("econn")||m.includes("dns")||m.includes("proxy")?o("connection_error",e.lastError||"Connection failed"):["error","expired","unavailable","failed"].includes(a)?o("connection_error",e.lastError||e.testStatus||"Connection failed"):o("unknown",e.lastError||e.testStatus||"")}function c(e,t){if(!t||"all"===t)return!0;let s=a.find(e=>e.id===t);return!s||s.keys.includes(d(e).key)}function u(e){return e?.severity==="success"?"success":e?.severity==="error"?"error":"default"}},72440:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>G});var a=s(95155),i=s(12115),r=s(73321),n=s(98500),l=s.n(n),o=s(5772),d=s(35497),c=s(52679);let u=["kiro","codebuddy","codebuddy-cn","qoder","antigravity","cloudflare-ai","grok-cli"];function m(e){return u.includes(String(e||""))}function p(e){let t=String(e||"").trim();return t&&m(t)?`/dashboard/automation?provider=${encodeURIComponent(t)}`:"/dashboard/automation"}var x=s(28777),h=s(11059),f=s(73006);let g=new Map;async function b(e){if(!e?.url||!e?.type)return[];let t=g.get(e.url);if(t&&Date.now()<t.expiresAt)return t.data;try{let t=new URLSearchParams({url:e.url,type:e.type}),s=await fetch(`/api/providers/suggested-models?${t}`);if(!s.ok)return[];let a=(await s.json()).data??[];return g.set(e.url,{data:a,expiresAt:Date.now()+6e5}),a}catch{return[]}}var y=s(70217),v=s(51716),j=s(14051),w=s.n(j);function k({model:e,fullModel:t,alias:s,copied:i,onCopy:r,testStatus:n,isCustom:l,isFree:o,onDeleteAlias:d,onTest:c,isTesting:u,onDisable:m,thinkingSuffix:p}){let x="ok"===n?"#22c55e":"error"===n?"#ef4444":void 0,h=p?`${t}(${p})`:t;return(0,a.jsx)("div",{className:`group min-w-0 max-w-full rounded-lg border px-3 py-2 ${"ok"===n?"border-green-500/40":"error"===n?"border-red-500/40":"border-border"} hover:bg-sidebar/50`,children:(0,a.jsxs)("div",{className:"flex min-w-0 items-start gap-2 sm:items-center",children:[(0,a.jsx)("span",{className:"material-symbols-outlined shrink-0 text-base",style:x?{color:x}:void 0,children:"ok"===n?"check_circle":"error"===n?"cancel":"smart_toy"}),(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[(0,a.jsx)("code",{className:"max-w-[72vw] truncate rounded bg-sidebar px-1.5 py-0.5 font-mono text-xs text-text-muted sm:max-w-[360px]",children:h}),e.name&&(0,a.jsx)("span",{className:"truncate pl-1 text-[9px] italic text-text-muted/70",children:e.name})]}),c&&(0,a.jsxs)("div",{className:"relative shrink-0 group/btn",children:[(0,a.jsx)("button",{onClick:c,disabled:u,className:`rounded p-0.5 text-text-muted transition-opacity hover:bg-sidebar hover:text-primary ${u?"opacity-100":"opacity-100 sm:opacity-0 sm:group-hover:opacity-100"}`,children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",style:u?{animation:"spin 1s linear infinite"}:void 0,children:u?"progress_activity":"science"})}),(0,a.jsx)("span",{className:"pointer-events-none absolute mt-1 top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:u?"Testing...":"Test"})]}),(0,a.jsxs)("div",{className:"relative shrink-0 group/btn",children:[(0,a.jsx)("button",{onClick:()=>r(h,`model-${e.id}`),className:"rounded p-0.5 text-text-muted hover:bg-sidebar hover:text-primary",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:i===`model-${e.id}`?"check":"content_copy"})}),(0,a.jsx)("span",{className:"pointer-events-none absolute mt-1 top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:i===`model-${e.id}`?"Copied!":"Copy"})]}),l?(0,a.jsx)("button",{onClick:d,className:"ml-auto rounded p-0.5 text-text-muted opacity-100 transition-opacity hover:bg-red-500/10 hover:text-red-500 sm:opacity-0 sm:group-hover:opacity-100",title:"Remove custom model",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"close"})}):m?(0,a.jsx)("button",{onClick:m,className:"ml-auto rounded p-0.5 text-text-muted opacity-100 transition-opacity hover:bg-red-500/10 hover:text-red-500 sm:opacity-0 sm:group-hover:opacity-100",title:"Disable this model",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"close"})}):null]})})}function N({models:e,modelAliases:t,providerStorageAlias:s,providerDisplayAlias:a}){let i={...t||{}},r=new Set(Object.values(i)),n=[];for(let t of Array.isArray(e)?e:[]){let e=function(e){if(!e)return"";if("string"==typeof e)return e.trim();let t=e.id||e.name||e.model;return"string"==typeof t?t.trim():""}(t);if(!e)continue;let l=`${s}/${e}`;if(r.has(l))continue;let o=function(e,t,s){let a=e.split("/"),i=a[a.length-1];if(!i)return"";if(!t[i])return i;let r=`${s}-${i}`;if(!t[r])return r;let n=2;for(;t[`${r}-${n}`];)n+=1;return`${r}-${n}`}(e,i,a);o&&(n.push({alias:o,model:l,modelId:e}),i[o]=l,r.add(l))}return n}function C({modelId:e,fullModel:t,copied:s,onCopy:i,onDeleteAlias:r,onTest:n,testStatus:l,isTesting:o}){let d="ok"===l?"#22c55e":"error"===l?"#ef4444":void 0;return(0,a.jsxs)("div",{className:`flex items-center gap-3 p-3 rounded-lg border ${"ok"===l?"border-green-500/40":"error"===l?"border-red-500/40":"border-border"} hover:bg-sidebar/50`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-base text-text-muted",style:d?{color:d}:void 0,children:"ok"===l?"check_circle":"error"===l?"cancel":"smart_toy"}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"text-sm font-medium truncate",children:e}),(0,a.jsxs)("div",{className:"flex items-center gap-1 mt-1",children:[(0,a.jsx)("code",{className:"text-xs text-text-muted font-mono bg-sidebar px-1.5 py-0.5 rounded",children:t}),(0,a.jsxs)("div",{className:"relative group/btn",children:[(0,a.jsx)("button",{onClick:()=>i(t,`model-${e}`),className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:s===`model-${e}`?"check":"content_copy"})}),(0,a.jsx)("span",{className:"pointer-events-none absolute top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:s===`model-${e}`?"Copied!":"Copy"})]}),n&&(0,a.jsxs)("div",{className:"relative group/btn",children:[(0,a.jsx)("button",{onClick:n,disabled:o,className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary transition-colors",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",style:o?{animation:"spin 1s linear infinite"}:void 0,children:o?"progress_activity":"science"})}),(0,a.jsx)("span",{className:"pointer-events-none absolute top-5 left-1/2 -translate-x-1/2 text-[10px] text-text-muted whitespace-nowrap opacity-0 group-hover/btn:opacity-100 transition-opacity",children:o?"Testing...":"Test"})]})]})]}),(0,a.jsx)("button",{onClick:r,className:"p-1 hover:bg-red-50 rounded text-red-500",title:"Remove model",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"delete"})})]})}function S({providerStorageAlias:e,providerDisplayAlias:t,modelAliases:s,copied:r,onCopy:n,onSetAlias:l,onDeleteAlias:o,onAliasesChanged:c,connections:u,isAnthropic:m}){let[p,x]=(0,i.useState)(""),[h,f]=(0,i.useState)(!1),[g,b]=(0,i.useState)(!1),[y,v]=(0,i.useState)(()=>new Set),[j,w]=(0,i.useState)({}),k=async t=>{let s=`${e}/${t}`;v(e=>new Set(e).add(t));try{let e=await fetch("/api/models/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:s})}),t=await e.json();w(e=>({...e,[s]:t.ok?"ok":"error"}))}catch{w(e=>({...e,[s]:"error"}))}finally{v(e=>{let s=new Set(e);return s.delete(t),s})}},$=Object.entries(s).filter(([,t])=>t.startsWith(`${e}/`)).map(([t,s])=>({modelId:s.replace(`${e}/`,""),fullModel:s,alias:t})),A=async()=>{if(!p.trim()||h)return;let a=p.trim(),[i]=N({models:[{id:a}],modelAliases:s,providerStorageAlias:e,providerDisplayAlias:t});if(!i)return void alert("This model already exists.");f(!0);try{await l(a,i.alias,e),x("")}catch(e){console.log("Error adding model:",e),alert(e?.message||`Failed to add model "${a}".`)}finally{f(!1)}},T=async()=>{if(g)return;let a=u.find(e=>!1!==e.isActive);if(a){b(!0);try{let i=await fetch(`/api/providers/${a.id}/models`),r=await i.json();if(!i.ok)return void alert(r.error||"Failed to import models");let n=r.models||[];if(0===n.length)return void alert("No models returned from /models.");let l=N({models:n,modelAliases:s,providerStorageAlias:e,providerDisplayAlias:t});if(0===l.length)return void alert("No new models were added.");let o=await fetch("/api/models/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({aliases:l.map(({alias:e,model:t})=>({alias:e,model:t}))})}),d=await o.json();if(!o.ok)throw Error(d.error||"Failed to save imported models.");await c(),alert(`Successfully added ${d.count||l.length} models.`)}catch(e){console.log("Error importing models:",e),alert(e?.message||"Failed to import models from /models.")}finally{b(!1)}}},I=u.some(e=>!1!==e.isActive);return(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("p",{className:"text-sm text-text-muted",children:["Add ",m?"Anthropic":"OpenAI","-compatible models manually or import them from the /models endpoint."]}),(0,a.jsxs)("div",{className:"flex items-end gap-2 flex-wrap",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-[240px]",children:[(0,a.jsx)("label",{htmlFor:"new-compatible-model-input",className:"text-xs text-text-muted mb-1 block",children:"Model ID"}),(0,a.jsx)("input",{id:"new-compatible-model-input",type:"text",value:p,onChange:e=>x(e.target.value),onKeyDown:e=>"Enter"===e.key&&A(),placeholder:m?"claude-3-opus-20240229":"gpt-4o",className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})]}),(0,a.jsx)(d.$n,{size:"sm",icon:"add",onClick:A,disabled:!p.trim()||h,children:h?"Adding...":"Add"}),(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"download",onClick:T,disabled:!I||g,children:g?"Importing...":"Import from /models"})]}),!I&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Add a connection to enable importing models."}),$.length>0&&(0,a.jsx)("div",{className:"flex flex-col gap-3",children:$.map(({modelId:s,fullModel:i,alias:l})=>(0,a.jsx)(C,{modelId:s,fullModel:`${t}/${s}`,copied:r,onCopy:n,onDeleteAlias:()=>o(l),onTest:u.length>0?()=>k(s):void 0,testStatus:j[`${e}/${s}`],isTesting:y.has(s)},i))})]})}k.propTypes={model:w().shape({id:w().string.isRequired}).isRequired,fullModel:w().string.isRequired,alias:w().string,copied:w().string,onCopy:w().func.isRequired,testStatus:w().oneOf(["ok","error"]),isCustom:w().bool,isFree:w().bool,onDeleteAlias:w().func,onTest:w().func,isTesting:w().bool,onDisable:w().func,thinkingSuffix:w().string},w().string.isRequired,w().string.isRequired,w().string,w().func.isRequired,w().func.isRequired,w().func,w().oneOf(["ok","error"]),w().bool,w().string.isRequired,w().object.isRequired,w().string,w().func.isRequired,w().func.isRequired,w().func.isRequired,S.propTypes={providerStorageAlias:w().string.isRequired,providerDisplayAlias:w().string.isRequired,modelAliases:w().object.isRequired,copied:w().string,onCopy:w().func.isRequired,onSetAlias:w().func.isRequired,onDeleteAlias:w().func.isRequired,onAliasesChanged:w().func.isRequired,connections:w().arrayOf(w().shape({id:w().string,isActive:w().bool})).isRequired,isAnthropic:w().bool};var $=s(81277);function A({until:e}){let[t,s]=(0,i.useState)("");return((0,i.useEffect)(()=>{let t=()=>{let t=new Date(e).getTime();if(!Number.isFinite(t))return void s("");let a=t-Date.now();if(a<=0)return void s("");let i=Math.floor(a/1e3);if(i<60)s(`${i}s`);else if(i<3600)s(`${Math.floor(i/60)}m ${i%60}s`);else{let e=Math.floor(i/3600),t=Math.floor(i%3600/60);s(`${e}h ${t}m`)}};t();let a=setInterval(t,1e3);return()=>clearInterval(a)},[e]),t)?(0,a.jsxs)("span",{className:"text-xs text-orange-500 font-mono",children:["⏱ ",t]}):null}function T({connection:e,proxyPools:t,isOAuth:s,isFirst:r,isLast:n,onMoveUp:l,onMoveDown:o,onToggleActive:c,onUpdateProxy:u,onEdit:m,onDelete:p,autoPingEnabled:x=!1,onToggleAutoPing:h,oneByOneStatus:f=null}){let[g,b]=(0,i.useState)(!1),[v,j]=(0,i.useState)(!1),w=(0,i.useRef)(null),k=(0,i.useMemo)(()=>new Map((t||[]).map(e=>[e.id,e])),[t]),N=(0,i.useMemo)(()=>t||[],[t]),C=e.providerSpecificData?.proxyPoolId||null,S=C?k.get(C):null,I=e.providerSpecificData?.connectionProxyEnabled===!0&&!!e.providerSpecificData?.connectionProxyUrl,E=!!C||I,P=S?`Pool: ${S.name}`:C?`Pool: ${C} (inactive/missing)`:I?`Legacy: ${e.providerSpecificData?.connectionProxyUrl}`:"",O="";if(S?.proxyUrl||e.providerSpecificData?.connectionProxyUrl){let t=S?.proxyUrl||e.providerSpecificData?.connectionProxyUrl;try{let e=new URL(t);O=`${e.protocol}//${e.hostname}${e.port?`:${e.port}`:""}`}catch{O=t}}let R=S?.noProxy||e.providerSpecificData?.connectionNoProxy||"",_="default";S?.isActive===!0?_="success":(C||I)&&(_="error"),(0,i.useEffect)(()=>{if(!g)return;let e=e=>{w.current&&!w.current.contains(e.target)&&b(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[g]);let D=async e=>{j(!0);try{await u("__none__"===e?null:e)}finally{j(!1),b(!1)}},q=e.authType||(s?"oauth":"apikey"),z="oauth"===q,U="cookie"===q,M=e=>"string"==typeof e&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e),L=z?M(e.email)?e.email:M(e.name)?e.name:e.name||e.email||e.displayName||"OAuth Account":e.name||e.email||e.displayName||"API Key",F=(0,$.c)(e),J=null!==F,K="unavailable"!==e.testStatus||J?e.testStatus:"active",B=(0,y.d4)(e),V=!!e.quarantinedAt,G={policy_suspended:"Policy suspension",credential_rejected:"Credential rejected",reauth_required:"Sign-in required",authentication:"Repeated authentication failure"}[e.failureClass]||e.quarantineReason||"Account quarantined",H=Number.isFinite(Date.parse(e.quarantinedAt))?new Date(e.quarantinedAt).toLocaleString():e.quarantinedAt||null,W=e.modelLockReason?.resetsAt,Q=Number.isFinite(Date.parse(W))?new Date(W).toLocaleString():W||null,Z=()=>f?"queued"===f.state?"queued":"testing"===f.state?"testing":"success"===f.state?"success":"failed"===f.state?f.error?`failed: ${f.error}`:"failed":null:null;return(0,a.jsxs)("div",{className:`group flex min-w-0 flex-col gap-3 rounded-lg p-2 transition-colors hover:bg-black/[0.02] dark:hover:bg-white/[0.02] sm:flex-row sm:items-center sm:justify-between ${!1===e.isActive&&!V?"opacity-60":""}`,children:[(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 items-start gap-2 sm:items-center sm:gap-3",children:[(0,a.jsxs)("div",{className:"flex shrink-0 flex-col",children:[(0,a.jsx)("button",{onClick:l,disabled:r,className:`p-0.5 rounded ${r?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_up"})}),(0,a.jsx)("button",{onClick:o,disabled:n,className:`p-0.5 rounded ${n?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_down"})})]}),(0,a.jsx)("span",{className:"material-symbols-outlined shrink-0 text-base text-text-muted",children:U?"cookie":z?"lock":"key"}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"text-sm font-medium truncate",children:L}),(0,a.jsxs)("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1.5 sm:gap-2",children:[(0,a.jsx)(d.Ex,{variant:(()=>{if(!1===e.isActive)return"default";let t=(0,y.BU)(B);return"active"!==B.key?t:"active"===K||"success"===K?"success":"error"===K||"expired"===K||"unavailable"===K?"error":"default"})(),size:"sm",dot:!0,children:B.label||K||"unknown"}),(0,a.jsx)(d.Ex,{variant:"default",size:"sm",children:z?"OAuth":U?"Cookie":"API Key"}),V&&(0,a.jsx)(d.Ex,{variant:"error",size:"sm",children:"Quarantined"}),E&&(0,a.jsx)(d.Ex,{variant:_,size:"sm",children:"Proxy"}),e.autoDisabledAt&&!V&&(0,a.jsxs)("span",{className:"text-[10px] text-text-muted",children:["token_expired"===e.autoDisabledReason?"Token expired":"banned"===e.autoDisabledReason?"Banned":"quota_exhausted"===e.autoDisabledReason?"Quota exhausted":"Auto-disabled"," — ",new Date(e.autoDisabledAt).toLocaleDateString()]}),V&&(0,a.jsxs)("span",{className:"max-w-full truncate text-xs text-red-600 dark:text-red-400 sm:max-w-[420px]",title:`${e.quarantineReason||G}${H?` - ${H}`:""}`,children:[G,H?` - ${H}`:""]}),J&&!1!==e.isActive&&(0,a.jsx)(A,{until:F}),J&&e.modelLockReason&&!1!==e.isActive&&(0,a.jsxs)("span",{className:"max-w-full truncate text-xs text-amber-600 dark:text-amber-400 sm:max-w-[360px]",title:`${e.modelLockReason.reason}${Q?` — resets ${Q}`:""}`,children:[e.modelLockReason.model,e.modelLockReason.providerErrorCode?` (${e.modelLockReason.providerErrorCode})`:"",Q?` — resets ${Q}`:""]}),e.lastError&&!1!==e.isActive&&(0,a.jsx)("span",{className:"max-w-full truncate text-xs text-red-500 sm:max-w-[300px]",title:e.lastError,children:e.lastError}),(0,a.jsxs)("span",{className:"text-xs text-text-muted",children:["#",e.priority]}),e.globalPriority&&(0,a.jsxs)("span",{className:"text-xs text-text-muted",children:["Auto: ",e.globalPriority]}),Z()&&(0,a.jsx)(d.Ex,{variant:f?"success"===f.state?"success":"failed"===f.state?"error":"testing"===f.state?"primary":"default":"default",size:"sm",children:Z()})]}),E&&(0,a.jsxs)("div",{className:"mt-1 flex items-center gap-2 flex-wrap",children:[(0,a.jsx)("span",{className:"max-w-full truncate text-[11px] text-text-muted sm:max-w-[420px]",title:P,children:P}),O&&(0,a.jsx)("code",{className:"max-w-full truncate rounded bg-black/5 px-1 py-0.5 font-mono text-[10px] text-text-muted dark:bg-white/5 sm:max-w-[260px]",children:O}),R&&(0,a.jsxs)("span",{className:"max-w-full truncate text-[11px] text-text-muted sm:max-w-[320px]",title:R,children:["no_proxy: ",R]})]}),V&&!1===e.isActive&&(0,a.jsx)("p",{className:"mt-1 text-[11px] leading-relaxed text-text-muted",children:"Re-enable only permits router requests again; it does not change the account's upstream status."})]})]}),(0,a.jsxs)("div",{className:"flex w-full items-center justify-between gap-2 sm:w-auto sm:justify-end",children:[(0,a.jsxs)("div",{className:"grid flex-1 grid-cols-3 gap-1 sm:flex sm:flex-none",children:[N.length>0&&(0,a.jsxs)("div",{className:"relative",ref:w,children:[(0,a.jsxs)("button",{onClick:()=>b(e=>!e),className:`flex w-full flex-col items-center rounded px-2 py-1 transition-colors hover:bg-black/5 dark:hover:bg-white/5 ${E?"text-primary":"text-text-muted hover:text-primary"}`,disabled:v,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:v?"progress_activity":"lan"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Proxy"})]}),g&&(0,a.jsxs)("div",{className:"absolute right-0 top-full z-50 mt-1 max-w-[78vw] min-w-[160px] rounded-lg border border-border bg-bg py-1 shadow-lg",children:[(0,a.jsx)("button",{onClick:()=>D("__none__"),className:`w-full text-left px-3 py-1.5 text-sm hover:bg-black/5 dark:hover:bg-white/5 ${!C?"text-primary font-medium":"text-text-main"}`,children:"None"}),N.map(e=>(0,a.jsx)("button",{onClick:()=>D(e.id),className:`w-full text-left px-3 py-1.5 text-sm hover:bg-black/5 dark:hover:bg-white/5 ${C===e.id?"text-primary font-medium":"text-text-main"}`,children:e.name},e.id))]})]}),h&&(0,a.jsxs)("button",{onClick:()=>h(!x),className:`flex flex-col items-center rounded px-2 py-1 transition-colors hover:bg-black/5 dark:hover:bg-white/5 ${x?"text-primary":"text-text-muted hover:text-primary"}`,title:x?"Disable quota auto-ping for this account":"Warm the 5-hour quota window after reset with a tiny request",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"bolt"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Auto-ping"})]}),(0,a.jsxs)("button",{onClick:m,className:"flex flex-col items-center rounded px-2 py-1 text-text-muted hover:bg-black/5 hover:text-primary dark:hover:bg-white/5",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Edit"})]}),(0,a.jsxs)("button",{onClick:p,className:"flex flex-col items-center rounded px-2 py-1 text-red-500 hover:bg-red-500/10",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"}),(0,a.jsx)("span",{className:"text-[10px] leading-tight",children:"Delete"})]})]}),(0,a.jsx)(d.lM,{size:"sm",checked:e.isActive??!0,onChange:c,title:e.isActive??!0?"Disable connection":V?"Re-enable routing only; upstream suspension or credential status is unchanged":"Enable connection"})]})]})}A.propTypes={until:w().string.isRequired},T.propTypes={connection:w().shape({id:w().string,name:w().string,email:w().string,displayName:w().string,modelLockUntil:w().string,testStatus:w().string,isActive:w().bool,lastError:w().string,failureClass:w().string,quarantinedAt:w().string,quarantineReason:w().string,priority:w().number,globalPriority:w().number}).isRequired,proxyPools:w().arrayOf(w().shape({id:w().string,name:w().string,proxyUrl:w().string,noProxy:w().string,isActive:w().bool})),isOAuth:w().bool.isRequired,isFirst:w().bool.isRequired,isLast:w().bool.isRequired,onMoveUp:w().func.isRequired,onMoveDown:w().func.isRequired,onToggleActive:w().func.isRequired,onUpdateProxy:w().func,autoPingEnabled:w().bool,onToggleAutoPing:w().func,onEdit:w().func.isRequired,onDelete:w().func.isRequired,oneByOneStatus:w().shape({state:w().string,error:w().string})};var I=s(28915);let E=`name1|sk-key1
|
|
2
|
-
name2|sk-key2
|
|
3
|
-
sk-key-only-auto-named`;function P({isOpen:e,provider:t,providerName:s,isCompatible:r,isAnthropic:n,authType:l,authHint:o,website:u,proxyPools:m,error:p,onSave:x,onBulkDone:h,onClose:f}){let g="__none__",b="ollama-local"===t,y="notion-ai"===t,v="cookie"===l,j="xai"===t&&!v,w=v?"Cookie Value":"qoder"===t?"Personal Access Token (PAT)":"API Key",k=v?"grok-web"===t?"sso=xxxxx... or just the raw value":y?"token_v2=xxxxx..., full Cookie header, or cookie-export JSON":"eyJhbGciOi...":j?"xai-...":"qoder"===t?"pt-...":"",N="azure"===t,C="cloudflare-ai"===t,S=c.Q2?.[t]?.regions||null,$=c.Q2?.[t]?.defaultRegion||S?.[0]?.id||"",[A,T]=(0,i.useState)({name:"",apiKey:"",defaultModel:"",priority:1,proxyPoolId:g,ollamaHostUrl:""}),[O,R]=(0,i.useState)({azureEndpoint:"",apiVersion:"2024-10-01-preview",deployment:"",organization:""}),[_,D]=(0,i.useState)({accountId:""}),[q,z]=(0,i.useState)({spaceId:"",spaceViewId:"",userId:"",clientVersion:"",cell:""}),[U,M]=(0,i.useState)($),[L,F]=(0,i.useState)(!1),[J,K]=(0,i.useState)(null),[B,V]=(0,i.useState)(!1),[G,H]=(0,i.useState)("single"),[W,Q]=(0,i.useState)(""),[Z,X]=(0,i.useState)(null),Y=(0,i.useRef)(!1);(0,i.useEffect)(()=>{e&&!Y.current&&(T({name:"",apiKey:"",defaultModel:"",priority:1,proxyPoolId:g,ollamaHostUrl:""}),R({azureEndpoint:"",apiVersion:"2024-10-01-preview",deployment:"",organization:""}),D({accountId:""}),z({spaceId:"",spaceViewId:"",userId:"",clientVersion:"",cell:""}),M($),K(null),H("single"),Q(""),X(null)),Y.current=e},[e]);let ee=()=>{if(b&&A.ollamaHostUrl.trim())return{baseUrl:A.ollamaHostUrl.trim()};if(N)return{azureEndpoint:O.azureEndpoint,apiVersion:O.apiVersion,deployment:O.deployment,organization:O.organization};if(C)return{accountId:_.accountId};if(y){let e=Object.entries({spaceId:q.spaceId.trim(),spaceViewId:q.spaceViewId.trim(),userId:q.userId.trim(),clientVersion:q.clientVersion.trim(),cell:q.cell.trim()}).filter(([,e])=>e);return e.length>0?Object.fromEntries(e):void 0}if(S&&U)return{region:U}},et=async()=>{F(!0);try{let e=await (0,I.x6)("/api/providers/validate",{method:"POST",body:{provider:t,apiKey:A.apiKey,providerSpecificData:ee()}});K(e.valid?"success":"failed")}catch{K("unknown")}finally{F(!1)}},es=async()=>{if(t&&(b||A.apiKey)&&(b||A.name)&&(!r||A.defaultModel.trim())){V(!0);try{let e=!1;try{F(!0),K(null),e=!!(await (0,I.x6)("/api/providers/validate",{method:"POST",body:{provider:t,apiKey:A.apiKey,providerSpecificData:ee()}})).valid,K(e?"success":"failed")}catch{K("unknown")}finally{F(!1)}let s=Number.parseInt(A.priority,10);await x({name:A.name||(b?"Ollama Local":""),apiKey:A.apiKey,defaultModel:r?A.defaultModel.trim():void 0,priority:Number.isFinite(s)?s:1,proxyPoolId:A.proxyPoolId===g?null:A.proxyPoolId,testStatus:e?"active":"unknown",providerSpecificData:ee()})}finally{V(!1)}}},ea=async()=>{let e=W.split("\n").map(e=>e.trim()).filter(Boolean);if(!e.length)return;V(!0),X(null);let s=0,a=0,i=[],r=[];for(let n=0;n<e.length;n++){let l=e[n].split("|"),o=l.length>=2?l.slice(1).join("|").trim():l[0].trim(),d=l.length>=2?l[0].trim():"Key",c=`${d} ${n+1}`;try{await (0,I.x6)("/api/providers",{method:"POST",body:{provider:t,apiKey:o,name:c,priority:1,testStatus:"unknown"}}),s++}catch(t){a++,i.push({line:e[n],message:t?.message||"Request failed"}),r.push(e[n])}}V(!1),X({success:s,failed:a,failedRows:i}),Q(r.join("\n")),s>0&&h&&h()};return t?(0,a.jsx)(d.aF,{isOpen:e,title:`Add ${s||t} ${w}`,onClose:f,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[!y&&(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$n,{size:"sm",variant:"single"===G?"primary":"ghost",onClick:()=>{H("single"),X(null)},children:"Single"}),(0,a.jsx)(d.$n,{size:"sm",variant:"bulk"===G?"primary":"ghost",onClick:()=>{H("bulk"),X(null)},children:"Bulk Add"})]}),"bulk"===G&&!y&&(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["One key per line. Format: ",(0,a.jsx)("code",{children:"name|apiKey"})," or just ",(0,a.jsx)("code",{children:"apiKey"})," (auto-named by index)."]}),(0,a.jsx)("textarea",{className:"w-full rounded border border-accent/30 bg-sidebar p-2 text-sm font-mono resize-y min-h-[140px] focus:outline-none focus:ring-1 focus:ring-primary",placeholder:E,value:W,onChange:e=>Q(e.target.value)}),Z&&(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsxs)("div",{className:`text-sm font-medium ${Z.failed>0?"text-yellow-400":"text-green-400"}`,children:["✓ ",Z.success," added",Z.failed>0?`, ✗ ${Z.failed} failed`:""]}),Z.failedRows?.length>0&&(0,a.jsx)("ul",{className:"text-xs text-red-500 flex flex-col gap-0.5",children:Z.failedRows.map((e,t)=>(0,a.jsxs)("li",{className:"break-words",children:[(0,a.jsx)("span",{className:"font-mono",children:e.line.length>40?`${e.line.slice(0,40)}…`:e.line}),` — ${e.message}`]},t))})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$n,{onClick:ea,fullWidth:!0,disabled:B||!W.trim(),children:B?"Adding...":"Add All Keys"}),(0,a.jsx)(d.$n,{onClick:f,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),("single"===G||y)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(d.pd,{label:"Name",value:A.name,onChange:e=>T({...A,name:e.target.value}),placeholder:b?"Ollama Local":"Production Key"}),b&&(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.pd,{label:"Ollama Host URL",value:A.ollamaHostUrl,onChange:e=>T({...A,ollamaHostUrl:e.target.value}),placeholder:"http://localhost:11434",className:"flex-1"}),(0,a.jsx)("div",{className:"pt-6",children:(0,a.jsx)(d.$n,{onClick:et,disabled:L||B,variant:"secondary",children:L?"Checking...":"Check"})})]}),!b&&(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.pd,{label:w,type:v?"text":"password",value:A.apiKey,onChange:e=>T({...A,apiKey:e.target.value}),placeholder:k,className:"flex-1"}),(0,a.jsx)("div",{className:"pt-6",children:(0,a.jsx)(d.$n,{onClick:et,disabled:!A.apiKey||L||B,variant:"secondary",children:L?"Checking...":"Check"})})]}),j&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Use a direct xAI API key from console.x.ai. This is separate from Grok Build OAuth."}),v&&o&&(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:[o,u&&(0,a.jsxs)(a.Fragment,{children:[" ",(0,a.jsxs)("a",{href:u,target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:["Open ",u.replace(/^https?:\/\//,"")]})]})]}),y&&(0,a.jsxs)("div",{className:"flex flex-col gap-3 rounded-lg border border-accent/20 bg-sidebar/50 p-4",children:[(0,a.jsx)("h3",{className:"text-sm font-semibold",children:"Notion workspace metadata (optional)"}),(0,a.jsx)("p",{className:"text-xs leading-relaxed text-text-muted",children:"Space ID and User ID are optional. The router resolves them from Notion's authenticated getSpaces endpoint; enter them only to override discovery. They are metadata only, and the cookie stays in the encrypted provider credential store."}),(0,a.jsx)(d.pd,{label:"Space ID (optional)",value:q.spaceId,onChange:e=>z({...q,spaceId:e.target.value}),placeholder:"Auto-resolved from Notion"}),(0,a.jsx)(d.pd,{label:"User ID (optional)",value:q.userId,onChange:e=>z({...q,userId:e.target.value}),placeholder:"Auto-resolved from Notion"}),(0,a.jsx)(d.pd,{label:"Space View ID (optional)",value:q.spaceViewId,onChange:e=>z({...q,spaceViewId:e.target.value}),placeholder:"Leave blank to use Space ID"}),(0,a.jsx)(d.pd,{label:"Notion client version (optional)",value:q.clientVersion,onChange:e=>z({...q,clientVersion:e.target.value}),placeholder:"Copy from the browser request if required"}),(0,a.jsx)(d.pd,{label:"Cell (optional)",value:q.cell,onChange:e=>z({...q,cell:e.target.value}),placeholder:"Copy x-notion-cell if your request has it"})]}),S&&(0,a.jsx)(d.l6,{label:"Region",value:U,onChange:e=>M(e.target.value),options:S.map(e=>({value:e.id,label:e.label}))}),r&&(0,a.jsx)(d.pd,{label:"Default Model",value:A.defaultModel,onChange:e=>T({...A,defaultModel:e.target.value}),placeholder:n?"claude-3-5-sonnet-latest":"gpt-4o-mini"}),b&&(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["Leave blank to use ",(0,a.jsx)("code",{children:"http://localhost:11434"}),". For remote Ollama, enter the full host URL (e.g. ",(0,a.jsx)("code",{children:"http://192.168.1.10:11434"}),")."]}),J&&(0,a.jsx)(d.Ex,{variant:"success"===J?"success":"failed"===J?"error":"default",children:"success"===J?"Valid":"failed"===J?"Invalid":"Could not validate"}),p&&(0,a.jsx)("p",{className:"text-xs text-red-500 break-words",children:p}),r&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Enter the model ID exactly as your compatible endpoint expects it. This model will be saved as the connection default."}),C&&(0,a.jsxs)("div",{className:"bg-sidebar/50 p-4 rounded-lg border border-accent/20",children:[(0,a.jsx)("h3",{className:"font-semibold mb-3 text-sm",children:"Cloudflare Workers AI"}),(0,a.jsx)(d.pd,{label:"Account ID",value:_.accountId,onChange:e=>D({..._,accountId:e.target.value}),placeholder:"abc123def456..."}),(0,a.jsxs)("p",{className:"text-xs text-text-muted mt-2",children:["Find your Account ID in the right sidebar of ",(0,a.jsx)("a",{href:"https://dash.cloudflare.com",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"dash.cloudflare.com"})]})]}),N&&(0,a.jsxs)("div",{className:"bg-sidebar/50 p-4 rounded-lg border border-accent/20",children:[(0,a.jsx)("h3",{className:"font-semibold mb-3 text-sm",children:"Azure OpenAI Configuration"}),(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsx)(d.pd,{label:"Azure Endpoint",value:O.azureEndpoint,onChange:e=>R({...O,azureEndpoint:e.target.value}),placeholder:"https://your-resource.openai.azure.com"}),(0,a.jsx)(d.pd,{label:"Deployment Name",value:O.deployment,onChange:e=>R({...O,deployment:e.target.value}),placeholder:"gpt-4"}),(0,a.jsx)(d.pd,{label:"API Version",value:O.apiVersion,onChange:e=>R({...O,apiVersion:e.target.value}),placeholder:"2024-10-01-preview"}),(0,a.jsx)(d.pd,{label:"Organization",value:O.organization,onChange:e=>R({...O,organization:e.target.value}),placeholder:"Organization ID"})]})]}),(0,a.jsx)(d.pd,{label:"Priority",type:"number",value:A.priority,onChange:e=>T({...A,priority:e.target.value}),onBlur:e=>{let t=Number.parseInt(e.target.value,10);T(e=>({...e,priority:Number.isFinite(t)?t:1}))}}),(0,a.jsx)(d.l6,{label:"Proxy Pool",value:A.proxyPoolId,onChange:e=>T({...A,proxyPoolId:e.target.value}),options:[{value:g,label:"None"},...(m||[]).map(e=>({value:e.id,label:e.name}))],placeholder:"None"}),0===(m||[]).length&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"No active proxy pools available. Create one in Proxy Pools page first."}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Legacy manual proxy fields are still accepted by API for backward compatibility."}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$n,{onClick:es,fullWidth:!0,disabled:B||!b&&(!A.name||!A.apiKey)||r&&!A.defaultModel.trim()||N&&(!O.azureEndpoint||!O.deployment||!O.organization)||C&&!_.accountId,children:B?"Saving...":"Save"}),(0,a.jsx)(d.$n,{onClick:f,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})}):null}function O({isOpen:e,node:t,onSave:s,onClose:r,isAnthropic:n}){let[l,o]=(0,i.useState)({name:"",prefix:"",apiType:"chat",baseUrl:"https://api.openai.com/v1"}),[c,u]=(0,i.useState)(!1),[m,p]=(0,i.useState)(""),[x,h]=(0,i.useState)(""),[f,g]=(0,i.useState)(!1),[b,y]=(0,i.useState)(null);(0,i.useEffect)(()=>{t&&(o({name:t.name||"",prefix:t.prefix||"",apiType:t.apiType||"chat",baseUrl:t.baseUrl||(n?"https://api.anthropic.com/v1":"https://api.openai.com/v1")}),p(""),h(""),y(null))},[t,n]);let v=async()=>{if(l.name.trim()&&l.prefix.trim()&&l.baseUrl.trim()){u(!0);try{let e={name:l.name,prefix:l.prefix,baseUrl:l.baseUrl};n||(e.apiType=l.apiType),await s(e)}finally{u(!1)}}},j=async()=>{g(!0);try{let e=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:l.baseUrl,apiKey:m,type:n?"anthropic-compatible":"openai-compatible",modelId:x.trim()||void 0})}),t=await e.json();y(t.valid?"success":"failed")}catch{y("failed")}finally{g(!1)}};return t?(0,a.jsx)(d.aF,{isOpen:e,title:`Edit ${n?"Anthropic":"OpenAI"} Compatible`,onClose:r,children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsx)(d.pd,{label:"Name",value:l.name,onChange:e=>o({...l,name:e.target.value}),placeholder:`${n?"Anthropic":"OpenAI"} Compatible (Prod)`,hint:"Required. A friendly label for this node."}),(0,a.jsx)(d.pd,{label:"Prefix",value:l.prefix,onChange:e=>o({...l,prefix:e.target.value}),placeholder:n?"ac-prod":"oc-prod",hint:"Required. Used as the provider prefix for model IDs."}),!n&&(0,a.jsx)(d.l6,{label:"API Type",options:[{value:"chat",label:"Chat Completions"},{value:"responses",label:"Responses API"}],value:l.apiType,onChange:e=>o({...l,apiType:e.target.value})}),(0,a.jsx)(d.pd,{label:"Base URL",value:l.baseUrl,onChange:e=>o({...l,baseUrl:e.target.value}),placeholder:n?"https://api.anthropic.com/v1":"https://api.openai.com/v1",hint:`Use the base URL (ending in /v1) for your ${n?"Anthropic":"OpenAI"}-compatible API.`}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.pd,{label:"API Key (for Check)",type:"password",value:m,onChange:e=>p(e.target.value),className:"flex-1"}),(0,a.jsx)("div",{className:"pt-6",children:(0,a.jsx)(d.$n,{onClick:j,disabled:!m||f||!l.baseUrl.trim(),variant:"secondary",children:f?"Checking...":"Check"})})]}),(0,a.jsx)(d.pd,{label:"Model ID (optional)",value:x,onChange:e=>h(e.target.value),placeholder:"e.g. my-model-id",hint:"If provider lacks /models endpoint, enter a model ID to validate via chat/completions instead."}),b&&(0,a.jsx)(d.Ex,{variant:"success"===b?"success":"error",children:"success"===b?"Valid":"Invalid"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$n,{onClick:v,fullWidth:!0,disabled:!l.name.trim()||!l.prefix.trim()||!l.baseUrl.trim()||c,children:c?"Saving...":"Save"}),(0,a.jsx)(d.$n,{onClick:r,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}function R({isOpen:e,providerAlias:t,providerDisplayAlias:s,onSave:r,onClose:n}){let[l,o]=(0,i.useState)(""),[c,u]=(0,i.useState)(null),[m,p]=(0,i.useState)(""),[x,h]=(0,i.useState)(!1);(0,i.useEffect)(()=>{e&&(o(""),u(null),p(""))},[e]);let f=e=>{let s=`${t}/`;return e.startsWith(s)?e.slice(s.length):e},g=async()=>{let e=f(l.trim());if(e){u("testing"),p("");try{let s=await fetch("/api/models/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:`${t}/${e}`})}),a=await s.json();u(a.ok?"ok":"error"),p(a.error||"")}catch(e){u("error"),p(e.message)}}},b=async()=>{let e=f(l.trim());if(e&&!x){h(!0);try{await r(e)}finally{h(!1)}}};return(0,a.jsx)(d.aF,{isOpen:e,onClose:n,title:"Add Custom Model",children:(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm font-medium mb-1.5 block",children:"Model ID"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("input",{type:"text",value:l,onChange:e=>{o(e.target.value),u(null),p("")},onKeyDown:e=>{"Enter"===e.key&&g()},placeholder:"e.g. claude-opus-4-5",className:"flex-1 px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",autoFocus:!0}),(0,a.jsx)(d.$n,{variant:"secondary",icon:"science",loading:"testing"===c,onClick:g,disabled:!l.trim()||"testing"===c,children:"testing"===c?"Testing...":"Test"})]}),(0,a.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Sent to provider as: ",(0,a.jsx)("code",{className:"font-mono bg-sidebar px-1 rounded",children:f(l.trim())||"model-id"})]})]}),"ok"===c&&(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-base",children:"check_circle"}),"Model is reachable"]}),"error"===c&&(0,a.jsxs)("div",{className:"flex items-start gap-2 text-sm text-red-500",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-base shrink-0",children:"cancel"}),(0,a.jsx)("span",{children:m||"Model not reachable"})]}),(0,a.jsxs)("div",{className:"flex gap-2 pt-1",children:[(0,a.jsx)(d.$n,{onClick:n,variant:"ghost",fullWidth:!0,size:"sm",children:"Cancel"}),(0,a.jsx)(d.$n,{onClick:b,fullWidth:!0,size:"sm",disabled:!l.trim()||x,children:x?"Adding...":"Add Model"})]})]})})}P.propTypes={isOpen:w().bool.isRequired,provider:w().string,providerName:w().string,isCompatible:w().bool,isAnthropic:w().bool,authType:w().string,authHint:w().string,website:w().string,proxyPools:w().arrayOf(w().shape({id:w().string,name:w().string})),error:w().string,onSave:w().func.isRequired,onBulkDone:w().func,onClose:w().func.isRequired},O.propTypes={isOpen:w().bool.isRequired,node:w().shape({id:w().string,name:w().string,prefix:w().string,apiType:w().string,baseUrl:w().string}),onSave:w().func.isRequired,onClose:w().func.isRequired,isAnthropic:w().bool},R.propTypes={isOpen:w().bool.isRequired,providerAlias:w().string.isRequired,providerDisplayAlias:w().string.isRequired,onSave:w().func.isRequired,onClose:w().func.isRequired};let _="/api/providers/codebuddy/discover-models",D={verified:"Verified",recognized:"Recognized",unavailable:"Unavailable",credential_rejected:"Credential rejected",error:"Inconclusive",skipped:"Skipped"},q={verified:"border-green-500/30 bg-green-500/[0.08] text-green-700 dark:text-green-300",recognized:"border-sky-500/30 bg-sky-500/[0.08] text-sky-700 dark:text-sky-300",unavailable:"border-black/10 bg-black/[0.03] text-text-muted dark:border-white/10 dark:bg-white/[0.04]",credential_rejected:"border-red-500/30 bg-red-500/[0.08] text-red-700 dark:text-red-300",error:"border-amber-500/30 bg-amber-500/[0.08] text-amber-700 dark:text-amber-300",skipped:"border-black/10 bg-black/[0.03] text-text-muted dark:border-white/10 dark:bg-white/[0.04]"};function z(e,t){return e?.error||t}function U({isOpen:e,connections:t,onModelsAdded:s,onClose:r}){let n=(0,i.useMemo)(()=>t.filter(e=>"codebuddy"===e.provider&&!1!==e.isActive),[t]),[l,o]=(0,i.useState)(null),[c,u]=(0,i.useState)(!1),[m,p]=(0,i.useState)(""),[x,h]=(0,i.useState)(""),[f,g]=(0,i.useState)(()=>new Set),[b,y]=(0,i.useState)(""),[v,j]=(0,i.useState)(!1),[w,k]=(0,i.useState)(!1),[N,C]=(0,i.useState)([]),[S,$]=(0,i.useState)(()=>new Set),A=(0,i.useCallback)(async()=>{u(!0),p(""),h(""),j(!1),C([]);try{let e=await fetch(_,{cache:"no-store"}),t=await e.json();if(!e.ok)throw Error(z(t,"Could not refresh model candidates"));o(t),g(new Set((t.hidden||[]).map(e=>e.id)))}catch(e){p(e.message)}finally{u(!1)}},[]);(0,i.useEffect)(()=>{e&&(y(e=>n.some(t=>t.id===e)?e:n[0]?.id||""),A())},[n,e,A]);let T=async()=>{if(b&&0!==f.size&&!w){k(!0),p(""),h("");try{let e=await fetch(_,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({connectionId:b,models:[...f]})}),t=await e.json();if(!e.ok)throw Error(z(t,"Hidden model scan failed"));C(t.results||[]),j(!1)}catch(e){p(e.message)}finally{k(!1)}}},I=(0,i.useMemo)(()=>new Map(N.map(e=>[e.id,e])),[N]),E=(0,i.useMemo)(()=>(l?.hidden||[]).filter(e=>{let t=I.get(e.id)?.status;return e.previouslyVerified||"verified"===t||"recognized"===t}),[l,I]),P=async e=>{let t=e.filter(e=>!S.has(e.id));if(!t.length)return;$(e=>new Set([...e,...t.map(e=>e.id)])),p(""),h("");let a=[];try{for(let e of t){let t=await fetch("/api/models/custom",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerAlias:"cb",id:e.id,type:"llm",name:e.name})}),s=await t.json();if(!t.ok)throw Error(z(s,`Could not add ${e.id}`));a.push(e)}window.dispatchEvent(new Event("customModelChanged")),await s?.(a),h(`${a.length} model${1===a.length?"":"s"} added to CodeBuddy Global.`)}catch(e){a.length&&(window.dispatchEvent(new Event("customModelChanged")),await s?.(a)),p(e.message)}finally{$(e=>{let s=new Set(e);return t.forEach(e=>s.delete(e.id)),s})}},O=E.filter(e=>f.has(e.id));return(0,a.jsx)(d.aF,{isOpen:e,onClose:r,title:"Discover CodeBuddy Global Models",size:"full",children:(0,a.jsxs)("div",{className:"flex flex-col gap-5",children:[(0,a.jsx)("div",{className:"overflow-hidden rounded-xl border border-cyan-500/20 bg-gradient-to-br from-cyan-500/[0.10] via-transparent to-amber-500/[0.08] p-4",children:(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-sm font-semibold text-text-main",children:"Live package candidates"}),(0,a.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-text-muted",children:"Refreshing reads Tencent's current CLI manifests and does not call a model or use credits."}),l?.version&&(0,a.jsxs)("p",{className:"mt-2 font-mono text-xs text-cyan-700 dark:text-cyan-300",children:["codebuddy-code@",l.version]})]}),(0,a.jsx)(d.$n,{variant:"secondary",size:"sm",icon:"refresh",loading:c,onClick:A,children:"Refresh Candidates"})]})}),m&&(0,a.jsx)("p",{role:"alert",className:"rounded-lg border border-red-500/25 bg-red-500/[0.08] px-3 py-2 text-sm text-red-600 dark:text-red-300",children:m}),x&&(0,a.jsx)("p",{className:"rounded-lg border border-green-500/25 bg-green-500/[0.08] px-3 py-2 text-sm text-green-700 dark:text-green-300",children:x}),l?.warnings?.map(e=>(0,a.jsx)("p",{className:"text-xs text-amber-600 dark:text-amber-300",children:e},e)),l&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3",children:[(0,a.jsxs)("div",{className:"rounded-lg border border-border bg-surface-2 px-3 py-2",children:[(0,a.jsx)("p",{className:"text-2xl font-semibold text-text-main",children:l.official?.length||0}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Official Global"})]}),(0,a.jsxs)("div",{className:"rounded-lg border border-border bg-surface-2 px-3 py-2",children:[(0,a.jsx)("p",{className:"text-2xl font-semibold text-text-main",children:l.hidden?.length||0}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Hidden candidates"})]}),(0,a.jsxs)("div",{className:"col-span-2 rounded-lg border border-border bg-surface-2 px-3 py-2 sm:col-span-1",children:[(0,a.jsx)("p",{className:"text-2xl font-semibold text-text-main",children:l.hidden?.filter(e=>e.previouslyVerified).length||0}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Previously verified"})]})]}),(0,a.jsxs)("section",{children:[(0,a.jsxs)("div",{className:"mb-2 flex items-center justify-between gap-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-sm font-semibold text-text-main",children:"Hidden route candidates"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"From alternate official manifests; availability is not guaranteed on Global SaaS."})]}),(0,a.jsx)("button",{type:"button",className:"text-xs font-medium text-primary hover:underline",onClick:()=>g(f.size===(l.hidden?.length||0)?new Set:new Set(l.hidden.map(e=>e.id))),children:f.size===(l.hidden?.length||0)?"Clear":"Select all"})]}),(0,a.jsx)("div",{className:"max-h-64 overflow-y-auto rounded-xl border border-border custom-scrollbar",children:(l.hidden||[]).map(e=>{let t=I.get(e.id);return(0,a.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 border-b border-border-subtle px-3 py-2.5 last:border-b-0 hover:bg-surface-2",children:[(0,a.jsx)("input",{type:"checkbox",checked:f.has(e.id),onChange:()=>{var t;return t=e.id,void g(e=>{let s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s})},className:"mt-1 accent-primary"}),(0,a.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,a.jsx)("span",{className:"block truncate text-sm font-medium text-text-main",children:e.name}),(0,a.jsx)("span",{className:"block truncate font-mono text-[11px] text-text-muted",children:e.id}),(0,a.jsx)("span",{className:"text-[10px] text-text-muted",children:e.sources.length?e.sources.join(" + "):"request history"})]}),(0,a.jsxs)("span",{className:"flex shrink-0 items-center gap-2",children:[e.previouslyVerified&&(0,a.jsx)("span",{className:"rounded-full bg-green-500/10 px-2 py-0.5 text-[10px] font-medium text-green-700 dark:text-green-300",children:"previous success"}),t&&(0,a.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10px] font-medium ${q[t.status]||q.error}`,children:D[t.status]||t.status}),(e.previouslyVerified||["verified","recognized"].includes(t?.status))&&(0,a.jsx)("button",{type:"button",onClick:t=>{t.preventDefault(),P([e])},className:"text-xs font-semibold text-primary hover:underline",disabled:S.has(e.id),children:S.has(e.id)?"Adding...":"Add"})]})]},e.id)})})]}),(0,a.jsxs)("section",{className:"rounded-xl border border-amber-500/25 bg-amber-500/[0.07] p-4",children:[(0,a.jsxs)("div",{className:"grid gap-3 sm:grid-cols-[1fr_auto] sm:items-end",children:[(0,a.jsx)(d.l6,{label:"CodeBuddy Global connection",value:b,onChange:e=>y(e.target.value),options:n.map(e=>({value:e.id,label:e.name||e.email||e.id})),placeholder:"No active Global connection",disabled:!n.length||w,hint:"Every probe is pinned to this connection."}),(0,a.jsxs)(d.$n,{size:"sm",icon:"radar",onClick:()=>j(!0),disabled:!b||0===f.size||w,children:["Scan Hidden Models (",f.size,")"]})]}),!n.length&&(0,a.jsx)("p",{className:"mt-2 text-xs text-red-500",children:"Add and activate a CodeBuddy Global connection before scanning."}),v&&(0,a.jsxs)("div",{className:"mt-4 rounded-lg border border-amber-500/40 bg-surface px-3 py-3",children:[(0,a.jsx)("p",{className:"text-sm font-semibold text-text-main",children:"Confirm credit-using scan"}),(0,a.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-text-muted",children:"These are real completion probes and may consume CodeBuddy credits. Scanning uses at most 3 concurrent requests and stops scheduling if the selected credential is rejected."}),(0,a.jsxs)("div",{className:"mt-3 flex justify-end gap-2",children:[(0,a.jsx)(d.$n,{size:"sm",variant:"ghost",onClick:()=>j(!1),disabled:w,children:"Cancel"}),(0,a.jsx)(d.$n,{size:"sm",icon:"science",loading:w,onClick:T,children:"Start Credit Scan"})]})]})]}),N.length>0&&(0,a.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:[N.filter(e=>"verified"===e.status).length," verified, ",N.filter(e=>"recognized"===e.status).length," recognized, ",N.filter(e=>"unavailable"===e.status).length," unavailable"]}),(0,a.jsxs)(d.$n,{size:"sm",icon:"playlist_add",onClick:()=>P(O),disabled:!O.length||S.size>0,children:["Add Selected Available (",O.length,")"]})]})]})]})})}U.propTypes={isOpen:w().bool.isRequired,connections:w().arrayOf(w().object).isRequired,onModelsAdded:w().func,onClose:w().func.isRequired};let M="kiro-bulk-import-active-job",L="Bulk import progress expired or was cleared.",F={claude:"claudeAutoPing",codex:"codexAutoPing"};function J(e){return["completed","cancelled","failed"].includes(e)}async function K(e){if(!e)return null;let t=await fetch(`/api/oauth/kiro/bulk-import/${e}`,{cache:"no-store"}),s=await t.json();return{res:t,data:s}}async function B(e="active"){let t=await fetch(`/api/oauth/kiro/bulk-import/latest?scope=${encodeURIComponent(e)}`,{cache:"no-store"}),s=await t.json();return{res:t,data:s}}async function V(e){let t=new AbortController,s=window.setTimeout(()=>t.abort(),8e3);try{let s=await fetch(e,{cache:"no-store",signal:t.signal}),a=null;try{a=await s.json()}catch{a=null}return{response:s,data:a}}finally{window.clearTimeout(s)}}function G(){let e,t=(0,r.useParams)(),s=(0,r.useRouter)(),n=t.id,[u,g]=(0,i.useState)([]),[j,w]=(0,i.useState)(!0),[N,C]=(0,i.useState)(""),[$,A]=(0,i.useState)(null),[I,E]=(0,i.useState)([]),[_,D]=(0,i.useState)(!1),[q,z]=(0,i.useState)(!1),[G,H]=(0,i.useState)(!1),[W,Q]=(0,i.useState)(!1),[Z,X]=(0,i.useState)(""),[Y,ee]=(0,i.useState)(!1),[et,es]=(0,i.useState)(!1),[ea,ei]=(0,i.useState)(!1),[er,en]=(0,i.useState)(null),[el,eo]=(0,i.useState)({}),[ed,ec]=(0,i.useState)(!1),[eu,em]=(0,i.useState)({}),[ep,ex]=(0,i.useState)({}),[eh,ef]=(0,i.useState)(()=>new Set),[eg,eb]=(0,i.useState)(!1),[ey,ev]=(0,i.useState)(!1),[ej,ew]=(0,i.useState)([]),[ek,eN]=(0,i.useState)("__none__"),[eC,eS]=(0,i.useState)(!1),[e$,eA]=(0,i.useState)(!1),[eT,eI]=(0,i.useState)(null),[eE,eP]=(0,i.useState)(""),[eO,eR]=(0,i.useState)("auto"),[e_,eD]=(0,i.useState)({}),[eq,ez]=(0,i.useState)([]),[eU,eM]=(0,i.useState)([]),[eL,eF]=(0,i.useState)([]),[eJ,eK]=(0,i.useState)(null),[eB,eV]=(0,i.useState)(!1),[eG,eH]=(0,i.useState)(!1),[eW,eQ]=(0,i.useState)(!1),[eZ,eX]=(0,i.useState)(null),[eY,e0]=(0,i.useState)({}),[e1,e2]=(0,i.useState)(null),e5=(0,i.useRef)(!1),e3=(0,i.useRef)(null),e4=(0,i.useRef)("1"),[e6,e7]=(0,i.useState)(!1),[e8,e9]=(0,i.useState)(null),[te,tt]=(0,i.useState)(""),[ts,ta]=(0,i.useState)(1),[ti,tr]=(0,i.useState)(20),[tn,tl]=(0,i.useState)("all"),[to,td]=(0,i.useState)(""),[tc,tu]=(0,i.useState)(1),[tm,tp]=(0,i.useState)(20),{copied:tx,copy:th}=(0,h.C)(),tf=(0,i.useRef)(0),tg=(0,i.useRef)([]),tb=(0,i.useRef)(!0),ty="ag_risk_confirmed",tv=(0,i.useCallback)(()=>{e9(null),tt(""),tf.current=0,window.localStorage.removeItem(M)},[]),tj=()=>{D(!0)},tw=()=>{"kiro"===n&&e8?.jobId&&J(e8.status)&&tv(),s.push(p(n))},tk=()=>{X(""),Q(!0)},tN=()=>{t$?(()=>{if(m(n))return"antigravity"===n&&"true"!==window.localStorage.getItem(ty)?eV(!0):tw();if("antigravity"===n&&"true"!==window.localStorage.getItem(ty))return eV(!0);t$?tj():(X(""),Q(!0))})():tk()},tC=$?{id:$.id,name:$.name||("anthropic-compatible"===$.type?"Anthropic Compatible":"OpenAI Compatible"),color:"anthropic-compatible"===$.type?"#D97757":"#10A37F",textIcon:"anthropic-compatible"===$.type?"AC":"OC",apiType:$.apiType,baseUrl:$.baseUrl,type:$.type}:c.zN[n]||c.fg[n]||c.IS[n]||c.nJ[n]||c.br[n],tS=tC?.authModes||[],t$=!!c.zN[n]||!!c.IS[n]||tS.includes("oauth"),tA=!!c.fg[n]||tS.includes("apikey"),tT=!!c.IS[n]?.noAuth,tI=(0,x.KC)(n),tE=(0,c.wG)(n),tP=(0,c.mq)(n),tO=(0,c.gb)(n),tR=tP||tO,t_=!tR&&t$&&tA,tD=m(n),tq="xai"===n?"Grok Build OAuth":"OAuth",tz="xai"===n?"xAI API Key":"qoder"===n?"Qoder PAT":"API Key",tU="kiro"===n,tM=c.Q2[n]?.thinkingConfig||c.s9.extended,tL=tR?n:tE,tF=tR?$?.prefix||n:tE,tJ=(0,i.useCallback)(async()=>{try{let e=await fetch(`/api/models/disabled?providerAlias=${encodeURIComponent(tL)}`,{cache:"no-store"}),t=await e.json();e.ok&&eF(t.ids||[])}catch(e){console.log("Error fetching disabled models:",e)}},[tL]),tK=async e=>{try{(await fetch("/api/models/disabled",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerAlias:tL,ids:[e]})})).ok&&await tJ()}catch(e){console.log("Error disabling model:",e)}},tB=async e=>{try{(await fetch(`/api/models/disabled?providerAlias=${encodeURIComponent(tL)}&id=${encodeURIComponent(e)}`,{method:"DELETE"})).ok&&await tJ()}catch(e){console.log("Error enabling model:",e)}},tV=async e=>{e.length&&eK({title:"Disable All Models",message:`Disable all ${e.length} model(s)?`,onConfirm:async()=>{eK(null);try{(await fetch("/api/models/disabled",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerAlias:tL,ids:e})})).ok&&await tJ()}catch(e){console.log("Error disabling all models:",e)}}})},tG=async()=>{try{(await fetch(`/api/models/disabled?providerAlias=${encodeURIComponent(tL)}`,{method:"DELETE"})).ok&&await tJ()}catch(e){console.log("Error enabling all models:",e)}},tH=(0,i.useCallback)(async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&eo(t.aliases||{})}catch(e){console.log("Error fetching aliases:",e)}},[]);(0,i.useEffect)(()=>{"kilocode"===n&&fetch("/api/providers/kilo/free-models").then(e=>e.json()).then(e=>{e.models?.length&&eM(e.models)}).catch(()=>{})},[n]);let tW=(0,i.useCallback)(async()=>{try{C("");let[e,t,s,a]=await Promise.allSettled([V("/api/providers"),V("/api/provider-nodes"),V("/api/proxy-pools?isActive=true"),V("/api/settings")]),i="fulfilled"===e.status?e.value.response:null,r="fulfilled"===e.status?e.value.data:{},l="fulfilled"===t.status?t.value.response:null,o="fulfilled"===t.status?t.value.data:{},d="fulfilled"===s.status?s.value.response:null,c="fulfilled"===s.status?s.value.data:{},u="fulfilled"===a.status?a.value.response:null,m=u?.ok&&a.value.data||{};if(i?.ok){let e=(r.connections||[]).filter(e=>e.provider===n);tg.current=e,g(e)}else C("Connections could not be loaded.");d?.ok&&E(c.proxyPools||[]);let p=(m.providerStrategies||{})[n]||{};eI(p.fallbackStrategy||null),eP(null!=p.stickyRoundRobinLimit?String(p.stickyRoundRobinLimit):"1"),e4.current=null!=p.stickyRoundRobinLimit?String(p.stickyRoundRobinLimit):"1";let x=(m.providerThinking||{})[n]||{};eR(x.mode||"auto");let h=F[n];if(eD(h&&m?.[h]?.connections||{}),l?.ok){let e=(o.nodes||[]).find(e=>e.id===n)||null;if(!e&&tR)for(let t=0;t<3;t+=1){if(await new Promise(e=>setTimeout(e,150)),!tb.current)return;let{response:t,data:s}=await V("/api/provider-nodes");if(!tb.current)return;if(t.ok&&(e=(s.nodes||[]).find(e=>e.id===n)||null))break}A(e)}}catch(e){console.log("Error fetching connections:",e),tb.current&&C("Connections could not be loaded.")}finally{tb.current&&w(!1)}},[n,tR]),tQ=async e=>{try{let t=await fetch(`/api/provider-nodes/${n}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),s=await t.json();t.ok&&(A(s.node),await tW(),es(!1))}catch(e){console.log("Error updating provider node:",e)}},tZ=async(e,t)=>{try{let s=await fetch("/api/settings",{cache:"no-store"}),a=(s.ok?await s.json():{}).providerStrategies||{},i={};e&&(i.fallbackStrategy=e),"round-robin"===e&&""!==t&&(i.stickyRoundRobinLimit=Number(t)||3);let r={...a};0===Object.keys(i).length?delete r[n]:r[n]=i,await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerStrategies:r})})}catch(e){console.log("Error saving provider strategy:",e)}},tX=async e=>{try{let t=await fetch("/api/settings",{cache:"no-store"}),s={...(t.ok?await t.json():{}).providerThinking||{}};e&&"auto"!==e?s[n]={mode:e}:delete s[n],await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({providerThinking:s})})}catch(e){console.log("Error saving thinking config:",e)}},tY=async(e,t)=>{let s=F[n];if(!s)return;let a={...e_,[e]:t};eD(a);try{let e=await fetch("/api/settings",{cache:"no-store"}),t={...(e.ok?await e.json():{})[s]||{},connections:a};if(!(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({[s]:t})})).ok)throw Error("Failed to save auto-ping setting")}catch(e){eD(e_),console.log("Error saving auto-ping config:",e)}};(0,i.useEffect)(()=>{tW(),tH(),tJ()},[tW,tH,tJ]),(0,i.useEffect)(()=>(tb.current=!0,()=>{tb.current=!1}),[]),(0,i.useEffect)(()=>{eK(null),em({}),ex({}),ef(new Set),ez([]),e0({}),e2(null),eX(null),eH(!1),eQ(!1),e5.current=!0,tt("")},[n]),(0,i.useEffect)(()=>{ta(1),tu(1),tl("all"),td("")},[n]),(0,i.useEffect)(()=>{ta(1)},[tn,ti,to]),(0,i.useEffect)(()=>{ec(!1)},[n]),(0,i.useEffect)(()=>{tu(1)},[tm,eL.length,tI.length,eU.length]),(0,i.useEffect)(()=>{if("kiro"!==n)return;let e=window.localStorage.getItem(M),t=!1;return(async()=>{try{if(tt(""),e8?.jobId)return;let a=await B();if(!t&&a.res.ok&&a.data?.job){e9(a.data.job),tf.current=a.data.job.summary?.success||0,window.localStorage.setItem(M,a.data.job.jobId);return}if(e){var s;let a=await K(e);if(!t&&a?.res.ok&&a.data?.job&&(s=a.data.job.status,["queued","running","needs_manual"].includes(s))){e9(a.data.job),tf.current=a.data.job.summary?.success||0;return}tv(),tt(L)}}catch{t||tt(L)}})(),()=>{t=!0}},[tv,e8?.jobId,n]),(0,i.useEffect)(()=>{if(!("kiro"!==n||!e8?.jobId||J(e8.status)))return(0,v.M)(async e=>{let t=await K(e8.jobId);if(!e()){if(t?.res.ok&&t.data?.job){let s=t.data.job.summary?.success||0;if(s>tf.current&&(tf.current=s,await tW(),e()))return;tt(""),e9(t.data.job);return}if(t?.res.status===404){let t=await B();if(e())return;if(t.res.ok&&t.data?.job){let s=t.data.job.summary?.success||0;if(s>tf.current&&(tf.current=s,await tW(),e()))return;tt(""),e9(t.data.job),window.localStorage.setItem(M,t.data.job.jobId);return}tv(),tt(L)}}},2e3)},[tv,tW,e8?.jobId,e8?.status,n]),(0,i.useEffect)(()=>{let e=(c.zN[n]||c.fg[n]||c.IS[n]||c.nJ[n])?.modelsFetcher;e&&b(e).then(ez)},[n]);let t0=async(e,t,s=tE)=>{let a=`${s}/${e}`;try{let e=await fetch("/api/models/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:a,alias:t})});if(e.ok)await tH();else{let t=await e.json();alert(t.error||"Failed to set alias")}}catch(e){console.log("Error setting alias:",e)}},t1=async e=>{try{(await fetch(`/api/models/alias?alias=${encodeURIComponent(e)}`,{method:"DELETE"})).ok&&await tH()}catch(e){console.log("Error deleting alias:",e)}},t2=async()=>{if(e6)return;let e=u.find(e=>!1!==e.isActive);if(!e)return void alert((0,f.Tl)("Please add an active Qoder connection first"));e7(!0);try{let t=await fetch(`/api/providers/${e.id}/models`),s=await t.json();if(!t.ok)return void alert(s.error||(0,f.Tl)("Failed to fetch models"));let a=s.models||[];if(0===a.length)return void alert((0,f.Tl)("No models returned"));let i={...el},r=0;for(let e of a){let t=e.id||e.name;if(!t)continue;let s=t.replace(/^qoder\//,""),a=`${tL}/${s}`;!Object.values(i).includes(a)&&(i[s]||(await t0(s,s,tL),i[s]=a,r+=1))}0===r?alert((0,f.Tl)("All models already exist, no new models added")):alert((0,f.Tl)("Successfully added")+` ${r} `+(0,f.Tl)("models"))}catch(e){console.log("Error importing Qoder models:",e),alert((0,f.Tl)("Error fetching models")+": "+e.message)}finally{e7(!1)}},t5=async()=>{let e=[...u];if(eG||0===e.length)return;let t=Object.fromEntries(e.map(e=>[e.id,{state:"queued",error:null}]));e5.current=!1,eH(!0),eQ(!1),eX(null),e0(t),e2({total:e.length,completed:0,passed:0,failed:0,stopped:!1});let s=0,a=0;try{for(let t=0;t<e.length;t+=1){if(e5.current){e2({total:e.length,completed:t,passed:s,failed:a,stopped:!0});break}let i=e[t];if(!tg.current.some(e=>e.id===i.id)){e0(e=>({...e,[i.id]:{state:"skipped",error:null}})),e2({total:e.length,completed:t+1,passed:s,failed:a,stopped:!1});continue}eX(i.id),e0(e=>({...e,[i.id]:{state:"testing",error:null}}));try{let e=await fetch(`/api/providers/${i.id}/test`,{method:"POST"}),t=await e.json(),r=!!t.valid;r?s+=1:a+=1,e0(e=>({...e,[i.id]:{state:r?"success":"failed",error:r?null:t.error||null}}))}catch(e){a+=1,e0(t=>({...t,[i.id]:{state:"failed",error:e.message||"Test failed"}}))}e2({total:e.length,completed:t+1,passed:s,failed:a,stopped:!1}),t<e.length-1&&await new Promise(e=>setTimeout(e,1e3))}}finally{eX(null),eH(!1),eQ(!1),e5.current=!1}},t3=async e=>{eK({title:"Delete Connection",message:"Delete this connection?",onConfirm:async()=>{eK(null);try{(await fetch(`/api/providers/${e}`,{method:"DELETE"})).ok&&g(u.filter(t=>t.id!==e))}catch(e){console.log("Error deleting connection:",e)}}})},t4=()=>{tW(),D(!1)},t6=(0,i.useCallback)(e=>{(e9(e),tt(""),e?.jobId)?(window.localStorage.setItem(M,e.jobId),tf.current=Math.max(tf.current,e.summary?.success||0)):tv()},[tv]),t7=async e=>{X("");try{let t=await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:n,...e})}),s=null;try{s=await t.json()}catch{s=null}if(t.ok){await tW(),Q(!1);return}X(s?.error||"Failed to save connection")}catch(e){console.log("Error saving connection:",e),X("Failed to save connection")}},t8=async e=>{try{(await fetch(`/api/providers/${er.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok&&(await tW(),ee(!1))}catch(e){console.log("Error updating connection:",e)}},t9=async(e,t)=>{try{let s=await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})});if(s.ok){let a=await s.json().catch(()=>null);g(s=>s.map(s=>s.id===e?{...s,isActive:t,...a?.connection||{}}:s))}}catch(e){console.log("Error updating connection status:",e)}},se=async(e,t)=>{let s=[...u];[s[e],s[t]]=[s[t],s[e]],g(s);try{let[a,i]=await Promise.all([fetch(`/api/providers/${s[e].id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:e+1})}),fetch(`/api/providers/${s[t].id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:t+1})})]);a.ok&&i.ok||(console.log("Priority swap rejected:",a.status,i.status),await tW())}catch(e){console.log("Error swapping priority:",e),await tW()}},st=(0,i.useMemo)(()=>{let e=to.trim().toLowerCase();return u.filter(t=>!!(0,y.i2)(t,tn)&&(!e||[t.name,t.email,t.id,t.account,t.username,t.label,t.authType,t.notes,t.proxyPoolId].filter(Boolean).join(" ").toLowerCase().includes(e)))},[u,tn,to]),ss=(0,i.useMemo)(()=>y.gJ.reduce((e,t)=>(e[t.id]="all"===t.id?u.length:u.filter(e=>(0,y.i2)(e,t.id)).length,e),{}),[u]),sa=ej.filter(e=>u.some(t=>t.id===e)),si=u.filter(e=>sa.includes(e.id)),sr="codebuddy"===n?(si.length>0?si:u).map(e=>e.id):[],sn=st.length>0&&st.every(e=>sa.includes(e.id)),sl=(()=>{if(0===si.length)return"";let e=new Set(si.map(e=>e.providerSpecificData?.proxyPoolId||"__none__"));if(1===e.size){let t=[...e][0];if("__none__"===t)return"All selected currently unbound";let s=I.find(e=>e.id===t);return`All selected currently bound to ${s?.name||t}`}return"Selected connections have mixed proxy bindings"})(),so=()=>{eC||ei(!1)},sd=async e=>{eS(!0);try{let t=0;for(let{connectionId:s,proxyPoolId:a}of e)try{(await fetch(`/api/providers/${s}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({proxyPoolId:a})})).ok||(t+=1)}catch(e){console.log("Error applying proxy for",s,e),t+=1}t>0&&alert(`Updated with ${t} failed request(s).`),await tW(),ei(!1)}finally{eS(!1)}},sc=e=>sd(si.map(t=>({connectionId:t.id,proxyPoolId:e}))),su=e=>{let t="gsuite"===e?"GSuite (non-Gmail)":"Gmail (@gmail.com)";eK({title:`Delete ${t}`,message:`Delete ALL ${t} accounts for this provider? This cannot be undone.`,onConfirm:async()=>{eK(null);try{(await fetch("/api/providers/bulk-delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:tC?.id||n,emailFilter:e})})).ok&&(ew([]),await tW())}catch(e){console.error("bulk delete error:",e)}}})},sm=Math.max(1,Math.ceil(st.length/ti)),sp=Math.min(ts,sm),sx=st.slice((sp-1)*ti,sp*ti),sh=(0,a.jsx)("div",{className:"flex min-w-0 flex-col divide-y divide-black/[0.03] dark:divide-white/[0.03]",children:sx.map((e,t)=>{let s,i=u.findIndex(t=>t.id===e.id);return(0,a.jsxs)("div",{className:"flex min-w-0 items-stretch",children:[(0,a.jsx)("label",{className:"flex w-8 shrink-0 items-center justify-center",children:(0,a.jsx)("input",{type:"checkbox",checked:(s=e.id,sa.includes(s)),onChange:()=>{var t;return t=e.id,void ew(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t])},className:"size-4 rounded border-black/20 dark:border-white/20","aria-label":`Select ${e.name||e.email||e.id}`})}),(0,a.jsx)("div",{className:"flex-1 min-w-0",children:(0,a.jsx)(T,{connection:e,proxyPools:I,isOAuth:t$,isFirst:0===i,isLast:i===u.length-1,onMoveUp:()=>se(i,i-1),onMoveDown:()=>se(i,i+1),onToggleActive:t=>t9(e.id,t),autoPingEnabled:!0===e_[e.id],onToggleAutoPing:F[n]&&"oauth"===e.authType?t=>tY(e.id,t):void 0,onUpdateProxy:async t=>{try{(await fetch(`/api/providers/${e.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({proxyPoolId:t||null})})).ok&&g(s=>s.map(s=>s.id===e.id?{...s,providerSpecificData:{...s.providerSpecificData,proxyPoolId:t||null}}:s))}catch(e){console.log("Error updating proxy:",e)}},onEdit:()=>{en(e),ee(!0)},onDelete:()=>t3(e.id),oneByOneStatus:eY[e.id]||null})})]},e.id)})}),sf=I.filter(e=>!0===e.isActive),sg=(0,a.jsx)(d.aF,{isOpen:ea,onClose:so,title:`Apply Proxy (${si.length} selected)`,children:(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("div",{className:"flex flex-col",children:[(0,a.jsxs)("button",{onClick:()=>{let e=I.filter(e=>!0===e.isActive);return 0===e.length?void alert("No active proxy pools available."):sd(si.map((t,s)=>({connectionId:t.id,proxyPoolId:e[s%e.length].id})))},disabled:eC||0===sf.length,className:"flex items-center gap-2 rounded-lg px-3 py-2 text-left transition-colors hover:bg-black/[0.04] dark:hover:bg-white/[0.04] disabled:cursor-not-allowed disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[18px]",children:"sync_alt"}),(0,a.jsx)("span",{className:"text-sm text-text-main",children:"One-to-one (rotate)"})]}),(0,a.jsxs)("button",{onClick:()=>sc(null),disabled:eC,className:"flex items-center gap-2 rounded-lg px-3 py-2 text-left transition-colors hover:bg-black/[0.04] dark:hover:bg-white/[0.04] disabled:cursor-not-allowed disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[18px]",children:"link_off"}),(0,a.jsx)("span",{className:"text-sm text-text-main",children:"None (unbind all)"})]}),I.map(e=>(0,a.jsxs)("button",{onClick:()=>sc(e.id),disabled:eC||!0!==e.isActive,className:"flex items-center gap-2 rounded-lg px-3 py-2 text-left transition-colors hover:bg-black/[0.04] dark:hover:bg-white/[0.04] disabled:cursor-not-allowed disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[18px]",children:"lan"}),(0,a.jsx)("span",{className:"truncate text-sm text-text-main",children:e.name}),!0!==e.isActive&&(0,a.jsx)("span",{className:"text-[10px] text-text-muted",children:"(inactive)"})]},e.id))]}),eC&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Applying..."}),(0,a.jsx)(d.$n,{onClick:so,variant:"ghost",fullWidth:!0,disabled:eC,children:"Cancel"})]})}),sb=async e=>{ef(t=>new Set(t).add(e));try{let t=await fetch("/api/models/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:`${tL}/${e}`})}),s=await t.json();em(t=>({...t,[e]:s.ok?"ok":"error"})),ex(t=>({...t,[e]:s.ok?"":s.error||"Model not reachable"}))}catch{em(t=>({...t,[e]:"error"})),ex(t=>({...t,[e]:"Network error"}))}finally{ef(t=>{let s=new Set(t);return s.delete(e),s})}};return j?(0,a.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,a.jsx)(d.Qv,{}),(0,a.jsx)(d.Qv,{})]}):tC?(0,a.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:gap-8 sm:px-0",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)(l(),{href:"/dashboard/providers",className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary transition-colors mb-4",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-lg",children:"arrow_back"}),"Back to Providers"]}),(0,a.jsxs)("div",{className:"flex min-w-0 items-center gap-3 sm:gap-4",children:[(0,a.jsx)("div",{className:"flex size-12 shrink-0 items-center justify-center rounded-lg",style:{backgroundColor:`${tC.color}15`},children:ed?(0,a.jsx)("span",{className:"text-sm font-bold",style:{color:tC.color},children:tC.textIcon||tC.id.slice(0,2).toUpperCase()}):(0,a.jsx)(o.default,{src:tP&&tC.apiType?"responses"===tC.apiType?"/providers/oai-r.png":"/providers/oai-cc.png":tO?"/providers/anthropic-m.png":`/providers/${tC.id}.png`,alt:tC.name,width:48,height:48,className:"max-h-12 max-w-12 rounded-lg object-contain",sizes:"48px",onError:()=>ec(!0)})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 flex-wrap",children:[(0,a.jsx)("h1",{className:"truncate text-2xl font-semibold tracking-tight sm:text-3xl",children:tC.name}),(tC.notice?.apiKeyUrl||tC.notice?.signupUrl||tC.website)&&(0,a.jsxs)("a",{href:tC.notice?.apiKeyUrl||tC.notice?.signupUrl||tC.website,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-primary hover:underline inline-flex items-center gap-1",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"open_in_new"}),tC.notice?.apiKeyUrl?"Get API Key":"Sign up / Learn more"]})]}),(0,a.jsxs)("p",{className:"text-text-muted",children:[u.length," connection",1===u.length?"":"s"]})]})]})]}),tC.deprecated&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-yellow-500/10 border border-yellow-500/30",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-yellow-500 mt-0.5 shrink-0",children:"warning"}),(0,a.jsx)("p",{className:"text-xs text-red-600 dark:text-yellow-400 leading-relaxed",children:tC.deprecationNotice})]}),tC.notice?.text&&!tC.deprecated&&(0,a.jsxs)("div",{className:"flex flex-col gap-2 rounded-lg border border-blue-500/30 bg-blue-500/10 px-3 py-2 sm:flex-row sm:items-center",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-blue-500 shrink-0",children:"info"}),(0,a.jsx)("p",{className:"min-w-0 flex-1 text-xs leading-relaxed text-blue-600 dark:text-blue-400",children:tC.notice.text}),tC.notice.apiKeyUrl&&(0,a.jsx)("a",{href:tC.notice.apiKeyUrl,target:"_blank",rel:"noopener noreferrer",className:"inline-flex justify-center rounded bg-blue-500 px-2 py-1 text-xs font-medium text-white transition-colors hover:bg-blue-600 sm:py-0.5",children:"Get API Key →"})]}),tR&&$&&(0,a.jsx)(d.Zp,{children:(0,a.jsxs)("div",{className:"mb-4 flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold",children:tO?"Anthropic Compatible Details":"OpenAI Compatible Details"}),(0,a.jsxs)("p",{className:"break-all text-sm text-text-muted",children:[tO?"Messages API":"responses"===$.apiType?"Responses API":"Chat Completions"," \xb7 ",($.baseUrl||"").replace(/\/$/,""),"/",tO?"messages":"responses"===$.apiType?"responses":"chat/completions"]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,a.jsx)(d.$n,{size:"sm",icon:"add",onClick:()=>{X(""),Q(!0)},className:"w-full sm:w-auto",children:"Add API Key"}),(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"edit",onClick:()=>es(!0),className:"w-full sm:w-auto",children:"Edit"}),(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"delete",onClick:async()=>{eK({title:"Delete Compatible Node",message:`Delete this ${tO?"Anthropic":"OpenAI"} Compatible node?`,onConfirm:async()=>{eK(null);try{(await fetch(`/api/provider-nodes/${n}`,{method:"DELETE"})).ok&&s.push("/dashboard/providers")}catch(e){console.log("Error deleting provider node:",e)}}})},className:"w-full sm:w-auto",children:"Delete"})]})]})}),tT?(0,a.jsx)(d.gw,{providerId:n}):(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)("div",{className:"mb-4 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold",children:"Connections"}),(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-4",children:[u.length>0&&I.length>0&&(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"lan",onClick:()=>{if(0===si.length)return;let e=[...new Set(si.map(e=>e.providerSpecificData?.proxyPoolId||"__none__"))];eN(1===e.length?e[0]:"__none__"),ei(!0)},disabled:0===si.length,children:"Apply Proxy"}),u.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"sync",onClick:t5,disabled:eG,children:eG?"Testing Connection One-by-One...":"Test Connection One-by-One"}),eG&&(0,a.jsx)(d.$n,{size:"sm",variant:"ghost",icon:"stop",onClick:()=>{eG&&(e5.current=!0,eQ(!0))},disabled:eW,children:eW?"Stopping...":"Stop"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted font-medium",children:"Thinking"}),(0,a.jsx)("select",{value:eO,onChange:e=>{var t;eR(t=e.target.value),tX(t)},className:"text-xs px-2 py-1 border border-border rounded-md bg-background focus:outline-none focus:border-primary",title:"Forces reasoning_effort on requests; model chips copy as alias/model(level)",children:(tM?.options||c.mt).map(e=>(0,a.jsx)("option",{value:e,children:e.charAt(0).toUpperCase()+e.slice(1)},e))})]}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted font-medium",children:"Round Robin"}),(0,a.jsx)(d.lM,{checked:"round-robin"===eT,onChange:e=>{let t=e?"round-robin":null,s=e?eE||"1":eE;e&&!eE&&eP("1"),e4.current=s,e3.current&&(clearTimeout(e3.current),e3.current=null),eI(t),tZ(t,s)}}),"round-robin"===eT&&(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted",children:"Sticky:"}),(0,a.jsx)("input",{type:"number",min:1,value:eE,onChange:e=>{var t;eP(t=e.target.value),e4.current=t,e3.current&&clearTimeout(e3.current),e3.current=setTimeout(()=>{tZ("round-robin",e4.current)},500)},placeholder:"1",className:"w-14 px-2 py-1 text-xs border border-border rounded-md bg-background focus:outline-none focus:border-primary"})]})]})]})]}),u.length>0&&(0,a.jsxs)("div",{className:"mb-4 flex flex-col gap-3 rounded-lg border border-black/5 bg-black/[0.02] p-3 dark:border-white/5 dark:bg-white/[0.02]",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsxs)("label",{className:"flex items-center gap-1.5 text-xs text-text-muted",children:[(0,a.jsx)("input",{type:"checkbox",checked:sn,onChange:()=>{sn?ew(e=>e.filter(e=>!st.some(t=>t.id===e))):ew(e=>Array.from(new Set([...e,...st.map(e=>e.id)])))},className:"size-4 rounded border-black/20 dark:border-white/20"}),sn?"Unselect visible":"Select visible"]}),(0,a.jsxs)(d.Ex,{variant:"default",children:[st.length," visible"]}),si.length>0&&(0,a.jsxs)(d.Ex,{variant:"default",children:[si.length," selected"]}),sl&&(0,a.jsx)("span",{className:"text-xs text-text-muted",children:sl}),si.length>0&&(0,a.jsx)(d.$n,{size:"sm",variant:"ghost",onClick:()=>{ew([]),eN("__none__")},children:"Clear"}),si.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(d.$n,{size:"sm",variant:"secondary",icon:"delete",onClick:()=>{0!==si.length&&eK({title:"Delete Selected Connections",message:`Delete ${si.length} selected connection(s)? This permanently removes the selected accounts.`,onConfirm:async()=>{eK(null);let e=[],t=0;for(let s of si)try{(await fetch(`/api/providers/${s.id}`,{method:"DELETE"})).ok?e.push(s.id):t+=1}catch(e){console.log("Error deleting selected connection:",e),t+=1}ew(t=>t.filter(t=>!e.includes(t))),t>0&&alert(`Deleted ${e.length} connection(s); ${t} failed.`),await tW()}})},children:["Delete Selected (",si.length,")"]}),(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"domain",onClick:()=>su("gsuite"),children:"Delete GSuite"}),(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"mail",onClick:()=>su("gmail"),children:"Delete Gmail"})]})]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:y.gJ.map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>tl(e.id),className:`rounded-full border px-2.5 py-1 text-xs transition-colors ${tn===e.id?"border-primary/50 bg-primary/10 text-primary":"border-border text-text-muted hover:border-primary/30 hover:text-text-main"}`,children:[e.label,(0,a.jsx)("span",{className:"ml-1 text-[10px] opacity-70",children:ss[e.id]||0})]},e.id))}),u.length>=20&&(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("span",{className:"material-symbols-outlined pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[16px] text-text-subtle",children:"search"}),(0,a.jsx)("input",{type:"search",value:to,onChange:e=>td(e.target.value),placeholder:`Search ${u.length} connections (email, name, id)…`,className:"w-full rounded-lg border border-border bg-background py-2 pl-8 pr-3 text-xs text-text-main outline-none placeholder:text-text-subtle focus:border-primary/40"})]})]}),N?(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3 rounded-lg border border-red-500/30 bg-red-500/10 px-4 py-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] text-red-500",children:"error"}),(0,a.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:N})]}),(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"refresh",onClick:()=>{w(!0),tW()},children:"Retry"})]}):0===u.length?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"inline-flex items-center justify-center w-9 h-9 rounded-full bg-primary/10 text-primary shrink-0",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:t$?"lock":"key"})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"No connections yet"}),t_&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:tU?"Add Connection lists every auth method, including API key.":`Choose ${tq} or ${tz}.`})]})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[tD&&(0,a.jsx)(d.$n,{size:"sm",icon:"automation",onClick:tw,children:"Open Automation"}),t_?tU?(0,a.jsx)(d.$n,{size:"sm",icon:"add",onClick:tj,children:"Add Connection"}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(d.$n,{size:"sm",icon:"lock",variant:"secondary",onClick:tj,children:tq}),(0,a.jsx)(d.$n,{size:"sm",icon:"key",onClick:tk,children:tz})]}):tD?null:(0,a.jsxs)(a.Fragment,{children:[!tR&&"iflow"===n&&(0,a.jsx)(d.$n,{size:"sm",icon:"cookie",variant:"secondary",onClick:()=>z(!0),children:"Cookie"}),(0,a.jsx)(d.$n,{size:"sm",icon:"add",onClick:tN,children:tR?"Add API Key":"iflow"===n?"OAuth":"Add Connection"})]})]})]}),"kiro"===n&&e8?.jobId&&(0,a.jsxs)("div",{className:"mt-4 flex flex-col gap-3 rounded-lg border border-primary/20 bg-primary/[0.06] px-4 py-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-sm font-semibold text-text-main",children:"Bulk import progress is still available"}),(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["Status: ",e8.status," | Success: ",e8.summary?.success||0," | Running: ",e8.summary?.running||0," | Queued: ",e8.summary?.queued||0]})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$n,{size:"sm",icon:"monitoring",variant:"secondary",onClick:()=>s.push(p("kiro")),children:"Resume Bulk Progress"}),J(e8.status)&&(0,a.jsx)(d.$n,{size:"sm",variant:"ghost",icon:"close",onClick:tv,children:"Clear"})]})]}),"kiro"===n&&!e8?.jobId&&te&&(0,a.jsx)("div",{className:"mt-4 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-700 dark:border-amber-800 dark:bg-amber-900/20 dark:text-amber-300",children:te})]}):(0,a.jsxs)(a.Fragment,{children:[e1&&(0,a.jsx)("div",{className:"mb-4 rounded-lg border border-black/10 bg-black/[0.02] px-3 py-2 text-xs text-text-muted dark:border-white/10 dark:bg-white/[0.03]",children:(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,a.jsxs)("span",{children:["Total: ",e1.total]}),(0,a.jsxs)("span",{children:["Completed: ",e1.completed]}),(0,a.jsxs)("span",{children:["Passed: ",e1.passed]}),(0,a.jsxs)("span",{children:["Failed: ",e1.failed]}),e1.stopped&&(0,a.jsx)("span",{className:"text-amber-600 dark:text-amber-400",children:"Stopped"}),eG&&eZ&&(0,a.jsxs)("span",{children:["Running: ",u.find(e=>e.id===eZ)?.name||eZ]})]})}),"kiro"===n&&e8?.jobId&&(0,a.jsxs)("div",{className:"mb-4 flex flex-col gap-3 rounded-lg border border-primary/20 bg-primary/[0.06] px-4 py-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-sm font-semibold text-text-main",children:"Bulk import progress is still available"}),(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["Status: ",e8.status," | Success: ",e8.summary?.success||0," | Running: ",e8.summary?.running||0," | Queued: ",e8.summary?.queued||0]})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$n,{size:"sm",icon:"monitoring",variant:"secondary",onClick:()=>s.push(p("kiro")),children:"Resume Bulk Progress"}),J(e8.status)&&(0,a.jsx)(d.$n,{size:"sm",variant:"ghost",icon:"close",onClick:tv,children:"Clear"})]})]}),"kiro"===n&&!e8?.jobId&&te&&(0,a.jsx)("div",{className:"mb-4 rounded-lg border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-700 dark:border-amber-800 dark:bg-amber-900/20 dark:text-amber-300",children:te}),sh,"kiro"===n&&sm>1&&(0,a.jsxs)("div",{className:"mt-4 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsxs)("p",{className:"text-sm text-text-muted",children:["Page ",sp," of ",sm," • Showing ",(sp-1)*ti+1,"-",Math.min(sp*ti,st.length)," of ",st.length," connections"]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",disabled:sp<=1,onClick:()=>ta(e=>Math.max(1,e-1)),children:"Previous"}),(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",disabled:sp>=sm,onClick:()=>ta(e=>Math.min(sm,e+1)),children:"Next"})]})]}),"kiro"!==n&&st.length>0&&(0,a.jsx)(d.dK,{currentPage:sp,pageSize:ti,totalItems:st.length,onPageChange:ta,onPageSizeChange:e=>{tr(e),ta(1)},className:"mt-2"}),u.length>0&&0===st.length&&(0,a.jsx)("div",{className:"py-8 text-center text-sm text-text-muted",children:"No connections match this status filter."}),!tR&&(0,a.jsxs)("div",{className:"mt-4 grid grid-cols-1 gap-2 sm:flex",children:["iflow"===n&&(0,a.jsx)(d.$n,{size:"sm",icon:"cookie",variant:"secondary",onClick:()=>z(!0),title:"Add connection using browser cookie",className:"w-full sm:w-auto",children:"Cookie"}),"codebuddy"===n&&(0,a.jsx)(d.$n,{size:"sm",icon:"cookie",variant:"secondary",onClick:()=>{u.length>1&&0===si.length?alert("Select the CodeBuddy connection(s) that should use this quota cookie first."):H(!0)},title:"Attach CodeBuddy web cookie for quota tracking",className:"w-full sm:w-auto",children:"Quota Cookie"}),tD&&(0,a.jsx)(d.$n,{size:"sm",icon:"automation",onClick:tw,className:"w-full sm:w-auto",children:"Open Automation"}),t_?tU?(0,a.jsx)(d.$n,{size:"sm",icon:"add",onClick:tj,className:"w-full sm:w-auto",children:"Add Connection"}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(d.$n,{size:"sm",icon:"lock",variant:"secondary",onClick:tj,className:"w-full sm:w-auto",children:tq}),(0,a.jsx)(d.$n,{size:"sm",icon:"key",onClick:tk,className:"w-full sm:w-auto",children:tz})]}):tD?null:(0,a.jsx)(d.$n,{size:"sm",icon:"add",onClick:tN,className:"w-full sm:w-auto",children:"Add"})]})]})]}),(0,a.jsxs)(d.Zp,{children:[(0,a.jsxs)("div",{className:"mb-4 flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",children:[(0,a.jsx)("h2",{className:"text-lg font-semibold",children:"Available Models"}),!tR&&(e=[...tI,...eU.filter(e=>!tI.some(t=>t.id===e.id))].filter(e=>!e.type||"llm"===e.type).map(e=>e.id).filter(e=>!eL.includes(e)),(0,a.jsxs)("div",{className:"flex gap-2",children:[eL.length>0&&(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"restart_alt",onClick:tG,children:"Active All"}),e.length>0&&(0,a.jsx)(d.$n,{size:"sm",variant:"secondary",icon:"block",onClick:()=>tV(e),children:"Disable All"})]}))]}),Object.values(ep).some(Boolean)&&(0,a.jsx)("div",{className:"mb-3 flex flex-col gap-1",children:Object.entries(ep).filter(([,e])=>!!e).map(([e,t])=>(0,a.jsxs)("p",{className:"text-xs text-red-500 break-words",children:[e,": ",t]},e))}),(()=>{let e,t,s;if(tR)return(0,a.jsx)(S,{providerStorageAlias:tL,providerDisplayAlias:tF,modelAliases:el,copied:tx,onCopy:th,onSetAlias:t0,onDeleteAlias:t1,onAliasesChanged:tH,connections:u,isAnthropic:tO});let i=[...tI,...eU.filter(e=>!tI.some(t=>t.id===e.id))].filter(e=>!e.type||"llm"===e.type),r=new Set(eL),l=i.filter(e=>!r.has(e.id)),o=i.filter(e=>r.has(e.id)),c=Object.entries(el).filter(([e,t])=>{let s=`${tL}/`;if(!t.startsWith(s))return!1;let a=t.slice(s.length);return tC.passthroughModels?!tI.some(e=>e.id===a):!tI.some(e=>e.id===a)&&e===a}).map(([e,t])=>({id:t.slice(`${tL}/`.length),alias:e,fullModel:t})),m=Math.min(tc,Math.max(1,Math.ceil(l.length/tm))),p=l.slice((m-1)*tm,m*tm);return(0,a.jsxs)("div",{className:"flex flex-wrap gap-3",children:[c.map(e=>(0,a.jsx)(k,{model:{id:e.id},fullModel:`${tF}/${e.id}`,alias:e.alias,copied:tx,onCopy:th,onSetAlias:()=>{},onDeleteAlias:()=>t1(e.alias),testStatus:eu[e.id],onTest:u.length>0||tT?()=>sb(e.id):void 0,isTesting:eh.has(e.id),isCustom:!0,isFree:!1,thinkingSuffix:eO&&"auto"!==eO&&"off"!==eO&&"none"!==eO?eO:null},e.id)),p.map(e=>{let t=`${tL}/${e.id}`,s=`${n}/${e.id}`,i=Object.entries(el).find(([,e])=>e===t||e===s)?.[0];return(0,a.jsx)(k,{model:e,fullModel:`${tF}/${e.id}`,alias:i,copied:tx,onCopy:th,onSetAlias:t=>t0(e.id,t,tL),onDeleteAlias:()=>t1(i),testStatus:eu[e.id],onTest:u.length>0||tT?()=>sb(e.id):void 0,isTesting:eh.has(e.id),isFree:e.isFree,onDisable:()=>tK(e.id),thinkingSuffix:eO&&"auto"!==eO&&"off"!==eO&&"none"!==eO?eO:null},e.id)}),l.length>tm&&(0,a.jsx)("div",{className:"w-full",children:(0,a.jsx)(d.dK,{currentPage:m,pageSize:tm,totalItems:l.length,onPageChange:tu,onPageSizeChange:e=>{tp(e),tu(1)}})}),(0,a.jsxs)("button",{onClick:()=>eb(!0),className:"flex w-full items-center justify-center gap-1.5 rounded-lg border border-dashed border-primary/40 px-3 py-2 text-xs text-primary transition-colors hover:border-primary hover:bg-primary/5 sm:w-auto",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"add"}),"Add Model"]}),"codebuddy"===n&&(0,a.jsxs)("button",{onClick:()=>ev(!0),className:"flex w-full items-center justify-center gap-1.5 rounded-lg border border-dashed border-cyan-500/50 px-3 py-2 text-xs text-cyan-700 transition-colors hover:border-cyan-500 hover:bg-cyan-500/[0.07] dark:text-cyan-300 sm:w-auto",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",children:"radar"}),"Discover Models"]}),"qoder"===n&&u.some(e=>!1!==e.isActive)&&(0,a.jsxs)("button",{onClick:t2,disabled:e6,className:"flex w-full items-center justify-center gap-1.5 rounded-lg border border-dashed border-blue-500/40 px-3 py-2 text-xs text-blue-600 dark:text-blue-400 transition-colors hover:border-blue-500 hover:bg-blue-500/5 sm:w-auto disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-sm",style:e6?{animation:"spin 1s linear infinite"}:void 0,children:e6?"progress_activity":"download"}),e6?(0,f.Tl)("Fetching..."):(0,f.Tl)("Fetch Qoder Models")]}),eq.length>0&&(e=new Set(Object.values(el)),t=new Set(tI.map(e=>e.id)),0===(s=eq.filter(s=>!e.has(`${tL}/${s.id}`)&&!t.has(s.id))).length?null:(0,a.jsxs)("div",{className:"w-full mt-2",children:[(0,a.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"Suggested free models (≥200k context):"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:s.map(e=>(0,a.jsxs)("button",{onClick:async()=>{let t=e.id.split("/").pop();await t0(e.id,t,tL)},className:"flex items-center gap-1 px-2.5 py-1.5 rounded-lg border border-black/10 dark:border-white/10 text-xs text-text-muted hover:text-primary hover:border-primary/40 hover:bg-primary/5 transition-colors",title:`${e.name} \xb7 ${(e.contextLength/1e3).toFixed(0)}k ctx`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"add"}),e.id.split("/").pop()]},e.id))})]})),o.length>0&&(0,a.jsxs)("div",{className:"w-full mt-2",children:[(0,a.jsxs)("p",{className:"text-xs text-text-muted mb-2",children:["Disabled models (",o.length,"):"]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:o.map(e=>(0,a.jsxs)("button",{onClick:()=>tB(e.id),className:"flex items-center gap-1 px-2.5 py-1.5 rounded-lg border border-dashed border-black/10 dark:border-white/10 text-xs text-text-muted hover:text-primary hover:border-primary/40 hover:bg-primary/5 transition-colors",title:"Restore model",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"add"}),e.id]},e.id))})]})]})})()]}),sg,"kiro"===n?(0,a.jsx)(d.Mh,{isOpen:_,providerInfo:tC,onSuccess:t4,onRefresh:tW,initialBulkJobId:e8?.jobId||null,onBulkJobChange:t6,onClose:()=>D(!1)}):"cursor"===n?(0,a.jsx)(d.G9,{isOpen:_,onSuccess:t4,onClose:()=>D(!1)}):"gitlab"===n?(0,a.jsx)(d.vj,{isOpen:_,providerInfo:tC,onSuccess:t4,onClose:()=>D(!1)}):(0,a.jsx)(d.LF,{isOpen:_,provider:n,providerInfo:tC,onSuccess:t4,onClose:()=>D(!1)}),"iflow"===n&&(0,a.jsx)(d.vE,{isOpen:q,onSuccess:()=>{tW(),z(!1)},onClose:()=>z(!1)}),"codebuddy"===n&&(0,a.jsx)(d.xl,{isOpen:G,connectionIds:sr,onSuccess:()=>{tW(),H(!1)},onClose:()=>H(!1)}),(0,a.jsx)(P,{isOpen:W,provider:n,providerName:tC.name,isCompatible:tR,isAnthropic:tO,authType:tC?.authType,authHint:tC?.authHint,website:tC?.website,proxyPools:I,error:Z,onSave:t7,onBulkDone:tW,onClose:()=>{X(""),Q(!1)}}),(0,a.jsx)(d.wI,{isOpen:Y,connection:er,proxyPools:I,onSave:t8,onClose:()=>ee(!1)}),tR&&(0,a.jsx)(O,{isOpen:et,node:$,onSave:tQ,onClose:()=>es(!1),isAnthropic:tO}),!tR&&(0,a.jsx)(R,{isOpen:eg,providerAlias:tL,providerDisplayAlias:tF,onSave:async e=>{let t=tC?.passthroughModels?e.split("/").pop():e;await t0(e,t,tL),eb(!1)},onClose:()=>eb(!1)}),"codebuddy"===n&&(0,a.jsx)(U,{isOpen:ey,connections:u,onModelsAdded:async e=>{for(let t of e)await t0(t.id,t.id,"cb");await tH()},onClose:()=>ev(!1)}),(0,a.jsx)(d.uo,{isOpen:eB,onClose:()=>eV(!1),onConfirm:()=>{(window.localStorage.setItem(ty,"true"),eV(!1),m("antigravity"))?s.push(p("antigravity")):t$?tj():tk()},title:"Risk Notice",message:tC?.deprecationNotice,confirmText:"I Understand, Continue",cancelText:"Cancel",variant:"danger"}),(0,a.jsx)(d.uo,{isOpen:!!eJ,onClose:()=>{e$||eK(null)},onConfirm:async()=>{if(e$)return;let e=eJ?.onConfirm;if(e){eA(!0);try{await e()}finally{eA(!1)}}},title:eJ?.title||"Confirm",message:eJ?.message,variant:"danger",loading:e$})]}):(0,a.jsxs)("div",{className:"text-center py-20",children:[(0,a.jsx)("p",{className:"text-text-muted",children:"Provider not found"}),(0,a.jsx)(l(),{href:"/dashboard/providers",className:"text-primary mt-4 inline-block",children:"Back to Providers"})]})}},81277:(e,t,s)=>{"use strict";s.d(t,{c:()=>r});var a=s(12115),i=s(70217);function r(e={}){let[t,s]=(0,a.useState)(null),n=JSON.stringify(Object.entries(e).filter(([e])=>e.startsWith("modelLock_")).sort(([e],[t])=>e.localeCompare(t)));return(0,a.useEffect)(()=>(function(e,t,s={}){let a=s.now||Date.now,r=s.setTimer||globalThis.setTimeout,n=s.clearTimer||globalThis.clearTimeout,l=!1,o=null,d=()=>{if(o=null,l)return;let s=a(),n=(0,i.G9)(e,s);t(n),n&&(o=r(d,Math.min(Math.max(1,new Date(n).getTime()-s+1),0x7fffffff)))};return o=r(d,0),()=>{l=!0,null!==o&&n(o),o=null}})(Object.fromEntries(JSON.parse(n)),s),[n]),t}}},e=>{e.O(0,[2574,3862,3745,3339,620,5497,8441,3794,7358],()=>e(e.s=42911)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8460],{20490:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>j});var r=s(95155),a=s(12115),i=s(14051),l=s.n(i),n=s(35497),o=s(57250),d=s(90620),c=s(52679),m=s(98500),p=s.n(m),u=s(28915),x=s(65921),h=s(38003);let f={available:{icon:"check_circle",color:"#22c55e",label:"Available"},cooldown:{icon:"schedule",color:"#f59e0b",label:"Cooldown"},unavailable:{icon:"error",color:"#ef4444",label:"Unavailable"},unknown:{icon:"help",color:"#6b7280",label:"Unknown"}};function g(){let[e,t]=(0,a.useState)(null),[s,i]=(0,a.useState)(!0),[l,o]=(0,a.useState)(!1),[d,c]=(0,a.useState)(null),m=(0,a.useRef)(null),p=(0,x.i)(),u=(0,a.useCallback)(async()=>{try{let e=await fetch("/api/models/availability");if(e.ok){let s=await e.json();t(s)}}catch{}finally{i(!1)}},[]);(0,a.useEffect)(()=>{u();let e=setInterval(u,3e4);return()=>clearInterval(e)},[u]),(0,a.useEffect)(()=>{let e=e=>{m.current&&!m.current.contains(e.target)&&o(!1)};return l&&document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[l]);let h=async(e,t)=>{c(`${e}:${t}`);try{(await fetch("/api/models/availability",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"clearCooldown",provider:e,model:t})})).ok?(p.success(`Cooldown cleared for ${t}`),await u()):p.error("Failed to clear cooldown")}catch{p.error("Failed to clear cooldown")}finally{c(null)}};if(s)return null;let g=e?.models||[],b=e?.unavailableCount||g.filter(e=>"available"!==e.status).length,v=0===b,y={};return g.forEach(e=>{if("available"===e.status)return;let t=e.provider||"unknown";y[t]||(y[t]=[]),y[t].push(e)}),(0,r.jsxs)("div",{className:"relative",ref:m,children:[(0,r.jsxs)("button",{onClick:()=>o(!l),className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs font-medium border transition-all ${v?"bg-emerald-500/10 border-emerald-500/20 text-emerald-500 hover:bg-emerald-500/15":"bg-amber-500/10 border-amber-500/20 text-amber-500 hover:bg-amber-500/15"}`,children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:v?"verified":"warning"}),v?"All models operational":`${b} model${1!==b?"s":""} with issues`]}),l&&(0,r.jsxs)("div",{className:"absolute top-full right-0 mt-2 w-80 bg-surface border border-border rounded-xl shadow-2xl z-50 overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border bg-bg",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[16px]",style:{color:v?"#22c55e":"#f59e0b"},children:v?"verified":"warning"}),(0,r.jsx)("span",{className:"text-sm font-semibold text-text-main",children:"Model Status"})]}),(0,r.jsx)("button",{onClick:u,className:"p-1 rounded-lg hover:bg-surface text-text-muted hover:text-text-main transition-colors",title:"Refresh",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"refresh"})})]}),(0,r.jsx)("div",{className:"px-4 py-3 max-h-60 overflow-y-auto",children:v?(0,r.jsx)("p",{className:"text-sm text-text-muted text-center py-2",children:"All models are responding normally."}):(0,r.jsx)("div",{className:"flex flex-col gap-2.5",children:Object.entries(y).map(([e,t])=>(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-xs font-semibold text-text-main mb-1.5 capitalize",children:e}),(0,r.jsx)("div",{className:"flex flex-col gap-1",children:t.map(e=>{let t=f[e.status]||f.unknown,s=d===`${e.provider}:${e.model}`;return(0,r.jsxs)("div",{className:"flex items-center justify-between px-2.5 py-1.5 rounded-lg bg-surface/30",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[14px] shrink-0",style:{color:t.color},children:t.icon}),(0,r.jsx)("span",{className:"font-mono text-xs text-text-main truncate",children:e.model})]}),"cooldown"===e.status&&(0,r.jsx)(n.$n,{size:"sm",variant:"ghost",onClick:()=>h(e.provider,e.model),disabled:s,className:"text-[10px] px-1.5! py-0.5! ml-2",children:s?"...":"Clear"})]},`${e.provider}-${e.model}`)})})]},e))})})]})]})}function b(e,t,s){if(e>0)return(0,r.jsxs)("span",{className:"inline-flex min-w-0 items-center gap-1.5 text-[11px] font-medium text-success",children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"size-1.5 shrink-0 rounded-full bg-success"}),e," connected"]});if(t>0){let e=s?`${t} Error (${s})`:`${t} Error`;return(0,r.jsxs)("span",{className:"inline-flex min-w-0 items-center gap-1.5 text-[11px] font-medium text-error",children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"size-1.5 shrink-0 rounded-full bg-error"}),e]})}return(0,r.jsx)("span",{className:"text-[11px] text-text-muted",children:"No connections"})}let v=[{value:"all",label:"All"},{value:"connected",label:"Connected"},{value:"ready",label:"Ready"},{value:"setup",label:"Needs setup"}];async function y(e){let t=new AbortController,s=window.setTimeout(()=>t.abort(),8e3);try{let s=await fetch(e,{cache:"no-store",signal:t.signal}),r=null;try{r=await s.json()}catch{r=null}return{response:s,data:r}}finally{window.clearTimeout(s)}}function j(){let e,t,[s,i]=(0,a.useState)([]),[l,o]=(0,a.useState)([]),[m,p]=(0,a.useState)(!0),[f,b]=(0,a.useState)(""),[j,C]=(0,a.useState)(1),[$,E]=(0,a.useState)(20),[I,R]=(0,a.useState)(!1),[P,O]=(0,a.useState)(!1),[_,U]=(0,a.useState)(()=>new Set),[q,z]=(0,a.useState)(null),[M,D]=(0,a.useState)("all"),[F,L]=(0,a.useState)({custom:!1,oauth:!1,free:!0,apikey:!0}),J=(0,x.i)(),H=(0,h.C)(e=>e.query),K=(0,h.C)(e=>e.setQuery),W=(0,h.C)(e=>e.unregister);(0,a.useEffect)(()=>()=>W(),[W]),(0,a.useEffect)(()=>{C(1)},[H,$,M]);let B=e=>!H.trim()||e.toLowerCase().includes(H.trim().toLowerCase());(0,a.useEffect)(()=>{(async()=>{try{b("");let[e,t]=await Promise.allSettled([y("/api/providers"),y("/api/provider-nodes")]);"fulfilled"===e.status&&e.value.response.ok?i(e.value.data?.connections||[]):(i([]),b("Provider connection stats could not be loaded. The provider catalog is still available.")),"fulfilled"===t.status&&t.value.response.ok?o(t.value.data?.nodes||[]):(o([]),b(e=>e||"Custom provider data could not be loaded. The provider catalog is still available."))}catch(e){console.log("Error fetching data:",e),b("Provider data could not be loaded. The provider catalog is still available.")}finally{p(!1)}})()},[]);let Q=(0,a.useMemo)(()=>{let e=new Map;for(let t of s){let s=t.provider||t.id;e.has(s)||e.set(s,[]),e.get(s).push(t)}return e},[s]),G=s.length,V=(0,a.useMemo)(()=>s.filter(e=>!1!==e.isActive).length,[s]),X=Q.size,Z=Math.max(0,G-V),Y=G>0?Math.round(V/G*100):0,ee=(e,t)=>{let s=Array.isArray(t)?t:[t],r=(Q.get(e)||[]).filter(e=>s.includes(e.authType)),a=r.filter(e=>{let t,s=(t=Object.entries(e).some(([e,t])=>e.startsWith("modelLock_")&&t&&new Date(t).getTime()>Date.now()),"unavailable"!==e.testStatus||t?e.testStatus:"active");return"error"===s||"expired"===s||"unavailable"===s}),i=r.length>0?r.length:0,l=r.length>0?0:a.length,n=r.length,o=n>0&&r.every(e=>!1===e.isActive),d=a.sort((e,t)=>new Date(t.lastErrorAt||0)-new Date(e.lastErrorAt||0))[0];return{connected:i,error:l,total:n,errorCode:d?function(e){if(!e)return null;let t=e.lastErrorType;if("runtime_error"===t)return"RUNTIME";if("upstream_auth_error"===t||"auth_missing"===t||"token_refresh_failed"===t||"token_expired"===t)return"AUTH";if("upstream_rate_limited"===t)return"429";if("upstream_unavailable"===t)return"5XX";if("network_error"===t)return"NET";let s=Number(e.errorCode);if(Number.isFinite(s)&&s>=400)return String(s);let r=(0,u.E2)(e.lastError);if("401"===r||"403"===r)return"AUTH";if(r&&"ERR"!==r)return r;let a=(e.lastError||"").toLowerCase();return a.includes("runtime")||a.includes("not runnable")||a.includes("not installed")?"RUNTIME":a.includes("invalid api key")||a.includes("token invalid")||a.includes("revoked")||a.includes("unauthorized")?"AUTH":"ERR"}(d):null,errorTime:d?.lastErrorAt?(0,u.gs)(d.lastErrorAt):null,allDisabled:o}},et=(e,t,s)=>{if("all"===M)return!0;let r=ee(e,s);return"connected"===M?r.connected>0:"ready"===M?0===r.connected&&!0===t.noAuth:0===r.connected&&!0!==t.noAuth},es=e=>{L(t=>({...t,[e]:!t[e]}))},er=async(e,t,r)=>{let a=s.filter(s=>s.provider===e&&s.authType===t);i(s=>s.map(s=>s.provider===e&&s.authType===t?{...s,isActive:r}:s));let l=(await Promise.allSettled(a.map(e=>fetch(`/api/providers/${e.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:r})}).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return e})))).filter(e=>"rejected"===e.status).length;l>0&&(i(s=>s.map(s=>s.provider===e&&s.authType===t?{...s,isActive:!r}:s)),J.error(`Failed to update ${l} connection${l>1?"s":""} — reverted`))},ea=async(e,t=null)=>{let s="provider"===e?t:e;if(s){U(e=>new Set(e).add(s)),z(null);try{let s=await fetch("/api/providers/test-batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:e,providerId:t})}),r=await s.json();if(z(r),r.summary){let{passed:e,failed:t,total:s}=r.summary;0===t?J.success(`All ${s} tests passed`):J.warning(`${e}/${s} passed, ${t} failed`)}}catch(e){z({error:"Test request failed"}),J.error("Provider test failed")}finally{U(e=>{let t=new Set(e);return t.delete(s),t})}}},ei=l.filter(e=>"openai-compatible"===e.type).map(e=>({id:e.id,name:e.name||"OpenAI Compatible",color:"#10A37F",textIcon:"OC",apiType:e.apiType})).filter(e=>B(e.name)&&et(e.id,e,"apikey")),el=l.filter(e=>"anthropic-compatible"===e.type).map(e=>({id:e.id,name:e.name||"Anthropic Compatible",color:"#D97757",textIcon:"AC"})).filter(e=>B(e.name)&&et(e.id,e,"apikey")),en=Object.entries(d.zN).filter(([e,t])=>{let s=t?.authModes?.includes("apikey")?["oauth","apikey"]:"oauth";return!t.hidden&&B(t.name)&&et(e,t,s)}),eo=Object.entries(c.IS).filter(([e,t])=>{let s=Array.isArray(t?.authModes)&&t.authModes.includes("apikey");return!t.hidden&&B(t.name)&&et(e,t,s?["oauth","apikey"]:"oauth")}),ed=Object.entries(c.nJ).filter(([e,t])=>!t.hidden&&B(t.name)&&et(e,t,"apikey")),ec=(e=Object.entries(d.fg).filter(([e,t])=>!t.hidden&&(t.serviceKinds??["llm"]).includes("llm")&&B(t.name)&&et(e,t,"apikey")),t="apikey",[...e].sort(([e,s],[r,a])=>{let i=ee(e,t),l=ee(r,t),n=+(i.connected>0),o=+(l.connected>0);return n!==o?o-n:(s.name||"").localeCompare(a.name||"")})),em=Math.min(j,Math.max(1,Math.ceil(ec.length/$))),ep=ec.slice((em-1)*$,em*$),eu=Object.entries(c.br).filter(([e,t])=>"notion-ai"===e&&!t.hidden&&B(t.name)&&et(e,t,"cookie"));if(m)return(0,r.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,r.jsx)(n.Qv,{}),(0,r.jsx)(n.Qv,{})]});let ex=en.length>0||eo.length>0||ed.length>0||ec.length>0||eu.length>0||ei.length>0||el.length>0,eh=ei.length>0||el.length>0||"all"===M&&!H.trim();return(0,r.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:px-0",children:[G>0&&(0,r.jsx)("div",{className:"overflow-hidden rounded-xl border border-border bg-surface/80 shadow-sm",children:(0,r.jsxs)("div",{className:"grid grid-cols-3 divide-x divide-y divide-border-subtle sm:grid-cols-4 sm:divide-y-0",children:[(0,r.jsxs)("div",{className:"col-span-3 flex items-center gap-3 px-4 py-3 sm:col-span-1",children:[(0,r.jsx)("span",{className:"flex size-9 shrink-0 items-center justify-center rounded-lg bg-primary/[0.08] text-primary",children:(0,r.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined",style:{fontSize:18},children:"dns"})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-[11px] font-medium text-text-muted",children:"Connection health"}),(0,r.jsxs)("p",{className:"mt-0.5 text-sm font-semibold tabular-nums text-text-main",children:[Y,"% active"]})]})]}),(0,r.jsxs)("div",{className:"px-4 py-3",children:[(0,r.jsx)("p",{className:"text-[11px] font-medium text-text-muted",children:"Connections"}),(0,r.jsx)("p",{className:"mt-0.5 text-lg font-semibold tabular-nums text-text-main",children:G})]}),(0,r.jsxs)("div",{className:"px-4 py-3",children:[(0,r.jsx)("p",{className:"text-[11px] font-medium text-text-muted",children:"Active"}),(0,r.jsxs)("div",{className:"mt-0.5 flex items-baseline gap-2",children:[(0,r.jsx)("p",{className:"text-lg font-semibold tabular-nums text-success",children:V}),Z>0&&(0,r.jsxs)("span",{className:"text-[10px] text-text-muted",children:[Z," paused"]})]})]}),(0,r.jsxs)("div",{className:"px-4 py-3",children:[(0,r.jsx)("p",{className:"text-[11px] font-medium text-text-muted",children:"Providers"}),(0,r.jsx)("p",{className:"mt-0.5 text-lg font-semibold tabular-nums text-info",children:X})]})]})}),f&&(0,r.jsx)(n.Gi,{tone:"warning",title:"Some provider status is unavailable",children:f}),(0,r.jsxs)(n.i5,{label:"Provider search and filters",children:[(0,r.jsx)(n.pd,{"aria-label":"Search providers",icon:"search",placeholder:"Search providers...",value:H,onChange:e=>K(e.target.value),className:"w-full sm:min-w-56 sm:max-w-72",inputClassName:"h-11 sm:h-9"}),(0,r.jsx)("div",{className:"flex w-full min-w-0 gap-1 overflow-x-auto rounded-xl bg-bg/70 p-1 [scrollbar-width:none] sm:w-auto [&::-webkit-scrollbar]:hidden",children:v.map(e=>(0,r.jsx)("button",{type:"button",onClick:()=>{D(e.value),C(1),L({custom:!1,oauth:!1,free:!1,apikey:!1})},"aria-pressed":M===e.value,className:`flex h-11 flex-1 items-center justify-center whitespace-nowrap rounded-lg px-3 text-xs font-medium transition-colors sm:h-8 sm:flex-none sm:px-3 ${M===e.value?"bg-primary text-white shadow-sm":"text-text-muted hover:bg-black/5 hover:text-text-main dark:hover:bg-white/5"}`,children:e.label},e.value))})]}),!ex&&(0,r.jsx)(n.pp,{icon:"search_off",title:H.trim()?"No providers match your search":"No providers match this filter",description:"Adjust the search or status filter to see more providers.",action:(0,r.jsx)(n.$n,{variant:"secondary",onClick:()=>{K(""),D("all")},children:"Clear filters"})}),eh&&(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsx)(N,{icon:"extension",title:"Custom Providers",description:"OpenAI and Anthropic-compatible endpoints",count:ei.length+el.length,collapsed:F.custom&&!H.trim(),onToggle:()=>es("custom"),children:(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:w-auto",children:[(0,r.jsx)(n.$n,{size:"sm",icon:"add",onClick:()=>O(!0),className:"min-h-11 w-full sm:min-h-0 sm:w-auto",children:"Add Anthropic Compatible"}),(0,r.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"add",onClick:()=>R(!0),className:"min-h-11 w-full sm:min-h-0 sm:w-auto",children:"Add OpenAI Compatible"})]})}),(0,r.jsx)("div",{className:F.custom&&!H.trim()?"hidden sm:block":"",children:0===ei.length&&0===el.length?(0,r.jsxs)("div",{className:"flex items-center gap-3 rounded-xl border border-dashed border-border bg-surface/45 px-4 py-3 text-text-muted",children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-2 text-[18px]",children:"add_link"}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-sm font-medium text-text-main",children:"No custom endpoints yet"}),(0,r.jsx)("p",{className:"mt-0.5 text-xs",children:"Add an OpenAI or Anthropic-compatible endpoint when you need one."})]})]}):(0,r.jsx)("div",{className:"grid grid-cols-1 gap-2.5 sm:grid-cols-2 sm:gap-3 lg:grid-cols-3 xl:grid-cols-4",children:[...ei,...el].map(e=>(0,r.jsx)(k,{providerId:e.id,provider:e,stats:ee(e.id,"apikey"),onToggle:t=>er(e.id,"apikey",t)},e.id))})})]}),en.length>0&&(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsx)(N,{icon:"passkey",title:"OAuth Providers",description:"Connect existing provider accounts securely",count:en.length,collapsed:F.oauth&&!H.trim(),onToggle:()=>es("oauth"),children:(0,r.jsxs)("div",{className:"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center",children:[(0,r.jsx)(g,{}),(0,r.jsxs)("button",{onClick:()=>ea("oauth"),disabled:_.has("oauth"),className:`flex h-11 w-full items-center justify-center gap-1.5 rounded-xl border px-3 text-xs font-medium transition-colors sm:h-8 sm:w-auto sm:rounded-lg ${_.has("oauth")?"bg-primary/20 border-primary/40 text-primary animate-pulse":"bg-bg border-border text-text-muted hover:text-text-main hover:border-primary/40"}`,title:"Test all OAuth connections","aria-label":"Test all OAuth connections",children:[(0,r.jsx)("span",{className:`material-symbols-outlined text-[14px]${_.has("oauth")?" animate-spin":""}`,children:"play_arrow"}),_.has("oauth")?"Testing...":"Test All"]})]})}),(0,r.jsx)("div",{className:`${F.oauth&&!H.trim()?"hidden sm:grid":"grid"} grid-cols-1 gap-2.5 sm:grid-cols-2 sm:gap-3 lg:grid-cols-3 xl:grid-cols-4`,children:en.map(([e,t])=>{let s=t?.authModes?.includes("apikey")?["oauth","apikey"]:"oauth";return(0,r.jsx)(w,{providerId:e,provider:t,stats:ee(e,s),onToggle:t=>er(e,"oauth",t)},e)})})]}),(eo.length>0||ed.length>0)&&(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsx)(N,{icon:"savings",title:"Free Tier Providers",description:"Ready-to-use and free-tier routing options",count:eo.length+ed.length,collapsed:F.free&&!H.trim(),onToggle:()=>es("free"),children:(0,r.jsxs)("button",{onClick:()=>ea("free"),disabled:_.has("free"),className:`flex h-11 w-full items-center justify-center gap-1.5 rounded-xl border px-3 text-xs font-medium transition-colors sm:h-8 sm:w-auto sm:rounded-lg ${_.has("free")?"bg-primary/20 border-primary/40 text-primary animate-pulse":"bg-bg border-border text-text-muted hover:text-text-main hover:border-primary/40"}`,title:"Test all Free connections","aria-label":"Test all Free provider connections",children:[(0,r.jsx)("span",{className:`material-symbols-outlined text-[14px]${_.has("free")?" animate-spin":""}`,children:"play_arrow"}),_.has("free")?"Testing...":"Test All"]})}),(0,r.jsxs)("div",{className:`${F.free&&!H.trim()?"hidden sm:grid":"grid"} grid-cols-1 gap-2.5 sm:grid-cols-2 sm:gap-3 lg:grid-cols-3 xl:grid-cols-4`,children:[eo.map(([e,t])=>{let s=Array.isArray(t?.authModes)&&t.authModes.includes("apikey");return(0,r.jsx)(w,{providerId:e,provider:t,stats:ee(e,s?["oauth","apikey"]:"oauth"),onToggle:t=>er(e,s?"apikey":"oauth",t)},e)}),ed.map(([e,t])=>(0,r.jsx)(k,{providerId:e,provider:t,stats:ee(e,"apikey"),onToggle:t=>er(e,"apikey",t)},e))]})]}),ec.length>0&&(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsx)(N,{icon:"key",title:"API Key Providers",description:"Bring your own provider credentials",count:ec.length,collapsed:F.apikey&&!H.trim(),onToggle:()=>es("apikey"),children:(0,r.jsxs)("button",{onClick:()=>ea("apikey"),disabled:_.has("apikey"),className:`flex h-11 w-full items-center justify-center gap-1.5 rounded-xl border px-3 text-xs font-medium transition-colors sm:h-8 sm:w-auto sm:rounded-lg ${_.has("apikey")?"bg-primary/20 border-primary/40 text-primary animate-pulse":"bg-bg border-border text-text-muted hover:text-text-main hover:border-primary/40"}`,title:"Test all API Key connections","aria-label":"Test all API Key connections",children:[(0,r.jsx)("span",{className:`material-symbols-outlined text-[14px]${_.has("apikey")?" animate-spin":""}`,children:"play_arrow"}),_.has("apikey")?"Testing...":"Test All"]})}),(0,r.jsx)("div",{className:`${F.apikey&&!H.trim()?"hidden sm:grid":"grid"} grid-cols-1 gap-2.5 sm:grid-cols-2 sm:gap-3 lg:grid-cols-3 xl:grid-cols-4`,children:ep.map(([e,t])=>(0,r.jsx)(k,{providerId:e,provider:t,stats:ee(e,"apikey"),onToggle:t=>er(e,"apikey",t)},e))}),ec.length>0&&(0,r.jsx)("div",{className:F.apikey&&!H.trim()?"hidden sm:block":"",children:(0,r.jsx)(n.dK,{currentPage:em,pageSize:$,totalItems:ec.length,onPageChange:C,onPageSizeChange:e=>{E(e),C(1)}})})]}),eu.length>0&&(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsx)(N,{icon:"auto_awesome",title:"Experimental Web Providers",description:"Use a session from your own Notion workspace",count:eu.length}),(0,r.jsx)("div",{className:"grid grid-cols-1 gap-2.5 sm:grid-cols-2 sm:gap-3 lg:grid-cols-3 xl:grid-cols-4",children:eu.map(([e,t])=>(0,r.jsx)(k,{providerId:e,provider:t,stats:ee(e,"cookie"),onToggle:t=>er(e,"cookie",t)},e))})]}),(0,r.jsx)(T,{isOpen:I,onClose:()=>R(!1),onCreated:e=>{o(t=>[...t,e]),R(!1)}}),(0,r.jsx)(A,{isOpen:P,onClose:()=>O(!1),onCreated:e=>{o(t=>[...t,e]),O(!1)}}),q&&(0,r.jsxs)("div",{className:"fixed inset-0 z-50 flex items-start justify-center px-3 pt-[6vh] sm:pt-[10vh]",onClick:()=>z(null),children:[(0,r.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm"}),(0,r.jsxs)("div",{className:"relative bg-surface border border-border rounded-xl w-full max-w-[600px] max-h-[86vh] sm:max-h-[80vh] overflow-y-auto shadow-2xl",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"sticky top-0 z-10 flex items-center justify-between px-5 py-3 border-b border-border bg-surface/95 backdrop-blur-sm rounded-t-xl",children:[(0,r.jsx)("h3",{className:"font-semibold",children:"Test Results"}),(0,r.jsx)("button",{onClick:()=>z(null),className:"p-1 rounded-lg hover:bg-bg text-text-muted hover:text-text-main transition-colors","aria-label":"Close test results",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-lg",children:"close"})})]}),(0,r.jsx)("div",{className:"p-5",children:(0,r.jsx)(S,{results:q})})]})]})]})}function N({icon:e,title:t,description:s,count:a,collapsed:i,onToggle:l,children:n}){return(0,r.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,r.jsxs)("div",{className:"flex w-full min-w-0 items-center gap-2.5 sm:w-auto",children:[(0,r.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-2.5 sm:flex-none",children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined flex size-8 shrink-0 items-center justify-center rounded-lg bg-primary/[0.08] text-[17px] text-primary",children:e}),(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("h2",{className:"truncate text-lg font-semibold leading-tight",children:t}),(0,r.jsx)("span",{className:"rounded-full bg-surface-2 px-2 py-0.5 text-[10px] font-semibold tabular-nums text-text-muted",children:a})]}),(0,r.jsx)("p",{className:"mt-0.5 truncate text-[11px] text-text-muted sm:text-xs",children:s})]})]}),(0,r.jsx)("button",{type:"button",onClick:l,className:"flex size-11 shrink-0 items-center justify-center rounded-xl border border-border text-text-muted transition-colors hover:border-primary/30 hover:text-primary sm:hidden","aria-expanded":!i,"aria-label":`${i?"Expand":"Collapse"} ${t}`,children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:i?"expand_more":"expand_less"})})]}),n&&(0,r.jsx)("div",{className:i?"hidden sm:block":"block",children:n})]})}function w({providerId:e,provider:t,stats:s,onToggle:a}){let{connected:i,error:l,errorCode:d,allDisabled:c}=s,m=!!t.noAuth;return(0,r.jsx)("div",{className:"group min-w-0",children:(0,r.jsx)(n.Zp,{padding:"none",className:`relative h-[76px] min-h-[76px] cursor-pointer overflow-hidden transition-[border-color,box-shadow,opacity] group-hover:border-primary/30 group-hover:shadow-[0_10px_26px_-22px_rgba(229,106,74,0.55)] sm:h-[78px] sm:min-h-[78px] ${c?"opacity-55":""}`,children:(0,r.jsxs)("div",{className:"flex h-full min-w-0 items-center justify-between gap-2.5 p-3",children:[(0,r.jsxs)(p(),{href:`/dashboard/providers/${e}`,className:"flex min-w-0 flex-1 items-center gap-2.5 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-500/40",children:[(0,r.jsx)("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-lg ring-1 ring-black/[0.04] dark:ring-white/[0.06]",style:{backgroundColor:`${t.color?.length>7?t.color:t.color+"15"}`},children:(0,r.jsx)(o.A,{src:`/providers/${t.id}.png`,alt:"",size:28,className:"max-h-7 max-w-7 rounded-md object-contain",fallbackText:t.textIcon||t.id.slice(0,2).toUpperCase(),fallbackColor:t.color})}),(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("h3",{className:"truncate text-sm font-semibold text-text-main",children:t.name}),(0,r.jsx)("div",{className:"mt-1 flex min-w-0 items-center overflow-hidden whitespace-nowrap",children:c?(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 text-[11px] text-text-muted",children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined text-[13px]",children:"pause_circle"}),"Disabled"]}):m?(0,r.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-[11px] font-medium text-success",children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"size-1.5 rounded-full bg-success"}),"Ready"]}):b(i,l,d)})]})]}),(0,r.jsxs)("div",{className:"hidden shrink-0 items-center gap-2 sm:flex",children:[s.total>0&&(0,r.jsx)("div",{className:"opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:e=>{e.preventDefault(),e.stopPropagation(),a(!!c)},children:(0,r.jsx)(n.lM,{size:"sm",touchTarget:!0,checked:!c,onChange:()=>{},title:c?"Enable provider":"Disable provider"})}),(0,r.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined text-[17px] text-text-subtle transition-[transform,color] group-hover:translate-x-0.5 group-hover:text-primary",children:"chevron_right"})]}),(0,r.jsx)(C,{providerId:e,hasConnections:s.total>0,active:!c,onToggle:a})]})})})}function k({providerId:e,provider:t,stats:s,onToggle:a}){let{connected:i,error:l,errorCode:d,allDisabled:m}=s,u=e.startsWith(c.JH),x=e.startsWith(c.DI);return(0,r.jsx)("div",{className:"group min-w-0",children:(0,r.jsx)(n.Zp,{padding:"none",className:`relative h-[76px] min-h-[76px] cursor-pointer overflow-hidden transition-[border-color,box-shadow,opacity] group-hover:border-primary/30 group-hover:shadow-[0_10px_26px_-22px_rgba(229,106,74,0.55)] sm:h-[78px] sm:min-h-[78px] ${m?"opacity-55":""}`,children:(0,r.jsxs)("div",{className:"flex h-full min-w-0 items-center justify-between gap-2.5 p-3",children:[(0,r.jsxs)(p(),{href:`/dashboard/providers/${e}`,className:"flex min-w-0 flex-1 items-center gap-2.5 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-500/40",children:[(0,r.jsx)("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-lg ring-1 ring-black/[0.04] dark:ring-white/[0.06]",style:{backgroundColor:`${t.color?.length>7?t.color:t.color+"15"}`},children:(0,r.jsx)(o.A,{src:u?"responses"===t.apiType?"/providers/oai-r.png":"/providers/oai-cc.png":x?"/providers/anthropic-m.png":`/providers/${t.id}.png`,alt:"",size:28,className:"max-h-7 max-w-7 rounded-md object-contain",fallbackText:t.textIcon||t.id.slice(0,2).toUpperCase(),fallbackColor:t.color})}),(0,r.jsxs)("div",{className:"min-w-0",children:[(0,r.jsx)("h3",{className:"truncate text-sm font-semibold text-text-main",children:t.name}),(0,r.jsx)("div",{className:"mt-1 flex min-w-0 items-center gap-1.5 overflow-hidden whitespace-nowrap",children:m?(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 text-[11px] text-text-muted",children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined text-[13px]",children:"pause_circle"}),"Disabled"]}):(0,r.jsxs)(r.Fragment,{children:[b(i,l,d),u&&(0,r.jsxs)("span",{className:"text-[10px] text-text-subtle",children:["\xb7 ","responses"===t.apiType?"Responses":"Chat"]}),x&&(0,r.jsx)("span",{className:"text-[10px] text-text-subtle",children:"\xb7 Messages"})]})})]})]}),(0,r.jsxs)("div",{className:"hidden shrink-0 items-center gap-2 sm:flex",children:[s.total>0&&(0,r.jsx)("div",{className:"opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100",onClick:e=>{e.preventDefault(),e.stopPropagation(),a(!!m)},children:(0,r.jsx)(n.lM,{size:"sm",touchTarget:!0,checked:!m,onChange:()=>{},title:m?"Enable provider":"Disable provider"})}),(0,r.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined text-[17px] text-text-subtle transition-[transform,color] group-hover:translate-x-0.5 group-hover:text-primary",children:"chevron_right"})]}),(0,r.jsx)(C,{providerId:e,hasConnections:s.total>0,active:!m,onToggle:a})]})})})}function C({providerId:e,hasConnections:t,active:s,onToggle:i}){let[l,n]=(0,a.useState)(!1),o=(0,a.useRef)(null),d=(0,a.useId)();return(0,a.useEffect)(()=>{if(!l)return;let e=e=>{"Escape"!==e.key&&o.current?.contains(e.target)||n(!1)};return document.addEventListener("keydown",e),document.addEventListener("pointerdown",e),()=>{document.removeEventListener("keydown",e),document.removeEventListener("pointerdown",e)}},[l]),(0,r.jsxs)("div",{ref:o,className:"relative shrink-0 sm:hidden",children:[(0,r.jsx)("button",{type:"button","aria-label":"Provider actions","aria-expanded":l,"aria-controls":d,onClick:()=>n(e=>!e),className:"grid size-11 place-items-center rounded-xl text-text-muted transition-colors hover:bg-surface-2 hover:text-text-main focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-500/40",children:(0,r.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined",children:"more_vert"})}),l&&(0,r.jsxs)("div",{id:d,className:"absolute right-0 top-full z-20 mt-1 w-48 overflow-hidden rounded-xl border border-border bg-surface p-1 shadow-[var(--shadow-elev)]",children:[(0,r.jsxs)(p(),{href:`/dashboard/providers/${e}`,className:"flex min-h-11 items-center gap-2 rounded-lg px-3 text-sm text-text-main hover:bg-surface-2 focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-500/40",children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined text-[18px]",children:"arrow_forward"}),"Open provider"]}),t&&(0,r.jsxs)("button",{type:"button",onClick:()=>{i(!s),n(!1)},className:"flex min-h-11 w-full items-center gap-2 rounded-lg px-3 text-left text-sm text-text-main hover:bg-surface-2 focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-500/40",children:[(0,r.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined text-[18px]",children:s?"pause_circle":"play_circle"}),s?"Disable provider":"Enable provider"]})]})]})}function T({isOpen:e,onClose:t,onCreated:s}){let[i,l]=(0,a.useState)({name:"",prefix:"",apiType:"chat",baseUrl:"https://api.openai.com/v1"}),[o,d]=(0,a.useState)(!1),[c,m]=(0,a.useState)(""),[p,u]=(0,a.useState)(""),[x,h]=(0,a.useState)(!1),[f,g]=(0,a.useState)(null),[b,v]=(0,a.useState)("");(0,a.useEffect)(()=>{let e="https://api.openai.com/v1";l(t=>t.baseUrl&&t.baseUrl!==e?t:{...t,baseUrl:e})},[i.apiType]);let y=async()=>{if(i.name.trim()&&i.prefix.trim()&&i.baseUrl.trim()){d(!0),v("");try{let e=await fetch("/api/provider-nodes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:i.name,prefix:i.prefix,apiType:i.apiType,baseUrl:i.baseUrl,type:"openai-compatible"})}),t=await e.json().catch(()=>({}));e.ok?(s(t.node),l({name:"",prefix:"",apiType:"chat",baseUrl:"https://api.openai.com/v1"}),m(""),g(null)):v(t?.error||`Failed to create node (HTTP ${e.status})`)}catch(e){console.log("Error creating OpenAI Compatible node:",e),v("Network error — could not create the node")}finally{d(!1)}}},j=async()=>{h(!0);try{let e=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:i.baseUrl,apiKey:c,type:"openai-compatible",modelId:p.trim()||void 0})}),t=await e.json();g(t)}catch{g({valid:!1,error:"Network error"})}finally{h(!1)}};return(0,r.jsx)(n.aF,{isOpen:e,title:"Add OpenAI Compatible",onClose:t,children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsx)(n.pd,{label:"Name",value:i.name,onChange:e=>l({...i,name:e.target.value}),placeholder:"OpenAI Compatible (Prod)",hint:"Required. A friendly label for this node."}),(0,r.jsx)(n.pd,{label:"Prefix",value:i.prefix,onChange:e=>l({...i,prefix:e.target.value}),placeholder:"oc-prod",hint:"Required. Used as the provider prefix for model IDs."}),(0,r.jsx)(n.l6,{label:"API Type",options:[{value:"chat",label:"Chat Completions"},{value:"responses",label:"Responses API"}],value:i.apiType,onChange:e=>l({...i,apiType:e.target.value})}),(0,r.jsx)(n.pd,{label:"Base URL",value:i.baseUrl,onChange:e=>l({...i,baseUrl:e.target.value}),placeholder:"https://api.openai.com/v1",hint:"Use the base URL (ending in /v1) for your OpenAI-compatible API."}),(0,r.jsx)(n.pd,{label:"API Key (for Check)",type:"password",value:c,onChange:e=>m(e.target.value)}),(0,r.jsx)(n.pd,{label:"Model ID (optional)",value:p,onChange:e=>u(e.target.value),placeholder:"e.g. gpt-4, claude-3-opus",hint:"If provider lacks /models endpoint, enter a model ID to validate via chat/completions instead."}),b&&(0,r.jsx)("p",{className:"text-sm text-red-500 break-words",children:b}),(0,r.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[(0,r.jsx)(n.$n,{onClick:j,disabled:!c||x||!i.baseUrl.trim(),variant:"secondary",className:"w-full sm:w-auto",children:x?"Checking...":"Check"}),(()=>{if(!f)return null;let{valid:e,error:t,method:s}=f;return e?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.Ex,{variant:"success",children:"Valid"}),"chat"===s&&(0,r.jsx)("span",{className:"text-sm text-text-muted",children:"(via inference test)"})]}):(0,r.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,r.jsx)(n.Ex,{variant:"error",children:"Invalid"}),t&&(0,r.jsx)("span",{className:"text-sm text-red-500",children:t})]})})()]}),(0,r.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row",children:[(0,r.jsx)(n.$n,{onClick:y,fullWidth:!0,disabled:!i.name.trim()||!i.prefix.trim()||!i.baseUrl.trim()||o,children:o?"Creating...":"Create"}),(0,r.jsx)(n.$n,{onClick:t,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})})}function A({isOpen:e,onClose:t,onCreated:s}){let[i,l]=(0,a.useState)({name:"",prefix:"",baseUrl:"https://api.anthropic.com/v1"}),[o,d]=(0,a.useState)(!1),[c,m]=(0,a.useState)(""),[p,u]=(0,a.useState)(""),[x,h]=(0,a.useState)(!1),[f,g]=(0,a.useState)(null),[b,v]=(0,a.useState)("");(0,a.useEffect)(()=>{e&&(g(null),m(""),u(""),v(""))},[e]);let y=async()=>{if(i.name.trim()&&i.prefix.trim()&&i.baseUrl.trim()){d(!0),v("");try{let e=await fetch("/api/provider-nodes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:i.name,prefix:i.prefix,baseUrl:i.baseUrl,type:"anthropic-compatible"})}),t=await e.json().catch(()=>({}));e.ok?(s(t.node),l({name:"",prefix:"",baseUrl:"https://api.anthropic.com/v1"}),m(""),g(null)):v(t?.error||`Failed to create node (HTTP ${e.status})`)}catch(e){console.log("Error creating Anthropic Compatible node:",e),v("Network error — could not create the node")}finally{d(!1)}}},j=async()=>{h(!0);try{let e=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:i.baseUrl,apiKey:c,type:"anthropic-compatible",modelId:p.trim()||void 0})}),t=await e.json();g(t)}catch{g({valid:!1,error:"Network error"})}finally{h(!1)}};return(0,r.jsx)(n.aF,{isOpen:e,title:"Add Anthropic Compatible",onClose:t,children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsx)(n.pd,{label:"Name",value:i.name,onChange:e=>l({...i,name:e.target.value}),placeholder:"Anthropic Compatible (Prod)",hint:"Required. A friendly label for this node."}),(0,r.jsx)(n.pd,{label:"Prefix",value:i.prefix,onChange:e=>l({...i,prefix:e.target.value}),placeholder:"ac-prod",hint:"Required. Used as the provider prefix for model IDs."}),(0,r.jsx)(n.pd,{label:"Base URL",value:i.baseUrl,onChange:e=>l({...i,baseUrl:e.target.value}),placeholder:"https://api.anthropic.com/v1",hint:"Use the base URL (ending in /v1) for your Anthropic-compatible API. The system will append /messages."}),(0,r.jsx)(n.pd,{label:"API Key (for Check)",type:"password",value:c,onChange:e=>m(e.target.value)}),(0,r.jsx)(n.pd,{label:"Model ID (optional)",value:p,onChange:e=>u(e.target.value),placeholder:"e.g. claude-3-opus",hint:"If provider lacks /models endpoint, enter a model ID to validate via chat/completions instead."}),b&&(0,r.jsx)("p",{className:"text-sm text-red-500 break-words",children:b}),(0,r.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[(0,r.jsx)(n.$n,{onClick:j,disabled:!c||x||!i.baseUrl.trim(),variant:"secondary",className:"w-full sm:w-auto",children:x?"Checking...":"Check"}),(()=>{if(!f)return null;let{valid:e,error:t,method:s}=f;return e?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.Ex,{variant:"success",children:"Valid"}),"chat"===s&&(0,r.jsx)("span",{className:"text-sm text-text-muted",children:"(via inference test)"})]}):(0,r.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,r.jsx)(n.Ex,{variant:"error",children:"Invalid"}),t&&(0,r.jsx)("span",{className:"text-sm text-red-500",children:t})]})})()]}),(0,r.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row",children:[(0,r.jsx)(n.$n,{onClick:y,fullWidth:!0,disabled:!i.name.trim()||!i.prefix.trim()||!i.baseUrl.trim()||o,children:o?"Creating...":"Create"}),(0,r.jsx)(n.$n,{onClick:t,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})})}function S({results:e}){if(e.error&&!e.results)return(0,r.jsxs)("div",{className:"text-center py-6",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-red-500 text-[32px] mb-2 block",children:"error"}),(0,r.jsx)("p",{className:"text-sm text-red-400",children:e.error})]});let{summary:t,mode:s}=e,a=e.results||[];return(0,r.jsxs)("div",{className:"flex min-w-0 flex-col gap-3",children:[t&&(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs mb-1 sm:gap-3",children:[(0,r.jsxs)("span",{className:"text-text-muted",children:[{oauth:"OAuth",free:"Free",apikey:"API Key",provider:"Provider",all:"All"}[s]||s," Test"]}),(0,r.jsxs)("span",{className:"px-2 py-0.5 rounded bg-emerald-500/15 text-emerald-400 font-medium",children:[t.passed," passed"]}),t.failed>0&&(0,r.jsxs)("span",{className:"px-2 py-0.5 rounded bg-red-500/15 text-red-400 font-medium",children:[t.failed," failed"]}),(0,r.jsxs)("span",{className:"text-text-muted sm:ml-auto",children:[t.total," tested"]})]}),a.map((e,t)=>(0,r.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2 rounded-lg bg-black/[0.03] px-3 py-2 text-xs dark:bg-white/[0.03] sm:flex-nowrap",children:[(0,r.jsx)("span",{className:`material-symbols-outlined text-[16px] ${e.valid?"text-emerald-500":"text-red-500"}`,children:e.valid?"check_circle":"error"}),(0,r.jsxs)("div",{className:"min-w-0 flex-[1_1_160px]",children:[(0,r.jsx)("span",{className:"block truncate font-medium sm:inline",children:e.connectionName}),(0,r.jsxs)("span",{className:"block truncate text-text-muted sm:ml-1.5 sm:inline",children:["(",e.provider,")"]})]}),void 0!==e.latencyMs&&(0,r.jsxs)("span",{className:"shrink-0 text-text-muted font-mono tabular-nums",children:[e.latencyMs,"ms"]}),(0,r.jsx)("span",{className:`shrink-0 text-[10px] uppercase font-bold px-1.5 py-0.5 rounded ${e.valid?"bg-emerald-500/15 text-emerald-400":"bg-red-500/15 text-red-400"}`,children:e.valid?"OK":e.diagnosis?.type||"ERROR"})]},e.connectionId||t)),0===a.length&&(0,r.jsx)("div",{className:"text-center py-4 text-text-muted text-sm",children:"No active connections found for this group."})]})}N.propTypes={icon:l().string.isRequired,title:l().string.isRequired,description:l().string.isRequired,count:l().number.isRequired,collapsed:l().bool.isRequired,onToggle:l().func.isRequired,children:l().node},w.propTypes={providerId:l().string.isRequired,provider:l().shape({id:l().string.isRequired,name:l().string.isRequired,color:l().string,textIcon:l().string}).isRequired,stats:l().shape({connected:l().number,error:l().number,errorCode:l().string,errorTime:l().string,total:l().number,allDisabled:l().bool}).isRequired,onToggle:l().func},C.propTypes={providerId:l().string.isRequired,hasConnections:l().bool.isRequired,active:l().bool.isRequired,onToggle:l().func.isRequired},k.propTypes={providerId:l().string.isRequired,provider:l().shape({id:l().string.isRequired,name:l().string.isRequired,color:l().string,textIcon:l().string,apiType:l().string}).isRequired,stats:l().shape({connected:l().number,error:l().number,errorCode:l().string,errorTime:l().string,total:l().number,allDisabled:l().bool}).isRequired,onToggle:l().func},T.propTypes={isOpen:l().bool.isRequired,onClose:l().func.isRequired,onCreated:l().func.isRequired},A.propTypes={isOpen:l().bool.isRequired,onClose:l().func.isRequired,onCreated:l().func.isRequired},S.propTypes={results:l().shape({mode:l().string,results:l().array,summary:l().shape({total:l().number,passed:l().number,failed:l().number}),error:l().string}).isRequired}},28915:(e,t,s)=>{"use strict";s.d(t,{x6:()=>r.fetchJson,E2:()=>a,gs:()=>i});var r=s(68211);function a(e){if(!e)return null;let t=e.match(/\b([45]\d{2})\b/);return t?t[1]:"ERR"}function i(e){if(!e)return"";let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t}m ago`;let s=Math.floor(t/60);if(s<24)return`${s}h ago`;let r=Math.floor(s/24);return`${r}d ago`}},31703:(e,t,s)=>{Promise.resolve().then(s.bind(s,20490))},68211:(e,t,s)=>{"use strict";s.d(t,{fetchJson:()=>a});let r={"Content-Type":"application/json"};async function a(e,t={}){let{body:s,headers:i,...l}=t,n={...l,headers:{...r,...i}};void 0!==s&&"string"!=typeof s?n.body=JSON.stringify(s):void 0!==s&&(n.body=s);let o=await fetch(e,n),d=await o.text(),c=null;if(d)try{c=JSON.parse(d)}catch{let t=Error(`Non-JSON response from ${e} (HTTP ${o.status})`);throw t.status=o.status,t.rawBody=d.slice(0,300),t}if(!o.ok){let e=c&&(c.error?.message||c.error||c.message)||`Request failed (HTTP ${o.status})`,t=Error("string"==typeof e?e:`HTTP ${o.status}`);throw t.status=o.status,t.data=c,t}return c}a.get=(e,t)=>a(e,{...t,method:"GET"}),a.post=(e,t,s)=>a(e,{...s,method:"POST",body:t}),a.put=(e,t,s)=>a(e,{...s,method:"PUT",body:t}),a.patch=(e,t,s)=>a(e,{...s,method:"PATCH",body:t}),a.del=(e,t)=>a(e,{...t,method:"DELETE"})}},e=>{e.O(0,[2574,3862,3745,3339,620,5497,8441,3794,7358],()=>e(e.s=31703)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3826],{5498:(e,t,r)=>{Promise.resolve().then(r.bind(r,23686)),Promise.resolve().then(r.bind(r,25086))},23686:(e,t,r)=>{"use strict";r.d(t,{default:()=>T});var a=r(95155),s=r(12115),n=r(57250),i=r(91720);function l(e){if(!e)return"-";try{let t="string"==typeof e?new Date(e):e,r=new Date,a=t-r;if(a<=0)return"-";let s=Math.ceil(a/6e4);if(s<60)return`${s}m`;let n=Math.floor(s/60),i=s%60;if(n<24)return`${n}h ${i}m`;let l=Math.floor(n/24);return`${l}d ${n%24}h ${i}m`}catch(e){return"-"}}function o(e,t){return t&&0!==t?!e||e<0?100:e>=t?0:Math.round((t-e)/t*100):0}function c(e){if(e?.unlimited===!0)return e?.remainingPercentage!==void 0&&Number.isFinite(Number(e.remainingPercentage))?Math.max(0,Math.min(100,Math.round(Number(e.remainingPercentage)))):100;if(e?.remainingPercentage!==void 0&&Number.isFinite(Number(e.remainingPercentage)))return Math.max(0,Math.min(100,Math.round(Number(e.remainingPercentage))));if(e?.remaining!==void 0&&Number.isFinite(Number(e.remaining))){let t=Number(e.remaining);if(t>=0&&t<=100&&!(e.total>100&&t<=100&&null!=e.used))return e.total>0?o(e.used,e.total):Math.round(t)}return o(e?.used,e?.total)}function d(e,t){if(!t||"object"!=typeof t)return[];let r=[];try{switch(e.toLowerCase()){case"github":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"antigravity":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:t.displayName||e,modelKey:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,remainingPercentage:t.remainingPercentage})});break;case"codex":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,remaining:t.remaining,resetAt:t.resetAt||null})});break;case"kiro":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{let a=e.endsWith("_freetrial"),s=(a?e.slice(0,-10):e).split(/[_\s]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ");r.push({name:a?`${s} (Free Trial)`:s,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"qoder":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{("organization"!==e||t&&0!==(Number(t.total)||0))&&r.push({name:"user"===e?"Personal":"organization"===e?"Organization":e,used:t.used||0,total:t.total||0,unit:t.unit,resetAt:t.resetAt||null})});break;case"autoclaw":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:"points"===e?"Points":e,used:t.used||0,total:t.total||0,unit:t.unit,resetAt:t.resetAt||null})});break;case"claude":t.message&&!t.quotas?r.push({name:"error",isError:!0,used:0,total:0,resetAt:null,message:t.message}):t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null})});break;case"grok-cli":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{let a=!0===t.unlimited||!(t.total>0)&&t.remainingPercentage>0;r.push({name:e,used:t.used||0,total:a?0:t.total||0,resetAt:t.resetAt||null,remainingPercentage:null!=t.remainingPercentage?t.remainingPercentage:a?100:void 0,unlimited:a})});break;case"cloudflare-ai":t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{let a=!0===t.unlimited||!(t.total>0);r.push({name:e,used:t.used||0,total:a?0:t.total||0,resetAt:t.resetAt||null,remainingPercentage:null!=t.remainingPercentage?t.remainingPercentage:100*!!a,unlimited:a})});break;default:t.quotas&&Object.entries(t.quotas).forEach(([e,t])=>{r.push({name:e,used:t.used||0,total:t.total||0,resetAt:t.resetAt||null,...null!=t.remainingPercentage?{remainingPercentage:t.remainingPercentage}:{},...!0===t.unlimited?{unlimited:!0}:{}})})}}catch(t){return console.error(`Error parsing quota data for ${e}:`,t),[]}let a=(0,i.KC)(e);if(a.length>0){let e=new Map(a.map((e,t)=>[e.id,t]));r.sort((t,r)=>{let a=t.modelKey||t.name,s=r.modelKey||r.name;return(e.get(a)??999)-(e.get(s)??999)})}return r}var u=r(58041);function m(e){if(!e)return null;try{let t=new Date(e),r=new Date,a=new Date(r.getFullYear(),r.getMonth(),r.getDate()),s=new Date(a);s.setDate(s.getDate()+1);let n="";n=t>=a&&t<s?"Today":t>=s&&t<new Date(s.getTime()+864e5)?"Tomorrow":t.toLocaleDateString("en-US",{month:"short",day:"numeric"});let i=t.toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",hour12:!0});return`${n}, ${i}`}catch{return null}}function x(e){return e>70?{text:"text-green-600 dark:text-green-400",bg:"bg-green-500",bgLight:"bg-green-500/10",emoji:"\uD83D\uDFE2"}:e>=30?{text:"text-yellow-600 dark:text-yellow-400",bg:"bg-yellow-500",bgLight:"bg-yellow-500/10",emoji:"\uD83D\uDFE1"}:{text:"text-red-600 dark:text-red-400",bg:"bg-red-500",bgLight:"bg-red-500/10",emoji:"\uD83D\uDD34"}}let h=["name","used","total","resetAt","remaining","remainingPercentage","unlimited","message","isError","unit","modelKey"];function p({quotas:e=[],compact:t=!1,sortMode:r="default",showSortLabel:n=!1,paginate:i=!0,totalCount:o}){let[d,b]=(0,s.useState)(1),[g,f]=(0,s.useState)(e);g===e||Array.isArray(g)&&Array.isArray(e)&&g.length===e.length&&g.every((t,r)=>{let a=e[r];return t&&a?h.every(e=>String(t[e]??null)===String(a[e]??null)):t===a})||f(e);let v=(0,s.useMemo)(()=>g.map((e,t)=>({...e,index:t,remaining:c(e)})),[g]),y=(0,s.useMemo)(()=>"remaining-asc"===r?[...v].sort((e,t)=>e.remaining-t.remaining||e.name.localeCompare(t.name)):"remaining-desc"===r?[...v].sort((e,t)=>t.remaining-e.remaining||e.name.localeCompare(t.name)):v,[v,r]),k=i?Math.max(1,Math.ceil(y.length/10)):1;if((0,s.useEffect)(()=>{b(1)},[r,g]),(0,s.useEffect)(()=>{b(e=>Math.min(e,k))},[k]),!e||0===e.length)return null;let j=i?y.slice((d-1)*10,10*d):y,w=0===y.length?0:(d-1)*10+1,N=i?Math.min(10*d,y.length):y.length,$=Number.isFinite(o)?o:y.length,C=t?"py-1 px-1.5":"py-2 px-3",S=t?"text-[11px]":"text-sm",A=t?"text-[11px]":"text-sm",P=t?"text-[10px] leading-tight":"text-xs";return(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)("div",{className:"text-[10px] text-text-muted",children:[$," quota",$>1?"s":""]}),n&&(0,a.jsx)("div",{className:"rounded-md border border-black/10 bg-black/[0.02] px-2 py-1 text-[10px] text-text-muted dark:border-white/10 dark:bg-white/[0.03]",children:"Sorted by account remaining"})]}),(0,a.jsx)(u.DataList,{"aria-label":"Quota details",className:"sm:hidden",children:j.map(e=>{if(e.isError)return(0,a.jsx)(u.DataRow,{label:"Quota error",value:(0,a.jsx)("span",{className:"text-red-600 dark:text-red-400",children:e.message||"Failed to load quota"})},`mobile-error-${e.index}`);let t=x(e.remaining),r=l(e.resetAt),s=m(e.resetAt),n=!0!==e.unlimited&&e.total>0?`${e.used.toLocaleString()} / ${e.total.toLocaleString()}`:!0===e.unlimited?"Included / unlimited":`${e.used.toLocaleString()} / unlimited`;return(0,a.jsx)(u.DataRow,{label:e.name,value:(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)("div",{className:`h-1.5 overflow-hidden rounded-full ${t.bgLight}`,children:(0,a.jsx)("div",{className:`h-full ${t.bg}`,style:{width:`${Math.min(e.remaining,100)}%`}})}),(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3 text-xs",children:[(0,a.jsx)("span",{className:"text-text-muted",children:n}),(0,a.jsx)("span",{className:`font-semibold ${t.text}`,children:Number.isFinite(e.remaining)?`${e.remaining}% remaining`:"Unknown"})]})]}),detail:"-"!==r?`Resets in ${r}${s?` \xb7 ${s}`:""}`:s?`Resets ${s}`:"No reset window"},`mobile-${e.name}-${e.index}`)})}),(0,a.jsx)("div",{className:"hidden overflow-x-auto sm:block",children:(0,a.jsx)("table",{className:"w-full table-fixed text-left",children:(0,a.jsx)("tbody",{children:j.map(e=>{if(e.isError)return(0,a.jsx)("tr",{className:"border-b border-black/5 dark:border-white/5",children:(0,a.jsx)("td",{colSpan:3,className:`${C}`,children:(0,a.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,a.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[14px] text-red-500",children:"error"}),(0,a.jsx)("span",{className:`${S} text-red-600 dark:text-red-400 truncate`,children:e.message||"Failed to load quota"})]})})},`error-${e.index}`);let r=x(e.remaining),s=l(e.resetAt),n=m(e.resetAt);return(0,a.jsxs)("tr",{className:"border-b border-black/5 dark:border-white/5 hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors",children:[(0,a.jsx)("td",{className:`${C} w-[30%]`,children:(0,a.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,a.jsx)("span",{className:"text-[10px] shrink-0",children:r.emoji}),(0,a.jsx)("span",{className:`${S} font-medium text-text-primary truncate`,children:e.name})]})}),(0,a.jsx)("td",{className:`${C} w-[45%]`,children:(0,a.jsxs)("div",{className:t?"space-y-1":"space-y-1.5",children:[(0,a.jsx)("div",{className:`${t?"h-1":"h-1.5"} rounded-full overflow-hidden border ${r.bgLight} ${0===e.remaining?"border-black/10 dark:border-white/10":"border-transparent"}`,children:(0,a.jsx)("div",{className:`h-full transition-all duration-300 ${r.bg}`,style:{width:`${Math.min(e.remaining,100)}%`}})}),(0,a.jsxs)("div",{className:`flex items-center justify-between ${t?"text-[10px]":"text-xs"}`,children:[(0,a.jsx)("span",{className:"text-text-muted",children:!0!==e.unlimited&&e.total>0?`${e.used.toLocaleString()} / ${e.total.toLocaleString()}`:!0===e.unlimited?"Included / ∞":`${e.used.toLocaleString()} / ∞`}),(0,a.jsx)("span",{className:`font-medium ${r.text}`,children:Number.isFinite(e.remaining)?`${e.remaining}%`:"—"})]})]})}),(0,a.jsx)("td",{className:`${C} w-[25%]`,children:"-"!==s||n?t?(0,a.jsx)("div",{className:`${A} text-text-primary font-medium truncate`,title:n||"",children:"-"!==s?`in ${s}`:n}):(0,a.jsxs)("div",{className:"space-y-0.5",children:["-"!==s&&(0,a.jsxs)("div",{className:`${A} text-text-primary font-medium`,children:["in ",s]}),n&&(0,a.jsx)("div",{className:`${P} text-text-muted`,children:n})]}):(0,a.jsx)("div",{className:`${A} text-text-muted italic`,children:"N/A"})})]},`${e.name}-${e.index}`)})})})}),k>1&&(0,a.jsxs)("div",{className:"rounded-md border border-black/10 bg-black/[0.02] px-2 py-1.5 dark:border-white/10 dark:bg-white/[0.03]",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2 text-[10px] text-text-muted",children:[(0,a.jsxs)("span",{children:["Showing ",w,"-",N," of ",y.length]}),(0,a.jsxs)("span",{children:["Page ",d," / ",k]})]}),(0,a.jsxs)("div",{className:"mt-1.5 flex items-center justify-end gap-1",children:[(0,a.jsx)("button",{type:"button",onClick:()=>b(e=>Math.max(1,e-1)),disabled:1===d,className:"flex h-11 items-center rounded-lg border border-black/10 px-3 text-xs text-text-primary transition-colors hover:bg-black/5 disabled:cursor-not-allowed disabled:opacity-40 dark:border-white/10 dark:hover:bg-white/5 sm:h-7 sm:rounded-md sm:px-2 sm:text-[10px]",children:"Prev"}),(0,a.jsx)("button",{type:"button",onClick:()=>b(e=>Math.min(k,e+1)),disabled:d===k,className:"flex h-11 items-center rounded-lg border border-black/10 px-3 text-xs text-text-primary transition-colors hover:bg-black/5 disabled:cursor-not-allowed disabled:opacity-40 dark:border-white/10 dark:hover:bg-white/5 sm:h-7 sm:rounded-md sm:px-2 sm:text-[10px]",children:"Next"})]})]})]})}var b=r(98542),g=r(84588),f=r(35497),v=r(52679);function y(e,t){if(!t)return e;let r=new Date(t);return!Number.isFinite(r.getTime())||e&&r.getTime()<=e.getTime()?e:r}function k(e){let t=e=>"string"==typeof e&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e);return t(e.email)?e.email:(t(e.name),e.name)}function j(e,t){let r=t[e.id]?.quotas?.[0];return r&&"number"==typeof r.remaining?r.remaining:1/0}function w(e){return v.Q2[e]?.name||e}function N(e){let t={};return e.forEach(e=>{t[e.id]=!0}),t}function $(e,t){let r=new Set(t.map(e=>e.id));return Object.fromEntries(Object.entries(e).filter(([e])=>r.has(e)))}async function C(e,t){return await e(t)}let S="quotaAutoRefresh",A=[{value:"all",label:"All accounts"},{value:"active",label:"Active"},{value:"inactive",label:"Turned off"}],P=[{value:"single",label:"Satuan",icon:"account_circle"},{value:"bulk",label:"Bulk",icon:"stacks"}],q=[{value:"default",label:"Default quota order"},{value:"remaining-asc",label:"% quota: low to high"},{value:"remaining-desc",label:"% quota: high to low"}],E=[10,20,50,100];function T(){let[e,t]=(0,s.useState)([]),[r,i]=(0,s.useState)({}),[l,u]=(0,s.useState)({}),[m,x]=(0,s.useState)({}),[h,T]=(0,s.useState)(!0),[M,F]=(0,s.useState)(null),[z,_]=(0,s.useState)(!1),[D,L]=(0,s.useState)(!1),[O,R]=(0,s.useState)(60),[I,U]=(0,s.useState)(!0),[K,Q]=(0,s.useState)(null),[H,B]=(0,s.useState)(null),[G,J]=(0,s.useState)(null),[W,Y]=(0,s.useState)(null),[V,X]=(0,s.useState)(!1),[Z,ee]=(0,s.useState)(null),[et,er]=(0,s.useState)(null),[ea,es]=(0,s.useState)(null),[en,ei]=(0,s.useState)([]),[el,eo]=(0,s.useState)("all"),[ec,ed]=(0,s.useState)([]),[eu,em]=(0,s.useState)("single"),[ex,eh]=(0,s.useState)("all"),[ep,eb]=(0,s.useState)("default"),[eg,ef]=(0,s.useState)(!1),[ev,ey]=(0,s.useState)(!1),[ek,ej]=(0,s.useState)(!1),[ew,eN]=(0,s.useState)({}),[e$,eC]=(0,s.useState)(!1),[eS,eA]=(0,s.useState)({}),[eP,eq]=(0,s.useState)({}),[eE,eT]=(0,s.useState)({}),[eM,eF]=(0,s.useState)(1),[ez,e_]=(0,s.useState)(20),[eD,eL]=(0,s.useState)(String(20)),[eO,eR]=(0,s.useState)({page:1,pageSize:20,total:0,totalPages:1}),[eI,eU]=(0,s.useState)({eligibleConnections:0,providerFilteredConnections:0}),eK=(0,s.useRef)(null),eQ=(0,s.useRef)(null),eH=(0,s.useRef)(null),eB=(0,s.useRef)(0),eG=async()=>{let e=et?.connection;if(e){es(e.id);try{let t=await fetch(`/api/usage/${e.id}/codex-reset-credits`,{method:"POST"}),r=await t.json();if(!t.ok)throw Error(r.error||r.message||"Failed to use reset credit");er(null),await eY(e.id,e.provider)}catch(e){B({message:e.message||"Failed to use Codex reset credit"})}finally{es(null)}}},eJ=(0,s.useCallback)(async(e=eM)=>{let r=++eB.current;try{var a,s;let n=new URLSearchParams({page:String(e),pageSize:String(ez),accountStatus:ex,sort:"priority"});"all"!==el&&n.set("provider",el);let i=await fetch(`/api/providers/client?${n.toString()}`);if(!i.ok){let e=await i.json().catch(()=>({}));throw Error(e.error||`Failed to fetch connections (HTTP ${i.status})`)}let l=await i.json();if(r!==eB.current)return[];let o=l.connections||[],c=(a=l.pagination,a||{page:1,pageSize:ez,total:0,totalPages:1}),d=function(e,t=0){return e||{eligibleConnections:t,providerFilteredConnections:t}}(l.totals,o.length);return t(o),ed(l.providerOptions||[]),eR(c),eU(d),eF((s=l.pagination,s?.page||e)),Q(null),o}catch(e){if(console.error("Error fetching connections:",e),r!==eB.current)return[];return Q(e.message||"Failed to fetch connections"),[]}},[ex,eM,ez,el]),eW=(0,s.useCallback)(async(e,t,r=!1)=>{u(t=>({...t,[e]:!0})),x(t=>({...t,[e]:null}));try{var a;let s=await fetch(`/api/usage/${e}${r?"?refresh=1":""}`);if(!s.ok){let r=(await s.json().catch(()=>({}))).error||s.statusText;if(404===s.status)return void console.warn(`[ProviderLimits] Connection not found for ${t}, skipping`);if(401===s.status)return console.warn(`[ProviderLimits] Auth error for ${t}:`,r),x(t=>({...t,[e]:r})),null;throw Error(`HTTP ${s.status}: ${r}`)}let n=await s.json(),l=(a=d(t,n),{quotas:a,plan:n.plan||null,message:n.message||null,cached:!0===n.cached,stale:!0===n.stale,fetchedAt:n.fetchedAt||null,refreshError:n.refreshError||null,raw:n});return i(t=>({...t,[e]:l})),{fetchedAt:n.fetchedAt||null}}catch(r){return console.error(`[ProviderLimits] Error fetching quota for ${t} (${e}):`,r),x(t=>({...t,[e]:r.message||"Failed to fetch quota"})),null}finally{u(t=>({...t,[e]:!1}))}},[]),eY=(0,s.useCallback)(async(e,t)=>{let r=await eW(e,t,!0);F(e=>y(e,r?.fetchedAt))},[eW]),eV=(0,s.useCallback)(async(e,t=!1)=>{if(e&&"all"!==e){eq(t=>({...t,[e]:!0})),eT(t=>({...t,[e]:!1}));try{let r=`/api/usage/aggregate?provider=${encodeURIComponent(e)}${t?"&refresh=1":""}`,a=await fetch(r);if(!a.ok)throw Error("Failed to fetch aggregate");let s=await a.json(),n=d(e,s);return eA(t=>({...t,[e]:{quotas:n,plan:s.plan||null,accountCount:s.accountCount||0,accountsWithQuota:s.accountsWithQuota||0,deadCount:s.deadCount||0,cached:!0===s.cached,fetchedAt:s.fetchedAt||null}})),{fetchedAt:s.fetchedAt||null}}catch(t){return console.error(`[ProviderLimits] Aggregate fetch error for ${e}:`,t),eT(t=>({...t,[e]:!0})),null}finally{eq(t=>({...t,[e]:!1}))}}},[]),eX=(0,s.useCallback)(async(e,t)=>{if("bulk"===eu&&t){let e=await eV(t,!0);F(t=>y(t,e?.fetchedAt));return}if(!e?.length)return;u(t=>({...t,...Object.fromEntries(e.map(e=>[e,!0]))}));let r=await Promise.all(e.map(e=>eW(e,t,!0)));F(e=>r.reduce((e,t)=>y(e,t?.fetchedAt),e))},[eW,eu,eV]),eZ=(0,s.useCallback)(async e=>{if(confirm("Delete this connection?")){J(e),B(null);try{let t=await fetch(`/api/providers/${e}`,{method:"DELETE"});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error||`HTTP ${t.status}`)}i(t=>{let r={...t};return delete r[e],r}),u(t=>{let r={...t};return delete r[e],r}),x(t=>{let r={...t};return delete r[e],r}),await C(eJ,eM)}catch(e){console.error("Error deleting connection:",e),B({type:"error",message:e.message||"Failed to delete connection"})}finally{J(null)}}},[eJ,eM]),e0=(0,s.useCallback)(async(e,t)=>{Y(e),B(null);try{let r=await fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})});if(!r.ok){let e=await r.json().catch(()=>({}));throw Error(e.error||`HTTP ${r.status}`)}await C(eJ,eM)}catch(e){console.error("Error updating connection status:",e),await C(eJ,eM),B({type:"error",message:e.message||"Failed to update connection status"})}finally{Y(null)}},[eJ,eM]),e1=(0,s.useCallback)(async e=>{if(!Z?.id)return;let t=Z.id,r=Z.provider;B(null);try{let a=await fetch(`/api/providers/${t}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error(e.error||`HTTP ${a.status}`)}await eJ(),X(!1),ee(null),v.wb.includes(r)&&await eW(t,r)}catch(e){console.error("Error saving connection:",e),B({type:"error",message:e.message||"Failed to save connection"})}},[Z,eJ,eW]);(0,s.useEffect)(()=>{let e=!1;return fetch("/api/proxy-pools?isActive=true",{cache:"no-store"}).then(e=>e.json()).then(t=>{!e&&t?.proxyPools&&ei(t.proxyPools)}).catch(()=>{}),()=>{e=!0}},[]);let e5=(0,s.useCallback)(async()=>{if(!D){L(!0),R(60);try{let e=await eJ(eM);u(N(e)),x(t=>$(t,e)),i(t=>$(t,e));let t=await Promise.all(e.map(e=>eW(e.id,e.provider,!0)));if("bulk"===eu){let e="all"!==el?[el]:ec.map(e=>e.value||e).filter(e=>"all"!==e),r=await Promise.all(e.map(e=>eV(e,!0)));t.push(...r)}F(e=>t.reduce((e,t)=>y(e,t?.fetchedAt),e))}catch(e){console.error("Error refreshing all providers:",e)}finally{L(!1)}}},[D,eJ,eW,eM,eu,el,ec,eV]);(0,s.useEffect)(()=>{(async()=>{U(!0);let e=await eJ(eM);U(!1),u(N(e)),x(t=>$(t,e)),i(t=>$(t,e));let t=await Promise.all(e.map(e=>eW(e.id,e.provider)));F(e=>t.reduce((e,t)=>y(e,t?.fetchedAt),e))})()},[eJ,eW,eM]),(0,s.useEffect)(()=>{"bulk"!==eu||("all"!==el?[el]:ec.map(e=>e.value||e).filter(e=>"all"!==e)).forEach(e=>eV(e))},[eu,el,ec,eV]),(0,s.useEffect)(()=>{let e=window.localStorage.getItem(S);T(null===e||"true"===e),_(!0)},[]),(0,s.useEffect)(()=>{z&&window.localStorage.setItem(S,String(h))},[h,z]),(0,s.useEffect)(()=>{eH.current=e5},[e5]);let e2=(0,s.useCallback)(()=>{eK.current&&(clearInterval(eK.current),eK.current=null),eQ.current&&(clearInterval(eQ.current),eQ.current=null)},[]),e3=(0,s.useCallback)(()=>{eK.current||eQ.current||(eK.current=setInterval(()=>{eH.current?.()},6e4),eQ.current=setInterval(()=>{R(e=>e<=1?60:e-1)},1e3))},[]);(0,s.useEffect)(()=>z&&h?(document.hidden||e3(),e2):void e2(),[h,z,e3,e2]),(0,s.useEffect)(()=>{let e=()=>{document.hidden?e2():h&&z&&e3()};return document.addEventListener("visibilitychange",e),()=>{document.removeEventListener("visibilitychange",e)}},[h,z,e3,e2]);let e4=(0,s.useMemo)(()=>(function(e,t,r,a,s){if("codex"===a&&"default"!==s)return[...e].sort((e,r)=>{let a=j(e,t),n=j(r,t),i="remaining-asc"===s?a-n:n-a;return 0!==i?i:(k(e)||"").localeCompare(k(r)||"")});if(!r)return e;let n=e=>{let r=(t[e.id]?.quotas||[]).map(e=>e.resetAt?new Date(e.resetAt).getTime():1/0).filter(e=>Number.isFinite(e));return r.length>0?Math.min(...r):1/0};return[...e].sort((e,t)=>{let r=n(e)-n(t);return 0!==r?r:(e.provider||"").localeCompare(t.provider||"")||(k(e)||"").localeCompare(k(t)||"")})})(e,r,eg,el,ep),[e,r,eg,el,ep]),e8=(0,s.useMemo)(()=>{let e;return e=new Map,e4.forEach(t=>{t.provider&&(e.has(t.provider)||e.set(t.provider,[]),e.get(t.provider).push(t))}),[...e.entries()].map(([e,t])=>(function(e,t,r,a,s){if(!t.length)return null;let n=[],i=[],l=null,o=!1;return t.forEach(e=>{let t=r[e.id];Array.isArray(t?.quotas)&&n.push(...t.quotas),t?.message&&!l&&(l=t.message),s[e.id]&&i.push(s[e.id]),a[e.id]&&(o=!0)}),{id:`${e}-aggregate`,provider:e,name:w(e),email:`${t.length} accounts`,isActive:t.some(e=>e.isActive??!0),isAggregate:!0,quota:{quotas:function(e=[]){let t=new Map;return e.forEach(e=>{if(!e?.name)return;let r=t.get(e.name)||{name:e.name,used:0,total:0,resetAt:e.resetAt||null,remainingPercentage:null,unlimited:!1,_pctSum:0,_pctCount:0};r.used+=Number(e.used)||0,r.total+=Number(e.total)||0,!0===e.unlimited&&(r.unlimited=!0),null!=e.remainingPercentage&&Number.isFinite(Number(e.remainingPercentage))&&(r._pctSum+=Number(e.remainingPercentage),r._pctCount+=1),e.resetAt&&(!r.resetAt||new Date(e.resetAt).getTime()<new Date(r.resetAt).getTime())&&(r.resetAt=e.resetAt),t.set(e.name,r)}),[...t.values()].map(e=>{let{_pctSum:t,_pctCount:r,...a}=e;return a.unlimited?(a.remainingPercentage=100,a.total=0):a.total>0?a.remainingPercentage=(a.total-a.used)/a.total*100:r>0?a.remainingPercentage=t/r:a.remainingPercentage=0,a})}(n),message:0===n.length&&l||null},isLoading:o,error:!n.length&&i.length>0?i[0]:null,connectionIds:t.map(e=>e.id)}})(e,t,r,l,m)).filter(Boolean)},[e4,r,l,m]),e6=(0,s.useMemo)(()=>Object.keys(eS).length?e8.map(e=>{let t=eS[e.provider];return t&&t.quotas?.length?{...e,email:`${t.accountCount||e.connectionIds?.length||0} accounts`,quota:{...e.quota,quotas:t.quotas,message:null},isLoading:eP[e.provider]||!1}:e}):e8,[e8,eS,eP]),e9=(0,s.useMemo)(()=>"bulk"===eu?e6:e4,[eu,e6,e4]),e7=e=>{let t=r[e.id]?.quotas;return!!t?.length&&t.some(e=>!!e.total&&!(e.total<=0)&&5>=o(e.used,e.total))},te=(0,s.useCallback)(async(e,t)=>{if(e.length&&!e$){eC(!0),B(null);try{let r=(await Promise.all(e.map(e=>fetch(`/api/providers/${e}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:t})})))).filter(e=>!e.ok).length;await C(eJ,eM),r>0&&B({type:"error",message:`Failed to update ${r} of ${e.length} connections`})}catch(e){console.error("Error bulk toggling connections:",e),await C(eJ,eM),B({type:"error",message:e.message||"Failed to update connections"})}finally{eC(!1)}}},[e$,eJ,eM]),tt="all"===el?"All providers":el,tr=eI.eligibleConnections>0,ta=(0,s.useCallback)(async()=>{U(!0);let e=await eJ(eM);if(U(!1),!e.length)return;u(N(e)),i(t=>$(t,e));let t=await Promise.all(e.map(e=>eW(e.id,e.provider)));F(e=>t.reduce((e,t)=>y(e,t?.fetchedAt),e))},[eJ,eW,eM]),ts=e9.length>0,tn=eI.eligibleConnections?eI.providerFilteredConnections?{icon:"filter_alt_off",title:"No Accounts On This Page",description:"Try moving to another page or refreshing the current filters."}:{icon:"filter_alt_off",title:"No Accounts Match Current Filters",description:"all"===el?"Try changing the account status filter to see more quota trackers.":`No ${"inactive"===ex?"turned off":"active"===ex?"active":"matching"} accounts found for ${el}.`}:{icon:"cloud_off",title:"No Providers Connected",description:"Connect to providers with OAuth to track your API quota limits and usage."},ti=function(e){var t;let{start:r,end:a}=(t=e).total?{start:(t.page-1)*t.pageSize+1,end:Math.min(t.page*t.pageSize,t.total)}:{start:0,end:0};return`Showing ${r}-${a} of ${e.total}`}(eO),tl=!E.includes(ez);return I&&!e.length?(0,a.jsx)("div",{role:"status","aria-label":"Loading quota accounts",className:"grid grid-cols-1 gap-3 md:grid-cols-2",children:Array.from({length:4},(e,t)=>(0,a.jsx)(f.Qv,{},t))}):I||tr?(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsx)(f.i5,{label:"Quota filters and actions",className:ev?"relative z-50":"relative",children:(0,a.jsxs)("div",{className:"grid w-full grid-cols-[minmax(0,1fr)_minmax(0,1fr)_2.75rem] gap-2 sm:flex sm:w-auto sm:flex-wrap sm:items-center sm:gap-1.5",children:[(0,a.jsxs)("div",{className:"relative min-w-0",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>ey(e=>!e),className:"flex h-11 w-full min-w-0 items-center justify-between gap-1 rounded-xl border border-black/10 bg-black/[0.02] px-3 text-xs text-text-primary transition-colors hover:bg-black/5 dark:border-white/10 dark:bg-white/[0.03] dark:hover:bg-white/10 sm:h-8 sm:w-auto sm:rounded-lg sm:px-2","aria-haspopup":"menu","aria-expanded":ev,title:"Filter quota providers",children:[(0,a.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:["all"===el?(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"apps"}):(0,a.jsx)(n.A,{src:`/providers/${el}.png`,alt:el,size:18,className:"size-[18px] rounded object-contain",fallbackText:el.slice(0,2).toUpperCase()}),(0,a.jsx)("span",{className:"truncate capitalize",children:tt})]}),(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"expand_more"})]}),ev&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("button",{type:"button",className:"fixed inset-0 z-30 bg-transparent","aria-label":"Close provider filter",onClick:()=>ey(!1)}),(0,a.jsxs)("div",{className:"absolute left-0 z-40 mt-2 w-64 overflow-hidden rounded-2xl border border-black/10 bg-surface/95 p-1.5 shadow-xl shadow-black/10 backdrop-blur dark:border-white/10 dark:bg-surface/95 sm:w-72",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>{"all"!==el&&eF(1),eo("all"),ey(!1)},className:`flex w-full items-center gap-3 rounded-xl px-3 py-2.5 text-left text-sm transition-colors ${"all"===el?"bg-primary/10 text-primary":"text-text-primary hover:bg-black/5 dark:hover:bg-white/10"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[22px]",children:"apps"}),(0,a.jsx)("span",{className:"font-medium",children:"All providers"}),"all"===el&&(0,a.jsx)("span",{className:"material-symbols-outlined ml-auto text-[20px]",children:"check"})]}),(0,a.jsx)("div",{className:"my-1 h-px bg-black/10 dark:bg-white/10"}),(0,a.jsx)("div",{className:"max-h-72 overflow-y-auto pr-1",children:ec.map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>{el!==e&&eF(1),eo(e),ey(!1)},className:`flex w-full items-center gap-3 rounded-xl px-3 py-2.5 text-left text-sm transition-colors ${el===e?"bg-primary/10 text-primary":"text-text-primary hover:bg-black/5 dark:hover:bg-white/10"}`,children:[(0,a.jsx)(n.A,{src:`/providers/${e}.png`,alt:e,size:24,className:"size-6 rounded-md object-contain",fallbackText:e.slice(0,2).toUpperCase()}),(0,a.jsx)("span",{className:"font-medium capitalize",children:e}),el===e&&(0,a.jsx)("span",{className:"material-symbols-outlined ml-auto text-[20px]",children:"check"})]},e))})]})]})]}),(0,a.jsx)("select",{value:ex,onChange:e=>{let t=e.target.value;ex!==t&&eF(1),eh(t)},className:"h-11 min-w-0 rounded-xl border border-black/10 bg-black/[0.02] px-3 text-xs text-text-primary outline-none transition-colors hover:bg-black/5 dark:border-white/10 dark:bg-white/[0.03] dark:hover:bg-white/10 sm:h-8 sm:rounded-lg sm:px-2","aria-label":"Filter accounts by status",children:A.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))}),(0,a.jsx)("button",{type:"button",onClick:e5,disabled:D,className:"flex size-11 shrink-0 items-center justify-center rounded-xl border border-black/10 text-xs text-text-primary transition-colors hover:bg-black/5 disabled:opacity-50 dark:border-white/10 dark:hover:bg-white/5 sm:size-8 sm:rounded-lg",title:"Refresh all","aria-label":"Refresh all quotas",children:(0,a.jsx)("span",{className:`material-symbols-outlined text-[18px] sm:text-[14px] ${D?"animate-spin":""}`,children:"refresh"})}),(0,a.jsx)("div",{className:"col-span-2 inline-flex min-h-11 min-w-0 overflow-hidden rounded-xl border border-black/10 bg-black/[0.02] dark:border-white/10 dark:bg-white/[0.03] sm:h-8 sm:min-h-0 sm:rounded-lg",children:P.map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>em(e.value),"aria-pressed":eu===e.value,className:`flex min-h-11 flex-1 items-center justify-center gap-1.5 px-3 text-xs font-medium transition-colors sm:min-h-0 sm:flex-none sm:justify-start sm:px-2 sm:font-normal ${eu===e.value?"bg-primary text-white":"text-text-primary hover:bg-black/5 dark:hover:bg-white/10"}`,title:`Show quota in ${e.label} mode`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[17px] sm:text-[14px]",children:e.icon}),(0,a.jsx)("span",{children:e.label})]},e.value))}),(0,a.jsx)("button",{type:"button",onClick:()=>ej(e=>!e),"aria-expanded":ek,className:`flex size-11 items-center justify-center rounded-xl border text-text-primary transition-colors sm:hidden ${ek?"border-primary/30 bg-primary/10 text-primary":"border-black/10 hover:bg-black/5 dark:border-white/10 dark:hover:bg-white/5"}`,"aria-label":ek?"Hide more actions":"Show more actions",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"tune"})}),(0,a.jsxs)("div",{className:`${ek?"flex":"hidden"} col-span-3 flex-col gap-2 rounded-2xl border border-black/10 bg-black/[0.02] p-3 dark:border-white/10 dark:bg-white/[0.03] sm:contents`,children:["codex"===el&&(0,a.jsx)("select",{value:ep,onChange:e=>eb(e.target.value),className:"h-11 w-full rounded-xl border border-black/10 bg-surface px-3 text-xs text-text-primary outline-none transition-colors hover:bg-black/5 dark:border-white/10 dark:hover:bg-white/10 sm:h-8 sm:w-auto sm:rounded-lg sm:bg-black/[0.02] sm:px-2 dark:sm:bg-white/[0.03]","aria-label":"Sort Codex quotas by remaining",children:q.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))}),(0,a.jsxs)("button",{type:"button",onClick:()=>ef(e=>!e),"aria-pressed":eg,className:`flex h-11 w-full shrink-0 items-center justify-between gap-2 rounded-xl border px-3 text-xs transition-colors sm:h-8 sm:w-auto sm:justify-start sm:rounded-lg sm:px-2 ${eg?"border-amber-500/40 bg-amber-500/10 text-amber-600 dark:text-amber-400":"border-black/10 bg-surface text-text-primary hover:bg-black/5 dark:border-white/10 dark:bg-transparent dark:hover:bg-white/5"}`,title:"Sort accounts by earliest quota reset time",children:[(0,a.jsxs)("span",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] sm:text-[14px]",children:"hourglass_top"}),(0,a.jsx)("span",{children:"Expiring first"})]}),(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] sm:hidden",children:eg?"check_circle":"circle"})]}),(0,a.jsxs)("button",{type:"button",onClick:()=>{te(e4.filter(e=>(e.isActive??!0)&&e7(e)).map(e=>e.id),!1)},disabled:e$,className:"flex h-11 w-full shrink-0 items-center gap-2 rounded-xl border border-red-500/30 bg-surface px-3 text-xs text-red-500 transition-colors hover:bg-red-500/10 disabled:opacity-50 dark:bg-transparent sm:h-8 sm:w-auto sm:rounded-lg sm:px-2",title:"Disable connections with depleted quota on the current page",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] sm:text-[14px]",children:"block"}),(0,a.jsx)("span",{children:"Turn off Empty"})]}),(0,a.jsxs)("button",{type:"button",onClick:()=>{te(e4.filter(e=>!(e.isActive??!0)&&!e7(e)).map(e=>e.id),!0)},disabled:e$,className:"flex h-11 w-full shrink-0 items-center gap-2 rounded-xl border border-emerald-500/30 bg-surface px-3 text-xs text-emerald-600 transition-colors hover:bg-emerald-500/10 disabled:opacity-50 dark:bg-transparent dark:text-emerald-400 sm:h-8 sm:w-auto sm:rounded-lg sm:px-2",title:"Enable connections that still have quota on the current page",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px] sm:text-[14px]",children:"check_circle"}),(0,a.jsx)("span",{children:"Turn on Available"})]}),(0,a.jsxs)("button",{type:"button",onClick:()=>T(e=>!e),className:"flex h-11 w-full shrink-0 items-center justify-between gap-2 rounded-xl border border-black/10 bg-surface px-3 text-xs transition-colors hover:bg-black/5 dark:border-white/10 dark:bg-transparent dark:hover:bg-white/5 sm:h-8 sm:w-auto sm:justify-start sm:rounded-lg sm:px-2",title:h?"Disable auto-refresh":"Enable auto-refresh",children:[(0,a.jsxs)("span",{className:"flex items-center gap-2 text-text-primary",children:[(0,a.jsx)("span",{className:`material-symbols-outlined text-[18px] sm:text-[14px] ${h?"text-primary":"text-text-muted"}`,children:h?"toggle_on":"toggle_off"}),(0,a.jsx)("span",{children:"Auto-refresh"})]}),h&&(0,a.jsxs)("span",{className:"text-[10px] text-text-muted tabular-nums",children:["(",O,"s)"]})]})]})]})}),H&&(0,a.jsx)(f.Gi,{tone:H.type||"error",action:(0,a.jsx)("button",{type:"button",onClick:()=>B(null),"aria-label":"Dismiss",className:"grid size-9 place-items-center rounded-lg hover:bg-current/10",children:(0,a.jsx)("span",{"aria-hidden":"true",className:"material-symbols-outlined text-[16px]",children:"close"})}),children:H.message}),!I&&K&&(0,a.jsxs)(f.Gi,{tone:"warning",title:"Provider refresh interrupted",action:(0,a.jsx)(f.$n,{variant:"secondary",size:"sm",onClick:ta,children:"Retry"}),children:["Existing account and quota data remain visible. ",K]}),"bulk"===eu&&Object.values(eE).some(Boolean)&&(0,a.jsx)(f.Gi,{tone:"warning",children:"Couldn't load server-side totals for some providers — bulk cards show data for the current page only."}),ts?(0,a.jsxs)(a.Fragment,{children:[eg&&(0,a.jsx)("div",{className:"rounded-xl border border-amber-500/20 bg-amber-500/10 px-3 py-2 text-xs text-amber-700 dark:text-amber-300",children:"Expiring-first currently reorders accounts inside the current page. Cross-page ordering still follows backend pagination."}),(0,a.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:e9.map(e=>{let t,s,i,o,d=!0===e.isAggregate,u=d?e.quota:r[e.id],x=d?e.isLoading:l[e.id],h=d?e.error:m[e.id],v=u?.quotas||[],y=!0===ew[e.id],j=y?v:function(e,t=3){return e.map((e,t)=>({quota:e,index:t})).sort((e,t)=>{let r=c(e.quota)-c(t.quota);if(0!==r)return r;let a=e.quota.resetAt?new Date(e.quota.resetAt).getTime():1/0,s=t.quota.resetAt?new Date(t.quota.resetAt).getTime():1/0;return a!==s?a-s:e.index-t.index}).slice(0,t).map(({quota:e})=>e)}(v),N=!1===e.isActive,$=!d&&(G===e.id||W===e.id),C=d?0:Number.isFinite(t=Number(u?.raw?.resetCredits?.availableCount))?Math.max(0,t):0;return(0,a.jsxs)(g.default,{padding:"none",className:`min-w-0 ${N?"opacity-60":""}`,children:[(0,a.jsx)("div",{className:"border-b border-black/10 px-3 py-2 dark:border-white/10",children:(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,a.jsx)("div",{className:"w-8 h-8 shrink-0 rounded-md flex items-center justify-center overflow-hidden",children:(0,a.jsx)(n.A,{src:`/providers/${e.provider}.png`,alt:e.provider,size:32,className:"object-contain",fallbackText:e.provider?.slice(0,2).toUpperCase()||"PR"})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsx)("h3",{className:"text-sm font-semibold text-text-primary capitalize truncate",children:e.name||w(e.provider)}),k(e)?(0,a.jsx)("p",{className:"text-xs text-text-muted truncate",children:k(e)}):null,!d&&(s=String(e.authType||"").toLowerCase(),i=e.providerSpecificData?.region||e.providerSpecificData?.aiRegion||null,o=[],"apikey"===s||"api_key"===s?o.push({t:"API Key",c:"bg-blue-500/10 text-blue-500"}):("oauth"===s||"access_token"===s)&&o.push({t:"OAuth",c:"bg-violet-500/10 text-violet-500"}),i&&o.push({t:i,c:"bg-slate-500/10 text-text-muted"}),o.push(!1===e.isActive?{t:"paused",c:"bg-amber-500/10 text-amber-500"}:{t:"active",c:"bg-emerald-500/10 text-emerald-500"}),(0,a.jsx)("div",{className:"mt-1 flex flex-wrap items-center gap-1",children:o.map((e,t)=>(0,a.jsx)("span",{className:`rounded px-1.5 py-0.5 text-[10px] font-medium ${e.c}`,children:e.t},t))}))]})]}),(0,a.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5 sm:gap-1",children:[!d&&"codex"===e.provider&&(0,a.jsxs)("button",{type:"button",onClick:()=>er({connection:e,count:C}),disabled:C<=0||$||ea===e.id,"aria-label":"Use one Codex reset credit",className:"flex h-11 items-center gap-1 rounded-xl px-2 text-amber-600 transition-colors hover:bg-amber-500/10 disabled:cursor-not-allowed disabled:opacity-40 dark:text-amber-400 sm:h-8 sm:rounded-lg",title:C>0?"Use one reset credit":"No reset credits available",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"restart_alt"}),(0,a.jsx)("span",{className:"text-[10px] tabular-nums",children:C})]}),(0,a.jsx)("button",{type:"button",onClick:()=>d?eX(e.connectionIds,e.provider):eY(e.id,e.provider),disabled:x||$,"aria-label":"Refresh quota",className:"flex size-11 items-center justify-center rounded-xl transition-colors hover:bg-black/5 disabled:opacity-50 dark:hover:bg-white/5 sm:size-8 sm:rounded-lg",title:"Refresh quota",children:(0,a.jsx)("span",{className:`material-symbols-outlined text-[18px] text-text-muted ${x?"animate-spin":""}`,children:"refresh"})}),!d&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("button",{type:"button",onClick:()=>{ee(e),X(!0)},disabled:$,"aria-label":"Edit connection",className:"flex size-11 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary disabled:opacity-50 dark:hover:bg-white/5 sm:size-8 sm:rounded-lg",title:"Edit connection",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"})}),(0,a.jsx)("button",{type:"button",onClick:()=>eZ(e.id),disabled:$,"aria-label":"Delete connection",className:"flex size-11 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 disabled:opacity-50 sm:size-8 sm:rounded-lg",title:"Delete connection",children:(0,a.jsx)("span",{className:`material-symbols-outlined text-[18px] ${G===e.id?"animate-pulse":""}`,children:"delete"})}),(0,a.jsx)("div",{className:"inline-flex size-11 items-center justify-center sm:h-8 sm:w-auto sm:pl-0.5",title:e.isActive??!0?"Disable connection":"Enable connection",children:(0,a.jsx)(b.default,{size:"sm",touchTarget:!0,checked:e.isActive??!0,disabled:$,onChange:t=>e0(e.id,t)})})]})]})]})}),(0,a.jsx)("div",{className:"px-2 py-1.5",children:x?(0,a.jsx)("div",{className:"text-center py-5 text-text-muted",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[28px] animate-spin",children:"progress_activity"})}):h?(0,a.jsxs)("div",{className:"text-center py-5",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[28px] text-red-500",children:"error"}),(0,a.jsx)("p",{className:"mt-1.5 text-xs text-text-muted",children:h})]}):v.length>0?(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"sm:hidden",children:[(0,a.jsx)(p,{quotas:j,totalCount:v.length,paginate:!1,compact:!0,sortMode:"default",showSortLabel:"codex"===e.provider&&"default"!==ep}),v.length>3&&(0,a.jsxs)("button",{type:"button",onClick:()=>eN(t=>({...t,[e.id]:!y})),className:"mt-2 flex h-11 w-full items-center justify-center gap-1.5 rounded-xl border border-black/10 bg-black/[0.02] text-xs font-medium text-text-primary transition-colors hover:bg-black/5 dark:border-white/10 dark:bg-white/[0.03] dark:hover:bg-white/5","aria-expanded":y,children:[(0,a.jsx)("span",{children:y?"Show less":`Show ${v.length-j.length} more`}),(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:y?"expand_less":"expand_more"})]})]}),(0,a.jsx)("div",{className:"hidden sm:block",children:(0,a.jsx)(p,{quotas:v,compact:!0,sortMode:"default",showSortLabel:"codex"===e.provider&&"default"!==ep})}),u?.message?(0,a.jsx)("p",{className:"px-1 text-[10px] text-text-muted",children:u.message}):null,u?.refreshError?(0,a.jsxs)(f.Gi,{tone:"warning",className:"px-2 py-1.5 text-[10px]",children:["Showing last successful quota; refresh failed: ",u.refreshError]}):null]}):u?.message?(0,a.jsx)("div",{className:"text-center py-5",children:(0,a.jsx)("p",{className:"text-xs text-text-muted",children:u.message})}):(0,a.jsx)("div",{className:"text-center py-5 text-text-muted",children:(0,a.jsx)("p",{className:"text-xs",children:"No quota data available"})})})]},e.id)})}),(0,a.jsx)("div",{className:"rounded-xl border border-black/10 bg-black/[0.02] px-3 py-2 dark:border-white/10 dark:bg-white/[0.03]",children:(0,a.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted",children:ti}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsxs)("select",{value:tl?"custom":String(ez),onChange:e=>{let t=e.target.value;if("custom"===t)return;let r=Number.parseInt(t,10);Number.isFinite(r)&&(eF(1),e_(r),eL(String(r)))},className:"h-11 rounded-xl border border-black/10 bg-black/[0.02] px-3 text-xs text-text-primary outline-none transition-colors hover:bg-black/5 dark:border-white/10 dark:bg-white/[0.03] dark:hover:bg-white/10 sm:h-8 sm:rounded-lg sm:px-2","aria-label":"Accounts per page",children:[E.map(e=>(0,a.jsxs)("option",{value:String(e),children:[e," / page"]},e)),(0,a.jsx)("option",{value:"custom",children:"Custom"})]}),(0,a.jsx)("input",{type:"number",min:"1",max:String(500),inputMode:"numeric",value:eD,onChange:e=>eL(e.target.value),onBlur:()=>{let e=Number.parseInt(eD,10);if(!Number.isFinite(e))return void eL(String(ez));let t=Math.min(500,Math.max(1,e));eF(1),e_(t),eL(String(t))},onKeyDown:e=>{if("Enter"!==e.key)return;let t=Number.parseInt(eD,10);if(!Number.isFinite(t))return void eL(String(ez));let r=Math.min(500,Math.max(1,t));eF(1),e_(r),eL(String(r))},className:"h-11 w-24 rounded-xl border border-black/10 bg-black/[0.02] px-3 text-xs text-text-primary outline-none transition-colors hover:bg-black/5 dark:border-white/10 dark:bg-white/[0.03] dark:hover:bg-white/10 sm:h-8 sm:w-20 sm:rounded-lg sm:px-2","aria-label":"Custom accounts per page",placeholder:"Custom"}),(0,a.jsxs)("span",{className:"text-xs text-text-muted",children:["Page ",eO.page," / ",eO.totalPages]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("button",{type:"button",onClick:()=>eF(1),disabled:eO.page<=1||I||D,className:"flex h-11 items-center rounded-xl border border-black/10 px-3 text-xs text-text-primary transition-colors hover:bg-black/5 disabled:cursor-not-allowed disabled:opacity-40 dark:border-white/10 dark:hover:bg-white/5 sm:h-8 sm:rounded-lg",children:"First Page"}),(0,a.jsx)("button",{type:"button",onClick:()=>eF(e=>Math.max(1,e-1)),disabled:eO.page<=1||I||D,className:"flex size-11 items-center justify-center rounded-xl border border-black/10 text-text-primary transition-colors hover:bg-black/5 disabled:cursor-not-allowed disabled:opacity-40 dark:border-white/10 dark:hover:bg-white/5 sm:size-8 sm:rounded-lg","aria-label":"Previous accounts page",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"chevron_left"})}),(0,a.jsx)("button",{type:"button",onClick:()=>eF(e=>Math.min(eO.totalPages,e+1)),disabled:eO.page>=eO.totalPages||I||D,className:"flex size-11 items-center justify-center rounded-xl border border-black/10 text-text-primary transition-colors hover:bg-black/5 disabled:cursor-not-allowed disabled:opacity-40 dark:border-white/10 dark:hover:bg-white/5 sm:size-8 sm:rounded-lg","aria-label":"Next accounts page",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"chevron_right"})}),(0,a.jsx)("button",{type:"button",onClick:()=>eF(eO.totalPages),disabled:eO.page>=eO.totalPages||I||D,className:"flex h-11 items-center rounded-xl border border-black/10 px-3 text-xs text-text-primary transition-colors hover:bg-black/5 disabled:cursor-not-allowed disabled:opacity-40 dark:border-white/10 dark:hover:bg-white/5 sm:h-8 sm:rounded-lg",children:"Last Page"})]})]})})]}):(0,a.jsx)(f.pp,{icon:tn.icon,title:tn.title,description:tn.description}),(0,a.jsx)(f.wI,{isOpen:V,connection:Z,proxyPools:en,onSave:e1,onClose:()=>{X(!1),ee(null)}}),(0,a.jsx)(f.uo,{isOpen:!!et,onClose:()=>er(null),onConfirm:eG,title:"Use Codex Reset Credit",message:`Use 1 reset credit for ${k(et?.connection||{})||"this Codex account"}? This permanently spends one credit and cannot be undone. Available: ${et?.count??0}.`,confirmText:"Use 1 Credit",variant:"danger",loading:!!(et?.connection?.id&&ea===et.connection.id)})]}):K?(0,a.jsx)(f.Gi,{tone:"error",title:"Failed to load providers",action:(0,a.jsx)(f.$n,{variant:"secondary",size:"sm",icon:"refresh",onClick:ta,children:"Retry"}),children:K}):(0,a.jsx)(f.pp,{icon:"cloud_off",title:"No Providers Connected",description:"Connect to providers with OAuth to track your API quota limits and usage."})}}},e=>{e.O(0,[2574,3862,3745,3339,620,5497,8441,3794,7358],()=>e(e.s=5498)),_N_E=e.O()}]);
|