omniroute 2.5.0 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -0
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +46 -45
- package/app/.next/build-manifest.json +3 -3
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/required-server-files.json +1 -1
- package/app/.next/routes-manifest.json +6 -0
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/agents/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/agents/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +4 -4
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/media/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/.well-known/agent.json/route.js +1 -1
- package/app/.next/server/app/.well-known/agent.json/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/400/page.js +2 -2
- package/app/.next/server/app/400/page.js.nft.json +1 -1
- package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page.js +2 -2
- package/app/.next/server/app/401/page.js.nft.json +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page.js +2 -2
- package/app/.next/server/app/403/page.js.nft.json +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page.js +2 -2
- package/app/.next/server/app/408/page.js.nft.json +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page.js +2 -2
- package/app/.next/server/app/429/page.js.nft.json +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page.js +2 -2
- package/app/.next/server/app/500/page.js.nft.json +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page.js +2 -2
- package/app/.next/server/app/502/page.js.nft.json +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/page.js +2 -2
- package/app/.next/server/app/503/page.js.nft.json +1 -1
- package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page.js +3 -3
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +2 -2
- package/app/.next/server/app/_global-error.rsc +5 -5
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +5 -5
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +4 -4
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page.js +2 -2
- package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/a2a/route.js +2 -2
- package/app/.next/server/app/a2a/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/a2a/status/route.js +1 -1
- package/app/.next/server/app/api/a2a/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/a2a/tasks/[id]/cancel/route.js +1 -1
- package/app/.next/server/app/api/a2a/tasks/[id]/cancel/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/a2a/tasks/[id]/route.js +1 -1
- package/app/.next/server/app/api/a2a/tasks/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/a2a/tasks/route.js +1 -1
- package/app/.next/server/app/api/a2a/tasks/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/acp/agents/route.js +1 -1
- package/app/.next/server/app/api/acp/agents/route.js.nft.json +1 -1
- package/app/.next/server/app/api/acp/agents/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/login/route.js +1 -1
- package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/logout/route.js +1 -1
- package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/status/route.js +1 -1
- package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cache/route.js +1 -1
- package/app/.next/server/app/api/cache/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cache/stats/route.js +1 -1
- package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/status/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/auto/route.js +1 -1
- package/app/.next/server/app/api/combos/auto/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/metrics/route.js +1 -1
- package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/route.js +1 -1
- package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/test/route.js +1 -1
- package/app/.next/server/app/api/combos/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/compliance/audit-log/route.js +1 -1
- package/app/.next/server/app/api/compliance/audit-log/route.js.nft.json +1 -1
- package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/export/route.js +1 -1
- package/app/.next/server/app/api/db-backups/export/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/exportAll/route.js +1 -1
- package/app/.next/server/app/api/db-backups/exportAll/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/import/route.js +1 -1
- package/app/.next/server/app/api/db-backups/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/route.js +1 -1
- package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route.js +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/route.js +1 -1
- package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/fallback/chains/route.js +2 -2
- package/app/.next/server/app/api/fallback/chains/route.js.nft.json +1 -1
- package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/init/route.js +1 -1
- package/app/.next/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/route.js +1 -1
- package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/logs/console/route.js +1 -1
- package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/audit/route.js +2 -2
- package/app/.next/server/app/api/mcp/audit/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/audit/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/audit/stats/route.js +2 -2
- package/app/.next/server/app/api/mcp/audit/stats/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/audit/stats/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/sse/route.js +1 -1
- package/app/.next/server/app/api/mcp/sse/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/sse/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/status/route.js +1 -1
- package/app/.next/server/app/api/mcp/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/stream/route.js +1 -1
- package/app/.next/server/app/api/mcp/stream/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/stream/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/tools/route.js +1 -1
- package/app/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/availability/route.js +1 -1
- package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/catalog/route.js +1 -1
- package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/openrouter-catalog/route.js +1 -1
- package/app/.next/server/app/api/models/openrouter-catalog/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/openrouter-catalog/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/route.js +1 -1
- package/app/.next/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/monitoring/health/route.js +1 -1
- package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/policies/route.js +2 -2
- package/app/.next/server/app/api/policies/route.js.nft.json +1 -1
- package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/defaults/route.js +1 -1
- package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/models/route.js +1 -1
- package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/route.js +1 -1
- package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/sync/route.js +1 -1
- package/app/.next/server/app/api/pricing/sync/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/sync/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-metrics/route.js +2 -2
- package/app/.next/server/app/api/provider-metrics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-models/route.js +1 -1
- package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js +2 -2
- package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/refresh/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/refresh/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/refresh/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/route.js +1 -1
- package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/validate/route.js +1 -1
- package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/rate-limit/route.js +1 -1
- package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/rate-limits/route.js +1 -1
- package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
- package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/resilience/reset/route.js +1 -1
- package/app/.next/server/app/api/resilience/reset/route.js.nft.json +1 -1
- package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/resilience/route.js +1 -1
- package/app/.next/server/app/api/resilience/route.js.nft.json +1 -1
- package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/restart/route.js +1 -1
- package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sessions/route.js +1 -1
- package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/background-degradation/route.js +1 -1
- package/app/.next/server/app/api/settings/background-degradation/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/background-degradation/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/codex-service-tier/route.js +1 -0
- package/app/.next/server/app/api/settings/codex-service-tier/route.js.nft.json +1 -0
- package/app/.next/server/app/api/settings/codex-service-tier/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/settings/combo-defaults/route.js +1 -1
- package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/ip-filter/route.js +1 -1
- package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/model-aliases/route.js +1 -1
- package/app/.next/server/app/api/settings/model-aliases/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/model-aliases/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/proxy/route.js +1 -1
- package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/proxy/test/route.js +1 -1
- package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/route.js +1 -1
- package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route.js +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/task-routing/route.js +1 -1
- package/app/.next/server/app/api/settings/task-routing/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/task-routing/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route.js +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/shutdown/route.js +1 -1
- package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/storage/health/route.js +1 -1
- package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/cloud/route.js +1 -1
- package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/initialize/route.js +1 -1
- package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tags/route.js +1 -1
- package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/telemetry/summary/route.js +1 -1
- package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/token-health/route.js +1 -1
- package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/detect/route.js +1 -1
- package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/history/route.js +1 -1
- package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/load/route.js +1 -1
- package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/save/route.js +1 -1
- package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/analytics/route.js +1 -1
- package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/budget/route.js +2 -2
- package/app/.next/server/app/api/usage/budget/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/[id]/route.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/route.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/history/route.js +1 -1
- package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/logs/route.js +1 -1
- package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/proxy-logs/route.js +1 -1
- package/app/.next/server/app/api/usage/proxy-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/quota/route.js +1 -1
- package/app/.next/server/app/api/usage/quota/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/quota/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/models/route.js +1 -1
- package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/moderations/route.js +1 -1
- package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/music/generations/route.js +1 -1
- package/app/.next/server/app/api/v1/music/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/music/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/rerank/route.js +1 -1
- package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/route.js +1 -1
- package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route.js +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page.js +2 -2
- package/app/.next/server/app/callback/page.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page.js +3 -3
- package/app/.next/server/app/docs/page.js.nft.json +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page.js +2 -2
- package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page.js +2 -2
- package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page.js +2 -2
- package/app/.next/server/app/landing/page.js.nft.json +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page.js +2 -2
- package/app/.next/server/app/login/page.js.nft.json +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page.js +2 -2
- package/app/.next/server/app/maintenance/page.js.nft.json +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page.js +2 -2
- package/app/.next/server/app/offline/page.js.nft.json +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page.js +2 -2
- package/app/.next/server/app/page.js.nft.json +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page.js +2 -2
- package/app/.next/server/app/privacy/page.js.nft.json +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page.js +2 -2
- package/app/.next/server/app/status/page.js.nft.json +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page.js +2 -2
- package/app/.next/server/app/terms/page.js.nft.json +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +46 -45
- package/app/.next/server/chunks/242.js +1 -1
- package/app/.next/server/chunks/{7535.js → 2433.js} +2 -2
- package/app/.next/server/chunks/2910.js +1 -1
- package/app/.next/server/chunks/3596.js +1 -1
- package/app/.next/server/chunks/3648.js +2 -2
- package/app/.next/server/chunks/3831.js +117 -0
- package/app/.next/server/chunks/4335.js +1 -0
- package/app/.next/server/chunks/438.js +1 -1
- package/app/.next/server/chunks/4488.js +1 -1
- package/app/.next/server/chunks/4935.js +1 -1
- package/app/.next/server/chunks/5248.js +1 -0
- package/app/.next/server/chunks/5807.js +1 -0
- package/app/.next/server/chunks/5979.js +1 -1
- package/app/.next/server/chunks/6094.js +1 -1
- package/app/.next/server/chunks/6743.js +1 -1
- package/app/.next/server/chunks/7109.js +1 -1
- package/app/.next/server/chunks/7327.js +1 -1
- package/app/.next/server/chunks/7544.js +2 -118
- package/app/.next/server/chunks/7889.js +2 -0
- package/app/.next/server/chunks/8020.js +3 -3
- package/app/.next/server/chunks/8907.js +1 -1
- package/app/.next/server/chunks/9548.js +1 -1
- package/app/.next/server/chunks/9631.js +1 -1
- package/app/.next/server/instrumentation.js +1 -1
- package/app/.next/server/middleware-build-manifest.js +1 -1
- package/app/.next/server/middleware.js +2 -2
- package/app/.next/server/next-font-manifest.js +1 -1
- package/app/.next/server/next-font-manifest.json +1 -1
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/5846-6722250590122d8a.js +2 -0
- package/app/.next/static/chunks/{647-bf8bc535ac3648d0.js → 647-62acab8e8736396d.js} +2 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/a2a/page-43d6fa6b75cca497.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/agents/{page-576b27a05c09fba5.js → page-94aa33336637e74c.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-49ae846d72948391.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/{page-6ab7701da3357bb9.js → page-bef5c045e7eae657.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-71f65a8c11e24ee8.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-e5bf8955e7b9a4f5.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/auto-combo/{page-799e2f96e9af3fd9.js → page-fbf2315ef6ecc87a.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-1d9c62ff735ac65a.js +15 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-4e4d823fdc8705f5.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/{page-8f6233f59f5277e9.js → page-7a233357dfbd2e05.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-81a6632af8c82919.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/health/{page-1e1eb2f79d606ab2.js → page-66ee4e631429e0d8.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-5ace323bdf990976.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/{page-2d456b7ddbf3d41e.js → page-f08daa44ccbeb258.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/mcp/page-8e35334b9f393139.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media/page-4e1629fc8404b3b9.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/{page-5378e9473a20cd6a.js → page-d424641c7e428be9.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/{page-799001b6cea7d5bc.js → page-fc5b6d46662747df.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/playground/{page-0fff47edc56250ea.js → page-6d988d37ce3b0e60.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-b4a67f078e2d5f8a.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{error-a5ae03ba05400b04.js → error-0400f175dd1372fa.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/loading-9552383fd2e11282.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-d57908b59d4b482c.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{page-fbf74ae2f3206efe.js → page-adbd858f2a6cd352.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{error-ec9643134a96bbcd.js → error-c39d18f10fb7d3f6.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{loading-3519a633b514f31a.js → loading-b5faf05c78a2cc54.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-28ee6d0fc27b6ffe.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/pricing/{page-aab023f14c6ff966.js → page-0325206d05e6f375.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/{page-8d6f629e0e29e796.js → page-f761c3ff75d56636.js} +2 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-9e20463252daf023.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/{layout-7ae0c66c22bee8a1.js → layout-6d0afc53f5f2a538.js} +1 -1
- package/app/.next/static/chunks/app/.well-known/agent.json/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/400/layout-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/400/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
- package/app/.next/static/chunks/app/401/layout-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/401/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
- package/app/.next/static/chunks/app/403/layout-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/403/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
- package/app/.next/static/chunks/app/408/layout-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/408/{page-3b9079ea400ca287.js → page-3b77bf358909019a.js} +1 -1
- package/app/.next/static/chunks/app/429/layout-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/429/page-3b77bf358909019a.js +1 -0
- package/app/.next/static/chunks/app/500/layout-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/500/page-3b77bf358909019a.js +1 -0
- package/app/.next/static/chunks/app/502/layout-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/502/page-3b77bf358909019a.js +1 -0
- package/app/.next/static/chunks/app/503/layout-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/503/page-3b77bf358909019a.js +1 -0
- package/app/.next/static/chunks/app/_global-error/page-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/_not-found/page-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/a2a/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/a2a/status/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/a2a/tasks/[id]/cancel/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/a2a/tasks/[id]/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/a2a/tasks/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/acp/agents/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/auth/login/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/auth/logout/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/auth/status/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cache/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cache/stats/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/backups/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw/auto-order/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/status/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/auth/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/combos/[id]/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/combos/auto/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/combos/metrics/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/combos/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/combos/test/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/compliance/audit-log/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/export/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/exportAll/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/import/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/evals/[suiteId]/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/evals/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/fallback/chains/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/init/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/keys/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/logs/console/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/audit/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/audit/stats/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/sse/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/status/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/stream/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/tools/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/models/alias/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/models/availability/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/models/catalog/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/models/openrouter-catalog/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/models/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/monitoring/health/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/policies/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/defaults/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/models/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/sync/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/provider-metrics/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/provider-models/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/refresh/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/providers/client/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/providers/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/providers/test-batch/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/providers/validate/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/rate-limit/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/rate-limits/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/resilience/reset/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/resilience/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/restart/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/sessions/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/settings/background-degradation/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/settings/codex-service-tier/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/settings/combo-defaults/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/settings/ip-filter/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/settings/model-aliases/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy/test/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/settings/require-login/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/settings/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/settings/system-prompt/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/settings/task-routing/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/settings/thinking-budget/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/shutdown/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/storage/health/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/sync/cloud/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/sync/initialize/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/tags/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/telemetry/summary/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/token-health/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/translator/detect/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/translator/history/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/translator/load/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/translator/save/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/translator/send/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/translator/translate/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/usage/analytics/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/usage/budget/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/usage/call-logs/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/usage/history/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/usage/logs/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/usage/proxy-logs/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/usage/quota/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-logs/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/api/chat/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/completions/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/embeddings/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/images/generations/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/moderations/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/music/generations/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/rerank/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1/videos/generations/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/route-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/callback/{page-0f0ebc0820dd18a5.js → page-585a53f7dc6a30f1.js} +1 -1
- package/app/.next/static/chunks/app/docs/{page-dc88e0a01d291518.js → page-9624e5fb8cabf7d8.js} +1 -1
- package/app/.next/static/chunks/app/{error-32c03f14529d3920.js → error-f7f595c541537e63.js} +1 -1
- package/app/.next/static/chunks/app/forbidden/page-b33079c1573b0bfa.js +1 -0
- package/app/.next/static/chunks/app/forgot-password/page-90cd6259c75badfc.js +1 -0
- package/app/.next/static/chunks/app/global-error-1dfd1c91ad5199fe.js +1 -0
- package/app/.next/static/chunks/app/landing/page-90df98c27fe0b5d9.js +1 -0
- package/app/.next/static/chunks/app/{layout-070972eb026af319.js → layout-108592eafb959363.js} +1 -1
- package/app/.next/static/chunks/app/{loading-da2f6e1471afc070.js → loading-e063375d5b12a2f7.js} +1 -1
- package/app/.next/static/chunks/app/login/{page-26d717c652d56032.js → page-cf6b82187b09a701.js} +1 -1
- package/app/.next/static/chunks/app/maintenance/page-3b77bf358909019a.js +1 -0
- package/app/.next/static/chunks/app/not-found-511518956bcae7bc.js +1 -0
- package/app/.next/static/chunks/app/offline/page-9d6ea493783a0219.js +1 -0
- package/app/.next/static/chunks/app/page-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/app/privacy/{page-dc88e0a01d291518.js → page-9624e5fb8cabf7d8.js} +1 -1
- package/app/.next/static/chunks/app/status/page-4e5e9b5a513aa474.js +1 -0
- package/app/.next/static/chunks/app/terms/{page-dc88e0a01d291518.js → page-9624e5fb8cabf7d8.js} +1 -1
- package/app/.next/static/chunks/{main-app-ae230f6bf51a5edb.js → main-app-c9da11a8061df107.js} +1 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-ded42d031c158dd8.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ded42d031c158dd8.js +1 -0
- package/app/.next/static/css/{b02e1066800fe4d6.css → 14ede48bbc2cd561.css} +1 -1
- package/app/.next/static/whsp7HU8HFUikZQ7oSjYX/_buildManifest.js +1 -0
- package/app/package.json +1 -1
- package/app/server.js +1 -1
- package/package.json +1 -1
- package/app/.env +0 -122
- package/app/.next/server/chunks/1909.js +0 -2
- package/app/.next/server/chunks/7167.js +0 -1
- package/app/.next/static/M35Z_Bh-lQ1uO7hB_-bVc/_buildManifest.js +0 -1
- package/app/.next/static/chunks/5846-f92dd844022ac1b0.js +0 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/a2a/page-ed1f5b1ae0e01c02.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-6a2bb3ad980b05b9.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-8ee341b662a845dc.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-c9b98846b8479f3f.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-3c3f3b0b558e9302.js +0 -15
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-3ed193e882fc0438.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-8b96e2f6d76d6f2d.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-ddce876357cb3ada.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/mcp/page-d9b5c3282ec5d809.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media/page-5ed5bdc9e926936c.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-f9cc44c947796a9e.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/loading-7deaa9f550841465.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-3ef302da4b756e50.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-cbaa4b638a583fe9.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-8c8f2d59d0cbb516.js +0 -1
- package/app/.next/static/chunks/app/.well-known/agent.json/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/400/layout-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/401/layout-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/403/layout-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/408/layout-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/429/layout-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/429/page-3b9079ea400ca287.js +0 -1
- package/app/.next/static/chunks/app/500/layout-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/500/page-3b9079ea400ca287.js +0 -1
- package/app/.next/static/chunks/app/502/layout-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/502/page-3b9079ea400ca287.js +0 -1
- package/app/.next/static/chunks/app/503/layout-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/503/page-3b9079ea400ca287.js +0 -1
- package/app/.next/static/chunks/app/_global-error/page-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/_not-found/page-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/a2a/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/a2a/status/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/a2a/tasks/[id]/cancel/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/a2a/tasks/[id]/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/a2a/tasks/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/acp/agents/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/auth/login/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/auth/logout/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/auth/status/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cache/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cache/stats/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/backups/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/openclaw/auto-order/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/status/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/auth/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/combos/[id]/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/combos/auto/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/combos/metrics/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/combos/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/combos/test/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/compliance/audit-log/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/export/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/exportAll/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/import/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/evals/[suiteId]/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/evals/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/fallback/chains/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/init/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/keys/[id]/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/keys/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/logs/console/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/audit/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/audit/stats/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/sse/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/status/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/stream/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/tools/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/models/alias/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/models/availability/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/models/catalog/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/models/openrouter-catalog/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/models/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/monitoring/health/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/policies/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/defaults/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/models/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/sync/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/provider-metrics/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/provider-models/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/refresh/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/providers/client/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/providers/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/providers/test-batch/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/providers/validate/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/rate-limit/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/rate-limits/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/resilience/reset/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/resilience/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/restart/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/sessions/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/settings/background-degradation/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/settings/combo-defaults/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/settings/ip-filter/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/settings/model-aliases/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy/test/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/settings/require-login/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/settings/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/settings/system-prompt/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/settings/task-routing/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/settings/thinking-budget/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/shutdown/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/storage/health/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/sync/cloud/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/sync/initialize/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/tags/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/telemetry/summary/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/token-health/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/translator/detect/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/translator/history/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/translator/load/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/translator/save/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/translator/send/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/translator/translate/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/usage/analytics/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/usage/budget/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/usage/call-logs/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/usage/history/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/usage/logs/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/usage/proxy-logs/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/usage/quota/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-logs/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/api/chat/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/completions/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/embeddings/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/images/generations/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/moderations/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/music/generations/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/rerank/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1/videos/generations/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/route-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/forbidden/page-8d8e1709a1e32585.js +0 -1
- package/app/.next/static/chunks/app/forgot-password/page-d5c9b77748aa9deb.js +0 -1
- package/app/.next/static/chunks/app/global-error-5840b1caa830f2ec.js +0 -1
- package/app/.next/static/chunks/app/landing/page-8f652c1fbc33efd2.js +0 -1
- package/app/.next/static/chunks/app/maintenance/page-3b9079ea400ca287.js +0 -1
- package/app/.next/static/chunks/app/not-found-faf36d2a9a452506.js +0 -1
- package/app/.next/static/chunks/app/offline/page-bf68bf461af876a3.js +0 -1
- package/app/.next/static/chunks/app/page-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/app/status/page-29a433b40631ce12.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-1787cfdb0a81cffb.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-1787cfdb0a81cffb.js +0 -1
- package/app/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- /package/app/.next/static/{M35Z_Bh-lQ1uO7hB_-bVc → whsp7HU8HFUikZQ7oSjYX}/_ssgManifest.js +0 -0
package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-8ee341b662a845dc.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2888],{15534:(e,t,s)=>{Promise.resolve().then(s.bind(s,42712))},40993:(e,t,s)=>{"use strict";s.d(t,{Ex:()=>c.default,$n:()=>l.default,Zp:()=>i.default,Qv:()=>d.CardSkeleton,G9:()=>y.default,bQ:()=>k.default,pp:()=>N.default,Qn:()=>v.default,pd:()=>a.default,Mh:()=>g.default,uR:()=>p.default,aF:()=>n.default,rq:()=>m.default,LF:()=>x.default,KN:()=>b.default,Lo:()=>f.default,y7:()=>h.default,Iz:()=>j.default,l6:()=>r.default,lM:()=>o.default,cn:()=>u.default});var l=s(35806),a=s(34422),r=s(42994),i=s(81060),n=s(71361),d=s(92542);s(17705);var c=s(80927),o=s(19790);s(6261),s(55846),s(34243),s(89938),s(99023);var x=s(80178),m=s(85444),p=s(91961);s(25112);var u=s(45624),h=s(37415),b=s(48643),f=s(8287);s(1652);var g=s(92701);s(18150);var y=s(71689),j=s(33709);s(76332);var N=s(66200);s(61580);var v=s(51503);s(54128);var k=s(44638);s(21720),s(97050)},42712:(e,t,s)=>{"use strict";s.d(t,{default:()=>d});var l=s(95155),a=s(12115),r=s(40993),i=s(30949),n=s(50910);function d(){let e=(0,n.c)("apiManager"),t=(0,n.c)("common"),[s,d]=(0,a.useState)([]),[o,x]=(0,a.useState)([]),[m,p]=(0,a.useState)([]),[u,h]=(0,a.useState)(!0),[b,f]=(0,a.useState)(!1),[g,y]=(0,a.useState)(""),[j,N]=(0,a.useState)(null),[v,k]=(0,a.useState)(null),[w,C]=(0,a.useState)(!1),[S,_]=(0,a.useState)(""),[$,A]=(0,a.useState)(null),[M,R]=(0,a.useState)(!1),[D,K]=(0,a.useState)({}),{copied:T,copy:E}=(0,i.C)();(0,a.useEffect)(()=>{z(),O(),P()},[]);let O=async()=>{try{let e=await fetch("/v1/models");if(e.ok){let t=await e.json();x(t.data||[])}}catch(e){console.log("Error fetching models:",e)}},P=async()=>{try{let e=await fetch("/api/providers");if(e.ok){let t=await e.json();p(t.connections||[])}}catch(e){console.log("Error fetching connections:",e)}},z=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let t=await e.json();d(t.keys||[]),L(t.keys||[])}}catch(e){console.log("Error fetching keys:",e)}finally{h(!1)}},L=async e=>{if(0!==e.length)try{let t=await fetch("/api/usage/call-logs?limit=1000");if(!t.ok)return;let s=await t.json(),l={};for(let t of e){let e=(s||[]).filter(e=>e.apiKeyId===t.id||e.apiKeyName===t.name);l[t.id]={totalRequests:e.length,lastUsed:e.length>0?e.sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())[0]?.timestamp:null}}K(l)}catch(e){console.log("Error fetching usage stats:",e)}},F=(0,a.useCallback)(()=>A(null),[]),Z=async()=>{let t=g.replace(/[<>]/g,"").replace(/"/g,"").replace(/'/g,"").trim().slice(0,100),s=t&&t.trim()?t.length>100?{valid:!1,error:e("keyNameTooLong",{max:100})}:/^[a-zA-Z0-9_\-\s]+$/.test(t)?{valid:!0}:{valid:!1,error:e("keyNameInvalid")}:{valid:!1,error:e("keyNameRequired")};if(!s.valid)return void A(s.error||e("invalidKeyName"));R(!0),F();try{let s=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})}),l=await s.json();s.ok?(N(l.key),await z(),y(""),f(!1)):A(l.error||e("failedCreateKey"))}catch(t){console.error("Error creating key:",t),A(e("failedCreateKeyRetry"))}finally{R(!1)}},U=async t=>{if(!t||"string"!=typeof t||!/^[a-zA-Z0-9_-]+$/.test(t))return void A(e("invalidKeyId"));if(confirm(e("deleteConfirm"))){R(!0),F();try{let s=await fetch(`/api/keys/${encodeURIComponent(t)}`,{method:"DELETE"});if(s.ok)d(e=>e.filter(e=>e.id!==t));else{let t=await s.json();A(t.error||e("failedDeleteKey"))}}catch(t){console.error("Error deleting key:",t),A(e("failedDeleteKeyRetry"))}finally{R(!1)}}},q=e=>{e&&e.id&&(k(e),C(!0))},I=async(t,s,l,a,r,i)=>{if(!v||!v.id)return;if(!Array.isArray(t))return void A(e("invalidModelsSelection"));if(t.length>500)return void A(e("cannotSelectMoreThanModels",{max:500}));let n=t.filter(e=>"string"==typeof e&&e.length>0&&e.length<200),d=l.filter(e=>"string"==typeof e&&/^[0-9a-f-]{36}$/i.test(e));R(!0),F();try{let t=await fetch(`/api/keys/${encodeURIComponent(v.id)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({allowedModels:n,allowedConnections:d,noLog:s,autoResolve:a,isActive:r,accessSchedule:i})});if(t.ok)await z(),C(!1),k(null);else{let s=await t.json();A(s.error||e("failedUpdatePermissions"))}}catch(t){console.error("Error updating permissions:",t),A(e("failedUpdatePermissionsRetry"))}finally{R(!1)}},W=function(e,t){let[s,l]=(0,a.useState)(e);return(0,a.useEffect)(()=>{let t=setTimeout(()=>l(e),150);return()=>clearTimeout(t)},[e,150]),s}(S,0),Q=(0,a.useMemo)(()=>{let t={};for(let s of o){let l=s.owned_by||e("unknownProvider");t[l]||(t[l]=[]),t[l].push(s)}return Object.entries(t).sort((e,t)=>e[0].localeCompare(t[0]))},[o]),H=(0,a.useMemo)(()=>{if(!W.trim())return Q;let e=W.toLowerCase();return Q.map(([t,s])=>[t,s.filter(s=>s.id.toLowerCase().includes(e)||t.toLowerCase().includes(e))]).filter(([,e])=>e.length>0)},[Q,W]);return u?(0,l.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,l.jsx)(r.Qv,{}),(0,l.jsx)(r.Qv,{})]}):(0,l.jsxs)("div",{className:"flex flex-col gap-8",children:[$&&(0,l.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-red-500/10 border border-red-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-red-500",children:"error"}),(0,l.jsx)("p",{className:"text-sm text-red-700 dark:text-red-300 flex-1",children:$}),(0,l.jsx)("button",{onClick:F,className:"text-red-500 hover:text-red-700 transition-colors",children:(0,l.jsx)("span",{className:"material-symbols-outlined",children:"close"})})]}),s.length>0&&(0,l.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[(0,l.jsx)(r.Zp,{className:"p-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-9 rounded-lg bg-primary/10",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-primary text-lg",children:"vpn_key"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-2xl font-bold",children:s.length}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:e("totalKeys")})]})]})}),(0,l.jsx)(r.Zp,{className:"p-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-9 rounded-lg bg-amber-500/10",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-amber-500 text-lg",children:"lock"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-2xl font-bold",children:s.filter(e=>Array.isArray(e.allowedModels)&&e.allowedModels.length>0).length}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:e("restricted")})]})]})}),(0,l.jsx)(r.Zp,{className:"p-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-9 rounded-lg bg-blue-500/10",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-blue-500 text-lg",children:"bar_chart"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-2xl font-bold",children:Object.values(D).reduce((e,t)=>e+t.totalRequests,0)}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:e("totalRequests")})]})]})}),(0,l.jsx)(r.Zp,{className:"p-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-9 rounded-lg bg-emerald-500/10",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-emerald-500 text-lg",children:"model_training"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-2xl font-bold",children:o.length}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:e("modelsAvailable")})]})]})})]}),(0,l.jsx)(r.Zp,{children:(0,l.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-lg font-semibold",children:e("keyManagement")}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:e("keyManagementDesc")})]}),(0,l.jsx)(r.$n,{icon:"add",onClick:()=>f(!0),children:e("createKey")})]})}),(0,l.jsxs)(r.Zp,{children:[(0,l.jsx)("div",{className:"flex items-center justify-between mb-4",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-10 rounded-lg bg-amber-500/10 shrink-0",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-xl text-amber-500",children:"vpn_key"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("h3",{className:"font-semibold",children:e("registeredKeys")}),(0,l.jsxs)("p",{className:"text-xs text-text-muted",children:[s.length," ",1===s.length?e("keyRegistered",{count:s.length}):e("keysRegistered",{count:s.length})]})]})]})}),(0,l.jsx)("p",{className:"text-sm text-text-muted mb-4",children:e("keysSecurityNote")}),0===s.length?(0,l.jsxs)("div",{className:"text-center py-12 border border-dashed border-border rounded-lg",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:"vpn_key"})}),(0,l.jsx)("p",{className:"text-text-main font-medium mb-2",children:e("noKeys")}),(0,l.jsx)("p",{className:"text-sm text-text-muted mb-4",children:e("noKeysDesc")}),(0,l.jsx)(r.$n,{icon:"add",onClick:()=>f(!0),children:e("createFirstKey")})]}):(0,l.jsxs)("div",{className:"flex flex-col border border-border rounded-lg overflow-hidden",children:[(0,l.jsxs)("div",{className:"grid grid-cols-12 gap-4 px-4 py-3 bg-surface/50 border-b border-border text-xs font-semibold text-text-muted uppercase tracking-wider",children:[(0,l.jsx)("div",{className:"col-span-2",children:e("name")}),(0,l.jsx)("div",{className:"col-span-3",children:e("key")}),(0,l.jsx)("div",{className:"col-span-2",children:e("permissions")}),(0,l.jsx)("div",{className:"col-span-2",children:e("usage")}),(0,l.jsx)("div",{className:"col-span-1",children:e("created")}),(0,l.jsx)("div",{className:"col-span-2 text-right",children:e("actions")})]}),s.map(t=>{let s=D[t.id],a=Array.isArray(t.allowedModels)&&t.allowedModels.length>0,r=Array.isArray(t.allowedConnections)&&t.allowedConnections.length>0,i=!0===t.noLog,n=!1!==t.isActive,d=t.accessSchedule?.enabled===!0;return(0,l.jsxs)("div",{className:"grid grid-cols-12 gap-4 px-4 py-3 border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0 hover:bg-surface/30 transition-colors group",children:[(0,l.jsxs)("div",{className:"col-span-2 flex items-center gap-2",children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-sm ${a?"text-amber-500":"text-emerald-500"}`,children:a?"lock":"lock_open"}),(0,l.jsx)("span",{className:"text-sm font-medium truncate",title:t.name,children:t.name})]}),(0,l.jsxs)("div",{className:"col-span-3 flex items-center gap-1.5",children:[(0,l.jsx)("code",{className:"text-sm text-text-muted font-mono truncate",children:t.key}),(0,l.jsx)("button",{onClick:()=>E(t.key,t.id),className:"p-1 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-all shrink-0",title:e("copyMaskedKey"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:T===t.id?"check":"content_copy"})})]}),(0,l.jsx)("div",{className:"col-span-2 flex items-center",children:(0,l.jsxs)("div",{className:"flex flex-col items-start gap-1",children:[a?(0,l.jsxs)("button",{onClick:()=>q(t),className:"flex items-center gap-1.5 px-2 py-1 rounded-md bg-amber-500/10 text-amber-600 dark:text-amber-400 text-xs font-medium hover:bg-amber-500/20 transition-colors",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"lock"}),e("modelsCount",{count:t.allowedModels.length})]}):(0,l.jsxs)("button",{onClick:()=>q(t),className:"flex items-center gap-1.5 px-2 py-1 rounded-md bg-green-500/10 text-green-600 dark:text-green-400 text-xs font-medium hover:bg-green-500/20 transition-colors",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"lock_open"}),e("allModels")]}),r&&(0,l.jsxs)("button",{onClick:()=>q(t),className:"flex items-center gap-1.5 px-2 py-1 rounded-md bg-blue-500/10 text-blue-600 dark:text-blue-400 text-xs font-medium hover:bg-blue-500/20 transition-colors",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"cable"}),t.allowedConnections.length," conn"]}),i&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-violet-500/10 text-violet-600 dark:text-violet-400 text-[11px] font-medium",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"visibility_off"}),"No-Log"]}),t.autoResolve&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-cyan-500/10 text-cyan-600 dark:text-cyan-400 text-[11px] font-medium",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"auto_fix_high"}),"Auto-Resolve"]}),!n&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-red-500/10 text-red-600 dark:text-red-400 text-[11px] font-medium",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"block"}),e("disabled")]}),d&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-orange-500/10 text-orange-600 dark:text-orange-400 text-[11px] font-medium",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"schedule"}),e("scheduleActive")]})]})}),(0,l.jsxs)("div",{className:"col-span-2 flex flex-col justify-center",children:[(0,l.jsxs)("span",{className:"text-sm font-medium tabular-nums",children:[s?.totalRequests??0," ",(0,l.jsx)("span",{className:"text-text-muted font-normal text-xs",children:e("reqs")})]}),s?.lastUsed?(0,l.jsx)("span",{className:"text-[10px] text-text-muted",children:e("lastUsedOn",{date:new Date(s.lastUsed).toLocaleDateString()})}):(0,l.jsx)("span",{className:"text-[10px] text-text-muted italic",children:e("neverUsed")})]}),(0,l.jsx)("div",{className:"col-span-1 flex items-center text-sm text-text-muted",children:new Date(t.createdAt).toLocaleDateString()}),(0,l.jsxs)("div",{className:"col-span-2 flex items-center justify-end gap-1",children:[(0,l.jsx)("button",{onClick:()=>q(t),className:"p-2 hover:bg-primary/10 rounded text-text-muted hover:text-primary opacity-0 group-hover:opacity-100 transition-all",title:e("editPermissions"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tune"})}),(0,l.jsx)("button",{onClick:()=>U(t.id),className:"p-2 hover:bg-red-500/10 rounded text-red-500 opacity-0 group-hover:opacity-100 transition-all",title:e("deleteKey"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},t.id)})]})]}),(0,l.jsx)(r.Zp,{children:(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("div",{className:"flex items-center justify-center size-10 rounded-lg bg-blue-500/10 shrink-0",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-xl text-blue-500",children:"lightbulb"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("h3",{className:"font-semibold mb-2",children:e("usageTips")}),(0,l.jsxs)("ul",{className:"text-sm text-text-muted space-y-1.5",children:[(0,l.jsxs)("li",{className:"flex items-start gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-xs text-primary mt-1",children:"check"}),(0,l.jsx)("span",{children:e("tipAuth")})]}),(0,l.jsxs)("li",{className:"flex items-start gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-xs text-primary mt-1",children:"check"}),(0,l.jsx)("span",{children:e("tipSecure")})]}),(0,l.jsxs)("li",{className:"flex items-start gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-xs text-primary mt-1",children:"check"}),(0,l.jsx)("span",{children:e("tipSeparate")})]}),(0,l.jsxs)("li",{className:"flex items-start gap-2",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-xs text-primary mt-1",children:"check"}),(0,l.jsx)("span",{children:e("tipRestrict")})]})]})]})]})}),(0,l.jsx)(r.aF,{isOpen:b,title:e("createKey"),onClose:()=>{f(!1),y("")},children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-sm font-medium text-text-main mb-1.5 block",children:e("keyName")}),(0,l.jsx)(r.pd,{value:g,onChange:e=>y(e.target.value),placeholder:e("keyNamePlaceholder"),autoFocus:!0}),(0,l.jsx)("p",{className:"text-xs text-text-muted mt-1.5",children:e("keyNameDesc")})]}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(r.$n,{onClick:()=>{f(!1),y("")},variant:"ghost",fullWidth:!0,children:t("cancel")}),(0,l.jsx)(r.$n,{onClick:Z,fullWidth:!0,disabled:!g.trim(),children:e("createKey")})]})]})}),(0,l.jsx)(r.aF,{isOpen:!!j,title:e("keyCreated"),onClose:()=>N(null),children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 border border-green-200 dark:border-green-800 rounded-lg p-4",children:(0,l.jsxs)("div",{className:"flex items-start gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200 font-medium mb-1",children:e("keyCreatedSuccess")}),(0,l.jsx)("p",{className:"text-sm text-green-700 dark:text-green-300",children:e("keyCreatedNote")})]})]})}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(r.pd,{value:j||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,l.jsx)(r.$n,{variant:"secondary",icon:"created_key"===T?"check":"content_copy",onClick:()=>E(j,"created_key"),children:t("created_key"===T?"copied":"copy")})]}),(0,l.jsx)(r.$n,{onClick:()=>N(null),fullWidth:!0,children:e("done")})]})}),v&&(0,l.jsx)(c,{isOpen:w,onClose:()=>{C(!1),k(null)},apiKey:v,modelsByProvider:H,allModels:o,allConnections:m,searchModel:S,onSearchChange:_,onSave:I},v.id)]})}let c=(0,a.memo)(function({isOpen:e,onClose:t,apiKey:s,modelsByProvider:i,allModels:d,allConnections:c,searchModel:o,onSearchChange:x,onSave:m}){let p=(0,n.c)("apiManager"),u=(0,n.c)("common"),h=Array.isArray(s?.allowedModels)?s.allowedModels:[],b=Array.isArray(s?.allowedConnections)?s.allowedConnections:[],[f,g]=(0,a.useState)(h),[y,j]=(0,a.useState)(0===h.length),[N,v]=(0,a.useState)(s?.noLog===!0),[k,w]=(0,a.useState)(s?.autoResolve===!0),[C,S]=(0,a.useState)(s?.isActive!==!1),[_,$]=(0,a.useState)(s?.accessSchedule?.enabled===!0),[A,M]=(0,a.useState)(s?.accessSchedule?.from??"08:00"),[R,D]=(0,a.useState)(s?.accessSchedule?.until??"18:00"),[K,T]=(0,a.useState)(s?.accessSchedule?.days??[1,2,3,4,5]),[E,O]=(0,a.useState)(s?.accessSchedule?.tz??Intl.DateTimeFormat().resolvedOptions().timeZone),[P,z]=(0,a.useState)(b),[L,F]=(0,a.useState)(0===b.length),[Z,U]=(0,a.useState)(()=>h.length>0?new Set(i.map(([e])=>e)):new Set),q=(0,a.useCallback)(e=>{y||g(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[y]),I=(0,a.useCallback)((e,t)=>{if(y)return;let s=t.map(e=>e.id);g(e=>s.every(t=>e.includes(t))?e.filter(e=>!s.includes(e)):[...new Set([...e,...s])])},[y]),W=(0,a.useCallback)(()=>{j(!0),g([])},[]),Q=(0,a.useCallback)(()=>{j(!1),U(new Set(i.map(([e])=>e)))},[i]),H=(0,a.useCallback)(e=>{U(t=>{let s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},[]),J=(0,a.useCallback)(()=>{g(d.map(e=>e.id))},[d]),B=(0,a.useCallback)(()=>{g([])},[]),G=(0,a.useCallback)(e=>{L||z(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[L]),V=(0,a.useCallback)(()=>{m(y?[]:f,N,L?[]:P,k,C,_?{enabled:!0,from:A,until:R,days:K,tz:E}:null)},[m,y,f,N,L,P,k,C,_,A,R,K,E]),X=f.length,Y=d.length;return(0,l.jsx)(r.aF,{isOpen:!!t&&e,title:p("permissionsTitle",{name:s?.name||""}),onClose:t,children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex gap-2 p-1 bg-surface rounded-lg",children:[(0,l.jsxs)("button",{onClick:W,className:`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-sm font-medium transition-all ${y?"bg-primary text-white":"text-text-muted hover:bg-black/5 dark:hover:bg-white/5"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"lock_open"}),p("allowAll")]}),(0,l.jsxs)("button",{onClick:Q,className:`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-sm font-medium transition-all ${!y?"bg-primary text-white":"text-text-muted hover:bg-black/5 dark:hover:bg-white/5"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"lock"}),p("restrict")]})]}),(0,l.jsxs)("div",{className:`flex items-start gap-2 p-3 rounded-lg ${y?"bg-green-500/10 border border-green-500/30":"bg-amber-500/10 border border-amber-500/30"}`,children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-[18px] ${y?"text-green-500":"text-amber-500"}`,children:y?"info":"warning"}),(0,l.jsx)("p",{className:`text-xs ${y?"text-green-700 dark:text-green-300":"text-amber-700 dark:text-amber-300"}`,children:y?p("allowAllDesc"):p("restrictDesc",{selectedCount:X,totalModels:Y})})]}),(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 p-3 rounded-lg border border-border bg-surface/40",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("p",{className:"text-sm font-medium text-text-main",children:p("keyActive")}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:p("keyActiveDesc")})]}),(0,l.jsxs)("button",{type:"button",role:"switch","aria-checked":C,onClick:()=>S(e=>!e),className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-semibold transition-colors ${C?"bg-emerald-500/15 text-emerald-700 dark:text-emerald-300 border border-emerald-500/30":"bg-red-500/15 text-red-700 dark:text-red-300 border border-red-500/30"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:C?"check_circle":"block"}),u(C?"enabled":"disabled")]})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2 p-3 rounded-lg border border-border bg-surface/40",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("p",{className:"text-sm font-medium text-text-main",children:p("accessSchedule")}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:p("accessScheduleDesc")})]}),(0,l.jsxs)("button",{type:"button",role:"switch","aria-checked":_,onClick:()=>$(e=>!e),className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-semibold transition-colors shrink-0 ${_?"bg-orange-500/15 text-orange-700 dark:text-orange-300 border border-orange-500/30":"bg-black/5 dark:bg-white/5 text-text-muted border border-border"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"schedule"}),u(_?"enabled":"disabled")]})]}),_&&(0,l.jsxs)("div",{className:"flex flex-col gap-3 pt-1",children:[(0,l.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs text-text-muted mb-1 block",children:p("scheduleFrom")}),(0,l.jsx)("input",{type:"time",value:A,onChange:e=>M(e.target.value),className:"w-full px-2 py-1.5 text-sm border border-border rounded-md bg-background text-text-main"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs text-text-muted mb-1 block",children:p("scheduleUntil")}),(0,l.jsx)("input",{type:"time",value:R,onChange:e=>D(e.target.value),className:"w-full px-2 py-1.5 text-sm border border-border rounded-md bg-background text-text-main"})]})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs text-text-muted mb-1.5 block",children:p("scheduleDays")}),(0,l.jsx)("div",{className:"flex gap-1 flex-wrap",children:[[0,p("daySun")],[1,p("dayMon")],[2,p("dayTue")],[3,p("dayWed")],[4,p("dayThu")],[5,p("dayFri")],[6,p("daySat")]].map(([e,t])=>{let s=K.includes(e);return(0,l.jsx)("button",{type:"button",onClick:()=>T(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e].sort((e,t)=>e-t)),className:`px-2 py-1 text-[11px] font-medium rounded transition-all ${s?"bg-primary text-white":"bg-surface border border-border text-text-muted hover:border-primary/50"}`,children:t},e)})})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs text-text-muted mb-1 block",children:p("scheduleTimezone")}),(0,l.jsx)("input",{type:"text",value:E,onChange:e=>O(e.target.value),placeholder:"America/Sao_Paulo",className:"w-full px-2 py-1.5 text-sm border border-border rounded-md bg-background text-text-main font-mono"}),(0,l.jsx)("p",{className:"text-[10px] text-text-muted mt-1",children:p("scheduleTimezoneHint")})]})]})]}),(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 p-3 rounded-lg border border-border bg-surface/40",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("p",{className:"text-sm font-medium text-text-main",children:"No-Log Payload Privacy"}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:"Disable request/response payload persistence for this API key."})]}),(0,l.jsxs)("button",{type:"button",role:"switch","aria-checked":N,onClick:()=>v(e=>!e),className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-semibold transition-colors ${N?"bg-violet-500/15 text-violet-700 dark:text-violet-300 border border-violet-500/30":"bg-black/5 dark:bg-white/5 text-text-muted border border-border"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:N?"visibility_off":"visibility"}),u(N?"enabled":"disabled")]})]}),(0,l.jsxs)("div",{className:"flex items-start justify-between gap-3 p-3 rounded-lg border border-border bg-surface/40",children:[(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("p",{className:"text-sm font-medium text-text-main",children:p("autoResolve")}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:p("autoResolveDesc")})]}),(0,l.jsxs)("button",{type:"button",role:"switch","aria-checked":k,onClick:()=>w(e=>!e),className:`inline-flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-semibold transition-colors ${k?"bg-cyan-500/15 text-cyan-700 dark:text-cyan-300 border border-cyan-500/30":"bg-black/5 dark:bg-white/5 text-text-muted border border-border"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:k?"auto_fix_high":"auto_fix_normal"}),u(k?"enabled":"disabled")]})]}),!y&&X>0&&(0,l.jsxs)("div",{className:"flex flex-col gap-1.5 p-2 bg-primary/5 rounded-lg border border-primary/20",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("span",{className:"text-xs font-medium text-primary",children:p("selectedCount",{count:X})}),(0,l.jsxs)("div",{className:"flex gap-1",children:[(0,l.jsx)("button",{onClick:J,className:"text-[10px] text-primary hover:bg-primary/10 px-1.5 py-0.5 rounded transition-colors",children:u("all")}),(0,l.jsx)("button",{onClick:B,className:"text-[10px] text-red-500 hover:bg-red-500/10 px-1.5 py-0.5 rounded transition-colors",children:p("clear")})]})]}),(0,l.jsx)("div",{className:"flex flex-wrap gap-1 max-h-16 overflow-y-auto content-start",children:f.map(e=>(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 px-1.5 py-0.5 bg-white dark:bg-surface text-text-main text-[10px] rounded border border-border",children:[(0,l.jsx)("span",{className:"font-mono truncate max-w-[120px]",title:e,children:e}),(0,l.jsx)("button",{onClick:()=>q(e),className:"text-text-muted hover:text-red-500 transition-colors",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"close"})})]},e))})]}),!y&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"relative",children:[(0,l.jsx)(r.pd,{value:o,onChange:e=>x(e.target.value),placeholder:p("searchModels"),icon:"search"}),o&&(0,l.jsx)("button",{onClick:()=>x(""),className:"absolute right-3 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-main",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}),(0,l.jsx)("div",{className:"max-h-[280px] overflow-y-auto border border-border rounded-lg divide-y divide-border",children:0===i.length?(0,l.jsxs)("div",{className:"flex flex-col items-center justify-center py-6 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-2xl mb-1",children:"search_off"}),(0,l.jsx)("p",{className:"text-xs",children:p("noModelsFound")})]}):i.map(([e,t])=>{let s=f.filter(e=>t.some(t=>t.id===e)).length,a=t.every(e=>f.includes(e.id)),r=s>0&&!a;return(0,l.jsxs)("div",{className:"group",children:[(0,l.jsxs)("button",{onClick:()=>H(e),className:"w-full flex items-center gap-2 px-3 py-2 hover:bg-surface/50 transition-colors text-left",children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-base transition-transform duration-200 ${Z.has(e)?"rotate-90":""}`,children:"chevron_right"}),(0,l.jsxs)("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[(0,l.jsx)("div",{className:"relative flex items-center cursor-pointer shrink-0",onClick:s=>{s.stopPropagation(),I(e,t)},children:(0,l.jsxs)("div",{className:`w-4 h-4 rounded border-2 transition-colors flex items-center justify-center ${a?"bg-primary border-primary":r?"bg-primary/20 border-primary":"border-border hover:border-primary/50"}`,children:[a&&(0,l.jsx)("span",{className:"material-symbols-outlined text-white text-[12px]",children:"check"}),r&&!a&&(0,l.jsx)("span",{className:"material-symbols-outlined text-primary text-[12px]",children:"remove"})]})}),(0,l.jsx)("span",{className:"text-xs font-semibold text-text-main truncate",children:e}),(0,l.jsx)("span",{className:"text-[10px] text-text-muted bg-surface px-1 py-0.5 rounded shrink-0",children:t.length})]}),s>0&&(0,l.jsx)("span",{className:"text-[10px] font-medium text-primary bg-primary/10 px-1.5 py-0.5 rounded-full shrink-0",children:s})]}),Z.has(e)&&(0,l.jsx)("div",{className:"px-3 pb-2 pl-9",children:(0,l.jsx)("div",{className:"flex flex-wrap gap-1",children:t.map(e=>{let t=f.includes(e.id);return(0,l.jsx)("button",{onClick:()=>q(e.id),className:`inline-flex items-center gap-1 px-2 py-1 rounded-full text-[10px] font-mono transition-all ${t?"bg-primary text-white":"bg-surface border border-border text-text-muted hover:border-primary/50 hover:text-text-main"}`,title:e.id,children:e.id},e.id)})})})]},e)})})]}),c.length>0&&(0,l.jsxs)("div",{className:"flex flex-col gap-2 p-3 rounded-lg border border-border bg-surface/40",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("p",{className:"text-sm font-medium text-text-main",children:"Allowed Connections"}),(0,l.jsxs)("div",{className:"flex gap-1 p-0.5 bg-surface rounded-md",children:[(0,l.jsx)("button",{onClick:()=>{F(!0),z([])},className:`px-2 py-1 rounded text-xs font-medium transition-all ${L?"bg-primary text-white":"text-text-muted hover:bg-black/5 dark:hover:bg-white/5"}`,children:"All"}),(0,l.jsx)("button",{onClick:()=>F(!1),className:`px-2 py-1 rounded text-xs font-medium transition-all ${!L?"bg-primary text-white":"text-text-muted hover:bg-black/5 dark:hover:bg-white/5"}`,children:"Restrict"})]})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:L?"This key can use any active connection.":`Restricted to ${P.length} connection${1!==P.length?"s":""}.`}),!L&&(0,l.jsx)("div",{className:"flex flex-col gap-1 max-h-40 overflow-y-auto",children:Object.entries(c.reduce((e,t)=>{let s=t.provider||"Other";return e[s]||(e[s]=[]),e[s].push(t),e},{})).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-[10px] font-semibold text-text-muted uppercase tracking-wider px-1 py-0.5",children:e}),t.map(e=>{let t=P.includes(e.id);return(0,l.jsxs)("button",{onClick:()=>G(e.id),className:`w-full flex items-center gap-2 px-2 py-1.5 rounded text-left text-xs transition-all ${t?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"}`,children:[(0,l.jsx)("div",{className:`w-3.5 h-3.5 rounded border flex items-center justify-center shrink-0 ${t?"bg-primary border-primary":"border-border"}`,children:t&&(0,l.jsx)("span",{className:"material-symbols-outlined text-white text-[10px]",children:"check"})}),(0,l.jsx)("span",{className:"truncate flex-1",children:e.name||e.id.slice(0,8)}),!e.isActive&&(0,l.jsx)("span",{className:"text-[9px] text-red-400 shrink-0",children:"inactive"})]},e.id)})]},e))})]}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)(r.$n,{onClick:V,fullWidth:!0,children:p("savePermissions")}),(0,l.jsx)(r.$n,{onClick:t,variant:"ghost",fullWidth:!0,children:u("cancel")})]})]})})})}},e=>{e.O(0,[8500,3418,9751,8055,1149,5846,647,8441,3794,7358],()=>e(e.s=15534)),_N_E=e.O()}]);
|
package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-c9b98846b8479f3f.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6782],{19213:(e,t,r)=>{Promise.resolve().then(r.bind(r,29698))},29698:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var o=r(95155),a=r(12115),l=r(50910);function s(){let e=(0,l.c)("auditLog"),t=(0,l.c)("common"),[r,s]=(0,a.useState)([]),[c,d]=(0,a.useState)(!0),[n,i]=(0,a.useState)(null),[x,u]=(0,a.useState)(""),[m,b]=(0,a.useState)(""),[p,h]=(0,a.useState)(0),[v,f]=(0,a.useState)(!1),g=(0,a.useCallback)(async()=>{d(!0),i(null);try{let e=new URLSearchParams;x&&e.set("action",x),m&&e.set("actor",m),e.set("limit",String(26)),e.set("offset",String(p));let t=await fetch(`/api/compliance/audit-log?${e.toString()}`);if(!t.ok)throw Error(`HTTP ${t.status}`);let r=await t.json();f(r.length>25),s(r.slice(0,25))}catch(t){i(t.message||e("failedFetchAuditLog"))}finally{d(!1)}},[x,m,p,e]);(0,a.useEffect)(()=>{g()},[g]);let y=()=>{h(0),g()};return(0,o.jsxs)("div",{className:"max-w-6xl mx-auto p-6 space-y-6",children:[(0,o.jsxs)("div",{className:"flex items-center justify-between",children:[(0,o.jsxs)("div",{children:[(0,o.jsx)("h1",{className:"text-2xl font-bold text-[var(--color-text-main)]",children:e("title")}),(0,o.jsx)("p",{className:"text-sm text-[var(--color-text-muted)] mt-1",children:e("description")})]}),(0,o.jsx)("button",{onClick:g,disabled:c,"aria-label":e("refreshAuditLogAria"),className:"px-4 py-2 rounded-lg text-sm font-medium bg-[var(--color-surface)] border border-[var(--color-border)] text-[var(--color-text-main)] hover:bg-[var(--color-bg-alt)] transition-colors disabled:opacity-50",children:t(c?"loading":"refresh")})]}),(0,o.jsxs)("div",{className:"flex flex-wrap gap-3 p-4 rounded-xl bg-[var(--color-surface)] border border-[var(--color-border)]",role:"search","aria-label":e("filterEntriesAria"),children:[(0,o.jsx)("input",{type:"text",placeholder:e("filterByAction"),value:x,onChange:e=>u(e.target.value),onKeyDown:e=>"Enter"===e.key&&y(),"aria-label":e("filterByActionTypeAria"),className:"flex-1 min-w-[180px] px-3 py-2 rounded-lg text-sm bg-[var(--color-bg)] border border-[var(--color-border)] text-[var(--color-text-main)] placeholder:text-[var(--color-text-muted)] focus:outline-2 focus:outline-[var(--color-accent)]"}),(0,o.jsx)("input",{type:"text",placeholder:e("filterByActor"),value:m,onChange:e=>b(e.target.value),onKeyDown:e=>"Enter"===e.key&&y(),"aria-label":e("filterByActorAria"),className:"flex-1 min-w-[180px] px-3 py-2 rounded-lg text-sm bg-[var(--color-bg)] border border-[var(--color-border)] text-[var(--color-text-main)] placeholder:text-[var(--color-text-muted)] focus:outline-2 focus:outline-[var(--color-accent)]"}),(0,o.jsx)("button",{onClick:y,className:"px-4 py-2 rounded-lg text-sm font-medium bg-[var(--color-accent)] text-white hover:bg-[var(--color-accent-hover)] transition-colors focus:outline-2 focus:outline-offset-2 focus:outline-[var(--color-accent)]",children:t("search")})]}),n&&(0,o.jsx)("div",{className:"p-4 rounded-lg bg-red-500/10 border border-red-500/30 text-red-400 text-sm",role:"alert",children:n}),(0,o.jsx)("div",{className:"overflow-x-auto rounded-xl border border-[var(--color-border)]",children:(0,o.jsxs)("table",{className:"w-full text-sm",role:"table","aria-label":e("tableAria"),children:[(0,o.jsx)("thead",{children:(0,o.jsxs)("tr",{className:"bg-[var(--color-bg-alt)] border-b border-[var(--color-border)]",children:[(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:e("timestamp")}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:e("action")}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:e("actor")}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:e("target")}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:t("details")}),(0,o.jsx)("th",{className:"text-left px-4 py-3 font-medium text-[var(--color-text-muted)]",children:e("ipAddress")})]})}),(0,o.jsx)("tbody",{children:0!==r.length||c?r.map(t=>{var r;return(0,o.jsxs)("tr",{className:"border-b border-[var(--color-border)] hover:bg-[var(--color-bg-alt)] transition-colors",children:[(0,o.jsx)("td",{className:"px-4 py-3 whitespace-nowrap text-[var(--color-text-muted)] font-mono text-xs",children:(e=>{try{return new Date(e).toLocaleString()}catch{return e}})(t.timestamp)}),(0,o.jsx)("td",{className:"px-4 py-3",children:(0,o.jsx)("span",{className:`inline-block px-2 py-0.5 rounded-md text-xs font-medium border ${(r=t.action).includes("delete")||r.includes("remove")?"bg-red-500/15 text-red-400 border-red-500/20":r.includes("create")||r.includes("add")?"bg-green-500/15 text-green-400 border-green-500/20":r.includes("update")||r.includes("change")?"bg-blue-500/15 text-blue-400 border-blue-500/20":r.includes("login")||r.includes("auth")?"bg-purple-500/15 text-purple-400 border-purple-500/20":"bg-gray-500/15 text-gray-400 border-gray-500/20"}`,children:t.action})}),(0,o.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-main)]",children:t.actor}),(0,o.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-muted)] max-w-[200px] truncate",children:t.target||e("notAvailable")}),(0,o.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-muted)] max-w-[300px] truncate font-mono text-xs",children:t.details?JSON.stringify(t.details):e("notAvailable")}),(0,o.jsx)("td",{className:"px-4 py-3 text-[var(--color-text-muted)] font-mono text-xs whitespace-nowrap",children:t.ip_address||e("notAvailable")})]},t.id)}):(0,o.jsx)("tr",{children:(0,o.jsx)("td",{colSpan:6,className:"px-4 py-8 text-center text-[var(--color-text-muted)]",children:e("noEntries")})})})]})}),(0,o.jsxs)("div",{className:"flex items-center justify-between",children:[(0,o.jsx)("p",{className:"text-xs text-[var(--color-text-muted)]",children:e("showing",{count:r.length,offset:p})}),(0,o.jsxs)("div",{className:"flex gap-2",children:[(0,o.jsxs)("button",{onClick:()=>h(Math.max(0,p-25)),disabled:0===p,className:"px-3 py-1.5 rounded-lg text-xs font-medium bg-[var(--color-surface)] border border-[var(--color-border)] text-[var(--color-text-main)] hover:bg-[var(--color-bg-alt)] disabled:opacity-30 transition-colors",children:["← ",e("previous")]}),(0,o.jsxs)("button",{onClick:()=>h(p+25),disabled:!v,className:"px-3 py-1.5 rounded-lg text-xs font-medium bg-[var(--color-surface)] border border-[var(--color-border)] text-[var(--color-text-main)] hover:bg-[var(--color-bg-alt)] disabled:opacity-30 transition-colors",children:[t("next")," →"]})]})]})]})}},50910:(e,t,r)=>{"use strict";r.d(t,{c:()=>l});var o=r(33418);function a(e,t){return(...e)=>{try{return t(...e)}catch{throw Error(void 0)}}}let l=a(0,o.c3);a(0,o.kc)}},e=>{e.O(0,[3418,8441,3794,7358],()=>e(e.s=19213)),_N_E=e.O()}]);
|
package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-3c3f3b0b558e9302.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2326],{22611:(e,t,s)=>{"use strict";s.d(t,{default:()=>A});var l=s(95155),a=s(12115),r=s(40993);let i={claude:{id:"claude",name:"Claude Code",icon:"terminal",color:"#D97757",description:"Anthropic Claude Code CLI",configType:"env",envVars:{baseUrl:"ANTHROPIC_BASE_URL",model:"ANTHROPIC_MODEL",opusModel:"ANTHROPIC_DEFAULT_OPUS_MODEL",sonnetModel:"ANTHROPIC_DEFAULT_SONNET_MODEL",haikuModel:"ANTHROPIC_DEFAULT_HAIKU_MODEL"},modelAliases:["default","sonnet","opus","haiku","opusplan"],settingsFile:"~/.claude/settings.json",defaultModels:[{id:"opus",name:"Claude Opus",alias:"opus",envKey:"ANTHROPIC_DEFAULT_OPUS_MODEL",defaultValue:"cc/claude-opus-4-5-20251101"},{id:"sonnet",name:"Claude Sonnet",alias:"sonnet",envKey:"ANTHROPIC_DEFAULT_SONNET_MODEL",defaultValue:"cc/claude-sonnet-4-5-20250929"},{id:"haiku",name:"Claude Haiku",alias:"haiku",envKey:"ANTHROPIC_DEFAULT_HAIKU_MODEL",defaultValue:"cc/claude-haiku-4-5-20251001"}]},codex:{id:"codex",name:"OpenAI Codex CLI",image:"/providers/codex.png",color:"#10A37F",description:"OpenAI Codex CLI",configType:"custom"},droid:{id:"droid",name:"Factory Droid",image:"/providers/droid.png",color:"#00D4FF",description:"Factory Droid AI Assistant",configType:"custom"},openclaw:{id:"openclaw",name:"Open Claw",image:"/providers/openclaw.png",color:"#FF6B35",description:"Open Claw AI Assistant",configType:"custom"},cursor:{id:"cursor",name:"Cursor",image:"/providers/cursor.png",color:"#000000",description:"Cursor AI Code Editor",configType:"guide",requiresCloud:!0,notes:[{type:"warning",text:"Requires Cursor Pro account to use this feature."},{type:"cloudCheck",text:"Cursor routes requests through its own server, so local endpoint is not supported. Please enable Cloud Endpoint in Settings."}],guideSteps:[{step:1,title:"Open Settings",desc:"Go to Settings → Models"},{step:2,title:"Enable OpenAI API",desc:'Enable "OpenAI API key" option'},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Add Custom Model",desc:'Click "View All Model" → "Add Custom Model"'},{step:6,title:"Select Model",type:"modelSelector"}]},cline:{id:"cline",name:"Cline",image:"/providers/cline.png",color:"#00D1B2",description:"Cline AI Coding Assistant CLI",configType:"custom"},kilo:{id:"kilo",name:"Kilo Code",image:"/providers/kilocode.png",color:"#FF6B6B",description:"Kilo Code AI Assistant CLI",configType:"custom"},continue:{id:"continue",name:"Continue",image:"/providers/continue.png",color:"#7C3AED",description:"Continue AI Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Config",desc:"Open Continue configuration file"},{step:2,title:"API Key",type:"apiKeySelector"},{step:3,title:"Select Model",type:"modelSelector"},{step:4,title:"Add Model Config",desc:"Add the following configuration to your models array:"}],codeBlock:{language:"json",code:`{
|
|
2
|
-
"apiBase": "{{baseUrl}}",
|
|
3
|
-
"title": "{{model}}",
|
|
4
|
-
"model": "{{model}}",
|
|
5
|
-
"provider": "openai",
|
|
6
|
-
"apiKey": "{{apiKey}}"
|
|
7
|
-
}`}},antigravity:{id:"antigravity",name:"Antigravity",image:"/providers/antigravity.png",color:"#4285F4",description:"Google Antigravity IDE with MITM",configType:"mitm",modelAliases:["claude-opus-4-6-thinking","claude-sonnet-4-6","gemini-3-flash","gpt-oss-120b-medium","gemini-3.1-pro-high","gemini-3.1-pro-low"],defaultModels:[{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High",alias:"gemini-3.1-pro-high"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro Low",alias:"gemini-3.1-pro-low"},{id:"gemini-3-flash",name:"Gemini 3 Flash",alias:"gemini-3-flash"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",alias:"claude-sonnet-4-6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking",alias:"claude-opus-4-6-thinking"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium",alias:"gpt-oss-120b-medium"}]},copilot:{id:"copilot",name:"GitHub Copilot",image:"/providers/copilot.png",color:"#1F6FEB",description:"GitHub Copilot Chat — VS Code Extension",configType:"custom"},opencode:{id:"opencode",name:"OpenCode",image:"/providers/opencode.png",icon:"terminal",color:"#FF6B35",description:"OpenCode AI coding agent (Terminal)",configType:"guide",guideSteps:[{step:1,title:"Install OpenCode",desc:"Install via npm: npm install -g opencode-ai"},{step:2,title:"API Key",type:"apiKeySelector"},{step:3,title:"Set Base URL",desc:"opencode config set baseUrl {{baseUrl}}"},{step:4,title:"Select Model",type:"modelSelector"}]},kiro:{id:"kiro",name:"Kiro AI",image:"/providers/kiro.png",icon:"psychology_alt",color:"#FF6B35",description:"Amazon Kiro — AI-powered IDE",configType:"guide",guideSteps:[{step:1,title:"Open Kiro Settings",desc:"Go to Settings → AI Provider"},{step:2,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:3,title:"API Key",type:"apiKeySelector"},{step:4,title:"Select Model",type:"modelSelector"}]}};var n=s(81135),o=s(5772),c=s(50910),d=s(33418);function x({effectiveConfigStatus:e,batchStatus:t,lastConfiguredAt:s=null}){let a=(0,c.c)("cliTools"),r=(0,d.Ym)(),i=e||t?.configStatus||null,n={configured:{dotClass:"bg-green-500",badgeClass:"bg-green-500/10 text-green-600 dark:text-green-400",text:a("configured")},not_configured:{dotClass:"bg-yellow-500",badgeClass:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",text:a("notConfigured")},not_installed:{dotClass:"bg-zinc-400 dark:bg-zinc-500",badgeClass:"bg-zinc-500/10 text-zinc-500 dark:text-zinc-400",text:a("notInstalled")},other:{dotClass:"bg-blue-500",badgeClass:"bg-blue-500/10 text-blue-600 dark:text-blue-400",text:a("custom")},unknown:{dotClass:"bg-zinc-400 dark:bg-zinc-500",badgeClass:"bg-zinc-500/10 text-zinc-500 dark:text-zinc-400",text:a("unknown")}},o=i?n[i]||n.unknown:null;return(0,l.jsxs)(l.Fragment,{children:[o&&(0,l.jsxs)("span",{className:`inline-flex items-center gap-1.5 px-2 py-0.5 text-[11px] font-medium rounded-full ${o.badgeClass}`,children:[(0,l.jsx)("span",{className:`size-1.5 rounded-full ${o.dotClass}`}),o.text]}),s?(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 text-[10px] text-text-muted",title:a("lastSavedAt",{date:new Date(s).toLocaleString(r)}),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"schedule"}),function(e,t){let s=Date.now()-new Date(e).getTime();if(s<0)return t("justNow");let l=Math.floor(s/1e3);if(l<60)return t("justNow");let a=Math.floor(l/60);if(a<60)return t("minutesAgoShort",{count:a});let r=Math.floor(a/60);if(r<24)return t("hoursAgoShort",{count:r});let i=Math.floor(r/24);if(i<30)return t("daysAgoShort",{count:i});let n=Math.floor(i/30);return n<12?t("monthsAgoShort",{count:n}):t("yearsAgoShort",{count:Math.floor(n/12)})}(s,a)]}):i&&"not_installed"!==i?(0,l.jsxs)("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 text-[10px] text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"schedule"}),a("never")]}):null]})}let m="https://cloud.omniroute.online";function u({tool:e,isExpanded:t,onToggle:s,activeProviders:i,modelMappings:n,onModelMappingChange:d,baseUrl:u,hasActiveProviders:p,apiKeys:h,cloudEnabled:g,batchStatus:f,lastConfiguredAt:y}){let b,j,N,v=(0,c.c)("cliTools"),[k,w]=(0,a.useState)(null),[C,S]=(0,a.useState)(!1),[A,_]=(0,a.useState)(!1),[O,E]=(0,a.useState)(!1),[T,P]=(0,a.useState)(null),[$,z]=(0,a.useState)(!1),[R,M]=(0,a.useState)(!1),[K,I]=(0,a.useState)(null),[D,F]=(0,a.useState)(""),[U,L]=(0,a.useState)({}),[B,H]=(0,a.useState)(!1),[J,q]=(0,a.useState)(""),W=(0,a.useRef)(!1),[G,V]=(0,a.useState)([]),[Y,Z]=(0,a.useState)(!1),[Q,X]=(0,a.useState)(null),ee=!!(k?.installed&&k?.runnable),et=(()=>{if(!ee)return null;let e=k.settings?.env?.ANTHROPIC_BASE_URL;if(!e)return"not_configured";let t=e.includes("localhost")||e.includes("127.0.0.1"),s=g&&m&&e.startsWith(m);return t||s?"configured":"other"})()||f?.configStatus||null;(0,a.useEffect)(()=>{h?.length>0&&!D&&F(h[0].key)},[h,D]),(0,a.useEffect)(()=>{t&&!k&&(el(),es(),en())},[t,k]);let es=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&L(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,a.useEffect)(()=>{if(k?.installed&&!W.current){W.current=!0;let t=k.settings?.env||{};e.defaultModels.forEach(e=>{if(e.envKey){let s=t[e.envKey]||e.defaultValue||"";s&&d(e.alias,s)}});let s=t.ANTHROPIC_AUTH_TOKEN;s&&h?.some(e=>e.key===s)&&F(s)}},[k,h,e.defaultModels,d]);let el=async()=>{S(!0);try{let e=await fetch("/api/cli-tools/claude-settings"),t=await e.json();w(t)}catch(e){w({installed:!1,error:e.message})}finally{S(!1)}},ea=()=>{let e=J||u;return e.endsWith("/v1")?e:`${e}/v1`},er=async()=>{_(!0),P(null);try{let t={ANTHROPIC_BASE_URL:ea()},s=D?.trim()||(h?.length>0?h[0].key:null)||(g?null:"sk_omniroute");s&&(t.ANTHROPIC_AUTH_TOKEN=s),e.defaultModels.forEach(e=>{let s=n[e.alias];s&&e.envKey&&(t[e.envKey]=s)});let l=await fetch("/api/cli-tools/claude-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({env:t})}),a=await l.json();l.ok?(P({type:"success",text:v("settingsApplied")}),w(e=>({...e,hasBackup:!0,settings:{...e?.settings,env:t}}))):P({type:"error",text:a.error||v("failedApplySettings")})}catch(e){P({type:"error",text:e.message})}finally{_(!1)}},ei=async()=>{E(!0),P(null);try{let t=await fetch("/api/cli-tools/claude-settings",{method:"DELETE"}),s=await t.json();t.ok?(P({type:"success",text:v("settingsReset")}),e.defaultModels.forEach(e=>d(e.alias,e.defaultValue||"")),F("")):P({type:"error",text:s.error||v("failedResetSettings")})}catch(e){P({type:"error",text:e.message})}finally{E(!1)}},en=async()=>{try{let e=await fetch("/api/cli-tools/backups?tool=claude"),t=await e.json();e.ok&&V(t.backups||[])}catch(e){console.log("Error fetching backups:",e)}},eo=async e=>{X(e),P(null);try{let t=await fetch("/api/cli-tools/backups",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:"claude",backupId:e})}),s=await t.json();t.ok?(P({type:"success",text:v("backupRestored")}),el(),en()):P({type:"error",text:s.error||v("failedRestore")})}catch(e){P({type:"error",text:e.message})}finally{X(null)}};return(0,l.jsxs)(r.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(o.default,{src:"/providers/claude.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.currentTarget.style.display="none"}})}),(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),(0,l.jsx)(x,{effectiveConfigStatus:et,batchStatus:f,lastConfiguredAt:y})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:v("toolDescriptions.claude")})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[C&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:v("checkingCli",{tool:"Claude"})})]}),!C&&k&&!ee&&(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:k.installed?v("cliNotRunnable",{tool:"Claude"}):v("cliNotInstalled",{tool:"Claude"})}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:k.installed?v("cliFoundFailedHealthcheck",{tool:"Claude",reason:k.reason?` (${k.reason})`:""}):v("installCliPrompt",{tool:"Claude"})})]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:()=>z(!$),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:$?"expand_less":"help"}),$?v("hide"):v("howToInstall")]})]}),$&&(0,l.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,l.jsx)("h4",{className:"font-medium mb-3",children:v("installationGuide")}),(0,l.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-text-muted mb-1",children:v("platforms")}),(0,l.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"npm install -g @anthropic-ai/claude-code"})]}),(0,l.jsxs)("p",{className:"text-text-muted",children:[v("afterInstallationRun")," ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"claude"})," ",v("toVerify")]})]})]})]}),!C&&ee&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[k?.settings?.env?.ANTHROPIC_BASE_URL&&(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:v("current")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:k.settings.env.ANTHROPIC_BASE_URL})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:v("baseUrl")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:(b=J||u).endsWith("/v1")?b:`${b}/v1`,onChange:e=>q(e.target.value),placeholder:v("baseUrlPlaceholder"),className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),J&&J!==u&&(0,l.jsx)("button",{onClick:()=>q(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:v("resetToDefault"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:v("apiKey")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),h.length>0?(0,l.jsx)("select",{value:D,onChange:e=>F(e.target.value),className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:h.map(e=>(0,l.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,l.jsx)("span",{className:"flex-1 text-xs text-text-muted px-2 py-1.5",children:g?v("noApiKeysCreateOne"):v("defaultOmnirouteKey")})]}),e.defaultModels.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:e.name}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:n[e.alias]||"",onChange:t=>d(e.alias,t.target.value),placeholder:v("providerModelPlaceholder"),className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,l.jsx)("button",{onClick:()=>{I(e.alias),M(!0)},disabled:!p,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${p?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:v("selectModel")}),n[e.alias]&&(0,l.jsx)("button",{onClick:()=>d(e.alias,""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:v("clear"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]},e.alias))]}),T&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===T.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===T.type?"check_circle":"error"}),(0,l.jsx)("span",{children:T.text})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:er,disabled:!p,loading:A,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),v("apply")]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:ei,disabled:!k?.hasOmniRoute,loading:O,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),v("reset")]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>H(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),v("manualConfig")]}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>{Z(!Y),Y||en()},children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"history"}),v("backups"),G.length>0&&` (${G.length})`]})]}),Y&&(0,l.jsxs)("div",{className:"mt-2 p-3 bg-surface border border-border rounded-lg",children:[(0,l.jsxs)("h4",{className:"text-xs font-semibold text-text-main mb-2 flex items-center gap-1",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"history"}),v("configBackups")]}),0===G.length?(0,l.jsx)("p",{className:"text-xs text-text-muted",children:v("noBackupsYet")}):(0,l.jsx)("div",{className:"space-y-1.5",children:G.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 bg-black/5 dark:bg-white/5 rounded text-xs",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"description"}),(0,l.jsx)("span",{className:"flex-1 truncate font-mono",title:e.id,children:e.id}),(0,l.jsx)("span",{className:"text-text-muted whitespace-nowrap",children:new Date(e.createdAt).toLocaleString()}),(0,l.jsx)("button",{onClick:()=>eo(e.id),disabled:Q===e.id,className:"px-2 py-0.5 bg-primary/10 text-primary rounded text-[10px] font-medium hover:bg-primary/20 transition-colors disabled:opacity-50",children:Q===e.id?"...":v("restore")})]},e.id))})]})]})]}),(0,l.jsx)(r.rq,{isOpen:R,onClose:()=>M(!1),onSelect:e=>{K&&d(K,e.value)},selectedModel:K?n[K]:null,activeProviders:i,modelAliases:U,title:v("selectModelForAlias",{alias:K||""})}),(0,l.jsx)(r.uR,{isOpen:B,onClose:()=>H(!1),title:v("claudeManualConfiguration"),configs:(j=D&&D.trim()?D:g?"<API_KEY_FROM_DASHBOARD>":"sk_omniroute",N={ANTHROPIC_BASE_URL:ea(),ANTHROPIC_AUTH_TOKEN:j},e.defaultModels.forEach(e=>{let t=n[e.alias];t&&e.envKey&&(N[e.envKey]=t)}),[{filename:"~/.claude/settings.json",content:JSON.stringify({env:N},null,2)}])})]})}function p({tool:e,isExpanded:t,onToggle:s,baseUrl:i,apiKeys:n,activeProviders:d,cloudEnabled:m,batchStatus:u,lastConfiguredAt:p}){let h,g,f,y=(0,c.c)("cliTools"),[b,j]=(0,a.useState)(null),[N,v]=(0,a.useState)(!1),[k,w]=(0,a.useState)(!1),[C,S]=(0,a.useState)(!1),[A,_]=(0,a.useState)(null),[O,E]=(0,a.useState)(!1),[T,P]=(0,a.useState)(""),[$,z]=(0,a.useState)(""),[R,M]=(0,a.useState)(!1),[K,I]=(0,a.useState)({}),[D,F]=(0,a.useState)(!1),[U,L]=(0,a.useState)(""),[B,H]=(0,a.useState)([]),[J,q]=(0,a.useState)(!1),[W,G]=(0,a.useState)(""),[V,Y]=(0,a.useState)(!1),[Z,Q]=(0,a.useState)(null),[X,ee]=(0,a.useState)([]),[et,es]=(0,a.useState)(!1),[el,ea]=(0,a.useState)(null),er=!!(b?.installed&&b?.runnable);(0,a.useEffect)(()=>{n?.length>0&&!T&&P(n[0].key)},[n,T]),(0,a.useEffect)(()=>{t&&!b&&(ec(),ei(),em(),eg())},[t,b]);let ei=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&I(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,a.useEffect)(()=>{if(b?.config){let e=b.config.match(/^model\s*=\s*"([^"]+)"/m);e&&z(e[1])}},[b]);let en=(er?b.config?b.config.includes(i)||b.config.includes("localhost")||b.config.includes("127.0.0.1")?"configured":"other":"not_configured":null)||u?.configStatus||null,eo=()=>{let e=U||`${i}/v1`;return e.endsWith("/v1")?e:`${e}/v1`},ec=async()=>{v(!0);try{let e=await fetch("/api/cli-tools/codex-settings"),t=await e.json();j(t)}catch(e){j({installed:!1,error:e.message})}finally{v(!1)}},ed=async()=>{w(!0),_(null);try{let e=T&&T.trim()||m?T:"sk_omniroute",t=await fetch("/api/cli-tools/codex-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:eo(),apiKey:e,model:$})}),s=await t.json();t.ok?(_({type:"success",text:y("settingsApplied")}),ec()):_({type:"error",text:s.error||y("failedApplySettings")})}catch(e){_({type:"error",text:e.message})}finally{w(!1)}},ex=async()=>{S(!0),_(null);try{let e=await fetch("/api/cli-tools/codex-settings",{method:"DELETE"}),t=await e.json();e.ok?(_({type:"success",text:y("settingsReset")}),z(""),ec()):_({type:"error",text:t.error||y("failedResetSettings")})}catch(e){_({type:"error",text:e.message})}finally{S(!1)}},em=async()=>{try{let e=await fetch("/api/cli-tools/codex-profiles"),t=await e.json();e.ok&&H(t.profiles||[])}catch(e){console.log("Error fetching profiles:",e)}},eu=async()=>{if(W.trim()){Y(!0),_(null);try{let e=await fetch("/api/cli-tools/codex-profiles",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:W.trim()})}),t=await e.json();e.ok?(_({type:"success",text:y("profileSaved",{name:W})}),G(""),em()):_({type:"error",text:t.error||y("failedSaveProfile")})}catch(e){_({type:"error",text:e.message})}finally{Y(!1)}}},ep=async e=>{Q(e),_(null);try{let t=await fetch("/api/cli-tools/codex-profiles",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:e})}),s=await t.json();t.ok?(_({type:"success",text:s.message||y("profileActivated")}),ec(),eg()):_({type:"error",text:s.error||y("failedActivateProfile")})}catch(e){_({type:"error",text:e.message})}finally{Q(null)}},eh=async e=>{try{(await fetch("/api/cli-tools/codex-profiles",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:e})})).ok&&em()}catch(e){console.log("Error deleting profile:",e)}},eg=async()=>{try{let e=await fetch("/api/cli-tools/backups?tool=codex"),t=await e.json();e.ok&&ee(t.backups||[])}catch(e){console.log("Error fetching backups:",e)}},ef=async e=>{ea(e),_(null);try{let t=await fetch("/api/cli-tools/backups",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:"codex",backupId:e})}),s=await t.json();t.ok?(_({type:"success",text:y("backupRestored")}),ec(),eg()):_({type:"error",text:s.error||y("failedRestore")})}catch(e){_({type:"error",text:e.message})}finally{ea(null)}};return(0,l.jsxs)(r.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(o.default,{src:"/providers/codex.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.currentTarget.style.display="none"}})}),(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),(0,l.jsx)(x,{effectiveConfigStatus:en,batchStatus:u,lastConfiguredAt:p})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:y("toolDescriptions.codex")})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[N&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:y("checkingCli",{tool:"Codex"})})]}),!N&&b&&!er&&(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:b.installed?y("cliNotRunnable",{tool:"Codex"}):y("cliNotInstalled",{tool:"Codex"})}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:b.installed?y("cliFoundFailedHealthcheck",{tool:"Codex",reason:b.reason?` (${b.reason})`:""}):y("installCodexPrompt")})]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:()=>E(!O),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:O?"expand_less":"help"}),O?y("hide"):y("howToInstall")]})]}),O&&(0,l.jsxs)("div",{className:"p-4 bg-surface border border-border rounded-lg",children:[(0,l.jsx)("h4",{className:"font-medium mb-3",children:y("installationGuide")}),(0,l.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-text-muted mb-1",children:y("platforms")}),(0,l.jsx)("code",{className:"block px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs",children:"npm install -g @openai/codex"})]}),(0,l.jsxs)("p",{className:"text-text-muted",children:[y("afterInstallationRun")," ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"codex"})," ",y("toVerify")]}),(0,l.jsx)("div",{className:"pt-2 border-t border-border",children:(0,l.jsxs)("p",{className:"text-text-muted text-xs",children:[y("codexAuthNotePrefix")," ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"~/.codex/auth.json"})," ",y("codexAuthNoteMiddle")," ",(0,l.jsx)("code",{className:"px-1 bg-black/5 dark:bg-white/5 rounded",children:"OPENAI_API_KEY"}),". ",y("codexAuthNoteSuffix")]})})]})]})]}),!N&&er&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[b?.config&&((g=(h=b.config.match(/base_url\s*=\s*"([^"]+)"/))?h[1]:null)?(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:y("current")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:g})]}):null),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:y("baseUrl")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:U||`${i}/v1`,onChange:e=>L(e.target.value),placeholder:y("baseUrlPlaceholder"),className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),U&&U!==`${i}/v1`&&(0,l.jsx)("button",{onClick:()=>L(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:y("resetToDefault"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:y("apiKey")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),n.length>0?(0,l.jsx)("select",{value:T,onChange:e=>P(e.target.value),className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:n.map(e=>(0,l.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,l.jsx)("span",{className:"flex-1 text-xs text-text-muted px-2 py-1.5",children:m?y("noApiKeysCreateOne"):y("defaultOmnirouteKey")})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:y("model")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:$,onChange:e=>z(e.target.value),placeholder:y("providerModelPlaceholder"),className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,l.jsx)("button",{onClick:()=>M(!0),disabled:!d?.length,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${d?.length?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:y("selectModel")}),$&&(0,l.jsx)("button",{onClick:()=>z(""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:y("clear"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})]}),A&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===A.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===A.type?"check_circle":"error"}),(0,l.jsx)("span",{children:A.text})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:ed,disabled:!T||!$,loading:k,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),y("apply")]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:ex,disabled:!b.hasOmniRoute,loading:C,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),y("reset")]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>F(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),y("manualConfig")]}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>{q(!J),J||em()},children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"manage_accounts"}),y("profiles")]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>{es(!et),et||eg()},children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"history"}),y("backups"),X.length>0&&` (${X.length})`]})]}),J&&(0,l.jsxs)("div",{className:"mt-2 p-3 bg-surface border border-border rounded-lg",children:[(0,l.jsxs)("h4",{className:"text-xs font-semibold text-text-main mb-2 flex items-center gap-1",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"manage_accounts"}),y("savedProfiles")]}),0===B.length?(0,l.jsx)("p",{className:"text-xs text-text-muted",children:y("noProfilesYet")}):(0,l.jsx)("div",{className:"space-y-1.5 mb-3",children:B.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 bg-black/5 dark:bg-white/5 rounded text-xs",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"person"}),(0,l.jsx)("span",{className:"font-medium flex-1 truncate",children:e.name}),(0,l.jsx)("span",{className:"text-text-muted truncate max-w-[140px]",title:e.authLabel,children:e.authLabel}),(0,l.jsx)("button",{onClick:()=>ep(e.id),disabled:Z===e.id,className:"px-2 py-0.5 bg-primary/10 text-primary rounded text-[10px] font-medium hover:bg-primary/20 transition-colors disabled:opacity-50",children:Z===e.id?"...":y("activate")}),(0,l.jsx)("button",{onClick:()=>eh(e.id),className:"p-0.5 text-text-muted hover:text-red-500 transition-colors",title:y("deleteProfile"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"delete"})})]},e.id))}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("input",{type:"text",value:W,onChange:e=>G(e.target.value),placeholder:y("profileNamePlaceholder"),className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50",onKeyDown:e=>"Enter"===e.key&&eu()}),(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:eu,disabled:!W.trim(),loading:V,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),y("saveCurrent")]})]})]}),et&&(0,l.jsxs)("div",{className:"mt-2 p-3 bg-surface border border-border rounded-lg",children:[(0,l.jsxs)("h4",{className:"text-xs font-semibold text-text-main mb-2 flex items-center gap-1",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"history"}),y("configBackups")]}),0===X.length?(0,l.jsx)("p",{className:"text-xs text-text-muted",children:y("noBackupsYet")}):(0,l.jsx)("div",{className:"space-y-1.5",children:X.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 bg-black/5 dark:bg-white/5 rounded text-xs",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"description"}),(0,l.jsx)("span",{className:"flex-1 truncate font-mono",title:e.id,children:e.id}),(0,l.jsx)("span",{className:"text-text-muted whitespace-nowrap",children:new Date(e.createdAt).toLocaleString()}),(0,l.jsx)("button",{onClick:()=>ef(e.id),disabled:el===e.id,className:"px-2 py-0.5 bg-primary/10 text-primary rounded text-[10px] font-medium hover:bg-primary/20 transition-colors disabled:opacity-50",children:el===e.id?"...":y("restore")})]},e.id))})]})]})]}),(0,l.jsx)(r.rq,{isOpen:R,onClose:()=>M(!1),onSelect:e=>{z(e.value),M(!1)},selectedModel:$,activeProviders:d,modelAliases:K,title:y("selectModelForTool",{tool:"Codex"})}),(0,l.jsx)(r.uR,{isOpen:D,onClose:()=>F(!1),title:y("codexManualConfiguration"),configs:(f=T&&T.trim()?T:m?"<API_KEY_FROM_DASHBOARD>":"sk_omniroute",[{filename:"~/.codex/config.toml",content:`# OmniRoute Configuration for Codex CLI
|
|
8
|
-
model = "${$}"
|
|
9
|
-
model_provider = "omniroute"
|
|
10
|
-
|
|
11
|
-
[model_providers.omniroute]
|
|
12
|
-
name = "OmniRoute"
|
|
13
|
-
base_url = "${eo()}"
|
|
14
|
-
wire_api = "responses"
|
|
15
|
-
`},{filename:"~/.codex/auth.json",content:JSON.stringify({OPENAI_API_KEY:f},null,2)}])})]})}let h="https://cloud.omniroute.online";function g({tool:e,isExpanded:t,onToggle:s,baseUrl:i,hasActiveProviders:n,apiKeys:d,activeProviders:m,cloudEnabled:u,batchStatus:p,lastConfiguredAt:g}){let f,y,b,j,N=(0,c.c)("cliTools"),[v,k]=(0,a.useState)(null),[w,C]=(0,a.useState)(!1),[S,A]=(0,a.useState)(!1),[_,O]=(0,a.useState)(!1),[E,T]=(0,a.useState)(null),[P,$]=(0,a.useState)(""),[z,R]=(0,a.useState)(""),[M,K]=(0,a.useState)(!1),[I,D]=(0,a.useState)({}),[F,U]=(0,a.useState)(!1),[L,B]=(0,a.useState)(""),H=(0,a.useRef)(!1),[J,q]=(0,a.useState)([]),[W,G]=(0,a.useState)(!1),[V,Y]=(0,a.useState)(null),Z=!!(v?.installed&&v?.runnable),Q=(()=>{if(!Z)return null;let e=v.settings?.customModels?.find(e=>"custom:OmniRoute-0"===e.id);if(!e)return"not_configured";let t=e.baseUrl?.includes("localhost")||e.baseUrl?.includes("127.0.0.1"),s=u&&h&&e.baseUrl?.startsWith(h);return t||s?"configured":"other"})()||p?.configStatus||null;(0,a.useEffect)(()=>{d?.length>0&&!P&&$(d[0].key)},[d,P]),(0,a.useEffect)(()=>{t&&!v&&(ee(),X(),ea())},[t,v]);let X=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&D(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,a.useEffect)(()=>{if(v?.installed&&!H.current){H.current=!0;let e=v.settings?.customModels?.find(e=>"custom:OmniRoute-0"===e.id);e&&(e.model&&R(e.model),e.apiKey&&d?.some(t=>t.key===e.apiKey)&&$(e.apiKey))}},[v,d]);let ee=async()=>{C(!0);try{let e=await fetch("/api/cli-tools/droid-settings"),t=await e.json();k(t)}catch(e){k({installed:!1,error:e.message})}finally{C(!1)}},et=()=>{let e=L||i;return e.endsWith("/v1")?e:`${e}/v1`},es=async()=>{A(!0),T(null);try{let e=P?.trim()||(d?.length>0?d[0].key:null)||(u?null:"sk_omniroute"),t=await fetch("/api/cli-tools/droid-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:et(),apiKey:e,model:z})}),s=await t.json();t.ok?(T({type:"success",text:N("settingsApplied")}),ee()):T({type:"error",text:s.error||N("failedApplySettings")})}catch(e){T({type:"error",text:e.message})}finally{A(!1)}},el=async()=>{O(!0),T(null);try{let e=await fetch("/api/cli-tools/droid-settings",{method:"DELETE"}),t=await e.json();e.ok?(T({type:"success",text:N("settingsReset")}),R(""),$(""),ee()):T({type:"error",text:t.error||N("failedResetSettings")})}catch(e){T({type:"error",text:e.message})}finally{O(!1)}},ea=async()=>{try{let e=await fetch("/api/cli-tools/backups?tool=droid"),t=await e.json();e.ok&&q(t.backups||[])}catch(e){console.log("Error fetching backups:",e)}},er=async e=>{Y(e),T(null);try{let t=await fetch("/api/cli-tools/backups",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:"droid",backupId:e})}),s=await t.json();t.ok?(T({type:"success",text:N("backupRestored")}),ee(),ea()):T({type:"error",text:s.error||N("failedRestore")})}catch(e){T({type:"error",text:e.message})}finally{Y(null)}};return(0,l.jsxs)(r.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(o.default,{src:"/providers/droid.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.currentTarget.style.display="none"}})}),(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),(0,l.jsx)(x,{effectiveConfigStatus:Q,batchStatus:p,lastConfiguredAt:g})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:N("toolDescriptions.droid")})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[w&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:N("checkingCli",{tool:"Factory Droid"})})]}),!w&&v&&!Z&&(0,l.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:v.installed?N("cliNotRunnable",{tool:"Factory Droid"}):N("cliNotInstalled",{tool:"Factory Droid"})}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:v.installed?N("cliFoundFailedHealthcheck",{tool:"Factory Droid",reason:v.reason?` (${v.reason})`:""}):N("installCliPrompt",{tool:"Factory Droid"})})]})]}),!w&&Z&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[v?.settings?.customModels?.find(e=>"custom:OmniRoute-0"===e.id)?.baseUrl&&(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:N("current")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:v.settings.customModels.find(e=>"custom:OmniRoute-0"===e.id).baseUrl})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:N("baseUrl")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:(f=L||i).endsWith("/v1")?f:`${f}/v1`,onChange:e=>B(e.target.value),placeholder:N("baseUrlPlaceholder"),className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),L&&L!==i&&(0,l.jsx)("button",{onClick:()=>B(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:N("resetToDefault"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:N("apiKey")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),d.length>0?(0,l.jsx)("select",{value:P,onChange:e=>$(e.target.value),className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:d.map(e=>(0,l.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,l.jsx)("span",{className:"flex-1 text-xs text-text-muted px-2 py-1.5",children:u?N("noApiKeysCreateOne"):N("defaultOmnirouteKey")})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:N("model")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:z,onChange:e=>R(e.target.value),placeholder:N("providerModelPlaceholder"),className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,l.jsx)("button",{onClick:()=>K(!0),disabled:!n,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${n?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:N("selectModel")}),z&&(0,l.jsx)("button",{onClick:()=>R(""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:N("clear"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})]}),E&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===E.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===E.type?"check_circle":"error"}),(0,l.jsx)("span",{children:E.text})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:es,disabled:!z,loading:S,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),N("apply")]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:el,disabled:!v?.hasOmniRoute,loading:_,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),N("reset")]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>U(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),N("manualConfig")]}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>{G(!W),W||ea()},children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"history"}),N("backups"),J.length>0&&` (${J.length})`]})]}),W&&(0,l.jsxs)("div",{className:"mt-2 p-3 bg-surface border border-border rounded-lg",children:[(0,l.jsxs)("h4",{className:"text-xs font-semibold text-text-main mb-2 flex items-center gap-1",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"history"}),N("configBackups")]}),0===J.length?(0,l.jsx)("p",{className:"text-xs text-text-muted",children:N("noBackupsYet")}):(0,l.jsx)("div",{className:"space-y-1.5",children:J.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 bg-black/5 dark:bg-white/5 rounded text-xs",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"description"}),(0,l.jsx)("span",{className:"flex-1 truncate font-mono",title:e.id,children:e.id}),(0,l.jsx)("span",{className:"text-text-muted whitespace-nowrap",children:new Date(e.createdAt).toLocaleString()}),(0,l.jsx)("button",{onClick:()=>er(e.id),disabled:V===e.id,className:"px-2 py-0.5 bg-primary/10 text-primary rounded text-[10px] font-medium hover:bg-primary/20 transition-colors disabled:opacity-50",children:V===e.id?"...":N("restore")})]},e.id))})]})]})]}),(0,l.jsx)(r.rq,{isOpen:M,onClose:()=>K(!1),onSelect:e=>{R(e.value),K(!1)},selectedModel:z,activeProviders:m,modelAliases:I,title:N("selectModelForTool",{tool:"Factory Droid"})}),(0,l.jsx)(r.uR,{isOpen:F,onClose:()=>U(!1),title:N("droidManualConfiguration"),configs:(y=P&&P.trim()?P:u?"<API_KEY_FROM_DASHBOARD>":"sk_omniroute",b={customModels:[{model:z||"provider/model-id",id:"custom:OmniRoute-0",index:0,baseUrl:et(),apiKey:y,displayName:z||"provider/model-id",maxOutputTokens:131072,noImageSupport:!1,provider:"openai"}]},j="u">typeof navigator&&navigator.platform,[{filename:j?.toLowerCase().includes("win")?"%USERPROFILE%\\.factory\\settings.json":"~/.factory/settings.json",content:JSON.stringify(b,null,2)}])})]})}let f="https://cloud.omniroute.online";function y({tool:e,isExpanded:t,onToggle:s,baseUrl:i,hasActiveProviders:n,apiKeys:d,activeProviders:m,cloudEnabled:u,batchStatus:p,lastConfiguredAt:h}){let g,y,b=(0,c.c)("cliTools"),[j,N]=(0,a.useState)(null),[v,k]=(0,a.useState)(!1),[w,C]=(0,a.useState)(!1),[S,A]=(0,a.useState)(!1),[_,O]=(0,a.useState)(null),[E,T]=(0,a.useState)(""),[P,$]=(0,a.useState)(""),[z,R]=(0,a.useState)(!1),[M,K]=(0,a.useState)({}),[I,D]=(0,a.useState)(!1),[F,U]=(0,a.useState)(""),L=(0,a.useRef)(!1),[B,H]=(0,a.useState)([]),[J,q]=(0,a.useState)(!1),[W,G]=(0,a.useState)(null),V=!!(j?.installed&&j?.runnable),Y=(()=>{if(!V)return null;let e=j.settings?.models?.providers?.omniroute;if(!e)return"not_configured";let t=e.baseUrl?.includes("localhost")||e.baseUrl?.includes("127.0.0.1"),s=u&&f&&e.baseUrl?.startsWith(f);return t||s?"configured":"other"})()||p?.configStatus||null;(0,a.useEffect)(()=>{d?.length>0&&!E&&T(d[0].key)},[d,E]),(0,a.useEffect)(()=>{t&&!j&&(Q(),Z(),es())},[t,j]);let Z=async()=>{try{let e=await fetch("/api/models/alias"),t=await e.json();e.ok&&K(t.aliases||{})}catch(e){console.log("Error fetching model aliases:",e)}};(0,a.useEffect)(()=>{if(j?.installed&&!L.current){L.current=!0;let e=j.settings?.models?.providers?.omniroute;if(e){let t=j.settings?.agents?.defaults?.model?.primary;t&&$(t.replace("omniroute/","")),e.apiKey&&d?.some(t=>t.key===e.apiKey)&&T(e.apiKey)}}},[j,d]);let Q=async()=>{k(!0);try{let e=await fetch("/api/cli-tools/openclaw-settings"),t=await e.json();N(t)}catch(e){N({installed:!1,error:e.message})}finally{k(!1)}},X=()=>{let e=F||i;return e.endsWith("/v1")?e:`${e}/v1`},ee=async()=>{C(!0),O(null);try{let e=E?.trim()||(d?.length>0?d[0].key:null)||(u?null:"sk_omniroute"),t=await fetch("/api/cli-tools/openclaw-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:X(),apiKey:e,model:P})}),s=await t.json();t.ok?(O({type:"success",text:b("settingsApplied")}),Q()):O({type:"error",text:s.error||b("failedApplySettings")})}catch(e){O({type:"error",text:e.message})}finally{C(!1)}},et=async()=>{A(!0),O(null);try{let e=await fetch("/api/cli-tools/openclaw-settings",{method:"DELETE"}),t=await e.json();e.ok?(O({type:"success",text:b("settingsReset")}),$(""),T(""),Q()):O({type:"error",text:t.error||b("failedResetSettings")})}catch(e){O({type:"error",text:e.message})}finally{A(!1)}},es=async()=>{try{let e=await fetch("/api/cli-tools/backups?tool=openclaw"),t=await e.json();e.ok&&H(t.backups||[])}catch(e){console.log("Error fetching backups:",e)}},el=async e=>{G(e),O(null);try{let t=await fetch("/api/cli-tools/backups",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:"openclaw",backupId:e})}),s=await t.json();t.ok?(O({type:"success",text:b("backupRestored")}),Q(),es()):O({type:"error",text:s.error||b("failedRestore")})}catch(e){O({type:"error",text:e.message})}finally{G(null)}};return(0,l.jsxs)(r.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(o.default,{src:"/providers/openclaw.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.currentTarget.style.display="none"}})}),(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),(0,l.jsx)(x,{effectiveConfigStatus:Y,batchStatus:p,lastConfiguredAt:h})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:b("toolDescriptions.openclaw")})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[v&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,l.jsx)("span",{children:b("checkingCli",{tool:"Open Claw"})})]}),!v&&j&&!V&&(0,l.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{className:"flex-1",children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:j.installed?b("cliNotRunnable",{tool:"Open Claw"}):b("cliNotInstalled",{tool:"Open Claw"})}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:j.installed?b("cliFoundFailedHealthcheck",{tool:"Open Claw",reason:j.reason?` (${j.reason})`:""}):b("installCliPrompt",{tool:"Open Claw"})})]})]}),!v&&V&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[j?.settings?.models?.providers?.omniroute?.baseUrl&&(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:b("current")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("span",{className:"flex-1 px-2 py-1.5 text-xs text-text-muted truncate",children:j.settings.models.providers.omniroute.baseUrl})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:b("baseUrl")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:(g=F||i).endsWith("/v1")?g:`${g}/v1`,onChange:e=>U(e.target.value),placeholder:b("baseUrlPlaceholder"),className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),F&&F!==i&&(0,l.jsx)("button",{onClick:()=>U(""),className:"p-1 text-text-muted hover:text-primary rounded transition-colors",title:b("resetToDefault"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"restart_alt"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:b("apiKey")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),d.length>0?(0,l.jsx)("select",{value:E,onChange:e=>T(e.target.value),className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:d.map(e=>(0,l.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,l.jsx)("span",{className:"flex-1 text-xs text-text-muted px-2 py-1.5",children:u?b("noApiKeysCreateOne"):b("defaultOmnirouteKey")})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:b("model")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:P,onChange:e=>$(e.target.value),placeholder:b("providerModelPlaceholder"),className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,l.jsx)("button",{onClick:()=>R(!0),disabled:!n,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${n?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:b("selectModel")}),P&&(0,l.jsx)("button",{onClick:()=>$(""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:b("clear"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]})]}),_&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===_.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===_.type?"check_circle":"error"}),(0,l.jsx)("span",{children:_.text})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:ee,disabled:!P,loading:w,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),b("apply")]}),(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:et,disabled:!j?.hasOmniRoute,loading:S,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),b("reset")]}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>D(!0),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),b("manualConfig")]}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsxs)(r.$n,{variant:"ghost",size:"sm",onClick:()=>{q(!J),J||es()},children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"history"}),b("backups"),B.length>0&&` (${B.length})`]})]}),J&&(0,l.jsxs)("div",{className:"mt-2 p-3 bg-surface border border-border rounded-lg",children:[(0,l.jsxs)("h4",{className:"text-xs font-semibold text-text-main mb-2 flex items-center gap-1",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"history"}),b("configBackups")]}),0===B.length?(0,l.jsx)("p",{className:"text-xs text-text-muted",children:b("noBackupsYet")}):(0,l.jsx)("div",{className:"space-y-1.5",children:B.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 bg-black/5 dark:bg-white/5 rounded text-xs",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted",children:"description"}),(0,l.jsx)("span",{className:"flex-1 truncate font-mono",title:e.id,children:e.id}),(0,l.jsx)("span",{className:"text-text-muted whitespace-nowrap",children:new Date(e.createdAt).toLocaleString()}),(0,l.jsx)("button",{onClick:()=>el(e.id),disabled:W===e.id,className:"px-2 py-0.5 bg-primary/10 text-primary rounded text-[10px] font-medium hover:bg-primary/20 transition-colors disabled:opacity-50",children:W===e.id?"...":b("restore")})]},e.id))})]})]})]}),(0,l.jsx)(r.rq,{isOpen:z,onClose:()=>R(!1),onSelect:e=>{$(e.value),R(!1)},selectedModel:P,activeProviders:m,modelAliases:M,title:b("selectModelForTool",{tool:"Open Claw"})}),(0,l.jsx)(r.uR,{isOpen:I,onClose:()=>D(!1),title:b("openClawManualConfiguration"),configs:(y=E&&E.trim()?E:u?"<API_KEY_FROM_DASHBOARD>":"sk_omniroute",[{filename:"~/.openclaw/openclaw.json",content:JSON.stringify({agents:{defaults:{model:{primary:`omniroute/${P||"provider/model-id"}`}}},models:{providers:{omniroute:{baseUrl:X(),apiKey:y,api:"openai-completions",models:[{id:P||"provider/model-id",name:(P||"provider/model-id").split("/").pop()}]}}}},null,2)}])})]})}let b="https://cloud.omniroute.online";function j({tool:e,isExpanded:t,onToggle:s,baseUrl:i,hasActiveProviders:n,apiKeys:d,activeProviders:m,cloudEnabled:u,batchStatus:p,lastConfiguredAt:h}){let g=(0,c.c)("cliTools"),[f,y]=(0,a.useState)(null),[j,N]=(0,a.useState)(!1),[v,k]=(0,a.useState)(!1),[w,C]=(0,a.useState)(!1),[S,A]=(0,a.useState)(null),[_,O]=(0,a.useState)(""),[E,T]=(0,a.useState)(""),[P,$]=(0,a.useState)(!1),[z,R]=(0,a.useState)({}),[M,K]=(0,a.useState)(!1),[I,D]=(0,a.useState)(""),F=(0,a.useRef)(!1),[U,L]=(0,a.useState)([]),[B,H]=(0,a.useState)(!1),[J,q]=(0,a.useState)(null),W=!!(f?.installed&&f?.runnable),G=(()=>{if(!W)return null;if(!f.hasOmniRoute)return"not_configured";let e=f.settings?.openAiBaseUrl||"",t=e.includes("localhost")||e.includes("127.0.0.1"),s=u&&b&&e.startsWith(b);return t||s?"configured":"other"})(),V=G||p?.configStatus||null;(0,a.useEffect)(()=>{d?.length>0&&!_&&O(d[0].key)},[d,_]),(0,a.useEffect)(()=>{t&&!f&&(X(),Y(),Z())},[t,f]),(0,a.useEffect)(()=>{if(f?.settings&&!F.current){let e=f.settings.openAiModelId;e&&(T(e),F.current=!0)}},[f]);let Y=async()=>{try{let e=await fetch("/api/models/alias");if(e.ok){let t=await e.json();R(t.aliases||{})}}catch{}},Z=async()=>{try{let e=await fetch("/api/cli-tools/backups?tool=cline");if(e.ok){let t=await e.json();L(t.backups||[])}}catch{}},Q=async e=>{q(e);try{let t=await fetch("/api/cli-tools/backups",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:"cline",backupId:e})});if(t.ok)A({type:"success",text:g("backupRestoredReloading")}),await X(),await Z();else{let e=await t.json();A({type:"error",text:e.error||g("failedRestoreBackup")})}}catch(e){A({type:"error",text:e.message})}finally{q(null)}},X=async()=>{N(!0);try{let e=await fetch("/api/cli-tools/cline-settings"),t=await e.json();y(t)}catch(e){y({error:e.message})}finally{N(!1)}},ee=async()=>{k(!0),A(null);try{let e=I||i||"http://localhost:20128",t=e.endsWith("/v1")?e:`${e}/v1`,s=await fetch("/api/cli-tools/cline-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:t,apiKey:_||"sk_omniroute",model:E})}),l=await s.json();s.ok?(A({type:"success",text:l.message||g("applied")}),await X(),await Z()):A({type:"error",text:l.error||g("failed")})}catch(e){A({type:"error",text:e.message})}finally{k(!1)}},et=async()=>{C(!0),A(null);try{let e=await fetch("/api/cli-tools/cline-settings",{method:"DELETE"}),t=await e.json();e.ok?(A({type:"success",text:t.message||g("resetDone")}),T(""),F.current=!1,await X(),await Z()):A({type:"error",text:t.error||g("failed")})}catch(e){A({type:"error",text:e.message})}finally{C(!1)}};return(0,l.jsxs)(r.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",children:e.image?(0,l.jsx)(o.default,{src:e.image,alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.currentTarget.style.display="none"}}):(0,l.jsx)("span",{className:"material-symbols-outlined text-xl",style:{color:e.color},children:"terminal"})}),(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),(0,l.jsx)(x,{effectiveConfigStatus:V,batchStatus:p,lastConfiguredAt:h})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:g("toolDescriptions.cline")})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-6 pt-6 border-t border-border",children:[j&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted text-sm",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin text-base",children:"progress_activity"}),(0,l.jsx)("span",{children:g("checkingCli",{tool:"Cline"})})]}),f&&!j&&(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3 p-3 rounded-lg border bg-bg-secondary/50 border-border",children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-lg ${W?"text-green-500":"text-yellow-500"}`,children:W?"check_circle":"warning"}),(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("p",{className:"text-sm font-medium",children:W?g("cliDetectedReady",{tool:"Cline"}):f.installed?g("cliNotRunnable",{tool:"Cline"}):g("cliNotDetected",{tool:"Cline"})}),f.commandPath&&(0,l.jsxs)("p",{className:"text-xs text-text-muted",children:[g("binary"),":"," ",(0,l.jsx)("code",{className:"px-1 py-0.5 rounded bg-black/5 dark:bg-white/10",children:f.commandPath})]}),f.globalStatePath&&(0,l.jsxs)("p",{className:"text-xs text-text-muted",children:[g("configPathShort"),":"," ",(0,l.jsx)("code",{className:"px-1 py-0.5 rounded bg-black/5 dark:bg-white/10",children:f.globalStatePath})]})]})]}),W&&(0,l.jsxs)(l.Fragment,{children:["configured"===G&&(0,l.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-green-500/10 border border-green-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-green-500 text-lg",children:"check_circle"}),(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("p",{className:"text-sm text-green-700 dark:text-green-300",children:g("omnirouteConfiguredOpenAiCompatible")}),(0,l.jsxs)("p",{className:"text-xs text-text-muted",children:[g("provider"),": ",(0,l.jsx)("strong",{children:"openai"})," • ",g("model"),":"," ",(0,l.jsx)("strong",{children:f.settings?.openAiModelId||"—"})]})]})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsx)("label",{className:"text-sm text-text-muted",children:g("model")}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("input",{type:"text",value:E,onChange:e=>T(e.target.value),placeholder:g("providerModelPlaceholder"),className:"flex-1 px-3 py-2 bg-bg-secondary rounded-lg text-sm border border-border focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,l.jsx)(r.$n,{variant:"outline",size:"sm",onClick:()=>$(!0),disabled:!n,children:g("select")}),(0,l.jsx)(r.$n,{variant:"ghost",size:"sm",onClick:()=>K(!0),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"edit"})})]})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsx)("label",{className:"text-sm text-text-muted",children:g("apiKey")}),d&&d.length>0?(0,l.jsx)("select",{value:_,onChange:e=>O(e.target.value),className:"px-3 py-2 bg-bg-secondary rounded-lg text-sm border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:d.map(e=>(0,l.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,l.jsx)("p",{className:"text-sm text-text-muted",children:u?g("noApiKeysAvailable"):g("usingDefaultOmniroute")})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2 pt-2",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:ee,disabled:!E,loading:v,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"configured"===G?g("updateConfig"):g("applyConfig")]}),"configured"===G&&(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:et,loading:w,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restart_alt"}),g("reset")]})]}),S&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-3 py-2 rounded-lg text-sm ${"success"===S.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"success"===S.type?"check_circle":"error"}),(0,l.jsx)("span",{children:S.text})]}),(0,l.jsxs)("div",{className:"border-t border-border pt-3 mt-1",children:[(0,l.jsxs)("button",{onClick:()=>H(!B),className:"flex items-center gap-2 text-sm text-text-muted hover:text-text transition-colors",children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-[16px] transition-transform ${B?"rotate-90":""}`,children:"chevron_right"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"backup"}),g("backups")," ",U.length>0&&`(${U.length})`]}),B&&U.length>0&&(0,l.jsx)("div",{className:"mt-2 flex flex-col gap-1.5 pl-6",children:U.map(e=>(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2 p-2 rounded bg-bg-secondary/50 text-xs",children:[(0,l.jsxs)("div",{className:"flex flex-col",children:[(0,l.jsx)("span",{className:"font-medium",children:e.originalFile}),(0,l.jsx)("span",{className:"text-text-muted",children:new Date(e.createdAt).toLocaleString()})]}),(0,l.jsx)(r.$n,{variant:"ghost",size:"sm",onClick:()=>Q(e.id),loading:J===e.id,children:g("restore")})]},e.id))}),B&&0===U.length&&(0,l.jsx)("p",{className:"mt-2 pl-6 text-xs text-text-muted",children:g("noBackupsAvailable")})]})]})]})]}),(0,l.jsx)(r.rq,{isOpen:P,onClose:()=>$(!1),onSelect:e=>{T(e.value),$(!1)},selectedModel:E,activeProviders:m,title:g("selectModelForTool",{tool:"Cline"})}),M&&(0,l.jsx)(r.uR,{isOpen:M,onClose:()=>K(!1),title:g("clineManualConfiguration"),...{onApply:e=>{e.model&&T(e.model),e.apiKey&&O(e.apiKey),e.baseUrl&&D(e.baseUrl),K(!1)},currentConfig:{model:E,apiKey:_,baseUrl:I||i}}})]})}function N({tool:e,isExpanded:t,onToggle:s,baseUrl:i,hasActiveProviders:n,apiKeys:d,activeProviders:m,cloudEnabled:u,batchStatus:p,lastConfiguredAt:h}){let g=(0,c.c)("cliTools"),[f,y]=(0,a.useState)(null),[b,j]=(0,a.useState)(!1),[N,v]=(0,a.useState)(!1),[k,w]=(0,a.useState)(!1),[C,S]=(0,a.useState)(null),[A,_]=(0,a.useState)(""),[O,E]=(0,a.useState)(""),[T,P]=(0,a.useState)(!1),[$,z]=(0,a.useState)({}),[R,M]=(0,a.useState)(!1),[K,I]=(0,a.useState)(""),D=(0,a.useRef)(!1),[F,U]=(0,a.useState)([]),[L,B]=(0,a.useState)(!1),[H,J]=(0,a.useState)(null),q=!!(f?.installed&&f?.runnable),W=q?f.hasOmniRoute?"configured":"not_configured":null,G=W||p?.configStatus||null;(0,a.useEffect)(()=>{d?.length>0&&!A&&_(d[0].key)},[d,A]),(0,a.useEffect)(()=>{t&&!f&&(Q(),V(),Y())},[t,f]);let V=async()=>{try{let e=await fetch("/api/models/alias");if(e.ok){let t=await e.json();z(t.aliases||{})}}catch{}},Y=async()=>{try{let e=await fetch("/api/cli-tools/backups?tool=kilo");if(e.ok){let t=await e.json();U(t.backups||[])}}catch{}},Z=async e=>{J(e);try{let t=await fetch("/api/cli-tools/backups",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:"kilo",backupId:e})});if(t.ok)S({type:"success",text:g("backupRestoredReloading")}),await Q(),await Y();else{let e=await t.json();S({type:"error",text:e.error||g("failedRestoreBackup")})}}catch(e){S({type:"error",text:e.message})}finally{J(null)}},Q=async()=>{j(!0);try{let e=await fetch("/api/cli-tools/kilo-settings"),t=await e.json();y(t)}catch(e){y({error:e.message})}finally{j(!1)}},X=async()=>{v(!0),S(null);try{let e=K||i||"http://localhost:20128",t=e.endsWith("/v1")?e:`${e}/v1`,s=await fetch("/api/cli-tools/kilo-settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:t,apiKey:A||"sk_omniroute",model:O})}),l=await s.json();s.ok?(S({type:"success",text:l.message||g("applied")}),await Q(),await Y()):S({type:"error",text:l.error||g("failed")})}catch(e){S({type:"error",text:e.message})}finally{v(!1)}},ee=async()=>{w(!0),S(null);try{let e=await fetch("/api/cli-tools/kilo-settings",{method:"DELETE"}),t=await e.json();e.ok?(S({type:"success",text:t.message||g("resetDone")}),E(""),D.current=!1,await Q(),await Y()):S({type:"error",text:t.error||g("failed")})}catch(e){S({type:"error",text:e.message})}finally{w(!1)}};return(0,l.jsxs)(r.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",children:e.image?(0,l.jsx)(o.default,{src:e.image,alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.currentTarget.style.display="none"}}):(0,l.jsx)("span",{className:"material-symbols-outlined text-xl",style:{color:e.color},children:"terminal"})}),(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),(0,l.jsx)(x,{effectiveConfigStatus:G,batchStatus:p,lastConfiguredAt:h})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:g("toolDescriptions.kilo")})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-6 pt-6 border-t border-border",children:[b&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted text-sm",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin text-base",children:"progress_activity"}),(0,l.jsx)("span",{children:g("checkingCli",{tool:"Kilo Code"})})]}),f&&!b&&(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3 p-3 rounded-lg border bg-bg-secondary/50 border-border",children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-lg ${q?"text-green-500":"text-yellow-500"}`,children:q?"check_circle":"warning"}),(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("p",{className:"text-sm font-medium",children:q?g("cliDetectedReady",{tool:"Kilo Code"}):f.installed?g("cliNotRunnable",{tool:"Kilo Code"}):g("cliNotDetected",{tool:"Kilo Code"})}),f.commandPath&&(0,l.jsxs)("p",{className:"text-xs text-text-muted",children:[g("binary"),":"," ",(0,l.jsx)("code",{className:"px-1 py-0.5 rounded bg-black/5 dark:bg-white/10",children:f.commandPath})]}),f.authPath&&(0,l.jsxs)("p",{className:"text-xs text-text-muted",children:[g("auth"),":"," ",(0,l.jsx)("code",{className:"px-1 py-0.5 rounded bg-black/5 dark:bg-white/10",children:f.authPath})]})]})]}),q&&(0,l.jsxs)(l.Fragment,{children:["configured"===W&&(0,l.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-green-500/10 border border-green-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-green-500 text-lg",children:"check_circle"}),(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("p",{className:"text-sm text-green-700 dark:text-green-300",children:g("omnirouteConfiguredOpenAiCompatible")}),(0,l.jsxs)("p",{className:"text-xs text-text-muted",children:[g("providers"),":"," ",(0,l.jsx)("strong",{children:f.settings?.auth?.join(", ")||"—"})]})]})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsx)("label",{className:"text-sm text-text-muted",children:g("model")}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("input",{type:"text",value:O,onChange:e=>E(e.target.value),placeholder:g("providerModelPlaceholder"),className:"flex-1 px-3 py-2 bg-bg-secondary rounded-lg text-sm border border-border focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,l.jsx)(r.$n,{variant:"outline",size:"sm",onClick:()=>P(!0),disabled:!n,children:g("select")}),(0,l.jsx)(r.$n,{variant:"ghost",size:"sm",onClick:()=>M(!0),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"edit"})})]})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,l.jsx)("label",{className:"text-sm text-text-muted",children:g("apiKey")}),d&&d.length>0?(0,l.jsx)("select",{value:A,onChange:e=>_(e.target.value),className:"px-3 py-2 bg-bg-secondary rounded-lg text-sm border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:d.map(e=>(0,l.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,l.jsx)("p",{className:"text-sm text-text-muted",children:u?g("noApiKeysAvailable"):g("usingDefaultOmniroute")})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2 pt-2",children:[(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:X,disabled:!O,loading:N,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"configured"===W?g("updateConfig"):g("applyConfig")]}),"configured"===W&&(0,l.jsxs)(r.$n,{variant:"outline",size:"sm",onClick:ee,loading:k,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restart_alt"}),g("reset")]})]}),C&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-3 py-2 rounded-lg text-sm ${"success"===C.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"success"===C.type?"check_circle":"error"}),(0,l.jsx)("span",{children:C.text})]}),(0,l.jsxs)("div",{className:"border-t border-border pt-3 mt-1",children:[(0,l.jsxs)("button",{onClick:()=>B(!L),className:"flex items-center gap-2 text-sm text-text-muted hover:text-text transition-colors",children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-[16px] transition-transform ${L?"rotate-90":""}`,children:"chevron_right"}),(0,l.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"backup"}),g("backups")," ",F.length>0&&`(${F.length})`]}),L&&F.length>0&&(0,l.jsx)("div",{className:"mt-2 flex flex-col gap-1.5 pl-6",children:F.map(e=>(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2 p-2 rounded bg-bg-secondary/50 text-xs",children:[(0,l.jsxs)("div",{className:"flex flex-col",children:[(0,l.jsx)("span",{className:"font-medium",children:e.originalFile}),(0,l.jsx)("span",{className:"text-text-muted",children:new Date(e.createdAt).toLocaleString()})]}),(0,l.jsx)(r.$n,{variant:"ghost",size:"sm",onClick:()=>Z(e.id),loading:H===e.id,children:g("restore")})]},e.id))}),L&&0===F.length&&(0,l.jsx)("p",{className:"mt-2 pl-6 text-xs text-text-muted",children:g("noBackupsAvailable")})]})]})]})]}),(0,l.jsx)(r.rq,{isOpen:T,onClose:()=>P(!1),onSelect:e=>{E(e.value),P(!1)},selectedModel:O,activeProviders:m,title:g("selectModelForTool",{tool:"Kilo Code"})}),R&&(0,l.jsx)(r.uR,{isOpen:R,onClose:()=>M(!1),title:g("kiloManualConfiguration"),...{onApply:e=>{e.model&&E(e.model),e.apiKey&&_(e.apiKey),e.baseUrl&&I(e.baseUrl),M(!1)},currentConfig:{model:O,apiKey:A,baseUrl:K||i}}})]})}var v=s(32661);function k({toolId:e,tool:t,isExpanded:s,onToggle:i,baseUrl:n,apiKeys:d,activeProviders:x=[],cloudEnabled:m=!1,batchStatus:u}){let p,h,g,f=(0,c.c)("cliTools"),y=(0,a.useCallback)((e,t,s)=>{try{return f(e,s)}catch{return t}},[f]),[b,j]=(0,a.useState)(null),[N,k]=(0,a.useState)(!1),[w,C]=(0,a.useState)(""),[S,A]=(0,a.useState)(null),[_,O]=(0,a.useState)(null),[E,T]=(0,a.useState)(!1),P=(0,a.useRef)(!1),[$,z]=(0,a.useState)(()=>d?.length>0?d[0].key:"");(0,a.useEffect)(()=>{let t=localStorage.getItem(`omniroute-cli-model-${e}`);t&&C(t);let s=localStorage.getItem(`omniroute-cli-key-${e}`);s&&d?.some(e=>e.key===s)&&z(s)},[e,d]);let R=(0,a.useCallback)(t=>{C(t),t?localStorage.setItem(`omniroute-cli-model-${e}`,t):localStorage.removeItem(`omniroute-cli-model-${e}`)},[e]),M=(0,a.useCallback)(t=>{z(t),t&&localStorage.setItem(`omniroute-cli-key-${e}`,t)},[e]);(0,a.useEffect)(()=>{!s||S||P.current||(P.current=!0,fetch(`/api/cli-tools/runtime/${e}`).then(e=>e.json()).then(e=>A(e)).catch(e=>A({error:e?.message||f("runtimeCheckFailed")})))},[s,S,e]);let K=e=>{let t=$&&$.trim()?$:m?f("yourApiKeyPlaceholder"):"sk_omniroute",s=n||"http://localhost:20128",l=s.endsWith("/v1")?s:`${s}/v1`;return e.replace(/\{\{baseUrl\}\}/g,l).replace(/\{\{apiKey\}\}/g,t).replace(/\{\{model\}\}/g,w||f("modelPlaceholder"))},I=async(e,t)=>{await (0,v.l)(K(e)),j(t),setTimeout(()=>j(null),2e3)},D=x.length>0,F=s&&null===S,U=async()=>{T(!0),O(null);try{let t=$&&$.trim()?$:m?"":"sk_omniroute",s=n||"http://localhost:20128",l=s.endsWith("/v1")?s:`${s}/v1`,a=await fetch(`/api/cli-tools/guide-settings/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:l,apiKey:t,model:w})}),r=await a.json();a.ok?O({type:"success",text:r.message||f("configurationSaved")}):O({type:"error",text:r.error||f("failedToSave")})}catch(e){O({type:"error",text:e.message})}finally{T(!1)}},L=["continue"].includes(e),B=()=>!t.requiresCloud||!!m;return(0,l.jsxs)(r.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:i,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",children:t.image?(0,l.jsx)(o.default,{src:t.image,alt:t.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.currentTarget.style.display="none"}}):t.icon?(0,l.jsx)("span",{className:"material-symbols-outlined text-xl",style:{color:t.color},children:t.icon}):(0,l.jsx)(o.default,{src:`/providers/${e}.png`,alt:t.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.currentTarget.style.display="none"}})}),(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:t.name}),(p=S?.reason==="not_required"||"guide"===t.configType,h=S?S.installed&&S.runnable:u?.installed&&u?.runnable,g=S?S.installed:u?.installed,p?(0,l.jsxs)("span",{className:"inline-flex items-center gap-1.5 px-2 py-0.5 text-[11px] font-medium rounded-full bg-blue-500/10 text-blue-600 dark:text-blue-400",children:[(0,l.jsx)("span",{className:"size-1.5 rounded-full bg-blue-500"}),f("guide")]}):h?(0,l.jsxs)("span",{className:"inline-flex items-center gap-1.5 px-2 py-0.5 text-[11px] font-medium rounded-full bg-green-500/10 text-green-600 dark:text-green-400",children:[(0,l.jsx)("span",{className:"size-1.5 rounded-full bg-green-500"}),f("detected")]}):!1===g&&(S||u)?(0,l.jsxs)("span",{className:"inline-flex items-center gap-1.5 px-2 py-0.5 text-[11px] font-medium rounded-full bg-zinc-500/10 text-zinc-500 dark:text-zinc-400",children:[(0,l.jsx)("span",{className:"size-1.5 rounded-full bg-zinc-400 dark:bg-zinc-500"}),f("notInstalled")]}):g&&!h&&(S||u)?(0,l.jsxs)("span",{className:"inline-flex items-center gap-1.5 px-2 py-0.5 text-[11px] font-medium rounded-full bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",children:[(0,l.jsx)("span",{className:"size-1.5 rounded-full bg-yellow-500"}),f("notReady")]}):null)]}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:y(`toolDescriptions.${e}`,t.description)})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${s?"rotate-180":""}`,children:"expand_more"})]}),s&&(0,l.jsx)("div",{className:"mt-6 pt-6 border-t border-border",children:t.guideSteps?(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[F&&(0,l.jsxs)("div",{className:"flex items-center gap-2 text-text-muted text-sm",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin text-base",children:"progress_activity"}),(0,l.jsx)("span",{children:f("checkingRuntime")})]}),!F&&S&&!S.error&&(0,l.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-blue-500/10 border border-blue-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-blue-500 text-lg",children:"not_required"===S.reason?"info":S.installed&&S.runnable?"check_circle":"warning"}),(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("p",{className:"text-sm text-blue-700 dark:text-blue-300",children:"not_required"===S.reason?f("guideOnlyIntegration"):S.installed&&S.runnable?f("cliRuntimeDetected"):S.installed?f("cliFoundNotRunnable",{reason:S.reason?`: ${S.reason}`:""}):f("cliRuntimeNotDetected")}),S.commandPath&&(0,l.jsxs)("p",{className:"text-xs text-text-muted",children:[f("binary"),":"," ",(0,l.jsx)("code",{className:"px-1 py-0.5 rounded bg-black/5 dark:bg-white/10",children:S.commandPath})]}),S.configPath&&(0,l.jsxs)("p",{className:"text-xs text-text-muted",children:[f("configPath"),":"," ",(0,l.jsx)("code",{className:"px-1 py-0.5 rounded bg-black/5 dark:bg-white/10",children:S.configPath})]})]})]}),!F&&S?.error&&(0,l.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-red-500/10 border border-red-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-red-500 text-lg",children:"error"}),(0,l.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:f("failedCheckRuntimeStatus")})]}),t.notes&&0!==t.notes.length?(0,l.jsx)("div",{className:"flex flex-col gap-2 mb-4",children:t.notes.map((t,s)=>{if("cloudCheck"===t.type&&m)return null;let a="warning"===t.type,r="cloudCheck"===t.type&&!m,i="bg-blue-500/10 border-blue-500/30",n="text-blue-600 dark:text-blue-400",o="text-blue-500",c="info";return a?(i="bg-yellow-500/10 border-yellow-500/30",n="text-yellow-600 dark:text-yellow-400",o="text-yellow-500",c="warning"):r&&(i="bg-red-500/10 border-red-500/30",n="text-red-600 dark:text-red-400",o="text-red-500",c="error"),(0,l.jsxs)("div",{className:`flex items-start gap-3 p-3 rounded-lg border ${i}`,children:[(0,l.jsx)("span",{className:`material-symbols-outlined text-lg ${o}`,children:c}),(0,l.jsx)("p",{className:`text-sm ${n}`,children:y(`guides.${e}.notes.${s}`,t.text)})]},s)})}):null,B()&&t.guideSteps.map(s=>(0,l.jsxs)("div",{className:"flex items-start gap-4",children:[(0,l.jsx)("div",{className:"size-8 rounded-full flex items-center justify-center shrink-0 text-sm font-semibold text-white",style:{backgroundColor:t.color},children:s.step}),(0,l.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,l.jsx)("p",{className:"font-medium text-text",children:y(`guides.${e}.steps.${s.step}.title`,s.title)}),s.desc&&(0,l.jsx)("p",{className:"text-sm text-text-muted mt-0.5",children:y(`guides.${e}.steps.${s.step}.desc`,s.desc)}),"apiKeySelector"===s.type&&(0,l.jsx)("div",{className:"mt-2 flex items-center gap-2",children:d&&d.length>0?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("select",{value:$,onChange:e=>M(e.target.value),className:"flex-1 px-3 py-2 bg-bg-secondary rounded-lg text-sm border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:d.map(e=>(0,l.jsx)("option",{value:e.key,children:e.key},e.id))}),(0,l.jsx)("button",{onClick:()=>I($,"apiKey"),className:"shrink-0 px-3 py-2 bg-bg-secondary hover:bg-bg-tertiary rounded-lg border border-border transition-colors",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-lg",children:"apiKey"===b?"check":"content_copy"})})]}):(0,l.jsx)("span",{className:"text-sm text-text-muted",children:m?f("noApiKeysCreateOne"):"sk_omniroute"})}),"modelSelector"===s.type&&(0,l.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,l.jsx)("input",{type:"text",value:w,onChange:e=>R(e.target.value),placeholder:f("modelPlaceholder"),className:"flex-1 px-3 py-2 bg-bg-secondary rounded-lg text-sm border border-border focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,l.jsx)("button",{onClick:()=>k(!0),disabled:!D,className:`shrink-0 px-3 py-2 rounded-lg border text-sm transition-colors ${D?"bg-bg-secondary border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:f("selectModel")}),w&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("button",{onClick:()=>I(w,"model"),className:"shrink-0 px-3 py-2 bg-bg-secondary hover:bg-bg-tertiary rounded-lg border border-border transition-colors",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-lg",children:"model"===b?"check":"content_copy"})}),(0,l.jsx)("button",{onClick:()=>R(""),className:"p-2 text-text-muted hover:text-red-500 rounded transition-colors",title:f("clear"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-lg",children:"close"})})]})]}),s.value&&(0,l.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,l.jsx)("code",{className:"flex-1 px-3 py-2 bg-bg-secondary rounded-lg text-sm font-mono border border-border truncate",children:K(s.value)}),s.copyable&&(0,l.jsx)("button",{onClick:()=>I(s.value,`${s.step}-${s.title}`),className:"shrink-0 px-3 py-2 bg-bg-secondary hover:bg-bg-tertiary rounded-lg border border-border transition-colors",children:(0,l.jsx)("span",{className:"material-symbols-outlined text-lg",children:b===`${s.step}-${s.title}`?"check":"content_copy"})})]})]})]},s.step)),B()&&t.codeBlock&&(0,l.jsxs)("div",{className:"mt-2",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,l.jsx)("span",{className:"text-xs text-text-muted uppercase tracking-wide",children:t.codeBlock.language}),(0,l.jsxs)("button",{onClick:()=>I(t.codeBlock.code,"codeblock"),className:"flex items-center gap-1 px-2 py-1 text-xs bg-bg-secondary hover:bg-bg-tertiary rounded border border-border transition-colors",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-sm",children:"codeblock"===b?"check":"content_copy"}),"codeblock"===b?f("copied"):f("copy")]})]}),(0,l.jsx)("pre",{className:"p-4 bg-bg-secondary rounded-lg border border-border overflow-x-auto",children:(0,l.jsx)("code",{className:"text-sm font-mono whitespace-pre",children:K(t.codeBlock.code)})})]}),B()&&(0,l.jsxs)("div",{className:"mt-2",children:[_&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs mb-2 ${"success"===_.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===_.type?"check_circle":"error"}),(0,l.jsx)("span",{children:_.text})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[L&&(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:U,disabled:!w,loading:E,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),f("saveConfig")]}),t.codeBlock&&(0,l.jsxs)(r.$n,{variant:L?"outline":"primary",size:"sm",onClick:()=>I(t.codeBlock.code,"codeblock"),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"codeblock"===b?"check":"content_copy"}),"codeblock"===b?f("copied"):f("copyConfig")]}),w&&(0,l.jsxs)("span",{className:"text-xs text-text-muted flex items-center gap-1",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] text-green-500",children:"check_circle"}),f("selectionSaved")]})]})]})]}):(0,l.jsx)("p",{className:"text-text-muted text-sm",children:f("comingSoon")})}),(0,l.jsx)(r.rq,{isOpen:N,onClose:()=>k(!1),onSelect:e=>{R(e.value)},selectedModel:w,activeProviders:x,title:f("selectModel")})]})}function w({tool:e,isExpanded:t,onToggle:s,baseUrl:i,apiKeys:n,activeProviders:d,hasActiveProviders:x,cloudEnabled:m}){let u=(0,c.c)("cliTools"),[p,h]=(0,a.useState)(null),[g,f]=(0,a.useState)(!1),[y,b]=(0,a.useState)(!1),[j,N]=(0,a.useState)(""),[v,k]=(0,a.useState)(""),[w,C]=(0,a.useState)(null),[S,A]=(0,a.useState)({}),[_,O]=(0,a.useState)(!1),[E,T]=(0,a.useState)(null);(0,a.useEffect)(()=>{n?.length>0&&!v&&k(n[0].key)},[n,v]),(0,a.useEffect)(()=>{t&&!p&&($(),P())},[t,p]);let P=async()=>{try{let e=await fetch("/api/cli-tools/antigravity-mitm/alias?tool=antigravity");if(e.ok){let t=(await e.json()).aliases||{};Object.keys(t).length>0&&A(t)}}catch(e){console.log("Error loading saved mappings:",e)}},$=async()=>{try{let e=await fetch("/api/cli-tools/antigravity-mitm");if(e.ok){let t=await e.json();h(t)}}catch(e){console.log("Error fetching status:",e),h({running:!1})}},z="u">typeof navigator&&navigator.userAgent?.includes("Windows"),R=async e=>{f(!0),C(null);try{let t=v?.trim()||(n?.length>0?n[0].key:null)||(m?null:"sk_omniroute"),s=await fetch("/api/cli-tools/antigravity-mitm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:t,sudoPassword:e})}),l=await s.json();s.ok?(C({type:"success",text:u("mitmStarted")}),b(!1),N(""),$()):C({type:"error",text:l.error||u("failedStart")})}catch(e){C({type:"error",text:e.message})}finally{f(!1)}},M=async e=>{f(!0),C(null);try{let t=await fetch("/api/cli-tools/antigravity-mitm",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:e})}),s=await t.json();t.ok?(C({type:"success",text:u("mitmStopped")}),b(!1),N(""),$()):C({type:"error",text:s.error||u("failedStop")})}catch(e){C({type:"error",text:e.message})}finally{f(!1)}},K=()=>{j.trim()?p?.running?M(j):R(j):C({type:"error",text:u("sudoPasswordRequiredError")})},I=(e,t)=>{A(s=>({...s,[e]:t}))},D=async()=>{f(!0),C(null);try{let e=await fetch("/api/cli-tools/antigravity-mitm/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:"antigravity",mappings:S})});if(!e.ok){let t=await e.json();throw Error(t.error||u("failedSaveMappings"))}C({type:"success",text:u("mappingsSaved")})}catch(e){C({type:"error",text:e.message})}finally{f(!1)}},F=p?.running;return(0,l.jsxs)(r.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,l.jsx)(o.default,{src:"/providers/antigravity.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.currentTarget.style.display="none"}})}),(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),F?(0,l.jsx)(r.Ex,{variant:"success",size:"sm",children:u("active")}):(0,l.jsx)(r.Ex,{variant:"default",size:"sm",children:u("inactive")})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:u("toolDescriptions.antigravity")})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[(0,l.jsx)("div",{className:"flex items-center gap-2",children:F?(0,l.jsxs)("button",{onClick:()=>{z||p?.hasCachedPassword?M(""):(b(!0),C(null))},disabled:g,className:"px-4 py-2 rounded-lg bg-red-500/10 border border-red-500/30 text-red-500 font-medium text-sm flex items-center gap-2 hover:bg-red-500/20 transition-colors disabled:opacity-50",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"stop_circle"}),u("stopMitm")]}):(0,l.jsxs)("button",{onClick:()=>{z||p?.hasCachedPassword?R(""):(b(!0),C(null))},disabled:g||!x,className:"px-4 py-2 rounded-lg bg-primary/10 border border-primary/30 text-primary font-medium text-sm flex items-center gap-2 hover:bg-primary/20 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"play_circle"}),u("startMitm")]})}),w?.type==="error"&&(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,l.jsx)("span",{children:w.text})]}),F&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:u("apiKey")}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),n.length>0?(0,l.jsx)("select",{value:v,onChange:e=>k(e.target.value),className:"flex-1 px-2 py-1.5 bg-surface rounded text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:n.map(e=>(0,l.jsx)("option",{value:e.key,children:e.key},e.id))}):(0,l.jsx)("span",{className:"flex-1 text-xs text-text-muted px-2 py-1.5",children:m?u("noApiKeysCreateOne"):u("defaultOmnirouteKey")})]}),e.defaultModels.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-sm font-semibold text-text-main text-right",children:e.name}),(0,l.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,l.jsx)("input",{type:"text",value:S[e.alias]||"",onChange:t=>I(e.alias,t.target.value),placeholder:u("modelPlaceholder"),className:"flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,l.jsx)("button",{onClick:()=>{T(e.alias),O(!0)},disabled:!x,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 whitespace-nowrap ${x?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:u("select")}),S[e.alias]&&(0,l.jsx)("button",{onClick:()=>I(e.alias,""),className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:u("clear"),children:(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]},e.alias)),(0,l.jsx)("div",{className:"flex items-center gap-2",children:(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:D,disabled:g||0===Object.keys(S).length,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),u("saveMappings")]})})]}),!F&&(0,l.jsxs)("div",{className:"flex flex-col gap-1.5 px-1",children:[(0,l.jsxs)("p",{className:"text-xs text-text-muted",children:[(0,l.jsx)("span",{className:"font-medium text-text-main",children:u("howItWorks")})," ",u("antigravityHowWorksDesc")]}),(0,l.jsxs)("div",{className:"flex flex-col gap-0.5 text-[11px] text-text-muted",children:[(0,l.jsx)("span",{children:u("antigravityStep1")}),(0,l.jsxs)("span",{children:[u("antigravityStep2Prefix")," ",(0,l.jsx)("code",{className:"text-[10px] bg-surface px-1 rounded",children:"daily-cloudcode-pa.googleapis.com"})," ",u("antigravityStep2Suffix")]}),(0,l.jsx)("span",{children:u("antigravityStep3")})]})]})]}),(0,l.jsx)(r.aF,{isOpen:y,onClose:()=>{b(!1),N(""),C(null)},title:u("sudoPasswordRequiredTitle"),size:"sm",children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[20px]",children:"warning"}),(0,l.jsx)("p",{className:"text-xs text-text-muted",children:u("sudoPasswordHint")})]}),(0,l.jsx)(r.pd,{type:"password",placeholder:u("enterSudoPassword"),value:j,onChange:e=>N(e.target.value),onKeyDown:e=>{"Enter"!==e.key||g||K()}}),w&&(0,l.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===w.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===w.type?"check_circle":"error"}),(0,l.jsx)("span",{children:w.text})]}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,l.jsx)(r.$n,{variant:"ghost",size:"sm",onClick:()=>{b(!1),N(""),C(null)},disabled:g,children:u("cancel")}),(0,l.jsx)(r.$n,{variant:"primary",size:"sm",onClick:K,loading:g,children:u("confirm")})]})]})}),(0,l.jsx)(r.rq,{isOpen:_,onClose:()=>O(!1),onSelect:e=>{E&&A(t=>({...t,[E]:e.value}))},selectedModel:E?S[E]:null,activeProviders:d,title:u("selectModelForAlias",{alias:E||""})})]})}function C({tool:e,isExpanded:t,onToggle:s,baseUrl:i,apiKeys:n,activeProviders:d=[],hasActiveProviders:x=!1,cloudEnabled:m=!1,batchStatus:u}){let p=(0,c.c)("cliTools"),[h,g]=(0,a.useState)(null),[f,y]=(0,a.useState)(()=>{try{let e=localStorage.getItem("omniroute-copilot-selected-models");return e?new Set(JSON.parse(e)):new Set}catch{return new Set}}),[b,j]=(0,a.useState)(()=>{{let e=localStorage.getItem("omniroute-cli-key-copilot");if(e&&n?.some(t=>t.key===e))return e}return n?.length>0?n[0].key:""}),[N,v]=(0,a.useState)(128e3),[k,w]=(0,a.useState)(16e3),[C,S]=(0,a.useState)(!0),[A,_]=(0,a.useState)(!1),[O,E]=(0,a.useState)([]),[T,P]=(0,a.useState)(!1),[$,z]=(0,a.useState)("");(0,a.useEffect)(()=>{if(!t||T)return;let e=!1;return fetch("/v1/models").then(e=>e.json()).then(t=>{e||(E((t.data||[]).filter(e=>e&&!e.type&&!e.parent&&e.id).map(e=>({value:e.id,label:e.id}))),P(!0))}).catch(()=>{e||P(!0)}),()=>{e=!0}},[t,T]);let R=$?O.filter(e=>e.label.toLowerCase().includes($.toLowerCase())):O;(0,a.useEffect)(()=>{f.size>0&&localStorage.setItem("omniroute-copilot-selected-models",JSON.stringify([...f]))},[f]);let M=()=>JSON.stringify({name:"OmniRoute",vendor:"azure",apiKey:"${input:chat.lm.secret.omniroute}",models:[...f].map(e=>({id:e,name:e,url:`${i}/v1/chat/completions#models.ai.azure.com`,toolCalling:C,vision:A,maxInputTokens:N,maxOutputTokens:k}))},null,2),K=async(e,t)=>{await navigator.clipboard.writeText(e),g(t),setTimeout(()=>g(null),2e3)};return(0,l.jsxs)(r.Zp,{padding:"sm",className:"overflow-hidden",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("div",{className:"size-8 rounded-lg flex items-center justify-center shrink-0",children:(0,l.jsx)(o.default,{src:e.image||"/providers/copilot.png",alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.currentTarget.style.display="none"}})}),(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"font-medium text-sm",children:e.name}),(0,l.jsxs)("span",{className:"inline-flex items-center gap-1.5 px-2 py-0.5 text-[11px] font-medium rounded-full bg-blue-500/10 text-blue-600 dark:text-blue-400",children:[(0,l.jsx)("span",{className:"size-1.5 rounded-full bg-blue-500"}),p("guide")]})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted truncate",children:e.description})]})]}),(0,l.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,l.jsx)("div",{className:"mt-6 pt-6 border-t border-border",children:(0,l.jsxs)("div",{className:"flex flex-col gap-5",children:[(0,l.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-blue-500/10 border border-blue-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-blue-500 text-lg",children:"info"}),(0,l.jsxs)("div",{className:"text-sm text-blue-700 dark:text-blue-300",children:[(0,l.jsx)("p",{className:"font-medium",children:"GitHub Copilot Config Generator"}),(0,l.jsxs)("p",{className:"mt-1 text-xs opacity-80",children:["Generates the"," ",(0,l.jsx)("code",{className:"px-1 py-0.5 rounded bg-black/5 dark:bg-white/10",children:"chatLanguageModels.json"})," ","block for VS Code GitHub Copilot using the Azure vendor pattern. Select the models you want, then copy the JSON into your config file."]})]})]}),(0,l.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-lg",children:"warning"}),(0,l.jsxs)("p",{className:"text-xs text-yellow-600 dark:text-yellow-400",children:["This configuration uses the Azure vendor workaround for custom model lists. Tested with ",(0,l.jsx)("strong",{children:"VS Code ≥ 1.109"})," and"," ",(0,l.jsx)("strong",{children:"GitHub Copilot Chat ≥ v0.37"}),". Future extension updates may change this behavior."]})]}),m&&n?.length>0&&(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,l.jsx)("div",{className:"size-6 rounded-full flex items-center justify-center text-xs font-semibold text-white",style:{backgroundColor:e.color},children:"1"}),(0,l.jsx)("span",{className:"font-medium text-sm",children:"API Key"})]}),(0,l.jsx)("select",{value:b,onChange:e=>{var t;j(t=e.target.value),t&&localStorage.setItem("omniroute-cli-key-copilot",t)},className:"w-full px-3 py-2 bg-bg-secondary rounded-lg text-sm border border-border focus:outline-none focus:ring-1 focus:ring-primary/50",children:n.map(e=>(0,l.jsx)("option",{value:e.key,children:e.key},e.id))})]}),(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{className:"size-6 rounded-full flex items-center justify-center text-xs font-semibold text-white",style:{backgroundColor:e.color},children:m&&n?.length>0?"2":"1"}),(0,l.jsxs)("span",{className:"font-medium text-sm",children:["Select Models (",f.size,"/",R.length,")"]})]}),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)("button",{onClick:()=>{y(new Set(O.map(e=>e.value)))},className:"px-2 py-1 text-xs bg-bg-secondary hover:bg-bg-tertiary rounded border border-border transition-colors",children:"Select All"}),(0,l.jsx)("button",{onClick:()=>{y(new Set)},className:"px-2 py-1 text-xs bg-bg-secondary hover:bg-bg-tertiary rounded border border-border transition-colors",children:"Clear"})]})]}),(0,l.jsx)("div",{className:"mb-2",children:(0,l.jsx)("input",{type:"text",value:$,onChange:e=>z(e.target.value),placeholder:"Filter models...",className:"w-full px-3 py-1.5 bg-bg-secondary rounded-lg text-sm border border-border focus:outline-none focus:ring-1 focus:ring-primary/50"})}),T||0!==O.length?0===R.length&&0===O.length?(0,l.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-lg",children:"warning"}),(0,l.jsx)("p",{className:"text-sm text-yellow-600 dark:text-yellow-400",children:p("noActiveProviders")})]}):(0,l.jsx)("div",{className:"max-h-64 overflow-y-auto rounded-lg border border-border bg-bg-secondary",children:R.map(e=>(0,l.jsxs)("label",{className:"flex items-center gap-3 px-3 py-2 hover:bg-bg-tertiary cursor-pointer border-b border-border last:border-0 transition-colors",children:[(0,l.jsx)("input",{type:"checkbox",checked:f.has(e.value),onChange:()=>{var t;return t=e.value,void y(e=>{let s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s})},className:"rounded border-border text-primary accent-[#1F6FEB]"}),(0,l.jsx)("span",{className:"text-sm font-mono truncate",children:e.label})]},e.value))}):(0,l.jsxs)("div",{className:"flex items-center gap-2 p-3 text-text-muted text-sm",children:[(0,l.jsx)("span",{className:"material-symbols-outlined animate-spin text-base",children:"progress_activity"}),(0,l.jsx)("span",{children:"Loading models..."})]})]}),(0,l.jsxs)("details",{className:"group",children:[(0,l.jsxs)("summary",{className:"flex items-center gap-2 cursor-pointer text-sm text-text-muted hover:text-text-main transition-colors",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-base group-open:rotate-90 transition-transform",children:"chevron_right"}),"Advanced Options"]}),(0,l.jsxs)("div",{className:"mt-3 grid grid-cols-2 gap-3 pl-6",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs text-text-muted block mb-1",children:"Max Input Tokens"}),(0,l.jsx)("input",{type:"number",value:N,onChange:e=>v(Number(e.target.value)||128e3),className:"w-full px-3 py-1.5 bg-bg-secondary rounded-lg text-sm border border-border focus:outline-none focus:ring-1 focus:ring-primary/50"})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs text-text-muted block mb-1",children:"Max Output Tokens"}),(0,l.jsx)("input",{type:"number",value:k,onChange:e=>w(Number(e.target.value)||16e3),className:"w-full px-3 py-1.5 bg-bg-secondary rounded-lg text-sm border border-border focus:outline-none focus:ring-1 focus:ring-primary/50"})]}),(0,l.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer",children:[(0,l.jsx)("input",{type:"checkbox",checked:C,onChange:e=>S(e.target.checked),className:"rounded border-border accent-[#1F6FEB]"}),(0,l.jsx)("span",{className:"text-sm",children:"Tool Calling"})]}),(0,l.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer",children:[(0,l.jsx)("input",{type:"checkbox",checked:A,onChange:e=>_(e.target.checked),className:"rounded border-border accent-[#1F6FEB]"}),(0,l.jsx)("span",{className:"text-sm",children:"Vision"})]})]})]}),f.size>0&&(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{className:"size-6 rounded-full flex items-center justify-center text-xs font-semibold text-white",style:{backgroundColor:e.color},children:m&&n?.length>0?"3":"2"}),(0,l.jsxs)("span",{className:"font-medium text-sm",children:["Copy Config (",f.size," model",1!==f.size?"s":"",")"]})]}),(0,l.jsxs)(r.$n,{variant:"primary",size:"sm",onClick:()=>K(M(),"config"),children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"config"===h?"check":"content_copy"}),p("config"===h?"copied":"copyConfig")]})]}),(0,l.jsx)("pre",{className:"p-4 bg-bg-secondary rounded-lg border border-border overflow-x-auto max-h-80",children:(0,l.jsx)("code",{className:"text-xs font-mono whitespace-pre text-text-main",children:M()})}),(0,l.jsxs)("div",{className:"mt-3 p-3 bg-bg-secondary rounded-lg border border-border",children:[(0,l.jsxs)("p",{className:"text-xs text-text-muted",children:[(0,l.jsx)("span",{className:"font-medium text-text-main",children:"Paste into: "}),(0,l.jsx)("code",{className:"px-1 py-0.5 rounded bg-black/5 dark:bg-white/10",children:"~/.config/Code/User/chatLanguageModels.json"})]}),(0,l.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"Then reload VS Code and set the API key in the input prompt."})]})]})]})})]})}let S="https://cloud.omniroute.online";function A({machineId:e}){let t,s,o,d=(0,c.c)("cliTools"),[x,m]=(0,a.useState)([]),[h,f]=(0,a.useState)(!0),[b,v]=(0,a.useState)(null),[A,_]=(0,a.useState)({}),[O,E]=(0,a.useState)(!1),[T,P]=(0,a.useState)([]),[$,z]=(0,a.useState)({}),[R,M]=(0,a.useState)(!1);(0,a.useEffect)(()=>{F(),K(),I(),D()},[]);let K=async()=>{try{let e=await fetch("/api/settings");if(e.ok){let t=await e.json();E(t.cloudEnabled||!1)}}catch(e){console.log("Error loading cloud settings:",e)}},I=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let t=await e.json();P(t.keys||[])}}catch(e){console.log("Error fetching API keys:",e)}},D=async()=>{try{let e=new AbortController,t=setTimeout(()=>e.abort(),8e3),s=await fetch("/api/cli-tools/status",{signal:e.signal});if(clearTimeout(t),s.ok){let e=await s.json();z(e||{})}}catch(e){console.log("CLI tool status check timed out or failed:",e)}finally{M(!0)}},F=async()=>{try{let e=await fetch("/api/providers"),t=await e.json();e.ok&&m(t.connections||[])}catch(e){console.log("Error fetching connections:",e)}finally{f(!1)}},U=()=>x.filter(e=>!1!==e.isActive),L=(0,a.useCallback)((e,t,s)=>{_(l=>l[e]?.[t]===s?l:{...l,[e]:{...l[e],[t]:s}})},[]);if(h||!R)return(0,l.jsx)("div",{className:"flex flex-col gap-6",children:(0,l.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,l.jsx)(r.Qv,{}),(0,l.jsx)(r.Qv,{}),(0,l.jsx)(r.Qv,{})]})});let B=(t=U(),s=[],o=new Set,t.forEach(e=>{let t=n.Xg[e.provider]||e.provider;(0,n.KC)(e.provider).forEach(l=>{let a=`${t}/${l.id}`;o.has(a)||(o.add(a),s.push({value:a,label:`${t}/${l.id}`,provider:e.provider,alias:t,connectionName:e.name,modelId:l.id}))})}),s).length>0;return(0,l.jsxs)("div",{className:"flex flex-col gap-6",children:[!B&&(0,l.jsx)(r.Zp,{className:"border-yellow-500/50 bg-yellow-500/5",children:(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)("span",{className:"material-symbols-outlined text-yellow-500",children:"warning"}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"font-medium text-yellow-600 dark:text-yellow-400",children:d("noActiveProviders")}),(0,l.jsx)("p",{className:"text-sm text-text-muted",children:d("noActiveProvidersDesc")})]})]})}),(0,l.jsx)("div",{className:"flex flex-col gap-4",children:Object.entries(i).map(([e,t])=>((e,t)=>{let s={tool:t,isExpanded:b===e,onToggle:()=>v(b===e?null:e),baseUrl:O&&S?S:window.location.origin,apiKeys:T,batchStatus:$[e]||null,lastConfiguredAt:$[e]?.lastConfiguredAt||null};switch(e){case"claude":return(0,l.jsx)(u,{...s,activeProviders:U(),modelMappings:A[e]||{},onModelMappingChange:(t,s)=>L(e,t,s),hasActiveProviders:B,cloudEnabled:O},e);case"codex":return(0,l.jsx)(p,{...s,activeProviders:U(),cloudEnabled:O},e);case"droid":return(0,l.jsx)(g,{...s,activeProviders:U(),hasActiveProviders:B,cloudEnabled:O},e);case"openclaw":return(0,l.jsx)(y,{...s,activeProviders:U(),hasActiveProviders:B,cloudEnabled:O},e);case"antigravity":return(0,l.jsx)(w,{...s,activeProviders:U(),hasActiveProviders:B,cloudEnabled:O},e);case"cline":return(0,l.jsx)(j,{...s,activeProviders:U(),hasActiveProviders:B,cloudEnabled:O},e);case"kilo":return(0,l.jsx)(N,{...s,activeProviders:U(),hasActiveProviders:B,cloudEnabled:O},e);case"copilot":return(0,l.jsx)(C,{...s,activeProviders:U(),hasActiveProviders:B,cloudEnabled:O},e);default:return(0,l.jsx)(k,{toolId:e,...s,activeProviders:U(),cloudEnabled:O},e)}})(e,t))})]})}},40993:(e,t,s)=>{"use strict";s.d(t,{Ex:()=>c.default,$n:()=>l.default,Zp:()=>i.default,Qv:()=>o.CardSkeleton,G9:()=>b.default,bQ:()=>k.default,pp:()=>N.default,Qn:()=>v.default,pd:()=>a.default,Mh:()=>y.default,uR:()=>u.default,aF:()=>n.default,rq:()=>m.default,LF:()=>x.default,KN:()=>g.default,Lo:()=>f.default,y7:()=>h.default,Iz:()=>j.default,l6:()=>r.default,lM:()=>d.default,cn:()=>p.default});var l=s(35806),a=s(34422),r=s(42994),i=s(81060),n=s(71361),o=s(92542);s(17705);var c=s(80927),d=s(19790);s(6261),s(55846),s(34243),s(89938),s(99023);var x=s(80178),m=s(85444),u=s(91961);s(25112);var p=s(45624),h=s(37415),g=s(48643),f=s(8287);s(1652);var y=s(92701);s(18150);var b=s(71689),j=s(33709);s(76332);var N=s(66200);s(61580);var v=s(51503);s(54128);var k=s(44638);s(21720),s(97050)},44058:(e,t,s)=>{Promise.resolve().then(s.bind(s,22611))}},e=>{e.O(0,[8500,3418,9751,8055,1149,5846,647,8441,3794,7358],()=>e(e.s=44058)),_N_E=e.O()}]);
|