switchboard-router 0.9.56 → 0.9.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/static/cG6cLaTIiXMA9B8cN_VI5/_buildManifest.js +1 -0
- package/app/{.next-cli-build/static/chunks/1321-e030b87815d694f7.js → .next/static/chunks/1321-a7406eb3cccfd85f.js} +1 -1
- package/app/.next/static/chunks/{1330-e1ec0f07ea113880.js → 1330-916ae59f041a0a4f.js} +2 -2
- package/app/.next/static/chunks/{3378-277dccfa153c2c15.js → 3378-0978c9887e5e6bd8.js} +6 -11
- package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/{page-51f788f35bc5325f.js → page-adba2750c4fbf61e.js} +1 -1
- package/app/.next/static/chunks/app/_global-error/page-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/catalog/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/doctor/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/export/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/mcp/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/skills/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/sync/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/updates/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/auth/login/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/auth/logout/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/auth/status/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/aider-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-full-catalog/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-picker-labels/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/gemini-cli-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/grok-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/pi-settings/manual-configs/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/pi-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/picker-labels/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/combos/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/combos/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/headroom/extras/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/headroom/proxy/[...path]/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/headroom/restart/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/headroom/start/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/headroom/status/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/headroom/stop/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/health/live/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/health/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/keys/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/locale/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/combos/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/combos/[id]/strategy/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/combos/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/health/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/metrics/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/providers/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/routing/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/usage/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/version/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/models/alias/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/models/availability/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/models/custom/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/models/disabled/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/models/routable/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/models/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/models/test/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/codex/bulk-import/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/api-key/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/defaults/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/batch/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/cache/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/prepare/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/remove-unavailable/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/verify/cancel/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/verify/start/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/verify/status/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/client/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/suggested-models/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/test-batch/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/providers/validate/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/health/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/install/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/logs/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/restart/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/start/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/stats/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/status/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/stop/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/routing/feedback/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/routing/insights/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/routing/learn/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/routing/stats/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/routing/versions/promote/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/routing/versions/rollback/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/settings/database/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/settings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/shutdown/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/skills/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/tags/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/token-saver/vault-stats/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/translator/load/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/translator/save/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/translator/send/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/translator/translate/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/usage/chart/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/usage/history/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/usage/logs/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/usage/providers/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-details/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-details/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-logs/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stats/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stream/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/api/chat/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/voices/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/embeddings/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/images/generations/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/[kind]/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/info/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/compact/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/search/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/videos/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/videos/edits/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/videos/extensions/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/videos/generations/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1/web/fetch/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/version/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/version/shutdown/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/api/version/update/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/manifest.webmanifest/route-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/app/page-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-55c8179537f7f084.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-55c8179537f7f084.js +1 -0
- package/app/.next/static/css/d042b5b105ba183a.css +1 -0
- package/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +21 -19
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/prerender-manifest.json +3 -3
- package/app/.next-cli-build/routes-manifest.json +12 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +3 -3
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page.js +2 -2
- package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/api/agent-library/catalog/route.js +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/catalog/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/doctor/route.js +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/doctor/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/export/route.js +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/export/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/mcp/route.js +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/mcp/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/route.js +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/skills/route.js +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/skills/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/sync/route.js +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/sync/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/updates/route.js +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/updates/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-full-catalog/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-full-catalog/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-picker-labels/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-picker-labels/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +3 -3
- package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +3 -3
- package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/manual-configs/route.js +1 -0
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/manual-configs/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/manual-configs/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/picker-labels/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/picker-labels/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/live/route.js +1 -0
- package/app/.next-cli-build/server/app/api/health/live/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/health/live/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/health/route.js +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/health/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/metrics/route.js +2 -2
- package/app/.next-cli-build/server/app/api/mgmt/v1/metrics/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/routing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/routing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/usage/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/usage/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/version/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/version/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/routable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/routable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/defaults/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/defaults/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/batch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/cache/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/cache/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/prepare/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/prepare/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/remove-unavailable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/remove-unavailable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/cancel/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/cancel/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/routing/feedback/route.js +1 -1
- package/app/.next-cli-build/server/app/api/routing/feedback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/routing/insights/route.js +1 -1
- package/app/.next-cli-build/server/app/api/routing/insights/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/routing/learn/route.js +1 -1
- package/app/.next-cli-build/server/app/api/routing/learn/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/routing/stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/routing/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/routing/versions/promote/route.js +1 -1
- package/app/.next-cli-build/server/app/api/routing/versions/promote/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/routing/versions/rollback/route.js +1 -1
- package/app/.next-cli-build/server/app/api/routing/versions/rollback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/skills/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/skills/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/token-saver/vault-stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/token-saver/vault-stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +2 -2
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page.js +1 -1
- package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
- package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing/page.js +1 -1
- package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/landing.html +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/login/page.js +1 -1
- package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/login.html +1 -1
- package/app/.next-cli-build/server/app/login.rsc +5 -5
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page.js +1 -1
- package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +21 -19
- package/app/.next-cli-build/server/chunks/1129.js +2 -2
- package/app/.next-cli-build/server/chunks/1158.js +1 -1
- package/app/.next-cli-build/server/chunks/1294.js +2 -2
- package/app/.next-cli-build/server/chunks/1792.js +2 -2
- package/app/.next-cli-build/server/chunks/1937.js +2 -2
- package/app/.next-cli-build/server/chunks/1998.js +1 -1
- package/app/.next-cli-build/server/chunks/2142.js +1 -1
- package/app/.next-cli-build/server/chunks/2619.js +1 -1
- package/app/.next-cli-build/server/chunks/2847.js +1 -1
- package/app/.next-cli-build/server/chunks/3446.js +1 -1
- package/app/.next-cli-build/server/chunks/369.js +6 -6
- package/app/.next-cli-build/server/chunks/4301.js +1 -1
- package/app/.next-cli-build/server/chunks/4454.js +1 -1
- package/app/.next-cli-build/server/chunks/5115.js +1 -1
- package/app/.next-cli-build/server/chunks/5139.js +1 -1
- package/app/.next-cli-build/server/chunks/519.js +1 -1
- package/app/.next-cli-build/server/chunks/5565.js +6 -11
- package/app/.next-cli-build/server/chunks/6328.js +1 -1
- package/app/.next-cli-build/server/chunks/7059.js +1 -0
- package/app/.next-cli-build/server/chunks/7133.js +1 -1
- package/app/.next-cli-build/server/chunks/7774.js +3 -3
- package/app/.next-cli-build/server/chunks/7828.js +2 -2
- package/app/.next-cli-build/server/chunks/8400.js +3 -3
- package/app/.next-cli-build/server/chunks/869.js +1 -1
- package/app/.next-cli-build/server/chunks/8775.js +1 -1
- package/app/.next-cli-build/server/chunks/8789.js +1 -1
- package/app/.next-cli-build/server/chunks/8915.js +2 -2
- package/app/.next-cli-build/server/chunks/8942.js +1 -1
- package/app/.next-cli-build/server/chunks/8998.js +14 -14
- package/app/.next-cli-build/server/chunks/9059.js +1 -1
- package/app/.next-cli-build/server/chunks/9261.js +1 -1
- package/app/.next-cli-build/server/chunks/9264.js +2 -2
- package/app/.next-cli-build/server/chunks/9353.js +42 -0
- package/app/.next-cli-build/server/chunks/static/media/versions.fd0ef9e7.json +24 -0
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js +3 -3
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
- package/app/.next-cli-build/static/cG6cLaTIiXMA9B8cN_VI5/_buildManifest.js +1 -0
- package/app/{.next/static/chunks/1321-e030b87815d694f7.js → .next-cli-build/static/chunks/1321-a7406eb3cccfd85f.js} +1 -1
- package/app/.next-cli-build/static/chunks/{1330-e1ec0f07ea113880.js → 1330-916ae59f041a0a4f.js} +2 -2
- package/app/.next-cli-build/static/chunks/{3378-277dccfa153c2c15.js → 3378-0978c9887e5e6bd8.js} +6 -11
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/{page-51f788f35bc5325f.js → page-adba2750c4fbf61e.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/catalog/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/doctor/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/export/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/mcp/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/skills/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/sync/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/updates/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/aider-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-full-catalog/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-picker-labels/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/gemini-cli-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/pi-settings/manual-configs/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/pi-settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/picker-labels/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/live/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/locale/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/strategy/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/health/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/metrics/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/providers/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/routing/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/usage/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/version/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/routable/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/defaults/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/batch/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/cache/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/prepare/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/remove-unavailable/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/cancel/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/start/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/status/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/routing/feedback/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/routing/insights/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/routing/learn/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/routing/stats/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/routing/versions/promote/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/routing/versions/rollback/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/skills/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tags/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/token-saver/vault-stats/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/app/page-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-55c8179537f7f084.js +1 -0
- package/app/.next-cli-build/static/css/d042b5b105ba183a.css +1 -0
- package/app/custom-server.js +32 -3
- package/app/node_modules/impit-linux-x64-musl/README.md +3 -0
- package/app/node_modules/impit-linux-x64-musl/impit-node.linux-x64-musl.node +0 -0
- package/app/node_modules/impit-linux-x64-musl/package.json +24 -0
- package/app/open-sse/identity/snapshots/versions.json +10 -10
- package/app/open-sse/identity/tls/bin/darwin/arm64/switchboard-claude-tls +0 -0
- package/app/open-sse/identity/tls/bin/darwin/x64/switchboard-claude-tls +0 -0
- package/app/open-sse/identity/tls/bin/linux/arm64/switchboard-claude-tls +0 -0
- package/app/open-sse/identity/tls/bin/linux/x64/switchboard-claude-tls +0 -0
- package/app/open-sse/identity/tls/bin/win32/arm64/switchboard-claude-tls.exe +0 -0
- package/app/open-sse/identity/tls/bin/win32/x64/switchboard-claude-tls.exe +0 -0
- package/app/package.json +1 -1
- package/cli.js +34 -16
- package/package.json +1 -1
- package/src/cli/serverStatus.js +9 -3
- package/app/.next/static/chunks/app/_global-error/page-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/agent-library/catalog/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/agent-library/doctor/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/agent-library/export/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/agent-library/mcp/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/agent-library/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/agent-library/skills/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/agent-library/sync/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/agent-library/updates/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/auth/login/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/auth/logout/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/auth/status/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/aider-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/claude-full-catalog/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/claude-picker-labels/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/gemini-cli-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/grok-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/pi-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/picker-labels/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/combos/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/combos/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/headroom/extras/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/headroom/proxy/[...path]/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/headroom/restart/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/headroom/start/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/headroom/status/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/headroom/stop/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/health/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/keys/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/keys/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/locale/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/mgmt/v1/combos/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/mgmt/v1/combos/[id]/strategy/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/mgmt/v1/combos/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/mgmt/v1/health/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/mgmt/v1/metrics/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/mgmt/v1/providers/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/mgmt/v1/routing/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/mgmt/v1/usage/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/mgmt/v1/version/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/models/alias/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/models/availability/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/models/custom/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/models/disabled/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/models/routable/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/models/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/models/test/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/codex/bulk-import/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/api-key/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/defaults/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/batch/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/cache/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/prepare/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/remove-unavailable/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/verify/cancel/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/verify/start/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/verify/status/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/client/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/suggested-models/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/test-batch/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/providers/validate/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/pxpipe/health/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/pxpipe/install/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/pxpipe/logs/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/pxpipe/restart/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/pxpipe/start/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/pxpipe/stats/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/pxpipe/status/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/pxpipe/stop/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/routing/feedback/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/routing/insights/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/routing/learn/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/routing/stats/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/routing/versions/promote/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/routing/versions/rollback/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/settings/database/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/shutdown/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/skills/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/tags/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/token-saver/vault-stats/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/translator/console-logs/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/translator/load/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/translator/save/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/translator/send/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/translator/translate/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/usage/chart/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/usage/history/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/usage/logs/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/usage/providers/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-details/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-details/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-logs/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stats/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/usage/stream/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/api/chat/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/voices/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/embeddings/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/images/generations/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/[kind]/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/info/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/compact/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/search/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/videos/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/videos/edits/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/videos/extensions/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/videos/generations/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1/web/fetch/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/version/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/version/shutdown/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/api/version/update/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/manifest.webmanifest/route-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/app/page-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-3981c2a159de99ad.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-3981c2a159de99ad.js +0 -1
- package/app/.next/static/css/912e8e046d0cd4ca.css +0 -1
- package/app/.next/static/p00HZLRpEZ2dD21V7ZHfh/_buildManifest.js +0 -1
- package/app/.next-cli-build/server/chunks/4353.js +0 -1
- package/app/.next-cli-build/server/chunks/5717.js +0 -42
- package/app/.next-cli-build/server/chunks/static/media/versions.d3affa61.json +0 -24
- package/app/.next-cli-build/static/chunks/app/_global-error/page-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/catalog/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/doctor/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/export/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/mcp/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/skills/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/sync/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/updates/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/aider-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-full-catalog/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-picker-labels/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/gemini-cli-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/pi-settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/picker-labels/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/locale/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/strategy/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/health/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/metrics/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/providers/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/routing/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/usage/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/version/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/routable/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/defaults/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/batch/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/cache/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/prepare/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/remove-unavailable/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/cancel/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/start/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/status/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/routing/feedback/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/routing/insights/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/routing/learn/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/routing/stats/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/routing/versions/promote/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/routing/versions/rollback/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/skills/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tags/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/token-saver/vault-stats/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/app/page-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-3981c2a159de99ad.js +0 -1
- package/app/.next-cli-build/static/css/912e8e046d0cd4ca.css +0 -1
- package/app/.next-cli-build/static/p00HZLRpEZ2dD21V7ZHfh/_buildManifest.js +0 -1
- /package/app/.next/static/{p00HZLRpEZ2dD21V7ZHfh → cG6cLaTIiXMA9B8cN_VI5}/_ssgManifest.js +0 -0
- /package/app/.next-cli-build/static/{p00HZLRpEZ2dD21V7ZHfh → cG6cLaTIiXMA9B8cN_VI5}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=5139,exports.ids=[5139],exports.modules={2364:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>H,OPTIONS:()=>F,buildClaudeFullCatalogDiscoveryModels:()=>G,buildModelsList:()=>E});var d=c(81329),e=c(40615),f=c(15717),g=c(16655),h=c(19617),i=c(38955),j=c(58569),k=c(86925),l=c(9155),m=c(46052),n=c(41029);let o=new Map;async function p(a,b){let c=new AbortController,d=setTimeout(()=>c.abort(),1e4);try{let d=await (0,m.Fm)("https://api.githubcopilot.com/models",{method:"GET",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},cache:"no-store",signal:b||c.signal,identity:"copilot",provider:"github",format:"openai"});if(!d.ok){let a=Error(`Copilot /models returned ${d.status}`);throw a.status=d.status,a}let e=await d.json();return Array.isArray(e?.data)?e.data:[]}finally{clearTimeout(d)}}async function q(a,b={}){let c,d=a?.providerSpecificData?.copilotToken||a?.accessToken;if(!d)return b.log?.debug?.("COPILOT_MODELS","No copilotToken/accessToken; skipping live fetch"),null;let e=a?.providerSpecificData?.copilotToken||a?.accessToken||"copilot-anonymous",f=Date.now();if(!b.forceRefresh){let a=o.get(e);if(a&&a.expiresAt>f)return{models:a.models}}try{c=await p(d,b.signal)}catch(d){if(!d||401!==d.status&&403!==d.status||!a.accessToken)return b.log?.warn?.("COPILOT_MODELS",`Live model fetch failed: ${d?.message||d}`),null;{b.log?.info?.("COPILOT_MODELS",`Got ${d.status}; refreshing Copilot token`);let e=await (0,n.jR)(a.accessToken);if(!e?.token)return b.log?.warn?.("COPILOT_MODELS","Token refresh did not return a token"),null;if("function"==typeof b.onCredentialsRefreshed)try{await b.onCredentialsRefreshed({copilotToken:e.token,copilotTokenExpiresAt:e.expiresAt})}catch(a){b.log?.warn?.("COPILOT_MODELS",`onCredentialsRefreshed failed: ${a?.message||a}`)}try{c=await p(e.token,b.signal)}catch(a){return b.log?.warn?.("COPILOT_MODELS",`Retry after refresh failed: ${a?.message||a}`),null}}}let g=function(a){let b=new Set,c=[];for(let d of a){if(!d||"object"!=typeof d||d.capabilities?.type!=="chat"||d.policy&&"enabled"!==d.policy.state)continue;let a=d.id;!a||b.has(a)||(b.add(a),c.push({id:a,name:d.name||a}))}return c}(c);return g.length?(o.set(e,{expiresAt:f+3e5,models:g}),{models:g}):null}var r=c(40694),s=c(58255),t=c(63123),u=c(67828),v=c(43904),w=c(32524),x=c(68393),y=c(39326);let z={kiro:async(a,b={})=>{let c=await (0,j.cW)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console,signal:b.signal});return c?.models?.length?{models:c.models}:null},qoder:async(a,b={})=>{let c=await (0,l.EV)({accessToken:a.accessToken,refreshToken:a.refreshToken,email:a.email,displayName:a.displayName,providerSpecificData:a.providerSpecificData||{}},{signal:b.signal});return c?.models?.length?{models:c.models.map(a=>({id:a.id,name:a.name}))}:null},kimchi:async(a,b={})=>{let c=await (0,k.av)({accessToken:a.accessToken,apiKey:a.apiKey,providerSpecificData:a.providerSpecificData||{}},{log:console,signal:b.signal});return c?.models?.length?{models:c.models}:null},github:async(a,b={})=>{let c=await q({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console,signal:b.signal,onCredentialsRefreshed:async b=>{await (0,u.vN)(a.id,{copilotToken:b.copilotToken,copilotTokenExpiresAt:b.copilotTokenExpiresAt,existingProviderSpecificData:a.providerSpecificData||{}})}});return c?.models?.length?{models:c.models}:null},clinepass:async(a,b={})=>{let c=await (0,r.P)({accessToken:a.accessToken,apiKey:a.apiKey},{signal:b.signal});return c?.models?.length?{models:c.models}:null},"grok-cli":async(a,b={})=>{let c=await (0,y.B)(a.providerSpecificData||{}),d=await (0,t.M)({...a,connectionId:a.id},{log:console,signal:b.signal,proxyOptions:c,onCredentialsRefreshed:b=>(0,u.vN)(a.id,{...b,existingProviderSpecificData:a.providerSpecificData||{}})});return d?.models?.length?{models:d.models}:null}},A={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText",video:"video"};function B(a){let b=a?.kind||a?.type;return b&&A[b]||"llm"}async function C(a,b=null){if(!a?.apiKey)return null;let c="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!c)return null;let d=`${c}/models`,f={"Content-Type":"application/json",[h.M]:"1"};if((0,e.mq)(a.provider))f.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return null;d.endsWith("/messages/models")?d=d.slice(0,-9):d.endsWith("/messages")&&(d=`${d.slice(0,-9)}/models`),f["x-api-key"]=a.apiKey,f["anthropic-version"]="2023-06-01",f.Authorization=`Bearer ${a.apiKey}`}try{let a=new AbortController,c=setTimeout(()=>a.abort(),5e3);b&&"function"!=typeof AbortSignal.any&&b.addEventListener("abort",()=>{clearTimeout(c),a.abort(b.reason)},{once:!0});let e=b&&"function"==typeof AbortSignal.any?AbortSignal.any([b,a.signal]):a.signal;try{let a=await fetch(d,{method:"GET",headers:f,cache:"no-store",signal:e});if(!a.ok)return null;let b=await a.json(),c=(a=>{if(Array.isArray(a))return a;for(let b of["data","models","results"])if(Array.isArray(a?.[b]))return a[b];return null})(b);if(!c)return null;let g=Array.from(new Set(c.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim()))),h=new Map;for(let a of c){let b=a?.id||a?.name||a?.model;"string"==typeof b&&""!==b.trim()&&a&&"object"==typeof a&&a.capabilities&&"object"==typeof a.capabilities&&h.set(b.trim(),a.capabilities)}return c.length>0&&0===g.length?null:{ids:g,capsById:h}}finally{clearTimeout(c)}}catch{return null}}function D(a,b){let c=e.Q2[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}async function E(a,{signal:b=null,skipCompatibleDiscovery:c=!1}={}){let h=[],j=!1;try{h=await (0,f.getProviderConnections)()}catch(a){j=!0,console.log("Could not fetch providers, returning all models")}let k=h.filter(a=>!1!==a.isActive),l=[];try{l=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let m=[];try{m=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let n={};try{n=await (0,f.OM)()}catch(a){console.log("Could not fetch model aliases")}let o={};try{o=await (0,g.vF)()}catch(a){console.log("Could not fetch disabled models")}let p=new Map(Object.entries(o).map(([a,b])=>[a,(0,i.Iz)(b,a)])),q=(a,b)=>{let c=(0,e.rs)(a);return[...new Set([a,c,(0,e.wG)(c),d.Xg[c]].filter(Boolean))].some(a=>{let c=p.get(a);return!!c&&(0,i.uJ)(c,b,a)})},r=new Map;for(let a of k){if(b?.aborted)break;r.has(a.provider)||r.set(a.provider,a)}let t=r.get("cursor");t&&r.set("cursor",await (0,u.Yx)(t,{force:!0}));let w=new Map;if(!c){let a=Array.from(r.entries()).filter(([a])=>(0,e.mq)(a)||(0,e.gb)(a));await Promise.all(a.map(async([a,c])=>{w.set(a,await C(c,b))}))}let y=new Map,A=Array.from(r.entries()).filter(([b])=>D(b,a)&&!(0,e.mq)(b)&&!(0,e.gb)(b));await Promise.all(A.map(async([a,c])=>{let d=z[a];try{let e=d?await d(c,{signal:b}):await (0,s.Mz)(c,{signal:b,..."cursor"===a?{log:console}:{}});e?.models?.length&&y.set(a,e)}catch(b){console.log(`Live model fetch failed for ${a}: ${b?.message||b}`)}}));let F=[],G=a=>{if("string"!=typeof a)return!1;let b=a.indexOf("/");if(b<=0)return!1;let c=a.slice(0,b),d=(0,e.rs)(c);return!!d&&!!e.Q2[d]&&!r.has(d)},H=!j;for(let b of l){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;if(H){let a=Array.isArray(b.models)?b.models:[];if(a.length>0&&a.every(G))continue}let c={id:b.name,object:"model",owned_by:"combo",name:b.name};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),F.push(c)}if(a.includes("llm")){for(let[a,b]of Object.entries(n||{}))if((0,x.Ng)(a)&&!(H&&G(b))){if("string"==typeof b&&b.includes("/")){let a=b.indexOf("/"),c=b.slice(0,a),d=b.slice(a+1),e=k.find(a=>a.providerSpecificData?.prefix===c);if(q(c,d)||e&&q(e.provider,d))continue}F.push({id:a,object:"model",owned_by:"switchboard-alias",display_name:`Switchboard \xb7 ${a}`})}}if(j){for(let[b,c]of Object.entries(d.PROVIDER_MODELS))if(D((0,e.rs)(b),a))for(let d of c)a.includes(B(d))&&(q(b,d.id)||F.push({id:`${b}/${d.id}`,object:"model",owned_by:b}));for(let b of m){if(!b?.id||b.type&&"llm"!==b.type||!a.includes("llm"))continue;let c=b.providerAlias;if(!c)continue;let d=String(b.id).trim();!d||q(c,d)||F.push({id:`${c}/${d}`,object:"model",owned_by:c})}}else for(let[f,g]of r.entries()){if(b?.aborted)break;if(!D(f,a))continue;let h=d.Xg[f]||f,i=(g?.providerSpecificData?.prefix||(0,e.wG)(f)||h).trim(),j=d.PROVIDER_MODELS[h]||[],k=g?.providerSpecificData?.enabledModels,l=Array.isArray(k)&&k.length>0,o=(0,e.mq)(f)||(0,e.gb)(f),p=new Map(j.map(a=>[a.id,B(a)])),r=new Map,s=new Map,t=l?Array.from(new Set(k.filter(a=>"string"==typeof a&&""!==a.trim()))):j.map(a=>a.id),u=w.get(f);o&&!c&&u&&Array.isArray(u.ids)&&(t=u.ids);let x=u&&u.capsById instanceof Map?u.capsById:null,z=y.get(f);z?.models?.length&&(t=z.models.map(a=>a.id),r=new Map(z.models.filter(a=>a?.id).map(a=>[a.id,B(a)])),s=new Map(z.models.filter(a=>a?.id&&a.capabilities).map(a=>[a.id,a.capabilities])));let A=t.map(a=>a.startsWith(`${i}/`)?a.slice(i.length+1):a.startsWith(`${h}/`)?a.slice(h.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim()),C=new Map;for(let b of Array.from(new Set([...A,...m.filter(b=>{if(!b?.id)return!1;let c=(0,d.CP)(b)||"llm";if(!a.includes(c)&&!("imageToText"===c&&a.includes("llm")))return!1;let e=b.providerAlias;return e===h||e===i||e===f}).map(a=>{let b=String(a.id).trim();return b&&C.set(b,(0,d.CP)(a)||"llm"),b}).filter(a=>""!==a),...Object.values(n||{}).filter(a=>"string"==typeof a&&!!a.includes("/")&&(a.startsWith(`${i}/`)||a.startsWith(`${h}/`)||a.startsWith(`${f}/`))).map(a=>a.startsWith(`${i}/`)?a.slice(i.length+1):a.startsWith(`${h}/`)?a.slice(h.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim())]))){let c=C.get(b),d=r.get(b),e=c||d||p.get(b)||function(a){let b=String(a).toLowerCase();return/embed/.test(b)?"embedding":/tts|speech|audio|voice/.test(b)?"tts":/image|imagen|dall-?e|flux|sdxl|sd-|stable-diffusion/.test(b)?"image":"llm"}(b),g="imageToText"===e&&a.includes("llm");if(!a.includes(e)&&!g||q(i,b)||q(h,b))continue;let j={id:`${i}/${b}`,object:"model",owned_by:i},k=function(a,b,c,d,e){if(!a)return null;for(let f of[e,`${b}/${e}`,`${c}/${e}`,`${d}/${e}`])if(a.has(f))return a.get(f);return null}(x,i,h,f,b),l=(0,v.a0)(c||d),m=s.get(b)||(k||l?{...l||{},...k||{}}:null),n=(0,v.k1)(b),o=(0,v.hX)(m,n),t=o?{...m||{},...o}:m;t&&(j.capabilities=t),F.push(j)}let E=e.Q2[f];a.includes("webSearch")&&E?.searchConfig&&F.push({id:`${i}/search`,object:"model",kind:"webSearch",owned_by:i}),a.includes("webFetch")&&E?.fetchConfig&&F.push({id:`${i}/fetch`,object:"model",kind:"webFetch",owned_by:i})}let I=[],J=new Set;for(let a of F)!a?.id||J.has(a.id)||(J.add(a.id),"number"!=typeof a.created&&(a.created=0),I.push(a));return I}async function F(){return new Response(null,{headers:{"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}function G(a,b={}){let c=(0,x.OU)(b,a),d=(0,w.HL)(a);return a.map(a=>({id:(0,x.El)(a),object:"model",created:0,owned_by:"switchboard-catalog",display_name:c[a]||(0,w.u0)(a,d),description:a}))}async function H(a){try{if((0,x.at)(a?.headers)){let b=(0,x._1)(a?.headers),c=G(b,(0,x.LU)(a?.headers));return Response.json({object:"list",data:c})}let b=await E(["llm"],{signal:a?.signal,skipCompatibleDiscovery:(0,h.k)(a)});return Response.json({object:"list",data:b},{})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:"Failed to fetch models",type:"server_error"}},{status:500})}}},16655:(a,b,c)=>{c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(15717)},19225:(a,b,c)=>{a.exports=c(44870)},32524:(a,b,c)=>{c.d(b,{HL:()=>i,pD:()=>h,u0:()=>j});let d=Object.freeze({"lite-llm":"llm",litellm:"llm"}),e=["opus","sonnet","haiku","fable","gemini","gpt","glm","deepseek","composer","kimi","qwen"],f=[{pattern:/ap-southeast|low-carbon-apac|\bapac\b/i,tag:"apac"},{pattern:/eu-west|europe|\beu\b/i,tag:"eu"},{pattern:/us-east|us-west|\bus\b/i,tag:"us"}],g=["bedrock","vertex","azure","openai"];function h(a){var b;let c,h,i,j,k,l,m,n=String(a||"").trim();if(!n)return"";let o=n.indexOf("/");if(o<0)return n;let p=d[c=String(n.slice(0,o)||"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-+/g,"-")]||c.slice(0,10),q=n.slice(o+1).split("/").filter(Boolean),r=(h=q.join("/").toLowerCase(),i=e.find(a=>h.includes(a))||null,j=f.find(a=>a.pattern.test(h))?.tag||null,k=g.find(a=>h.includes(a))||null,l=h.match(/\b(\d+m)\b/i)?.[1]?.toLowerCase()||null,m=(b=i?h.match(RegExp(`${i}[-._]?(\\d+(?:[._-]\\d+)*)`,"i"))?.[1]:null)?b.replace(/[._-]/g,"."):null,{family:i,region:j,infra:k,variant:l,version:m}),s=[p];if(r.region&&s.push(r.region),r.infra&&s.push(r.infra),r.family){let a=r.variant?`${r.family} ${r.variant}`:r.version?`${r.family} ${r.version}`:r.family;s.push(a)}else if(q.length>0){let a=q[q.length-1].replace(/^anthropic\./i,"").replace(/[._]/g," ").trim();a&&s.push(a.slice(0,24))}return s.join(" | ")}function i(a){let b=a.map(a=>String(a||"").trim()).filter(Boolean).map(a=>({modelId:a,base:h(a)})),c=new Map;for(let a of b){let b=c.get(a.base)||[];b.push(a.modelId),c.set(a.base,b)}let d=new Map;for(let[a,b]of c.entries()){if(1===b.length){d.set(b[0],a);continue}let c=new Set;b.forEach((b,e)=>{let f=`${a} | ${function(a,b){let c=String(a||"").split("/").filter(Boolean);return c.length>=3?c[1].replace(/[._-]/g," ").trim().slice(0,20):2===c.length?c[1].replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20):(c[c.length-1]||`model-${b+1}`).replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20)||String(b+1)}(b,e)}`,g=2;for(;c.has(f);){let d=b.split("/").filter(Boolean).pop()||`alt-${g}`;f=`${a} | ${d.replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20)}`,c.has(f)&&(f=`${a} | ${e+1}`),g+=1}c.add(f),d.set(b,f)})}return d}function j(a,b){let c=String(a||"").trim();return c?b?.get(c)||h(c):""}},38955:(a,b,c)=>{c.d(b,{Iz:()=>e,uJ:()=>f});var d=c(65089);function e(a,b=""){return new Set((Array.isArray(a)?a:[]).map(a=>(0,d.v)(a,b)).filter(Boolean))}function f(a,b,c=""){return a.has((0,d.v)(b,c))}c(4489),c(40615),c(27335)},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}}};
|
|
1
|
+
"use strict";exports.id=5139,exports.ids=[5139],exports.modules={2364:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>H,OPTIONS:()=>F,buildClaudeFullCatalogDiscoveryModels:()=>G,buildModelsList:()=>E});var d=c(81329),e=c(40615),f=c(59353),g=c(16655),h=c(19617),i=c(38955),j=c(58569),k=c(86925),l=c(9155),m=c(46052),n=c(41029);let o=new Map;async function p(a,b){let c=new AbortController,d=setTimeout(()=>c.abort(),1e4);try{let d=await (0,m.Fm)("https://api.githubcopilot.com/models",{method:"GET",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},cache:"no-store",signal:b||c.signal,identity:"copilot",provider:"github",format:"openai"});if(!d.ok){let a=Error(`Copilot /models returned ${d.status}`);throw a.status=d.status,a}let e=await d.json();return Array.isArray(e?.data)?e.data:[]}finally{clearTimeout(d)}}async function q(a,b={}){let c,d=a?.providerSpecificData?.copilotToken||a?.accessToken;if(!d)return b.log?.debug?.("COPILOT_MODELS","No copilotToken/accessToken; skipping live fetch"),null;let e=a?.providerSpecificData?.copilotToken||a?.accessToken||"copilot-anonymous",f=Date.now();if(!b.forceRefresh){let a=o.get(e);if(a&&a.expiresAt>f)return{models:a.models}}try{c=await p(d,b.signal)}catch(d){if(!d||401!==d.status&&403!==d.status||!a.accessToken)return b.log?.warn?.("COPILOT_MODELS",`Live model fetch failed: ${d?.message||d}`),null;{b.log?.info?.("COPILOT_MODELS",`Got ${d.status}; refreshing Copilot token`);let e=await (0,n.jR)(a.accessToken);if(!e?.token)return b.log?.warn?.("COPILOT_MODELS","Token refresh did not return a token"),null;if("function"==typeof b.onCredentialsRefreshed)try{await b.onCredentialsRefreshed({copilotToken:e.token,copilotTokenExpiresAt:e.expiresAt})}catch(a){b.log?.warn?.("COPILOT_MODELS",`onCredentialsRefreshed failed: ${a?.message||a}`)}try{c=await p(e.token,b.signal)}catch(a){return b.log?.warn?.("COPILOT_MODELS",`Retry after refresh failed: ${a?.message||a}`),null}}}let g=function(a){let b=new Set,c=[];for(let d of a){if(!d||"object"!=typeof d||d.capabilities?.type!=="chat"||d.policy&&"enabled"!==d.policy.state)continue;let a=d.id;!a||b.has(a)||(b.add(a),c.push({id:a,name:d.name||a}))}return c}(c);return g.length?(o.set(e,{expiresAt:f+3e5,models:g}),{models:g}):null}var r=c(40694),s=c(58255),t=c(63123),u=c(67828),v=c(43904),w=c(32524),x=c(68393),y=c(39326);let z={kiro:async(a,b={})=>{let c=await (0,j.cW)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console,signal:b.signal});return c?.models?.length?{models:c.models}:null},qoder:async(a,b={})=>{let c=await (0,l.EV)({accessToken:a.accessToken,refreshToken:a.refreshToken,email:a.email,displayName:a.displayName,providerSpecificData:a.providerSpecificData||{}},{signal:b.signal});return c?.models?.length?{models:c.models.map(a=>({id:a.id,name:a.name}))}:null},kimchi:async(a,b={})=>{let c=await (0,k.av)({accessToken:a.accessToken,apiKey:a.apiKey,providerSpecificData:a.providerSpecificData||{}},{log:console,signal:b.signal});return c?.models?.length?{models:c.models}:null},github:async(a,b={})=>{let c=await q({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console,signal:b.signal,onCredentialsRefreshed:async b=>{await (0,u.vN)(a.id,{copilotToken:b.copilotToken,copilotTokenExpiresAt:b.copilotTokenExpiresAt,existingProviderSpecificData:a.providerSpecificData||{}})}});return c?.models?.length?{models:c.models}:null},clinepass:async(a,b={})=>{let c=await (0,r.P)({accessToken:a.accessToken,apiKey:a.apiKey},{signal:b.signal});return c?.models?.length?{models:c.models}:null},"grok-cli":async(a,b={})=>{let c=await (0,y.B)(a.providerSpecificData||{}),d=await (0,t.M)({...a,connectionId:a.id},{log:console,signal:b.signal,proxyOptions:c,onCredentialsRefreshed:b=>(0,u.vN)(a.id,{...b,existingProviderSpecificData:a.providerSpecificData||{}})});return d?.models?.length?{models:d.models}:null}},A={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText",video:"video"};function B(a){let b=a?.kind||a?.type;return b&&A[b]||"llm"}async function C(a,b=null){if(!a?.apiKey)return null;let c="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!c)return null;let d=`${c}/models`,f={"Content-Type":"application/json",[h.M]:"1"};if((0,e.mq)(a.provider))f.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return null;d.endsWith("/messages/models")?d=d.slice(0,-9):d.endsWith("/messages")&&(d=`${d.slice(0,-9)}/models`),f["x-api-key"]=a.apiKey,f["anthropic-version"]="2023-06-01",f.Authorization=`Bearer ${a.apiKey}`}try{let a=new AbortController,c=setTimeout(()=>a.abort(),5e3);b&&"function"!=typeof AbortSignal.any&&b.addEventListener("abort",()=>{clearTimeout(c),a.abort(b.reason)},{once:!0});let e=b&&"function"==typeof AbortSignal.any?AbortSignal.any([b,a.signal]):a.signal;try{let a=await fetch(d,{method:"GET",headers:f,cache:"no-store",signal:e});if(!a.ok)return null;let b=await a.json(),c=(a=>{if(Array.isArray(a))return a;for(let b of["data","models","results"])if(Array.isArray(a?.[b]))return a[b];return null})(b);if(!c)return null;let g=Array.from(new Set(c.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim()))),h=new Map;for(let a of c){let b=a?.id||a?.name||a?.model;"string"==typeof b&&""!==b.trim()&&a&&"object"==typeof a&&a.capabilities&&"object"==typeof a.capabilities&&h.set(b.trim(),a.capabilities)}return c.length>0&&0===g.length?null:{ids:g,capsById:h}}finally{clearTimeout(c)}}catch{return null}}function D(a,b){let c=e.Q2[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}async function E(a,{signal:b=null,skipCompatibleDiscovery:c=!1}={}){let h=[],j=!1;try{h=await (0,f.getProviderConnections)()}catch(a){j=!0,console.log("Could not fetch providers, returning all models")}let k=h.filter(a=>!1!==a.isActive),l=[];try{l=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let m=[];try{m=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let n={};try{n=await (0,f.OM)()}catch(a){console.log("Could not fetch model aliases")}let o={};try{o=await (0,g.vF)()}catch(a){console.log("Could not fetch disabled models")}let p=new Map(Object.entries(o).map(([a,b])=>[a,(0,i.Iz)(b,a)])),q=(a,b)=>{let c=(0,e.rs)(a);return[...new Set([a,c,(0,e.wG)(c),d.Xg[c]].filter(Boolean))].some(a=>{let c=p.get(a);return!!c&&(0,i.uJ)(c,b,a)})},r=new Map;for(let a of k){if(b?.aborted)break;r.has(a.provider)||r.set(a.provider,a)}let t=r.get("cursor");t&&r.set("cursor",await (0,u.Yx)(t,{force:!0}));let w=new Map;if(!c){let a=Array.from(r.entries()).filter(([a])=>(0,e.mq)(a)||(0,e.gb)(a));await Promise.all(a.map(async([a,c])=>{w.set(a,await C(c,b))}))}let y=new Map,A=Array.from(r.entries()).filter(([b])=>D(b,a)&&!(0,e.mq)(b)&&!(0,e.gb)(b));await Promise.all(A.map(async([a,c])=>{let d=z[a];try{let e=d?await d(c,{signal:b}):await (0,s.Mz)(c,{signal:b,..."cursor"===a?{log:console}:{}});e?.models?.length&&y.set(a,e)}catch(b){console.log(`Live model fetch failed for ${a}: ${b?.message||b}`)}}));let F=[],G=a=>{if("string"!=typeof a)return!1;let b=a.indexOf("/");if(b<=0)return!1;let c=a.slice(0,b),d=(0,e.rs)(c);return!!d&&!!e.Q2[d]&&!r.has(d)},H=!j;for(let b of l){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;if(H){let a=Array.isArray(b.models)?b.models:[];if(a.length>0&&a.every(G))continue}let c={id:b.name,object:"model",owned_by:"combo",name:b.name};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),F.push(c)}if(a.includes("llm")){for(let[a,b]of Object.entries(n||{}))if((0,x.Ng)(a)&&!(H&&G(b))){if("string"==typeof b&&b.includes("/")){let a=b.indexOf("/"),c=b.slice(0,a),d=b.slice(a+1),e=k.find(a=>a.providerSpecificData?.prefix===c);if(q(c,d)||e&&q(e.provider,d))continue}F.push({id:a,object:"model",owned_by:"switchboard-alias",display_name:`Switchboard \xb7 ${a}`})}}if(j){for(let[b,c]of Object.entries(d.PROVIDER_MODELS))if(D((0,e.rs)(b),a))for(let d of c)a.includes(B(d))&&(q(b,d.id)||F.push({id:`${b}/${d.id}`,object:"model",owned_by:b}));for(let b of m){if(!b?.id||b.type&&"llm"!==b.type||!a.includes("llm"))continue;let c=b.providerAlias;if(!c)continue;let d=String(b.id).trim();!d||q(c,d)||F.push({id:`${c}/${d}`,object:"model",owned_by:c})}}else for(let[f,g]of r.entries()){if(b?.aborted)break;if(!D(f,a))continue;let h=d.Xg[f]||f,i=(g?.providerSpecificData?.prefix||(0,e.wG)(f)||h).trim(),j=d.PROVIDER_MODELS[h]||[],k=g?.providerSpecificData?.enabledModels,l=Array.isArray(k)&&k.length>0,o=(0,e.mq)(f)||(0,e.gb)(f),p=new Map(j.map(a=>[a.id,B(a)])),r=new Map,s=new Map,t=l?Array.from(new Set(k.filter(a=>"string"==typeof a&&""!==a.trim()))):j.map(a=>a.id),u=w.get(f);o&&!c&&u&&Array.isArray(u.ids)&&(t=u.ids);let x=u&&u.capsById instanceof Map?u.capsById:null,z=y.get(f);z?.models?.length&&(t=z.models.map(a=>a.id),r=new Map(z.models.filter(a=>a?.id).map(a=>[a.id,B(a)])),s=new Map(z.models.filter(a=>a?.id&&a.capabilities).map(a=>[a.id,a.capabilities])));let A=t.map(a=>a.startsWith(`${i}/`)?a.slice(i.length+1):a.startsWith(`${h}/`)?a.slice(h.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim()),C=new Map;for(let b of Array.from(new Set([...A,...m.filter(b=>{if(!b?.id)return!1;let c=(0,d.CP)(b)||"llm";if(!a.includes(c)&&!("imageToText"===c&&a.includes("llm")))return!1;let e=b.providerAlias;return e===h||e===i||e===f}).map(a=>{let b=String(a.id).trim();return b&&C.set(b,(0,d.CP)(a)||"llm"),b}).filter(a=>""!==a),...Object.values(n||{}).filter(a=>"string"==typeof a&&!!a.includes("/")&&(a.startsWith(`${i}/`)||a.startsWith(`${h}/`)||a.startsWith(`${f}/`))).map(a=>a.startsWith(`${i}/`)?a.slice(i.length+1):a.startsWith(`${h}/`)?a.slice(h.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim())]))){let c=C.get(b),d=r.get(b),e=c||d||p.get(b)||function(a){let b=String(a).toLowerCase();return/embed/.test(b)?"embedding":/tts|speech|audio|voice/.test(b)?"tts":/image|imagen|dall-?e|flux|sdxl|sd-|stable-diffusion/.test(b)?"image":"llm"}(b),g="imageToText"===e&&a.includes("llm");if(!a.includes(e)&&!g||q(i,b)||q(h,b))continue;let j={id:`${i}/${b}`,object:"model",owned_by:i},k=function(a,b,c,d,e){if(!a)return null;for(let f of[e,`${b}/${e}`,`${c}/${e}`,`${d}/${e}`])if(a.has(f))return a.get(f);return null}(x,i,h,f,b),l=(0,v.a0)(c||d),m=s.get(b)||(k||l?{...l||{},...k||{}}:null),n=(0,v.k1)(b),o=(0,v.hX)(m,n),t=o?{...m||{},...o}:m;t&&(j.capabilities=t),F.push(j)}let E=e.Q2[f];a.includes("webSearch")&&E?.searchConfig&&F.push({id:`${i}/search`,object:"model",kind:"webSearch",owned_by:i}),a.includes("webFetch")&&E?.fetchConfig&&F.push({id:`${i}/fetch`,object:"model",kind:"webFetch",owned_by:i})}let I=[],J=new Set;for(let a of F)!a?.id||J.has(a.id)||(J.add(a.id),"number"!=typeof a.created&&(a.created=0),I.push(a));return I}async function F(){return new Response(null,{headers:{"Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}function G(a,b={}){let c=(0,x.OU)(b,a),d=(0,w.HL)(a);return a.map(a=>({id:(0,x.El)(a),object:"model",created:0,owned_by:"switchboard-catalog",display_name:c[a]||(0,w.u0)(a,d),description:a}))}async function H(a){try{if((0,x.at)(a?.headers)){let b=(0,x._1)(a?.headers),c=G(b,(0,x.LU)(a?.headers));return Response.json({object:"list",data:c})}let b=await E(["llm"],{signal:a?.signal,skipCompatibleDiscovery:(0,h.k)(a)});return Response.json({object:"list",data:b},{})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:"Failed to fetch models",type:"server_error"}},{status:500})}}},16655:(a,b,c)=>{c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(59353)},19225:(a,b,c)=>{a.exports=c(44870)},32524:(a,b,c)=>{c.d(b,{HL:()=>i,pD:()=>h,u0:()=>j});let d=Object.freeze({"lite-llm":"llm",litellm:"llm"}),e=["opus","sonnet","haiku","fable","gemini","gpt","glm","deepseek","composer","kimi","qwen"],f=[{pattern:/ap-southeast|low-carbon-apac|\bapac\b/i,tag:"apac"},{pattern:/eu-west|europe|\beu\b/i,tag:"eu"},{pattern:/us-east|us-west|\bus\b/i,tag:"us"}],g=["bedrock","vertex","azure","openai"];function h(a){var b;let c,h,i,j,k,l,m,n=String(a||"").trim();if(!n)return"";let o=n.indexOf("/");if(o<0)return n;let p=d[c=String(n.slice(0,o)||"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-+/g,"-")]||c.slice(0,10),q=n.slice(o+1).split("/").filter(Boolean),r=(h=q.join("/").toLowerCase(),i=e.find(a=>h.includes(a))||null,j=f.find(a=>a.pattern.test(h))?.tag||null,k=g.find(a=>h.includes(a))||null,l=h.match(/\b(\d+m)\b/i)?.[1]?.toLowerCase()||null,m=(b=i?h.match(RegExp(`${i}[-._]?(\\d+(?:[._-]\\d+)*)`,"i"))?.[1]:null)?b.replace(/[._-]/g,"."):null,{family:i,region:j,infra:k,variant:l,version:m}),s=[p];if(r.region&&s.push(r.region),r.infra&&s.push(r.infra),r.family){let a=r.variant?`${r.family} ${r.variant}`:r.version?`${r.family} ${r.version}`:r.family;s.push(a)}else if(q.length>0){let a=q[q.length-1].replace(/^anthropic\./i,"").replace(/[._]/g," ").trim();a&&s.push(a.slice(0,24))}return s.join(" | ")}function i(a){let b=a.map(a=>String(a||"").trim()).filter(Boolean).map(a=>({modelId:a,base:h(a)})),c=new Map;for(let a of b){let b=c.get(a.base)||[];b.push(a.modelId),c.set(a.base,b)}let d=new Map;for(let[a,b]of c.entries()){if(1===b.length){d.set(b[0],a);continue}let c=new Set;b.forEach((b,e)=>{let f=`${a} | ${function(a,b){let c=String(a||"").split("/").filter(Boolean);return c.length>=3?c[1].replace(/[._-]/g," ").trim().slice(0,20):2===c.length?c[1].replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20):(c[c.length-1]||`model-${b+1}`).replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20)||String(b+1)}(b,e)}`,g=2;for(;c.has(f);){let d=b.split("/").filter(Boolean).pop()||`alt-${g}`;f=`${a} | ${d.replace(/^anthropic\./i,"").replace(/[._-]/g," ").trim().slice(0,20)}`,c.has(f)&&(f=`${a} | ${e+1}`),g+=1}c.add(f),d.set(b,f)})}return d}function j(a,b){let c=String(a||"").trim();return c?b?.get(c)||h(c):""}},38955:(a,b,c)=>{c.d(b,{Iz:()=>e,uJ:()=>f});var d=c(65089);function e(a,b=""){return new Set((Array.isArray(a)?a:[]).map(a=>(0,d.v)(a,b)).filter(Boolean))}function f(a,b,c=""){return a.has((0,d.v)(b,c))}c(4489),c(40615),c(27335)},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=519,exports.ids=[519],exports.modules={4630:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(45350);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},21350:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>Q,GET:()=>O,POST:()=>P});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(55511),m=c.n(l),n=c(28286),o=c(30869),p=c(54603),q=c(24424);let r=o.h0.appPort,s=`http://localhost:${r}/api/mcp/`,t=null,u=async()=>(t||(t=await (0,p.Xj)("switchboard-cli-auth")),t),v=async a=>{let b=await u();for(let c of a)"string"==typeof c?.url&&c.url.startsWith(s)&&(c.headers={...c.headers||{},"x-switchboard-cli-token":b});return a},w="gateway",x={coworkEgressAllowedHosts:["*"],disabledBuiltinTools:[],isLocalDevMcpEnabled:!0,isDesktopExtensionEnabled:!0,isDesktopExtensionDirectoryEnabled:!0,isDesktopExtensionSignatureRequired:!1,isClaudeCodeForDesktopEnabled:!0,disableEssentialTelemetry:!0,disableNonessentialTelemetry:!0,disableNonessentialServices:!0},y=()=>{if("darwin"===k().platform()){let a=i().join(k().homedir(),"Library","Application Support");return[i().join(a,"Claude-3p"),i().join(a,"Claude")]}if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return[i().join(a,"Claude-3p"),i().join(b,"Claude-3p"),i().join(a,"Claude"),i().join(b,"Claude")]}return[i().join(k().homedir(),".config","Claude-3p"),i().join(k().homedir(),".config","Claude")]},z=async()=>{let a=y();for(let b of a)try{return await g().access(i().join(b,"configLibrary")),b}catch{}return a[0]},A=()=>y()[0],B=async()=>i().join(await z(),"configLibrary"),C=()=>i().join(A(),"configLibrary"),D=async()=>i().join(await B(),"_meta.json"),E=()=>{if("darwin"===k().platform())return i().join(k().homedir(),"Library","Application Support","Claude");if("win32"===k().platform()){let a=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return i().join(a,"Claude")}return i().join(k().homedir(),".config","Claude")},F=()=>i().join(E(),"claude_desktop_config.json"),G=async()=>{try{let a=(await g().readFile(F(),"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(a)||{}}catch(a){return{}}},H=async a=>{await g().mkdir(E(),{recursive:!0}),await g().writeFile(F(),JSON.stringify(a,null,2))},I=async()=>{let a=await G();return"3p"!==a.deploymentMode&&(a.deploymentMode="3p",await H(a),!0)},J=async()=>{let a=await G();if(!a.mcpServers||"object"!=typeof a.mcpServers)return;let b=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name));for(let c of Object.keys(a.mcpServers))b.has(c)&&delete a.mcpServers[c];0===Object.keys(a.mcpServers).length&&delete a.mcpServers,await H(a)},K=async()=>{for(let a of[...y(),...(()=>{if("darwin"===k().platform())return["/Applications/Claude.app",i().join(k().homedir(),"Applications","Claude.app")];if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.ProgramFiles||"C:\\Program Files";return[i().join(a,"AnthropicClaude"),i().join(b,"Claude"),i().join(b,"AnthropicClaude")]}return[]})()])try{return await g().access(a),!0}catch{}return!1},L=async a=>{try{let b=(await g().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}},M=async()=>{let a=i().join(C(),"_meta.json"),b=await L(a);if(!b||!b.appliedId){let c=await L(await D());if(c?.appliedId)b=c;else{let a=m().randomUUID();b={appliedId:a,entries:[{id:a,name:"Default"}]}}await g().mkdir(C(),{recursive:!0}),await g().writeFile(a,JSON.stringify(b,null,2))}return b};async function N(a){let b=i().join(A(),"config.json"),c={};try{c=JSON.parse(await g().readFile(b,"utf-8"))||{}}catch(a){if("ENOENT"!==a.code)return{error:a.code}}let d={};for(let b of a)b?.name&&(d[b.name]=!0);return c.operonSkipMcpApprovals=d,await g().mkdir(A(),{recursive:!0}),await g().writeFile(b,JSON.stringify(c,null,2)),{written:Object.keys(d).length}}async function O(){try{if(!await K())return e.NextResponse.json({installed:!1,config:null,message:"Claude Desktop (Cowork mode) not detected"});let a=await L(await D()),b=a?.appliedId||null,c=await B(),d=b?i().join(c,`${b}.json`):null,f=d?await L(d):null,g=f?.inferenceGatewayBaseUrl||null,h=Array.isArray(f?.inferenceModels)?f.inferenceModels.map(a=>"string"==typeof a?a:a?.name).filter(Boolean):[],j=Array.isArray(f?.managedMcpServers)?f.managedMcpServers:[],k=!!(f?.inferenceProvider===w&&g),l=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name)),m=j.filter(a=>l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>a.name),o=j.filter(a=>a.custom||!l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>({name:a.name,url:a.url,transport:a.transport,custom:!0}));return e.NextResponse.json({installed:!0,config:f,hasSwitchboard:k,configPath:d,cowork:{appliedId:b,baseUrl:g,models:h,provider:f?.inferenceProvider||null,plugins:j.filter(a=>!a.custom&&!(l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/"))).map(a=>{let b=a.toolPolicy?Object.keys(a.toolPolicy):[],c=`${a.name}-`,d=new Set;for(let a of b){let b=a;for(;b.startsWith(c);)b=b.slice(c.length);d.add(b)}let e=n.DEFAULT_PLUGINS.find(b=>b.name===a.name),f=e&&Array.isArray(e.toolNames)?e.toolNames:Array.from(d);return{name:a.name,url:a.url,transport:a.transport,oauth:!!a.oauth,toolNames:f}}),localPlugins:m,customPlugins:o},defaultPlugins:n.DEFAULT_PLUGINS,localStdioPlugins:n.LOCAL_STDIO_PLUGINS})}catch(a){return console.log("Error reading cowork settings:",a),e.NextResponse.json({error:"Failed to read cowork settings"},{status:500})}}async function P(a){try{let b;try{b=await a.json()}catch{return e.NextResponse.json({error:"Invalid JSON body"},{status:400})}let{baseUrl:c,apiKey:d,models:f,plugins:h,localPlugins:j,customPlugins:k}=b||{};if(!c||!d)return e.NextResponse.json({error:"baseUrl and apiKey are required"},{status:400});try{let a=new URL(c);if(!["http:","https:"].includes(a.protocol))throw Error("unsupported protocol")}catch{return e.NextResponse.json({error:"baseUrl must be a valid HTTP(S) URL"},{status:400})}let l=Array.isArray(f)?f.filter(a=>"string"==typeof a&&a.trim()):[];if(0===l.length)return e.NextResponse.json({error:"At least one model is required"},{status:400});let m=Array.isArray(h)?h:n.DEFAULT_PLUGINS,o=Array.isArray(j)?j:[],p=(Array.isArray(k)?k:[]).filter(a=>a?.url),q=await v((a=>{let b=Array.isArray(a)?a:[],c=[];for(let a of b){let b=n.LOCAL_STDIO_PLUGINS.find(b=>b.name===a);if(!b)continue;let d={name:b.name,url:`http://localhost:${r}/api/mcp/${b.name}/sse`,transport:"sse"};if(Array.isArray(b.toolNames)&&b.toolNames.length>0){let a=`${b.name}-`,c={};for(let d of b.toolNames)c[d]="allow",c[`${a}${d}`]="allow";d.toolPolicy=c}c.push(d)}return c})(o)),s=await v((a=>{if(!Array.isArray(a))return[];let b=[];for(let c of a)c?.name&&c?.url&&b.push({name:c.name,url:c.url,transport:c.transport||"sse",custom:!0});return b})(p)),t=[...(0,n.buildManagedMcpServers)(m),...q,...s],u=await I(),y=await M(),z=i().join(C(),`${y.appliedId}.json`),A={...x,inferenceProvider:w,inferenceGatewayBaseUrl:c.endsWith("/v1")?c:`${c}/v1`,inferenceGatewayApiKey:d,inferenceModels:l.map(a=>({name:a}))};t.length>0&&(A.managedMcpServers=t),await g().writeFile(z,JSON.stringify(A,null,2));let B=null;try{B=await N(t)}catch(a){B={error:a.message}}try{await J()}catch{}return e.NextResponse.json({success:!0,bootstrapped:u,message:u?"Cowork enabled (3p mode set). Quit & reopen Claude Desktop.":"Cowork settings applied. Quit & reopen Claude Desktop.",configPath:z,skipApprovals:B,localMcp:{applied:o,via:"3p-sse-bridge"}})}catch(a){return console.log("Error applying cowork settings:",a),e.NextResponse.json({error:"Failed to apply cowork settings"},{status:500})}}async function Q(){try{let a=await L(await D());if(!a?.appliedId)return e.NextResponse.json({success:!0,message:"No active config to reset"});let b=i().join(await B(),`${a.appliedId}.json`);try{await g().writeFile(b,JSON.stringify({},null,2))}catch(a){if("ENOENT"!==a.code)throw a}try{await N([])}catch{}try{await J()}catch{}return e.NextResponse.json({success:!0,message:"Cowork config reset"})}catch(a){return console.log("Error resetting cowork settings:",a),e.NextResponse.json({error:"Failed to reset cowork settings"},{status:500})}}(0,q.D)([O,P,Q]),(0,d.A)(O,"00fa0b3e6fa44a8b29844bf3205ace47311298bb10",null),(0,d.A)(P,"400ef112d81a6ff5699141ea8e51b9ca980fc61710",null),(0,d.A)(Q,"00ad7aabba468860b1a739cfc054509907d2ae0a14",null)},28286:a=>{a.exports={DEFAULT_PLUGINS:[{name:"exa",title:"Exa",description:"Real-time web search and code documentation",url:"https://mcp.exa.ai/mcp",transport:"http",oauth:!1,toolNames:["web_search_exa","web_fetch_exa"]},{name:"tavily",title:"Tavily",description:"Real-time web search optimized for LLM agents",url:"https://mcp.tavily.com/mcp",transport:"http",oauth:!0,toolNames:["tavily_search","tavily_extract","tavily_crawl","tavily_map"]}],LOCAL_STDIO_PLUGINS:[{name:"browsermcp",title:"Browser MCP",description:"Control your running Chrome (requires Chrome extension)",extensionUrl:"https://chromewebstore.google.com/detail/browser-mcp-automate-your/bjfgambnhccakkhmkepdoekmckoijdlc",command:"npx",args:["-y","@browsermcp/mcp@latest"],toolNames:["browser_navigate","browser_snapshot","browser_click","browser_type","browser_screenshot","browser_get_console_logs","browser_wait","browser_press_key","browser_go_back","browser_go_forward"]}],buildManagedMcpServers:function(a){let b=Array.isArray(a)?a:[],c=[],d=new Set;for(let a of b){if(!a?.name||!a?.url||d.has(a.name))continue;d.add(a.name);let b={name:a.name,url:a.url,transport:a.transport||(/\/sse(\b|\/)/i.test(a.url)?"sse":"http")};if(a.oauth&&(b.oauth=!0),Array.isArray(a.toolNames)&&a.toolNames.length>0){let c=`${a.name}-`,d=new Set;for(let b of a.toolNames){if("string"!=typeof b||!b)continue;let a=b;for(;a.startsWith(c);)a=a.slice(c.length);d.add(a)}let e={};for(let a of d)e[a]="allow",e[`${c}${a}`]="allow";b.toolPolicy=e}c.push(b)}return c}}},54603:(a,b,c)=>{c.d(b,{Xj:()=>q});var d=c(96930),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.nJ,"machine-id"),m=h().join(k.nJ,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||function(){if(process.env.MACHINE_ID_SALT)return process.env.MACHINE_ID_SALT;let a=h().join(m,"machine-id-salt");try{let b=f().readFileSync(a,"utf8").trim();if(b)return b}catch{}let b=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0,mode:448}),f().writeFileSync(a,b,{mode:384})}catch{}return b}(),c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.nJ,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="switchboard-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}}};
|
|
1
|
+
"use strict";exports.id=519,exports.ids=[519],exports.modules={4630:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(45350);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},21350:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>Q,GET:()=>O,POST:()=>P});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(55511),m=c.n(l),n=c(28286),o=c(30869),p=c(54603),q=c(24424);let r=o.h0.appPort,s=`http://localhost:${r}/api/mcp/`,t=null,u=async()=>(t||(t=await (0,p.Xj)("switchboard-cli-auth")),t),v=async a=>{let b=await u();for(let c of a)"string"==typeof c?.url&&c.url.startsWith(s)&&(c.headers={...c.headers||{},"x-switchboard-cli-token":b});return a},w="gateway",x={coworkEgressAllowedHosts:["*"],disabledBuiltinTools:[],isLocalDevMcpEnabled:!0,isDesktopExtensionEnabled:!0,isDesktopExtensionDirectoryEnabled:!0,isDesktopExtensionSignatureRequired:!1,isClaudeCodeForDesktopEnabled:!0,disableEssentialTelemetry:!0,disableNonessentialTelemetry:!0,disableNonessentialServices:!0},y=()=>{if("darwin"===k().platform()){let a=i().join(k().homedir(),"Library","Application Support");return[i().join(a,"Claude-3p"),i().join(a,"Claude")]}if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return[i().join(a,"Claude-3p"),i().join(b,"Claude-3p"),i().join(a,"Claude"),i().join(b,"Claude")]}return[i().join(k().homedir(),".config","Claude-3p"),i().join(k().homedir(),".config","Claude")]},z=async()=>{let a=y();for(let b of a)try{return await g().access(i().join(b,"configLibrary")),b}catch{}return a[0]},A=()=>y()[0],B=async()=>i().join(await z(),"configLibrary"),C=()=>i().join(A(),"configLibrary"),D=async()=>i().join(await B(),"_meta.json"),E=()=>{if("darwin"===k().platform())return i().join(k().homedir(),"Library","Application Support","Claude");if("win32"===k().platform()){let a=process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming");return i().join(a,"Claude")}return i().join(k().homedir(),".config","Claude")},F=()=>i().join(E(),"claude_desktop_config.json"),G=async()=>{try{let a=(await g().readFile(F(),"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(a)||{}}catch(a){return{}}},H=async a=>{await g().mkdir(E(),{recursive:!0}),await g().writeFile(F(),JSON.stringify(a,null,2))},I=async()=>{let a=await G();return"3p"!==a.deploymentMode&&(a.deploymentMode="3p",await H(a),!0)},J=async()=>{let a=await G();if(!a.mcpServers||"object"!=typeof a.mcpServers)return;let b=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name));for(let c of Object.keys(a.mcpServers))b.has(c)&&delete a.mcpServers[c];0===Object.keys(a.mcpServers).length&&delete a.mcpServers,await H(a)},K=async()=>{for(let a of[...y(),...(()=>{if("darwin"===k().platform())return["/Applications/Claude.app",i().join(k().homedir(),"Applications","Claude.app")];if("win32"===k().platform()){let a=process.env.LOCALAPPDATA||i().join(k().homedir(),"AppData","Local"),b=process.env.ProgramFiles||"C:\\Program Files";return[i().join(a,"AnthropicClaude"),i().join(b,"Claude"),i().join(b,"AnthropicClaude")]}return[]})()])try{return await g().access(a),!0}catch{}return!1},L=async a=>{try{let b=(await g().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}},M=async()=>{let a=i().join(C(),"_meta.json"),b=await L(a);if(!b||!b.appliedId){let c=await L(await D());if(c?.appliedId)b=c;else{let a=m().randomUUID();b={appliedId:a,entries:[{id:a,name:"Default"}]}}await g().mkdir(C(),{recursive:!0}),await g().writeFile(a,JSON.stringify(b,null,2))}return b};async function N(a){let b=i().join(A(),"config.json"),c={};try{c=JSON.parse(await g().readFile(b,"utf-8"))||{}}catch(a){if("ENOENT"!==a.code)return{error:a.code}}let d={};for(let b of a)b?.name&&(d[b.name]=!0);return c.operonSkipMcpApprovals=d,await g().mkdir(A(),{recursive:!0}),await g().writeFile(b,JSON.stringify(c,null,2)),{written:Object.keys(d).length}}async function O(){try{if(!await K())return e.NextResponse.json({installed:!1,config:null,message:"Claude Desktop (Cowork mode) not detected"});let a=await L(await D()),b=a?.appliedId||null,c=await B(),d=b?i().join(c,`${b}.json`):null,f=d?await L(d):null,g=f?.inferenceGatewayBaseUrl||null,h=Array.isArray(f?.inferenceModels)?f.inferenceModels.map(a=>"string"==typeof a?a:a?.name).filter(Boolean):[],j=Array.isArray(f?.managedMcpServers)?f.managedMcpServers:[],k=!!(f?.inferenceProvider===w&&g),l=new Set(n.LOCAL_STDIO_PLUGINS.map(a=>a.name)),m=j.filter(a=>l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>a.name),o=j.filter(a=>a.custom||!l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/")).map(a=>({name:a.name,url:a.url,transport:a.transport,custom:!0}));return e.NextResponse.json({installed:!0,config:f,hasSwitchboard:k,configPath:d,cowork:{appliedId:b,baseUrl:g,models:h,provider:f?.inferenceProvider||null,plugins:j.filter(a=>!a.custom&&!(l.has(a.name)&&"string"==typeof a.url&&a.url.includes("/api/mcp/"))).map(a=>{let b=a.toolPolicy?Object.keys(a.toolPolicy):[],c=`${a.name}-`,d=new Set;for(let a of b){let b=a;for(;b.startsWith(c);)b=b.slice(c.length);d.add(b)}let e=n.DEFAULT_PLUGINS.find(b=>b.name===a.name),f=e&&Array.isArray(e.toolNames)?e.toolNames:Array.from(d);return{name:a.name,url:a.url,transport:a.transport,oauth:!!a.oauth,toolNames:f}}),localPlugins:m,customPlugins:o},defaultPlugins:n.DEFAULT_PLUGINS,localStdioPlugins:n.LOCAL_STDIO_PLUGINS})}catch(a){return console.log("Error reading cowork settings:",a),e.NextResponse.json({error:"Failed to read cowork settings"},{status:500})}}async function P(a){try{let b;try{b=await a.json()}catch{return e.NextResponse.json({error:"Invalid JSON body"},{status:400})}let{baseUrl:c,apiKey:d,models:f,plugins:h,localPlugins:j,customPlugins:k}=b||{};if(!c||!d)return e.NextResponse.json({error:"baseUrl and apiKey are required"},{status:400});try{let a=new URL(c);if(!["http:","https:"].includes(a.protocol))throw Error("unsupported protocol")}catch{return e.NextResponse.json({error:"baseUrl must be a valid HTTP(S) URL"},{status:400})}let l=Array.isArray(f)?f.filter(a=>"string"==typeof a&&a.trim()):[];if(0===l.length)return e.NextResponse.json({error:"At least one model is required"},{status:400});let m=Array.isArray(h)?h:n.DEFAULT_PLUGINS,o=Array.isArray(j)?j:[],p=(Array.isArray(k)?k:[]).filter(a=>a?.url),q=await v((a=>{let b=Array.isArray(a)?a:[],c=[];for(let a of b){let b=n.LOCAL_STDIO_PLUGINS.find(b=>b.name===a);if(!b)continue;let d={name:b.name,url:`http://localhost:${r}/api/mcp/${b.name}/sse`,transport:"sse"};if(Array.isArray(b.toolNames)&&b.toolNames.length>0){let a=`${b.name}-`,c={};for(let d of b.toolNames)c[d]="allow",c[`${a}${d}`]="allow";d.toolPolicy=c}c.push(d)}return c})(o)),s=await v((a=>{if(!Array.isArray(a))return[];let b=[];for(let c of a)c?.name&&c?.url&&b.push({name:c.name,url:c.url,transport:c.transport||"sse",custom:!0});return b})(p)),t=[...(0,n.buildManagedMcpServers)(m),...q,...s],u=await I(),y=await M(),z=i().join(C(),`${y.appliedId}.json`),A={...x,inferenceProvider:w,inferenceGatewayBaseUrl:c.endsWith("/v1")?c:`${c}/v1`,inferenceGatewayApiKey:d,inferenceModels:l.map(a=>({name:a}))};t.length>0&&(A.managedMcpServers=t),await g().writeFile(z,JSON.stringify(A,null,2));let B=null;try{B=await N(t)}catch(a){B={error:a.message}}try{await J()}catch{}return e.NextResponse.json({success:!0,bootstrapped:u,message:u?"Cowork enabled (3p mode set). Quit & reopen Claude Desktop.":"Cowork settings applied. Quit & reopen Claude Desktop.",configPath:z,skipApprovals:B,localMcp:{applied:o,via:"3p-sse-bridge"}})}catch(a){return console.log("Error applying cowork settings:",a),e.NextResponse.json({error:"Failed to apply cowork settings"},{status:500})}}async function Q(){try{let a=await L(await D());if(!a?.appliedId)return e.NextResponse.json({success:!0,message:"No active config to reset"});let b=i().join(await B(),`${a.appliedId}.json`);try{await g().writeFile(b,JSON.stringify({},null,2))}catch(a){if("ENOENT"!==a.code)throw a}try{await N([])}catch{}try{await J()}catch{}return e.NextResponse.json({success:!0,message:"Cowork config reset"})}catch(a){return console.log("Error resetting cowork settings:",a),e.NextResponse.json({error:"Failed to reset cowork settings"},{status:500})}}(0,q.D)([O,P,Q]),(0,d.A)(O,"00fcbbba0e1fc3c499d86a180e486aba15afe16686",null),(0,d.A)(P,"40125e46204806a7f0e898c5e423ca7971d8a0cae8",null),(0,d.A)(Q,"00524384984e4bc31fbb413555194174d0f7a66c10",null)},28286:a=>{a.exports={DEFAULT_PLUGINS:[{name:"exa",title:"Exa",description:"Real-time web search and code documentation",url:"https://mcp.exa.ai/mcp",transport:"http",oauth:!1,toolNames:["web_search_exa","web_fetch_exa"]},{name:"tavily",title:"Tavily",description:"Real-time web search optimized for LLM agents",url:"https://mcp.tavily.com/mcp",transport:"http",oauth:!0,toolNames:["tavily_search","tavily_extract","tavily_crawl","tavily_map"]}],LOCAL_STDIO_PLUGINS:[{name:"browsermcp",title:"Browser MCP",description:"Control your running Chrome (requires Chrome extension)",extensionUrl:"https://chromewebstore.google.com/detail/browser-mcp-automate-your/bjfgambnhccakkhmkepdoekmckoijdlc",command:"npx",args:["-y","@browsermcp/mcp@latest"],toolNames:["browser_navigate","browser_snapshot","browser_click","browser_type","browser_screenshot","browser_get_console_logs","browser_wait","browser_press_key","browser_go_back","browser_go_forward"]}],buildManagedMcpServers:function(a){let b=Array.isArray(a)?a:[],c=[],d=new Set;for(let a of b){if(!a?.name||!a?.url||d.has(a.name))continue;d.add(a.name);let b={name:a.name,url:a.url,transport:a.transport||(/\/sse(\b|\/)/i.test(a.url)?"sse":"http")};if(a.oauth&&(b.oauth=!0),Array.isArray(a.toolNames)&&a.toolNames.length>0){let c=`${a.name}-`,d=new Set;for(let b of a.toolNames){if("string"!=typeof b||!b)continue;let a=b;for(;a.startsWith(c);)a=a.slice(c.length);d.add(a)}let e={};for(let a of d)e[a]="allow",e[`${c}${a}`]="allow";b.toolPolicy=e}c.push(b)}return c}}},54603:(a,b,c)=>{c.d(b,{Xj:()=>q});var d=c(96930),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.nJ,"machine-id"),m=h().join(k.nJ,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||function(){if(process.env.MACHINE_ID_SALT)return process.env.MACHINE_ID_SALT;let a=h().join(m,"machine-id-salt");try{let b=f().readFileSync(a,"utf8").trim();if(b)return b}catch{}let b=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0,mode:448}),f().writeFileSync(a,b,{mode:384})}catch{}return b}(),c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.nJ,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="switchboard-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}}};
|
|
@@ -36,20 +36,15 @@ default_model = "${x}"
|
|
|
36
36
|
model_catalog = true
|
|
37
37
|
requires_api_key = true
|
|
38
38
|
|
|
39
|
-
${y}`},{filename:"~/.config/jcode/provider-switchboard.env",content:`JCODE_SWITCHBOARD_API_KEY="${v}"`}])})]})}function ae({tool:a,endpoint:b,installHint:c,runHint:h,buildManualConfigs:i,multipleModels:j=!1,hasDefaultModel:k=!0,requiresModelScope:n=!1,supportsModelLabels:o=!1,isExpanded:q,onToggle:r,hasActiveProviders:s,apiKeys:t,activeProviders:u,cloudEnabled:v,initialStatus:w,tunnelEnabled:x,tunnelPublicUrl:y,tailscaleEnabled:z,tailscaleUrl:A}){let C,D,E,F,[G,H]=(0,e.useState)(w||null),[J,K]=(0,e.useState)(!1),[L,M]=(0,e.useState)(!1),[O,P]=(0,e.useState)(!1),[R,S]=(0,e.useState)(null),[T,U]=(0,e.useState)(""),[V,W]=(0,e.useState)(""),[X,Y]=(0,e.useState)([]),[Z,$]=(0,e.useState)({}),[_,aa]=(0,e.useState)({}),[ab,ac]=(0,e.useState)(""),[ad,af]=(0,e.useState)(!1),[ag,ah]=(0,e.useState)(""),[ai,aj]=(0,e.useState)(!1),[ak,al]=(0,e.useState)({}),[am,an]=(0,e.useState)(!1),[ao,ap]=(0,e.useState)("");(0,e.useRef)(!1);let aq=(()=>{if(J&&!G)return"checking";if(!G)return null;if(!G.installed)return"not_installed";let a=G.settings?.baseUrl;if(!a)return"not_configured";let b=G.hasSwitchboard||p(a,{tunnelPublicUrl:y,tailscaleUrl:A}),c=!n||G.settings?.scopeConfigured===!0;return b&&c?"configured":"other"})(),ar=L||O||ad,as=v&&!T?.trim()&&!(t?.length>0),at=(a.notes||[]).filter(a=>!!a&&("not_installed"===a.when||"install"===a.type?G&&!G.installed:"installed"===a.when?G?.installed:"warning"===a.type&&"string"==typeof a.text&&/^\s*install\b/i.test(a.text)?G&&!G.installed:"always"===a.when||!G||!!G.installed)),au=async()=>{K(!0);try{let a=await fetch(b),c=await a.json();H(c)}catch(a){H({installed:!1,error:a.message})}finally{K(!1)}},av=()=>{let a=ao||"http://127.0.0.1:20128";return a.endsWith("/v1")?a:`${a}/v1`},aw=()=>T?.trim()||(t?.length>0?t[0].keySecret:null)||(v?null:"sk_switchboard"),ax=(a,b)=>{let c=I(a);return Object.fromEntries(a.map(a=>[a,void 0!==b[a]?String(b[a]):String(c.get(a)||a).slice(0,48)]))},ay=(a=ag)=>{if(ar)return;let b=a.trim();if(!b||X.includes(b))return;let c=[...X,b];if(Y(c),o){let a=ax(c,Z);$(a),aa(c=>({...c,[b]:a[b]}))}k&&!V&&W(b),ah("")},az=a=>{if(ar)return;let b=X.filter(b=>b!==a);Y(b),o&&($(a=>ax(b,a)),aa(b=>Object.fromEntries(Object.entries(b).filter(([b])=>b!==a)))),V===a&&W(b[0]||"")},aA=async()=>{if(!ar){M(!0),S(null);try{let a=await fetch(b,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:av(),apiKey:aw(),model:j?V||X[0]:V,models:j?X:void 0,defaultModel:j&&k?V||X[0]:void 0,pickerLabels:o?_:void 0})}),c=await a.json();a.ok?(S({type:"success",text:c.message||"Settings applied successfully!"}),o&&c.pickerLabels&&"object"==typeof c.pickerLabels&&$(c.pickerLabels),aa({}),au()):S({type:"error",text:c.error||"Failed to apply settings"})}catch(a){S({type:"error",text:a.message})}finally{M(!1)}}},aB=async()=>{if(!ar){P(!0),S(null);try{let a=await fetch(b,{method:"DELETE"}),c=await a.json();a.ok?(S({type:"success",text:c.message||"Settings reset successfully!"}),W(""),Y([]),$({}),aa({}),au()):S({type:"error",text:c.error||"Failed to reset settings"})}catch(a){S({type:"error",text:a.message})}finally{P(!1)}}},aC=async()=>{if(0!==X.length&&!ar){af(!0),S(null);try{let a=await B({modelIds:X,namingModel:ab,existingLabels:ax(X,Z)}),b=a.labels&&"object"==typeof a.labels?a.labels:{};$(a=>ax(X,{...a,...b})),aa(a=>({...a,...b})),S({type:"success",text:"ai"===a.source?`Improved ${Object.keys(b).length} Pi model labels with AI. Click Apply to save.`:`Refreshed ${Object.keys(b).length} Pi model labels. Click Apply to save.`})}catch(a){S({type:"error",text:a instanceof Error?a.message:"Failed to generate model labels"})}finally{af(!1)}}};return(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,d.jsxs)("div",{...N(r,q,a.name),className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:a.image?(0,d.jsx)(g.default,{src:a.image,alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}}):(0,d.jsx)("span",{className:"material-symbols-outlined text-[28px]",style:{color:a.color||"#888"},children:a.icon||"terminal"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"checking"===aq&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-gray-500/10 text-gray-500 rounded-full",children:"Checking…"}),"not_installed"===aq&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-orange-500/15 text-orange-600 dark:text-orange-400 rounded-full border border-orange-500/25",children:"Not installed"}),"configured"===aq&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full border border-green-500/20",children:"Connected"}),"not_configured"===aq&&(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 text-[10px] font-medium bg-amber-500/10 text-amber-600 dark:text-amber-400 rounded-full border border-amber-500/25",children:[(0,d.jsx)("span",{className:"size-1.5 rounded-full bg-emerald-500","aria-hidden":!0}),"Installed \xb7 not configured"]}),"other"===aq&&(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full border border-blue-500/20",children:[(0,d.jsx)("span",{className:"size-1.5 rounded-full bg-emerald-500","aria-hidden":!0}),"Installed \xb7 other endpoint"]})]}),(0,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.description})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${q?"rotate-180":""}`,children:"expand_more"})]}),q&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[J&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,d.jsxs)("span",{children:["Checking ",a.name,"…"]})]}),!J&&G&&!G.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-orange-500/10 border border-orange-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-orange-500 shrink-0",children:"download"}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsxs)("p",{className:"font-medium text-orange-600 dark:text-orange-400",children:[a.name," is not installed"]}),(0,d.jsx)("p",{className:"text-sm text-text-muted mt-1",children:"Install it on this machine first, then come back to connect Switchboard."}),c?(0,d.jsxs)("div",{className:"mt-3",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-orange-600/80 dark:text-orange-400/80 mb-1.5",children:"Install steps"}),(0,d.jsx)("code",{className:"block p-2.5 bg-black/25 rounded text-xs font-mono whitespace-pre-wrap text-text-main",children:c})]}):null,at.filter(a=>!(c&&("install"===a.type||"not_installed"===a.when))).length>0&&(0,d.jsx)("div",{className:"flex flex-col gap-2 mt-3",children:at.filter(a=>!(c&&("install"===a.type||"not_installed"===a.when))).map((a,b)=>(0,d.jsx)("p",{className:"text-xs text-text-muted",children:a.text},b))}),(0,d.jsx)("p",{className:"text-sm text-text-muted mt-3",children:"Already installed on another machine? Copy the config files instead."})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 pl-0 sm:pl-9",children:[(0,d.jsxs)(f.$n,{variant:"secondary",size:"sm",onClick:()=>an(!0),className:"!bg-orange-500/20 !border-orange-500/40 !text-orange-700 dark:!text-orange-300 hover:!bg-orange-500/30",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]}),(0,d.jsxs)(f.$n,{variant:"ghost",size:"sm",onClick:au,disabled:J,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"refresh"}),"Recheck"]})]})]}),!J&&G?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:`flex items-start gap-2 p-2.5 rounded-lg text-xs border ${"configured"===aq?"bg-green-500/10 border-green-500/25 text-green-700 dark:text-green-400":"bg-emerald-500/10 border-emerald-500/20 text-emerald-700 dark:text-emerald-400"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] mt-0.5 shrink-0",children:"configured"===aq?"check_circle":"verified"}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("p",{className:"font-medium",children:"configured"===aq?`${a.name} is installed and connected to Switchboard`:`${a.name} is installed — configure Switchboard below`}),h&&"configured"===aq?(0,d.jsx)("p",{className:"mt-1 font-mono text-[11px] opacity-90",children:h}):null]})]}),(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[at.length>0&&(0,d.jsx)("div",{className:"flex flex-col gap-2 mb-2",children:at.map((a,b)=>(0,d.jsxs)("div",{className:`flex items-start gap-2 p-2 rounded text-xs ${"warning"===a.type?"bg-amber-500/10 text-amber-600 dark:text-amber-400":"error"===a.type?"bg-red-500/10 text-red-600 dark:text-red-400":"bg-blue-500/10 text-blue-600 dark:text-blue-400"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mt-0.5",children:"warning"===a.type?"warning":"error"===a.type?"error":"info"}),(0,d.jsx)("span",{children:a.text})]},b))}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(l,{value:ao||av(),onChange:ap,initialUrl:G?.settings?.baseUrl||"",requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:x,tunnelPublicUrl:y,tailscaleEnabled:z,tailscaleUrl:A})]}),G?.settings?.baseUrl&&(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("span",{className:"min-w-0 truncate rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5",children:[G.settings.baseUrl,G.settings.models?.length?` \xb7 ${G.settings.models.length} models`:G.settings.model?` \xb7 ${G.settings.model}`:""]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(m,{value:T,onChange:U,apiKeys:t,cloudEnabled:v})]}),j?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(Q,{models:X,draft:ag,onDraftChange:ah,onAdd:()=>ay(),onRemove:az,onOpenPicker:()=>aj(!0),canOpenPicker:!!s&&!ar,defaultModel:k?V:void 0,onDefaultChange:k?W:void 0,label:k?"Models":"Available Models"}),o&&X.length>0&&(0,d.jsxs)("div",{className:"mt-2 rounded-lg border border-blue-500/30 bg-blue-500/5 p-3",children:[(0,d.jsx)("h4",{className:"text-sm font-semibold text-text-main",children:"Pi model labels"}),(0,d.jsxs)("p",{className:"mt-1 text-xs leading-relaxed text-text-muted",children:["These names appear in Pi's ",(0,d.jsx)("code",{children:"/model"})," picker. Edit them directly, or optionally use a model to improve all labels with AI."]}),(0,d.jsxs)("div",{className:"mt-3 grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("label",{htmlFor:`${a.id}-picker-labeling-model`,className:"text-xs font-semibold text-text-main sm:text-right",children:"Labeling model"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)("input",{id:`${a.id}-picker-labeling-model`,type:"text",disabled:ar,value:ab,onChange:a=>ac(a.target.value),placeholder:"Cheap model for AI labels (optional)",className:"w-full min-w-0 rounded border border-border bg-surface px-2 py-2 text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),(0,d.jsxs)("button",{type:"button",onClick:aC,disabled:ar,className:"flex min-h-10 items-center justify-center gap-1 rounded-lg border border-blue-500/40 bg-blue-500/10 px-3 text-xs font-medium text-blue-700 transition-colors hover:border-blue-500 hover:bg-blue-500/20 disabled:cursor-not-allowed disabled:opacity-50 dark:text-blue-300",children:[(0,d.jsx)("span",{className:`material-symbols-outlined text-[16px] ${ad?"animate-spin":""}`,children:ad?"progress_activity":"auto_awesome"}),ad?"Generating...":ab.trim()?"Improve labels with AI":"Refresh labels"]})]}),(0,d.jsx)("div",{className:"mt-3 flex max-h-56 flex-col gap-1.5 overflow-y-auto",children:X.map(a=>(0,d.jsxs)("div",{className:"rounded border border-border bg-surface px-2 py-1.5",children:[(0,d.jsx)("input",{type:"text",disabled:ar,value:Z[a]||"",maxLength:48,onChange:b=>{let c=b.target.value;$(b=>({...b,[a]:c})),aa(b=>({...b,[a]:c}))},"aria-label":`Pi picker label for ${a}`,className:"w-full min-w-0 rounded border border-border bg-background px-2 py-1 text-xs font-medium text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,d.jsxs)("div",{className:"mt-1 flex min-w-0 items-center gap-2 text-[10px] text-text-muted",children:[(0,d.jsx)("code",{className:"min-w-0 flex-1 truncate",title:a,children:a}),(0,d.jsxs)("span",{className:"shrink-0",children:[(Z[a]||"").length,"/48"]})]})]},a))})]})]}):(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Default Model"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:V,onChange:a=>W(a.target.value),placeholder:"provider/model-id",className:"w-full min-w-0 pl-2 pr-7 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),V&&(0,d.jsx)("button",{onClick:()=>W(""),className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,d.jsx)("button",{onClick:()=>aj(!0),disabled:!s,className:`w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 ${s?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"})]}),h&&"configured"!==aq?(0,d.jsx)("p",{className:"text-[11px] text-text-subtle font-mono mt-1",children:h}):null]}),R&&(0,d.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===R.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===R.type?"check_circle":"error"}),(0,d.jsx)("span",{children:R.text})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,d.jsxs)(f.$n,{variant:"primary",size:"sm",onClick:aA,disabled:ar||as||(j?0===X.length:!V),loading:L,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:aB,disabled:ar||!G?.hasSwitchboard,loading:O,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,d.jsxs)(f.$n,{variant:"ghost",size:"sm",onClick:()=>an(!0),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]}),as&&(0,d.jsx)("p",{className:"text-xs text-amber-600 dark:text-amber-400",children:"Select or paste a Switchboard API key for this endpoint before applying."})]})]}),(0,d.jsx)(f.rq,{isOpen:ai,onClose:()=>aj(!1),onSelect:a=>{ar||(j?ay(a.value):(W(a.value),aj(!1)))},onDeselect:j?a=>az(a.value):void 0,selectedModel:j?null:V,activeProviders:u,modelAliases:ak,addedModelValues:j?X:[],closeOnSelect:!j,selectionHint:j?"Select any number of models. Close this picker when finished, then click Apply to save.":void 0,title:`${j?"Add Models":"Select Model"} for ${a.name}`}),(0,d.jsx)(f.uR,{isOpen:am,onClose:()=>an(!1),title:`${a.name} — Manual Configuration`,configs:(C=aw()||"<API_KEY_FROM_DASHBOARD>",D=av(),E=j?X.length>0?X:["provider/model-id"]:[V||"provider/model-id"],F=V||E[0],"function"==typeof i?i({baseUrl:D,apiKey:C,model:F,models:E,defaultModel:V||E[0],pickerLabels:ax(E,Z)}):[{filename:"env",content:`export OPENAI_API_KEY="${C}"
|
|
40
|
-
export OPENAI_BASE_URL="${
|
|
41
|
-
export OPENAI_MODEL="${
|
|
42
|
-
`}])})]})}function af(a){return(0,d.jsx)(ae,{...a,endpoint:"/api/cli-tools/grok-settings",installHint:`curl -fsSL https://raw.githubusercontent.com/superagent-ai/grok-cli/main/install.sh | bash
|
|
39
|
+
${y}`},{filename:"~/.config/jcode/provider-switchboard.env",content:`JCODE_SWITCHBOARD_API_KEY="${v}"`}])})]})}function ae({tool:a,endpoint:b,installHint:c,runHint:h,buildManualConfigs:i,manualConfigsEndpoint:j,multipleModels:k=!1,hasDefaultModel:n=!0,requiresModelScope:o=!1,supportsModelLabels:q=!1,isExpanded:r,onToggle:s,hasActiveProviders:t,apiKeys:u,activeProviders:v,cloudEnabled:w,initialStatus:x,tunnelEnabled:y,tunnelPublicUrl:z,tailscaleEnabled:A,tailscaleUrl:C}){let[D,E]=(0,e.useState)(x||null),[F,G]=(0,e.useState)(!1),[H,J]=(0,e.useState)(!1),[K,L]=(0,e.useState)(!1),[M,O]=(0,e.useState)(null),[P,R]=(0,e.useState)(""),[S,T]=(0,e.useState)(""),[U,V]=(0,e.useState)([]),[W,X]=(0,e.useState)({}),[Y,Z]=(0,e.useState)({}),[$,_]=(0,e.useState)(""),[aa,ab]=(0,e.useState)(!1),[ac,ad]=(0,e.useState)(""),[af,ag]=(0,e.useState)(!1),[ah,ai]=(0,e.useState)({}),[aj,ak]=(0,e.useState)(!1),[al,am]=(0,e.useState)(null),[an,ao]=(0,e.useState)(!1),[ap,aq]=(0,e.useState)("");(0,e.useRef)(!1);let ar=(()=>{if(F&&!D)return"checking";if(!D)return null;if(!D.installed)return"not_installed";let a=D.settings?.baseUrl;if(!a)return"not_configured";let b=D.hasSwitchboard||p(a,{tunnelPublicUrl:z,tailscaleUrl:C}),c=!o||D.settings?.scopeConfigured===!0;return b&&c?"configured":"other"})(),as=H||K||aa,at=w&&!P?.trim()&&!(u?.length>0),au=(a.notes||[]).filter(a=>!!a&&("not_installed"===a.when||"install"===a.type?D&&!D.installed:"installed"===a.when?D?.installed:"warning"===a.type&&"string"==typeof a.text&&/^\s*install\b/i.test(a.text)?D&&!D.installed:"always"===a.when||!D||!!D.installed)),av=async()=>{G(!0);try{let a=await fetch(b),c=await a.json();E(c)}catch(a){E({installed:!1,error:a.message})}finally{G(!1)}},aw=()=>{let a=ap||"http://127.0.0.1:20128";return a.endsWith("/v1")?a:`${a}/v1`},ax=()=>P?.trim()||(u?.length>0?u[0].keySecret:null)||(w?null:"sk_switchboard"),ay=(a,b)=>{let c=I(a);return Object.fromEntries(a.map(a=>[a,void 0!==b[a]?String(b[a]):String(c.get(a)||a).slice(0,48)]))},az=(a=ac)=>{if(as)return;let b=a.trim();if(!b||U.includes(b))return;let c=[...U,b];if(V(c),q){let a=ay(c,W);X(a),Z(c=>({...c,[b]:a[b]}))}n&&!S&&T(b),ad("")},aA=a=>{if(as)return;let b=U.filter(b=>b!==a);V(b),q&&(X(a=>ay(b,a)),Z(b=>Object.fromEntries(Object.entries(b).filter(([b])=>b!==a)))),S===a&&T(b[0]||"")},aB=async()=>{if(!as){J(!0),O(null);try{let a=await fetch(b,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:aw(),apiKey:ax(),model:k?S||U[0]:S,models:k?U:void 0,defaultModel:k&&n?S||U[0]:void 0,pickerLabels:q?Y:void 0})}),c=await a.json();a.ok?(O({type:"success",text:c.message||"Settings applied successfully!"}),q&&c.pickerLabels&&"object"==typeof c.pickerLabels&&X(c.pickerLabels),Z({}),av()):O({type:"error",text:c.error||"Failed to apply settings"})}catch(a){O({type:"error",text:a.message})}finally{J(!1)}}},aC=async()=>{if(!as){L(!0),O(null);try{let a=await fetch(b,{method:"DELETE"}),c=await a.json();a.ok?(O({type:"success",text:c.message||"Settings reset successfully!"}),T(""),V([]),X({}),Z({}),av()):O({type:"error",text:c.error||"Failed to reset settings"})}catch(a){O({type:"error",text:a.message})}finally{L(!1)}}},aD=async()=>{if(0!==U.length&&!as){ab(!0),O(null);try{let a=await B({modelIds:U,namingModel:$,existingLabels:ay(U,W)}),b=a.labels&&"object"==typeof a.labels?a.labels:{};X(a=>ay(U,{...a,...b})),Z(a=>({...a,...b})),O({type:"success",text:"ai"===a.source?`Improved ${Object.keys(b).length} Pi model labels with AI. Click Apply to save.`:`Refreshed ${Object.keys(b).length} Pi model labels. Click Apply to save.`})}catch(a){O({type:"error",text:a instanceof Error?a.message:"Failed to generate model labels"})}finally{ab(!1)}}};return(0,d.jsxs)(f.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,d.jsxs)("div",{...N(s,r,a.name),className:"flex items-start justify-between gap-3 hover:cursor-pointer sm:items-center focus:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:a.image?(0,d.jsx)(g.default,{src:a.image,alt:a.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:a=>{a.target.style.display="none"}}):(0,d.jsx)("span",{className:"material-symbols-outlined text-[28px]",style:{color:a.color||"#888"},children:a.icon||"terminal"})}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("h3",{className:"font-medium text-sm",children:a.name}),"checking"===ar&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-gray-500/10 text-gray-500 rounded-full",children:"Checking…"}),"not_installed"===ar&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-orange-500/15 text-orange-600 dark:text-orange-400 rounded-full border border-orange-500/25",children:"Not installed"}),"configured"===ar&&(0,d.jsx)("span",{className:"px-1.5 py-0.5 text-[10px] font-medium bg-green-500/10 text-green-600 dark:text-green-400 rounded-full border border-green-500/20",children:"Connected"}),"not_configured"===ar&&(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 text-[10px] font-medium bg-amber-500/10 text-amber-600 dark:text-amber-400 rounded-full border border-amber-500/25",children:[(0,d.jsx)("span",{className:"size-1.5 rounded-full bg-emerald-500","aria-hidden":!0}),"Installed \xb7 not configured"]}),"other"===ar&&(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 text-[10px] font-medium bg-blue-500/10 text-blue-600 dark:text-blue-400 rounded-full border border-blue-500/20",children:[(0,d.jsx)("span",{className:"size-1.5 rounded-full bg-emerald-500","aria-hidden":!0}),"Installed \xb7 other endpoint"]})]}),(0,d.jsx)("p",{className:"text-xs text-text-muted truncate",children:a.description})]})]}),(0,d.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${r?"rotate-180":""}`,children:"expand_more"})]}),r&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[F&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),(0,d.jsxs)("span",{children:["Checking ",a.name,"…"]})]}),!F&&D&&!D.installed&&(0,d.jsxs)("div",{className:"flex flex-col gap-3 p-4 bg-orange-500/10 border border-orange-500/30 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-orange-500 shrink-0",children:"download"}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsxs)("p",{className:"font-medium text-orange-600 dark:text-orange-400",children:[a.name," is not installed"]}),(0,d.jsx)("p",{className:"text-sm text-text-muted mt-1",children:"Install it on this machine first, then come back to connect Switchboard."}),c?(0,d.jsxs)("div",{className:"mt-3",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-orange-600/80 dark:text-orange-400/80 mb-1.5",children:"Install steps"}),(0,d.jsx)("code",{className:"block p-2.5 bg-black/25 rounded text-xs font-mono whitespace-pre-wrap text-text-main",children:c})]}):null,au.filter(a=>!(c&&("install"===a.type||"not_installed"===a.when))).length>0&&(0,d.jsx)("div",{className:"flex flex-col gap-2 mt-3",children:au.filter(a=>!(c&&("install"===a.type||"not_installed"===a.when))).map((a,b)=>(0,d.jsx)("p",{className:"text-xs text-text-muted",children:a.text},b))}),(0,d.jsx)("p",{className:"text-sm text-text-muted mt-3",children:"Already installed on another machine? Copy the config files instead."})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2 pl-0 sm:pl-9",children:[(0,d.jsxs)(f.$n,{variant:"secondary",size:"sm",onClick:()=>ak(!0),className:"!bg-orange-500/20 !border-orange-500/40 !text-orange-700 dark:!text-orange-300 hover:!bg-orange-500/30",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"content_copy"}),"Manual Config"]}),(0,d.jsxs)(f.$n,{variant:"ghost",size:"sm",onClick:av,disabled:F,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] mr-1",children:"refresh"}),"Recheck"]})]})]}),!F&&D?.installed&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:`flex items-start gap-2 p-2.5 rounded-lg text-xs border ${"configured"===ar?"bg-green-500/10 border-green-500/25 text-green-700 dark:text-green-400":"bg-emerald-500/10 border-emerald-500/20 text-emerald-700 dark:text-emerald-400"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] mt-0.5 shrink-0",children:"configured"===ar?"check_circle":"verified"}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("p",{className:"font-medium",children:"configured"===ar?`${a.name} is installed and connected to Switchboard`:`${a.name} is installed — configure Switchboard below`}),h&&"configured"===ar?(0,d.jsx)("p",{className:"mt-1 font-mono text-[11px] opacity-90",children:h}):null]})]}),(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[au.length>0&&(0,d.jsx)("div",{className:"flex flex-col gap-2 mb-2",children:au.map((a,b)=>(0,d.jsxs)("div",{className:`flex items-start gap-2 p-2 rounded text-xs ${"warning"===a.type?"bg-amber-500/10 text-amber-600 dark:text-amber-400":"error"===a.type?"bg-red-500/10 text-red-600 dark:text-red-400":"bg-blue-500/10 text-blue-600 dark:text-blue-400"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mt-0.5",children:"warning"===a.type?"warning":"error"===a.type?"error":"info"}),(0,d.jsx)("span",{children:a.text})]},b))}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Select Endpoint"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(l,{value:ap||aw(),onChange:aq,initialUrl:D?.settings?.baseUrl||"",requiresExternalUrl:a.requiresExternalUrl,tunnelEnabled:y,tunnelPublicUrl:z,tailscaleEnabled:A,tailscaleUrl:C})]}),D?.settings?.baseUrl&&(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Current"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("span",{className:"min-w-0 truncate rounded bg-surface/40 px-2 py-2 text-xs text-text-muted sm:py-1.5",children:[D.settings.baseUrl,D.settings.models?.length?` \xb7 ${D.settings.models.length} models`:D.settings.model?` \xb7 ${D.settings.model}`:""]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"API Key"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)(m,{value:P,onChange:R,apiKeys:u,cloudEnabled:w})]}),k?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(Q,{models:U,draft:ac,onDraftChange:ad,onAdd:()=>az(),onRemove:aA,onOpenPicker:()=>ag(!0),canOpenPicker:!!t&&!as,defaultModel:n?S:void 0,onDefaultChange:n?T:void 0,label:n?"Models":"Available Models"}),q&&U.length>0&&(0,d.jsxs)("div",{className:"mt-2 rounded-lg border border-blue-500/30 bg-blue-500/5 p-3",children:[(0,d.jsx)("h4",{className:"text-sm font-semibold text-text-main",children:"Pi model labels"}),(0,d.jsxs)("p",{className:"mt-1 text-xs leading-relaxed text-text-muted",children:["These names appear in Pi's ",(0,d.jsx)("code",{children:"/model"})," picker. Edit them directly, or optionally use a model to improve all labels with AI."]}),(0,d.jsxs)("div",{className:"mt-3 grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("label",{htmlFor:`${a.id}-picker-labeling-model`,className:"text-xs font-semibold text-text-main sm:text-right",children:"Labeling model"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsx)("input",{id:`${a.id}-picker-labeling-model`,type:"text",disabled:as,value:$,onChange:a=>_(a.target.value),placeholder:"Cheap model for AI labels (optional)",className:"w-full min-w-0 rounded border border-border bg-surface px-2 py-2 text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),(0,d.jsxs)("button",{type:"button",onClick:aD,disabled:as,className:"flex min-h-10 items-center justify-center gap-1 rounded-lg border border-blue-500/40 bg-blue-500/10 px-3 text-xs font-medium text-blue-700 transition-colors hover:border-blue-500 hover:bg-blue-500/20 disabled:cursor-not-allowed disabled:opacity-50 dark:text-blue-300",children:[(0,d.jsx)("span",{className:`material-symbols-outlined text-[16px] ${aa?"animate-spin":""}`,children:aa?"progress_activity":"auto_awesome"}),aa?"Generating...":$.trim()?"Improve labels with AI":"Refresh labels"]})]}),(0,d.jsx)("div",{className:"mt-3 flex max-h-56 flex-col gap-1.5 overflow-y-auto",children:U.map(a=>(0,d.jsxs)("div",{className:"rounded border border-border bg-surface px-2 py-1.5",children:[(0,d.jsx)("input",{type:"text",disabled:as,value:W[a]||"",maxLength:48,onChange:b=>{let c=b.target.value;X(b=>({...b,[a]:c})),Z(b=>({...b,[a]:c}))},"aria-label":`Pi picker label for ${a}`,className:"w-full min-w-0 rounded border border-border bg-background px-2 py-1 text-xs font-medium text-text-main focus:outline-none focus:ring-1 focus:ring-primary/50"}),(0,d.jsxs)("div",{className:"mt-1 flex min-w-0 items-center gap-2 text-[10px] text-text-muted",children:[(0,d.jsx)("code",{className:"min-w-0 flex-1 truncate",title:a,children:a}),(0,d.jsxs)("span",{className:"shrink-0",children:[(W[a]||"").length,"/48"]})]})]},a))})]})]}):(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-1.5 sm:grid-cols-[8rem_auto_1fr_auto] sm:items-center sm:gap-2",children:[(0,d.jsx)("span",{className:"text-xs font-semibold text-text-main sm:text-right sm:text-sm",children:"Default Model"}),(0,d.jsx)("span",{className:"material-symbols-outlined hidden text-text-muted text-[14px] sm:inline",children:"arrow_forward"}),(0,d.jsxs)("div",{className:"relative w-full min-w-0",children:[(0,d.jsx)("input",{type:"text",value:S,onChange:a=>T(a.target.value),placeholder:"provider/model-id",className:"w-full min-w-0 pl-2 pr-7 py-2 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 sm:py-1.5"}),S&&(0,d.jsx)("button",{onClick:()=>T(""),className:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]}),(0,d.jsx)("button",{onClick:()=>ag(!0),disabled:!t,className:`w-full sm:w-auto rounded border px-2 py-2 text-xs transition-colors sm:py-1.5 whitespace-nowrap sm:shrink-0 ${t?"bg-surface border-border text-text-main hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,children:"Select"})]}),h&&"configured"!==ar?(0,d.jsx)("p",{className:"text-[11px] text-text-subtle font-mono mt-1",children:h}):null]}),M&&(0,d.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===M.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===M.type?"check_circle":"error"}),(0,d.jsx)("span",{children:M.text})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-2 sm:flex sm:items-center",children:[(0,d.jsxs)(f.$n,{variant:"primary",size:"sm",onClick:aB,disabled:as||at||(k?0===U.length:!S),loading:H,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"save"}),"Apply"]}),(0,d.jsxs)(f.$n,{variant:"outline",size:"sm",onClick:aC,disabled:as||!D?.hasSwitchboard,loading:K,children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"restore"}),"Reset"]}),(0,d.jsxs)(f.$n,{variant:"ghost",size:"sm",onClick:()=>ak(!0),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"content_copy"}),"Manual Config"]})]}),at&&(0,d.jsx)("p",{className:"text-xs text-amber-600 dark:text-amber-400",children:"Select or paste a Switchboard API key for this endpoint before applying."})]})]}),(0,d.jsx)(f.rq,{isOpen:af,onClose:()=>ag(!1),onSelect:a=>{as||(k?az(a.value):(T(a.value),ag(!1)))},onDeselect:k?a=>aA(a.value):void 0,selectedModel:k?null:S,activeProviders:v,modelAliases:ah,addedModelValues:k?U:[],closeOnSelect:!k,selectionHint:k?"Select any number of models. Close this picker when finished, then click Apply to save.":void 0,title:`${k?"Add Models":"Select Model"} for ${a.name}`}),(0,d.jsx)(f.uR,{isOpen:aj,onClose:()=>ak(!1),title:`${a.name} — Manual Configuration`,configs:an&&j?[]:(()=>{let a,b,c;if(al)return al;let d=(a=ax()||"<API_KEY_FROM_DASHBOARD>",b=aw(),c=k?U.length>0?U:["provider/model-id"]:[S||"provider/model-id"],{baseUrl:b,apiKey:a,model:S||c[0],models:c,defaultModel:S||c[0],pickerLabels:ay(c,W)});return"function"==typeof i?i(d):[{filename:"env",content:`export OPENAI_API_KEY="${d.apiKey}"
|
|
40
|
+
export OPENAI_BASE_URL="${d.baseUrl}"
|
|
41
|
+
export OPENAI_MODEL="${d.model}"
|
|
42
|
+
`}]})(),loading:an&&j})]})}function af(a){return(0,d.jsx)(ae,{...a,endpoint:"/api/cli-tools/grok-settings",installHint:`curl -fsSL https://raw.githubusercontent.com/superagent-ai/grok-cli/main/install.sh | bash
|
|
43
43
|
# or: bun add -g grok-dev`,runHint:"After Apply: source ~/.grok/switchboard.env && grok",buildManualConfigs:({baseUrl:a,apiKey:b,model:c})=>[{filename:"~/.grok/user-settings.json",content:JSON.stringify({apiKey:b,defaultModel:c},null,2)},{filename:"~/.grok/switchboard.env",content:`export GROK_API_KEY=${S(b)}
|
|
44
44
|
export GROK_BASE_URL=${S(a)}
|
|
45
45
|
export GROK_MODEL=${S(c)}
|
|
46
|
-
`}]})}function ag(a){return(0,d.jsx)(ae,{...a,endpoint:"/api/cli-tools/pi-settings",multipleModels:!0,hasDefaultModel:!0,requiresModelScope:!0,supportsModelLabels:!0,installHint:`npm install -g --ignore-scripts @earendil-works/pi-coding-agent
|
|
47
|
-
# or: curl -fsSL https://pi.dev/install.sh | sh`,runHint:"After Apply: Switchboard is one provider. /model still lists your other providers."
|
|
48
|
-
name: ${JSON.stringify(a.name)}
|
|
49
|
-
reasoning: false
|
|
50
|
-
input: ["text", "image"]
|
|
51
|
-
contextWindow: 200000
|
|
52
|
-
maxTokens: 16384`)].join("\n")},{filename:"~/.pi/agent/models.json",content:JSON.stringify({providers:{switchboard:{baseUrl:a,api:"openai-completions",apiKey:b,authHeader:!0,compat:{supportsDeveloperRole:!1,supportsReasoningEffort:!0,supportsUsageInStreaming:!0},models:f}}},null,2)},{filename:"~/.pi/agent/settings.json (merge these keys — keep your other settings)",content:JSON.stringify({defaultProvider:"switchboard",defaultModel:d||c[0]},null,2)}]}})}let ah=({baseUrl:a,apiKey:b,model:c,models:d})=>{let e=c.startsWith("openai/")?c:`openai/${c}`,f=new Map,g=d.map(a=>{let b=a.replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-|-$/g,"")||"model",c=(f.get(b)||0)+1;f.set(b,c);let d=a.startsWith("openai/")?a:`openai/${a}`;return` - switchboard-${b}${1===c?"":`-${c}`}:${d}`}).join("\n");return[{filename:"~/.aider.conf.yml",content:`# switchboard-managed
|
|
46
|
+
`}]})}function ag(a){return(0,d.jsx)(ae,{...a,endpoint:"/api/cli-tools/pi-settings",multipleModels:!0,hasDefaultModel:!0,requiresModelScope:!0,supportsModelLabels:!0,manualConfigsEndpoint:"/api/cli-tools/pi-settings/manual-configs",installHint:`npm install -g --ignore-scripts @earendil-works/pi-coding-agent
|
|
47
|
+
# or: curl -fsSL https://pi.dev/install.sh | sh`,runHint:"After Apply: Switchboard is one provider. /model still lists your other providers."})}let ah=({baseUrl:a,apiKey:b,model:c,models:d})=>{let e=c.startsWith("openai/")?c:`openai/${c}`,f=new Map,g=d.map(a=>{let b=a.replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-|-$/g,"")||"model",c=(f.get(b)||0)+1;f.set(b,c);let d=a.startsWith("openai/")?a:`openai/${a}`;return` - switchboard-${b}${1===c?"":`-${c}`}:${d}`}).join("\n");return[{filename:"~/.aider.conf.yml",content:`# switchboard-managed
|
|
53
48
|
openai-api-base: ${a}
|
|
54
49
|
openai-api-key: ${b}
|
|
55
50
|
model: ${e}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=6328,exports.ids=[6328],exports.modules={4630:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(45350);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},39326:(a,b,c)=>{function d(a){return null==a?"":String(a).trim()}async function e(a={}){try{let b=function(a={}){let b=a?.connectionProxyEnabled===!0,c=d(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:d(a?.connectionNoProxy)}}(a);if(b.connectionProxyEnabled&&b.connectionProxyUrl)return{source:"legacy",proxyPoolId:null,proxyPool:null,...b,strictProxy:!1,vercelRelayUrl:""};return{source:"none",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:b.connectionNoProxy||"",strictProxy:!1,vercelRelayUrl:""}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1,vercelRelayUrl:""}}}c.d(b,{B:()=>e})},66328:(a,b,c)=>{c.d(b,{F:()=>y});var d=c(15717),e=c(39326),f=c(74926),g=c(40615),h=c(27335),i=c(57034),j=c(4630),k=c(46052),l=c(18129),m=c(92990),n=c(73159),o=c(85485),p=c(13247);let q={claude:{checkExpiry:!0,refreshable:!0},xai:{url:`${n.o.apiBaseUrl}/models`,method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{Accept:"application/json"},acceptStatuses:[403],refreshable:!0},"grok-cli":{url:`${p.Nr}/user`,method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:(0,p.Ab)(""),acceptStatuses:[402],refreshable:!0},muse:{url:"https://api.meta.ai/v1/models",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{Accept:"application/json","User-Agent":"muse-code/1.0.2"},acceptStatuses:[200],refreshable:!0},codex:{url:"https://chatgpt.com/backend-api/codex/responses",method:"POST",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"Content-Type":"application/json",originator:"codex_cli_rs"},body:JSON.stringify({model:"gpt-5.3-codex",input:[],stream:!1,store:!1}),acceptStatuses:[400],refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{Accept:"application/vnd.github+json"}},iflow:{buildUrl:a=>`https://iflow.cn/api/oauth/getUserInfo?accessToken=${encodeURIComponent(a)}`,method:"GET",noAuth:!0},qwen:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0},qoder:{url:"https://openapi.qoder.sh/api/v1/userinfo",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!1},"kimi-coding":{checkExpiry:!0,refreshable:!1},cursor:{tokenExists:!0},kilocode:{url:`${m.MZ.apiBaseUrl}/api/profile`,method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},cline:{refreshable:!0},clinepass:{refreshable:!0},gitlab:{url:"https://gitlab.com/api/v4/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},"codebuddy-cn":{tokenExists:!0},kimchi:{url:m.Td.validationUrl||"https://api.cast.ai/v1/llm/openai/supported-providers",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{Accept:"application/json","User-Agent":"kimchi/0.1.40"},refreshable:!1}};async function r(a,b,c=null){return await w(a,"https://api.cline.bot/api/v1/users/me",{method:"GET",headers:(0,o.w$)(b,{Accept:"application/json"})},c)}let s=JSON.stringify({metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"}});async function t(a,b,c=null){let d=await w(a.provider,"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json"},body:s},c);return d.ok?{valid:!0,error:null}:{valid:!1,error:function(a,b){if(!a)return b;try{let b=JSON.parse(a),c=b?.error?.message||b?.message||b?.error;if("string"==typeof c&&c.trim()){let a=c.trim();if(/not have a valid license/i.test(a))return"License required: No active Gemini Code Assist / Antigravity license found for this Google account. Visit antigravity.google to activate, or reconnect.";if(/invalid_grant|token expired|credentials expired/i.test(a))return"Authentication token expired. Please reconnect.";return a}if(c)return JSON.stringify(c)}catch{}let c=a.trim();return/not have a valid license/i.test(c)?"License required: No active Gemini Code Assist / Antigravity license found for this Google account. Visit antigravity.google to activate, or reconnect.":c||b}(await d.text().catch(()=>""),`API returned ${d.status}`),status:d.status}}async function u(a,b=null){let c=a.provider,d=a.refreshToken;if(!d)return null;try{if("gemini-cli"===c||"antigravity"===c){let a="gemini-cli"===c?m.LT:m.YT,e=await w(c,"https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:a.clientId,client_secret:a.clientSecret,grant_type:"refresh_token",refresh_token:d})},b);if(!e.ok)return null;let f=await e.json();return{accessToken:f.access_token,expiresIn:f.expires_in,refreshToken:f.refresh_token||d}}if("codex"===c||"xai"===c||"grok-cli"===c)return await (0,l.Vq)(c,a,console);if("claude"===c){let a=await w(c,m.OV.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:d,client_id:m.OV.clientId})},b);if(!a.ok)return null;let e=await a.json();return{accessToken:e.access_token,expiresIn:e.expires_in,refreshToken:e.refresh_token||d}}if("kiro"===c){let e=a.providerSpecificData||{},f=e.clientId||a.clientId,g=e.clientSecret||a.clientSecret,h=(0,i.l6)(e.region||a.region);if(f&&g){let a=`https://oidc.${h}.amazonaws.com/token`,e=await w(c,a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:f,clientSecret:g,refreshToken:d,grantType:"refresh_token"})},b);if(!e.ok)return null;let i=await e.json();return{accessToken:i.accessToken,expiresIn:i.expiresIn||3600,refreshToken:i.refreshToken||d}}let j=await w(c,m.Tx.socialRefreshUrl,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"kiro-cli/1.0.0"},body:JSON.stringify({refreshToken:d})},b);if(!j.ok)return null;let k=await j.json();return{accessToken:k.accessToken,expiresIn:k.expiresIn||3600,refreshToken:k.refreshToken||d}}if("qwen"===c){let a=await w(c,m.Hp.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:d,client_id:m.Hp.clientId})},b);if(!a.ok)return null;let e=await a.json();return{accessToken:e.access_token,expiresIn:e.expires_in,refreshToken:e.refresh_token||d}}if("cline"===c||"clinepass"===c){let a=await w(c,m.lB.refreshUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:d,grantType:"refresh_token",clientType:"extension"})},b);if(!a.ok)return null;let e=await a.json(),f=e?.data||e,g=f?.expiresAt?Math.max(1,Math.floor((new Date(f.expiresAt).getTime()-Date.now())/1e3)):3600;return{accessToken:f?.accessToken,expiresIn:g,refreshToken:f?.refreshToken||d}}return null}catch(a){return console.log(`Error refreshing ${c} token:`,a.message),null}}async function v(a,b=null){let c=q[a.provider];if(!c)return{valid:!1,error:"Provider test not supported",refreshed:!1};if(!a.accessToken)return{valid:!1,error:"No access token",refreshed:!1};if(c.tokenExists)return{valid:!0,error:null,refreshed:!1,newTokens:null};let d=a.accessToken,e=!1,f=null,g=(0,l.fp)(a.provider,a);if(c.refreshable&&g&&a.refreshToken){let c=await u(a,b);if(!c)return{valid:!1,error:"Token expired and refresh failed",refreshed:!1};d=c.accessToken,e=!0,f=c}if(c.checkExpiry)return e?{valid:!0,error:null,refreshed:e,newTokens:f}:g?{valid:!1,error:"Token expired",refreshed:!1}:{valid:!0,error:null,refreshed:!1,newTokens:null};if("gemini-cli"===a.provider||"antigravity"===a.provider){let g=await t(a,d,b);if(g.valid)return{valid:!0,error:null,refreshed:e,newTokens:f};if(401===g.status&&c.refreshable&&!e&&a.refreshToken){let c=await u(a,b);if(c?.accessToken){let d=await t(a,c.accessToken,b);return d.valid?{valid:!0,error:null,refreshed:!0,newTokens:c}:{valid:!1,error:d.error,refreshed:!0,newTokens:c}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}return{valid:!1,error:g.error,refreshed:e}}if("cline"===a.provider||"clinepass"===a.provider){let c=async c=>{let d=await r(a.provider,c,b);return d.ok?{valid:!0,error:null,refreshed:e,newTokens:f}:401===d.status?{valid:!1,error:"Token invalid or revoked",refreshed:e}:403===d.status?{valid:!1,error:"Access denied",refreshed:e}:{valid:!1,error:`API returned ${d.status}`,refreshed:e}},g=await c(d);if(g.valid||"Token invalid or revoked"!==g.error||!a.refreshToken)return g;let h=await u(a,b);return h?.accessToken?(e=!0,f=h,d=h.accessToken,await c(d)):{valid:!1,error:"Token invalid or revoked",refreshed:!1}}try{let g=c.buildUrl?c.buildUrl(d):c.url,h=c.noAuth?{...c.extraHeaders}:{[c.authHeader]:`${c.authPrefix}${d}`,...c.extraHeaders},i={method:c.method,headers:h};c.body&&(i.body=c.body);let j=await w(a.provider,g,i,b);if(j.ok||c.acceptStatuses&&c.acceptStatuses.includes(j.status))return{valid:!0,error:null,refreshed:e,newTokens:f};if(401===j.status&&c.refreshable&&!e&&a.refreshToken){let d=await u(a,b);if(d){let e=c.buildUrl?c.buildUrl(d.accessToken):g,f=c.noAuth?{...c.extraHeaders}:{[c.authHeader]:`${c.authPrefix}${d.accessToken}`,...c.extraHeaders},h={method:c.method,headers:f};c.body&&(h.body=c.body);let i=await w(a.provider,e,h,b);if(i.ok||c.acceptStatuses&&c.acceptStatuses.includes(i.status))return{valid:!0,error:null,refreshed:!0,newTokens:d}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}if(401===j.status)return{valid:!1,error:"Token invalid or revoked",refreshed:e};if(403===j.status)return{valid:!1,error:"Access denied",refreshed:e};return{valid:!1,error:`API returned ${j.status}`,refreshed:e}}catch(a){return{valid:!1,error:a.message,refreshed:e}}}async function w(a,b,c={},d=null){let e=j.xq[a],f={...c,identity:e?.identity,provider:a,format:e?.format};return d?.vercelRelayUrl?(0,k.Fm)(b,f,{vercelRelayUrl:d.vercelRelayUrl}):d?.connectionProxyEnabled&&d?.connectionProxyUrl?(0,k.Fm)(b,f,{connectionProxyEnabled:!0,connectionProxyUrl:d.connectionProxyUrl,connectionNoProxy:d.connectionNoProxy||""}):(0,k.Fm)(b,f,d)}async function x(a,b=null){if((0,g.mq)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{let d=await w(a.provider,`${c.replace(/\/$/,"")}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}if((0,g.gb)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{(c=c.replace(/\/$/,"")).endsWith("/messages")&&(c=c.slice(0,-9));let d=c.endsWith("/v1")?`${c}/messages`:`${c}/v1/messages`,e=a.defaultModel||"claude-3-haiku-20240307",f=await w(a.provider,d,{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json",Authorization:`Bearer ${a.apiKey}`},body:JSON.stringify({model:e,max_tokens:1,messages:[{role:"user",content:"test"}]})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}try{switch(a.provider){case"cloudflare-ai":{let c=(a.providerSpecificData||{}).accountId;if(!c)return{valid:!1,error:"Missing Account ID"};let d=`https://api.cloudflare.com/client/v4/accounts/${c}/ai/v1/chat/completions`,e=await w(a.provider,d,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({model:(0,h.fZ)("cloudflare-ai"),messages:[{role:"user",content:"test"}],max_tokens:1})},b),f=401!==e.status&&403!==e.status&&404!==e.status;return{valid:f,error:f?null:"Invalid API token or Account ID"}}case"azure":{let c=a.providerSpecificData||{},d=(c.azureEndpoint||"").replace(/\/$/,""),e=c.deployment||"gpt-4",f=c.apiVersion||"2024-10-01-preview",g=`${d}/openai/deployments/${e}/chat/completions?api-version=${f}`,h={"api-key":a.apiKey,"Content-Type":"application/json"};c.organization&&(h["OpenAI-Organization"]=c.organization);let i=await w(a.provider,g,{method:"POST",headers:h,body:JSON.stringify({messages:[{role:"user",content:"test"}],max_completion_tokens:1})},b),j=401!==i.status&&403!==i.status;return{valid:j,error:j?null:"Invalid API key or Azure configuration"}}case"openai":{let c=await w(a.provider,"https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"vercel-ai-gateway":{let c=await w(a.provider,"https://ai-gateway.vercel.sh/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"anthropic":{let c=await w(a.provider,"https://api.anthropic.com/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"claude-3-haiku-20240307",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"gemini":{let c=await w(a.provider,`https://generativelanguage.googleapis.com/v1/models?key=${a.apiKey}`,{},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"openrouter":{let c=await w(a.provider,"https://openrouter.ai/api/v1/auth/key",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"glm":{let c=await w(a.provider,"https://api.z.ai/api/anthropic/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"glm-cn":{let c=await w(a.provider,"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"minimax":case"minimax-cn":{let c=await w(a.provider,{minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages"}[a.provider],{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"minimax-m2",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"kimi":{let c=await w(a.provider,"https://api.kimi.com/coding/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"kimi-latest",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"alicode":case"alicode-intl":{let c="alicode-intl"===a.provider?"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions":"https://coding.dashscope.aliyuncs.com/v1/chat/completions",d=await w(a.provider,c,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,h.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),e=401!==d.status&&403!==d.status;return{valid:e,error:e?null:"Invalid API key"}}case"volcengine-ark":case"byteplus":{let c=await w(a.provider,j.xq[a.provider]?.baseUrl,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,h.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"deepseek":{let c=await w(a.provider,"https://api.deepseek.com/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"groq":{let c=await w(a.provider,"https://api.groq.com/openai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"mistral":{let c=await w(a.provider,"https://api.mistral.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"xai":{let c=await w(a.provider,"https://api.x.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`,Accept:"application/json"}},b),d=c.ok||403===c.status;return{valid:d,error:d?null:"Invalid API key"}}case"nvidia":{let c=await w(a.provider,"https://integrate.api.nvidia.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"perplexity":{let c=await w(a.provider,"https://api.perplexity.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"together":{let c=await w(a.provider,"https://api.together.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fireworks":{let c=await w(a.provider,"https://api.fireworks.ai/inference/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cerebras":{let c=await w(a.provider,"https://api.cerebras.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cohere":{let c=await w(a.provider,"https://api.cohere.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nebius":{let c=await w(a.provider,"https://api.studio.nebius.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"siliconflow":{let c=await w(a.provider,"https://api.siliconflow.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"hyperbolic":{let c=await w(a.provider,"https://api.hyperbolic.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"ollama":{let c=await w(a.provider,"https://ollama.com/api/tags",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"ollama-local":{let c=(0,j.Ak)(a),d=await w(a.provider,`${c}/api/tags`,{},b);return{valid:d.ok,error:d.ok?null:`Ollama not reachable at ${c}`}}case"deepgram":{let c=await w(a.provider,"https://api.deepgram.com/v1/projects",{headers:{Authorization:`Token ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"assemblyai":{let c=await w(a.provider,"https://api.assemblyai.com/v1/account",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nanobanana":{let c=await w(a.provider,"https://api.nanobananaapi.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fal-ai":{let c=await w(a.provider,"https://api.fal.ai/v1/models?limit=1",{headers:{Authorization:`Key ${a.apiKey}`}},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"chutes":{let c=await w(a.provider,"https://llm.chutes.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"grok-web":{let c=a.apiKey.startsWith("sso=")?a.apiKey.slice(4):a.apiKey,d=a=>Array.from(crypto.getRandomValues(new Uint8Array(a)),a=>a.toString(16).padStart(2,"0")).join(""),e=Buffer.from("e:TypeError: Cannot read properties of null (reading 'children')").toString("base64"),f=await w(a.provider,"https://grok.com/rest/app-chat/conversations/new",{method:"POST",headers:{Accept:"*/*","Content-Type":"application/json",Cookie:`sso=${c}`,Origin:"https://grok.com",Referer:"https://grok.com/","x-statsig-id":e,"x-xai-request-id":crypto.randomUUID(),traceparent:`00-${d(16)}-${d(8)}-00`},body:JSON.stringify({temporary:!0,modelName:"grok-4",message:"ping",fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!1,sendFinalMetadata:!0})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid SSO cookie"}}case"perplexity-web":{let c=a.apiKey;c.startsWith("__Secure-next-auth.session-token=")&&(c=c.slice(33));let d=await w(a.provider,"https://www.perplexity.ai/api/auth/session",{method:"GET",headers:{Cookie:`__Secure-next-auth.session-token=${c}`}},b);if(!d.ok)return{valid:!1,error:"Invalid session cookie"};let e=await d.json().catch(()=>null),f=!!(e&&e.user);return{valid:f,error:f?null:"Session expired — re-paste cookie"}}case"opencode-go":{let c=await w(a.provider,"https://opencode.ai/zen/go/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a.apiKey}`,"x-opencode-session":crypto.randomUUID()},body:JSON.stringify({model:(0,h.fZ)("opencode-go"),messages:[{role:"user",content:"ping"}],max_tokens:1,stream:!1})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"xiaomi-mimo":case"xiaomi-tokenplan":{let c=await w(a.provider,`${{"xiaomi-mimo":"https://api.xiaomimimo.com/v1","xiaomi-tokenplan":"https://token-plan-sgp.xiaomimimo.com/v1"}[a.provider]}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"blackbox":{let c=j.xq.blackbox?.baseUrl?.replace(/\/chat\/completions$/,"")||"https://api.blackbox.ai/v1",d=await w(a.provider,`${c}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key"}}case"clinepass":{let c=await w(a.provider,"https://api.cline.bot/api/v1/models",{headers:{Accept:"application/json",Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"commandcode":{let c=await w(a.provider,"https://api.commandcode.ai/provider/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`,"x-command-code-version":"0.25.7","x-cli-environment":"cli"}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}default:return{valid:!1,error:"Provider test not supported"}}}catch(a){return{valid:!1,error:a.message}}}async function y(a){let b,c=await (0,d.Mc)(a);if(!c)return{valid:!1,error:"Connection not found",latencyMs:0,testedAt:new Date().toISOString()};let h={...c,provider:(0,g.rs)(c.provider)},i=await (0,e.B)(c.providerSpecificData||{});if(i.connectionProxyEnabled&&i.connectionProxyUrl&&!i.vercelRelayUrl){let b=await (0,f.C)({proxyUrl:i.connectionProxyUrl});if(!b.ok){let c=b.error||`Proxy test failed with status ${b.status}`;return await (0,d.updateProviderConnection)(a,{testStatus:"error",lastError:c,lastErrorAt:new Date().toISOString()}),{valid:!1,error:c,latencyMs:0,testedAt:new Date().toISOString()}}}let j=Date.now();b="apikey"===c.authType||"cookie"===c.authType?await x(h,i):await v(h,i);let k=Date.now()-j,l={testStatus:b.valid?"active":"error",lastError:b.valid?null:b.error,lastErrorAt:b.valid?null:new Date().toISOString()};return b.refreshed&&b.newTokens&&(b.newTokens.accessToken&&(l.accessToken=b.newTokens.accessToken),b.newTokens.refreshToken&&(l.refreshToken=b.newTokens.refreshToken),b.newTokens.idToken&&(l.idToken=b.newTokens.idToken),b.newTokens.lastRefreshAt&&(l.lastRefreshAt=b.newTokens.lastRefreshAt),b.newTokens.expiresIn&&(l.expiresIn=b.newTokens.expiresIn),b.newTokens.expiresIn?l.expiresAt=new Date(Date.now()+1e3*b.newTokens.expiresIn).toISOString():b.newTokens.expiresAt&&(l.expiresAt=b.newTokens.expiresAt),b.newTokens.providerSpecificData&&(l.providerSpecificData={...c.providerSpecificData||{},...b.newTokens.providerSpecificData})),await (0,d.updateProviderConnection)(a,l),{valid:b.valid,error:b.error,refreshed:!!b.refreshed,latencyMs:k,testedAt:new Date().toISOString()}}},73159:(a,b,c)=>{c.d(b,{U:()=>l,o:()=>m});var d=c(45350),e=c(35570);let f=d.xq.xai?.clientId,g="https://auth.x.ai",h="/oauth2/authorize",i="/oauth2/token",j="/.well-known/openid-configuration",k="/callback",l=96,m={clientId:f,issuer:g,authEndpointPath:h,tokenEndpointPath:i,discoveryPath:j,authorizeUrl:`${g}${h}`,tokenUrl:`${g}${i}`,discoveryUrl:`${g}${j}`,scope:"openid profile email offline_access grok-cli:access api:access",apiBaseUrl:"https://api.x.ai/v1",redirectUri:`http://127.0.0.1:56121${k}`,loopbackPort:56121,callbackPath:k,pkceVerifierBytes:96,refreshLeadSeconds:300,userAgent:(0,e.dV)("grok-cli")?.userAgent||"grok-cli/1.0.0",codeChallengeMethod:"S256"}},74926:(a,b,c)=>{c.d(b,{C:()=>f});var d=c(47774);function e(a){return null==a?"":String(a).trim()}async function f({proxyUrl:a,testUrl:b,timeoutMs:c}={}){let g,h=e(a);if(!h)return{ok:!1,status:400,error:"proxyUrl is required"};let i=e(b)||"https://google.com/",j=Number(c),k=Number.isFinite(j)&&j>0?Math.min(j,3e4):8e3;try{try{g=new d.ProxyAgent({uri:h})}catch(a){return{ok:!1,status:400,error:`Invalid proxy URL: ${a?.message||String(a)}`}}let a=new AbortController,b=Date.now(),c=setTimeout(()=>a.abort(),k);try{let c=await (0,d.hd)(i,{method:"HEAD",dispatcher:g,signal:a.signal});return{ok:c.ok,status:c.status,statusText:c.statusText,url:i,elapsedMs:Date.now()-b}}catch(b){let a=b?.name==="AbortError"?"Proxy test timed out":function(a){if(!a)return"Unknown error";let b=a?.message||String(a),c=a?.cause?.code||a?.code,d=a?.cause?.message;return d&&d!==b?c?`${b}: ${d} (${c})`:`${b}: ${d}`:c&&!b.includes(c)?`${b} (${c})`:b}(b);return{ok:!1,status:500,error:a}}finally{clearTimeout(c)}}finally{try{await g?.close?.()}catch{}}}},85485:(a,b,c)=>{c.d(b,{w$:()=>e});var d=c(39211);function e(a,b={}){let c,f=(c=function(a){if("string"!=typeof a)return"";let b=a.trim();return b?b.startsWith("workos:")?b:`workos:${b}`:""}(a))?`Bearer ${c}`:"",{headers:g}=(0,d.fX)({...f?{Authorization:f}:{},...b},{identity:"cline"});return g}},92990:(a,b,c)=>{c.d(b,{DI:()=>i,Hp:()=>k,LT:()=>j,MZ:()=>v,Nl:()=>z,Nu:()=>p,OV:()=>h,S6:()=>s,Td:()=>A,Tx:()=>q,WN:()=>t,Ww:()=>D,YT:()=>n,ZL:()=>m,cD:()=>o,f7:()=>y,hF:()=>l,lB:()=>w,qp:()=>B,sA:()=>C,t:()=>u,w1:()=>x});var d=c(21820),e=c(92675),f=c(45350);function g(){let a=(0,d.platform)(),b=(0,d.arch)();return"darwin"===a?"arm64"===b?2:1:"linux"===a?"arm64"===b?4:3:5*("win32"===a)}let h={...f.sr.claude},i={...f.sr.codex},j={...e.w3,...f.sr["gemini-cli"]},k={...f.sr.qwen},l={...f.sr.qoder},m={...f.sr.iflow},n={...e.XP,...f.sr.antigravity,loadCodeAssistClientMetadata:JSON.stringify({ideType:9,platform:g(),pluginType:2})};function o(){return{ideType:9,platform:g(),pluginType:2}}({...f.sr.openai});let p={...f.sr.github},q={...f.sr.kiro},r=/^[a-z]{2}(?:-[a-z0-9]+)+-\d{1,2}$/;function s(a){if("string"!=typeof a||!r.test(a))throw Error("Invalid region");return a}let t={...f.sr.cursor,tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"}},u={...f.sr["kimi-coding"],clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||f.xq["kimi-coding"]?.clientId},v={...f.sr.kilocode},w={...f.sr.cline},x={...f.sr.clinepass},y={...f.sr.gitlab},z={...f.sr["codebuddy-cn"]},A={...f.sr.kimchi},B={...f.sr["grok-cli"]},C={...f.sr.muse},D=3e5}};
|
|
1
|
+
"use strict";exports.id=6328,exports.ids=[6328],exports.modules={4630:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(45350);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},7866:(a,b,c)=>{c.d(b,{w$:()=>e});var d=c(39211);function e(a,b={}){let c,f=(c=function(a){if("string"!=typeof a)return"";let b=a.trim();return b?b.startsWith("workos:")?b:`workos:${b}`:""}(a))?`Bearer ${c}`:"",{headers:g}=(0,d.fX)({...f?{Authorization:f}:{},...b},{identity:"cline"});return g}},39326:(a,b,c)=>{function d(a){return null==a?"":String(a).trim()}async function e(a={}){try{let b=function(a={}){let b=a?.connectionProxyEnabled===!0,c=d(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:d(a?.connectionNoProxy)}}(a);if(b.connectionProxyEnabled&&b.connectionProxyUrl)return{source:"legacy",proxyPoolId:null,proxyPool:null,...b,strictProxy:!1,vercelRelayUrl:""};return{source:"none",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:b.connectionNoProxy||"",strictProxy:!1,vercelRelayUrl:""}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1,vercelRelayUrl:""}}}c.d(b,{B:()=>e})},66328:(a,b,c)=>{c.d(b,{F:()=>y});var d=c(59353),e=c(39326),f=c(74926),g=c(40615),h=c(27335),i=c(57034),j=c(4630),k=c(46052),l=c(18129),m=c(92990),n=c(73159),o=c(7866),p=c(13247);let q={claude:{checkExpiry:!0,refreshable:!0},xai:{url:`${n.o.apiBaseUrl}/models`,method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{Accept:"application/json"},acceptStatuses:[403],refreshable:!0},"grok-cli":{url:`${p.Nr}/user`,method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:(0,p.Ab)(""),acceptStatuses:[402],refreshable:!0},muse:{url:"https://api.meta.ai/v1/models",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{Accept:"application/json","User-Agent":"muse-code/1.0.2"},acceptStatuses:[200],refreshable:!0},codex:{url:"https://chatgpt.com/backend-api/codex/responses",method:"POST",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"Content-Type":"application/json",originator:"codex_cli_rs"},body:JSON.stringify({model:"gpt-5.3-codex",input:[],stream:!1,store:!1}),acceptStatuses:[400],refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{Accept:"application/vnd.github+json"}},iflow:{buildUrl:a=>`https://iflow.cn/api/oauth/getUserInfo?accessToken=${encodeURIComponent(a)}`,method:"GET",noAuth:!0},qwen:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0},qoder:{url:"https://openapi.qoder.sh/api/v1/userinfo",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!1},"kimi-coding":{checkExpiry:!0,refreshable:!1},cursor:{tokenExists:!0},kilocode:{url:`${m.MZ.apiBaseUrl}/api/profile`,method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},cline:{refreshable:!0},clinepass:{refreshable:!0},gitlab:{url:"https://gitlab.com/api/v4/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},"codebuddy-cn":{tokenExists:!0},kimchi:{url:m.Td.validationUrl||"https://api.cast.ai/v1/llm/openai/supported-providers",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{Accept:"application/json","User-Agent":"kimchi/0.1.40"},refreshable:!1}};async function r(a,b,c=null){return await w(a,"https://api.cline.bot/api/v1/users/me",{method:"GET",headers:(0,o.w$)(b,{Accept:"application/json"})},c)}let s=JSON.stringify({metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"}});async function t(a,b,c=null){let d=await w(a.provider,"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json"},body:s},c);return d.ok?{valid:!0,error:null}:{valid:!1,error:function(a,b){if(!a)return b;try{let b=JSON.parse(a),c=b?.error?.message||b?.message||b?.error;if("string"==typeof c&&c.trim()){let a=c.trim();if(/not have a valid license/i.test(a))return"License required: No active Gemini Code Assist / Antigravity license found for this Google account. Visit antigravity.google to activate, or reconnect.";if(/invalid_grant|token expired|credentials expired/i.test(a))return"Authentication token expired. Please reconnect.";return a}if(c)return JSON.stringify(c)}catch{}let c=a.trim();return/not have a valid license/i.test(c)?"License required: No active Gemini Code Assist / Antigravity license found for this Google account. Visit antigravity.google to activate, or reconnect.":c||b}(await d.text().catch(()=>""),`API returned ${d.status}`),status:d.status}}async function u(a,b=null){let c=a.provider,d=a.refreshToken;if(!d)return null;try{if("gemini-cli"===c||"antigravity"===c){let a="gemini-cli"===c?m.LT:m.YT,e=await w(c,"https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:a.clientId,client_secret:a.clientSecret,grant_type:"refresh_token",refresh_token:d})},b);if(!e.ok)return null;let f=await e.json();return{accessToken:f.access_token,expiresIn:f.expires_in,refreshToken:f.refresh_token||d}}if("codex"===c||"xai"===c||"grok-cli"===c)return await (0,l.Vq)(c,a,console);if("claude"===c){let a=await w(c,m.OV.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:d,client_id:m.OV.clientId})},b);if(!a.ok)return null;let e=await a.json();return{accessToken:e.access_token,expiresIn:e.expires_in,refreshToken:e.refresh_token||d}}if("kiro"===c){let e=a.providerSpecificData||{},f=e.clientId||a.clientId,g=e.clientSecret||a.clientSecret,h=(0,i.l6)(e.region||a.region);if(f&&g){let a=`https://oidc.${h}.amazonaws.com/token`,e=await w(c,a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:f,clientSecret:g,refreshToken:d,grantType:"refresh_token"})},b);if(!e.ok)return null;let i=await e.json();return{accessToken:i.accessToken,expiresIn:i.expiresIn||3600,refreshToken:i.refreshToken||d}}let j=await w(c,m.Tx.socialRefreshUrl,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"kiro-cli/1.0.0"},body:JSON.stringify({refreshToken:d})},b);if(!j.ok)return null;let k=await j.json();return{accessToken:k.accessToken,expiresIn:k.expiresIn||3600,refreshToken:k.refreshToken||d}}if("qwen"===c){let a=await w(c,m.Hp.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:d,client_id:m.Hp.clientId})},b);if(!a.ok)return null;let e=await a.json();return{accessToken:e.access_token,expiresIn:e.expires_in,refreshToken:e.refresh_token||d}}if("cline"===c||"clinepass"===c){let a=await w(c,m.lB.refreshUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:d,grantType:"refresh_token",clientType:"extension"})},b);if(!a.ok)return null;let e=await a.json(),f=e?.data||e,g=f?.expiresAt?Math.max(1,Math.floor((new Date(f.expiresAt).getTime()-Date.now())/1e3)):3600;return{accessToken:f?.accessToken,expiresIn:g,refreshToken:f?.refreshToken||d}}return null}catch(a){return console.log(`Error refreshing ${c} token:`,a.message),null}}async function v(a,b=null){let c=q[a.provider];if(!c)return{valid:!1,error:"Provider test not supported",refreshed:!1};if(!a.accessToken)return{valid:!1,error:"No access token",refreshed:!1};if(c.tokenExists)return{valid:!0,error:null,refreshed:!1,newTokens:null};let d=a.accessToken,e=!1,f=null,g=(0,l.fp)(a.provider,a);if(c.refreshable&&g&&a.refreshToken){let c=await u(a,b);if(!c)return{valid:!1,error:"Token expired and refresh failed",refreshed:!1};d=c.accessToken,e=!0,f=c}if(c.checkExpiry)return e?{valid:!0,error:null,refreshed:e,newTokens:f}:g?{valid:!1,error:"Token expired",refreshed:!1}:{valid:!0,error:null,refreshed:!1,newTokens:null};if("gemini-cli"===a.provider||"antigravity"===a.provider){let g=await t(a,d,b);if(g.valid)return{valid:!0,error:null,refreshed:e,newTokens:f};if(401===g.status&&c.refreshable&&!e&&a.refreshToken){let c=await u(a,b);if(c?.accessToken){let d=await t(a,c.accessToken,b);return d.valid?{valid:!0,error:null,refreshed:!0,newTokens:c}:{valid:!1,error:d.error,refreshed:!0,newTokens:c}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}return{valid:!1,error:g.error,refreshed:e}}if("cline"===a.provider||"clinepass"===a.provider){let c=async c=>{let d=await r(a.provider,c,b);return d.ok?{valid:!0,error:null,refreshed:e,newTokens:f}:401===d.status?{valid:!1,error:"Token invalid or revoked",refreshed:e}:403===d.status?{valid:!1,error:"Access denied",refreshed:e}:{valid:!1,error:`API returned ${d.status}`,refreshed:e}},g=await c(d);if(g.valid||"Token invalid or revoked"!==g.error||!a.refreshToken)return g;let h=await u(a,b);return h?.accessToken?(e=!0,f=h,d=h.accessToken,await c(d)):{valid:!1,error:"Token invalid or revoked",refreshed:!1}}try{let g=c.buildUrl?c.buildUrl(d):c.url,h=c.noAuth?{...c.extraHeaders}:{[c.authHeader]:`${c.authPrefix}${d}`,...c.extraHeaders},i={method:c.method,headers:h};c.body&&(i.body=c.body);let j=await w(a.provider,g,i,b);if(j.ok||c.acceptStatuses&&c.acceptStatuses.includes(j.status))return{valid:!0,error:null,refreshed:e,newTokens:f};if(401===j.status&&c.refreshable&&!e&&a.refreshToken){let d=await u(a,b);if(d){let e=c.buildUrl?c.buildUrl(d.accessToken):g,f=c.noAuth?{...c.extraHeaders}:{[c.authHeader]:`${c.authPrefix}${d.accessToken}`,...c.extraHeaders},h={method:c.method,headers:f};c.body&&(h.body=c.body);let i=await w(a.provider,e,h,b);if(i.ok||c.acceptStatuses&&c.acceptStatuses.includes(i.status))return{valid:!0,error:null,refreshed:!0,newTokens:d}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}if(401===j.status)return{valid:!1,error:"Token invalid or revoked",refreshed:e};if(403===j.status)return{valid:!1,error:"Access denied",refreshed:e};return{valid:!1,error:`API returned ${j.status}`,refreshed:e}}catch(a){return{valid:!1,error:a.message,refreshed:e}}}async function w(a,b,c={},d=null){let e=j.xq[a],f={...c,identity:e?.identity,provider:a,format:e?.format};return d?.vercelRelayUrl?(0,k.Fm)(b,f,{vercelRelayUrl:d.vercelRelayUrl}):d?.connectionProxyEnabled&&d?.connectionProxyUrl?(0,k.Fm)(b,f,{connectionProxyEnabled:!0,connectionProxyUrl:d.connectionProxyUrl,connectionNoProxy:d.connectionNoProxy||""}):(0,k.Fm)(b,f,d)}async function x(a,b=null){if((0,g.mq)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{let d=await w(a.provider,`${c.replace(/\/$/,"")}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}if((0,g.gb)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{(c=c.replace(/\/$/,"")).endsWith("/messages")&&(c=c.slice(0,-9));let d=c.endsWith("/v1")?`${c}/messages`:`${c}/v1/messages`,e=a.defaultModel||"claude-3-haiku-20240307",f=await w(a.provider,d,{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json",Authorization:`Bearer ${a.apiKey}`},body:JSON.stringify({model:e,max_tokens:1,messages:[{role:"user",content:"test"}]})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}try{switch(a.provider){case"cloudflare-ai":{let c=(a.providerSpecificData||{}).accountId;if(!c)return{valid:!1,error:"Missing Account ID"};let d=`https://api.cloudflare.com/client/v4/accounts/${c}/ai/v1/chat/completions`,e=await w(a.provider,d,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({model:(0,h.fZ)("cloudflare-ai"),messages:[{role:"user",content:"test"}],max_tokens:1})},b),f=401!==e.status&&403!==e.status&&404!==e.status;return{valid:f,error:f?null:"Invalid API token or Account ID"}}case"azure":{let c=a.providerSpecificData||{},d=(c.azureEndpoint||"").replace(/\/$/,""),e=c.deployment||"gpt-4",f=c.apiVersion||"2024-10-01-preview",g=`${d}/openai/deployments/${e}/chat/completions?api-version=${f}`,h={"api-key":a.apiKey,"Content-Type":"application/json"};c.organization&&(h["OpenAI-Organization"]=c.organization);let i=await w(a.provider,g,{method:"POST",headers:h,body:JSON.stringify({messages:[{role:"user",content:"test"}],max_completion_tokens:1})},b),j=401!==i.status&&403!==i.status;return{valid:j,error:j?null:"Invalid API key or Azure configuration"}}case"openai":{let c=await w(a.provider,"https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"vercel-ai-gateway":{let c=await w(a.provider,"https://ai-gateway.vercel.sh/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"anthropic":{let c=await w(a.provider,"https://api.anthropic.com/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"claude-3-haiku-20240307",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"gemini":{let c=await w(a.provider,`https://generativelanguage.googleapis.com/v1/models?key=${a.apiKey}`,{},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"openrouter":{let c=await w(a.provider,"https://openrouter.ai/api/v1/auth/key",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"glm":{let c=await w(a.provider,"https://api.z.ai/api/anthropic/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"glm-cn":{let c=await w(a.provider,"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"minimax":case"minimax-cn":{let c=await w(a.provider,{minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages"}[a.provider],{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"minimax-m2",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"kimi":{let c=await w(a.provider,"https://api.kimi.com/coding/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"kimi-latest",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"alicode":case"alicode-intl":{let c="alicode-intl"===a.provider?"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions":"https://coding.dashscope.aliyuncs.com/v1/chat/completions",d=await w(a.provider,c,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,h.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),e=401!==d.status&&403!==d.status;return{valid:e,error:e?null:"Invalid API key"}}case"volcengine-ark":case"byteplus":{let c=await w(a.provider,j.xq[a.provider]?.baseUrl,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,h.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"deepseek":{let c=await w(a.provider,"https://api.deepseek.com/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"groq":{let c=await w(a.provider,"https://api.groq.com/openai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"mistral":{let c=await w(a.provider,"https://api.mistral.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"xai":{let c=await w(a.provider,"https://api.x.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`,Accept:"application/json"}},b),d=c.ok||403===c.status;return{valid:d,error:d?null:"Invalid API key"}}case"nvidia":{let c=await w(a.provider,"https://integrate.api.nvidia.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"perplexity":{let c=await w(a.provider,"https://api.perplexity.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"together":{let c=await w(a.provider,"https://api.together.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fireworks":{let c=await w(a.provider,"https://api.fireworks.ai/inference/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cerebras":{let c=await w(a.provider,"https://api.cerebras.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cohere":{let c=await w(a.provider,"https://api.cohere.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nebius":{let c=await w(a.provider,"https://api.studio.nebius.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"siliconflow":{let c=await w(a.provider,"https://api.siliconflow.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"hyperbolic":{let c=await w(a.provider,"https://api.hyperbolic.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"ollama":{let c=await w(a.provider,"https://ollama.com/api/tags",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"ollama-local":{let c=(0,j.Ak)(a),d=await w(a.provider,`${c}/api/tags`,{},b);return{valid:d.ok,error:d.ok?null:`Ollama not reachable at ${c}`}}case"deepgram":{let c=await w(a.provider,"https://api.deepgram.com/v1/projects",{headers:{Authorization:`Token ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"assemblyai":{let c=await w(a.provider,"https://api.assemblyai.com/v1/account",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nanobanana":{let c=await w(a.provider,"https://api.nanobananaapi.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fal-ai":{let c=await w(a.provider,"https://api.fal.ai/v1/models?limit=1",{headers:{Authorization:`Key ${a.apiKey}`}},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"chutes":{let c=await w(a.provider,"https://llm.chutes.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"grok-web":{let c=a.apiKey.startsWith("sso=")?a.apiKey.slice(4):a.apiKey,d=a=>Array.from(crypto.getRandomValues(new Uint8Array(a)),a=>a.toString(16).padStart(2,"0")).join(""),e=Buffer.from("e:TypeError: Cannot read properties of null (reading 'children')").toString("base64"),f=await w(a.provider,"https://grok.com/rest/app-chat/conversations/new",{method:"POST",headers:{Accept:"*/*","Content-Type":"application/json",Cookie:`sso=${c}`,Origin:"https://grok.com",Referer:"https://grok.com/","x-statsig-id":e,"x-xai-request-id":crypto.randomUUID(),traceparent:`00-${d(16)}-${d(8)}-00`},body:JSON.stringify({temporary:!0,modelName:"grok-4",message:"ping",fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!1,sendFinalMetadata:!0})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid SSO cookie"}}case"perplexity-web":{let c=a.apiKey;c.startsWith("__Secure-next-auth.session-token=")&&(c=c.slice(33));let d=await w(a.provider,"https://www.perplexity.ai/api/auth/session",{method:"GET",headers:{Cookie:`__Secure-next-auth.session-token=${c}`}},b);if(!d.ok)return{valid:!1,error:"Invalid session cookie"};let e=await d.json().catch(()=>null),f=!!(e&&e.user);return{valid:f,error:f?null:"Session expired — re-paste cookie"}}case"opencode-go":{let c=await w(a.provider,"https://opencode.ai/zen/go/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a.apiKey}`,"x-opencode-session":crypto.randomUUID()},body:JSON.stringify({model:(0,h.fZ)("opencode-go"),messages:[{role:"user",content:"ping"}],max_tokens:1,stream:!1})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"xiaomi-mimo":case"xiaomi-tokenplan":{let c=await w(a.provider,`${{"xiaomi-mimo":"https://api.xiaomimimo.com/v1","xiaomi-tokenplan":"https://token-plan-sgp.xiaomimimo.com/v1"}[a.provider]}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"blackbox":{let c=j.xq.blackbox?.baseUrl?.replace(/\/chat\/completions$/,"")||"https://api.blackbox.ai/v1",d=await w(a.provider,`${c}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key"}}case"clinepass":{let c=await w(a.provider,"https://api.cline.bot/api/v1/models",{headers:{Accept:"application/json",Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"commandcode":{let c=await w(a.provider,"https://api.commandcode.ai/provider/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`,"x-command-code-version":"0.25.7","x-cli-environment":"cli"}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}default:return{valid:!1,error:"Provider test not supported"}}}catch(a){return{valid:!1,error:a.message}}}async function y(a){let b,c=await (0,d.Mc)(a);if(!c)return{valid:!1,error:"Connection not found",latencyMs:0,testedAt:new Date().toISOString()};let h={...c,provider:(0,g.rs)(c.provider)},i=await (0,e.B)(c.providerSpecificData||{});if(i.connectionProxyEnabled&&i.connectionProxyUrl&&!i.vercelRelayUrl){let b=await (0,f.C)({proxyUrl:i.connectionProxyUrl});if(!b.ok){let c=b.error||`Proxy test failed with status ${b.status}`;return await (0,d.updateProviderConnection)(a,{testStatus:"error",lastError:c,lastErrorAt:new Date().toISOString()}),{valid:!1,error:c,latencyMs:0,testedAt:new Date().toISOString()}}}let j=Date.now();b="apikey"===c.authType||"cookie"===c.authType?await x(h,i):await v(h,i);let k=Date.now()-j,l={testStatus:b.valid?"active":"error",lastError:b.valid?null:b.error,lastErrorAt:b.valid?null:new Date().toISOString()};return b.refreshed&&b.newTokens&&(b.newTokens.accessToken&&(l.accessToken=b.newTokens.accessToken),b.newTokens.refreshToken&&(l.refreshToken=b.newTokens.refreshToken),b.newTokens.idToken&&(l.idToken=b.newTokens.idToken),b.newTokens.lastRefreshAt&&(l.lastRefreshAt=b.newTokens.lastRefreshAt),b.newTokens.expiresIn&&(l.expiresIn=b.newTokens.expiresIn),b.newTokens.expiresIn?l.expiresAt=new Date(Date.now()+1e3*b.newTokens.expiresIn).toISOString():b.newTokens.expiresAt&&(l.expiresAt=b.newTokens.expiresAt),b.newTokens.providerSpecificData&&(l.providerSpecificData={...c.providerSpecificData||{},...b.newTokens.providerSpecificData})),await (0,d.updateProviderConnection)(a,l),{valid:b.valid,error:b.error,refreshed:!!b.refreshed,latencyMs:k,testedAt:new Date().toISOString()}}},73159:(a,b,c)=>{c.d(b,{U:()=>l,o:()=>m});var d=c(45350),e=c(35570);let f=d.xq.xai?.clientId,g="https://auth.x.ai",h="/oauth2/authorize",i="/oauth2/token",j="/.well-known/openid-configuration",k="/callback",l=96,m={clientId:f,issuer:g,authEndpointPath:h,tokenEndpointPath:i,discoveryPath:j,authorizeUrl:`${g}${h}`,tokenUrl:`${g}${i}`,discoveryUrl:`${g}${j}`,scope:"openid profile email offline_access grok-cli:access api:access",apiBaseUrl:"https://api.x.ai/v1",redirectUri:`http://127.0.0.1:56121${k}`,loopbackPort:56121,callbackPath:k,pkceVerifierBytes:96,refreshLeadSeconds:300,userAgent:(0,e.dV)("grok-cli")?.userAgent||"grok-cli/1.0.0",codeChallengeMethod:"S256"}},74926:(a,b,c)=>{c.d(b,{C:()=>f});var d=c(47774);function e(a){return null==a?"":String(a).trim()}async function f({proxyUrl:a,testUrl:b,timeoutMs:c}={}){let g,h=e(a);if(!h)return{ok:!1,status:400,error:"proxyUrl is required"};let i=e(b)||"https://google.com/",j=Number(c),k=Number.isFinite(j)&&j>0?Math.min(j,3e4):8e3;try{try{g=new d.ProxyAgent({uri:h})}catch(a){return{ok:!1,status:400,error:`Invalid proxy URL: ${a?.message||String(a)}`}}let a=new AbortController,b=Date.now(),c=setTimeout(()=>a.abort(),k);try{let c=await (0,d.hd)(i,{method:"HEAD",dispatcher:g,signal:a.signal});return{ok:c.ok,status:c.status,statusText:c.statusText,url:i,elapsedMs:Date.now()-b}}catch(b){let a=b?.name==="AbortError"?"Proxy test timed out":function(a){if(!a)return"Unknown error";let b=a?.message||String(a),c=a?.cause?.code||a?.code,d=a?.cause?.message;return d&&d!==b?c?`${b}: ${d} (${c})`:`${b}: ${d}`:c&&!b.includes(c)?`${b} (${c})`:b}(b);return{ok:!1,status:500,error:a}}finally{clearTimeout(c)}}finally{try{await g?.close?.()}catch{}}}},92990:(a,b,c)=>{c.d(b,{DI:()=>i,Hp:()=>k,LT:()=>j,MZ:()=>v,Nl:()=>z,Nu:()=>p,OV:()=>h,S6:()=>s,Td:()=>A,Tx:()=>q,WN:()=>t,Ww:()=>D,YT:()=>n,ZL:()=>m,cD:()=>o,f7:()=>y,hF:()=>l,lB:()=>w,qp:()=>B,sA:()=>C,t:()=>u,w1:()=>x});var d=c(21820),e=c(92675),f=c(45350);function g(){let a=(0,d.platform)(),b=(0,d.arch)();return"darwin"===a?"arm64"===b?2:1:"linux"===a?"arm64"===b?4:3:5*("win32"===a)}let h={...f.sr.claude},i={...f.sr.codex},j={...e.w3,...f.sr["gemini-cli"]},k={...f.sr.qwen},l={...f.sr.qoder},m={...f.sr.iflow},n={...e.XP,...f.sr.antigravity,loadCodeAssistClientMetadata:JSON.stringify({ideType:9,platform:g(),pluginType:2})};function o(){return{ideType:9,platform:g(),pluginType:2}}({...f.sr.openai});let p={...f.sr.github},q={...f.sr.kiro},r=/^[a-z]{2}(?:-[a-z0-9]+)+-\d{1,2}$/;function s(a){if("string"!=typeof a||!r.test(a))throw Error("Invalid region");return a}let t={...f.sr.cursor,tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"}},u={...f.sr["kimi-coding"],clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||f.xq["kimi-coding"]?.clientId},v={...f.sr.kilocode},w={...f.sr.cline},x={...f.sr.clinepass},y={...f.sr.gitlab},z={...f.sr["codebuddy-cn"]},A={...f.sr.kimchi},B={...f.sr["grok-cli"]},C={...f.sr.muse},D=3e5}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=7059,exports.ids=[7059],exports.modules={19978:(a,b,c)=>{c.d(b,{C5:()=>m,Hr:()=>l,PO:()=>h,Y3:()=>k,s1:()=>j,vX:()=>i});let d=new Map,e=null;function f(a=Date.now()){for(let[b,c]of d)c.expiresAt<=a&&d.delete(b);for(;d.size>500;){let a=d.keys().next().value;if(void 0===a)break;d.delete(a)}}function g(){e||(e=setInterval(()=>f(),3e4),e.unref?.())}async function h(a,b,c=15e3){g();let e=d.get(a);if(e&&e.expiresAt>Date.now())return e.value;e&&d.delete(a);let i=await b();return d.set(a,{value:i,expiresAt:Date.now()+c}),f(),i}function i(a){let b=d.get(a);if(b&&b.expiresAt>Date.now())return b.value;b&&d.delete(a)}function j(a,b,c=15e3){g(),d.set(a,{value:b,expiresAt:Date.now()+c}),f()}function k(a){if(!a)return void d.clear();for(let b of d.keys())b.startsWith(a)&&d.delete(b)}function l(a,b){return`stats:${a}:${b}`}function m(a){return`learning:${a}`}},85432:(a,b,c)=>{c.d(b,{Kt:()=>m,MH:()=>l,vA:()=>k});var d=c(59353),e=c(19978),f=c(94454),g=c(29696);let h="compatible-reasoning:snapshot";async function i(){let a="function"==typeof d.Fh?(0,d.Fh)({type:"openai-compatible"}):Promise.resolve([]),b="function"==typeof d.uv?(0,d.uv)():Promise.resolve([]),[c,e]=await Promise.all([Promise.resolve(a).catch(()=>[]),Promise.resolve(b).catch(()=>[])]),f=new Map,h=new Map;for(let a of c){if(!a?.id||!a?.prefix)continue;let b={id:a.id,apiType:"responses"===a.apiType?"responses":"chat",staticFormat:(0,g.ml)(a.baseUrl)};f.set(a.id,b),h.set(a.prefix,b)}let i=new Map;for(let a of e){if(!a?.providerAlias||!a?.id||"llm"!==(a.type||"llm"))continue;let b=h.get(a.providerAlias);b&&(0,g.K5)(a.reasoning)&&i.set(`${b.id}|${a.id}`,a.reasoning)}return{nodesById:f,prefixToNode:h,byModel:i}}let j={nodesById:new Map,prefixToNode:new Map,byModel:new Map};async function k(a=15e3){try{let b=await (0,e.PO)(h,i,a);b&&(j=b)}catch{}}function l(){(0,e.Y3)(h)}function m(a,b){let c=j.prefixToNode.get(a);if(!c)return null;let d=j.byModel.get(`${c.id}|${b}`);return d||("none"===c.staticFormat?{supported:!1,effort:null}:c.staticFormat?{supported:!0,effort:"qwen"===c.staticFormat?null:c.staticFormat}:null)}(0,f.xl)(function(a,b){var c,d,e,f;if(!a||!a.startsWith("openai-compatible-"))return null;let g=j.nodesById.get(a),h=j.byModel.get(`${a}|${b}`);return h?(c=h,d=g?.apiType||"chat",c.supported?"responses"===d?"openai-responses":"nested"===c.effort?"openai-nested":"openai":"none"):g?.staticFormat?(e=g.staticFormat,f=g.apiType,"none"===e?"none":"qwen"===e?"qwen":"responses"===f?"openai-responses":"nested"===e?"openai-nested":"openai"):null})},97059:(a,b,c)=>{c.d(b,{KW:()=>r,jI:()=>O,S8:()=>F,$M:()=>s,eT:()=>w,pA:()=>u,Zw:()=>y,EQ:()=>G,qT:()=>x,fe:()=>D,FJ:()=>B,b2:()=>E,sb:()=>C,Vk:()=>I,Z:()=>R,BW:()=>K,uZ:()=>N,MR:()=>L});var d=c(79748),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h),j=c(63294),k=c(95510),l=c(23628),m=c(43904),n=c(2081),o=c(85432);let p=["none","thinking","minimal","low","medium","high","xhigh","max"];var q=c(59353);let r="switchboard",s=()=>g().join(i().homedir(),".pi","agent"),t=()=>g().join(s(),"models.json"),u=()=>g().join(s(),"settings.json"),v=()=>g().join(s(),"switchboard-backup.json"),w=()=>g().join(s(),"models.yml"),x=a=>{let b=String(a||"").replace(/\/+$/,"");return b.endsWith("/v1")?b:`${b}/v1`},y=a=>{try{let b=new URL(String(a||"")).hostname.toLowerCase();return"localhost"===b||"0.0.0.0"===b||/^127(?:\.\d{1,3}){3}$/.test(b)}catch{return!1}},z=async(a,b)=>{try{let b=await e().readFile(a,"utf-8"),c=JSON.parse(b);if(!c||"object"!=typeof c||Array.isArray(c))throw TypeError(`${a} must contain a JSON object`);return c}catch(a){if("ENOENT"===a.code)return b;throw a}},A=async(a,b)=>{try{let b=await e().readFile(a,"utf-8"),c=""===b.trim()?{}:(0,j.qg)(b);if(!c||"object"!=typeof c||Array.isArray(c))throw TypeError(`${a} must contain a YAML object`);return c}catch(a){if("ENOENT"===a.code)return b;throw a}},B=()=>z(t(),{providers:{}}),C=()=>z(u(),{}),D=()=>z(v(),null),E=()=>A(w(),{providers:{}}),F=a=>a.map(a=>`${r}/${a}`),G=(a,b)=>{if(!Array.isArray(a)||0===a.length)return;let c=a.filter(a=>"string"!=typeof a||!a.startsWith(`${r}/`));if(0!==c.length)return[...c,...b]},H=a=>Array.isArray(a)?a.map(H):a&&"object"==typeof a?Object.fromEntries(Object.keys(a).sort().map(b=>[b,H(a[b])])):a,I=(a,b)=>JSON.stringify(H(a))===JSON.stringify(H(b)),J=a=>a&&"object"==typeof a&&"boolean"==typeof a.exists,K=a=>{if(null==a)return null;if(1===a.version&&"restored"===a.state)return a;if(1!==a.version||!J(a.provider)||!["defaultProvider","defaultModel","enabledModels"].every(b=>J(a.settings?.[b]))||!a.managedProvider||!a.managedSettings)throw Error("Unsupported or invalid Pi Switchboard backup file");return a},L=async(a,b,c,d)=>{await e().mkdir(s(),{recursive:!0}),await (0,k.M_)([{filePath:v(),content:d?JSON.stringify(d,null,2):null,secret:!0},{filePath:w(),content:(0,j.As)(a),secret:!0},{filePath:t(),content:JSON.stringify(b,null,2),secret:!0},{filePath:u(),content:JSON.stringify(c,null,2),secret:!0}])},M=Promise.resolve(),N=a=>{let b=M.then(a,a);return M=b.catch(()=>{}),b};async function O(){return await (0,o.vA)().catch(()=>{}),function(a=new Map){let b=(c,d=new Set)=>{try{let e=String(c||""),f=e.indexOf("/");if(f<=0){if(d.has(e))return null;d.add(e);let c=a.get(e);if(!c||!Array.isArray(c.models)||0===c.models.length)return null;let f=null,g=!1,h=null;for(let a of c.models){let c=b(String(a),d);c&&(f||(f=c),c.reasoning&&(g=!0),c.reasoning&&Array.isArray(c.levels)&&c.levels.length&&(h=h?function(a,b){let c=new Set([...a,...b]);return p.filter(a=>c.has(a))}(h,c.levels):[...c.levels]))}if(!f)return null;return{...f,reasoning:g,...h?{levels:h}:{}}}let g=e.slice(0,f),h=e.slice(f+1),i=(0,m.nl)(g,h),j=(0,o.Kt)(g,h);if(j)return{reasoning:!0===j.supported,contextWindow:i.contextWindow||null,levels:null};let k=(0,n.k)(g,h);return{reasoning:!0===i.reasoning,contextWindow:i.contextWindow||null,levels:k,..."openai"===i.thinkingFormat?{wireLevel:n.Q}:{}}}catch{return null}};return b}(new Map(("function"==typeof q.Uv?await Promise.resolve((0,q.Uv)()).catch(()=>[]):[]).map(a=>[a.name,a])))}async function P(){let a=K(await D());if(!a||"active"!==a.state)return;let[b,c,d,e]=await Promise.all([E(),B(),C(),(0,q.uv)()]),f=Array.isArray(b?.providers?.[r]?.models)?b.providers[r].models:Array.isArray(c?.providers?.[r]?.models)?c.providers[r].models:[],g=b?.providers?.[r]||c?.providers?.[r];if(!g||!Array.isArray(g.models))return;let h=new Set(e.filter(a=>a?.providerAlias&&a?.id&&"llm"===(a.type||"llm")).map(a=>`${a.providerAlias}/${a.id}`)),{merged:i,injected:j}=function(a,b,c=[]){let d=new Set(c),e=[...new Set([...[...b].filter(b=>!a.includes(b)),...c.filter(a=>b.has(a))])];return{merged:[...new Set([...a.filter(a=>!d.has(a)),...b])],injected:e}}(f.map(a=>a?.id).filter(Boolean),h,a.syncSourceIds||[]),k=await O(),m=Object.fromEntries(f.filter(a=>a?.id&&a?.name).map(a=>[a.id,a.name])),n=(0,l.L6)(i,f,m,k);if(I(n,f)&&I(j,a.syncSourceIds||[]))return;let o={...g,models:n},p={...o,discovery:g.discovery||{type:"openai-models-list"}};a.syncSourceIds=j,a.managedProvider={...a.managedProvider||p,models:n},a.managedLegacyProvider={...a.managedLegacyProvider||o,models:n};let s=a.managedSettings||null;if(d.defaultProvider===r&&d.defaultModel&&s&&d.defaultModel===s.defaultModel&&!i.includes(d.defaultModel)&&i.length>0&&(d.defaultModel=i[0],a.managedSettings={...s||{defaultProvider:r},defaultModel:d.defaultModel}),Array.isArray(d.enabledModels)&&I(d.enabledModels,s?.enabledModels)){let b=G(d.enabledModels,F(i));b?d.enabledModels=b:delete d.enabledModels,a.managedSettings={...a.managedSettings||{defaultProvider:r},defaultModel:d.defaultModel,enabledModels:d.enabledModels}}b.providers&&"object"==typeof b.providers||(b.providers={}),c.providers&&"object"==typeof c.providers||(c.providers={}),b.providers[r]=p,c.providers[r]=o,await L(b,c,d,a)}let Q=null;function R(a=3e3){Q&&clearTimeout(Q),Q=setTimeout(()=>{Q=null,N(P).catch(a=>{console.log("Pi catalog sync failed:",a?.message||a)})},a)}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=7133,exports.ids=[7133],exports.modules={67133:(a,b,c)=>{c.d(b,{Pt:()=>x,Tr:()=>y,getProviderCredentials:()=>v,vk:()=>w});var d=c(
|
|
1
|
+
"use strict";exports.id=7133,exports.ids=[7133],exports.modules={67133:(a,b,c)=>{c.d(b,{Pt:()=>x,Tr:()=>y,getProviderCredentials:()=>v,vk:()=>w});var d=c(59353),e=c(39326),f=c(49263),g=c(87252),h=c(40615),i=c(7803),j=c(1486),k=c(77598),l=c.n(k);let m=2*c(30869).oc.tickIntervalMs,n=global.__accountSchedulerV2??={affinities:new Map};function o(a){return l().createHash("sha256").update(JSON.stringify(a)).digest("hex")}function p(a){for(let[b,c]of n.affinities)if(c.scopeHash===a)return b;return null}function q(a,b){return a.inFlight-b.inFlight||b.quota.tier-a.quota.tier||b.quota.remaining-a.quota.remaining||a.quota.resetAt-b.quota.resetAt||a.priority-b.priority||a.id.localeCompare(b.id)}function r(a){var b;let{providerId:c,candidates:d=[],clientKeyId:e=null,sessionKey:f=null,affinityTtlMs:g=18e5,quotaFreshMs:h=m,getInFlightCount:i=()=>0,now:j=Date.now()}=a||{};for(let[a,b]of n.affinities)(!b||b.expiresAt<=j)&&n.affinities.delete(a);let k=function(a,b,c){if(!c)return null;let d=b||"local-no-key";return{key:o([String(a),String(d),String(c)]),scopeHash:o([String(a),String(d)])}}(c,e,f),l=k?n.affinities.get(k.key):null;if(0===d.length)return l&&n.affinities.delete(k.key),{connection:null,reason:"no-candidates",affinityRebound:!!l,capacityLimited:!1};let r=[];for(let a of d){let b=function(a,b,c,d){let e;return{candidate:a,inFlight:Number.isFinite(e=Number(b(a.id)))&&e>0?e:0,quota:function(a,b,c){let d=a.lastQuota,e=d?.at,f=d?.remainingPercentage;if(!Number.isFinite(e)||b-e>c||!Number.isFinite(f))return{tier:1,remaining:-1,resetAt:1/0};let g=Math.max(0,Math.min(100,f));if(g>0)return{tier:2,remaining:g,resetAt:1/0};let h=new Date(d?.resetAt).getTime();return{tier:0,remaining:0,resetAt:Number.isFinite(h)&&h>b?h:1/0}}(a,c,d),priority:Number.isFinite(a.priority)?a.priority:Number.MAX_SAFE_INTEGER,id:String(a.id)}}(a,i,j,h),c=a.maxConcurrentRequests;(!Number.isInteger(c)||c<=0||b.inFlight<c)&&r.push(b)}if(0===r.length)return l&&n.affinities.delete(k.key),{connection:null,reason:"capacity-exhausted",affinityRebound:!!l,capacityLimited:!0};let s=l&&r.find(({candidate:a})=>a.id===l.connectionId);if(s)return l.expiresAt=j+g,{connection:s.candidate,reason:"session-affinity",affinityRebound:!1,capacityLimited:!1};r.sort(q);let t=r[0];return k&&function(a,b,c){let d=n.affinities.has(a.key);if(!d&&function(a){let b=0;for(let c of n.affinities.values())c.scopeHash===a&&(b+=1);return b}(a.scopeHash)>=500){let b=p(a.scopeHash);b&&n.affinities.delete(b)}if(!d&&n.affinities.size>=5e3){let b=p(a.scopeHash);if(!b)return;n.affinities.delete(b)}n.affinities.set(a.key,{connectionId:b,expiresAt:c,scopeHash:a.scopeHash})}(k,t.candidate.id,j+g),{connection:t.candidate,reason:(b=r[1])?t.inFlight!==b.inFlight?"least-inflight":t.quota.tier!==b.quota.tier||t.quota.remaining!==b.quota.remaining?"quota-headroom":t.quota.resetAt!==b.quota.resetAt?"quota-reset":t.priority!==b.priority?"priority":"connection-id":"priority",affinityRebound:!!l,capacityLimited:!1}}let s=new Map,t=new Map;function u(a,b,c){let d,e=a.get(b)||Promise.resolve(),f=new Promise(a=>{d=a}),g=e.then(()=>f,()=>f);return a.set(b,g),(async()=>{await e.catch(()=>{});try{return await c()}finally{d(),a.get(b)===g&&a.delete(b)}})()}async function v(a,b=null,c=null,g={}){let j=b instanceof Set?b:b?new Set([b]):new Set,k=g?.preferredConnectionId||null,l=g?.strictPreferredConnection===!0,m=(0,h.rs)(a);return u(s,m,async()=>{let b;if(h.IS[m]?.noAuth){let a=((await (0,d.mt)()).providerStrategies||{})[m]||{},b=await (0,e.B)({proxyPoolId:a.proxyPoolId||""});return{id:"noauth",connectionName:"Public",isActive:!0,accessToken:"public",providerSpecificData:{connectionProxyEnabled:b.connectionProxyEnabled,connectionProxyUrl:b.connectionProxyUrl,connectionNoProxy:b.connectionNoProxy,connectionProxyPoolId:b.proxyPoolId||null,vercelRelayUrl:b.vercelRelayUrl||""}}}let n=await (0,d.getProviderConnections)({provider:m,isActive:!0});i.debug("AUTH",`${a} | total connections: ${n.length}, excludeIds: ${j.size>0?[...j].join(","):"none"}, model: ${c||"any"}`);let o=await (0,d.mt)(),p=(o.providerStrategies||{})[m]||{},q=p.fallbackStrategy||o.fallbackStrategy||"fill-first",s=p.accountScheduler||{},t=()=>!0===s.enabled?r({providerId:m,candidates:[],sessionKey:g?.sessionKey||null,clientKeyId:g?.clientKeyId||null,affinityTtlMs:1e3*Number(s.sessionAffinityTtlSeconds)||void 0,getInFlightCount:d.b7}):null;if(0===n.length)return t(),i.warn("AUTH",`No credentials for ${a}`),null;let u=l&&k?n.filter(a=>a.id===k):n;if(0===u.length)return t(),i.warn("AUTH",`${a} | requested connection is unavailable`),null;let v=u.filter(a=>!j.has(a.id)&&!(0,f.Bl)(a,c)),w=v.filter(a=>a.testStatus!==f.RU),x=w.length>0?w:v;if(i.debug("AUTH",`${a} | available: ${x.length}/${u.length}`),u.forEach(a=>{let b=j.has(a.id),d=(0,f.Bl)(a,c);if(b||d){let e=(0,f.kJ)(a);i.debug("AUTH",` → ${a.id?.slice(0,8)} | ${b?"excluded":""} ${d?`modelLocked(${c}) until ${e}`:""}`)}}),0===x.length){let b=t(),d=u.map(a=>({connection:a,until:(0,f.V0)(a,c)})).filter(a=>a.until).sort((a,b)=>a.until.localeCompare(b.until)),e=d[0]?.until||null;if(e){let g=d[0].connection;return i.warn("AUTH",`${a} | all ${u.length} accounts locked for ${c||"all"} (${(0,f.Qo)(e)}) | lastError=${g?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:e,retryAfterHuman:(0,f.Qo)(e),lastError:g?.lastError||null,lastErrorCode:g?.errorCode||null,...b?{selectionReason:b.reason,affinityRebound:b.affinityRebound}:{}}}return i.warn("AUTH",`${a} | all ${u.length} accounts unavailable`),null}let y=null,z=!1;if(k){let a=x.find(a=>a.id===k);if(a){let c=Number(a.maxConcurrentRequests);!0===s.enabled&&Number.isInteger(c)&&c>0&&(0,d.b7)(a.id)>=c||(b=a,y="explicit-pin")}}if(!b&&!0===s.enabled){let a=r({providerId:m,candidates:x,sessionKey:g?.sessionKey||null,clientKeyId:g?.clientKeyId||null,affinityTtlMs:1e3*Number(s.sessionAffinityTtlSeconds)||void 0,getInFlightCount:d.b7});if(!a.connection&&a.capacityLimited)return{allRateLimited:!0,capacityLimited:!0,retryAfter:new Date(Date.now()+1e3).toISOString(),retryAfterHuman:"retry after an in-flight request completes",lastError:"All accounts are at their concurrency limits",lastErrorCode:429,selectionReason:a.reason,affinityRebound:a.affinityRebound};b=a.connection,y=a.reason,z=a.affinityRebound}if(b);else if("round-robin"===q){let a=p.stickyRoundRobinLimit||o.stickyRoundRobinLimit||3,c=[...x].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt)-new Date(a.lastUsedAt):-1:1:(a.priority??999)-(b.priority??999))[0],e=c?.consecutiveUseCount||0;c&&c.lastUsedAt&&e<a?(b=c,await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(b.consecutiveUseCount||0)+1})):(b=[...x].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt)-new Date(b.lastUsedAt):1:-1:(a.priority??999)-(b.priority??999))[0],await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1})),y="round-robin"}else b=x[0],y="fill-first";i.info("AUTH",`${a} | selected ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"}) selection=${y} rebound=${z}`);let A=await (0,e.B)(b.providerSpecificData||{});return{authType:b.authType,apiKey:b.apiKey,accessToken:b.accessToken,refreshToken:b.refreshToken,idToken:b.idToken,expiresAt:b.expiresAt,expiresIn:b.expiresIn,lastRefreshAt:b.lastRefreshAt,projectId:b.projectId,connectionName:b.displayName||b.name||b.email||b.id,copilotToken:b.providerSpecificData?.copilotToken,providerSpecificData:{...b.providerSpecificData||{},connectionProxyEnabled:A.connectionProxyEnabled,connectionProxyUrl:A.connectionProxyUrl,connectionNoProxy:A.connectionNoProxy,connectionProxyPoolId:A.proxyPoolId||null,vercelRelayUrl:A.vercelRelayUrl||""},connectionId:b.id,testStatus:b.testStatus,lastError:b.lastError,_connection:b,selectionReason:y,affinityRebound:z}})}async function w(a,b,c,e=null,h=null,j=null){return a&&"noauth"!==a?u(t,a,async()=>{let k,l,m,n=(await (0,d.getProviderConnections)({provider:e})).find(b=>b.id===a),o=n?.backoffLevel||0,p=!!(j&&j>Date.now());if(p?(k=!0,l=Math.min(j-Date.now(),g.fh),m=0):{shouldFallback:k,cooldownMs:l,newBackoffLevel:m}=(0,f.hk)(b,c,o),!k)return{shouldFallback:!1,cooldownMs:0};let q="string"==typeof c?c.slice(0,100):"Provider error",r=(0,f.S5)(h,l),s=n?.testStatus===f.RU;await (0,d.updateProviderConnection)(a,{...r,testStatus:s?f.RU:"unavailable",lastError:s&&n.lastError||q,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:m??o,...p?{lastQuota:{remainingPercentage:0,resetAt:new Date(j).toISOString(),at:Date.now()}}:{}});let t=Object.keys(r)[0],u=n?.displayName||n?.name||n?.email||a.slice(0,8);return i.warn("AUTH",`${u} locked ${t} for ${Math.round(l/1e3)}s [${b}]`),e&&b&&q&&console.error(`❌ ${e} [${b}]: ${q}`),{shouldFallback:!0,cooldownMs:l}}):{shouldFallback:!1,cooldownMs:0}}async function x(a,b,c=null){if(a&&"noauth"!==a)return u(t,a,async()=>{let e=b._connection||b,g=(await (0,d.getProviderConnections)({provider:e.provider})).find(b=>b.id===a);if(!g||g.testStatus===f.RU||g.lastErrorAt!==e.lastErrorAt||g.lastError!==e.lastError)return;let h=Date.now(),i=Object.keys(g).filter(a=>a.startsWith("modelLock_"));if(!g.testStatus&&!g.lastError&&0===i.length)return;let j=i.filter(a=>{if(c&&a===`modelLock_${c}`||c&&"modelLock___all"===a)return g[a]===e[a];let b=g[a];return b&&new Date(b).getTime()<=h});if(0===j.length&&"unavailable"!==g.testStatus&&!g.lastError)return;let k=i.filter(a=>{if(j.includes(a))return!1;let b=g[a];return b&&new Date(b).getTime()>h}),l=Object.fromEntries(j.map(a=>[a,null]));0===k.length&&Object.assign(l,{testStatus:"active",lastError:null,lastErrorAt:null,backoffLevel:0}),await (0,d.$v)(a,g,l)})}function y(a){return(0,j.d)(a.headers)}}};
|