omniroute 2.0.1 → 2.0.2
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.ar.md +4 -3
- package/README.bg.md +4 -3
- package/README.da.md +4 -2
- package/README.de.md +3 -2
- package/README.es.md +1 -0
- package/README.fi.md +1 -0
- package/README.fr.md +1 -0
- package/README.he.md +9 -8
- package/README.hu.md +1 -0
- package/README.id.md +1 -0
- package/README.in.md +9 -8
- package/README.it.md +1 -0
- package/README.ja.md +3 -0
- package/README.ko.md +9 -8
- package/README.md +17 -16
- package/README.ms.md +9 -8
- package/README.nl.md +9 -8
- package/README.no.md +1 -0
- package/README.phi.md +2 -1
- package/README.pl.md +9 -8
- package/README.pt-BR.md +3 -2
- package/README.pt.md +1 -0
- package/README.ro.md +2 -0
- package/README.ru.md +1 -0
- package/README.sk.md +1 -0
- package/README.sv.md +1 -0
- package/README.th.md +1 -0
- package/README.uk-UA.md +1 -0
- package/README.vi.md +1 -0
- package/README.zh-CN.md +10 -9
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +66 -66
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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 +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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 +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
- 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 +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/a2a/route_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.js +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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/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_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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.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_client-reference-manifest.js +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_client-reference-manifest.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_client-reference-manifest.js +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/combo-defaults/route_client-reference-manifest.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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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/thinking-budget/route_client-reference-manifest.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_client-reference-manifest.js +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_client-reference-manifest.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_client-reference-manifest.js +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_client-reference-manifest.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_client-reference-manifest.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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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/embeddings/route.js +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_client-reference-manifest.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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +66 -66
- package/app/.next/server/chunks/1033.js +1 -1
- package/app/.next/server/chunks/1909.js +1 -1
- package/app/.next/server/chunks/2901.js +1 -1
- package/app/.next/server/chunks/7669.js +1 -1
- package/app/.next/server/chunks/8369.js +1 -1
- package/app/.next/server/instrumentation.js +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-9b7784ad661caa13.js → 5846-014698d5430bb218.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-e8a28e4cf62889bd.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-350aed2e86512c23.js +1 -0
- package/app/logs/application/app.log +1 -0
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-6a443389184cbb02.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-82d79cd167744344.js +0 -1
- /package/app/.next/static/{-xiwMa51S_mLBRfIPd772 → GDoUzLvy4YDqhnGqUCiZ0}/_buildManifest.js +0 -0
- /package/app/.next/static/{-xiwMa51S_mLBRfIPd772 → GDoUzLvy4YDqhnGqUCiZ0}/_ssgManifest.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(()=>{var a={};a.id=2134,a.ids=[2134],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},17828:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/dashboard/providers/[id]/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/dashboard/providers/[id]/page.tsx","default")},18425:(a,b,c)=>{Promise.resolve().then(c.bind(c,17828))},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29824:(a,b,c)=>{"use strict";c.d(b,{Ex:()=>j.default,$n:()=>d.default,Zp:()=>g.default,Qv:()=>i.CardSkeleton,G9:()=>t.default,bQ:()=>x.default,pp:()=>v.default,Qn:()=>w.default,pd:()=>e.default,Mh:()=>s.default,uR:()=>n.default,aF:()=>h.default,rq:()=>m.default,LF:()=>l.default,KN:()=>q.default,Lo:()=>r.default,y7:()=>p.default,Iz:()=>u.default,l6:()=>f.default,lM:()=>k.default,cn:()=>o.default});var d=c(53156),e=c(29518),f=c(59256),g=c(2490),h=c(65953),i=c(22746);c(45567);var j=c(4355),k=c(65472);c(59869),c(75146),c(65892),c(42546),c(22245);var l=c(8744),m=c(29494),n=c(1237);c(82054);var o=c(62688),p=c(46230),q=c(56589),r=c(73979);c(98004);var s=c(41371);c(53140);var t=c(27309),u=c(86059);c(77088);var v=c(85974);c(18732);var w=c(67083);c(52198);var x=c(50818);c(47047),c(16116)},33873:a=>{"use strict";a.exports=require("path")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},43010:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>r});var d=c(48249),e=c(67484),f=c(35005),g=c(49885),h=c.n(g),i=c(19099),j=c(2116),k=c.n(j),l=c(81220),m=c(77360),n=c(29824),o=c(17084),p=c(47825),q=c(73295);function r(){let a=(0,i.useParams)(),b=(0,i.useRouter)(),c=a.id,[f,g]=(0,e.useState)([]),[h,j]=(0,e.useState)(!0),[r,u]=(0,e.useState)(null),[x,y]=(0,e.useState)(!1),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(!1),[H,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(null),[L,M]=(0,e.useState)(null),[N,O]=(0,e.useState)({}),[P,Q]=(0,e.useState)(!1),{copied:R,copy:S}=(0,q.C)(),T=(0,m.c)("providers");(0,e.useRef)(!1);let U=(0,e.useRef)(!1),[V,W]=(0,e.useState)(null),[X,Y]=(0,e.useState)(null),[Z,$]=(0,e.useState)(!1),[_,aa]=(0,e.useState)(!1),[ab,ac]=(0,e.useState)({current:0,total:0,phase:"idle",status:"",logs:[],error:"",importedCount:0}),ad=r?{id:r.id,name:r.name||("anthropic-compatible"===r.type?T("anthropicCompatibleName"):T("openaiCompatibleName")),color:"anthropic-compatible"===r.type?"#D97757":"#10A37F",textIcon:"anthropic-compatible"===r.type?"AC":"OC",apiType:r.apiType,baseUrl:r.baseUrl,type:r.type}:o.IS[c]||o.zN[c]||o.fg[c],ae=!!o.IS[c]||!!o.zN[c],af=(0,p.KC)(c),ag=(0,o.wG)(c),ah=(0,o.mq)(c),ai=(0,o.gb)(c),aj=ah||ai,ak=aj?c:ag,al=aj?r?.prefix||c:ag,am=(0,e.useCallback)(async()=>{try{let a=await fetch("/api/models/alias"),b=await a.json();a.ok&&O(b.aliases||{})}catch(a){console.log("Error fetching aliases:",a)}},[]),an=(0,e.useCallback)(async()=>{try{let[a,b]=await Promise.all([fetch("/api/providers",{cache:"no-store"}),fetch("/api/provider-nodes",{cache:"no-store"})]),d=await a.json(),e=await b.json();if(a.ok){let a=(d.connections||[]).filter(a=>a.provider===c);g(a)}if(b.ok){let a=(e.nodes||[]).find(a=>a.id===c)||null;if(!a&&aj)for(let b=0;b<3;b+=1){await new Promise(a=>setTimeout(a,150));let b=await fetch("/api/provider-nodes",{cache:"no-store"});if(b.ok&&(a=((await b.json()).nodes||[]).find(a=>a.id===c)||null))break}u(a)}}catch(a){console.log("Error fetching connections:",a)}finally{j(!1)}},[c,aj]),ao=async a=>{try{let b=await fetch(`/api/provider-nodes/${c}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),d=await b.json();b.ok&&(u(d.node),await an(),I(!1))}catch(a){console.log("Error updating provider node:",a)}},ap=async(a,b,c=ag)=>{let d=`${c}/${a}`;try{let a=await fetch("/api/models/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:d,alias:b})});if(a.ok)await am();else{let b=await a.json();alert(b.error||T("failedSetAlias"))}}catch(a){console.log("Error setting alias:",a)}},aq=async a=>{try{(await fetch(`/api/models/alias?alias=${encodeURIComponent(a)}`,{method:"DELETE"})).ok&&await am()}catch(a){console.log("Error deleting alias:",a)}},ar=async a=>{if(confirm(T("deleteConnectionConfirm")))try{(await fetch(`/api/providers/${a}`,{method:"DELETE"})).ok&&g(f.filter(b=>b.id!==a))}catch(a){console.log("Error deleting connection:",a)}},as=(0,e.useCallback)(()=>{an(),y(!1)},[an]),at=async a=>{try{let b=await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:c,...a})});if(b.ok)return await an(),E(!1),null;let d=await b.json().catch(()=>({}));return d.error?.message||d.error||T("failedSaveConnection")}catch(a){return console.log("Error saving connection:",a),T("failedSaveConnectionRetry")}},au=async a=>{try{(await fetch(`/api/providers/${J.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})).ok&&(await an(),G(!1))}catch(a){console.log("Error updating connection:",a)}},av=async(a,b)=>{try{(await fetch(`/api/providers/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:b})})).ok&&g(c=>c.map(c=>c.id===a?{...c,isActive:b}:c))}catch(a){console.log("Error updating connection status:",a)}},aw=async(a,b)=>{try{(await fetch("/api/rate-limits",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({connectionId:a,enabled:b})})).ok&&g(c=>c.map(c=>c.id===a?{...c,rateLimitProtection:b}:c))}catch(a){console.error("Error toggling rate limit:",a)}},ax=async a=>{if(a&&!L){M(a);try{let b=await fetch(`/api/providers/${a}/test`,{method:"POST"});if(!b.ok){let a=await b.json().catch(()=>({}));alert(a.error||T("failedRetestConnection"));return}await an()}catch(a){console.error("Error retesting connection:",a)}finally{M(null)}}},ay=async(a,b)=>{if(a&&b)try{let c=b.priority,d=a.priority;c===d&&(c=f.indexOf(a)>f.indexOf(b)?b.priority-.5:b.priority+.5),await Promise.all([fetch(`/api/providers/${a.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:c})}),fetch(`/api/providers/${b.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:d})})]),await an()}catch(a){console.log("Error swapping priority:",a)}},az=async()=>{if(Z)return;let a=f.find(a=>!1!==a.isActive);if(a){$(!0),aa(!0),ac({current:0,total:0,phase:"fetching",status:T("fetchingModels"),logs:[],error:"",importedCount:0});try{let b=await fetch(`/api/providers/${a.id}/models`),d=await b.json();if(!b.ok)return void ac(a=>({...a,phase:"error",status:T("failedFetchModels"),error:d.error||T("failedImportModels")}));let e=d.models||[];if(0===e.length)return void ac(a=>({...a,phase:"done",status:T("noModelsFound"),logs:[T("noModelsReturnedFromEndpoint")]}));ac(a=>({...a,phase:"importing",total:e.length,status:T("importingModelsProgress",{current:0,total:e.length}),logs:[T("foundModelsStartingImport",{count:e.length})]}));let f=0;for(let a=0;a<e.length;a++){let b=e[a],d=b.id||b.name||b.model;if(!d)continue;let g=d.split("/"),h=g[g.length-1];ac(b=>({...b,current:a+1,status:T("importingModelsProgress",{current:a+1,total:e.length}),logs:[...b.logs,T("importingModelById",{modelId:d})]})),await fetch("/api/provider-models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:c,modelId:d,modelName:b.name||d,source:"imported"})}),N[h]||await ap(d,h,ak),f+=1}await am(),ac(a=>({...a,phase:"done",current:e.length,status:f>0?T("importSuccessCount",{count:f}):T("noNewModelsAddedExisting"),logs:[...a.logs,f>0?T("importDoneCount",{count:f}):T("noNewModelsAdded")],importedCount:f})),f>0&&setTimeout(()=>{window.location.reload()},2e3)}catch(a){console.log("Error importing models:",a),ac(b=>({...b,phase:"error",status:T("importFailed"),error:a instanceof Error?a.message:T("unexpectedErrorOccurred")}))}finally{$(!1)}}},aA=async(a,b)=>{aa(!0),ac({current:0,total:0,phase:"fetching",status:T("fetchingModels"),logs:[],error:"",importedCount:0});try{let c=(await a()).models||[];if(0===c.length)return void ac(a=>({...a,phase:"done",status:T("noModelsFound"),logs:[T("noModelsReturnedFromEndpoint")]}));ac(a=>({...a,phase:"importing",total:c.length,status:T("importingModelsProgress",{current:0,total:c.length}),logs:[T("foundModelsStartingImport",{count:c.length})]}));let d=0;for(let a=0;a<c.length;a++){let e=c[a],f=e.id||e.name||e.model;f&&(ac(b=>({...b,current:a+1,status:T("importingModelsProgress",{current:a+1,total:c.length}),logs:[...b.logs,T("importingModelById",{modelId:f})]})),await b(e)&&(d+=1))}ac(a=>({...a,phase:"done",current:c.length,status:d>0?T("importSuccessCount",{count:d}):T("noNewModelsAdded"),logs:[...a.logs,d>0?T("importDoneCount",{count:d}):T("noNewModelsAdded")],importedCount:d})),d>0&&setTimeout(()=>{window.location.reload()},2e3)}catch(a){console.log("Error importing models:",a),ac(b=>({...b,phase:"error",status:T("importFailed"),error:a instanceof Error?a.message:T("unexpectedErrorOccurred")}))}},aB=f.some(a=>!1!==a.isActive);return h?(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsx)(n.Qv,{}),(0,d.jsx)(n.Qv,{})]}):ad?(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)(k(),{href:"/dashboard/providers",className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary transition-colors mb-4",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-lg",children:"arrow_back"}),T("backToProviders")]}),(0,d.jsxs)("div",{className:"flex items-center gap-4",children:[(0,d.jsx)("div",{className:"rounded-lg flex items-center justify-center",style:{backgroundColor:`${ad.color}15`},children:P?(0,d.jsx)("span",{className:"text-sm font-bold",style:{color:ad.color},children:ad.textIcon||ad.id.slice(0,2).toUpperCase()}):(0,d.jsx)(l.default,{src:ah&&ad.apiType?"responses"===ad.apiType?"/providers/oai-r.png":"/providers/oai-cc.png":ai?"/providers/anthropic-m.png":`/providers/${ad.id}.png`,alt:ad.name,width:48,height:48,className:"object-contain rounded-lg max-w-[48px] max-h-[48px]",sizes:"48px",onError:()=>Q(!0)})}),(0,d.jsxs)("div",{children:[ad.website?(0,d.jsxs)("a",{href:ad.website,target:"_blank",rel:"noopener noreferrer",className:"text-3xl font-semibold tracking-tight hover:underline inline-flex items-center gap-2",style:{color:ad.color},children:[ad.name,(0,d.jsx)("span",{className:"material-symbols-outlined text-lg opacity-60",children:"open_in_new"})]}):(0,d.jsx)("h1",{className:"text-3xl font-semibold tracking-tight",children:ad.name}),(0,d.jsx)("p",{className:"text-text-muted",children:T("connectionCountLabel",{count:f.length})})]})]})]}),aj&&r&&(0,d.jsxs)(n.Zp,{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:ai?T("anthropicCompatibleDetails"):T("openaiCompatibleDetails")}),(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:[ai?T("messagesApi"):"responses"===r.apiType?T("responsesApi"):T("chatCompletions")," ","\xb7 ",(r.baseUrl||"").replace(/\/$/,""),"/",ai?T("messagesPath"):"responses"===r.apiType?T("responsesPath"):T("chatCompletionsPath")]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(n.$n,{size:"sm",icon:"add",onClick:()=>E(!0),disabled:f.length>0,children:T("add")}),(0,d.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"edit",onClick:()=>I(!0),children:T("edit")}),(0,d.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"delete",onClick:async()=>{if(confirm(T("deleteCompatibleNodeConfirm",{type:ai?T("anthropic"):T("openai")})))try{(await fetch(`/api/provider-nodes/${c}`,{method:"DELETE"})).ok&&b.push("/dashboard/providers")}catch(a){console.log("Error deleting provider node:",a)}},children:T("delete")})]})]}),f.length>0&&(0,d.jsx)("p",{className:"text-sm text-text-muted",children:T("singleConnectionPerCompatible")})]}),(0,d.jsxs)(n.Zp,{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:T("connections")}),(0,d.jsxs)("button",{onClick:()=>W({level:"provider",id:c,label:ad?.name||c}),className:`inline-flex items-center gap-1 px-2 py-1 rounded text-xs font-medium transition-all ${X?.providers?.[c]?"bg-amber-500/15 text-amber-500 hover:bg-amber-500/25":"bg-black/[0.03] dark:bg-white/[0.03] text-text-muted/50 hover:text-text-muted hover:bg-black/[0.06] dark:hover:bg-white/[0.06]"}`,title:X?.providers?.[c]?T("providerProxyTitleConfigured",{host:X.providers[c].host||T("configured")}):T("providerProxyConfigureHint"),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"vpn_lock"}),X?.providers?.[c]&&X.providers[c].host||T("providerProxy")]})]}),!aj&&(0,d.jsx)(n.$n,{size:"sm",icon:"add",onClick:()=>ae?y(!0):E(!0),children:T("add")})]}),0===f.length?(0,d.jsxs)("div",{className:"text-center py-12",children:[(0,d.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:ae?"lock":"key"})}),(0,d.jsx)("p",{className:"text-text-main font-medium mb-1",children:T("noConnectionsYet")}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:T("addFirstConnectionHint")}),!aj&&(0,d.jsx)(n.$n,{icon:"add",onClick:()=>ae?y(!0):E(!0),children:T("addConnection")})]}):(0,d.jsx)("div",{className:"flex flex-col divide-y divide-black/[0.03] dark:divide-white/[0.03]",children:f.sort((a,b)=>(a.priority||0)-(b.priority||0)).map((a,b)=>(0,d.jsx)(z,{connection:a,isOAuth:ae,isFirst:0===b,isLast:b===f.length-1,onMoveUp:()=>ay(a,f[b-1]),onMoveDown:()=>ay(a,f[b+1]),onToggleActive:b=>av(a.id,b),onToggleRateLimit:b=>aw(a.id,b),onRetest:()=>ax(a.id),isRetesting:L===a.id,onEdit:()=>{K(a),G(!0)},onDelete:()=>ar(a.id),onReauth:ae?()=>y(!0):void 0,onProxy:()=>W({level:"key",id:a.id,label:a.name||a.email||a.id}),hasProxy:!!(X?.keys?.[a.id]||X?.providers?.[c]||X?.global),proxySource:X?.keys?.[a.id]?"key":X?.providers?.[c]?"provider":X?.global?"global":null,proxyHost:(X?.keys?.[a.id]||X?.providers?.[c]||X?.global)?.host||null},a.id))})]}),(0,d.jsxs)(n.Zp,{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold mb-4",children:T("availableModels")}),(()=>{if(aj)return(0,d.jsx)(w,{providerStorageAlias:ak,providerDisplayAlias:al,modelAliases:N,copied:R,onCopy:S,onSetAlias:ap,onDeleteAlias:aq,connections:f,isAnthropic:ai,onImportWithProgress:aA});if(ad.passthroughModels)return(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-4",children:[(0,d.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"download",onClick:az,disabled:!aB||Z,children:Z?T("importingModels"):T("importFromModels")}),!aB&&(0,d.jsx)("span",{className:"text-xs text-text-muted",children:T("addConnectionToImport")})]}),(0,d.jsx)(t,{providerAlias:ag,modelAliases:N,copied:R,onCopy:S,onSetAlias:ap,onDeleteAlias:aq})]});let a=(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-4",children:[(0,d.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"download",onClick:az,disabled:!aB||Z,children:Z?T("importingModels"):T("importFromModels")}),!aB&&(0,d.jsx)("span",{className:"text-xs text-text-muted",children:T("addConnectionToImport")})]});return 0===af.length?(0,d.jsxs)("div",{children:[a,(0,d.jsx)("p",{className:"text-sm text-text-muted",children:T("noModelsConfigured")})]}):(0,d.jsxs)("div",{children:[a,(0,d.jsx)("div",{className:"flex flex-wrap gap-3",children:af.map(a=>{let b=`${ak}/${a.id}`,e=`${c}/${a.id}`,f=Object.entries(N).find(([,a])=>a===b||a===e)?.[0];return(0,d.jsx)(s,{model:a,fullModel:`${al}/${a.id}`,alias:f,copied:R,onCopy:S,onSetAlias:b=>ap(a.id,b,ak),onDeleteAlias:()=>aq(f)},a.id)})})]})})(),!aj&&(0,d.jsx)(v,{providerId:c,providerAlias:al,copied:R,onCopy:S})]}),"kiro"===c?(0,d.jsx)(n.Mh,{isOpen:x,providerInfo:ad,onSuccess:as,onClose:()=>{U.current=!0,y(!1)}}):"cursor"===c?(0,d.jsx)(n.G9,{isOpen:x,onSuccess:as,onClose:()=>{U.current=!0,y(!1)}}):(0,d.jsx)(n.LF,{isOpen:x,provider:c,providerInfo:ad,onSuccess:as,onClose:()=>{U.current=!0,y(!1)}}),(0,d.jsx)(A,{isOpen:D,provider:c,providerName:ad.name,isCompatible:aj,isAnthropic:ai,onSave:at,onClose:()=>E(!1)}),(0,d.jsx)(B,{isOpen:F,connection:J,onSave:au,onClose:()=>G(!1)}),aj&&(0,d.jsx)(C,{isOpen:H,node:r,onSave:ao,onClose:()=>I(!1),isAnthropic:ai}),V&&(0,d.jsx)(n.KN,{isOpen:!!V,onClose:()=>W(null),level:V.level,levelId:V.id,levelLabel:V.label}),(0,d.jsx)(n.aF,{isOpen:_,onClose:()=>{("done"===ab.phase||"error"===ab.phase)&&aa(!1)},title:T("importingModelsTitle"),size:"md",closeOnOverlay:!1,showCloseButton:"done"===ab.phase||"error"===ab.phase,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:["fetching"===ab.phase&&(0,d.jsx)("span",{className:"material-symbols-outlined text-primary animate-spin",children:"progress_activity"}),"importing"===ab.phase&&(0,d.jsx)("span",{className:"material-symbols-outlined text-primary animate-spin",children:"progress_activity"}),"done"===ab.phase&&(0,d.jsx)("span",{className:"material-symbols-outlined text-green-500",children:"check_circle"}),"error"===ab.phase&&(0,d.jsx)("span",{className:"material-symbols-outlined text-red-500",children:"error"}),(0,d.jsx)("span",{className:"text-sm font-medium text-text-main",children:ab.status})]}),("importing"===ab.phase||"done"===ab.phase)&&ab.total>0&&(0,d.jsxs)("div",{className:"w-full",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-1",children:[(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:[ab.current," / ",ab.total]}),(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:[Math.round(ab.current/ab.total*100),"%"]})]}),(0,d.jsx)("div",{className:"w-full h-2.5 bg-black/10 dark:bg-white/10 rounded-full overflow-hidden",children:(0,d.jsx)("div",{className:"h-full rounded-full transition-all duration-300 ease-out",style:{width:`${ab.current/ab.total*100}%`,background:"done"===ab.phase?"linear-gradient(90deg, #22c55e, #16a34a)":"linear-gradient(90deg, var(--color-primary), var(--color-primary-hover, var(--color-primary)))"}})})]}),"fetching"===ab.phase&&(0,d.jsx)("div",{className:"w-full h-2.5 bg-black/10 dark:bg-white/10 rounded-full overflow-hidden",children:(0,d.jsx)("div",{className:"h-full rounded-full animate-pulse",style:{width:"60%",background:"linear-gradient(90deg, var(--color-primary), var(--color-primary-hover, var(--color-primary)))"}})}),"error"===ab.phase&&ab.error&&(0,d.jsx)("div",{className:"p-3 rounded-lg bg-red-500/10 border border-red-500/20",children:(0,d.jsx)("p",{className:"text-sm text-red-400",children:ab.error})}),ab.logs.length>0&&(0,d.jsx)("div",{className:"max-h-48 overflow-y-auto rounded-lg bg-black/5 dark:bg-white/5 p-3 border border-black/5 dark:border-white/5",children:(0,d.jsx)("div",{className:"flex flex-col gap-1",children:ab.logs.map((a,b)=>(0,d.jsx)("p",{className:`text-xs font-mono ${a.startsWith("✓")?"text-green-500 font-semibold":"text-text-muted"}`,children:a},b))})}),"done"===ab.phase&&ab.importedCount>0&&(0,d.jsx)("p",{className:"text-xs text-text-muted text-center animate-pulse",children:T("pageAutoRefresh")})]})})]}):(0,d.jsxs)("div",{className:"text-center py-20",children:[(0,d.jsx)("p",{className:"text-text-muted",children:T("providerNotFound")}),(0,d.jsx)(k(),{href:"/dashboard/providers",className:"text-primary mt-4 inline-block",children:T("backToProviders")})]})}function s({model:a,fullModel:b,alias:c,copied:e,onCopy:f,onSetAlias:g,onDeleteAlias:h}){let i=(0,m.c)("providers");return(0,d.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg border border-border hover:bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-base text-text-muted",children:"smart_toy"}),(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono bg-sidebar px-1.5 py-0.5 rounded",children:b}),(0,d.jsx)("button",{onClick:()=>f(b,`model-${a.id}`),className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary",title:i("copyModel"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:e===`model-${a.id}`?"check":"content_copy"})})]})}function t({providerAlias:a,modelAliases:b,copied:c,onCopy:f,onSetAlias:g,onDeleteAlias:h}){let i=(0,m.c)("providers"),[j,k]=(0,e.useState)(""),[l,o]=(0,e.useState)(!1),p=Object.entries(b).filter(([,b])=>b.startsWith(`${a}/`)).map(([b,c])=>({modelId:c.replace(`${a}/`,""),fullModel:c,alias:b})),q=async()=>{let a;if(!j.trim()||l)return;let c=j.trim(),d=(a=c.split("/"))[a.length-1];if(b[d])return void alert(i("aliasExistsAlert",{alias:d}));o(!0);try{await g(c,d),k("")}catch(a){console.log("Error adding model:",a)}finally{o(!1)}};return(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:i("openRouterAnyModelHint")}),(0,d.jsxs)("div",{className:"flex items-end gap-2",children:[(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("label",{htmlFor:"new-model-input",className:"text-xs text-text-muted mb-1 block",children:i("modelIdFromOpenRouter")}),(0,d.jsx)("input",{id:"new-model-input",type:"text",value:j,onChange:a=>k(a.target.value),onKeyDown:a=>"Enter"===a.key&&q(),placeholder:i("openRouterModelPlaceholder"),className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})]}),(0,d.jsx)(n.$n,{size:"sm",icon:"add",onClick:q,disabled:!j.trim()||l,children:l?i("adding"):i("add")})]}),p.length>0&&(0,d.jsx)("div",{className:"flex flex-col gap-3",children:p.map(({modelId:a,fullModel:b,alias:e})=>(0,d.jsx)(u,{modelId:a,fullModel:b,copied:c,onCopy:f,onDeleteAlias:()=>h(e)},b))})]})}function u({modelId:a,fullModel:b,copied:c,onCopy:e,onDeleteAlias:f}){let g=(0,m.c)("providers");return(0,d.jsxs)("div",{className:"flex items-center gap-3 p-3 rounded-lg border border-border hover:bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-base text-text-muted",children:"smart_toy"}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium truncate",children:a}),(0,d.jsxs)("div",{className:"flex items-center gap-1 mt-1",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono bg-sidebar px-1.5 py-0.5 rounded",children:b}),(0,d.jsx)("button",{onClick:()=>e(b,`model-${a}`),className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary",title:g("copyModel"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:c===`model-${a}`?"check":"content_copy"})})]})]}),(0,d.jsx)("button",{onClick:f,className:"p-1 hover:bg-red-50 rounded text-red-500",title:g("removeModel"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"delete"})})]})}function v({providerId:a,providerAlias:b,copied:c,onCopy:f}){let g=(0,m.c)("providers"),[h,i]=(0,e.useState)([]),[j,k]=(0,e.useState)(""),[l,o]=(0,e.useState)(""),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(!0),t=(0,e.useCallback)(async()=>{try{let b=await fetch(`/api/provider-models?provider=${encodeURIComponent(a)}`);if(b.ok){let a=await b.json();i(a.models||[])}}catch(a){console.error("Failed to fetch custom models:",a)}finally{s(!1)}},[a]),u=async()=>{if(j.trim()&&!p){q(!0);try{(await fetch("/api/provider-models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a,modelId:j.trim(),modelName:l.trim()||void 0})})).ok&&(k(""),o(""),await t())}catch(a){console.error("Failed to add custom model:",a)}finally{q(!1)}}},v=async b=>{try{await fetch(`/api/provider-models?provider=${encodeURIComponent(a)}&model=${encodeURIComponent(b)}`,{method:"DELETE"}),await t()}catch(a){console.error("Failed to remove custom model:",a)}};return(0,d.jsxs)("div",{className:"mt-6 pt-6 border-t border-border",children:[(0,d.jsxs)("h3",{className:"text-sm font-semibold mb-3 flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-base text-primary",children:"tune"}),g("customModels")]}),(0,d.jsx)("p",{className:"text-xs text-text-muted mb-3",children:g("customModelsHint")}),(0,d.jsxs)("div",{className:"flex items-end gap-2 mb-3",children:[(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("label",{htmlFor:"custom-model-id",className:"text-xs text-text-muted mb-1 block",children:g("modelId")}),(0,d.jsx)("input",{id:"custom-model-id",type:"text",value:j,onChange:a=>k(a.target.value),onKeyDown:a=>"Enter"===a.key&&u(),placeholder:g("customModelPlaceholder"),className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})]}),(0,d.jsxs)("div",{className:"w-40",children:[(0,d.jsx)("label",{htmlFor:"custom-model-name",className:"text-xs text-text-muted mb-1 block",children:g("displayName")}),(0,d.jsx)("input",{id:"custom-model-name",type:"text",value:l,onChange:a=>o(a.target.value),onKeyDown:a=>"Enter"===a.key&&u(),placeholder:g("optional"),className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})]}),(0,d.jsx)(n.$n,{size:"sm",icon:"add",onClick:u,disabled:!j.trim()||p,children:p?g("adding"):g("add")})]}),r?(0,d.jsx)("p",{className:"text-xs text-text-muted",children:g("loading")}):h.length>0?(0,d.jsx)("div",{className:"flex flex-col gap-2",children:h.map(a=>{let e=`${b}/${a.id}`,h=`custom-${a.id}`;return(0,d.jsxs)("div",{className:"flex items-center gap-3 p-3 rounded-lg border border-border hover:bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-base text-primary",children:"tune"}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium truncate",children:a.name||a.id}),(0,d.jsxs)("div",{className:"flex items-center gap-1 mt-1",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono bg-sidebar px-1.5 py-0.5 rounded",children:e}),(0,d.jsx)("button",{onClick:()=>f(e,h),className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary",title:g("copyModel"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:c===h?"check":"content_copy"})})]})]}),(0,d.jsx)("button",{onClick:()=>v(a.id),className:"p-1 hover:bg-red-50 rounded text-red-500",title:g("removeCustomModel"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"delete"})})]},a.id)})}):(0,d.jsx)("p",{className:"text-xs text-text-muted",children:g("noCustomModels")})]})}function w({providerStorageAlias:a,providerDisplayAlias:b,modelAliases:c,copied:g,onCopy:h,onSetAlias:i,onDeleteAlias:j,connections:k,isAnthropic:l,onImportWithProgress:o}){let p=(0,m.c)("providers"),[q,r]=(0,e.useState)(""),[s,t]=(0,e.useState)(!1),[v,w]=(0,e.useState)(!1),x=(0,f.i)(),y=Object.entries(c).filter(([,b])=>b.startsWith(`${a}/`)).map(([b,c])=>({modelId:c.replace(`${a}/`,""),fullModel:c,alias:b})),z=a=>{let d,e=(d=a.split("/"))[d.length-1];if(!c[e])return e;let f=`${b}-${e}`;return c[f]?null:f},A=async()=>{if(!q.trim()||s)return;let b=q.trim(),c=z(b);if(!c)return void x.error(p("allSuggestedAliasesExist"));t(!0);try{let d=await fetch("/api/provider-models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a,modelId:b,modelName:b,source:"manual"})});if(!d.ok){let a={};try{a=await d.json()}catch(a){console.error("Failed to parse error response from custom model API:",a)}throw Error(a.error?.message||p("failedSaveCustomModel"))}await i(b,c,a),r(""),x.success(p("modelAddedSuccess",{modelId:b}))}catch(a){console.error("Error adding model:",a),x.error(a instanceof Error?a.message:p("failedAddModelTryAgain"))}finally{t(!1)}},B=async()=>{if(v)return;let b=k.find(a=>!1!==a.isActive);if(b){w(!0);try{await o(async()=>{let a=await fetch(`/api/providers/${b.id}/models`),c=await a.json();if(!a.ok)throw Error(c.error||p("failedImportModels"));return c},async b=>{let c=b.id||b.name||b.model;if(!c)return!1;let d=z(c);return!!d&&((await fetch("/api/provider-models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a,modelId:c,modelName:b.name||c,source:"imported"})})).ok?(await i(c,d,a),!0):(x.error(p("failedSaveImportedModel")),!1))})}catch(a){console.error("Error importing models:",a),x.error(p("failedImportModelsTryAgain"))}finally{w(!1)}}},C=k.some(a=>!1!==a.isActive),D=async(b,c)=>{try{if(!(await fetch(`/api/provider-models?provider=${encodeURIComponent(a)}&model=${encodeURIComponent(b)}`,{method:"DELETE"})).ok)throw Error(p("failedRemoveModelFromDatabase"));await j(c),x.success(p("modelRemovedSuccess"))}catch(a){console.error("Error deleting model:",a),x.error(a instanceof Error?a.message:p("failedDeleteModelTryAgain"))}};return(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:p("compatibleModelsDescription",{type:l?p("anthropic"):p("openai")})}),(0,d.jsxs)("div",{className:"flex items-end gap-2 flex-wrap",children:[(0,d.jsxs)("div",{className:"flex-1 min-w-[240px]",children:[(0,d.jsx)("label",{htmlFor:"new-compatible-model-input",className:"text-xs text-text-muted mb-1 block",children:p("modelId")}),(0,d.jsx)("input",{id:"new-compatible-model-input",type:"text",value:q,onChange:a=>r(a.target.value),onKeyDown:a=>"Enter"===a.key&&A(),placeholder:l?p("anthropicCompatibleModelPlaceholder"):p("openaiCompatibleModelPlaceholder"),className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})]}),(0,d.jsx)(n.$n,{size:"sm",icon:"add",onClick:A,disabled:!q.trim()||s,children:s?p("adding"):p("add")}),(0,d.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"download",onClick:B,disabled:!C||v,children:v?p("importingModels"):p("importFromModels")})]}),!C&&(0,d.jsx)("p",{className:"text-xs text-text-muted",children:p("addConnectionToImport")}),y.length>0&&(0,d.jsx)("div",{className:"flex flex-col gap-3",children:y.map(({modelId:a,fullModel:c,alias:e})=>(0,d.jsx)(u,{modelId:a,fullModel:`${b}/${a}`,copied:g,onCopy:h,onDeleteAlias:()=>D(a,e)},c))})]})}function x({until:a}){let[b,c]=(0,e.useState)("");return b?(0,d.jsxs)("span",{className:"text-xs text-orange-500 font-mono",children:["⏱ ",b]}):null}s.propTypes={model:h().shape({id:h().string.isRequired}).isRequired,fullModel:h().string.isRequired,alias:h().string,copied:h().string,onCopy:h().func.isRequired},t.propTypes={providerAlias:h().string.isRequired,modelAliases:h().object.isRequired,copied:h().string,onCopy:h().func.isRequired,onSetAlias:h().func.isRequired,onDeleteAlias:h().func.isRequired},u.propTypes={modelId:h().string.isRequired,fullModel:h().string.isRequired,copied:h().string,onCopy:h().func.isRequired,onDeleteAlias:h().func.isRequired},v.propTypes={providerId:h().string.isRequired,providerAlias:h().string.isRequired,copied:h().string,onCopy:h().func.isRequired},w.propTypes={providerStorageAlias:h().string.isRequired,providerDisplayAlias:h().string.isRequired,modelAliases:h().object.isRequired,copied:h().string,onCopy:h().func.isRequired,onSetAlias:h().func.isRequired,onDeleteAlias:h().func.isRequired,connections:h().arrayOf(h().shape({id:h().string,isActive:h().bool})).isRequired,isAnthropic:h().bool,onImportWithProgress:h().func.isRequired},x.propTypes={until:h().string.isRequired};let y={runtime_error:{labelKey:"errorTypeRuntime",variant:"warning"},upstream_auth_error:{labelKey:"errorTypeUpstreamAuth",variant:"error"},auth_missing:{labelKey:"errorTypeMissingCredential",variant:"warning"},token_refresh_failed:{labelKey:"errorTypeRefreshFailed",variant:"warning"},token_expired:{labelKey:"errorTypeTokenExpired",variant:"warning"},upstream_rate_limited:{labelKey:"errorTypeRateLimited",variant:"warning"},upstream_unavailable:{labelKey:"errorTypeUpstreamUnavailable",variant:"error"},network_error:{labelKey:"errorTypeNetworkError",variant:"warning"},unsupported:{labelKey:"errorTypeTestUnsupported",variant:"default"},upstream_error:{labelKey:"errorTypeUpstreamError",variant:"error"}};function z({connection:a,isOAuth:b,isFirst:c,isLast:f,onMoveUp:g,onMoveDown:h,onToggleActive:i,onToggleRateLimit:j,onRetest:k,isRetesting:l,onEdit:o,onDelete:p,onReauth:q,onProxy:r,hasProxy:s,proxySource:t,proxyHost:u}){let v,w=(0,m.c)("providers"),z=b?a.name||a.email||a.displayName||w("oauthAccount"):a.name,[A,B]=(0,e.useState)(!1),C="unavailable"!==a.testStatus||A?a.testStatus:"active",D=function(a,b,c,d){if(!1===a.isActive)return{statusVariant:"default",statusLabel:d("statusDisabled"),errorType:null,errorBadge:null,errorTextClass:"text-text-muted"};if("active"===b||"success"===b)return{statusVariant:"success",statusLabel:d("statusConnected"),errorType:null,errorBadge:null,errorTextClass:"text-text-muted"};let e=function(a,b){if(b)return"upstream_rate_limited";if(a.lastErrorType)return a.lastErrorType;let c=Number(a.errorCode);if(401===c||403===c)return"upstream_auth_error";if(429===c)return"upstream_rate_limited";if(c>=500)return"upstream_unavailable";let d=(a.lastError||"").toLowerCase();return d?d.includes("runtime")||d.includes("not runnable")||d.includes("not installed")||d.includes("healthcheck")?"runtime_error":d.includes("refresh failed")?"token_refresh_failed":d.includes("token expired")||d.includes("expired")?"token_expired":d.includes("invalid api key")||d.includes("token invalid")||d.includes("revoked")||d.includes("access denied")||d.includes("unauthorized")?"upstream_auth_error":d.includes("rate limit")||d.includes("quota")||d.includes("too many requests")||d.includes("429")?"upstream_rate_limited":d.includes("fetch failed")||d.includes("network")||d.includes("timeout")||d.includes("econn")||d.includes("enotfound")?"network_error":d.includes("not supported")?"unsupported":"upstream_error":null}(a,c),f=e&&y[e]||null;return"runtime_error"===e?{statusVariant:"warning",statusLabel:d("statusRuntimeIssue"),errorType:e,errorBadge:f,errorTextClass:"text-yellow-600 dark:text-yellow-400"}:"upstream_auth_error"===e||"auth_missing"===e||"token_refresh_failed"===e||"token_expired"===e?{statusVariant:"error",statusLabel:d("statusAuthFailed"),errorType:e,errorBadge:f,errorTextClass:"text-red-500"}:"upstream_rate_limited"===e?{statusVariant:"warning",statusLabel:d("statusRateLimited"),errorType:e,errorBadge:f,errorTextClass:"text-yellow-600 dark:text-yellow-400"}:"network_error"===e?{statusVariant:"warning",statusLabel:d("statusNetworkIssue"),errorType:e,errorBadge:f,errorTextClass:"text-yellow-600 dark:text-yellow-400"}:"unsupported"===e?{statusVariant:"default",statusLabel:d("statusTestUnsupported"),errorType:e,errorBadge:f,errorTextClass:"text-text-muted"}:{statusVariant:"error",statusLabel:({unavailable:d("statusUnavailable"),failed:d("statusFailed"),error:d("statusError")})[b]||b||d("statusError"),errorType:e,errorBadge:f,errorTextClass:"text-red-500"}}(a,C,A,w),E=!!a.rateLimitProtection;return(0,d.jsxs)("div",{className:`group flex items-center justify-between p-3 rounded-lg hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors ${!1===a.isActive?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[(0,d.jsxs)("div",{className:"flex flex-col",children:[(0,d.jsx)("button",{onClick:g,disabled:c,className:`p-0.5 rounded ${c?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_up"})}),(0,d.jsx)("button",{onClick:h,disabled:f,className:`p-0.5 rounded ${f?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_down"})})]}),(0,d.jsx)("span",{className:"material-symbols-outlined text-base text-text-muted",children:b?"lock":"key"}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium truncate",children:z}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1 flex-wrap",children:[(0,d.jsx)(n.Ex,{variant:D.statusVariant,size:"sm",dot:!0,children:D.statusLabel}),A&&!1!==a.isActive&&(0,d.jsx)(x,{until:a.rateLimitedUntil}),D.errorBadge&&!1!==a.isActive&&(0,d.jsx)(n.Ex,{variant:D.errorBadge.variant,size:"sm",children:w(D.errorBadge.labelKey)}),a.lastError&&!1!==a.isActive&&(0,d.jsx)("span",{className:`text-xs truncate max-w-[300px] ${D.errorTextClass}`,title:a.lastError,children:a.lastError}),(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:["#",a.priority]}),a.globalPriority&&(0,d.jsx)("span",{className:"text-xs text-text-muted",children:w("autoPriority",{priority:a.globalPriority})}),(0,d.jsx)("span",{className:"text-text-muted/30 select-none",children:"|"}),(0,d.jsxs)("button",{onClick:()=>j(!E),className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-xs font-medium transition-all cursor-pointer ${E?"bg-emerald-500/15 text-emerald-500 hover:bg-emerald-500/25":"bg-black/[0.03] dark:bg-white/[0.03] text-text-muted/50 hover:text-text-muted hover:bg-black/[0.06] dark:hover:bg-white/[0.06]"}`,title:w(E?"disableRateLimitProtection":"enableRateLimitProtection"),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"shield"}),w(E?"rateLimitProtected":"rateLimitUnprotected")]}),s&&(v=w("global"===t?"proxySourceGlobal":"provider"===t?"proxySourceProvider":"proxySourceKey"),(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"text-text-muted/30 select-none",children:"|"}),(0,d.jsxs)("span",{className:`inline-flex items-center gap-0.5 px-1.5 py-0.5 rounded text-xs font-medium ${"global"===t?"bg-emerald-500/15 text-emerald-500":"provider"===t?"bg-amber-500/15 text-amber-500":"bg-blue-500/15 text-blue-500"}`,title:w("proxyConfiguredBySource",{source:v,host:u||w("configured")}),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"vpn_lock"}),u||w("proxy")]})]}))]})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(n.$n,{size:"sm",variant:"ghost",icon:"refresh",loading:l,disabled:!1===a.isActive,onClick:k,className:"!h-7 !px-2 text-xs",title:w("retestAuthentication"),children:w("retest")}),(0,d.jsx)(n.lM,{size:"sm",checked:a.isActive??!0,onChange:i,title:w(a.isActive??!0?"disableConnection":"enableConnection")}),(0,d.jsxs)("div",{className:"flex gap-1 ml-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[q&&(0,d.jsx)("button",{onClick:q,className:"p-2 hover:bg-amber-500/10 rounded text-amber-600 hover:text-amber-500",title:w("reauthenticateConnection"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"passkey"})}),(0,d.jsx)("button",{onClick:o,className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"})}),(0,d.jsx)("button",{onClick:r,className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary",title:w("proxyConfig"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"vpn_lock"})}),(0,d.jsx)("button",{onClick:p,className:"p-2 hover:bg-red-500/10 rounded text-red-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]})]})}function A({isOpen:a,provider:b,providerName:c,isCompatible:f,isAnthropic:g,onSave:h,onClose:i}){let j=(0,m.c)("providers"),[k,l]=(0,e.useState)({name:"",apiKey:"",priority:1}),[o,p]=(0,e.useState)(!1),[q,r]=(0,e.useState)(null),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(null),w=async()=>{p(!0),v(null);try{let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b,apiKey:k.apiKey})}),c=await a.json();r(c.valid?"success":"failed")}catch{r("failed")}finally{p(!1)}},x=async()=>{if(b&&k.apiKey){t(!0),v(null);try{let a=!1;try{p(!0),r(null);let c=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b,apiKey:k.apiKey})});a=!!(await c.json()).valid,r(a?"success":"failed")}catch{r("failed")}finally{p(!1)}if(!a)return void v(j("apiKeyValidationFailed"));let c=await h({name:k.name,apiKey:k.apiKey,priority:k.priority,testStatus:"active"});c&&v("string"==typeof c?c:j("failedSaveConnection"))}finally{t(!1)}}};return b?(0,d.jsx)(n.aF,{isOpen:a,title:j("addProviderApiKeyTitle",{provider:c||b}),onClose:i,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(n.pd,{label:j("nameLabel"),value:k.name,onChange:a=>l({...k,name:a.target.value}),placeholder:j("productionKey")}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(n.pd,{label:j("apiKeyLabel"),type:"password",value:k.apiKey,onChange:a=>l({...k,apiKey:a.target.value}),className:"flex-1"}),(0,d.jsx)("div",{className:"pt-6",children:(0,d.jsx)(n.$n,{onClick:w,disabled:!k.apiKey||o||s,variant:"secondary",children:o?j("checking"):j("check")})})]}),q&&(0,d.jsx)(n.Ex,{variant:"success"===q?"success":"error",children:"success"===q?j("valid"):j("invalid")}),u&&(0,d.jsx)("div",{className:"text-sm text-red-500 bg-red-500/10 border border-red-500/20 rounded-lg px-3 py-2",children:u}),f&&(0,d.jsx)("p",{className:"text-xs text-text-muted",children:g?j("validationChecksAnthropicCompatible",{provider:c||j("anthropicCompatibleName")}):j("validationChecksOpenAiCompatible",{provider:c||j("openaiCompatibleName")})}),(0,d.jsx)(n.pd,{label:j("priorityLabel"),type:"number",value:k.priority,onChange:a=>l({...k,priority:Number.parseInt(a.target.value)||1})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(n.$n,{onClick:x,fullWidth:!0,disabled:!k.name||!k.apiKey||s,children:s?j("saving"):j("save")}),(0,d.jsx)(n.$n,{onClick:i,variant:"ghost",fullWidth:!0,children:j("cancel")})]})]})}):null}function B({isOpen:a,connection:b,onSave:c,onClose:f}){let g=(0,m.c)("providers"),[h,i]=(0,e.useState)({name:"",priority:1,apiKey:"",healthCheckInterval:60}),[j,k]=(0,e.useState)(!1),[l,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(null),[u,v]=(0,e.useState)(!1),w=async()=>{if(b?.provider){k(!0),p(null);try{let a=await fetch(`/api/providers/${b.id}/test`,{method:"POST"}),c=await a.json();p({valid:!!c.valid,diagnosis:c.diagnosis||null,message:c.error||null})}catch{p({valid:!1,diagnosis:{type:"network_error"},message:g("failedTestConnection")})}finally{k(!1)}}},x=async()=>{if(b?.provider&&h.apiKey){r(!0),t(null);try{let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:h.apiKey})}),c=await a.json();t(c.valid?"success":"failed")}catch{t("failed")}finally{r(!1)}}},z=async()=>{v(!0);try{let a={name:h.name,priority:h.priority,healthCheckInterval:h.healthCheckInterval};if(!A&&h.apiKey){a.apiKey=h.apiKey;let c="success"===s;if(!c)try{r(!0),t(null);let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:h.apiKey})});c=!!(await a.json()).valid,t(c?"success":"failed")}catch{t("failed")}finally{r(!1)}c&&(a.testStatus="active",a.lastError=null,a.lastErrorAt=null,a.lastErrorType=null,a.lastErrorSource=null,a.errorCode=null,a.rateLimitedUntil=null)}await c(a)}finally{v(!1)}};if(!b)return null;let A="oauth"===b.authType,B=(0,o.mq)(b.provider)||(0,o.gb)(b.provider),C=!l?.valid&&l?.diagnosis?.type&&y[l.diagnosis.type]||null;return(0,d.jsx)(n.aF,{isOpen:a,title:g("editConnection"),onClose:f,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(n.pd,{label:g("nameLabel"),value:h.name,onChange:a=>i({...h,name:a.target.value}),placeholder:A?g("accountName"):g("productionKey")}),A&&b.email&&(0,d.jsxs)("div",{className:"bg-sidebar/50 p-3 rounded-lg",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-1",children:g("email")}),(0,d.jsx)("p",{className:"font-medium",children:b.email})]}),A&&(0,d.jsx)(n.pd,{label:g("healthCheckMinutes"),type:"number",value:h.healthCheckInterval,onChange:a=>i({...h,healthCheckInterval:Math.max(0,Number.parseInt(a.target.value)||0)}),hint:g("healthCheckHint")}),(0,d.jsx)(n.pd,{label:g("priorityLabel"),type:"number",value:h.priority,onChange:a=>i({...h,priority:Number.parseInt(a.target.value)||1})}),!A&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(n.pd,{label:g("apiKeyLabel"),type:"password",value:h.apiKey,onChange:a=>i({...h,apiKey:a.target.value}),placeholder:g("enterNewApiKey"),hint:g("leaveBlankKeepCurrentApiKey"),className:"flex-1"}),(0,d.jsx)("div",{className:"pt-6",children:(0,d.jsx)(n.$n,{onClick:x,disabled:!h.apiKey||q||u,variant:"secondary",children:q?g("checking"):g("check")})})]}),s&&(0,d.jsx)(n.Ex,{variant:"success"===s?"success":"error",children:"success"===s?g("valid"):g("invalid")})]}),!B&&(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)(n.$n,{onClick:w,variant:"secondary",disabled:j,children:j?g("testing"):g("testConnection")}),l&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.Ex,{variant:l.valid?"success":"error",children:l.valid?g("valid"):g("failed")}),C&&(0,d.jsx)(n.Ex,{variant:C.variant,children:g(C.labelKey)})]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(n.$n,{onClick:z,fullWidth:!0,disabled:u,children:u?g("saving"):g("save")}),(0,d.jsx)(n.$n,{onClick:f,variant:"ghost",fullWidth:!0,children:g("cancel")})]})]})})}function C({isOpen:a,node:b,onSave:c,onClose:f,isAnthropic:g}){let h=(0,m.c)("providers"),[i,j]=(0,e.useState)({name:"",prefix:"",apiType:"chat",baseUrl:"https://api.openai.com/v1"}),[k,l]=(0,e.useState)(!1),[o,p]=(0,e.useState)(""),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(null),u=[{value:"chat",label:h("chatCompletions")},{value:"responses",label:h("responsesApi")}],v=async()=>{if(i.name.trim()&&i.prefix.trim()&&i.baseUrl.trim()){l(!0);try{let a={name:i.name,prefix:i.prefix,baseUrl:i.baseUrl};g||(a.apiType=i.apiType),await c(a)}finally{l(!1)}}},w=async()=>{r(!0);try{let a=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:i.baseUrl,apiKey:o,type:g?"anthropic-compatible":"openai-compatible"})}),b=await a.json();t(b.valid?"success":"failed")}catch{t("failed")}finally{r(!1)}};return b?(0,d.jsx)(n.aF,{isOpen:a,title:h("editCompatibleTitle",{type:h(g?"anthropic":"openai")}),onClose:f,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(n.pd,{label:h("nameLabel"),value:i.name,onChange:a=>j({...i,name:a.target.value}),placeholder:h("compatibleProdPlaceholder",{type:h(g?"anthropic":"openai")}),hint:h("nameHint")}),(0,d.jsx)(n.pd,{label:h("prefixLabel"),value:i.prefix,onChange:a=>j({...i,prefix:a.target.value}),placeholder:h(g?"anthropicPrefixPlaceholder":"openaiPrefixPlaceholder"),hint:h("prefixHint")}),!g&&(0,d.jsx)(n.l6,{label:h("apiTypeLabel"),options:u,value:i.apiType,onChange:a=>j({...i,apiType:a.target.value})}),(0,d.jsx)(n.pd,{label:h("baseUrlLabel"),value:i.baseUrl,onChange:a=>j({...i,baseUrl:a.target.value}),placeholder:h(g?"anthropicBaseUrlPlaceholder":"openaiBaseUrlPlaceholder"),hint:h("compatibleBaseUrlHint",{type:h(g?"anthropic":"openai")})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(n.pd,{label:h("apiKeyForCheck"),type:"password",value:o,onChange:a=>p(a.target.value),className:"flex-1"}),(0,d.jsx)("div",{className:"pt-6",children:(0,d.jsx)(n.$n,{onClick:w,disabled:!o||q||!i.baseUrl.trim(),variant:"secondary",children:h(q?"checking":"check")})})]}),s&&(0,d.jsx)(n.Ex,{variant:"success"===s?"success":"error",children:h("success"===s?"valid":"invalid")}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(n.$n,{onClick:v,fullWidth:!0,disabled:!i.name.trim()||!i.prefix.trim()||!i.baseUrl.trim()||k,children:h(k?"saving":"save")}),(0,d.jsx)(n.$n,{onClick:f,variant:"ghost",fullWidth:!0,children:h("cancel")})]})]})}):null}z.propTypes={connection:h().shape({id:h().string,name:h().string,email:h().string,displayName:h().string,rateLimitedUntil:h().string,rateLimitProtection:h().bool,testStatus:h().string,isActive:h().bool,priority:h().number,lastError:h().string,lastErrorType:h().string,lastErrorSource:h().string,errorCode:h().oneOfType([h().string,h().number]),globalPriority:h().number}).isRequired,isOAuth:h().bool.isRequired,isFirst:h().bool.isRequired,isLast:h().bool.isRequired,onMoveUp:h().func.isRequired,onMoveDown:h().func.isRequired,onToggleActive:h().func.isRequired,onToggleRateLimit:h().func.isRequired,onRetest:h().func.isRequired,isRetesting:h().bool,onEdit:h().func.isRequired,onDelete:h().func.isRequired,onReauth:h().func},A.propTypes={isOpen:h().bool.isRequired,provider:h().string,providerName:h().string,isCompatible:h().bool,isAnthropic:h().bool,onSave:h().func.isRequired,onClose:h().func.isRequired},B.propTypes={isOpen:h().bool.isRequired,connection:h().shape({id:h().string,name:h().string,email:h().string,priority:h().number,authType:h().string,provider:h().string}),onSave:h().func.isRequired,onClose:h().func.isRequired},C.propTypes={isOpen:h().bool.isRequired,node:h().shape({id:h().string,name:h().string,prefix:h().string,apiType:h().string,baseUrl:h().string}),onSave:h().func.isRequired,onClose:h().func.isRequired,isAnthropic:h().bool}},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},45648:(a,b,c)=>{Promise.resolve().then(c.bind(c,89337))},46906:(a,b,c)=>{Promise.resolve().then(c.bind(c,98823))},48161:a=>{"use strict";a.exports=require("node:os")},55376:(a,b,c)=>{Promise.resolve().then(c.bind(c,55999))},55511:a=>{"use strict";a.exports=require("crypto")},55999:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(48249),e=c(22746);function f(){return(0,d.jsxs)("div",{className:"space-y-6 p-6",role:"status","aria-live":"polite","aria-busy":"true",children:[(0,d.jsx)(e.Skeleton,{className:"h-8 w-48"}),(0,d.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:[0,1,2].map(a=>(0,d.jsx)(e.CardSkeleton,{},a))})]})}},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},76760:a=>{"use strict";a.exports=require("node:path")},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},77598:a=>{"use strict";a.exports=require("node:crypto")},79646:a=>{"use strict";a.exports=require("child_process")},82940:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>C.default,__next_app__:()=>K,handler:()=>M,routeModule:()=>L});var d=c(7553),e=c(84006),f=c(67798),g=c(34775),h=c(99373),i=c(73461),j=c(1020),k=c(26349),l=c(54365),m=c(16023),n=c(63747),o=c(24235),p=c(23938),q=c(261),r=c(66758),s=c(77243),t=c(26713),u=c(37527),v=c(22820),w=c(88216),x=c(47929),y=c(79551),z=c(89125),A=c(86439),B=c(77068),C=c(81227),D=c(61287),E=c(81494),F=c(70722),G=c(70753),H=c(43954),I={};for(let a in D)0>["default","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(I[a]=()=>D[a]);c.d(b,I);let J={children:["",{children:["(dashboard)",{children:["dashboard",{children:["providers",{children:["[id]",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,17828)),"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/dashboard/providers/[id]/page.tsx"]}]},{}]},{error:[()=>Promise.resolve().then(c.bind(c,98823)),"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/dashboard/providers/error.tsx"],loading:[()=>Promise.resolve().then(c.bind(c,89337)),"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/dashboard/providers/loading.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(c.bind(c,6676)),"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/layout.tsx"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"]}]},{layout:[()=>Promise.resolve().then(c.bind(c,76537)),"/home/diegosouzapw/dev/proxys/9router/src/app/layout.tsx"],error:[()=>Promise.resolve().then(c.bind(c,64385)),"/home/diegosouzapw/dev/proxys/9router/src/app/error.tsx"],loading:[()=>Promise.resolve().then(c.bind(c,95127)),"/home/diegosouzapw/dev/proxys/9router/src/app/loading.tsx"],"global-error":[()=>Promise.resolve().then(c.bind(c,81227)),"/home/diegosouzapw/dev/proxys/9router/src/app/global-error.tsx"],"not-found":[()=>Promise.resolve().then(c.bind(c,8979)),"/home/diegosouzapw/dev/proxys/9router/src/app/not-found.tsx"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"]}]}.children,K={require:c,loadChunk:()=>Promise.resolve()},L=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/(dashboard)/dashboard/providers/[id]/page",pathname:"/dashboard/providers/[id]",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:J},distDir:".next",relativeProjectDir:""});async function M(a,b,d){var I;L.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let N=!!(0,h.getRequestMeta)(a,"minimalMode"),O="/(dashboard)/dashboard/providers/[id]/page";"/index"===O&&(O="/");let P=await L.prepare(a,b,{srcPage:O,multiZoneDraftMode:!1});if(!P)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Q,query:R,params:S,pageIsDynamic:T,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,serverActionsManifest:X,clientReferenceManifest:Y,subresourceIntegrityManifest:Z,prerenderManifest:$,isDraftMode:_,resolvedPathname:aa,revalidateOnlyGenerated:ab,routerServerContext:ac,nextConfig:ad,parsedUrl:ae,interceptionRoutePatterns:af,deploymentId:ag}=P,ah=(0,q.normalizeAppPath)(O),{isOnDemandRevalidate:ai}=P,aj=ad.experimental.ppr&&!ad.cacheComponents&&(0,H.isInterceptionRouteAppPath)(aa)?null:L.match(aa,$),ak=!!$.routes[aa],al=a.headers["user-agent"]||"",am=(0,t.getBotType)(al),an=(0,p.isHtmlBotRequest)(a),ao=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ap=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],aq=(0,r.getIsPossibleServerAction)(a),ar=(0,m.checkIsAppPPREnabled)(ad.experimental.ppr);if(!(0,h.getRequestMeta)(a,"postponed")&&ar&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let b=[];for await(let c of a)b.push(c);let c=Buffer.concat(b).toString("utf8");(0,h.addRequestMeta)(a,"postponed",c)}let as=ar&&(null==(I=$.routes[ah]??$.dynamicRoutes[ah])?void 0:I.renderingMode)==="PARTIALLY_STATIC",at=!1,au=!1,av=as?(0,h.getRequestMeta)(a,"postponed"):void 0,aw=as&&ap&&!ao;N&&(aw=aw&&!!av);let ax=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ay=(!an||!as)&&(!al||(0,p.shouldServeStreamingMetadata)(al,ad.htmlLimitedBots)),az=!!((aj||ak||$.routes[ah])&&!(an&&as)),aA=as&&!0===ad.cacheComponents,aB=!0===L.isDev||!az||"string"==typeof av||(aA&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aw&&!N:aw),aC=an&&as,aD=null;_||!az||aB||aq||av||aw||(aD=aa);let aE=aD;!aE&&L.isDev&&(aE=aa),L.isDev||_||!az||!ap||aw||(0,k.d)(a.headers);let aF={...D,tree:J,GlobalError:C.default,handler:M,routeModule:L,__next_app__:K};X&&Y&&(0,o.setManifestsSingleton)({page:O,clientReferenceManifest:Y,serverActionsManifest:X});let aG=a.method||"GET",aH=(0,g.getTracer)(),aI=aH.getActiveScopeSpan(),aJ=async()=>((null==ac?void 0:ac.render404)?await ac.render404(a,b,ae,!1):b.end("This page could not be found"),null);try{let f=L.getVaryHeader(aa,af);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return L.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aH.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aG} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aG} ${O}`)})},m=(0,h.getRequestMeta)(a,"incrementalCache"),o=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let l={query:R,params:S,page:ah,sharedContext:{buildId:Q},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aF,Component:(0,j.T)(aF),params:S,routeModule:L,page:O,postponed:f,shouldWaitOnAllReady:aC,serveStreamingMetadata:ay,supportsDynamicResponse:"string"==typeof f||aB,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,subresourceIntegrityManifest:Z,setCacheStatus:null==ac?void 0:ac.setCacheStatus,setIsrStatus:null==ac?void 0:ac.setIsrStatus,setReactDebugChannel:null==ac?void 0:ac.setReactDebugChannel,sendErrorsToBrowser:null==ac?void 0:ac.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),L.relativeProjectDir),isDraftMode:_,botType:am,isOnDemandRevalidate:ai,isPossibleServerAction:aq,assetPrefix:ad.assetPrefix,nextConfigOutput:ad.output,crossOrigin:ad.crossOrigin,trailingSlash:ad.trailingSlash,images:ad.images,previewProps:$.preview,deploymentId:ag,enableTainting:ad.experimental.taint,htmlLimitedBots:ad.htmlLimitedBots,reactMaxHeadersLength:ad.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:m,cacheLifeProfiles:ad.cacheLife,basePath:ad.basePath,serverActions:ad.experimental.serverActions,...at||au?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:at}:{},cacheComponents:!!ad.cacheComponents,experimental:{isRoutePPREnabled:as,expireTime:ad.expireTime,staleTimes:ad.experimental.staleTimes,dynamicOnHover:!!ad.experimental.dynamicOnHover,inlineCss:!!ad.experimental.inlineCss,authInterrupts:!!ad.experimental.authInterrupts,clientTraceMetadata:ad.experimental.clientTraceMetadata||[],clientParamParsingOrigins:ad.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,B.parseMaxPostponedStateSize)(ad.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>L.onRequestError(a,b,d,e,ac),err:(0,h.getRequestMeta)(a,"invokeError"),dev:L.isDev}};at&&(l.renderOpts.nextExport=!0,l.renderOpts.supportsDynamicResponse=!1,l.renderOpts.isDebugDynamicAccesses=at),i&&(l.renderOpts.supportsDynamicResponse=!1);let n=await k(e,l),{metadata:o}=n,{cacheControl:p,headers:q={},fetchTags:r,fetchMetrics:s}=o;if(r&&(q[x.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,az&&(null==p?void 0:p.revalidate)===0&&!L.isDev&&!as){let a=o.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${aa}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
|
|
1
|
+
(()=>{var a={};a.id=2134,a.ids=[2134],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},17828:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/dashboard/providers/[id]/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/dashboard/providers/[id]/page.tsx","default")},18425:(a,b,c)=>{Promise.resolve().then(c.bind(c,17828))},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29824:(a,b,c)=>{"use strict";c.d(b,{Ex:()=>j.default,$n:()=>d.default,Zp:()=>g.default,Qv:()=>i.CardSkeleton,G9:()=>t.default,bQ:()=>x.default,pp:()=>v.default,Qn:()=>w.default,pd:()=>e.default,Mh:()=>s.default,uR:()=>n.default,aF:()=>h.default,rq:()=>m.default,LF:()=>l.default,KN:()=>q.default,Lo:()=>r.default,y7:()=>p.default,Iz:()=>u.default,l6:()=>f.default,lM:()=>k.default,cn:()=>o.default});var d=c(53156),e=c(29518),f=c(59256),g=c(2490),h=c(65953),i=c(22746);c(45567);var j=c(4355),k=c(65472);c(59869),c(75146),c(65892),c(42546),c(22245);var l=c(8744),m=c(29494),n=c(1237);c(82054);var o=c(62688),p=c(46230),q=c(56589),r=c(73979);c(98004);var s=c(41371);c(53140);var t=c(27309),u=c(86059);c(77088);var v=c(85974);c(18732);var w=c(67083);c(52198);var x=c(50818);c(47047),c(16116)},33873:a=>{"use strict";a.exports=require("path")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},43010:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>r});var d=c(48249),e=c(67484),f=c(35005),g=c(49885),h=c.n(g),i=c(19099),j=c(2116),k=c.n(j),l=c(81220),m=c(77360),n=c(29824),o=c(17084),p=c(47825),q=c(73295);function r(){let a=(0,i.useParams)(),b=(0,i.useRouter)(),c=a.id,[f,g]=(0,e.useState)([]),[h,j]=(0,e.useState)(!0),[r,u]=(0,e.useState)(null),[x,y]=(0,e.useState)(!1),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(!1),[H,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(null),[L,M]=(0,e.useState)(null),[N,O]=(0,e.useState)({}),[P,Q]=(0,e.useState)(!1),{copied:R,copy:S}=(0,q.C)(),T=(0,m.c)("providers");(0,e.useRef)(!1);let U=(0,e.useRef)(!1),[V,W]=(0,e.useState)(null),[X,Y]=(0,e.useState)(null),[Z,$]=(0,e.useState)(!1),[_,aa]=(0,e.useState)(!1),[ab,ac]=(0,e.useState)({current:0,total:0,phase:"idle",status:"",logs:[],error:"",importedCount:0}),ad=r?{id:r.id,name:r.name||("anthropic-compatible"===r.type?T("anthropicCompatibleName"):T("openaiCompatibleName")),color:"anthropic-compatible"===r.type?"#D97757":"#10A37F",textIcon:"anthropic-compatible"===r.type?"AC":"OC",apiType:r.apiType,baseUrl:r.baseUrl,type:r.type}:o.IS[c]||o.zN[c]||o.fg[c],ae=!!o.IS[c]||!!o.zN[c],af=(0,p.KC)(c),ag=(0,o.wG)(c),ah=(0,o.mq)(c),ai=(0,o.gb)(c),aj=ah||ai,ak=aj?c:ag,al=aj?r?.prefix||c:ag,am=(0,e.useCallback)(async()=>{try{let a=await fetch("/api/models/alias"),b=await a.json();a.ok&&O(b.aliases||{})}catch(a){console.log("Error fetching aliases:",a)}},[]),an=(0,e.useCallback)(async()=>{try{let[a,b]=await Promise.all([fetch("/api/providers",{cache:"no-store"}),fetch("/api/provider-nodes",{cache:"no-store"})]),d=await a.json(),e=await b.json();if(a.ok){let a=(d.connections||[]).filter(a=>a.provider===c);g(a)}if(b.ok){let a=(e.nodes||[]).find(a=>a.id===c)||null;if(!a&&aj)for(let b=0;b<3;b+=1){await new Promise(a=>setTimeout(a,150));let b=await fetch("/api/provider-nodes",{cache:"no-store"});if(b.ok&&(a=((await b.json()).nodes||[]).find(a=>a.id===c)||null))break}u(a)}}catch(a){console.log("Error fetching connections:",a)}finally{j(!1)}},[c,aj]),ao=async a=>{try{let b=await fetch(`/api/provider-nodes/${c}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),d=await b.json();b.ok&&(u(d.node),await an(),I(!1))}catch(a){console.log("Error updating provider node:",a)}},ap=async(a,b,c=ag)=>{let d=`${c}/${a}`;try{let a=await fetch("/api/models/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:d,alias:b})});if(a.ok)await am();else{let b=await a.json();alert(b.error||T("failedSetAlias"))}}catch(a){console.log("Error setting alias:",a)}},aq=async a=>{try{(await fetch(`/api/models/alias?alias=${encodeURIComponent(a)}`,{method:"DELETE"})).ok&&await am()}catch(a){console.log("Error deleting alias:",a)}},ar=async a=>{if(confirm(T("deleteConnectionConfirm")))try{(await fetch(`/api/providers/${a}`,{method:"DELETE"})).ok&&g(f.filter(b=>b.id!==a))}catch(a){console.log("Error deleting connection:",a)}},as=(0,e.useCallback)(()=>{an(),y(!1)},[an]),at=async a=>{try{let b=await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:c,...a})});if(b.ok)return await an(),E(!1),null;let d=await b.json().catch(()=>({}));return d.error?.message||d.error||T("failedSaveConnection")}catch(a){return console.log("Error saving connection:",a),T("failedSaveConnectionRetry")}},au=async a=>{try{(await fetch(`/api/providers/${J.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})).ok&&(await an(),G(!1))}catch(a){console.log("Error updating connection:",a)}},av=async(a,b)=>{try{(await fetch(`/api/providers/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:b})})).ok&&g(c=>c.map(c=>c.id===a?{...c,isActive:b}:c))}catch(a){console.log("Error updating connection status:",a)}},aw=async(a,b)=>{try{(await fetch("/api/rate-limits",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({connectionId:a,enabled:b})})).ok&&g(c=>c.map(c=>c.id===a?{...c,rateLimitProtection:b}:c))}catch(a){console.error("Error toggling rate limit:",a)}},ax=async a=>{if(a&&!L){M(a);try{let b=await fetch(`/api/providers/${a}/test`,{method:"POST"});if(!b.ok){let a=await b.json().catch(()=>({}));alert(a.error||T("failedRetestConnection"));return}await an()}catch(a){console.error("Error retesting connection:",a)}finally{M(null)}}},ay=async(a,b)=>{if(a&&b)try{let c=b.priority,d=a.priority;c===d&&(c=f.indexOf(a)>f.indexOf(b)?b.priority-.5:b.priority+.5),await Promise.all([fetch(`/api/providers/${a.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:c})}),fetch(`/api/providers/${b.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:d})})]),await an()}catch(a){console.log("Error swapping priority:",a)}},az=async()=>{if(Z)return;let a=f.find(a=>!1!==a.isActive);if(a){$(!0),aa(!0),ac({current:0,total:0,phase:"fetching",status:T("fetchingModels"),logs:[],error:"",importedCount:0});try{let b=await fetch(`/api/providers/${a.id}/models`),d=await b.json();if(!b.ok)return void ac(a=>({...a,phase:"error",status:T("failedFetchModels"),error:d.error||T("failedImportModels")}));let e=d.models||[];if(0===e.length)return void ac(a=>({...a,phase:"done",status:T("noModelsFound"),logs:[T("noModelsReturnedFromEndpoint")]}));ac(a=>({...a,phase:"importing",total:e.length,status:T("importingModelsProgress",{current:0,total:e.length}),logs:[T("foundModelsStartingImport",{count:e.length})]}));let f=0;for(let a=0;a<e.length;a++){let b=e[a],d=b.id||b.name||b.model;if(!d)continue;let g=d.split("/"),h=g[g.length-1];ac(b=>({...b,current:a+1,status:T("importingModelsProgress",{current:a+1,total:e.length}),logs:[...b.logs,T("importingModelById",{modelId:d})]})),await fetch("/api/provider-models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:c,modelId:d,modelName:b.name||d,source:"imported"})}),N[h]||await ap(d,h,ak),f+=1}await am(),ac(a=>({...a,phase:"done",current:e.length,status:f>0?T("importSuccessCount",{count:f}):T("noNewModelsAddedExisting"),logs:[...a.logs,f>0?T("importDoneCount",{count:f}):T("noNewModelsAdded")],importedCount:f})),f>0&&setTimeout(()=>{window.location.reload()},2e3)}catch(a){console.log("Error importing models:",a),ac(b=>({...b,phase:"error",status:T("importFailed"),error:a instanceof Error?a.message:T("unexpectedErrorOccurred")}))}finally{$(!1)}}},aA=async(a,b)=>{aa(!0),ac({current:0,total:0,phase:"fetching",status:T("fetchingModels"),logs:[],error:"",importedCount:0});try{let c=(await a()).models||[];if(0===c.length)return void ac(a=>({...a,phase:"done",status:T("noModelsFound"),logs:[T("noModelsReturnedFromEndpoint")]}));ac(a=>({...a,phase:"importing",total:c.length,status:T("importingModelsProgress",{current:0,total:c.length}),logs:[T("foundModelsStartingImport",{count:c.length})]}));let d=0;for(let a=0;a<c.length;a++){let e=c[a],f=e.id||e.name||e.model;f&&(ac(b=>({...b,current:a+1,status:T("importingModelsProgress",{current:a+1,total:c.length}),logs:[...b.logs,T("importingModelById",{modelId:f})]})),await b(e)&&(d+=1))}ac(a=>({...a,phase:"done",current:c.length,status:d>0?T("importSuccessCount",{count:d}):T("noNewModelsAdded"),logs:[...a.logs,d>0?T("importDoneCount",{count:d}):T("noNewModelsAdded")],importedCount:d})),d>0&&setTimeout(()=>{window.location.reload()},2e3)}catch(a){console.log("Error importing models:",a),ac(b=>({...b,phase:"error",status:T("importFailed"),error:a instanceof Error?a.message:T("unexpectedErrorOccurred")}))}},aB=f.some(a=>!1!==a.isActive);return h?(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsx)(n.Qv,{}),(0,d.jsx)(n.Qv,{})]}):ad?(0,d.jsxs)("div",{className:"flex flex-col gap-8",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)(k(),{href:"/dashboard/providers",className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary transition-colors mb-4",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-lg",children:"arrow_back"}),T("backToProviders")]}),(0,d.jsxs)("div",{className:"flex items-center gap-4",children:[(0,d.jsx)("div",{className:"rounded-lg flex items-center justify-center",style:{backgroundColor:`${ad.color}15`},children:P?(0,d.jsx)("span",{className:"text-sm font-bold",style:{color:ad.color},children:ad.textIcon||ad.id.slice(0,2).toUpperCase()}):(0,d.jsx)(l.default,{src:ah&&ad.apiType?"responses"===ad.apiType?"/providers/oai-r.png":"/providers/oai-cc.png":ai?"/providers/anthropic-m.png":`/providers/${ad.id}.png`,alt:ad.name,width:48,height:48,className:"object-contain rounded-lg max-w-[48px] max-h-[48px]",sizes:"48px",onError:()=>Q(!0)})}),(0,d.jsxs)("div",{children:[ad.website?(0,d.jsxs)("a",{href:ad.website,target:"_blank",rel:"noopener noreferrer",className:"text-3xl font-semibold tracking-tight hover:underline inline-flex items-center gap-2",style:{color:ad.color},children:[ad.name,(0,d.jsx)("span",{className:"material-symbols-outlined text-lg opacity-60",children:"open_in_new"})]}):(0,d.jsx)("h1",{className:"text-3xl font-semibold tracking-tight",children:ad.name}),(0,d.jsx)("p",{className:"text-text-muted",children:T("connectionCountLabel",{count:f.length})})]})]})]}),aj&&r&&(0,d.jsxs)(n.Zp,{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:ai?T("anthropicCompatibleDetails"):T("openaiCompatibleDetails")}),(0,d.jsxs)("p",{className:"text-sm text-text-muted",children:[ai?T("messagesApi"):"responses"===r.apiType?T("responsesApi"):T("chatCompletions")," ","\xb7 ",(r.baseUrl||"").replace(/\/$/,""),"/",ai?T("messagesPath"):"responses"===r.apiType?T("responsesPath"):T("chatCompletionsPath")]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(n.$n,{size:"sm",icon:"add",onClick:()=>E(!0),disabled:f.length>0,children:T("add")}),(0,d.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"edit",onClick:()=>I(!0),children:T("edit")}),(0,d.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"delete",onClick:async()=>{if(confirm(T("deleteCompatibleNodeConfirm",{type:ai?T("anthropic"):T("openai")})))try{(await fetch(`/api/provider-nodes/${c}`,{method:"DELETE"})).ok&&b.push("/dashboard/providers")}catch(a){console.log("Error deleting provider node:",a)}},children:T("delete")})]})]}),f.length>0&&(0,d.jsx)("p",{className:"text-sm text-text-muted",children:T("singleConnectionPerCompatible")})]}),(0,d.jsxs)(n.Zp,{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:T("connections")}),(0,d.jsxs)("button",{onClick:()=>W({level:"provider",id:c,label:ad?.name||c}),className:`inline-flex items-center gap-1 px-2 py-1 rounded text-xs font-medium transition-all ${X?.providers?.[c]?"bg-amber-500/15 text-amber-500 hover:bg-amber-500/25":"bg-black/[0.03] dark:bg-white/[0.03] text-text-muted/50 hover:text-text-muted hover:bg-black/[0.06] dark:hover:bg-white/[0.06]"}`,title:X?.providers?.[c]?T("providerProxyTitleConfigured",{host:X.providers[c].host||T("configured")}):T("providerProxyConfigureHint"),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"vpn_lock"}),X?.providers?.[c]&&X.providers[c].host||T("providerProxy")]})]}),!aj&&(0,d.jsx)(n.$n,{size:"sm",icon:"add",onClick:()=>ae?y(!0):E(!0),children:T("add")})]}),0===f.length?(0,d.jsxs)("div",{className:"text-center py-12",children:[(0,d.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:ae?"lock":"key"})}),(0,d.jsx)("p",{className:"text-text-main font-medium mb-1",children:T("noConnectionsYet")}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:T("addFirstConnectionHint")}),!aj&&(0,d.jsx)(n.$n,{icon:"add",onClick:()=>ae?y(!0):E(!0),children:T("addConnection")})]}):(0,d.jsx)("div",{className:"flex flex-col divide-y divide-black/[0.03] dark:divide-white/[0.03]",children:f.sort((a,b)=>(a.priority||0)-(b.priority||0)).map((a,b)=>(0,d.jsx)(z,{connection:a,isOAuth:ae,isFirst:0===b,isLast:b===f.length-1,onMoveUp:()=>ay(a,f[b-1]),onMoveDown:()=>ay(a,f[b+1]),onToggleActive:b=>av(a.id,b),onToggleRateLimit:b=>aw(a.id,b),onRetest:()=>ax(a.id),isRetesting:L===a.id,onEdit:()=>{K(a),G(!0)},onDelete:()=>ar(a.id),onReauth:ae?()=>y(!0):void 0,onProxy:()=>W({level:"key",id:a.id,label:a.name||a.email||a.id}),hasProxy:!!(X?.keys?.[a.id]||X?.providers?.[c]||X?.global),proxySource:X?.keys?.[a.id]?"key":X?.providers?.[c]?"provider":X?.global?"global":null,proxyHost:(X?.keys?.[a.id]||X?.providers?.[c]||X?.global)?.host||null},a.id))})]}),(0,d.jsxs)(n.Zp,{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold mb-4",children:T("availableModels")}),(()=>{if(aj)return(0,d.jsx)(w,{providerStorageAlias:ak,providerDisplayAlias:al,modelAliases:N,copied:R,onCopy:S,onSetAlias:ap,onDeleteAlias:aq,connections:f,isAnthropic:ai,onImportWithProgress:aA});if(ad.passthroughModels)return(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-4",children:[(0,d.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"download",onClick:az,disabled:!aB||Z,children:Z?T("importingModels"):T("importFromModels")}),!aB&&(0,d.jsx)("span",{className:"text-xs text-text-muted",children:T("addConnectionToImport")})]}),(0,d.jsx)(t,{providerAlias:ag,modelAliases:N,copied:R,onCopy:S,onSetAlias:ap,onDeleteAlias:aq})]});let a=(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-4",children:[(0,d.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"download",onClick:az,disabled:!aB||Z,children:Z?T("importingModels"):T("importFromModels")}),!aB&&(0,d.jsx)("span",{className:"text-xs text-text-muted",children:T("addConnectionToImport")})]});return 0===af.length?(0,d.jsxs)("div",{children:[a,(0,d.jsx)("p",{className:"text-sm text-text-muted",children:T("noModelsConfigured")})]}):(0,d.jsxs)("div",{children:[a,(0,d.jsx)("div",{className:"flex flex-wrap gap-3",children:af.map(a=>{let b=`${ak}/${a.id}`,e=`${c}/${a.id}`,f=Object.entries(N).find(([,a])=>a===b||a===e)?.[0];return(0,d.jsx)(s,{model:a,fullModel:`${al}/${a.id}`,alias:f,copied:R,onCopy:S,onSetAlias:b=>ap(a.id,b,ak),onDeleteAlias:()=>aq(f)},a.id)})})]})})(),!aj&&(0,d.jsx)(v,{providerId:c,providerAlias:al,copied:R,onCopy:S})]}),"kiro"===c?(0,d.jsx)(n.Mh,{isOpen:x,providerInfo:ad,onSuccess:as,onClose:()=>{U.current=!0,y(!1)}}):"cursor"===c?(0,d.jsx)(n.G9,{isOpen:x,onSuccess:as,onClose:()=>{U.current=!0,y(!1)}}):(0,d.jsx)(n.LF,{isOpen:x,provider:c,providerInfo:ad,onSuccess:as,onClose:()=>{U.current=!0,y(!1)}}),(0,d.jsx)(A,{isOpen:D,provider:c,providerName:ad.name,isCompatible:aj,isAnthropic:ai,onSave:at,onClose:()=>E(!1)}),(0,d.jsx)(B,{isOpen:F,connection:J,onSave:au,onClose:()=>G(!1)}),aj&&(0,d.jsx)(C,{isOpen:H,node:r,onSave:ao,onClose:()=>I(!1),isAnthropic:ai}),V&&(0,d.jsx)(n.KN,{isOpen:!!V,onClose:()=>W(null),level:V.level,levelId:V.id,levelLabel:V.label}),(0,d.jsx)(n.aF,{isOpen:_,onClose:()=>{("done"===ab.phase||"error"===ab.phase)&&aa(!1)},title:T("importingModelsTitle"),size:"md",closeOnOverlay:!1,showCloseButton:"done"===ab.phase||"error"===ab.phase,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:["fetching"===ab.phase&&(0,d.jsx)("span",{className:"material-symbols-outlined text-primary animate-spin",children:"progress_activity"}),"importing"===ab.phase&&(0,d.jsx)("span",{className:"material-symbols-outlined text-primary animate-spin",children:"progress_activity"}),"done"===ab.phase&&(0,d.jsx)("span",{className:"material-symbols-outlined text-green-500",children:"check_circle"}),"error"===ab.phase&&(0,d.jsx)("span",{className:"material-symbols-outlined text-red-500",children:"error"}),(0,d.jsx)("span",{className:"text-sm font-medium text-text-main",children:ab.status})]}),("importing"===ab.phase||"done"===ab.phase)&&ab.total>0&&(0,d.jsxs)("div",{className:"w-full",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-1",children:[(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:[ab.current," / ",ab.total]}),(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:[Math.round(ab.current/ab.total*100),"%"]})]}),(0,d.jsx)("div",{className:"w-full h-2.5 bg-black/10 dark:bg-white/10 rounded-full overflow-hidden",children:(0,d.jsx)("div",{className:"h-full rounded-full transition-all duration-300 ease-out",style:{width:`${ab.current/ab.total*100}%`,background:"done"===ab.phase?"linear-gradient(90deg, #22c55e, #16a34a)":"linear-gradient(90deg, var(--color-primary), var(--color-primary-hover, var(--color-primary)))"}})})]}),"fetching"===ab.phase&&(0,d.jsx)("div",{className:"w-full h-2.5 bg-black/10 dark:bg-white/10 rounded-full overflow-hidden",children:(0,d.jsx)("div",{className:"h-full rounded-full animate-pulse",style:{width:"60%",background:"linear-gradient(90deg, var(--color-primary), var(--color-primary-hover, var(--color-primary)))"}})}),"error"===ab.phase&&ab.error&&(0,d.jsx)("div",{className:"p-3 rounded-lg bg-red-500/10 border border-red-500/20",children:(0,d.jsx)("p",{className:"text-sm text-red-400",children:ab.error})}),ab.logs.length>0&&(0,d.jsx)("div",{className:"max-h-48 overflow-y-auto rounded-lg bg-black/5 dark:bg-white/5 p-3 border border-black/5 dark:border-white/5",children:(0,d.jsx)("div",{className:"flex flex-col gap-1",children:ab.logs.map((a,b)=>(0,d.jsx)("p",{className:`text-xs font-mono ${a.startsWith("✓")?"text-green-500 font-semibold":"text-text-muted"}`,children:a},b))})}),"done"===ab.phase&&ab.importedCount>0&&(0,d.jsx)("p",{className:"text-xs text-text-muted text-center animate-pulse",children:T("pageAutoRefresh")})]})})]}):(0,d.jsxs)("div",{className:"text-center py-20",children:[(0,d.jsx)("p",{className:"text-text-muted",children:T("providerNotFound")}),(0,d.jsx)(k(),{href:"/dashboard/providers",className:"text-primary mt-4 inline-block",children:T("backToProviders")})]})}function s({model:a,fullModel:b,alias:c,copied:e,onCopy:f,onSetAlias:g,onDeleteAlias:h}){let i=(0,m.c)("providers");return(0,d.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg border border-border hover:bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-base text-text-muted",children:"smart_toy"}),(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono bg-sidebar px-1.5 py-0.5 rounded",children:b}),(0,d.jsx)("button",{onClick:()=>f(b,`model-${a.id}`),className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary",title:i("copyModel"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:e===`model-${a.id}`?"check":"content_copy"})})]})}function t({providerAlias:a,modelAliases:b,copied:c,onCopy:f,onSetAlias:g,onDeleteAlias:h}){let i=(0,m.c)("providers"),[j,k]=(0,e.useState)(""),[l,o]=(0,e.useState)(!1),p=Object.entries(b).filter(([,b])=>b.startsWith(`${a}/`)).map(([b,c])=>({modelId:c.replace(`${a}/`,""),fullModel:c,alias:b})),q=async()=>{let a;if(!j.trim()||l)return;let c=j.trim(),d=(a=c.split("/"))[a.length-1];if(b[d])return void alert(i("aliasExistsAlert",{alias:d}));o(!0);try{await g(c,d),k("")}catch(a){console.log("Error adding model:",a)}finally{o(!1)}};return(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:i("openRouterAnyModelHint")}),(0,d.jsxs)("div",{className:"flex items-end gap-2",children:[(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("label",{htmlFor:"new-model-input",className:"text-xs text-text-muted mb-1 block",children:i("modelIdFromOpenRouter")}),(0,d.jsx)("input",{id:"new-model-input",type:"text",value:j,onChange:a=>k(a.target.value),onKeyDown:a=>"Enter"===a.key&&q(),placeholder:i("openRouterModelPlaceholder"),className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})]}),(0,d.jsx)(n.$n,{size:"sm",icon:"add",onClick:q,disabled:!j.trim()||l,children:l?i("adding"):i("add")})]}),p.length>0&&(0,d.jsx)("div",{className:"flex flex-col gap-3",children:p.map(({modelId:a,fullModel:b,alias:e})=>(0,d.jsx)(u,{modelId:a,fullModel:b,copied:c,onCopy:f,onDeleteAlias:()=>h(e)},b))})]})}function u({modelId:a,fullModel:b,copied:c,onCopy:e,onDeleteAlias:f}){let g=(0,m.c)("providers");return(0,d.jsxs)("div",{className:"flex items-center gap-3 p-3 rounded-lg border border-border hover:bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-base text-text-muted",children:"smart_toy"}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium truncate",children:a}),(0,d.jsxs)("div",{className:"flex items-center gap-1 mt-1",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono bg-sidebar px-1.5 py-0.5 rounded",children:b}),(0,d.jsx)("button",{onClick:()=>e(b,`model-${a}`),className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary",title:g("copyModel"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:c===`model-${a}`?"check":"content_copy"})})]})]}),(0,d.jsx)("button",{onClick:f,className:"p-1 hover:bg-red-50 rounded text-red-500",title:g("removeModel"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"delete"})})]})}function v({providerId:a,providerAlias:b,copied:c,onCopy:f}){let g=(0,m.c)("providers"),[h,i]=(0,e.useState)([]),[j,k]=(0,e.useState)(""),[l,o]=(0,e.useState)(""),[p,q]=(0,e.useState)("chat-completions"),[r,s]=(0,e.useState)(["chat"]),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(!0),x=(0,e.useCallback)(async()=>{try{let b=await fetch(`/api/provider-models?provider=${encodeURIComponent(a)}`);if(b.ok){let a=await b.json();i(a.models||[])}}catch(a){console.error("Failed to fetch custom models:",a)}finally{w(!1)}},[a]),y=async()=>{if(j.trim()&&!t){u(!0);try{(await fetch("/api/provider-models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a,modelId:j.trim(),modelName:l.trim()||void 0,apiFormat:p,supportedEndpoints:r})})).ok&&(k(""),o(""),q("chat-completions"),s(["chat"]),await x())}catch(a){console.error("Failed to add custom model:",a)}finally{u(!1)}}},z=async b=>{try{await fetch(`/api/provider-models?provider=${encodeURIComponent(a)}&model=${encodeURIComponent(b)}`,{method:"DELETE"}),await x()}catch(a){console.error("Failed to remove custom model:",a)}};return(0,d.jsxs)("div",{className:"mt-6 pt-6 border-t border-border",children:[(0,d.jsxs)("h3",{className:"text-sm font-semibold mb-3 flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-base text-primary",children:"tune"}),g("customModels")]}),(0,d.jsx)("p",{className:"text-xs text-text-muted mb-3",children:g("customModelsHint")}),(0,d.jsxs)("div",{className:"flex flex-col gap-3 mb-3",children:[(0,d.jsxs)("div",{className:"flex items-end gap-2",children:[(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("label",{htmlFor:"custom-model-id",className:"text-xs text-text-muted mb-1 block",children:g("modelId")}),(0,d.jsx)("input",{id:"custom-model-id",type:"text",value:j,onChange:a=>k(a.target.value),onKeyDown:a=>"Enter"===a.key&&y(),placeholder:g("customModelPlaceholder"),className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})]}),(0,d.jsxs)("div",{className:"w-40",children:[(0,d.jsx)("label",{htmlFor:"custom-model-name",className:"text-xs text-text-muted mb-1 block",children:g("displayName")}),(0,d.jsx)("input",{id:"custom-model-name",type:"text",value:l,onChange:a=>o(a.target.value),onKeyDown:a=>"Enter"===a.key&&y(),placeholder:g("optional"),className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})]}),(0,d.jsx)(n.$n,{size:"sm",icon:"add",onClick:y,disabled:!j.trim()||t,children:t?g("adding"):g("add")})]}),(0,d.jsxs)("div",{className:"flex items-end gap-4 flex-wrap",children:[(0,d.jsxs)("div",{className:"w-48",children:[(0,d.jsx)("label",{htmlFor:"custom-api-format",className:"text-xs text-text-muted mb-1 block",children:"API Format"}),(0,d.jsxs)("select",{id:"custom-api-format",value:p,onChange:a=>q(a.target.value),className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary",children:[(0,d.jsx)("option",{value:"chat-completions",children:"Chat Completions"}),(0,d.jsx)("option",{value:"responses",children:"Responses API"})]})]}),(0,d.jsxs)("div",{className:"flex-1",children:[(0,d.jsx)("span",{className:"text-xs text-text-muted mb-1 block",children:"Supported Endpoints"}),(0,d.jsx)("div",{className:"flex items-center gap-3",children:["chat","embeddings","images","audio"].map(a=>(0,d.jsxs)("label",{className:"flex items-center gap-1.5 text-xs text-text-main cursor-pointer",children:[(0,d.jsx)("input",{type:"checkbox",checked:r.includes(a),onChange:b=>{b.target.checked?s(b=>[...b,a]):s(b=>b.filter(b=>b!==a))},className:"rounded border-border"}),"chat"===a?"\uD83D\uDCAC Chat":"embeddings"===a?"\uD83D\uDCD0 Embeddings":"images"===a?"\uD83D\uDDBC️ Images":"\uD83D\uDD0A Audio"]},a))})]})]})]}),v?(0,d.jsx)("p",{className:"text-xs text-text-muted",children:g("loading")}):h.length>0?(0,d.jsx)("div",{className:"flex flex-col gap-2",children:h.map(a=>{let e=`${b}/${a.id}`,h=`custom-${a.id}`;return(0,d.jsxs)("div",{className:"flex items-center gap-3 p-3 rounded-lg border border-border hover:bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-base text-primary",children:"tune"}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium truncate",children:a.name||a.id}),(0,d.jsxs)("div",{className:"flex items-center gap-1 mt-1 flex-wrap",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono bg-sidebar px-1.5 py-0.5 rounded",children:e}),(0,d.jsx)("button",{onClick:()=>f(e,h),className:"p-0.5 hover:bg-sidebar rounded text-text-muted hover:text-primary",title:g("copyModel"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:c===h?"check":"content_copy"})}),"responses"===a.apiFormat&&(0,d.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-blue-500/15 text-blue-400 font-medium",children:"Responses"}),a.supportedEndpoints?.includes("embeddings")&&(0,d.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-purple-500/15 text-purple-400 font-medium",children:"\uD83D\uDCD0 Embed"}),a.supportedEndpoints?.includes("images")&&(0,d.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-amber-500/15 text-amber-400 font-medium",children:"\uD83D\uDDBC️ Images"}),a.supportedEndpoints?.includes("audio")&&(0,d.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-green-500/15 text-green-400 font-medium",children:"\uD83D\uDD0A Audio"})]})]}),(0,d.jsx)("button",{onClick:()=>z(a.id),className:"p-1 hover:bg-red-50 rounded text-red-500",title:g("removeCustomModel"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"delete"})})]},a.id)})}):(0,d.jsx)("p",{className:"text-xs text-text-muted",children:g("noCustomModels")})]})}function w({providerStorageAlias:a,providerDisplayAlias:b,modelAliases:c,copied:g,onCopy:h,onSetAlias:i,onDeleteAlias:j,connections:k,isAnthropic:l,onImportWithProgress:o}){let p=(0,m.c)("providers"),[q,r]=(0,e.useState)(""),[s,t]=(0,e.useState)(!1),[v,w]=(0,e.useState)(!1),x=(0,f.i)(),y=Object.entries(c).filter(([,b])=>b.startsWith(`${a}/`)).map(([b,c])=>({modelId:c.replace(`${a}/`,""),fullModel:c,alias:b})),z=a=>{let d,e=(d=a.split("/"))[d.length-1];if(!c[e])return e;let f=`${b}-${e}`;return c[f]?null:f},A=async()=>{if(!q.trim()||s)return;let b=q.trim(),c=z(b);if(!c)return void x.error(p("allSuggestedAliasesExist"));t(!0);try{let d=await fetch("/api/provider-models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a,modelId:b,modelName:b,source:"manual"})});if(!d.ok){let a={};try{a=await d.json()}catch(a){console.error("Failed to parse error response from custom model API:",a)}throw Error(a.error?.message||p("failedSaveCustomModel"))}await i(b,c,a),r(""),x.success(p("modelAddedSuccess",{modelId:b}))}catch(a){console.error("Error adding model:",a),x.error(a instanceof Error?a.message:p("failedAddModelTryAgain"))}finally{t(!1)}},B=async()=>{if(v)return;let b=k.find(a=>!1!==a.isActive);if(b){w(!0);try{await o(async()=>{let a=await fetch(`/api/providers/${b.id}/models`),c=await a.json();if(!a.ok)throw Error(c.error||p("failedImportModels"));return c},async b=>{let c=b.id||b.name||b.model;if(!c)return!1;let d=z(c);return!!d&&((await fetch("/api/provider-models",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a,modelId:c,modelName:b.name||c,source:"imported"})})).ok?(await i(c,d,a),!0):(x.error(p("failedSaveImportedModel")),!1))})}catch(a){console.error("Error importing models:",a),x.error(p("failedImportModelsTryAgain"))}finally{w(!1)}}},C=k.some(a=>!1!==a.isActive),D=async(b,c)=>{try{if(!(await fetch(`/api/provider-models?provider=${encodeURIComponent(a)}&model=${encodeURIComponent(b)}`,{method:"DELETE"})).ok)throw Error(p("failedRemoveModelFromDatabase"));await j(c),x.success(p("modelRemovedSuccess"))}catch(a){console.error("Error deleting model:",a),x.error(a instanceof Error?a.message:p("failedDeleteModelTryAgain"))}};return(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:p("compatibleModelsDescription",{type:l?p("anthropic"):p("openai")})}),(0,d.jsxs)("div",{className:"flex items-end gap-2 flex-wrap",children:[(0,d.jsxs)("div",{className:"flex-1 min-w-[240px]",children:[(0,d.jsx)("label",{htmlFor:"new-compatible-model-input",className:"text-xs text-text-muted mb-1 block",children:p("modelId")}),(0,d.jsx)("input",{id:"new-compatible-model-input",type:"text",value:q,onChange:a=>r(a.target.value),onKeyDown:a=>"Enter"===a.key&&A(),placeholder:l?p("anthropicCompatibleModelPlaceholder"):p("openaiCompatibleModelPlaceholder"),className:"w-full px-3 py-2 text-sm border border-border rounded-lg bg-background focus:outline-none focus:border-primary"})]}),(0,d.jsx)(n.$n,{size:"sm",icon:"add",onClick:A,disabled:!q.trim()||s,children:s?p("adding"):p("add")}),(0,d.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"download",onClick:B,disabled:!C||v,children:v?p("importingModels"):p("importFromModels")})]}),!C&&(0,d.jsx)("p",{className:"text-xs text-text-muted",children:p("addConnectionToImport")}),y.length>0&&(0,d.jsx)("div",{className:"flex flex-col gap-3",children:y.map(({modelId:a,fullModel:c,alias:e})=>(0,d.jsx)(u,{modelId:a,fullModel:`${b}/${a}`,copied:g,onCopy:h,onDeleteAlias:()=>D(a,e)},c))})]})}function x({until:a}){let[b,c]=(0,e.useState)("");return b?(0,d.jsxs)("span",{className:"text-xs text-orange-500 font-mono",children:["⏱ ",b]}):null}s.propTypes={model:h().shape({id:h().string.isRequired}).isRequired,fullModel:h().string.isRequired,alias:h().string,copied:h().string,onCopy:h().func.isRequired},t.propTypes={providerAlias:h().string.isRequired,modelAliases:h().object.isRequired,copied:h().string,onCopy:h().func.isRequired,onSetAlias:h().func.isRequired,onDeleteAlias:h().func.isRequired},u.propTypes={modelId:h().string.isRequired,fullModel:h().string.isRequired,copied:h().string,onCopy:h().func.isRequired,onDeleteAlias:h().func.isRequired},v.propTypes={providerId:h().string.isRequired,providerAlias:h().string.isRequired,copied:h().string,onCopy:h().func.isRequired},w.propTypes={providerStorageAlias:h().string.isRequired,providerDisplayAlias:h().string.isRequired,modelAliases:h().object.isRequired,copied:h().string,onCopy:h().func.isRequired,onSetAlias:h().func.isRequired,onDeleteAlias:h().func.isRequired,connections:h().arrayOf(h().shape({id:h().string,isActive:h().bool})).isRequired,isAnthropic:h().bool,onImportWithProgress:h().func.isRequired},x.propTypes={until:h().string.isRequired};let y={runtime_error:{labelKey:"errorTypeRuntime",variant:"warning"},upstream_auth_error:{labelKey:"errorTypeUpstreamAuth",variant:"error"},auth_missing:{labelKey:"errorTypeMissingCredential",variant:"warning"},token_refresh_failed:{labelKey:"errorTypeRefreshFailed",variant:"warning"},token_expired:{labelKey:"errorTypeTokenExpired",variant:"warning"},upstream_rate_limited:{labelKey:"errorTypeRateLimited",variant:"warning"},upstream_unavailable:{labelKey:"errorTypeUpstreamUnavailable",variant:"error"},network_error:{labelKey:"errorTypeNetworkError",variant:"warning"},unsupported:{labelKey:"errorTypeTestUnsupported",variant:"default"},upstream_error:{labelKey:"errorTypeUpstreamError",variant:"error"}};function z({connection:a,isOAuth:b,isFirst:c,isLast:f,onMoveUp:g,onMoveDown:h,onToggleActive:i,onToggleRateLimit:j,onRetest:k,isRetesting:l,onEdit:o,onDelete:p,onReauth:q,onProxy:r,hasProxy:s,proxySource:t,proxyHost:u}){let v,w=(0,m.c)("providers"),z=b?a.name||a.email||a.displayName||w("oauthAccount"):a.name,[A,B]=(0,e.useState)(!1),C="unavailable"!==a.testStatus||A?a.testStatus:"active",D=function(a,b,c,d){if(!1===a.isActive)return{statusVariant:"default",statusLabel:d("statusDisabled"),errorType:null,errorBadge:null,errorTextClass:"text-text-muted"};if("active"===b||"success"===b)return{statusVariant:"success",statusLabel:d("statusConnected"),errorType:null,errorBadge:null,errorTextClass:"text-text-muted"};let e=function(a,b){if(b)return"upstream_rate_limited";if(a.lastErrorType)return a.lastErrorType;let c=Number(a.errorCode);if(401===c||403===c)return"upstream_auth_error";if(429===c)return"upstream_rate_limited";if(c>=500)return"upstream_unavailable";let d=(a.lastError||"").toLowerCase();return d?d.includes("runtime")||d.includes("not runnable")||d.includes("not installed")||d.includes("healthcheck")?"runtime_error":d.includes("refresh failed")?"token_refresh_failed":d.includes("token expired")||d.includes("expired")?"token_expired":d.includes("invalid api key")||d.includes("token invalid")||d.includes("revoked")||d.includes("access denied")||d.includes("unauthorized")?"upstream_auth_error":d.includes("rate limit")||d.includes("quota")||d.includes("too many requests")||d.includes("429")?"upstream_rate_limited":d.includes("fetch failed")||d.includes("network")||d.includes("timeout")||d.includes("econn")||d.includes("enotfound")?"network_error":d.includes("not supported")?"unsupported":"upstream_error":null}(a,c),f=e&&y[e]||null;return"runtime_error"===e?{statusVariant:"warning",statusLabel:d("statusRuntimeIssue"),errorType:e,errorBadge:f,errorTextClass:"text-yellow-600 dark:text-yellow-400"}:"upstream_auth_error"===e||"auth_missing"===e||"token_refresh_failed"===e||"token_expired"===e?{statusVariant:"error",statusLabel:d("statusAuthFailed"),errorType:e,errorBadge:f,errorTextClass:"text-red-500"}:"upstream_rate_limited"===e?{statusVariant:"warning",statusLabel:d("statusRateLimited"),errorType:e,errorBadge:f,errorTextClass:"text-yellow-600 dark:text-yellow-400"}:"network_error"===e?{statusVariant:"warning",statusLabel:d("statusNetworkIssue"),errorType:e,errorBadge:f,errorTextClass:"text-yellow-600 dark:text-yellow-400"}:"unsupported"===e?{statusVariant:"default",statusLabel:d("statusTestUnsupported"),errorType:e,errorBadge:f,errorTextClass:"text-text-muted"}:{statusVariant:"error",statusLabel:({unavailable:d("statusUnavailable"),failed:d("statusFailed"),error:d("statusError")})[b]||b||d("statusError"),errorType:e,errorBadge:f,errorTextClass:"text-red-500"}}(a,C,A,w),E=!!a.rateLimitProtection;return(0,d.jsxs)("div",{className:`group flex items-center justify-between p-3 rounded-lg hover:bg-black/[0.02] dark:hover:bg-white/[0.02] transition-colors ${!1===a.isActive?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[(0,d.jsxs)("div",{className:"flex flex-col",children:[(0,d.jsx)("button",{onClick:g,disabled:c,className:`p-0.5 rounded ${c?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_up"})}),(0,d.jsx)("button",{onClick:h,disabled:f,className:`p-0.5 rounded ${f?"text-text-muted/30 cursor-not-allowed":"hover:bg-sidebar text-text-muted hover:text-primary"}`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"keyboard_arrow_down"})})]}),(0,d.jsx)("span",{className:"material-symbols-outlined text-base text-text-muted",children:b?"lock":"key"}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium truncate",children:z}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1 flex-wrap",children:[(0,d.jsx)(n.Ex,{variant:D.statusVariant,size:"sm",dot:!0,children:D.statusLabel}),A&&!1!==a.isActive&&(0,d.jsx)(x,{until:a.rateLimitedUntil}),D.errorBadge&&!1!==a.isActive&&(0,d.jsx)(n.Ex,{variant:D.errorBadge.variant,size:"sm",children:w(D.errorBadge.labelKey)}),a.lastError&&!1!==a.isActive&&(0,d.jsx)("span",{className:`text-xs truncate max-w-[300px] ${D.errorTextClass}`,title:a.lastError,children:a.lastError}),(0,d.jsxs)("span",{className:"text-xs text-text-muted",children:["#",a.priority]}),a.globalPriority&&(0,d.jsx)("span",{className:"text-xs text-text-muted",children:w("autoPriority",{priority:a.globalPriority})}),(0,d.jsx)("span",{className:"text-text-muted/30 select-none",children:"|"}),(0,d.jsxs)("button",{onClick:()=>j(!E),className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-xs font-medium transition-all cursor-pointer ${E?"bg-emerald-500/15 text-emerald-500 hover:bg-emerald-500/25":"bg-black/[0.03] dark:bg-white/[0.03] text-text-muted/50 hover:text-text-muted hover:bg-black/[0.06] dark:hover:bg-white/[0.06]"}`,title:w(E?"disableRateLimitProtection":"enableRateLimitProtection"),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"shield"}),w(E?"rateLimitProtected":"rateLimitUnprotected")]}),s&&(v=w("global"===t?"proxySourceGlobal":"provider"===t?"proxySourceProvider":"proxySourceKey"),(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"text-text-muted/30 select-none",children:"|"}),(0,d.jsxs)("span",{className:`inline-flex items-center gap-0.5 px-1.5 py-0.5 rounded text-xs font-medium ${"global"===t?"bg-emerald-500/15 text-emerald-500":"provider"===t?"bg-amber-500/15 text-amber-500":"bg-blue-500/15 text-blue-500"}`,title:w("proxyConfiguredBySource",{source:v,host:u||w("configured")}),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[13px]",children:"vpn_lock"}),u||w("proxy")]})]}))]})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(n.$n,{size:"sm",variant:"ghost",icon:"refresh",loading:l,disabled:!1===a.isActive,onClick:k,className:"!h-7 !px-2 text-xs",title:w("retestAuthentication"),children:w("retest")}),(0,d.jsx)(n.lM,{size:"sm",checked:a.isActive??!0,onChange:i,title:w(a.isActive??!0?"disableConnection":"enableConnection")}),(0,d.jsxs)("div",{className:"flex gap-1 ml-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[q&&(0,d.jsx)("button",{onClick:q,className:"p-2 hover:bg-amber-500/10 rounded text-amber-600 hover:text-amber-500",title:w("reauthenticateConnection"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"passkey"})}),(0,d.jsx)("button",{onClick:o,className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"edit"})}),(0,d.jsx)("button",{onClick:r,className:"p-2 hover:bg-black/5 dark:hover:bg-white/5 rounded text-text-muted hover:text-primary",title:w("proxyConfig"),children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"vpn_lock"})}),(0,d.jsx)("button",{onClick:p,className:"p-2 hover:bg-red-500/10 rounded text-red-500",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]})]})}function A({isOpen:a,provider:b,providerName:c,isCompatible:f,isAnthropic:g,onSave:h,onClose:i}){let j=(0,m.c)("providers"),[k,l]=(0,e.useState)({name:"",apiKey:"",priority:1}),[o,p]=(0,e.useState)(!1),[q,r]=(0,e.useState)(null),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(null),w=async()=>{p(!0),v(null);try{let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b,apiKey:k.apiKey})}),c=await a.json();r(c.valid?"success":"failed")}catch{r("failed")}finally{p(!1)}},x=async()=>{if(b&&k.apiKey){t(!0),v(null);try{let a=!1;try{p(!0),r(null);let c=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b,apiKey:k.apiKey})});a=!!(await c.json()).valid,r(a?"success":"failed")}catch{r("failed")}finally{p(!1)}if(!a)return void v(j("apiKeyValidationFailed"));let c=await h({name:k.name,apiKey:k.apiKey,priority:k.priority,testStatus:"active"});c&&v("string"==typeof c?c:j("failedSaveConnection"))}finally{t(!1)}}};return b?(0,d.jsx)(n.aF,{isOpen:a,title:j("addProviderApiKeyTitle",{provider:c||b}),onClose:i,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(n.pd,{label:j("nameLabel"),value:k.name,onChange:a=>l({...k,name:a.target.value}),placeholder:j("productionKey")}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(n.pd,{label:j("apiKeyLabel"),type:"password",value:k.apiKey,onChange:a=>l({...k,apiKey:a.target.value}),className:"flex-1"}),(0,d.jsx)("div",{className:"pt-6",children:(0,d.jsx)(n.$n,{onClick:w,disabled:!k.apiKey||o||s,variant:"secondary",children:o?j("checking"):j("check")})})]}),q&&(0,d.jsx)(n.Ex,{variant:"success"===q?"success":"error",children:"success"===q?j("valid"):j("invalid")}),u&&(0,d.jsx)("div",{className:"text-sm text-red-500 bg-red-500/10 border border-red-500/20 rounded-lg px-3 py-2",children:u}),f&&(0,d.jsx)("p",{className:"text-xs text-text-muted",children:g?j("validationChecksAnthropicCompatible",{provider:c||j("anthropicCompatibleName")}):j("validationChecksOpenAiCompatible",{provider:c||j("openaiCompatibleName")})}),(0,d.jsx)(n.pd,{label:j("priorityLabel"),type:"number",value:k.priority,onChange:a=>l({...k,priority:Number.parseInt(a.target.value)||1})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(n.$n,{onClick:x,fullWidth:!0,disabled:!k.name||!k.apiKey||s,children:s?j("saving"):j("save")}),(0,d.jsx)(n.$n,{onClick:i,variant:"ghost",fullWidth:!0,children:j("cancel")})]})]})}):null}function B({isOpen:a,connection:b,onSave:c,onClose:f}){let g=(0,m.c)("providers"),[h,i]=(0,e.useState)({name:"",priority:1,apiKey:"",healthCheckInterval:60}),[j,k]=(0,e.useState)(!1),[l,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(null),[u,v]=(0,e.useState)(!1),w=async()=>{if(b?.provider){k(!0),p(null);try{let a=await fetch(`/api/providers/${b.id}/test`,{method:"POST"}),c=await a.json();p({valid:!!c.valid,diagnosis:c.diagnosis||null,message:c.error||null})}catch{p({valid:!1,diagnosis:{type:"network_error"},message:g("failedTestConnection")})}finally{k(!1)}}},x=async()=>{if(b?.provider&&h.apiKey){r(!0),t(null);try{let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:h.apiKey})}),c=await a.json();t(c.valid?"success":"failed")}catch{t("failed")}finally{r(!1)}}},z=async()=>{v(!0);try{let a={name:h.name,priority:h.priority,healthCheckInterval:h.healthCheckInterval};if(!A&&h.apiKey){a.apiKey=h.apiKey;let c="success"===s;if(!c)try{r(!0),t(null);let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:h.apiKey})});c=!!(await a.json()).valid,t(c?"success":"failed")}catch{t("failed")}finally{r(!1)}c&&(a.testStatus="active",a.lastError=null,a.lastErrorAt=null,a.lastErrorType=null,a.lastErrorSource=null,a.errorCode=null,a.rateLimitedUntil=null)}await c(a)}finally{v(!1)}};if(!b)return null;let A="oauth"===b.authType,B=(0,o.mq)(b.provider)||(0,o.gb)(b.provider),C=!l?.valid&&l?.diagnosis?.type&&y[l.diagnosis.type]||null;return(0,d.jsx)(n.aF,{isOpen:a,title:g("editConnection"),onClose:f,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(n.pd,{label:g("nameLabel"),value:h.name,onChange:a=>i({...h,name:a.target.value}),placeholder:A?g("accountName"):g("productionKey")}),A&&b.email&&(0,d.jsxs)("div",{className:"bg-sidebar/50 p-3 rounded-lg",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-1",children:g("email")}),(0,d.jsx)("p",{className:"font-medium",children:b.email})]}),A&&(0,d.jsx)(n.pd,{label:g("healthCheckMinutes"),type:"number",value:h.healthCheckInterval,onChange:a=>i({...h,healthCheckInterval:Math.max(0,Number.parseInt(a.target.value)||0)}),hint:g("healthCheckHint")}),(0,d.jsx)(n.pd,{label:g("priorityLabel"),type:"number",value:h.priority,onChange:a=>i({...h,priority:Number.parseInt(a.target.value)||1})}),!A&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(n.pd,{label:g("apiKeyLabel"),type:"password",value:h.apiKey,onChange:a=>i({...h,apiKey:a.target.value}),placeholder:g("enterNewApiKey"),hint:g("leaveBlankKeepCurrentApiKey"),className:"flex-1"}),(0,d.jsx)("div",{className:"pt-6",children:(0,d.jsx)(n.$n,{onClick:x,disabled:!h.apiKey||q||u,variant:"secondary",children:q?g("checking"):g("check")})})]}),s&&(0,d.jsx)(n.Ex,{variant:"success"===s?"success":"error",children:"success"===s?g("valid"):g("invalid")})]}),!B&&(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)(n.$n,{onClick:w,variant:"secondary",disabled:j,children:j?g("testing"):g("testConnection")}),l&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.Ex,{variant:l.valid?"success":"error",children:l.valid?g("valid"):g("failed")}),C&&(0,d.jsx)(n.Ex,{variant:C.variant,children:g(C.labelKey)})]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(n.$n,{onClick:z,fullWidth:!0,disabled:u,children:u?g("saving"):g("save")}),(0,d.jsx)(n.$n,{onClick:f,variant:"ghost",fullWidth:!0,children:g("cancel")})]})]})})}function C({isOpen:a,node:b,onSave:c,onClose:f,isAnthropic:g}){let h=(0,m.c)("providers"),[i,j]=(0,e.useState)({name:"",prefix:"",apiType:"chat",baseUrl:"https://api.openai.com/v1"}),[k,l]=(0,e.useState)(!1),[o,p]=(0,e.useState)(""),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(null),u=[{value:"chat",label:h("chatCompletions")},{value:"responses",label:h("responsesApi")}],v=async()=>{if(i.name.trim()&&i.prefix.trim()&&i.baseUrl.trim()){l(!0);try{let a={name:i.name,prefix:i.prefix,baseUrl:i.baseUrl};g||(a.apiType=i.apiType),await c(a)}finally{l(!1)}}},w=async()=>{r(!0);try{let a=await fetch("/api/provider-nodes/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:i.baseUrl,apiKey:o,type:g?"anthropic-compatible":"openai-compatible"})}),b=await a.json();t(b.valid?"success":"failed")}catch{t("failed")}finally{r(!1)}};return b?(0,d.jsx)(n.aF,{isOpen:a,title:h("editCompatibleTitle",{type:h(g?"anthropic":"openai")}),onClose:f,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(n.pd,{label:h("nameLabel"),value:i.name,onChange:a=>j({...i,name:a.target.value}),placeholder:h("compatibleProdPlaceholder",{type:h(g?"anthropic":"openai")}),hint:h("nameHint")}),(0,d.jsx)(n.pd,{label:h("prefixLabel"),value:i.prefix,onChange:a=>j({...i,prefix:a.target.value}),placeholder:h(g?"anthropicPrefixPlaceholder":"openaiPrefixPlaceholder"),hint:h("prefixHint")}),!g&&(0,d.jsx)(n.l6,{label:h("apiTypeLabel"),options:u,value:i.apiType,onChange:a=>j({...i,apiType:a.target.value})}),(0,d.jsx)(n.pd,{label:h("baseUrlLabel"),value:i.baseUrl,onChange:a=>j({...i,baseUrl:a.target.value}),placeholder:h(g?"anthropicBaseUrlPlaceholder":"openaiBaseUrlPlaceholder"),hint:h("compatibleBaseUrlHint",{type:h(g?"anthropic":"openai")})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(n.pd,{label:h("apiKeyForCheck"),type:"password",value:o,onChange:a=>p(a.target.value),className:"flex-1"}),(0,d.jsx)("div",{className:"pt-6",children:(0,d.jsx)(n.$n,{onClick:w,disabled:!o||q||!i.baseUrl.trim(),variant:"secondary",children:h(q?"checking":"check")})})]}),s&&(0,d.jsx)(n.Ex,{variant:"success"===s?"success":"error",children:h("success"===s?"valid":"invalid")}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(n.$n,{onClick:v,fullWidth:!0,disabled:!i.name.trim()||!i.prefix.trim()||!i.baseUrl.trim()||k,children:h(k?"saving":"save")}),(0,d.jsx)(n.$n,{onClick:f,variant:"ghost",fullWidth:!0,children:h("cancel")})]})]})}):null}z.propTypes={connection:h().shape({id:h().string,name:h().string,email:h().string,displayName:h().string,rateLimitedUntil:h().string,rateLimitProtection:h().bool,testStatus:h().string,isActive:h().bool,priority:h().number,lastError:h().string,lastErrorType:h().string,lastErrorSource:h().string,errorCode:h().oneOfType([h().string,h().number]),globalPriority:h().number}).isRequired,isOAuth:h().bool.isRequired,isFirst:h().bool.isRequired,isLast:h().bool.isRequired,onMoveUp:h().func.isRequired,onMoveDown:h().func.isRequired,onToggleActive:h().func.isRequired,onToggleRateLimit:h().func.isRequired,onRetest:h().func.isRequired,isRetesting:h().bool,onEdit:h().func.isRequired,onDelete:h().func.isRequired,onReauth:h().func},A.propTypes={isOpen:h().bool.isRequired,provider:h().string,providerName:h().string,isCompatible:h().bool,isAnthropic:h().bool,onSave:h().func.isRequired,onClose:h().func.isRequired},B.propTypes={isOpen:h().bool.isRequired,connection:h().shape({id:h().string,name:h().string,email:h().string,priority:h().number,authType:h().string,provider:h().string}),onSave:h().func.isRequired,onClose:h().func.isRequired},C.propTypes={isOpen:h().bool.isRequired,node:h().shape({id:h().string,name:h().string,prefix:h().string,apiType:h().string,baseUrl:h().string}),onSave:h().func.isRequired,onClose:h().func.isRequired,isAnthropic:h().bool}},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},45648:(a,b,c)=>{Promise.resolve().then(c.bind(c,89337))},46906:(a,b,c)=>{Promise.resolve().then(c.bind(c,98823))},48161:a=>{"use strict";a.exports=require("node:os")},55376:(a,b,c)=>{Promise.resolve().then(c.bind(c,55999))},55511:a=>{"use strict";a.exports=require("crypto")},55999:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(48249),e=c(22746);function f(){return(0,d.jsxs)("div",{className:"space-y-6 p-6",role:"status","aria-live":"polite","aria-busy":"true",children:[(0,d.jsx)(e.Skeleton,{className:"h-8 w-48"}),(0,d.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:[0,1,2].map(a=>(0,d.jsx)(e.CardSkeleton,{},a))})]})}},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},76760:a=>{"use strict";a.exports=require("node:path")},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},77598:a=>{"use strict";a.exports=require("node:crypto")},79646:a=>{"use strict";a.exports=require("child_process")},82940:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>C.default,__next_app__:()=>K,handler:()=>M,routeModule:()=>L});var d=c(7553),e=c(84006),f=c(67798),g=c(34775),h=c(99373),i=c(73461),j=c(1020),k=c(26349),l=c(54365),m=c(16023),n=c(63747),o=c(24235),p=c(23938),q=c(261),r=c(66758),s=c(77243),t=c(26713),u=c(37527),v=c(22820),w=c(88216),x=c(47929),y=c(79551),z=c(89125),A=c(86439),B=c(77068),C=c(81227),D=c(61287),E=c(81494),F=c(70722),G=c(70753),H=c(43954),I={};for(let a in D)0>["default","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(I[a]=()=>D[a]);c.d(b,I);let J={children:["",{children:["(dashboard)",{children:["dashboard",{children:["providers",{children:["[id]",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,17828)),"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/dashboard/providers/[id]/page.tsx"]}]},{}]},{error:[()=>Promise.resolve().then(c.bind(c,98823)),"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/dashboard/providers/error.tsx"],loading:[()=>Promise.resolve().then(c.bind(c,89337)),"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/dashboard/providers/loading.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(c.bind(c,6676)),"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/layout.tsx"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"]}]},{layout:[()=>Promise.resolve().then(c.bind(c,76537)),"/home/diegosouzapw/dev/proxys/9router/src/app/layout.tsx"],error:[()=>Promise.resolve().then(c.bind(c,64385)),"/home/diegosouzapw/dev/proxys/9router/src/app/error.tsx"],loading:[()=>Promise.resolve().then(c.bind(c,95127)),"/home/diegosouzapw/dev/proxys/9router/src/app/loading.tsx"],"global-error":[()=>Promise.resolve().then(c.bind(c,81227)),"/home/diegosouzapw/dev/proxys/9router/src/app/global-error.tsx"],"not-found":[()=>Promise.resolve().then(c.bind(c,8979)),"/home/diegosouzapw/dev/proxys/9router/src/app/not-found.tsx"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"]}]}.children,K={require:c,loadChunk:()=>Promise.resolve()},L=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/(dashboard)/dashboard/providers/[id]/page",pathname:"/dashboard/providers/[id]",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:J},distDir:".next",relativeProjectDir:""});async function M(a,b,d){var I;L.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let N=!!(0,h.getRequestMeta)(a,"minimalMode"),O="/(dashboard)/dashboard/providers/[id]/page";"/index"===O&&(O="/");let P=await L.prepare(a,b,{srcPage:O,multiZoneDraftMode:!1});if(!P)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Q,query:R,params:S,pageIsDynamic:T,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,serverActionsManifest:X,clientReferenceManifest:Y,subresourceIntegrityManifest:Z,prerenderManifest:$,isDraftMode:_,resolvedPathname:aa,revalidateOnlyGenerated:ab,routerServerContext:ac,nextConfig:ad,parsedUrl:ae,interceptionRoutePatterns:af,deploymentId:ag}=P,ah=(0,q.normalizeAppPath)(O),{isOnDemandRevalidate:ai}=P,aj=ad.experimental.ppr&&!ad.cacheComponents&&(0,H.isInterceptionRouteAppPath)(aa)?null:L.match(aa,$),ak=!!$.routes[aa],al=a.headers["user-agent"]||"",am=(0,t.getBotType)(al),an=(0,p.isHtmlBotRequest)(a),ao=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ap=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],aq=(0,r.getIsPossibleServerAction)(a),ar=(0,m.checkIsAppPPREnabled)(ad.experimental.ppr);if(!(0,h.getRequestMeta)(a,"postponed")&&ar&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let b=[];for await(let c of a)b.push(c);let c=Buffer.concat(b).toString("utf8");(0,h.addRequestMeta)(a,"postponed",c)}let as=ar&&(null==(I=$.routes[ah]??$.dynamicRoutes[ah])?void 0:I.renderingMode)==="PARTIALLY_STATIC",at=!1,au=!1,av=as?(0,h.getRequestMeta)(a,"postponed"):void 0,aw=as&&ap&&!ao;N&&(aw=aw&&!!av);let ax=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ay=(!an||!as)&&(!al||(0,p.shouldServeStreamingMetadata)(al,ad.htmlLimitedBots)),az=!!((aj||ak||$.routes[ah])&&!(an&&as)),aA=as&&!0===ad.cacheComponents,aB=!0===L.isDev||!az||"string"==typeof av||(aA&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aw&&!N:aw),aC=an&&as,aD=null;_||!az||aB||aq||av||aw||(aD=aa);let aE=aD;!aE&&L.isDev&&(aE=aa),L.isDev||_||!az||!ap||aw||(0,k.d)(a.headers);let aF={...D,tree:J,GlobalError:C.default,handler:M,routeModule:L,__next_app__:K};X&&Y&&(0,o.setManifestsSingleton)({page:O,clientReferenceManifest:Y,serverActionsManifest:X});let aG=a.method||"GET",aH=(0,g.getTracer)(),aI=aH.getActiveScopeSpan(),aJ=async()=>((null==ac?void 0:ac.render404)?await ac.render404(a,b,ae,!1):b.end("This page could not be found"),null);try{let f=L.getVaryHeader(aa,af);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return L.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aH.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aG} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aG} ${O}`)})},m=(0,h.getRequestMeta)(a,"incrementalCache"),o=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let l={query:R,params:S,page:ah,sharedContext:{buildId:Q},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aF,Component:(0,j.T)(aF),params:S,routeModule:L,page:O,postponed:f,shouldWaitOnAllReady:aC,serveStreamingMetadata:ay,supportsDynamicResponse:"string"==typeof f||aB,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,subresourceIntegrityManifest:Z,setCacheStatus:null==ac?void 0:ac.setCacheStatus,setIsrStatus:null==ac?void 0:ac.setIsrStatus,setReactDebugChannel:null==ac?void 0:ac.setReactDebugChannel,sendErrorsToBrowser:null==ac?void 0:ac.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),L.relativeProjectDir),isDraftMode:_,botType:am,isOnDemandRevalidate:ai,isPossibleServerAction:aq,assetPrefix:ad.assetPrefix,nextConfigOutput:ad.output,crossOrigin:ad.crossOrigin,trailingSlash:ad.trailingSlash,images:ad.images,previewProps:$.preview,deploymentId:ag,enableTainting:ad.experimental.taint,htmlLimitedBots:ad.htmlLimitedBots,reactMaxHeadersLength:ad.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:m,cacheLifeProfiles:ad.cacheLife,basePath:ad.basePath,serverActions:ad.experimental.serverActions,...at||au?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:at}:{},cacheComponents:!!ad.cacheComponents,experimental:{isRoutePPREnabled:as,expireTime:ad.expireTime,staleTimes:ad.experimental.staleTimes,dynamicOnHover:!!ad.experimental.dynamicOnHover,inlineCss:!!ad.experimental.inlineCss,authInterrupts:!!ad.experimental.authInterrupts,clientTraceMetadata:ad.experimental.clientTraceMetadata||[],clientParamParsingOrigins:ad.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,B.parseMaxPostponedStateSize)(ad.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>L.onRequestError(a,b,d,e,ac),err:(0,h.getRequestMeta)(a,"invokeError"),dev:L.isDev}};at&&(l.renderOpts.nextExport=!0,l.renderOpts.supportsDynamicResponse=!1,l.renderOpts.isDebugDynamicAccesses=at),i&&(l.renderOpts.supportsDynamicResponse=!1);let n=await k(e,l),{metadata:o}=n,{cacheControl:p,headers:q={},fetchTags:r,fetchMetrics:s}=o;if(r&&(q[x.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,az&&(null==p?void 0:p.revalidate)===0&&!L.isDev&&!as){let a=o.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${aa}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
|
|
2
2
|
see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:u.CachedRouteKind.APP_PAGE,html:n,headers:q,rscData:o.flightData,postponed:o.postponed,status:o.statusCode,segmentData:o.segmentData},cacheControl:p}},p=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i,forceStaticRender:j=!1})=>{let k,l=!1===L.isDev,q=c||b.writableEnded;if(ai&&ab&&!f&&!N)return(null==ac?void 0:ac.render404)?await ac.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(aj&&(k=(0,v.parseFallbackField)(aj.fallback)),k===v.FallbackMode.PRERENDER&&(0,t.isBot)(al)&&(!as||an)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ai=!0),ai&&(k!==v.FallbackMode.NOT_FOUND||f)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),!N&&k!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aE&&!q&&!_&&T&&(l||!ak)){if((l||aj)&&k===v.FallbackMode.NOT_FOUND){if(ad.experimental.adapterPath)return await aJ();throw new A.NoFallbackError}if(as&&(ad.cacheComponents?!aw:!ap)){let b=l&&"string"==typeof(null==aj?void 0:aj.fallback)?aj.fallback:ah,c=l&&(null==aj?void 0:aj.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(aj.fallbackRouteParams):au?(0,n.getFallbackRouteParams)(ah,L):null,f=await L.handleResponse({cacheKey:b,req:a,nextConfig:ad,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:$,isRoutePPREnabled:as,responseGenerator:async()=>o({span:i,postponed:void 0,fallbackRouteParams:c,forceStaticRender:!1}),waitUntil:d.waitUntil,isMinimalMode:N});if(null===f)return null;if(f)return delete f.cacheControl,f}}let r=ai||g||!av?void 0:av;if(aA&&!N&&m&&aw&&!j){let b=await m.get(aa,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(r=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,G.scheduleOnNextTick)(async()=>{let b=L.getResponseCache(a);try{await b.revalidate(aa,m,as,!1,a=>p({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if(at&&void 0!==r)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=l&&(null==aj?void 0:aj.fallbackRouteParams)&&(0,h.getRequestMeta)(a,"renderFallbackShell")?(0,n.createOpaqueFallbackRouteParams)(aj.fallbackRouteParams):au?(0,n.getFallbackRouteParams)(ah,L):null;return o({span:i,postponed:r,fallbackRouteParams:s,forceStaticRender:j})},q=async c=>{var f,g,i,j,k;let l,m=await L.handleResponse({cacheKey:aD,responseGenerator:a=>p({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ai,isRoutePPREnabled:as,req:a,nextConfig:ad,prerenderManifest:$,waitUntil:d.waitUntil,isMinimalMode:N});if(_&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),L.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!m){if(aD)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=m.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=m.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let n="string"==typeof m.value.postponed;az&&!aw&&(!n||ao)&&(N||b.setHeader("x-nextjs-cache",ai?"REVALIDATED":m.isMiss?"MISS":m.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=m;if(av)l={revalidate:0,expire:void 0};else if(aw)l={revalidate:0,expire:void 0};else if(!L.isDev)if(_)l={revalidate:0,expire:void 0};else if(az){if(m.cacheControl)if("number"==typeof m.cacheControl.revalidate){if(m.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${m.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:m.cacheControl.revalidate,expire:(null==(j=m.cacheControl)?void 0:j.expire)??ad.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(m.cacheControl=l,"string"==typeof ax&&(null==q?void 0:q.kind)===u.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];N&&az&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(ax);return void 0!==d?(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl}):(b.statusCode=204,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl}))}let r=aA?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r(m,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(q.headers){let a={...q.headers};for(let[c,d]of(N&&az||delete a[x.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let t=null==(g=q.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(N&&az&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!q.status||ap&&as||(b.statusCode=q.status),!N&&q.status&&E.RedirectStatusCode[q.status]&&ap&&(b.statusCode=200),n&&!aw&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ap&&!_){if(void 0===q.rscData){if(q.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(ad.cacheComponents)return b.statusCode=404,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl});else throw Object.defineProperty(new F.InvariantError(`Expected RSC response, got ${q.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:q.html,cacheControl:m.cacheControl})}return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:w.default.fromStatic(q.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl})}let v=q.html;if(!n||N||ap)return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:v,cacheControl:m.cacheControl});if(at)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let A=new TransformStream;return v.push(A.readable),o({span:c,postponed:q.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(A.writable)}).catch(a=>{A.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aI)return await aH.withPropagatedContext(a.headers,()=>aH.trace(i.BaseServerSpan.handleRequest,{spanName:`${aG} ${O}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aG,"http.target":a.url}},q));await q(aI)}catch(b){throw b instanceof A.NoFallbackError||await L.onRequestError(a,b,{routerKind:"App Router",routePath:O,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:az,isOnDemandRevalidate:ai})},!1,ac),b}}},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87074:(a,b,c)=>{Promise.resolve().then(c.bind(c,92273))},87550:a=>{"use strict";a.exports=require("better-sqlite3")},89049:(a,b,c)=>{Promise.resolve().then(c.bind(c,43010))},89337:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/dashboard/providers/loading.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/dashboard/providers/loading.tsx","default")},92273:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsx)("div",{className:"flex flex-col items-center justify-center min-h-[400px] p-6",role:"alert","aria-live":"assertive",children:(0,d.jsxs)("div",{className:"text-center space-y-4",children:[(0,d.jsx)("h2",{className:"text-xl font-semibold text-red-600 dark:text-red-400",children:"Failed to load providers"}),(0,d.jsx)("p",{className:"text-text-muted max-w-md",children:"We could not load provider data right now. Check your connection and try again."}),a?.digest&&(0,d.jsxs)("p",{className:"text-xs text-text-muted font-mono",children:["Error ID: ",a.digest]}),!1,(0,d.jsx)("button",{onClick:b,className:"px-4 py-2 bg-primary text-white rounded-lg hover:bg-primary-hover transition-colors focus:outline-2 focus:outline-offset-2 focus:outline-primary",children:"Try Again"})]})})}},98823:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/dashboard/providers/error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/diegosouzapw/dev/proxys/9router/src/app/(dashboard)/dashboard/providers/error.tsx","default")}};var b=require("../../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,595,5573,8020,3498,1465,438,2910,3596,9679,2901,2050,1909,4631,9548],()=>b(b.s=82940));module.exports=c})();
|