switchboard-router 0.6.30 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/static/LW9zpYBdABYCFKEJUiC4B/_buildManifest.js +1 -0
- package/app/.next/static/LW9zpYBdABYCFKEJUiC4B/_ssgManifest.js +1 -0
- package/app/.next/static/chunks/1321-8d4ef805452d3649.js +1 -0
- package/app/.next/static/chunks/136-b76ff55769d5ecb1.js +1 -0
- package/app/.next/static/chunks/1a258343-33aee1e7d9aa500f.js +1 -0
- package/app/.next/static/chunks/3531-e8d13ec64699f527.js +68 -0
- package/app/.next/static/chunks/3794-d7cddff008311ab3.js +52 -0
- package/app/.next/static/chunks/4707-1ec0b2edbb07f455.js +1 -0
- package/app/.next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js +1 -0
- package/app/.next/static/chunks/5497-a3b9cdb0b8300541.js +7 -0
- package/app/.next/static/chunks/594-5a5c7b405aa92038.js +64 -0
- package/app/.next/static/chunks/6430-4c528cfc35666c11.js +1 -0
- package/app/.next/static/chunks/7055-e60e20f43bfbe5f8.js +1 -0
- package/app/.next/static/chunks/782-3a03a779968fa7a2.js +3 -0
- package/app/.next/static/chunks/8202.1ffc6ce531e066ce.js +1 -0
- package/app/.next/static/chunks/8500-74c368e06d70378e.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/agent-library/page-24b5a8515eee26d6.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-4ec8bfa73afe20a6.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-d7205b7328b3fed1.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-d0b6efe01e687aec.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-5cfdfdf507c8222f.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/routing/page-25629f96675ad55d.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-b54cd17200807e49.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-cd44cb44125275b6.js +3 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-995a96a01c24b126.js +59 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-52c12af07f9a6de0.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-8554ba79c854167f.js +4 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/page-0f54c9a5e7391a77.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-cfbd3661ac75b8c5.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-8779ff2bc755ba78.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-c33d24bdadcf0c6e.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-d32871b974f7e72f.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-e4258dcd8fb1a077.js +10 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-74d56b3b7ac42546.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-555f079cdf31bbf6.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/pxpipe/page-bd18ad88b98cd373.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-b3ffcc7df06a37d8.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/skills/[id]/page-56bf48ee2068208e.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/skills/page-46986a955b8c89b2.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/token-saver/page-20972a96e348f397.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-0cc2ccbe11cc0013.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-5af5fff7d28ed91d.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/error-d633be4a53c4ab61.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/layout-62b4e2cdf745f8d0.js +1 -0
- package/app/.next/static/chunks/app/_global-error/page-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/_not-found/page-ee581ced4614e639.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/catalog/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/doctor/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/export/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/mcp/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/skills/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/sync/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/agent-library/updates/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/auth/status/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/aider-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-full-catalog/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-picker-labels/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/gemini-cli-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/grok-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/pi-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/picker-labels/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/combos/[id]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/combos/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/headroom/extras/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/headroom/proxy/[...path]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/headroom/restart/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/headroom/start/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/headroom/status/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/headroom/stop/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/health/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/keys/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/locale/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/combos/[id]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/combos/[id]/strategy/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/combos/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/health/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/metrics/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/providers/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/routing/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/usage/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/mgmt/v1/version/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/models/alias/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/models/availability/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/models/custom/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/models/disabled/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/models/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/models/test/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/codex/bulk-import/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/api-key/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/batch/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/cache/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/prepare/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/remove-unavailable/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/verify/cancel/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/verify/start/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/model-probes/verify/status/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/client/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/suggested-models/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/test-batch/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/providers/validate/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/health/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/install/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/logs/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/restart/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/start/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/stats/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/status/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/pxpipe/stop/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/routing/feedback/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/routing/insights/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/routing/learn/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/routing/stats/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/routing/versions/promote/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/routing/versions/rollback/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/settings/database/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy-test/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/shutdown/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/skills/[id]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/tags/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/token-saver/vault-stats/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/translator/load/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/translator/save/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/translator/send/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/translator/translate/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/usage/chart/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/usage/history/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/usage/logs/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/usage/providers/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-details/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-logs/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stats/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/usage/stream/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/api/chat/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/voices/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/embeddings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/images/generations/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/[kind]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/info/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/compact/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/search/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/videos/[id]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/videos/edits/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/videos/extensions/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/videos/generations/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1/web/fetch/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/version/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/version/shutdown/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/api/version/update/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/callback/page-5c1d863ff86ddc6e.js +1 -0
- package/app/.next/static/chunks/app/dashboard/settings/pricing/page-423a4c1e078872dd.js +1 -0
- package/app/.next/static/chunks/app/landing/page-9e06d57d9b215fd7.js +1 -0
- package/app/.next/static/chunks/app/layout-214ea0ad8a3d8323.js +1 -0
- package/app/.next/static/chunks/app/login/page-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/manifest.webmanifest/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/app/page-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/framework-461b899b66554474.js +1 -0
- package/app/.next/static/chunks/main-app-83fef838b21a8d19.js +1 -0
- package/app/.next/static/chunks/main-d2d664d299c2e1bc.js +5 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/global-error-f9c47afa2e4175d7.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-e5f03432dd0bcd61.js +1 -0
- package/app/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/app/.next/static/chunks/webpack-57b54315eb9fa808.js +1 -0
- package/app/.next/static/css/23b999cda6943547.css +1 -0
- package/app/.next/static/css/a26e7bdf55d5cb27.css +1 -0
- package/app/.next/static/css/e07f2bf4fa519943.css +31 -0
- package/app/.next/static/media/011e180705008d6f-s.woff2 +0 -0
- package/app/.next/static/media/20535187d867b7b9-s.woff2 +0 -0
- package/app/.next/static/media/26d4368bf94c0ec4-s.p.woff2 +0 -0
- package/app/.next/static/media/2801417b65625cf5-s.woff2 +0 -0
- package/app/.next/static/media/28793f5c5e3d822d-s.woff2 +0 -0
- package/app/.next/static/media/5356a6a4f2c8c8d8-s.woff2 +0 -0
- package/app/.next/static/media/58f386aa6b1a2a92-s.woff2 +0 -0
- package/app/.next/static/media/73cb51aac9c97f90-s.woff2 +0 -0
- package/app/.next/static/media/7b19b489dc6743ba-s.woff2 +0 -0
- package/app/.next/static/media/7ba5fb2a8c88521c-s.woff2 +0 -0
- package/app/.next/static/media/92eeb95d069020cc-s.woff2 +0 -0
- package/app/.next/static/media/98e207f02528a563-s.p.woff2 +0 -0
- package/app/.next/static/media/99dcf268bda04fe5-s.woff2 +0 -0
- package/app/.next/static/media/b3bf17a9041d9433-s.woff2 +0 -0
- package/app/.next/static/media/c9c3823090ec8b55-s.woff2 +0 -0
- package/app/.next/static/media/catalog.e7ada387.json +1710 -0
- package/app/.next/static/media/d26bbd13d6b70f89-s.woff2 +0 -0
- package/app/.next/static/media/d29838c109ef09b4-s.woff2 +0 -0
- package/app/.next/static/media/d3ebbfd689654d3a-s.p.woff2 +0 -0
- package/app/.next/static/media/db96af6b531dc71f-s.p.woff2 +0 -0
- package/app/.next/static/media/e40af3453d7c920a-s.woff2 +0 -0
- package/app/.next/static/media/ef4d5661765d0e49-s.woff2 +0 -0
- package/app/.next/static/media/material-symbols-outlined.f656244e.woff2 +0 -0
- package/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +26 -10
- 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/required-server-files.json +5 -1
- package/app/.next-cli-build/routes-manifest.json +98 -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 +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +11 -11
- 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 +3 -3
- 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 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -0
- 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/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 +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +2 -2
- 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 +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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/route.js +1 -1
- 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 -0
- package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/headroom/extras/route_client-reference-manifest.js +1 -0
- 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 -0
- package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/headroom/restart/route_client-reference-manifest.js +1 -0
- 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/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 +2 -2
- 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 -0
- package/app/.next-cli-build/server/app/api/mgmt/v1/metrics/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/mgmt/v1/metrics/route_client-reference-manifest.js +1 -0
- 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/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/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 +3 -0
- package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/health/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js +3 -0
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/install/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js +3 -0
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +3 -0
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +3 -0
- package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/start/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +3 -0
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +3 -0
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/status/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +3 -0
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route_client-reference-manifest.js +1 -0
- 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/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 +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
- 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 -0
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -0
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -0
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -0
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page.js +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 +5 -5
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
- 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 +5 -5
- 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 +4 -4
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
- 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 +4 -4
- 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 +26 -10
- package/app/.next-cli-build/server/chunks/1294.js +1 -1
- package/app/.next-cli-build/server/chunks/1350.js +1 -1
- package/app/.next-cli-build/server/chunks/159.js +1 -1
- package/app/.next-cli-build/server/chunks/1656.js +2 -0
- package/app/.next-cli-build/server/chunks/1937.js +2 -2
- package/app/.next-cli-build/server/chunks/194.js +1 -1
- package/app/.next-cli-build/server/chunks/1998.js +1 -1
- package/app/.next-cli-build/server/chunks/2376.js +1 -1
- package/app/.next-cli-build/server/chunks/2409.js +1 -1
- package/app/.next-cli-build/server/chunks/3026.js +1 -0
- package/app/.next-cli-build/server/chunks/3072.js +1 -1
- package/app/.next-cli-build/server/chunks/3075.js +1 -1
- package/app/.next-cli-build/server/chunks/3546.js +1 -1
- package/app/.next-cli-build/server/chunks/3593.js +2 -2
- package/app/.next-cli-build/server/chunks/369.js +11 -9
- package/app/.next-cli-build/server/chunks/3787.js +1 -1
- package/app/.next-cli-build/server/chunks/3904.js +1 -1
- package/app/.next-cli-build/server/chunks/3986.js +39 -23
- package/app/.next-cli-build/server/chunks/4739.js +2 -2
- package/app/.next-cli-build/server/chunks/4780.js +2 -2
- package/app/.next-cli-build/server/chunks/4803.js +1 -1
- package/app/.next-cli-build/server/chunks/507.js +2 -2
- package/app/.next-cli-build/server/chunks/5258.js +2 -2
- package/app/.next-cli-build/server/chunks/5350.js +1 -1
- package/app/.next-cli-build/server/chunks/5616.js +1 -0
- package/app/.next-cli-build/server/chunks/5717.js +47 -0
- package/app/.next-cli-build/server/chunks/5781.js +15 -0
- package/app/.next-cli-build/server/chunks/5888.js +246 -0
- package/app/.next-cli-build/server/chunks/5913.js +1 -0
- package/app/.next-cli-build/server/chunks/6052.js +2 -0
- package/app/.next-cli-build/server/chunks/6252.js +1 -1
- package/app/.next-cli-build/server/chunks/6274.js +1 -0
- package/app/.next-cli-build/server/chunks/6328.js +1 -1
- package/app/.next-cli-build/server/chunks/6347.js +1 -0
- package/app/.next-cli-build/server/chunks/6395.js +15 -15
- package/app/.next-cli-build/server/chunks/6406.js +1 -1
- package/app/.next-cli-build/server/chunks/6492.js +1 -1
- package/app/.next-cli-build/server/chunks/6947.js +1 -0
- package/app/.next-cli-build/server/chunks/698.js +2 -2
- package/app/.next-cli-build/server/chunks/6985.js +1 -1
- package/app/.next-cli-build/server/chunks/7141.js +1 -1
- package/app/.next-cli-build/server/chunks/7454.js +1 -1
- package/app/.next-cli-build/server/chunks/7557.js +4 -4
- package/app/.next-cli-build/server/chunks/7757.js +1 -0
- 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/7965.js +2 -2
- package/app/.next-cli-build/server/chunks/8062.js +1 -1
- package/app/.next-cli-build/server/chunks/8117.js +1 -1
- package/app/.next-cli-build/server/chunks/8400.js +9 -9
- package/app/.next-cli-build/server/chunks/8469.js +1 -1
- package/app/.next-cli-build/server/chunks/849.js +1 -0
- package/app/.next-cli-build/server/chunks/8520.js +2 -2
- package/app/.next-cli-build/server/chunks/8658.js +1 -1
- 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/8834.js +7 -0
- package/app/.next-cli-build/server/chunks/8942.js +246 -0
- package/app/.next-cli-build/server/chunks/8998.js +67 -43
- package/app/.next-cli-build/server/chunks/{5615.js → 9091.js} +2 -2
- package/app/.next-cli-build/server/chunks/9261.js +6 -6
- package/app/.next-cli-build/server/chunks/9264.js +10 -0
- package/app/.next-cli-build/server/chunks/940.js +246 -0
- package/app/.next-cli-build/server/chunks/9421.js +4 -0
- package/app/.next-cli-build/server/chunks/9508.js +4 -4
- package/app/.next-cli-build/server/chunks/9617.js +1 -0
- package/app/.next-cli-build/server/chunks/static/media/versions.401d57e8.json +20 -0
- package/app/.next-cli-build/server/functions-config-manifest.json +6 -0
- package/app/.next-cli-build/server/instrumentation.js +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js +24 -12
- 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/LW9zpYBdABYCFKEJUiC4B/_buildManifest.js +1 -0
- package/app/.next-cli-build/static/chunks/1321-8d4ef805452d3649.js +1 -0
- package/app/.next-cli-build/static/chunks/3531-e8d13ec64699f527.js +68 -0
- package/app/.next-cli-build/static/chunks/4707-1ec0b2edbb07f455.js +1 -0
- package/app/.next-cli-build/static/chunks/5497-a3b9cdb0b8300541.js +7 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/agent-library/page-24b5a8515eee26d6.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-4ec8bfa73afe20a6.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-6633578a55a1a436.js → page-d7205b7328b3fed1.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-3cbe5d8636bd2161.js → page-d0b6efe01e687aec.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-5cfdfdf507c8222f.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/routing/{page-1fc70bcd434deb73.js → page-25629f96675ad55d.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-b54cd17200807e49.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-cd44cb44125275b6.js +3 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-995a96a01c24b126.js +59 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/{page-95bf830096d019fd.js → page-52c12af07f9a6de0.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-8554ba79c854167f.js +4 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/page-0f54c9a5e7391a77.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/{page-961013b570bbeac6.js → page-cfbd3661ac75b8c5.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/{page-59e54ef2021ad5bb.js → page-8779ff2bc755ba78.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-c33d24bdadcf0c6e.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/{page-b5b9038ea28e63b6.js → page-d32871b974f7e72f.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-e4258dcd8fb1a077.js +10 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/page-74d56b3b7ac42546.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/{page-d3e35265648406f2.js → page-555f079cdf31bbf6.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/pxpipe/page-bd18ad88b98cd373.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-b3ffcc7df06a37d8.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/[id]/{page-bb4af1ac9b13a514.js → page-56bf48ee2068208e.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/{page-4382c14f28ddfc7f.js → page-46986a955b8c89b2.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/page-20972a96e348f397.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/page-0cc2ccbe11cc0013.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-5af5fff7d28ed91d.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/error-d633be4a53c4ab61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-d1fa5b81e1c386ab.js → layout-62b4e2cdf745f8d0.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/catalog/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/doctor/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/export/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/mcp/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/skills/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/sync/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/agent-library/updates/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/aider-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-full-catalog/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-picker-labels/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/gemini-cli-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/pi-settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/picker-labels/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/locale/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/strategy/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/health/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/metrics/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/providers/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/routing/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/usage/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/version/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/batch/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/cache/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/prepare/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/remove-unavailable/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/cancel/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/start/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/status/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/routing/feedback/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/routing/insights/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/routing/learn/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/routing/stats/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/routing/versions/promote/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/routing/versions/rollback/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/skills/[id]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tags/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/token-saver/vault-stats/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/dashboard/settings/pricing/page-423a4c1e078872dd.js +1 -0
- package/app/.next-cli-build/static/chunks/app/login/page-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/app/page-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-e5f03432dd0bcd61.js +1 -0
- package/app/.next-cli-build/static/css/23b999cda6943547.css +1 -0
- package/app/custom-server.js +63 -2
- package/app/node_modules/impit/CHANGELOG.md +545 -0
- package/app/node_modules/impit/README.md +62 -0
- package/app/node_modules/impit/dts-header.d.ts +36 -0
- package/app/node_modules/impit/errors.js +117 -0
- package/app/node_modules/impit/index.d.ts +431 -0
- package/app/node_modules/impit/index.js +583 -0
- package/app/node_modules/impit/index.wrapper.js +504 -0
- package/app/node_modules/impit/package.json +66 -0
- package/app/node_modules/impit/pnpm-workspace.yaml +15 -0
- package/app/node_modules/impit/tsconfig.docs.json +6 -0
- package/app/node_modules/impit-linux-x64-gnu/README.md +3 -0
- package/app/node_modules/impit-linux-x64-gnu/impit-node.linux-x64-gnu.node +0 -0
- package/app/node_modules/impit-linux-x64-gnu/package.json +24 -0
- package/app/open-sse/identity/snapshots/versions.json +20 -0
- 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 +9 -3
- package/app/server.js +1 -1
- package/app/src/lib/db/adapters/betterSqliteAdapter.js +12 -6
- package/app/src/lib/db/adapters/bunSqliteAdapter.js +11 -6
- package/app/src/lib/db/adapters/nodeSqliteAdapter.js +11 -6
- package/app/src/lib/db/adapters/sqljsAdapter.js +12 -5
- package/app/src/lib/db/migrate.js +167 -22
- package/app/src/lib/oauth/services/qoder.js +8 -1
- package/app/src/lib/oauth/services/xai.js +11 -3
- package/cli.js +14 -0
- package/package.json +10 -2
- package/src/cli/cliOptions.js +3 -0
- package/src/cli/commands/xaiVideo.js +300 -0
- package/src/cli/menus/apiKeys.js +7 -49
- package/src/cli/menus/cliTools.js +4 -5
- package/src/cli/terminalUI.js +2 -2
- package/src/cli/utils/input.js +40 -0
- package/app/.next-cli-build/server/chunks/1064.js +0 -104
- package/app/.next-cli-build/server/chunks/1421.js +0 -1
- package/app/.next-cli-build/server/chunks/2925.js +0 -1
- package/app/.next-cli-build/server/chunks/3535.js +0 -1
- package/app/.next-cli-build/server/chunks/4776.js +0 -33
- package/app/.next-cli-build/server/chunks/615.js +0 -1
- package/app/.next-cli-build/server/chunks/6448.js +0 -109
- package/app/.next-cli-build/server/chunks/65.js +0 -1
- package/app/.next-cli-build/server/chunks/7335.js +0 -1
- package/app/.next-cli-build/server/chunks/7374.js +0 -2
- package/app/.next-cli-build/server/chunks/8718.js +0 -1
- package/app/.next-cli-build/server/chunks/9046.js +0 -1
- package/app/.next-cli-build/server/chunks/9062.js +0 -104
- package/app/.next-cli-build/server/chunks/9489.js +0 -8
- package/app/.next-cli-build/server/chunks/9696.js +0 -7
- package/app/.next-cli-build/static/chunks/1321-5250bb46aa281ab5.js +0 -1
- package/app/.next-cli-build/static/chunks/3531-5066ce0b15cf43af.js +0 -68
- package/app/.next-cli-build/static/chunks/5497-53b1dd3f23fb96bc.js +0 -7
- package/app/.next-cli-build/static/chunks/7592-bbf465c7acd2478e.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/agent-library/page-62bea7b75b3f2692.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-1eb380280857cf20.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-4bf0abe7c7119ac0.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-fdc5377da12ec933.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-b48bd39cb03c4985.js +0 -3
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-9e60537a4b8f5a0c.js +0 -59
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-45ebe6bb46c9f65e.js +0 -4
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/page-7ac82c8930583633.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-27ae229b00137a0b.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-1ec149c6b914249d.js +0 -10
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/page-fe7ccc9c117d7d38.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-5ac3900baf3fe9ca.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/page-1b2b6b736fe98698.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/page-92fe95bd4e6b3d0a.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-4c47b9660f3066e2.js +0 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/catalog/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/doctor/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/export/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/mcp/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/skills/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/sync/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/agent-library/updates/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/aider-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-full-catalog/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-picker-labels/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/gemini-cli-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/pi-settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/picker-labels/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/locale/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/strategy/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/health/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/providers/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/routing/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/usage/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/version/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/batch/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/cache/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/prepare/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/remove-unavailable/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/cancel/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/start/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/status/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/routing/feedback/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/routing/insights/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/routing/learn/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/routing/stats/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/routing/versions/promote/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/routing/versions/rollback/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/skills/[id]/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tags/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/token-saver/vault-stats/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/dashboard/settings/pricing/page-3414584e4d85b11f.js +0 -1
- package/app/.next-cli-build/static/chunks/app/login/page-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/app/page-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-596c1bc92adc4d71.js +0 -1
- package/app/.next-cli-build/static/css/8f209feb703c674d.css +0 -1
- package/app/.next-cli-build/static/dTnRQJQsV_UGBAsupqJ2u/_buildManifest.js +0 -1
- /package/app/.next-cli-build/static/{dTnRQJQsV_UGBAsupqJ2u → LW9zpYBdABYCFKEJUiC4B}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=1998,exports.ids=[1998],exports.modules={
|
|
1
|
+
"use strict";exports.id=1998,exports.ids=[1998],exports.modules={3894:(a,b,c)=>{c.d(b,{F_:()=>g,Nc:()=>h,Qh:()=>t,Su:()=>q,ag:()=>o,kI:()=>p,rl:()=>u,sy:()=>s});var d=c(79646),e=c(33873),f=c.n(e);let g=["code","ml"],h={code:["tree-sitter","tree-sitter-language-pack"],ml:["torch","huggingface-hub"]},i="win32"===process.platform,j=i?"where":"which",k=i?[`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python313\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python312\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python311\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python310\\Scripts`,`${process.env.APPDATA||""}\\Python\\Python313\\Scripts`]:["/usr/local/bin","/opt/homebrew/bin","/Library/Frameworks/Python.framework/Versions/3.13/bin","/Library/Frameworks/Python.framework/Versions/3.12/bin","/Library/Frameworks/Python.framework/Versions/3.11/bin","/Library/Frameworks/Python.framework/Versions/3.10/bin",`${process.env.HOME||""}/.local/bin`,"/usr/bin","/bin"],l=[...k,process.env.PATH||""].filter(Boolean).join(f().delimiter),m=["python3.13","python3.12","python3.11","python3.10","python3","python"],n=new Set(["localhost","127.0.0.1","::1","[::1]","0.0.0.0"]),o=process.env.HEADROOM_URL||"http://localhost:8787";function p(){try{let a=(0,d.execSync)(`${j} headroom`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:l}}).toString().trim();return a?a.split(/\r?\n/)[0].trim():null}catch{return null}}function q(){let a=null;for(let b of function(){let a=[],b=p();if(b){let c=f().dirname(b);for(let b of i?["python.exe","python3.exe"]:["python3","python3.13","python"])a.push(f().join(c,b))}for(let b of k)if(b)for(let c of m)a.push(f().join(b,i?`${c}.exe`:c));return a.push(...m),a}())try{let c=(0,d.execSync)(`${b} --version`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:l}}).toString().trim().match(/(\d+)\.(\d+)/);if(!c)continue;let[e,f]=[parseInt(c[1],10),parseInt(c[2],10)];if(!(e>3||3===e&&f>=10))continue;a||(a=b);try{return(0,d.execFileSync)(b,["-m","pip","show","headroom-ai"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:8e3,env:{...process.env,PATH:l}}),b}catch{}}catch{}return a}async function r(a){if(!a)return!1;let b=String(a).replace(/\/$/,"");try{return(await fetch(`${b}/health`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}function s(a){try{let b=new URL(a);return n.has(b.hostname)}catch{return!1}}async function t(a){let b=p(),c=q(),d=!!b,e=await r(a),f=s(a),g=d?u(c):{installed:!1,version:null,extras:{code:!1,ml:!1}};return{installed:d,path:b,running:e,python:c,localUrl:f,canStart:d&&f,version:g.version,extras:g.extras}}function u(a){let b=a||q();if(!b)return{installed:!1,version:null,extras:{code:!1,ml:!1}};try{let a=(0,d.execFileSync)(b,["-m","pip","list","--format=json","--disable-pip-version-check"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:8e3,env:{...process.env,PATH:l}}).toString(),c=JSON.parse(a),e=new Set(c.map(a=>String(a.name||"").toLowerCase()));if(!e.has("headroom-ai"))return{installed:!1,version:null,extras:{code:!1,ml:!1}};let f=c.find(a=>a.name?.toLowerCase()==="headroom-ai")?.version||null,i={};for(let a of g)i[a]=h[a].some(a=>e.has(a));return{installed:!0,version:f,extras:i}}catch{return{installed:!1,version:null,extras:{code:!1,ml:!1}}}}},6979:(a,b,c)=>{c.d(b,{F:()=>f,J:()=>e});var d=c(23211);function e(a,b="Unexpected error"){return a instanceof Error&&a.message?a.message:"string"==typeof a&&a?a:b}function f(a,b){return d.NextResponse.json({error:e(b)},{status:a})}},33016:(a,b,c)=>{c.d(b,{BS:()=>r,HI:()=>w,Ic:()=>v,ZT:()=>u,cx:()=>t,ow:()=>s,sW:()=>x});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(79646),i=c(49120),j=c(3894);let k=g().join(i.nJ,"headroom"),l=g().join(k,"proxy.pid"),m=g().join(k,"proxy.log"),n=g().join(k,"install.log");function o(){e().existsSync(k)||e().mkdirSync(k,{recursive:!0})}function p(){try{e().existsSync(l)&&e().unlinkSync(l)}catch{}}function q(a){if(!a||"number"!=typeof a)return!1;try{return process.kill(a,0),!0}catch{return!1}}function r(){let a=function(){try{if(e().existsSync(l))return parseInt(e().readFileSync(l,"utf8"),10)}catch{}return null}();return a&&q(a)?a:null}async function s({port:a=8787,codeAware:b=!1,kompress:c=!0}={}){var d;let f=Number(a)>0&&65536>Number(a)?Number(a):8787,g=(0,j.kI)();if(!g){let a=Error("Headroom CLI not installed");throw a.code="NOT_INSTALLED",a}let i=r();if(i)return{pid:i,alreadyRunning:!0};o();let k=e().openSync(m,"a"),n=["proxy","--port",String(f),...function({codeAware:a,kompress:b}={}){let c=[];return a&&c.push("--code-aware"),!1===b&&c.push("--disable-kompress"),c}({codeAware:b,kompress:c})],t=(0,h.spawn)(g,n,{stdio:["ignore",k,k],detached:!0,windowsHide:!0,env:{...process.env}});if(!t.pid){e().closeSync(k);let a=Error("Failed to spawn headroom proxy");throw a.code="SPAWN_FAILED",a}return t.unref(),d=t.pid,o(),e().writeFileSync(l,String(d)),await new Promise((a,b)=>{let c=setTimeout(()=>{q(t.pid)?a():b(Error("headroom proxy exited during startup — see proxy.log"))},8e3);t.once("exit",a=>{clearTimeout(c),p(),e().closeSync(k);let d=Error(`headroom proxy exited early (code=${a}) — see proxy.log`);d.code="EARLY_EXIT",b(d)})}),e().closeSync(k),{pid:t.pid,alreadyRunning:!1}}function t(){let a=r();if(!a)return{stopped:!1,reason:"not_running"};try{return process.kill(a,"SIGTERM"),setTimeout(()=>{if(q(a))try{process.kill(a,"SIGKILL")}catch{}},2e3),p(),{stopped:!0,pid:a}}catch(b){p();let a=Error(`Failed to stop headroom proxy: ${b.message}`);throw a.code="STOP_FAILED",a}}async function u(a={}){let b=r();if(b){try{process.kill(b,"SIGTERM")}catch{}for(let a=0;a<30&&q(b);a++)await new Promise(a=>setTimeout(a,100));if(q(b)){try{process.kill(b,"SIGKILL")}catch{}await new Promise(a=>setTimeout(a,300))}p()}return s(a)}async function v(a=[]){let b=Array.isArray(a)?a.filter(a=>j.F_.includes(a)):[],c=(0,j.Su)();if(!c){let a=Error("Python >= 3.10 not found");throw a.code="NO_PYTHON",a}if(!(0,j.kI)()){let a=Error("headroom-ai not installed (run `pip install headroom-ai[proxy]` first)");throw a.code="NOT_INSTALLED",a}let d=["proxy",...b].join(","),f=`headroom-ai[${d}]`;o();let g=e().openSync(n,"w"),i=(0,h.spawn)(c,["-m","pip","install","--upgrade",f],{stdio:["ignore",g,g],windowsHide:!0,env:{...process.env}});return new Promise((a,d)=>{i.once("error",a=>{e().closeSync(g),d(a)}),i.once("exit",h=>{if(e().closeSync(g),0===h)a({success:!0,code:h,spec:f,extras:b,...(0,j.rl)(c)});else{let a=Error(`pip install exited with code=${h} — see headroom/install.log`);a.code="INSTALL_FAILED",d(a)}})})}async function w(a=[]){let b=Array.isArray(a)?a.filter(a=>j.F_.includes(a)):[],c=(0,j.Su)();if(!c){let a=Error("Python >= 3.10 not found");throw a.code="NO_PYTHON",a}let d=[...new Set(b.flatMap(a=>j.Nc[a]||[]))];if(0===d.length){let a=Error("No valid extras to remove");throw a.code="INVALID_EXTRAS",a}let f=["-m","pip","uninstall","-y",...d];o();let g=e().openSync(n,"w"),i=(0,h.spawn)(c,f,{stdio:["ignore",g,g],windowsHide:!0,env:{...process.env}});return new Promise((a,f)=>{i.once("error",a=>{e().closeSync(g),f(a)}),i.once("exit",h=>{if(e().closeSync(g),0===h)a({success:!0,code:h,removed:d,extras:b,...(0,j.rl)(c)});else{let a=Error(`pip uninstall exited with code=${h} — see headroom/install.log`);a.code="UNINSTALL_FAILED",f(a)}})})}function x(a=15){try{if(!e().existsSync(n))return"";return e().readFileSync(n,"utf8").split(/\r?\n/).filter(Boolean).slice(-a).join("\n")}catch{return""}}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=2376,exports.ids=[2376],exports.modules={19617:(a,b,c)=>{c.d(b,{M:()=>d,k:()=>e});let d="X-Switchboard-Model-Catalog";function e(a){return a?.headers?.get?.(d)==="1"}},40694:(a,b,c)=>{c.d(b,{P:()=>e});var d=c(7866);async function e(a,b={}){let c=!!a?.apiKey,f=c?a.apiKey:a?.accessToken;if(!f)return null;let g=new AbortController,h=setTimeout(()=>g.abort(),5e3);b.signal&&"function"!=typeof AbortSignal.any&&b.signal.addEventListener("abort",()=>{clearTimeout(h),g.abort(b.signal.reason)},{once:!0});let i=b.signal&&"function"==typeof AbortSignal.any?AbortSignal.any([b.signal,g.signal]):g.signal;try{let a=c?{Accept:"application/json",Authorization:`Bearer ${f}`}:(0,d.w$)(f,{Accept:"application/json"}),b=await fetch("https://api.cline.bot/api/v1/models",{method:"GET",headers:a,signal:i});if(!b.ok)return null;let e=await b.json(),g=Array.isArray(e)?e:e?.data;if(!Array.isArray(g))return null;let h=g.filter(a=>"string"==typeof a?.id&&a.id.startsWith("cline-pass/")).map(a=>({id:a.id,name:a.name||a.id}));return h.length?{models:h}:null}catch{return null}finally{clearTimeout(h)}}},58255:(a,b,c)=>{c.d(b,{Mz:()=>k});var d=c(67141),e=c(33026);let f=new Map,g=new Map;function h(a){let b=[],c=new Set;for(let d of Array.isArray(a)?a:[]){let a="string"==typeof d?d.trim():d&&"object"==typeof d?String(d.id||d.slug||d.model||d.name||"").trim():"";if(!(!a||c.has(a))){if(c.add(a),"string"==typeof d){b.push({id:a,name:a});continue}b.push({...d,id:a,name:d.display_name||d.displayName||d.name||a})}}return b}async function i(a){if("function"==typeof a.bytes)return Buffer.from(await a.bytes());if("function"==typeof a.arrayBuffer)return Buffer.from(await a.arrayBuffer());if("function"==typeof a.buffer)return Buffer.from(await a.buffer());if(a.body){let b=[];for await(let c of a.body)b.push(Buffer.from(c));return Buffer.concat(b)}throw Error("Provider response does not expose a binary body reader")}async function j(a,b,c,d){let f=new AbortController,g=setTimeout(()=>f.abort(),1e4),j=d.signal&&"function"==typeof AbortSignal.any?AbortSignal.any([d.signal,f.signal]):d.signal||f.signal;try{var k;let f=await fetch(c.url,{method:c.method,headers:function(a,b,c){let d=b?.providerSpecificData?.copilotToken||b?.providerSpecificData?.apiKey||b?.accessToken||b?.apiKey||null;if("cursor-unary-protobuf"===c)return{"Content-Type":"application/proto","Content-Length":"0","Connect-Protocol-Version":"1","x-ghost-mode":b?.providerSpecificData?.ghostMode===!1?"false":"true",...d?{Authorization:`Bearer ${d}`}:{}};let e={...a?.transport?.headers||{},"Content-Type":"application/json"};return d&&(a?.transport?.format==="claude"&&(e["x-api-key"]=d),e.Authorization=`Bearer ${d}`),e}(b,a,c.type),...void 0!==c.body?{body:c.body}:{},cache:"no-store",redirect:"error",signal:j});if(!f.ok){d.log?.warn?.("Provider model discovery request failed",{provider:a?.provider,status:f.status,statusText:f.statusText});try{await f.body?.cancel?.()}catch{}return null}if("cursor-unary-protobuf"===c.type)return function(a){let b=[];for(let c of(0,e.Y8)(a).get(1)||[]){if(2!==c.wireType)continue;let a=(0,e.Y8)(c.value),d=b=>{let c=a.get(b)?.find(a=>2===a.wireType)?.value;return c?Buffer.from(c).toString("utf8").trim():""},f=d(1);if(!f||!/^[a-z0-9][a-z0-9._:/+~-]{1,}$/i.test(f))continue;let g=d(3),h=d(4)||d(5)||g||f;b.push({id:f,name:h,...g?{displayModelId:g}:{}})}return h(b)}(await i(f));return h((k=await f.json(),Array.isArray(k)?k:k?.data||k?.models||k?.results||[]))}finally{clearTimeout(g)}}async function k(a,b={}){let c,e=a?.provider,h=d.A.find(a=>a.id===e),i=function(a){let b=a?.modelsFetcher;if(b?.url)return{url:b.url,method:b.method||"GET",type:b.type||"openai",body:b.body};if(a?.id==="cursor"&&a.oauth?.apiEndpoint&&a.oauth?.modelsEndpoint)return{url:`${a.oauth.apiEndpoint.replace(/\/$/,"")}${a.oauth.modelsEndpoint}`,method:"POST",type:"cursor-unary-protobuf",body:new Uint8Array(0)};try{let b=function(a){let b;if("string"!=typeof a||!a.trim())return null;try{b=new URL(a)}catch{return null}let c=b.pathname.replace(/\/$/,"");return c.endsWith("/models")||(c.endsWith("/chat/completions")?b.pathname=c.slice(0,-17)+"/models":c.endsWith("/messages")?b.pathname=c.slice(0,-9)+"/models":c.endsWith("/responses")?b.pathname=c.slice(0,-10)+"/models":c.endsWith("/api/chat")?b.pathname=c.slice(0,-9)+"/api/tags":b.pathname=`${c}/models`),b.toString()}(a?.transport?.baseUrl);return b?{url:b,method:"GET",type:"openai"}:null}catch{return null}}(h);if(!h||!i)return null;let l=a?.id||null,m=Date.now();if(l&&!b.forceRefresh){let a=f.get(l);if(a&&a.expiresAt>m)return f.delete(l),f.set(l,a),{models:a.models};if(a&&f.delete(l),g.has(l))return g.get(l)}return c=j(a,h,i,b).then(a=>{if(!a?.length)return null;if(l)for(f.delete(l),f.set(l,{expiresAt:Date.now()+3e5,models:a});f.size>256;)f.delete(f.keys().next().value);return{models:a}}).catch(a=>(b.log?.warn?.("Provider model discovery failed",{provider:e,error:a?.message||String(a)}),null)).finally(()=>{g.get(l)===c&&g.delete(l)}),l&&g.set(l,c),c}},58569:(a,b,c)=>{c.d(b,{cW:()=>m});var d=c(47293),e=c(55511),f=c(41029),g=c(57034);let h="1.0.0",i="0.10.32",j="us-east-1",k=new Map;async function l(a,b){let c,f,k,l=a?.providerSpecificData?.profileArn||"",m=function(a){if(!a||"string"!=typeof a)return j;let b=a.split(":");return b.length>=4&&b[3]?(0,g.l6)(b[3],j):j}(l),n=new URLSearchParams;n.set("origin","AI_EDITOR"),l&&n.set("profileArn",l);let o=`https://q.${m}.amazonaws.com/ListAvailableModels?${n.toString()}`,p={...(f=a?.providerSpecificData?.clientId||a?.refreshToken||a?.providerSpecificData?.profileArn||a?.accessToken||"kiro-anonymous",k=(0,e.createHash)("sha256").update(String(f)).digest("hex"),{"User-Agent":`aws-sdk-js/${h} ua/2.1 os/windows#10.0.26200 lang/js md/nodejs#22.21.1 api/codewhispererruntime#${h} m/N,E KiroIDE-${i}-${k}`,"x-amz-user-agent":`aws-sdk-js/${h} KiroIDE-${i}-${k}`,"x-amzn-kiro-agent-mode":"vibe","x-amzn-codewhisperer-optout":"true","amz-sdk-request":"attempt=1; max=1","amz-sdk-invocation-id":(0,d.A)(),Accept:"application/json"}),Authorization:`Bearer ${a?.accessToken||""}`},q=new AbortController,r=setTimeout(()=>q.abort("timeout"),3e4);b&&"function"==typeof b.addEventListener&&b.addEventListener("abort",()=>q.abort(b.reason));try{c=await fetch(o,{method:"GET",headers:p,signal:q.signal})}finally{clearTimeout(r)}if(!c.ok){let a=await c.text().catch(()=>""),b=Error(`Kiro ListAvailableModels ${c.status}: ${a||c.statusText}`);throw b.status=c.status,b.body=a,b}let s=await c.json();return Array.isArray(s?.models)?s.models:[]}async function m(a,b={}){let c,d,g;if(!a||!a.accessToken)return b.log?.debug?.("KIRO_MODELS","No accessToken; skipping live fetch"),null;let h=(g=(d=a?.providerSpecificData||{}).profileArn||d.clientId||a?.refreshToken||a?.accessToken||"anonymous",(0,e.createHash)("sha256").update(`kiro:${g}`).digest("hex")),i=Date.now();if(!b.forceRefresh){let a=k.get(h);if(a&&a.expiresAt>i)return{models:a.models,rawModels:a.rawModels}}try{c=await l(a,b.signal)}catch(d){if(!d||401!==d.status||!a.refreshToken)return b.log?.warn?.("KIRO_MODELS",`ListAvailableModels failed: ${d?.message||d}`),null;{b.log?.info?.("KIRO_MODELS","Got 401 from Kiro; refreshing token");let d=await (0,f.Ql)(a.refreshToken,a.providerSpecificData,b.log);if(!d?.accessToken)return b.log?.warn?.("KIRO_MODELS","Token refresh did not return accessToken"),null;{let e={...a,...d};if("function"==typeof b.onCredentialsRefreshed)try{await b.onCredentialsRefreshed(d)}catch(a){b.log?.warn?.("KIRO_MODELS",`onCredentialsRefreshed failed: ${a?.message||a}`)}try{c=await l(e,b.signal),a.accessToken=e.accessToken,e.refreshToken&&(a.refreshToken=e.refreshToken)}catch(a){return b.log?.warn?.("KIRO_MODELS",`Retry after refresh failed: ${a?.message||a}`),null}}}}let j=[];for(let a of c){if(!a||"object"!=typeof a)continue;let b=a.modelId||a.id;if(!b)continue;let c=function(a,b,c){let d=(a||b||"Kiro").trim(),e=Number(c);if(!Number.isFinite(e)||1e-9>Math.abs(e-1)||e<=0)return`Kiro ${d}`;let f=e.toFixed(1).replace(",",".");return`Kiro ${d} (${f}x credit)`}(a.modelName,b,a.rateMultiplier),d=Number(a?.tokenLimits?.maxInputTokens)||2e5;for(let e of function(a,b){let c,d=((c=a).endsWith("-agentic")&&(c=c.slice(0,-8)),c.endsWith("-thinking")&&(c=c.slice(0,-9)),c),e=b||`Kiro ${d}`,f=[{id:d,name:e,capabilities:{thinking:!1,agentic:!1}},{id:`${d}-thinking`,name:`${e} (Thinking)`,capabilities:{thinking:!0,agentic:!1}}];return"auto"!==d&&(f.push({id:`${d}-agentic`,name:`${e} (Agentic)`,capabilities:{thinking:!1,agentic:!0}}),f.push({id:`${d}-thinking-agentic`,name:`${e} (Thinking + Agentic)`,capabilities:{thinking:!0,agentic:!0}})),f}(b,c))j.push({...e,contextLength:d,rateMultiplier:Number.isFinite(Number(a.rateMultiplier))?Number(a.rateMultiplier):1,upstreamModelId:b,description:a.description||""})}return k.set(h,{expiresAt:i+3e5,models:j,rawModels:c}),{models:j,rawModels:c}}},68393:(a,b,c)=>{c.d(b,{AD:()=>x,El:()=>v,JF:()=>r,LU:()=>u,Ng:()=>o,OU:()=>t,Ro:()=>h,_1:()=>s,ao:()=>l,at:()=>B,i6:()=>A,iO:()=>w,s8:()=>z,wN:()=>y});let d=Object.freeze({PASS_THROUGH:"pass-through",PROXY:"proxy",FULL_CATALOG:"full-catalog"}),e="x-switchboard-claude-mode",f="x-switchboard-claude-models",g="x-switchboard-claude-labels",h="x-switchboard-key",i="claude-switchboard-v1/",j=/^(?:claude|anthropic)-[a-z0-9][a-z0-9._-]*$/i,k=Object.freeze(["ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_OPUS_MODEL_NAME","ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL_NAME","ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_FABLE_MODEL","ANTHROPIC_DEFAULT_FABLE_MODEL_NAME","ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_HAIKU_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME","ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION"]);function l(a){let b=String(a||"");if(!b)return"";let c=0x811c9dc5;for(let a=0;a<b.length;a+=1)c^=b.charCodeAt(a),c=Math.imul(c,0x1000193);return(c>>>0).toString(16).padStart(8,"0")}let m=a=>a.replace(/(^|-)([a-z])/g,(a,b,c)=>`${b}${c.toUpperCase()}`);function n(a,b){if("string"!=typeof a)return"";for(let c of a.split(/\r?\n/)){let a=c.indexOf(":");if(!(a<0)&&c.slice(0,a).trim().toLowerCase()===b)return c.slice(a+1).trim()}return""}function o(a){return"string"==typeof a&&j.test(a)}function p(a){if(!Array.isArray(a))throw TypeError("Claude catalog models must be an array.");let b=[],c=new Set;for(let d of a){if("string"!=typeof d)throw TypeError("Each Claude catalog model must be a string.");let a=d.trim();if(a){if(/\r|\n/.test(a))throw TypeError("Claude catalog model IDs cannot contain newlines.");c.has(a)||(c.add(a),b.push(a))}}return b}function q(a){if("string"!=typeof a||!a.trim())return[];try{return p(JSON.parse(decodeURIComponent(a)))}catch{return[]}}function r(a){return q(n(a,f))}function s(a){return q(a?.get(f))}function t(a,b){if(!a||"object"!=typeof a||Array.isArray(a))return{};let c=new Set(p(b)),d={};for(let[b,e]of Object.entries(a)){if(!c.has(b))continue;let a=String(e||"").trim().replace(/[·•—–]/g," | ").replace(/[\r\n]+/g," ").replace(/\s+/g," ");a&&(d[b]=a.slice(0,48))}return d}function u(a){var b=a?.get(g);if("string"!=typeof b||!b.trim())return{};try{let a=JSON.parse(decodeURIComponent(b));return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}catch{return{}}}function v(a){let b=String(a||"").trim();if(!b)throw TypeError("A Switchboard model ID is required.");let c=b.split("/").map(encodeURIComponent).join("/");return`${i}${c}`}function w(a){if("string"!=typeof a||!a.startsWith(i))return null;let b=a.slice(i.length);if(!b)return null;try{let c=b.split("/").map(decodeURIComponent).join("/");return v(c)===a?c:null}catch{return null}}function x({baseUrl:a,gatewayKey:b,models:c=[],pickerLabels:h={}}){let i=String(a||"").trim().replace(/\/+$/,""),j=String(b||"").trim();if(!i)throw TypeError("A Switchboard endpoint is required.");if(!j)throw TypeError("A Switchboard API key is required.");let l=p(c),n=t(h,l),o=function(a=[],b={}){let c=p(a),h=[`${m(e)}: ${d.FULL_CATALOG}`,`${m(f)}: ${encodeURIComponent(JSON.stringify(p(c)))}`],i=function(a,b={}){let c=t(b,a);return 0===Object.keys(c).length?"":encodeURIComponent(JSON.stringify(c))}(c,b);return i&&h.push(`${m(g)}: ${i}`),h.join("\n")}(l,n);if(new TextEncoder().encode(o).byteLength>7168)throw TypeError("This catalog is too large for Claude Code request headers. Remove models or shorten picker labels.");let q={ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:j,ANTHROPIC_BASE_URL:i.endsWith("/v1")?i:`${i}/v1`,ANTHROPIC_CUSTOM_HEADERS:o,ANTHROPIC_CUSTOM_MODEL_OPTION:"",CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY:"1"};for(let a of k)q[a]="";return{env:q,pickerLabels:n}}function y(a){return n(a,e).toLowerCase()===d.PASS_THROUGH}function z(a){let b=n(a,e).toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}function A(a){return a?.get(e)?.trim().toLowerCase()===d.PASS_THROUGH}function B(a){let b=a?.get(e)?.trim().toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}}};
|
|
1
|
+
"use strict";exports.id=2376,exports.ids=[2376],exports.modules={19617:(a,b,c)=>{c.d(b,{M:()=>d,k:()=>e});let d="X-Switchboard-Model-Catalog";function e(a){return a?.headers?.get?.(d)==="1"}},40694:(a,b,c)=>{c.d(b,{P:()=>g});var d=c(7866),e=c(4630),f=c(46052);async function g(a,b={}){let c=!!a?.apiKey,h=c?a.apiKey:a?.accessToken;if(!h)return null;let i=new AbortController,j=setTimeout(()=>i.abort(),5e3);b.signal&&"function"!=typeof AbortSignal.any&&b.signal.addEventListener("abort",()=>{clearTimeout(j),i.abort(b.signal.reason)},{once:!0});let k=b.signal&&"function"==typeof AbortSignal.any?AbortSignal.any([b.signal,i.signal]):i.signal;try{let a=c?{Accept:"application/json",Authorization:`Bearer ${h}`}:(0,d.w$)(h,{Accept:"application/json"}),g=await (0,f.Fm)("https://api.cline.bot/api/v1/models",{method:"GET",headers:a,signal:k,identity:e.xq.clinepass.identity,provider:"clinepass",format:e.xq.clinepass.format},b.proxyOptions);if(!g.ok)return null;let i=await g.json(),j=Array.isArray(i)?i:i?.data;if(!Array.isArray(j))return null;let l=j.filter(a=>"string"==typeof a?.id&&a.id.startsWith("cline-pass/")).map(a=>({id:a.id,name:a.name||a.id}));return l.length?{models:l}:null}catch{return null}finally{clearTimeout(j)}}},58255:(a,b,c)=>{c.d(b,{Mz:()=>l});var d=c(67141),e=c(33026),f=c(46052);let g=new Map,h=new Map;function i(a){let b=[],c=new Set;for(let d of Array.isArray(a)?a:[]){let a="string"==typeof d?d.trim():d&&"object"==typeof d?String(d.id||d.slug||d.model||d.name||"").trim():"";if(!(!a||c.has(a))){if(c.add(a),"string"==typeof d){b.push({id:a,name:a});continue}b.push({...d,id:a,name:d.display_name||d.displayName||d.name||a})}}return b}async function j(a){if("function"==typeof a.bytes)return Buffer.from(await a.bytes());if("function"==typeof a.arrayBuffer)return Buffer.from(await a.arrayBuffer());if("function"==typeof a.buffer)return Buffer.from(await a.buffer());if(a.body){let b=[];for await(let c of a.body)b.push(Buffer.from(c));return Buffer.concat(b)}throw Error("Provider response does not expose a binary body reader")}async function k(a,b,c,d){let g=new AbortController,h=setTimeout(()=>g.abort(),1e4),k=d.signal&&"function"==typeof AbortSignal.any?AbortSignal.any([d.signal,g.signal]):d.signal||g.signal;try{var l;let g=await (0,f.Fm)(c.url,{method:c.method,headers:function(a,b,c){let d=b?.providerSpecificData?.copilotToken||b?.providerSpecificData?.apiKey||b?.accessToken||b?.apiKey||null;if("cursor-unary-protobuf"===c)return{"Content-Type":"application/proto","Content-Length":"0","Connect-Protocol-Version":"1","x-ghost-mode":b?.providerSpecificData?.ghostMode===!1?"false":"true",...d?{Authorization:`Bearer ${d}`}:{}};let e={...a?.transport?.headers||{},"Content-Type":"application/json"};return d&&(a?.transport?.format==="claude"&&(e["x-api-key"]=d),e.Authorization=`Bearer ${d}`),e}(b,a,c.type),...void 0!==c.body?{body:c.body}:{},cache:"no-store",redirect:"error",signal:k,identity:b.transport.identity,provider:b.id,format:b.transport.format},d.proxyOptions);if(!g.ok){d.log?.warn?.("Provider model discovery request failed",{provider:a?.provider,status:g.status,statusText:g.statusText});try{await g.body?.cancel?.()}catch{}return null}if("cursor-unary-protobuf"===c.type)return function(a){let b=[];for(let c of(0,e.Y8)(a).get(1)||[]){if(2!==c.wireType)continue;let a=(0,e.Y8)(c.value),d=b=>{let c=a.get(b)?.find(a=>2===a.wireType)?.value;return c?Buffer.from(c).toString("utf8").trim():""},f=d(1);if(!f||!/^[a-z0-9][a-z0-9._:/+~-]{1,}$/i.test(f))continue;let g=d(3),h=d(4)||d(5)||g||f;b.push({id:f,name:h,...g?{displayModelId:g}:{}})}return i(b)}(await j(g));return i((l=await g.json(),Array.isArray(l)?l:l?.data||l?.models||l?.results||[]))}finally{clearTimeout(h)}}async function l(a,b={}){let c,e=a?.provider,f=d.A.find(a=>a.id===e),i=function(a){let b=a?.modelsFetcher;if(b?.url)return{url:b.url,method:b.method||"GET",type:b.type||"openai",body:b.body};if(a?.id==="cursor"&&a.oauth?.apiEndpoint&&a.oauth?.modelsEndpoint)return{url:`${a.oauth.apiEndpoint.replace(/\/$/,"")}${a.oauth.modelsEndpoint}`,method:"POST",type:"cursor-unary-protobuf",body:new Uint8Array(0)};try{let b=function(a){let b;if("string"!=typeof a||!a.trim())return null;try{b=new URL(a)}catch{return null}let c=b.pathname.replace(/\/$/,"");return c.endsWith("/models")||(c.endsWith("/chat/completions")?b.pathname=c.slice(0,-17)+"/models":c.endsWith("/messages")?b.pathname=c.slice(0,-9)+"/models":c.endsWith("/responses")?b.pathname=c.slice(0,-10)+"/models":c.endsWith("/api/chat")?b.pathname=c.slice(0,-9)+"/api/tags":b.pathname=`${c}/models`),b.toString()}(a?.transport?.baseUrl);return b?{url:b,method:"GET",type:"openai"}:null}catch{return null}}(f);if(!f||!i)return null;let j=a?.id||null,m=Date.now();if(j&&!b.forceRefresh){let a=g.get(j);if(a&&a.expiresAt>m)return g.delete(j),g.set(j,a),{models:a.models};if(a&&g.delete(j),h.has(j))return h.get(j)}return c=k(a,f,i,b).then(a=>{if(!a?.length)return null;if(j)for(g.delete(j),g.set(j,{expiresAt:Date.now()+3e5,models:a});g.size>256;)g.delete(g.keys().next().value);return{models:a}}).catch(a=>(b.log?.warn?.("Provider model discovery failed",{provider:e,error:a?.message||String(a)}),null)).finally(()=>{h.get(j)===c&&h.delete(j)}),j&&h.set(j,c),c}},58569:(a,b,c)=>{c.d(b,{cW:()=>o});var d=c(47293),e=c(55511),f=c(41029),g=c(57034),h=c(4630),i=c(46052);let j="1.0.0",k="0.10.32",l="us-east-1",m=new Map;async function n(a,b,c){let f,m,n,o=a?.providerSpecificData?.profileArn||"",p=function(a){if(!a||"string"!=typeof a)return l;let b=a.split(":");return b.length>=4&&b[3]?(0,g.l6)(b[3],l):l}(o),q=new URLSearchParams;q.set("origin","AI_EDITOR"),o&&q.set("profileArn",o);let r=`https://q.${p}.amazonaws.com/ListAvailableModels?${q.toString()}`,s={...(m=a?.providerSpecificData?.clientId||a?.refreshToken||a?.providerSpecificData?.profileArn||a?.accessToken||"kiro-anonymous",n=(0,e.createHash)("sha256").update(String(m)).digest("hex"),{"User-Agent":`aws-sdk-js/${j} ua/2.1 os/windows#10.0.26200 lang/js md/nodejs#22.21.1 api/codewhispererruntime#${j} m/N,E KiroIDE-${k}-${n}`,"x-amz-user-agent":`aws-sdk-js/${j} KiroIDE-${k}-${n}`,"x-amzn-kiro-agent-mode":"vibe","x-amzn-codewhisperer-optout":"true","amz-sdk-request":"attempt=1; max=1","amz-sdk-invocation-id":(0,d.A)(),Accept:"application/json"}),Authorization:`Bearer ${a?.accessToken||""}`},t=new AbortController,u=setTimeout(()=>t.abort("timeout"),3e4);b&&"function"==typeof b.addEventListener&&b.addEventListener("abort",()=>t.abort(b.reason));try{f=await (0,i.Fm)(r,{method:"GET",headers:s,signal:t.signal,identity:h.xq.kiro.identity,provider:"kiro",format:h.xq.kiro.format},c)}finally{clearTimeout(u)}if(!f.ok){let a=await f.text().catch(()=>""),b=Error(`Kiro ListAvailableModels ${f.status}: ${a||f.statusText}`);throw b.status=f.status,b.body=a,b}let v=await f.json();return Array.isArray(v?.models)?v.models:[]}async function o(a,b={}){let c,d,g;if(!a||!a.accessToken)return b.log?.debug?.("KIRO_MODELS","No accessToken; skipping live fetch"),null;let h=(g=(d=a?.providerSpecificData||{}).profileArn||d.clientId||a?.refreshToken||a?.accessToken||"anonymous",(0,e.createHash)("sha256").update(`kiro:${g}`).digest("hex")),i=Date.now();if(!b.forceRefresh){let a=m.get(h);if(a&&a.expiresAt>i)return{models:a.models,rawModels:a.rawModels}}try{c=await n(a,b.signal,b.proxyOptions)}catch(d){if(!d||401!==d.status||!a.refreshToken)return b.log?.warn?.("KIRO_MODELS",`ListAvailableModels failed: ${d?.message||d}`),null;{b.log?.info?.("KIRO_MODELS","Got 401 from Kiro; refreshing token");let d=await (0,f.Ql)(a.refreshToken,a.providerSpecificData,b.log,b.proxyOptions);if(!d?.accessToken)return b.log?.warn?.("KIRO_MODELS","Token refresh did not return accessToken"),null;{let e={...a,...d};if("function"==typeof b.onCredentialsRefreshed)try{await b.onCredentialsRefreshed(d)}catch(a){b.log?.warn?.("KIRO_MODELS",`onCredentialsRefreshed failed: ${a?.message||a}`)}try{c=await n(e,b.signal,b.proxyOptions),a.accessToken=e.accessToken,e.refreshToken&&(a.refreshToken=e.refreshToken)}catch(a){return b.log?.warn?.("KIRO_MODELS",`Retry after refresh failed: ${a?.message||a}`),null}}}}let j=[];for(let a of c){if(!a||"object"!=typeof a)continue;let b=a.modelId||a.id;if(!b)continue;let c=function(a,b,c){let d=(a||b||"Kiro").trim(),e=Number(c);if(!Number.isFinite(e)||1e-9>Math.abs(e-1)||e<=0)return`Kiro ${d}`;let f=e.toFixed(1).replace(",",".");return`Kiro ${d} (${f}x credit)`}(a.modelName,b,a.rateMultiplier),d=Number(a?.tokenLimits?.maxInputTokens)||2e5;for(let e of function(a,b){let c,d=((c=a).endsWith("-agentic")&&(c=c.slice(0,-8)),c.endsWith("-thinking")&&(c=c.slice(0,-9)),c),e=b||`Kiro ${d}`,f=[{id:d,name:e,capabilities:{thinking:!1,agentic:!1}},{id:`${d}-thinking`,name:`${e} (Thinking)`,capabilities:{thinking:!0,agentic:!1}}];return"auto"!==d&&(f.push({id:`${d}-agentic`,name:`${e} (Agentic)`,capabilities:{thinking:!1,agentic:!0}}),f.push({id:`${d}-thinking-agentic`,name:`${e} (Thinking + Agentic)`,capabilities:{thinking:!0,agentic:!0}})),f}(b,c))j.push({...e,contextLength:d,rateMultiplier:Number.isFinite(Number(a.rateMultiplier))?Number(a.rateMultiplier):1,upstreamModelId:b,description:a.description||""})}return m.set(h,{expiresAt:i+3e5,models:j,rawModels:c}),{models:j,rawModels:c}}},68393:(a,b,c)=>{c.d(b,{AD:()=>x,El:()=>v,JF:()=>r,LU:()=>u,Ng:()=>o,OU:()=>t,Ro:()=>h,_1:()=>s,ao:()=>l,at:()=>B,i6:()=>A,iO:()=>w,s8:()=>z,wN:()=>y});let d=Object.freeze({PASS_THROUGH:"pass-through",PROXY:"proxy",FULL_CATALOG:"full-catalog"}),e="x-switchboard-claude-mode",f="x-switchboard-claude-models",g="x-switchboard-claude-labels",h="x-switchboard-key",i="claude-switchboard-v1/",j=/^(?:claude|anthropic)-[a-z0-9][a-z0-9._-]*$/i,k=Object.freeze(["ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_OPUS_MODEL_NAME","ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL_NAME","ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_FABLE_MODEL","ANTHROPIC_DEFAULT_FABLE_MODEL_NAME","ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION","ANTHROPIC_DEFAULT_HAIKU_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME","ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION"]);function l(a){let b=String(a||"");if(!b)return"";let c=0x811c9dc5;for(let a=0;a<b.length;a+=1)c^=b.charCodeAt(a),c=Math.imul(c,0x1000193);return(c>>>0).toString(16).padStart(8,"0")}let m=a=>a.replace(/(^|-)([a-z])/g,(a,b,c)=>`${b}${c.toUpperCase()}`);function n(a,b){if("string"!=typeof a)return"";for(let c of a.split(/\r?\n/)){let a=c.indexOf(":");if(!(a<0)&&c.slice(0,a).trim().toLowerCase()===b)return c.slice(a+1).trim()}return""}function o(a){return"string"==typeof a&&j.test(a)}function p(a){if(!Array.isArray(a))throw TypeError("Claude catalog models must be an array.");let b=[],c=new Set;for(let d of a){if("string"!=typeof d)throw TypeError("Each Claude catalog model must be a string.");let a=d.trim();if(a){if(/\r|\n/.test(a))throw TypeError("Claude catalog model IDs cannot contain newlines.");c.has(a)||(c.add(a),b.push(a))}}return b}function q(a){if("string"!=typeof a||!a.trim())return[];try{return p(JSON.parse(decodeURIComponent(a)))}catch{return[]}}function r(a){return q(n(a,f))}function s(a){return q(a?.get(f))}function t(a,b){if(!a||"object"!=typeof a||Array.isArray(a))return{};let c=new Set(p(b)),d={};for(let[b,e]of Object.entries(a)){if(!c.has(b))continue;let a=String(e||"").trim().replace(/[·•—–]/g," | ").replace(/[\r\n]+/g," ").replace(/\s+/g," ");a&&(d[b]=a.slice(0,48))}return d}function u(a){var b=a?.get(g);if("string"!=typeof b||!b.trim())return{};try{let a=JSON.parse(decodeURIComponent(b));return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}catch{return{}}}function v(a){let b=String(a||"").trim();if(!b)throw TypeError("A Switchboard model ID is required.");let c=b.split("/").map(encodeURIComponent).join("/");return`${i}${c}`}function w(a){if("string"!=typeof a||!a.startsWith(i))return null;let b=a.slice(i.length);if(!b)return null;try{let c=b.split("/").map(decodeURIComponent).join("/");return v(c)===a?c:null}catch{return null}}function x({baseUrl:a,gatewayKey:b,models:c=[],pickerLabels:h={}}){let i=String(a||"").trim().replace(/\/+$/,""),j=String(b||"").trim();if(!i)throw TypeError("A Switchboard endpoint is required.");if(!j)throw TypeError("A Switchboard API key is required.");let l=p(c),n=t(h,l),o=function(a=[],b={}){let c=p(a),h=[`${m(e)}: ${d.FULL_CATALOG}`,`${m(f)}: ${encodeURIComponent(JSON.stringify(p(c)))}`],i=function(a,b={}){let c=t(b,a);return 0===Object.keys(c).length?"":encodeURIComponent(JSON.stringify(c))}(c,b);return i&&h.push(`${m(g)}: ${i}`),h.join("\n")}(l,n);if(new TextEncoder().encode(o).byteLength>7168)throw TypeError("This catalog is too large for Claude Code request headers. Remove models or shorten picker labels.");let q={ANTHROPIC_API_KEY:"",ANTHROPIC_AUTH_TOKEN:j,ANTHROPIC_BASE_URL:i.endsWith("/v1")?i:`${i}/v1`,ANTHROPIC_CUSTOM_HEADERS:o,ANTHROPIC_CUSTOM_MODEL_OPTION:"",CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY:"1"};for(let a of k)q[a]="";return{env:q,pickerLabels:n}}function y(a){return n(a,e).toLowerCase()===d.PASS_THROUGH}function z(a){let b=n(a,e).toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}function A(a){return a?.get(e)?.trim().toLowerCase()===d.PASS_THROUGH}function B(a){let b=a?.get(e)?.trim().toLowerCase();return b===d.FULL_CATALOG||b===d.PROXY}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=2409,exports.ids=[2409],exports.modules={62409:(a,b,c)=>{c.d(b,{v:()=>g});var d=c(92990);let e="https://prod.us-east-1.auth.desktop.kiro.dev";function f(a,b){let c=Error(a);return c.code=b,c}class g{async registerClient(a="us-east-1"){(0,d.S6)(a);let b=`https://oidc.${a}.amazonaws.com/client/register`,c=await fetch(b,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientName:d.Tx.clientName,clientType:d.Tx.clientType,scopes:d.Tx.scopes,grantTypes:d.Tx.grantTypes,issuerUrl:d.Tx.issuerUrl})});if(!c.ok){let a=await c.text();throw Error(`Failed to register client: ${a}`)}let e=await c.json();return{clientId:e.clientId,clientSecret:e.clientSecret,clientSecretExpiresAt:e.clientSecretExpiresAt}}async startDeviceAuthorization(a,b,c,e="us-east-1"){(0,d.S6)(e);let f=`https://oidc.${e}.amazonaws.com/device_authorization`,g=await fetch(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:a,clientSecret:b,startUrl:c})});if(!g.ok){let a=await g.text();throw Error(`Failed to start device authorization: ${a}`)}let h=await g.json();return{deviceCode:h.deviceCode,userCode:h.userCode,verificationUri:h.verificationUri,verificationUriComplete:h.verificationUriComplete,expiresIn:h.expiresIn,interval:h.interval||5}}async pollDeviceToken(a,b,c,e="us-east-1"){(0,d.S6)(e);let f=`https://oidc.${e}.amazonaws.com/token`,g=await fetch(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:a,clientSecret:b,deviceCode:c,grantType:"urn:ietf:params:oauth:grant-type:device_code"})}),h=await g.json();return!g.ok||h.error?{success:!1,error:h.error,errorDescription:h.error_description,pending:"authorization_pending"===h.error||"slow_down"===h.error}:{success:!0,tokens:{accessToken:h.accessToken,refreshToken:h.refreshToken,expiresIn:h.expiresIn,tokenType:h.tokenType}}}buildSocialLoginUrl(a,b,c){return`${e}/login?idp=${"google"===a?"Google":"Github"}&redirect_uri=${encodeURIComponent("kiro://kiro.kiroAgent/authenticate-success")}&code_challenge=${b}&code_challenge_method=S256&state=${c}&prompt=select_account`}async exchangeSocialCode(a,b){let c=await fetch(`${e}/oauth/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:a,code_verifier:b,redirect_uri:"kiro://kiro.kiroAgent/authenticate-success"})});if(!c.ok){let a=await c.text();throw Error(`Token exchange failed: ${a}`)}let d=await c.json();return{accessToken:d.accessToken,refreshToken:d.refreshToken,profileArn:d.profileArn,expiresIn:d.expiresIn||3600}}async refreshToken(a,b={}){let{authMethod:c,clientId:f,clientSecret:g,region:h}=b;if(f&&g){let b=h||"us-east-1";(0,d.S6)(b);let c=`https://oidc.${b}.amazonaws.com/token`,e=await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:f,clientSecret:g,refreshToken:a,grantType:"refresh_token"})});if(!e.ok){let a=await e.text();throw Error(`Token refresh failed: ${a}`)}let i=await e.json();return{accessToken:i.accessToken,refreshToken:i.refreshToken||a,profileArn:i.profileArn,expiresIn:i.expiresIn}}let i=await fetch(`${e}/refreshToken`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:a})});if(!i.ok){let a=await i.text();throw Error(`Token refresh failed: ${a}`)}let j=await i.json();return{accessToken:j.accessToken,refreshToken:j.refreshToken||a,profileArn:j.profileArn,expiresIn:j.expiresIn||3600}}async validateImportToken(a){if(!a.startsWith("aorAAAAAG"))throw Error("Invalid token format. Token should start with aorAAAAAG...");try{let b=await this.refreshToken(a);return{accessToken:b.accessToken,refreshToken:b.refreshToken||a,profileArn:b.profileArn,expiresIn:b.expiresIn,authMethod:"imported"}}catch(a){throw Error(`Token validation failed: ${a.message}`)}}async listAvailableProfiles(a,b="us-east-1"){(0,d.S6)(b);let c=`https://codewhisperer.${b}.amazonaws.com`,e=await fetch(c,{method:"POST",headers:{"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.ListAvailableProfiles",Authorization:`Bearer ${a}`,Accept:"application/json"},body:JSON.stringify({maxResults:10})});if(!e.ok){let a=await e.text();throw Error(`Failed to list profiles: ${a}`)}let f=await e.json(),g=Array.isArray(f?.profiles)?f.profiles:[],h=a=>a?.arn||a?.profileArn||null,i=g.find(a=>h(a)?.split(":")[3]===b)||g[0];return h(i)}async verifyApiKey(a,b="us-east-1"){let c;(0,d.S6)(b);let e=`https://codewhisperer.${b}.amazonaws.com`;try{c=await fetch(e,{method:"POST",headers:{"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.ListAvailableModels",Authorization:`Bearer ${a}`,tokentype:"API_KEY",Accept:"application/json"},body:JSON.stringify({origin:"AI_EDITOR"})})}catch(c){let a=c?.cause?.code||c?.code;if("ENOTFOUND"===a||"EAI_AGAIN"===a)throw f(`Could not reach CodeWhisperer in region "${b}". Amazon Q/CodeWhisperer is only reachable in us-east-1 — set the AWS Region to us-east-1 and try again.`,"REGION_UNAVAILABLE");throw f(`Network error contacting CodeWhisperer (${a||"connection failed"}). Check your connection and try again.`,"NETWORK_ERROR")}if(c.ok||400===c.status)return!0;if(401===c.status||403===c.status)throw f("AWS rejected the API key — it is invalid, expired, or not permitted for CodeWhisperer. Note: long-lived Kiro API-key auth for chat is currently limited upstream (kirodotdev/Kiro#7508); if the key is correct, try Builder ID, social login, or Import Token instead.","AUTH_REJECTED");throw f(`CodeWhisperer returned HTTP ${c.status} while validating the key. Try again shortly.`,"VALIDATION_FAILED")}async validateApiKey(a,b="us-east-1"){if(!a||"string"!=typeof a||!a.trim())throw f("API key is required","MISSING_KEY");let c=a.trim();return(0,d.S6)(b),await this.verifyApiKey(c,b),{accessToken:c,refreshToken:null,profileArn:null,region:b,authMethod:"api_key"}}async listAvailableModels(a,b){let c=await fetch("https://codewhisperer.us-east-1.amazonaws.com",{method:"POST",headers:{"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.ListAvailableModels",Authorization:`Bearer ${a}`,Accept:"application/json"},body:JSON.stringify({origin:"AI_EDITOR",profileArn:b})});if(!c.ok){let a=await c.text();throw Error(`Failed to list models: ${a}`)}return((await c.json()).models||[]).map(a=>({id:a.modelId,name:a.modelName||a.modelId,description:a.description,rateMultiplier:a.rateMultiplier,rateUnit:a.rateUnit,maxInputTokens:a.tokenLimits?.maxInputTokens||0}))}extractEmailFromJWT(a){try{let b=a.split(".");if(3!==b.length)return null;let c=b[1];for(;c.length%4;)c+="=";let d=JSON.parse(atob(c.replace(/-/g,"+").replace(/_/g,"/")));return d.email||d.preferred_username||d.sub}catch{return null}}}},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:()=>B,YT:()=>n,ZL:()=>m,cD:()=>o,f7:()=>y,hF:()=>l,lB:()=>w,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=3e5}};
|
|
1
|
+
"use strict";exports.id=2409,exports.ids=[2409],exports.modules={53129:(a,b,c)=>{c.d(b,{J_:()=>l,YR:()=>n,gR:()=>m,js:()=>i,pG:()=>j,ro:()=>h});var d=c(45350),e=c(46052),f=c(75008);let g=["us-east-1","eu-central-1"];function h(a){let b=d.xq[a];if(!b)throw Error(`Missing provider profile: ${a}`);return{identity:b.identity,provider:a,format:b.format}}function i(a,b){let c,d=String(a||"").trim();if(!d)throw Error(`xai discovery ${b} is empty`);try{c=new URL(d)}catch(a){throw Error(`xai discovery ${b} is invalid: ${a.message}`)}if("https:"!==c.protocol)throw Error(`xai discovery ${b} must use https: ${d}`);let e=c.hostname.toLowerCase().trim();if("x.ai"!==e&&!e.endsWith(".x.ai"))throw Error(`xai discovery ${b} host ${e} is not on x.ai`);return d}function j(a){if(!a||"string"!=typeof a)return;let b=a.split(".");if(3===b.length)try{let a=b[1].replace(/-/g,"+").replace(/_/g,"/"),c=(4-a.length%4)%4,d=Buffer.from(a+"=".repeat(c),"base64").toString("utf8"),e=JSON.parse(d);return e.email||e.preferred_username||e.sub||void 0}catch{return}}function k(a){try{if(!a||"string"!=typeof a)return null;let b=a.split(".");if(3!==b.length)return null;let c=b[1].replace(/-/g,"+").replace(/_/g,"/"),d=(4-c.length%4)%4,e=c+"=".repeat(d);return JSON.parse(Buffer.from(e,"base64").toString("utf8"))}catch{return null}}function l(a){let b=k(a);if(b)return b.email||b.preferred_username||b.sub||void 0}async function m(a,b){let c;if(!a)return null;let d="string"==typeof b?b.trim().toLowerCase():"";for(let i of"us-gov-east-1"===(c="string"==typeof b?b.trim().toLowerCase():"")||"us-gov-west-1"===c?[...new Set([c,"us-gov-east-1","us-gov-west-1"])].map(a=>`https://q-fips.${a}.amazonaws.com`):[...[...new Set(g.includes(c)?[c,...g]:g)].map(a=>`https://q.${a}.amazonaws.com`),"https://codewhisperer.us-east-1.amazonaws.com"])try{let b=await (0,e.Fm)(i,{method:"POST",headers:{"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.ListAvailableProfiles",Accept:"application/json",Authorization:`Bearer ${a}`},body:JSON.stringify({maxResults:10}),signal:AbortSignal.timeout(1e4),...h("kiro")});if(!b.ok)continue;let c=await b.json(),g=(Array.isArray(c?.profiles)?c.profiles:[]).map(a=>(0,f.R)(a?.arn||a?.profileArn)).filter(Boolean),j=g.find(a=>a.region===d);if(j)return j.profileArn;if(g[0])return g[0].profileArn}catch{}return null}function n(a){let b=k(a);if(!b)return{};let c=b["https://api.openai.com/auth"]||{};return{email:b.email,chatgptAccountId:c.chatgpt_account_id||b.account_id,chatgptPlanType:c.chatgpt_plan_type||b.plan_type}}},57034:(a,b,c)=>{c.d(b,{i7:()=>e,l6:()=>f});let d=/^[a-z]{2}(?:-[a-z0-9]+)+-\d{1,2}$/;function e(a){return"string"==typeof a&&d.test(a)}function f(a,b="us-east-1"){return e(a)?a:b}},62409:(a,b,c)=>{c.d(b,{v:()=>j});var d=c(92990),e=c(53129),f=c(46052);let g="https://prod.us-east-1.auth.desktop.kiro.dev",h=(0,e.ro)("kiro");function i(a,b){let c=Error(a);return c.code=b,c}class j{async registerClient(a="us-east-1"){(0,d.S6)(a);let b=`https://oidc.${a}.amazonaws.com/client/register`,c=await (0,f.Fm)(b,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientName:d.Tx.clientName,clientType:d.Tx.clientType,scopes:d.Tx.scopes,grantTypes:d.Tx.grantTypes,issuerUrl:d.Tx.issuerUrl}),...h});if(!c.ok){let a=await c.text();throw Error(`Failed to register client: ${a}`)}let e=await c.json();return{clientId:e.clientId,clientSecret:e.clientSecret,clientSecretExpiresAt:e.clientSecretExpiresAt}}async startDeviceAuthorization(a,b,c,e="us-east-1"){(0,d.S6)(e);let g=`https://oidc.${e}.amazonaws.com/device_authorization`,i=await (0,f.Fm)(g,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:a,clientSecret:b,startUrl:c}),...h});if(!i.ok){let a=await i.text();throw Error(`Failed to start device authorization: ${a}`)}let j=await i.json();return{deviceCode:j.deviceCode,userCode:j.userCode,verificationUri:j.verificationUri,verificationUriComplete:j.verificationUriComplete,expiresIn:j.expiresIn,interval:j.interval||5}}async pollDeviceToken(a,b,c,e="us-east-1"){(0,d.S6)(e);let g=`https://oidc.${e}.amazonaws.com/token`,i=await (0,f.Fm)(g,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:a,clientSecret:b,deviceCode:c,grantType:"urn:ietf:params:oauth:grant-type:device_code"}),...h}),j=await i.json();return!i.ok||j.error?{success:!1,error:j.error,errorDescription:j.error_description,pending:"authorization_pending"===j.error||"slow_down"===j.error}:{success:!0,tokens:{accessToken:j.accessToken,refreshToken:j.refreshToken,expiresIn:j.expiresIn,tokenType:j.tokenType}}}buildSocialLoginUrl(a,b,c){return`${g}/login?idp=${"google"===a?"Google":"Github"}&redirect_uri=${encodeURIComponent("kiro://kiro.kiroAgent/authenticate-success")}&code_challenge=${b}&code_challenge_method=S256&state=${c}&prompt=select_account`}async exchangeSocialCode(a,b){let c=await (0,f.Fm)(`${g}/oauth/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:a,code_verifier:b,redirect_uri:"kiro://kiro.kiroAgent/authenticate-success"}),...h});if(!c.ok){let a=await c.text();throw Error(`Token exchange failed: ${a}`)}let d=await c.json();return{accessToken:d.accessToken,refreshToken:d.refreshToken,profileArn:d.profileArn,expiresIn:d.expiresIn||3600}}async refreshToken(a,b={}){let{authMethod:c,clientId:e,clientSecret:i,region:j}=b;if(e&&i){let b=j||"us-east-1";(0,d.S6)(b);let c=`https://oidc.${b}.amazonaws.com/token`,g=await (0,f.Fm)(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:e,clientSecret:i,refreshToken:a,grantType:"refresh_token"}),...h});if(!g.ok){let a=await g.text();throw Error(`Token refresh failed: ${a}`)}let k=await g.json();return{accessToken:k.accessToken,refreshToken:k.refreshToken||a,profileArn:k.profileArn,expiresIn:k.expiresIn}}let k=await (0,f.Fm)(`${g}/refreshToken`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:a}),...h});if(!k.ok){let a=await k.text();throw Error(`Token refresh failed: ${a}`)}let l=await k.json();return{accessToken:l.accessToken,refreshToken:l.refreshToken||a,profileArn:l.profileArn,expiresIn:l.expiresIn||3600}}async validateImportToken(a){if(!a.startsWith("aorAAAAAG"))throw Error("Invalid token format. Token should start with aorAAAAAG...");try{let b=await this.refreshToken(a);return{accessToken:b.accessToken,refreshToken:b.refreshToken||a,profileArn:b.profileArn,expiresIn:b.expiresIn,authMethod:"imported"}}catch(a){throw Error(`Token validation failed: ${a.message}`)}}async listAvailableProfiles(a,b="us-east-1"){(0,d.S6)(b);let c=`https://codewhisperer.${b}.amazonaws.com`,e=await (0,f.Fm)(c,{method:"POST",headers:{"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.ListAvailableProfiles",Authorization:`Bearer ${a}`,Accept:"application/json"},body:JSON.stringify({maxResults:10}),...h});if(!e.ok){let a=await e.text();throw Error(`Failed to list profiles: ${a}`)}let g=await e.json(),i=Array.isArray(g?.profiles)?g.profiles:[],j=a=>a?.arn||a?.profileArn||null,k=i.find(a=>j(a)?.split(":")[3]===b)||i[0];return j(k)}async verifyApiKey(a,b="us-east-1"){let c;(0,d.S6)(b);let e=`https://codewhisperer.${b}.amazonaws.com`;try{c=await (0,f.Fm)(e,{method:"POST",headers:{"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.ListAvailableModels",Authorization:`Bearer ${a}`,tokentype:"API_KEY",Accept:"application/json"},body:JSON.stringify({origin:"AI_EDITOR"}),...h})}catch(c){let a=c?.cause?.code||c?.code;if("ENOTFOUND"===a||"EAI_AGAIN"===a)throw i(`Could not reach CodeWhisperer in region "${b}". Amazon Q/CodeWhisperer is only reachable in us-east-1 — set the AWS Region to us-east-1 and try again.`,"REGION_UNAVAILABLE");throw i(`Network error contacting CodeWhisperer (${a||"connection failed"}). Check your connection and try again.`,"NETWORK_ERROR")}if(c.ok||400===c.status)return!0;if(401===c.status||403===c.status)throw i("AWS rejected the API key — it is invalid, expired, or not permitted for CodeWhisperer. Note: long-lived Kiro API-key auth for chat is currently limited upstream (kirodotdev/Kiro#7508); if the key is correct, try Builder ID, social login, or Import Token instead.","AUTH_REJECTED");throw i(`CodeWhisperer returned HTTP ${c.status} while validating the key. Try again shortly.`,"VALIDATION_FAILED")}async validateApiKey(a,b="us-east-1"){if(!a||"string"!=typeof a||!a.trim())throw i("API key is required","MISSING_KEY");let c=a.trim();return(0,d.S6)(b),await this.verifyApiKey(c,b),{accessToken:c,refreshToken:null,profileArn:null,region:b,authMethod:"api_key"}}async listAvailableModels(a,b){let c=await (0,f.Fm)("https://codewhisperer.us-east-1.amazonaws.com",{method:"POST",headers:{"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.ListAvailableModels",Authorization:`Bearer ${a}`,Accept:"application/json"},body:JSON.stringify({origin:"AI_EDITOR",profileArn:b}),...h});if(!c.ok){let a=await c.text();throw Error(`Failed to list models: ${a}`)}return((await c.json()).models||[]).map(a=>({id:a.modelId,name:a.modelName||a.modelId,description:a.description,rateMultiplier:a.rateMultiplier,rateUnit:a.rateUnit,maxInputTokens:a.tokenLimits?.maxInputTokens||0}))}extractEmailFromJWT(a){try{let b=a.split(".");if(3!==b.length)return null;let c=b[1];for(;c.length%4;)c+="=";let d=JSON.parse(atob(c.replace(/-/g,"+").replace(/_/g,"/")));return d.email||d.preferred_username||d.sub}catch{return null}}}},75008:(a,b,c)=>{c.d(b,{R:()=>f});var d=c(57034);let e=/^arn:(aws|aws-us-gov):codewhisperer:([^:]+):(\d{12}):profile\/([^/]+)$/;function f(a){let b="string"==typeof a?a.trim():"",c=b.match(e);return c&&(0,d.i7)(c[2])?{profileArn:b,region:c[2]}:null}},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:()=>B,YT:()=>n,ZL:()=>m,cD:()=>o,f7:()=>y,hF:()=>l,lB:()=>w,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=3e5}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=3026,exports.ids=[3026],exports.modules={49263:(a,b,c)=>{c.d(b,{Bl:()=>j,Qo:()=>f,S5:()=>l,hk:()=>e,kJ:()=>k});var d=c(87252);function e(a,b,c=0){let f=b?("string"==typeof b?b:JSON.stringify(b)).toLowerCase():"";for(let b of d.t2)if(b.text&&f&&f.includes(b.text)||b.status&&b.status===a){let a=!1!==b.shouldFallback;if(b.backoff){let b=Math.min(c+1,d.EQ.maxLevel);return{shouldFallback:a,cooldownMs:function(a=0){let b=Math.max(0,a-1);return Math.min(d.EQ.base*Math.pow(2,b),d.EQ.max)}(b),newBackoffLevel:b}}return{shouldFallback:a,cooldownMs:b.cooldownMs||0}}return a>=400&&a<500&&408!==a&&429!==a?{shouldFallback:!1,cooldownMs:0}:{shouldFallback:!0,cooldownMs:d.wf}}function f(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}let g="modelLock_",h=`${g}__all`;function i(a){return a?`${g}${a}`:h}function j(a,b){let c=i(b);return[a?.[c],a?.[h]].some(a=>a&&new Date(a).getTime()>Date.now())}function k(a){if(!a)return null;let b=null,c=Date.now();for(let[d,e]of Object.entries(a)){if(!d.startsWith(g)||!e)continue;let a=new Date(e).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}function l(a,b){return{[i(a)]:new Date(Date.now()+b).toISOString()}}},51158:(a,b,c)=>{c.d(b,{g:()=>A,s:()=>B});var d=c(67133),e=c(15717),f=c(38775),g=c(89865),h=c(60290),i=c(41029),j=c(18129),k=c(45350),l=c(46052);let m=Number(process.env.VIDEO_FETCH_TIMEOUT_MS||12e4),n=new Set(["generations","edits","extensions"]);function o(a){return k.B$[a]?.videoConfig||null}function p(a,b=null){if(!a)return a;let c=String(a).replace(/Bearer\s+[A-Za-z0-9._~+/=-]{8,}/gi,"Bearer [redacted]");for(let a of["accessToken","refreshToken","apiKey"]){let d=b?.[a];"string"==typeof d&&d.length>=8&&(c=c.split(d).join("[redacted]"))}return c}async function q({provider:a,action:b=null,requestId:c=null,rawBody:d=null,contentType:e=null,idempotencyKey:f=null,credentials:r,signal:s,timeoutMs:t=m,log:u,onCredentialsRefreshed:v}){let w,x,y,z,A=o(a);if(!A)return(0,g.A1)(h.gx.BAD_REQUEST,`Provider '${a}' does not support video generation`);if(!c&&!n.has(b))return(0,g.A1)(h.gx.BAD_REQUEST,`Unknown video action: ${b}`);let{identity:B,format:C}=(x=k.xq[a]||{},{identity:(o(a)||{}).identity||x.identity||"openai-node",format:x.format||"openai"}),D=c?"GET":"POST",E=(y=A.baseUrl.replace(/\/$/,""),c?`${y}/${encodeURIComponent(c)}`:`${y}/${b}`),F=(z="function"==typeof AbortSignal?.timeout?AbortSignal.timeout(t):null,s&&z&&"function"==typeof AbortSignal.any?AbortSignal.any([s,z]):s||z||void 0),G=b=>(0,l.Fm)(E,{method:D,headers:function({token:a,contentType:b,idempotencyKey:c}){let d={Accept:"application/json"};return a&&(d.Authorization=`Bearer ${a}`),b&&(d["Content-Type"]=b),c&&(d["Idempotency-Key"]=c),d}({token:b,contentType:"POST"===D?e:null,idempotencyKey:"POST"===D?f:null}),body:"POST"===D?d:void 0,signal:F,identity:B,format:C,provider:a});try{w=await G(r?.accessToken||r?.apiKey)}catch(b){if(b?.name==="AbortError"||b?.name==="TimeoutError")return(0,g.A1)(h.gx.REQUEST_TIMEOUT,`[${a}] video ${D} aborted: ${b.message}`);return(0,g.A1)(h.gx.BAD_GATEWAY,p(`[${a}] video upstream fetch failed: ${b.message}`,r))}if((w.status===h.gx.UNAUTHORIZED||w.status===h.gx.FORBIDDEN)&&r?.refreshToken){let b=null;try{b=await (0,j.MF)(a,r,()=>(0,i.$B)(a,r,u))}catch(b){u?.warn?.("TOKEN",`${a} | video refresh error: ${p(b.message,r)}`)}if(b?.accessToken){u?.info?.("TOKEN",`${a.toUpperCase()} | refreshed for video ${D}`),Object.assign(r,b),v&&await v(b);try{await w.body?.cancel?.()}catch{}try{w=await G(r.accessToken||r.apiKey)}catch(b){return(0,g.A1)(h.gx.BAD_GATEWAY,p(`[${a}] video retry after refresh failed: ${b.message}`,r))}}else u?.warn?.("TOKEN",`${a.toUpperCase()} | video refresh failed — account needs re-auth`)}let H=await w.text().catch(()=>"");if(!w.ok){let b=p(H||`HTTP ${w.status}`,r);return(0,g.A1)(w.status,`[${a}] ${b.slice(0,2e3)}`)}return{success:!0,response:new Response(H,{status:w.status,headers:{"Content-Type":w.headers.get("content-type")||"application/json"}})}}var r=c(67828),s=c(7803),t=c(78102),u=c(66077);let v=new Set([h.gx.UNAUTHORIZED,h.gx.FORBIDDEN,h.gx.RATE_LIMITED]);async function w(a){let b=await (0,e.mt)();return(0,t.DM)({settings:b,rawKey:(0,d.Tr)(a),request:a,target:{kind:"model",id:null}})}async function x(a){let b=a.headers.get("content-type")||"";if(b.includes("application/json")){let c,d=await a.text();try{c=JSON.parse(d)}catch{return{error:(0,g.yj)(h.gx.BAD_REQUEST,"Invalid JSON body")}}return{raw:d,parsed:c,contentType:b}}return{raw:Buffer.from(await a.arrayBuffer()),parsed:null,contentType:b}}async function y(a){if(!a?.model)return{provider:"xai",model:null};let b=String(a.model),c=await (0,f.mA)(b);return c.provider?o(c.provider)?{provider:c.provider,model:c.model}:b.includes("/")?{error:(0,g.yj)(h.gx.BAD_REQUEST,`Provider '${c.provider}' does not support video generation`)}:{provider:"xai",model:b}:{error:(0,g.yj)(h.gx.BAD_REQUEST,"Combos are not supported for video generation")}}function z(a,b){if(!b)return a;let c=new Headers(a.headers);return c.set("x-switchboard-connection-id",String(b)),new Response(a.body,{status:a.status,headers:c})}async function A(a,b){let c=await w(a);return c.ok?(0,t.yH)(c.lease,async()=>{let e=await x(a);if(e.error)return e.error;let f=await y(e.parsed);if(f.error)return f.error;let{provider:i,model:j}=f,k=e.raw;e.parsed&&j&&e.parsed.model!==j&&(k=JSON.stringify({...e.parsed,model:j}));let l=a.headers.get("x-connection-id")||null,m="1"===a.headers.get("x-switchboard-strict-connection"),n=a.headers.get("idempotency-key")||null,{clientKeyId:o}=c,t=new Set,w=null,A=null;for(;;){let c=await (0,d.c1)(i,t,j,{preferredConnectionId:l,strictPreferredConnection:m,clientKeyId:o});if(!c||c.allRateLimited){if(c?.allRateLimited){let a=w||c.lastError||"Unavailable",b=A||Number(c.lastErrorCode)||h.gx.SERVICE_UNAVAILABLE;return(0,g.wO)(b,`[${i}/${j||"video"}] ${a}`,c.retryAfter,c.retryAfterHuman)}if(0===t.size)return(0,g.yj)(h.gx.BAD_REQUEST,`No credentials for provider: ${i}`);return(0,g.yj)(A||h.gx.SERVICE_UNAVAILABLE,w||"All accounts unavailable")}let f=await (0,u.G)({provider:i,model:j,connectionId:c.connectionId},async()=>{let f=await (0,r.eU)(i,c),g=await q({provider:i,action:b,rawBody:k,contentType:e.contentType||null,idempotencyKey:n,credentials:f,signal:a.signal,log:s,onCredentialsRefreshed:async a=>{await (0,r.vN)(c.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})}});if(g.success)return await (0,d.Pt)(c.connectionId,c,j),s.info("VIDEO",`${i.toUpperCase()} | ${b} accepted (connection ${c.connectionId})`),{finalResponse:z(g.response,c.connectionId)};let{shouldFallback:h}=await (0,d.vk)(c.connectionId,g.status,p(g.error,f),i,j);return h&&v.has(g.status)?{retry:!0,error:g.error,status:g.status}:{finalResponse:g.response}});if(f.finalResponse)return f.finalResponse;t.add(c.connectionId),w=f.error,A=f.status}}):c.response}async function B(a,b){let c=await w(a);return c.ok?(0,t.yH)(c.lease,async()=>{if(!b)return(0,g.yj)(h.gx.BAD_REQUEST,"Missing video request id");let e=a.headers.get("x-connection-id")||null,{clientKeyId:f}=c,i=await (0,d.c1)("xai",null,null,{preferredConnectionId:e,clientKeyId:f});if(!i||i.allRateLimited)return(0,g.yj)(h.gx.BAD_REQUEST,"No credentials for provider: xai");let j=await (0,r.eU)("xai",i),k=await q({provider:"xai",requestId:b,credentials:j,signal:a.signal,log:s,onCredentialsRefreshed:async a=>{await (0,r.vN)(i.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})}});return k.success?(await (0,d.Pt)(i.connectionId,i,null),z(k.response,i.connectionId)):(await (0,d.vk)(i.connectionId,k.status,p(k.error,j),"xai",null),k.response)}):c.response}},66077:(a,b,c)=>{c.d(b,{G:()=>e});var d=c(23832);async function e({provider:a,model:b,connectionId:c},f){if(!c||"noauth"===c)return f();let g=!1,h=()=>{g||(g=!0,(0,d.uw)(b,a,c,!1))};(0,d.uw)(b,a,c,!0);try{let a=await f();if(a instanceof Response){if(!(a instanceof Response)||!a.body)return h(),a;let b=a.body.getReader();return new Response(new ReadableStream({async pull(a){try{let{done:c,value:d}=await b.read();c?(h(),a.close()):a.enqueue(d)}catch(b){h(),a.error(b)}},async cancel(a){try{await b.cancel(a)}finally{h()}}}),{status:a.status,statusText:a.statusText,headers:a.headers})}return h(),a}catch(a){throw h(),a}}},89865:(a,b,c)=>{c.d(b,{A1:()=>h,lR:()=>j,wO:()=>i,yj:()=>f,zL:()=>g});var d=c(87252);async function e(a,b){let c=a?.body?.getReader?.();if(!c)try{return(await a.text()).slice(0,b)}catch{return""}let d=new TextDecoder,e="",f=0;try{for(;f<b;){let{done:a,value:g}=await c.read();if(a)break;let h=g instanceof Uint8Array?g:new Uint8Array(g),i=b-f;if(e+=d.decode(h.subarray(0,i),{stream:h.byteLength<=i}),f+=Math.min(h.byteLength,i),h.byteLength>i){try{await c.cancel("upstream error body limit")}catch{}break}}return e+d.decode()}catch{return e}finally{try{c.releaseLock?.()}catch{}}}function f(a,b){let c;return new Response(JSON.stringify((c=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""}),{error:{message:b||d.O[a]||"An error occurred",type:c.type,code:c.code}})),{status:a,headers:{"Content-Type":"application/json"}})}async function g(a,b=null){let c=await e(a,65536);if(b&&"function"==typeof b.parseError)try{let e=b.parseError(a,c);if(e&&"object"==typeof e){let b=e.message||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:e.status||a.status,message:b,resetsAtMs:e.resetsAtMs}}}catch{}let f="";try{let a=JSON.parse(c);f="string"==typeof a?.error?.message?a.error.message:"string"==typeof a?.message?a.message:"string"==typeof a?.error_description?a.error_description:"string"==typeof a?.error?a.error:""}catch{f=c}let h=("string"==typeof f?f:"")||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:h}}function h(a,b,c){return{success:!1,status:a,error:b,resetsAtMs:c,response:f(a,b)}}function i(a,b,c,d){let e=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1);return new Response(JSON.stringify({error:{message:`${b} (${d})`}}),{status:a,headers:{"Content-Type":"application/json","Retry-After":String(e)}})}function j(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error",g=a.cause?.code,h=a.cause?.message,i=g||h?` (cause: ${[g,h].filter(Boolean).join(": ")})`:"";return`[${e}]: ${f}${i}`}}};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";exports.id=3072,exports.ids=[3072],exports.modules={1354:(a,b,c)=>{async function d(a,b,c={}){var f;let g,h,i,j;if(!a?.ok)return{ok:!1,reason:"http_error"};let k=(a.headers?.get?.("content-type")||"").toLowerCase();if(!(k.includes("text/event-stream")||k.includes("ndjson"))||!a.body)try{let b=await a.clone().json(),c=o(b),d=c?.prompt_tokens??null,e=c?.completion_tokens??null;if(!(n(b)||"number"==typeof e&&e>0)){try{await a.body?.cancel?.()}catch{}return{ok:!1,reason:"empty_json"}}return{ok:!0,result:a,preInspect:{hasCompletion:!0,tokensIn:d,tokensOut:e,data:b}}}catch{return{ok:!0,result:a,preInspect:{hasCompletion:!1,tokensIn:null,tokensOut:null}}}let l=await e(a.body,2e4,{abortSignal:c.abortSignal||null});return l.accepted?{ok:!0,result:new Response((g=(f=l).prefixChunks||[],h=0,i=f.reader,j=!!f.ended||!i,new ReadableStream({async pull(a){try{if(h<g.length)return void a.enqueue(g[h++]);if(j||!i)return void a.close();let{done:b,value:c}=await i.read();if(b)return void a.close();c&&a.enqueue(c)}catch(b){try{a.error(b)}catch{}}},async cancel(a){if(i)try{await i.cancel(a)}catch{}}})),{status:a.status,statusText:a.statusText,headers:a.headers}),preInspect:{hasCompletion:!!l.sawCompletion,tokensIn:l.tokensIn,tokensOut:l.tokensOut}}:(b?.warn?.("AUTO",`empty stream after probe (${l.reason||"no_content"})`),{ok:!1,reason:l.reason||"empty_stream"})}async function e(a,b=2e4,c={}){if(!a||"function"!=typeof a.getReader)return{accepted:!1,hasContent:!1,reason:"no_body",prefixChunks:[],reader:null};let d=c.abortSignal||null,f=a.getReader(),g=new TextDecoder,h=[],i=null,k=null,n=!1,o="",p=Number.isFinite(b)&&b>0?b:2e4,q=Date.now()+p,r=null,s=null,t=()=>{null!=r&&(clearTimeout(r),r=null)},u=()=>{if(s&&d){try{d.removeEventListener("abort",s)}catch{}s=null}},v=async a=>{t(),u();try{await f.cancel(a||"empty_stream")}catch{}return{accepted:!1,hasContent:!1,reason:a,prefixChunks:h,reader:null,tokensIn:i,tokensOut:k,sawCompletion:!1}},w=a=>(t(),u(),{accepted:!0,hasContent:!0,prefixChunks:h,reader:a?null:f,ended:!!a,tokensIn:i,tokensOut:k,sawCompletion:n});try{for(;;){if(d?.aborted)return v("client_aborted");let a=q-Date.now();if(a<=0)return v("probe_idle_timeout");let b=f.read().then(a=>({kind:"read",r:a})),c=new Promise(b=>{r=setTimeout(()=>b({kind:"timeout"}),a)}),e=d?new Promise(a=>{s=()=>a({kind:"aborted"}),d.aborted?s():d.addEventListener("abort",s,{once:!0})}):null,x=await Promise.race([b,c,e].filter(Boolean));if(t(),"aborted"!==x.kind&&u(),"timeout"===x.kind)return v("probe_idle_timeout");if("aborted"===x.kind)return v("client_aborted");let{done:y,value:z}=x.r;if(y)return t(),u(),{accepted:!1,hasContent:!1,reason:"empty_stream_end",prefixChunks:h,reader:null,ended:!0,tokensIn:i,tokensOut:k,sawCompletion:!1};if(z?.byteLength){q=Date.now()+p,h.push(z);let a=g.decode(z,{stream:!0}),b=o.slice(-64)+a;o=(o+a).slice(-512),l(b)&&(n=!0);let c=m(b);if(c&&(i=c.prompt_tokens??i,(k=c.completion_tokens??k)>0&&(n=!0)),function(a){let b=String(a||"");if(!b.trim())return!0;let c=!1;for(let a of b.split(/\r?\n/)){let b=a.trim();if(b){if((c=!0,!(b.startsWith(":")||/^event:\s*(ping|heartbeat)\s*$/i.test(b)))&&!(b.startsWith("id:")||b.startsWith("retry:"))){if(b.startsWith("data:")){let a=b.slice(5).trim();if(!a||"[DONE]"===a)continue;try{let b=JSON.parse(a);if(b&&("ping"===b.type||"heartbeat"===b.type))continue}catch{}}return!1}}}return c||!b.trim()}(a)||function(a){for(let b of String(a||"").split(/\r?\n/)){let a=b.trim();if(!a.startsWith("data:"))continue;let c=a.slice(5).trim();if(c&&"[DONE]"!==c)try{if(j(JSON.parse(c)))return!0}catch{}}return!1}(b))continue;return w(!1)}z&&h.push(z)}}catch(a){t(),u();try{await f.cancel(a?.message||"probe_error")}catch{}return{accepted:!1,hasContent:!1,reason:"probe_error",prefixChunks:h,reader:null,tokensIn:i,tokensOut:k,sawCompletion:!1}}}async function f(a){if(!a)return{text:"",httpError:"router_http_0",status:0};let b=a.status??0;if(!a.ok){try{await a.text()}catch{}return{text:"",httpError:`router_http_${b}`,status:b}}let c=(a.headers?.get?.("content-type")||"").toLowerCase();try{if(c.includes("text/event-stream")||c.includes("ndjson")){let c=await a.text();return{text:i(c),status:b}}let d=await a.text();try{return{text:g(JSON.parse(d)),status:b}}catch{if(d.includes("data:"))return{text:i(d),status:b};return{text:d,status:b}}}catch{return{text:"",status:b}}}function g(a){if(!a||"object"!=typeof a)return"";let b=a?.choices?.[0];if(b?.message?.content){let a=b.message.content;if("string"==typeof a)return a;if(Array.isArray(a))return a.map(a=>a?.text||a?.content||"").join("")}if("string"==typeof b?.text)return b.text;if(Array.isArray(a?.content))return a.content.map(a=>a?.text||"").join("");if("string"==typeof a?.content)return a.content;let c=a?.candidates?.[0]?.content?.parts;if(Array.isArray(c))return c.map(a=>a?.text||"").join("");if(Array.isArray(a?.output)){let b=[];for(let c of a.output)if(c?.type==="message"&&Array.isArray(c.content))for(let a of c.content)a?.type==="output_text"&&a.text?b.push(a.text):"string"==typeof a?.text&&b.push(a.text);if(b.length)return b.join("")}return""}function h(a){return i(a)}function i(a){let b=[];for(let c of String(a||"").split("\n")){let a=c.trim();if(!a.startsWith("data:"))continue;let d=a.slice(5).trim();if(d&&"[DONE]"!==d)try{let a=JSON.parse(d),c=a?.choices?.[0]?.delta?.content;"string"==typeof c&&b.push(c);let e=a?.choices?.[0]?.message?.content;"string"==typeof e&&b.push(e),a?.type==="content_block_delta"&&a?.delta?.text&&b.push(a.delta.text),a?.delta?.type==="text_delta"&&a?.delta?.text&&b.push(a.delta.text);let f=a?.candidates?.[0]?.content?.parts;if(Array.isArray(f))for(let a of f)"string"==typeof a?.text&&b.push(a.text)}catch{}}return b.join("")}function j(a){return!!a&&"object"==typeof a&&!!(a.error||"error"===a.type||a.choices?.[0]?.error)}function k(a){return l(a)}function l(a){if(!a||a.length<4)return!1;for(let b of String(a).split(/\r?\n/)){let a=b.trim();if(!a.startsWith("data:"))continue;let c=a.slice(5).trim();if(c&&"[DONE]"!==c)try{let a=JSON.parse(c);if(j(a))continue;let b=a?.choices?.[0]?.delta;if("string"==typeof b?.content&&b.content.length>0||Array.isArray(b?.tool_calls)&&b.tool_calls.length>0||b?.function_call&&(b.function_call.name||b.function_call.arguments))return!0;let d=a?.choices?.[0]?.message;if("string"==typeof d?.content&&d.content.length>0||Array.isArray(d?.tool_calls)&&d.tool_calls.length>0||a?.type==="response.output_text.delta"||a?.type==="response.function_call_arguments.delta"||"string"==typeof a?.delta&&a.delta.length>0&&a.type?.includes("output")||a?.type==="content_block_delta"&&(a?.delta?.type==="text_delta"&&a?.delta?.text||a?.delta?.type==="input_json_delta"||"string"==typeof a?.delta?.partial_json||"string"==typeof a?.delta?.text&&a.delta.text&&"thinking_delta"!==a.delta.type)||a?.type==="content_block_start"&&(a?.content_block?.type==="tool_use"||a?.content_block?.type==="text"&&"string"==typeof a.content_block.text&&a.content_block.text.length>0))return!0;let e=a?.candidates?.[0]?.content?.parts;if(Array.isArray(e)){for(let a of e)if(a?.functionCall||"string"==typeof a?.text&&a.text.length>0&&!0!==a.thought)return!0}}catch{}}return!1}function m(a){return!a||a.length<8?null:function(a){let b=null;for(let c of String(a||"").split("\n")){let a=c.trim();if(!a.startsWith("data:"))continue;let d=a.slice(5).trim();if(d&&"[DONE]"!==d)try{let a=JSON.parse(d),c=o(a);c&&(b=c),a?.usage&&(b={prompt_tokens:a.usage.input_tokens??b?.prompt_tokens??0,completion_tokens:a.usage.output_tokens??b?.completion_tokens??0}),a?.message?.usage&&(b={prompt_tokens:a.message.usage.input_tokens??0,completion_tokens:a.message.usage.output_tokens??0})}catch{}}return b}(a.length>8e3?a.slice(-8e3):a)}function n(a){if(!a||"object"!=typeof a)return!1;if(g(a).length>0)return!0;let b=a?.choices?.[0],c=b?.message;if(Array.isArray(c?.tool_calls)&&c.tool_calls.length>0||c?.function_call&&(c.function_call.name||c.function_call.arguments)||Array.isArray(a?.content)&&a.content.some(a=>a?.type==="tool_use"||a?.type==="function")||Array.isArray(a?.output)&&a.output.some(a=>a?.type==="function_call"||a?.type==="tool_call"||a?.type==="custom_tool_call"))return!0;let d=a?.candidates?.[0]?.content?.parts;return!!(Array.isArray(d)&&d.some(a=>a?.functionCall))}function o(a){return a&&"object"==typeof a?a.usage?.prompt_tokens!=null||a.usage?.completion_tokens!=null?{prompt_tokens:a.usage.prompt_tokens??0,completion_tokens:a.usage.completion_tokens??0}:a.usage?.input_tokens!=null||a.usage?.output_tokens!=null?{prompt_tokens:a.usage.input_tokens??0,completion_tokens:a.usage.output_tokens??0}:a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount??0,completion_tokens:a.usageMetadata.candidatesTokenCount??0}:null:null}c.d(b,{Ah:()=>m,Ki:()=>k,NT:()=>h,R5:()=>n,dO:()=>f,f5:()=>o,wx:()=>d})},3072:(a,b,c)=>{c.d(b,{Pr:()=>z,UP:()=>w,Vu:()=>x,t8:()=>v,vt:()=>D,xP:()=>s});var d=c(49263),e=c(89865),f=c(43904),g=c(48644),h=c(17717),i=c(19956),j=c(48664),k=c(45894),l=c(4905),m=c(1354),n=c(5770);let o=new Set(["vision","pdf","audioInput","videoInput"]),p="[Called tools: ",q="[Tool result: ";function r(a){return a.filter(a=>a).map(a=>{if("tool"===a.role||"function"===a.role)return{role:"assistant",content:`${q}${(0,g.kU)(a.content)||String(a.content??"")}]`};if("assistant"===a.role&&Array.isArray(a.tool_calls)){let{tool_calls:b,...c}=a,d=b.map(a=>a?.function?.name||a?.name||"tool").join(", "),e=(0,g.kU)(c.content)||("string"==typeof c.content?c.content:"");return{...c,content:`${e}${e?"\n":""}${p}${d}]`}}if(Array.isArray(a.content)){let b=a.content.some(a=>"tool_use"===a.type),c=a.content.some(a=>"tool_result"===a.type);if(b||c){let b=[],c=[],d=[];for(let e of a.content)"text"===e.type&&e.text&&b.push(e.text),"tool_use"===e.type&&c.push(e.name||"tool"),"tool_result"===e.type&&d.push((0,g.kU)(e.content)||String(e.content??""));let{...e}=a,f=b.join("\n");return c.length>0&&(f=`${f}${f?"\n":""}${p}${c.join(", ")}]`),d.length>0&&(f=`${f}${f?"\n":""}${q}${d.join("\n")}]`),{...e,content:f}}}return a})}function s(a,b){if(!b||0===b.size||!Array.isArray(a)||a.length<=1)return a;let c=[...b].filter(a=>o.has(a)),d=[...b].filter(a=>!o.has(a)),e=a.map((a,b)=>{let e,g,h,i;return{m:a,i:b,t:(g=(e="string"==typeof a?a.indexOf("/"):-1)>0?a.slice(0,e):"",h=e>0?a.slice(e+1):a,i=(0,f.nl)(g,h),c.every(a=>!0===i[a])?+!d.every(a=>!0===i[a]):2)}}).sort((a,b)=>a.t-b.t||a.i-b.i).map(a=>a.m);return e.every((b,c)=>b===a[c])?a:e}let t=new Map;function u(a){if(!Array.isArray(a)||0===a.length)return[];let b=a=>"assistant"===a||"model"===a,c=a.length-1;for(;c>=0&&!b(a[c]?.role);)c--;return a.slice(c+1)}function v(a){let b=new Set;if(!a||"object"!=typeof a)return b;let c=a=>{if(!a||"object"!=typeof a)return;let c=a.type;("image_url"===c||"image"===c||"input_image"===c)&&b.add("vision"),("file"===c||"document"===c||"input_file"===c)&&b.add("pdf");let d=a.inlineData?.mimeType||a.fileData?.mimeType;"string"==typeof d&&d.startsWith("image/")&&b.add("vision"),"application/pdf"===d&&b.add("pdf")},d=a=>{if(Array.isArray(a))for(let b of a)c(b)};for(let b of u(a.messages))d(b.content);for(let b of u(a.input))d(b.content);for(let b of u(a.contents||a.request?.contents))d(b.parts);return Array.isArray(a.tools)&&a.tools.some(a=>a?.type==="web_search"||a?.type==="web_search_preview")&&b.add("search"),b}function w(a){a?t.delete(a):t.clear()}function x(a,b){if(a.includes("/"))return null;let c=(Array.isArray(b)?b:b?.combos||[]).find(b=>b.name===a);return c&&c.models&&c.models.length>0?c.models:null}function y(){return new Response(JSON.stringify({error:{message:"Request aborted"}}),{status:499,headers:{"Content-Type":"application/json"}})}async function z({body:a,models:b,handleSingleModel:c,log:f,comboName:g,comboStrategy:h,comboStickyLimit:i=1,autoSwitch:j=!0,providerStrategy:k="off",providerOrder:l=[],providerLatencyMs:o={},providerUsage:p={},providerQuota:q={},providerLatencyGuardMs:r,abortSignal:u=null,clientAbortSignal:w=null,signal:x=null,childComboDepth:A=0}){let B=u||w||x||null;if(B?.aborted)return y();let C=function(a,b,c,d=1){let e;if(!a||a.length<=1||"round-robin"!==c)return a;let f=b||"__default__",g=Number.isFinite(e=Number.parseInt(d,10))&&e>0?e:1,h=t.get(f),i="number"==typeof h?{index:h,consecutiveUseCount:0}:h||{index:0,consecutiveUseCount:0},j=i.index%a.length,k=function(a,b){let c=[...a];for(let a=0;a<b;a++){let a=c.shift();c.push(a)}return c}(a,j),l=i.consecutiveUseCount+1;return l>=g?t.set(f,{index:(j+1)%a.length,consecutiveUseCount:0}):t.set(f,{index:j,consecutiveUseCount:l}),k}(b,g,h,i),D=j||"off"!==k?v(a):null;if(j&&D?.size>0){let a=s(C,D);a[0]!==C[0]&&f.info("COMBO",`auto-switch for [${[...D].join(",")}] → ${a[0]}`),C=a}if("off"!==k)try{let a=(0,n.vL)(C,{strategy:k,providerOrder:l,providerLatencyMs:o,providerUsage:p,providerQuota:q,guardMs:r??n.Qm,rotationKey:g});C=D?.size>0?s(a,D):a}catch{}let E=null,F=null,G=null;for(let b=0;b<C.length;b++){let e=C[b];f.info("COMBO",`Trying model ${b+1}/${C.length}: ${e}`);try{let b="function"==typeof structuredClone?structuredClone(a):JSON.parse(JSON.stringify(a)),g=await c(b,e,{signal:B||void 0,comboDepth:A});if(B?.aborted)return y();if(g.ok){let a=await (0,m.wx)(g,f,{abortSignal:B});if(B?.aborted)return y();if(a.ok)return f.info("COMBO",`Model ${e} succeeded`),a.result;E=a.reason||"empty_2xx",f.warn("COMBO",`Model ${e} returned empty/incomplete 2xx (${a.reason}), falling back`);continue}let h=g.statusText||"",i=null;try{let a=await g.clone().json();h=a?.error?.message||a?.error||a?.message||h,i=a?.retryAfter||null}catch{}if(i&&(!F||new Date(i)<new Date(F))&&(F=i),"string"!=typeof h)try{h=JSON.stringify(h)}catch{h=String(h)}let j=404===g.status,{shouldFallback:k,cooldownMs:l}=(0,d.hk)(g.status,h);if(!(j||k))return f.warn("COMBO",`Model ${e} failed (no fallback)`,{status:g.status}),g;if(l&&l>0&&l<=5e3&&(503===g.status||502===g.status||504===g.status)){if(f.info("COMBO",`Model ${e} transient ${g.status}, waiting ${l}ms then retrying`),await function(a,b){return new Promise(!b||a<=0?b=>setTimeout(b,a):c=>{let d=null,e=()=>{d&&clearTimeout(d),b.removeEventListener("abort",e),c()};d=setTimeout(e,a),b.aborted?e():b.addEventListener("abort",e,{once:!0})})}(l,B),B?.aborted)return y();try{let b="function"==typeof structuredClone?structuredClone(a):JSON.parse(JSON.stringify(a)),d=await c(b,e,{signal:B||void 0,comboDepth:A});if(B?.aborted)return y();if(d.ok){let a=await (0,m.wx)(d,f,{abortSignal:B});if(B?.aborted)return y();if(a.ok)return f.info("COMBO",`Model ${e} succeeded on retry after ${l}ms cooldown`),a.result}E=`retry_${d.status}_${d.statusText||""}`,G||(G=d.status),f.warn("COMBO",`Model ${e} retry also failed (${d.status}), moving on`);continue}catch(a){E=a.message||String(a),G||(G=503),f.warn("COMBO",`Model ${e} retry threw error`,{error:E});continue}}E=h||String(g.status),G||(G=g.status),f.warn("COMBO",`Model ${e} failed, trying next`,{status:g.status})}catch(a){if(B?.aborted)return y();E=a.message||String(a),G||(G=500),f.warn("COMBO",`Model ${e} threw error, trying next`,{error:E})}}let H=E&&E.toLowerCase().includes("no credentials")?503:G||503,I=E||"All combo models unavailable";if(F){let a=(0,d.Qo)(F);return f.warn("COMBO",`All models failed | ${I} (${a})`),(0,e.wO)(H,I,F,a)}return f.warn("COMBO",`All models failed | ${I}`),new Response(JSON.stringify({error:{message:I}}),{status:H,headers:{"Content-Type":"application/json"}})}function A(a){if(!a||"object"!=typeof a)return"";let b=a.choices?.[0];if(b){let a=b.message??b.delta??{},c=(0,g.kU)(a.content);if(c.trim())return c;if("string"==typeof b.text&&b.text.trim())return b.text}let c=(0,g.kU)(a.content);if(c.trim())return c;let d=a.candidates?.[0]?.content?.parts;if(Array.isArray(d)){let a=d.map(a=>a?.text||"").join("");if(a.trim())return a}let e=a.response?.candidates?.[0]?.content?.parts;if(Array.isArray(e)){let a=e.map(a=>a?.text||"").join("");if(a.trim())return a}if(Array.isArray(a.output)){let b=a.output.flatMap(a=>Array.isArray(a.content)?a.content.map(a=>a?.text||""):[]).join("");if(b.trim())return b}return""}async function B(a,b,c){var d;let e,f;if(!a?.ok||b?.stream!==!0||(a.headers?.get?.("content-type")||"").toLowerCase().includes("text/event-stream"))return a;try{let b="function"==typeof a.clone?a.clone():a;e=await b.json()}catch{return a}let g=(d=e,(f=function(a){try{return(0,h.Tz)(a)||i.h.OPENAI}catch{return i.h.OPENAI}}(b))!==i.h.OPENAI?f:d?.type==="message"||Array.isArray(d?.content)?i.h.CLAUDE:d?.object==="response"||Array.isArray(d?.output)&&b?.input?i.h.OPENAI_RESPONSES:Array.isArray(d?.candidates)||Array.isArray(d?.response?.candidates)?b?.userAgent===i.h.ANTIGRAVITY?i.h.ANTIGRAVITY:i.h.GEMINI:f),m=function(a,b,c){let d=`chatcmpl-${Date.now()}`,e=c||b?.model||"combo",f=Math.floor(Date.now()/1e3);if(Array.isArray(a?.choices)&&a.choices.length>0)return{...a,id:a.id||d,object:a.object||"chat.completion",created:a.created||f,model:a.model||e,choices:a.choices.map((a,b)=>({...a,index:a.index??b,message:{role:a.message?.role||"assistant",...a.message||{}}}))};let g=function(a){if(!a||"object"!=typeof a)return"";let b=a.choices?.[0]?.message?.reasoning_content;if("string"==typeof b)return b;let c=Array.isArray(a.content)?a.content.filter(a=>a?.type==="thinking").map(a=>a.thinking||"").join(""):"";if(c)return c;let d=a.candidates?.[0]?.content?.parts||a.response?.candidates?.[0]?.content?.parts;return Array.isArray(d)?d.filter(a=>a?.thought===!0).map(a=>a.text||"").join(""):""}(a);return{id:a?.id||d,object:"chat.completion",created:a?.created||f,model:a?.model||e,choices:[{index:0,message:{role:"assistant",content:A(a),...g?{reasoning_content:g}:{}},finish_reason:a?.stop_reason||"stop"}],...a?.usage?{usage:a.usage}:{}}}(e,b,c),n=(0,j.Ws)(g),o=[];for(let a of function(a){let b=a.choices?.[0]||{},c=b.message||{},d={role:c.role||"assistant"};for(let a of["content","reasoning_content","tool_calls","function_call"])void 0!==c[a]&&(d[a]=c[a]);let e={id:a.id,object:"chat.completion.chunk",created:a.created,model:a.model};return[{...e,choices:[{index:b.index??0,delta:d,finish_reason:null}]},{...e,choices:[{index:b.index??0,delta:{},finish_reason:b.finish_reason||(c.tool_calls?"tool_calls":"stop")}],...a.usage?{usage:a.usage}:{}}]}(m))for(let b of(0,j.Y8)(i.h.OPENAI,g,a,n)||[])null!=b&&o.push((0,k.v8)(b,g));for(let a of(0,j.Y8)(i.h.OPENAI,g,null,n)||[])null!=a&&o.push((0,k.v8)(a,g));return(g===i.h.OPENAI||g===i.h.OPENAI_RESPONSES)&&o.push(l.$U),new Response(o.join(""),{status:a.status,headers:l.RK})}let C={minPanel:2,stragglerGraceMs:8e3,panelHardTimeoutMs:9e4};async function D({body:a,models:b,handleSingleModel:c,log:d,comboName:e,judgeModel:f,tuning:g,abortSignal:h=null,clientAbortSignal:i=null,signal:j=null,childComboDepth:k=0}){var l;let m,n,o=h||i||j||null;if(o?.aborted)return y();let p=Array.isArray(b)?b.filter(Boolean):[];if(0===p.length)return new Response(JSON.stringify({error:{message:"Fusion combo has no models"}}),{status:400,headers:{"Content-Type":"application/json"}});if(1===p.length)try{let b=await c(a,p[0],{signal:o||void 0,comboDepth:k});return B(b,a,p[0])}catch(a){if(o?.aborted)return y();throw a}let q={...C,...g||{}},s=Math.min(Math.max(2,q.minPanel),p.length),t=f&&f.trim()?f.trim():p[0];d.info("FUSION",`Combo "${e}" | panel=${p.length} [${p.join(", ")}] | judge=${t} | quorum=${s}`);let{tools:u,tool_choice:v,...w}=a,x={...w,stream:!1};Array.isArray(x.messages)?x.messages=r(x.messages):Array.isArray(x.input)&&(x.input=r(x.input));let z=Date.now(),E=p.map(()=>new AbortController),F=E.map(a=>(function(...a){let b=a.filter(a=>a&&"object"==typeof a);if(0===b.length)return;if(1===b.length)return b[0];if("function"==typeof AbortSignal.any)return AbortSignal.any(b);let c=new AbortController,d=a=>{try{c.abort(a?.target?.reason)}catch{}};for(let a of b){if(a.aborted){d({target:a});break}a.addEventListener("abort",d,{once:!0})}return c.signal})(o,a.signal)),G=p.map((a,b)=>{var d,e,f;return d=c(x,a,{isPanel:!0,signal:F[b],comboDepth:k}),e=q.panelHardTimeoutMs,f=E[b],new Promise(a=>{let b=setTimeout(()=>{try{f?.abort?.(Error("fusion panel hard timeout"))}catch{}a({__timeout:!0})},e);Promise.resolve(d).then(c=>{clearTimeout(b),a(c)}).catch(c=>{clearTimeout(b),c?.name==="AbortError"||f?.signal?.aborted?a({__timeout:!0,__aborted:!0}):a({__error:c})})})}),H=await function(a,{minPanel:b,stragglerGraceMs:c,panelHardTimeoutMs:d,abortControllers:e=[],abortSignal:f=null}){return new Promise(g=>{let h=Array(a.length),i=0,j=0,k=!1,l=null,m=null,n=()=>o(),o=()=>{if(!k){for(let a of(k=!0,m&&clearTimeout(m),l&&clearTimeout(l),f?.removeEventListener?.("abort",n),e))if(a&&!a.signal.aborted)try{a.abort(Error("fusion panel collection finished"))}catch{}g(h)}};if(m=setTimeout(o,d),f){if(f.aborted)return void o();f.addEventListener("abort",n,{once:!0})}a.forEach((d,e)=>{Promise.resolve(d).then(a=>{h[e]=a}).catch(a=>{h[e]={__error:a}}).finally(()=>{if(i++,h[e]&&h[e].ok&&j++,i===a.length)return o();j>=b&&!l&&(l=setTimeout(o,c))})})})}(G,{...q,minPanel:s,abortControllers:E,abortSignal:o});if(d.info("FUSION",`fan-out collected in ${Date.now()-z}ms`),o?.aborted)return y();let I=[];for(let a=0;a<H.length;a++){let b=H[a],c=p[a];if(!b){d.warn("FUSION",`Panel ${c} dropped (straggler/timeout)`);continue}if(b.__timeout){d.warn("FUSION",`Panel ${c} timed out`);continue}if(b.__error){d.warn("FUSION",`Panel ${c} threw`,{error:b.__error?.message||String(b.__error)});continue}if(!b.ok){d.warn("FUSION",`Panel ${c} failed`,{status:b.status});continue}try{let a=await b.clone().json(),e=A(a);e?(I.push({model:c,text:e,json:a,response:b}),d.info("FUSION",`Panel ${c} ok (${e.length} chars)`)):d.warn("FUSION",`Panel ${c} returned empty content`)}catch(a){d.warn("FUSION",`Panel ${c} unparseable`,{error:a.message||String(a)})}}if(0===I.length)return d.warn("FUSION","All panel models failed"),new Response(JSON.stringify({error:{message:"All fusion panel models failed"}}),{status:503,headers:{"Content-Type":"application/json"}});if(1===I.length)return d.info("FUSION",`Only ${I[0].model} succeeded — returning buffered answer (no re-dispatch)`),B(I[0].response,a,I[0].model);let J=(m=I.map((a,b)=>`[Source ${b+1}]
|
|
1
|
+
"use strict";exports.id=3072,exports.ids=[3072],exports.modules={1354:(a,b,c)=>{async function d(a,b,c={}){var f;let g,h,i,j;if(!a?.ok)return{ok:!1,reason:"http_error"};let k=(a.headers?.get?.("content-type")||"").toLowerCase();if(!(k.includes("text/event-stream")||k.includes("ndjson"))||!a.body)try{let b=await a.clone().json(),c=o(b),d=c?.prompt_tokens??null,e=c?.completion_tokens??null;if(!(n(b)||"number"==typeof e&&e>0)){try{await a.body?.cancel?.()}catch{}return{ok:!1,reason:"empty_json"}}return{ok:!0,result:a,preInspect:{hasCompletion:!0,tokensIn:d,tokensOut:e,data:b}}}catch{return{ok:!0,result:a,preInspect:{hasCompletion:!1,tokensIn:null,tokensOut:null}}}let l=await e(a.body,2e4,{abortSignal:c.abortSignal||null});return l.accepted?{ok:!0,result:new Response((g=(f=l).prefixChunks||[],h=0,i=f.reader,j=!!f.ended||!i,new ReadableStream({async pull(a){try{if(h<g.length)return void a.enqueue(g[h++]);if(j||!i)return void a.close();let{done:b,value:c}=await i.read();if(b)return void a.close();c&&a.enqueue(c)}catch(b){try{a.error(b)}catch{}}},async cancel(a){if(i)try{await i.cancel(a)}catch{}}})),{status:a.status,statusText:a.statusText,headers:a.headers}),preInspect:{hasCompletion:!!l.sawCompletion,tokensIn:l.tokensIn,tokensOut:l.tokensOut}}:(b?.warn?.("AUTO",`empty stream after probe (${l.reason||"no_content"})`),{ok:!1,reason:l.reason||"empty_stream"})}async function e(a,b=2e4,c={}){if(!a||"function"!=typeof a.getReader)return{accepted:!1,hasContent:!1,reason:"no_body",prefixChunks:[],reader:null};let d=c.abortSignal||null,f=a.getReader(),g=new TextDecoder,h=[],i=null,k=null,n=!1,o="",p=Number.isFinite(b)&&b>0?b:2e4,q=Date.now()+p,r=null,s=null,t=()=>{null!=r&&(clearTimeout(r),r=null)},u=()=>{if(s&&d){try{d.removeEventListener("abort",s)}catch{}s=null}},v=async a=>{t(),u();try{await f.cancel(a||"empty_stream")}catch{}return{accepted:!1,hasContent:!1,reason:a,prefixChunks:h,reader:null,tokensIn:i,tokensOut:k,sawCompletion:!1}},w=a=>(t(),u(),{accepted:!0,hasContent:!0,prefixChunks:h,reader:a?null:f,ended:!!a,tokensIn:i,tokensOut:k,sawCompletion:n});try{for(;;){if(d?.aborted)return v("client_aborted");let a=q-Date.now();if(a<=0)return v("probe_idle_timeout");let b=f.read().then(a=>({kind:"read",r:a})),c=new Promise(b=>{r=setTimeout(()=>b({kind:"timeout"}),a)}),e=d?new Promise(a=>{s=()=>a({kind:"aborted"}),d.aborted?s():d.addEventListener("abort",s,{once:!0})}):null,x=await Promise.race([b,c,e].filter(Boolean));if(t(),"aborted"!==x.kind&&u(),"timeout"===x.kind)return v("probe_idle_timeout");if("aborted"===x.kind)return v("client_aborted");let{done:y,value:z}=x.r;if(y)return t(),u(),{accepted:!1,hasContent:!1,reason:"empty_stream_end",prefixChunks:h,reader:null,ended:!0,tokensIn:i,tokensOut:k,sawCompletion:!1};if(z?.byteLength){q=Date.now()+p,h.push(z);let a=g.decode(z,{stream:!0}),b=o.slice(-64)+a;o=(o+a).slice(-512),l(b)&&(n=!0);let c=m(b);if(c&&(i=c.prompt_tokens??i,(k=c.completion_tokens??k)>0&&(n=!0)),function(a){let b=String(a||"");if(!b.trim())return!0;let c=!1;for(let a of b.split(/\r?\n/)){let b=a.trim();if(b){if((c=!0,!(b.startsWith(":")||/^event:\s*(ping|heartbeat)\s*$/i.test(b)))&&!(b.startsWith("id:")||b.startsWith("retry:"))){if(b.startsWith("data:")){let a=b.slice(5).trim();if(!a||"[DONE]"===a)continue;try{let b=JSON.parse(a);if(b&&("ping"===b.type||"heartbeat"===b.type))continue}catch{}}return!1}}}return c||!b.trim()}(a)||function(a){for(let b of String(a||"").split(/\r?\n/)){let a=b.trim();if(!a.startsWith("data:"))continue;let c=a.slice(5).trim();if(c&&"[DONE]"!==c)try{if(j(JSON.parse(c)))return!0}catch{}}return!1}(b))continue;return w(!1)}z&&h.push(z)}}catch(a){t(),u();try{await f.cancel(a?.message||"probe_error")}catch{}return{accepted:!1,hasContent:!1,reason:"probe_error",prefixChunks:h,reader:null,tokensIn:i,tokensOut:k,sawCompletion:!1}}}async function f(a){if(!a)return{text:"",httpError:"router_http_0",status:0};let b=a.status??0;if(!a.ok){try{await a.text()}catch{}return{text:"",httpError:`router_http_${b}`,status:b}}let c=(a.headers?.get?.("content-type")||"").toLowerCase();try{if(c.includes("text/event-stream")||c.includes("ndjson")){let c=await a.text();return{text:i(c),status:b}}let d=await a.text();try{return{text:g(JSON.parse(d)),status:b}}catch{if(d.includes("data:"))return{text:i(d),status:b};return{text:d,status:b}}}catch{return{text:"",status:b}}}function g(a){if(!a||"object"!=typeof a)return"";let b=a?.choices?.[0];if(b?.message?.content){let a=b.message.content;if("string"==typeof a)return a;if(Array.isArray(a))return a.map(a=>a?.text||a?.content||"").join("")}if("string"==typeof b?.text)return b.text;if(Array.isArray(a?.content))return a.content.map(a=>a?.text||"").join("");if("string"==typeof a?.content)return a.content;let c=a?.candidates?.[0]?.content?.parts;if(Array.isArray(c))return c.map(a=>a?.text||"").join("");if(Array.isArray(a?.output)){let b=[];for(let c of a.output)if(c?.type==="message"&&Array.isArray(c.content))for(let a of c.content)a?.type==="output_text"&&a.text?b.push(a.text):"string"==typeof a?.text&&b.push(a.text);if(b.length)return b.join("")}return""}function h(a){return i(a)}function i(a){let b=[];for(let c of String(a||"").split("\n")){let a=c.trim();if(!a.startsWith("data:"))continue;let d=a.slice(5).trim();if(d&&"[DONE]"!==d)try{let a=JSON.parse(d),c=a?.choices?.[0]?.delta?.content;"string"==typeof c&&b.push(c);let e=a?.choices?.[0]?.message?.content;"string"==typeof e&&b.push(e),a?.type==="content_block_delta"&&a?.delta?.text&&b.push(a.delta.text),a?.delta?.type==="text_delta"&&a?.delta?.text&&b.push(a.delta.text);let f=a?.candidates?.[0]?.content?.parts;if(Array.isArray(f))for(let a of f)"string"==typeof a?.text&&b.push(a.text)}catch{}}return b.join("")}function j(a){return!!a&&"object"==typeof a&&!!(a.error||"error"===a.type||a.choices?.[0]?.error)}function k(a){return l(a)}function l(a){if(!a||a.length<4)return!1;for(let b of String(a).split(/\r?\n/)){let a=b.trim();if(!a.startsWith("data:"))continue;let c=a.slice(5).trim();if(c&&"[DONE]"!==c)try{let a=JSON.parse(c);if(j(a))continue;let b=a?.choices?.[0]?.delta;if("string"==typeof b?.content&&b.content.length>0||Array.isArray(b?.tool_calls)&&b.tool_calls.length>0||b?.function_call&&(b.function_call.name||b.function_call.arguments))return!0;let d=a?.choices?.[0]?.message;if("string"==typeof d?.content&&d.content.length>0||Array.isArray(d?.tool_calls)&&d.tool_calls.length>0||a?.type==="response.output_text.delta"||a?.type==="response.function_call_arguments.delta"||"string"==typeof a?.delta&&a.delta.length>0&&a.type?.includes("output")||a?.type==="content_block_delta"&&(a?.delta?.type==="text_delta"&&a?.delta?.text||a?.delta?.type==="input_json_delta"||"string"==typeof a?.delta?.partial_json||"string"==typeof a?.delta?.text&&a.delta.text&&"thinking_delta"!==a.delta.type)||a?.type==="content_block_start"&&(a?.content_block?.type==="tool_use"||a?.content_block?.type==="text"&&"string"==typeof a.content_block.text&&a.content_block.text.length>0))return!0;let e=a?.candidates?.[0]?.content?.parts;if(Array.isArray(e)){for(let a of e)if(a?.functionCall||"string"==typeof a?.text&&a.text.length>0&&!0!==a.thought)return!0}}catch{}}return!1}function m(a){return!a||a.length<8?null:function(a){let b=null;for(let c of String(a||"").split("\n")){let a=c.trim();if(!a.startsWith("data:"))continue;let d=a.slice(5).trim();if(d&&"[DONE]"!==d)try{let a=JSON.parse(d),c=o(a);c&&(b=c),a?.usage&&(b={prompt_tokens:a.usage.input_tokens??b?.prompt_tokens??0,completion_tokens:a.usage.output_tokens??b?.completion_tokens??0}),a?.message?.usage&&(b={prompt_tokens:a.message.usage.input_tokens??0,completion_tokens:a.message.usage.output_tokens??0})}catch{}}return b}(a.length>8e3?a.slice(-8e3):a)}function n(a){if(!a||"object"!=typeof a)return!1;if(g(a).length>0)return!0;let b=a?.choices?.[0],c=b?.message;if(Array.isArray(c?.tool_calls)&&c.tool_calls.length>0||c?.function_call&&(c.function_call.name||c.function_call.arguments)||Array.isArray(a?.content)&&a.content.some(a=>a?.type==="tool_use"||a?.type==="function")||Array.isArray(a?.output)&&a.output.some(a=>a?.type==="function_call"||a?.type==="tool_call"||a?.type==="custom_tool_call"))return!0;let d=a?.candidates?.[0]?.content?.parts;return!!(Array.isArray(d)&&d.some(a=>a?.functionCall))}function o(a){return a&&"object"==typeof a?a.usage?.prompt_tokens!=null||a.usage?.completion_tokens!=null?{prompt_tokens:a.usage.prompt_tokens??0,completion_tokens:a.usage.completion_tokens??0}:a.usage?.input_tokens!=null||a.usage?.output_tokens!=null?{prompt_tokens:a.usage.input_tokens??0,completion_tokens:a.usage.output_tokens??0}:a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount??0,completion_tokens:a.usageMetadata.candidatesTokenCount??0}:null:null}c.d(b,{Ah:()=>m,Ki:()=>k,NT:()=>h,R5:()=>n,dO:()=>f,f5:()=>o,wx:()=>d})},3072:(a,b,c)=>{c.d(b,{Pr:()=>z,UP:()=>w,Vu:()=>x,t8:()=>v,vt:()=>D,xP:()=>s});var d=c(49263),e=c(89865),f=c(43904),g=c(48644),h=c(17717),i=c(19956),j=c(48664),k=c(45894),l=c(4905),m=c(1354),n=c(5770);let o=new Set(["vision","pdf","audioInput","videoInput"]),p="[Called tools: ",q="[Tool result: ";function r(a){return a.filter(a=>a).map(a=>{if("tool"===a.role||"function"===a.role)return{role:"assistant",content:`${q}${(0,g.kU)(a.content)||String(a.content??"")}]`};if("assistant"===a.role&&Array.isArray(a.tool_calls)){let{tool_calls:b,...c}=a,d=b.map(a=>a?.function?.name||a?.name||"tool").join(", "),e=(0,g.kU)(c.content)||("string"==typeof c.content?c.content:"");return{...c,content:`${e}${e?"\n":""}${p}${d}]`}}if(Array.isArray(a.content)){let b=a.content.some(a=>"tool_use"===a.type),c=a.content.some(a=>"tool_result"===a.type);if(b||c){let b=[],c=[],d=[];for(let e of a.content)"text"===e.type&&e.text&&b.push(e.text),"tool_use"===e.type&&c.push(e.name||"tool"),"tool_result"===e.type&&d.push((0,g.kU)(e.content)||String(e.content??""));let{...e}=a,f=b.join("\n");return c.length>0&&(f=`${f}${f?"\n":""}${p}${c.join(", ")}]`),d.length>0&&(f=`${f}${f?"\n":""}${q}${d.join("\n")}]`),{...e,content:f}}}return a})}function s(a,b){if(!b||0===b.size||!Array.isArray(a)||a.length<=1)return a;let c=[...b].filter(a=>o.has(a)),d=[...b].filter(a=>!o.has(a)),e=a.map((a,b)=>{let e,g,h,i;return{m:a,i:b,t:(g=(e="string"==typeof a?a.indexOf("/"):-1)>0?a.slice(0,e):"",h=e>0?a.slice(e+1):a,i=(0,f.nl)(g,h),c.every(a=>!0===i[a])?+!d.every(a=>!0===i[a]):2)}}).sort((a,b)=>a.t-b.t||a.i-b.i).map(a=>a.m);return e.every((b,c)=>b===a[c])?a:e}let t=new Map;function u(a){if(!Array.isArray(a)||0===a.length)return[];let b=a=>"assistant"===a||"model"===a,c=a.length-1;for(;c>=0&&!b(a[c]?.role);)c--;return a.slice(c+1)}function v(a){let b=new Set;if(!a||"object"!=typeof a)return b;let c=a=>{"string"==typeof a&&(a.startsWith("image/")?b.add("vision"):"application/pdf"===a?b.add("pdf"):a.startsWith("audio/")?b.add("audioInput"):a.startsWith("video/")&&b.add("videoInput"))},d=a=>{if(!a||"object"!=typeof a)return;let d=a.type;if(("image_url"===d||"image"===d||"input_image"===d)&&b.add("vision"),("input_audio"===d||"audio_url"===d||"audio"===d)&&b.add("audioInput"),("input_video"===d||"video_url"===d||"video"===d)&&b.add("videoInput"),"file"===d||"document"===d||"input_file"===d){let d=null;a.input_audio?.format?d=`audio/${a.input_audio.format}`:a.file?.file_data?d=String(a.file.file_data).match(/^data:([^;,]+)/)?.[1]:a.source?.media_type?d=a.source.media_type:a.source?.data&&(d=String(a.source.data).match(/^data:([^;,]+)/)?.[1]),d?c(d):b.add("pdf")}c(a.inlineData?.mimeType||a.fileData?.mimeType)},e=a=>{if(Array.isArray(a))for(let b of a)d(b)},f=a=>{if(!a||"object"!=typeof a)return;Array.isArray(a.images)&&a.images.length>0&&b.add("vision");let d=a.experimental_attachments||a.attachments;if(Array.isArray(d))for(let a of d){if(!a)continue;let d=a.contentType||a.mediaType||"string"==typeof a.url&&a.url.match(/^data:([^;,]+)/)?.[1];d?c(d):(a.url||a.data)&&b.add("vision")}(a.image_url||a.image)&&b.add("vision"),(a.audio_url||a.audio)&&b.add("audioInput"),e(a.content),"string"==typeof a.content&&(a.content.includes("data:image/")?b.add("vision"):a.content.includes("data:audio/")?b.add("audioInput"):a.content.includes("data:application/pdf")&&b.add("pdf"))};for(let b of u(a.messages))f(b);for(let b of u(a.input))e(b.content);for(let b of u(a.contents||a.request?.contents))e(b.parts);return Array.isArray(a.tools)&&a.tools.some(a=>a?.type==="web_search"||a?.type==="web_search_preview")&&b.add("search"),b}function w(a){a?t.delete(a):t.clear()}function x(a,b){if(a.includes("/"))return null;let c=(Array.isArray(b)?b:b?.combos||[]).find(b=>b.name===a);return c&&c.models&&c.models.length>0?c.models:null}function y(){return new Response(JSON.stringify({error:{message:"Request aborted"}}),{status:499,headers:{"Content-Type":"application/json"}})}async function z({body:a,models:b,handleSingleModel:c,log:f,comboName:g,comboStrategy:h,comboStickyLimit:i=1,autoSwitch:j=!0,providerStrategy:k="off",providerOrder:l=[],providerLatencyMs:o={},providerUsage:p={},providerQuota:q={},providerLatencyGuardMs:r,abortSignal:u=null,clientAbortSignal:w=null,signal:x=null,childComboDepth:A=0}){let B=u||w||x||null;if(B?.aborted)return y();let C=function(a,b,c,d=1){let e;if(!a||a.length<=1||"round-robin"!==c)return a;let f=b||"__default__",g=Number.isFinite(e=Number.parseInt(d,10))&&e>0?e:1,h=t.get(f),i="number"==typeof h?{index:h,consecutiveUseCount:0}:h||{index:0,consecutiveUseCount:0},j=i.index%a.length,k=function(a,b){let c=[...a];for(let a=0;a<b;a++){let a=c.shift();c.push(a)}return c}(a,j),l=i.consecutiveUseCount+1;return l>=g?t.set(f,{index:(j+1)%a.length,consecutiveUseCount:0}):t.set(f,{index:j,consecutiveUseCount:l}),k}(b,g,h,i),D=j||"off"!==k?v(a):null;if(j&&D?.size>0){let a=s(C,D);a[0]!==C[0]&&f.info("COMBO",`auto-switch for [${[...D].join(",")}] → ${a[0]}`),C=a}if("off"!==k)try{let a=(0,n.vL)(C,{strategy:k,providerOrder:l,providerLatencyMs:o,providerUsage:p,providerQuota:q,guardMs:r??n.Qm,rotationKey:g});C=D?.size>0?s(a,D):a}catch{}let E=null,F=null,G=null;for(let b=0;b<C.length;b++){let e=C[b];f.info("COMBO",`Trying model ${b+1}/${C.length}: ${e}`);try{let b="function"==typeof structuredClone?structuredClone(a):JSON.parse(JSON.stringify(a)),g=await c(b,e,{signal:B||void 0,comboDepth:A});if(B?.aborted)return y();if(g.ok){let a=await (0,m.wx)(g,f,{abortSignal:B});if(B?.aborted)return y();if(a.ok)return f.info("COMBO",`Model ${e} succeeded`),a.result;E=a.reason||"empty_2xx",f.warn("COMBO",`Model ${e} returned empty/incomplete 2xx (${a.reason}), falling back`);continue}let h=g.statusText||"",i=null;try{let a=await g.clone().json();h=a?.error?.message||a?.error||a?.message||h,i=a?.retryAfter||null}catch{}if(i&&(!F||new Date(i)<new Date(F))&&(F=i),"string"!=typeof h)try{h=JSON.stringify(h)}catch{h=String(h)}let j=404===g.status,{shouldFallback:k,cooldownMs:l}=(0,d.hk)(g.status,h);if(!(j||k))return f.warn("COMBO",`Model ${e} failed (no fallback)`,{status:g.status}),g;if(l&&l>0&&l<=5e3&&(503===g.status||502===g.status||504===g.status)){if(f.info("COMBO",`Model ${e} transient ${g.status}, waiting ${l}ms then retrying`),await function(a,b){return new Promise(!b||a<=0?b=>setTimeout(b,a):c=>{let d=null,e=()=>{d&&clearTimeout(d),b.removeEventListener("abort",e),c()};d=setTimeout(e,a),b.aborted?e():b.addEventListener("abort",e,{once:!0})})}(l,B),B?.aborted)return y();try{let b="function"==typeof structuredClone?structuredClone(a):JSON.parse(JSON.stringify(a)),d=await c(b,e,{signal:B||void 0,comboDepth:A});if(B?.aborted)return y();if(d.ok){let a=await (0,m.wx)(d,f,{abortSignal:B});if(B?.aborted)return y();if(a.ok)return f.info("COMBO",`Model ${e} succeeded on retry after ${l}ms cooldown`),a.result}E=`retry_${d.status}_${d.statusText||""}`,G||(G=d.status),f.warn("COMBO",`Model ${e} retry also failed (${d.status}), moving on`);continue}catch(a){E=a.message||String(a),G||(G=503),f.warn("COMBO",`Model ${e} retry threw error`,{error:E});continue}}E=h||String(g.status),G||(G=g.status),f.warn("COMBO",`Model ${e} failed, trying next`,{status:g.status})}catch(a){if(B?.aborted)return y();E=a.message||String(a),G||(G=500),f.warn("COMBO",`Model ${e} threw error, trying next`,{error:E})}}let H=E&&E.toLowerCase().includes("no credentials")?503:G||503,I=E||"All combo models unavailable";if(F){let a=(0,d.Qo)(F);return f.warn("COMBO",`All models failed | ${I} (${a})`),(0,e.wO)(H,I,F,a)}return f.warn("COMBO",`All models failed | ${I}`),new Response(JSON.stringify({error:{message:I}}),{status:H,headers:{"Content-Type":"application/json"}})}function A(a){if(!a||"object"!=typeof a)return"";let b=a.choices?.[0];if(b){let a=b.message??b.delta??{},c=(0,g.kU)(a.content);if(c.trim())return c;if("string"==typeof b.text&&b.text.trim())return b.text}let c=(0,g.kU)(a.content);if(c.trim())return c;let d=a.candidates?.[0]?.content?.parts;if(Array.isArray(d)){let a=d.map(a=>a?.text||"").join("");if(a.trim())return a}let e=a.response?.candidates?.[0]?.content?.parts;if(Array.isArray(e)){let a=e.map(a=>a?.text||"").join("");if(a.trim())return a}if(Array.isArray(a.output)){let b=a.output.flatMap(a=>Array.isArray(a.content)?a.content.map(a=>a?.text||""):[]).join("");if(b.trim())return b}return""}async function B(a,b,c){var d;let e,f;if(!a?.ok||b?.stream!==!0||(a.headers?.get?.("content-type")||"").toLowerCase().includes("text/event-stream"))return a;try{let b="function"==typeof a.clone?a.clone():a;e=await b.json()}catch{return a}let g=(d=e,(f=function(a){try{return(0,h.Tz)(a)||i.h.OPENAI}catch{return i.h.OPENAI}}(b))!==i.h.OPENAI?f:d?.type==="message"||Array.isArray(d?.content)?i.h.CLAUDE:d?.object==="response"||Array.isArray(d?.output)&&b?.input?i.h.OPENAI_RESPONSES:Array.isArray(d?.candidates)||Array.isArray(d?.response?.candidates)?b?.userAgent===i.h.ANTIGRAVITY?i.h.ANTIGRAVITY:i.h.GEMINI:f),m=function(a,b,c){let d=`chatcmpl-${Date.now()}`,e=c||b?.model||"combo",f=Math.floor(Date.now()/1e3);if(Array.isArray(a?.choices)&&a.choices.length>0)return{...a,id:a.id||d,object:a.object||"chat.completion",created:a.created||f,model:a.model||e,choices:a.choices.map((a,b)=>({...a,index:a.index??b,message:{role:a.message?.role||"assistant",...a.message||{}}}))};let g=function(a){if(!a||"object"!=typeof a)return"";let b=a.choices?.[0]?.message?.reasoning_content;if("string"==typeof b)return b;let c=Array.isArray(a.content)?a.content.filter(a=>a?.type==="thinking").map(a=>a.thinking||"").join(""):"";if(c)return c;let d=a.candidates?.[0]?.content?.parts||a.response?.candidates?.[0]?.content?.parts;return Array.isArray(d)?d.filter(a=>a?.thought===!0).map(a=>a.text||"").join(""):""}(a);return{id:a?.id||d,object:"chat.completion",created:a?.created||f,model:a?.model||e,choices:[{index:0,message:{role:"assistant",content:A(a),...g?{reasoning_content:g}:{}},finish_reason:a?.stop_reason||"stop"}],...a?.usage?{usage:a.usage}:{}}}(e,b,c),n=(0,j.Ws)(g),o=[];for(let a of function(a){let b=a.choices?.[0]||{},c=b.message||{},d={role:c.role||"assistant"};for(let a of["content","reasoning_content","tool_calls","function_call"])void 0!==c[a]&&(d[a]=c[a]);let e={id:a.id,object:"chat.completion.chunk",created:a.created,model:a.model};return[{...e,choices:[{index:b.index??0,delta:d,finish_reason:null}]},{...e,choices:[{index:b.index??0,delta:{},finish_reason:b.finish_reason||(c.tool_calls?"tool_calls":"stop")}],...a.usage?{usage:a.usage}:{}}]}(m))for(let b of(0,j.Y8)(i.h.OPENAI,g,a,n)||[])null!=b&&o.push((0,k.v8)(b,g));for(let a of(0,j.Y8)(i.h.OPENAI,g,null,n)||[])null!=a&&o.push((0,k.v8)(a,g));return(g===i.h.OPENAI||g===i.h.OPENAI_RESPONSES)&&o.push(l.$U),new Response(o.join(""),{status:a.status,headers:l.RK})}let C={minPanel:2,stragglerGraceMs:8e3,panelHardTimeoutMs:9e4};async function D({body:a,models:b,handleSingleModel:c,log:d,comboName:e,judgeModel:f,tuning:g,abortSignal:h=null,clientAbortSignal:i=null,signal:j=null,childComboDepth:k=0}){var l;let m,n,o=h||i||j||null;if(o?.aborted)return y();let p=Array.isArray(b)?b.filter(Boolean):[];if(0===p.length)return new Response(JSON.stringify({error:{message:"Fusion combo has no models"}}),{status:400,headers:{"Content-Type":"application/json"}});if(1===p.length)try{let b=await c(a,p[0],{signal:o||void 0,comboDepth:k});return B(b,a,p[0])}catch(a){if(o?.aborted)return y();throw a}let q={...C,...g||{}},s=Math.min(Math.max(2,q.minPanel),p.length),t=f&&f.trim()?f.trim():p[0];d.info("FUSION",`Combo "${e}" | panel=${p.length} [${p.join(", ")}] | judge=${t} | quorum=${s}`);let{tools:u,tool_choice:v,...w}=a,x={...w,stream:!1};Array.isArray(x.messages)?x.messages=r(x.messages):Array.isArray(x.input)&&(x.input=r(x.input));let z=Date.now(),E=p.map(()=>new AbortController),F=E.map(a=>(function(...a){let b=a.filter(a=>a&&"object"==typeof a);if(0===b.length)return;if(1===b.length)return b[0];if("function"==typeof AbortSignal.any)return AbortSignal.any(b);let c=new AbortController,d=a=>{try{c.abort(a?.target?.reason)}catch{}};for(let a of b){if(a.aborted){d({target:a});break}a.addEventListener("abort",d,{once:!0})}return c.signal})(o,a.signal)),G=p.map((a,b)=>{var d,e,f;return d=c(x,a,{isPanel:!0,signal:F[b],comboDepth:k}),e=q.panelHardTimeoutMs,f=E[b],new Promise(a=>{let b=setTimeout(()=>{try{f?.abort?.(Error("fusion panel hard timeout"))}catch{}a({__timeout:!0})},e);Promise.resolve(d).then(c=>{clearTimeout(b),a(c)}).catch(c=>{clearTimeout(b),c?.name==="AbortError"||f?.signal?.aborted?a({__timeout:!0,__aborted:!0}):a({__error:c})})})}),H=await function(a,{minPanel:b,stragglerGraceMs:c,panelHardTimeoutMs:d,abortControllers:e=[],abortSignal:f=null}){return new Promise(g=>{let h=Array(a.length),i=0,j=0,k=!1,l=null,m=null,n=()=>o(),o=()=>{if(!k){for(let a of(k=!0,m&&clearTimeout(m),l&&clearTimeout(l),f?.removeEventListener?.("abort",n),e))if(a&&!a.signal.aborted)try{a.abort(Error("fusion panel collection finished"))}catch{}g(h)}};if(m=setTimeout(o,d),f){if(f.aborted)return void o();f.addEventListener("abort",n,{once:!0})}a.forEach((d,e)=>{Promise.resolve(d).then(a=>{h[e]=a}).catch(a=>{h[e]={__error:a}}).finally(()=>{if(i++,h[e]&&h[e].ok&&j++,i===a.length)return o();j>=b&&!l&&(l=setTimeout(o,c))})})})}(G,{...q,minPanel:s,abortControllers:E,abortSignal:o});if(d.info("FUSION",`fan-out collected in ${Date.now()-z}ms`),o?.aborted)return y();let I=[];for(let a=0;a<H.length;a++){let b=H[a],c=p[a];if(!b){d.warn("FUSION",`Panel ${c} dropped (straggler/timeout)`);continue}if(b.__timeout){d.warn("FUSION",`Panel ${c} timed out`);continue}if(b.__error){d.warn("FUSION",`Panel ${c} threw`,{error:b.__error?.message||String(b.__error)});continue}if(!b.ok){d.warn("FUSION",`Panel ${c} failed`,{status:b.status});continue}try{let a=await b.clone().json(),e=A(a);e?(I.push({model:c,text:e,json:a,response:b}),d.info("FUSION",`Panel ${c} ok (${e.length} chars)`)):d.warn("FUSION",`Panel ${c} returned empty content`)}catch(a){d.warn("FUSION",`Panel ${c} unparseable`,{error:a.message||String(a)})}}if(0===I.length)return d.warn("FUSION","All panel models failed"),new Response(JSON.stringify({error:{message:"All fusion panel models failed"}}),{status:503,headers:{"Content-Type":"application/json"}});if(1===I.length)return d.info("FUSION",`Only ${I[0].model} succeeded — returning buffered answer (no re-dispatch)`),B(I[0].response,a,I[0].model);let J=(m=I.map((a,b)=>`[Source ${b+1}]
|
|
2
2
|
${a.text}`).join("\n\n"),l=[`You are the JUDGE in a model-fusion panel. ${I.length} expert models independently answered the user's most recent request. Their responses are below, anonymized by source.`,"\nDo NOT mention that multiple models were used, and do NOT refer to the sources. Produce ONE authoritative final answer addressed directly to the user.\n\nFirst, internally analyze the panel along these dimensions: consensus (points most sources agree on — treat as higher-confidence), contradictions (where they disagree — resolve with your own judgment), partial coverage, unique insights only one source surfaced, and blind spots every source missed. Then write the best possible final answer grounded in that analysis — more complete and correct than any single response, with no filler.\n\n=== PANEL RESPONSES ===",m,"=== END PANEL RESPONSES ===\n\nNow write the final answer to the user's original request."].join("\n"),n={...a},Array.isArray(a.messages)?n.messages=[...a.messages,{role:"user",content:l}]:Array.isArray(a.input)?n.input=[...a.input,{type:"message",role:"user",content:[{type:"input_text",text:l}]}]:Array.isArray(a.contents)?n.contents=[...a.contents,{role:"user",parts:[{text:l}]}]:n.messages=[{role:"user",content:l}],n);d.info("FUSION",`Judging ${I.length} answers with ${t}`);try{let b=await c(J,t,{signal:o||void 0,comboDepth:k});if(!b?.ok){let c=I.reduce((a,b)=>a.text.length>=b.text.length?a:b);return d.warn("FUSION",`Judge ${t} failed (${b?.status}), falling back to best panel answer`),B(c.response,a,c.model)}return B(b,a,t)}catch(c){if(o?.aborted)return y();let b=I.reduce((a,b)=>a.text.length>=b.text.length?a:b);return d.warn("FUSION",`Judge ${t} threw, falling back to best panel answer`,{error:c?.message||String(c)}),B(b.response,a,b.model)}}},49263:(a,b,c)=>{c.d(b,{Bl:()=>j,Qo:()=>f,S5:()=>l,hk:()=>e,kJ:()=>k});var d=c(87252);function e(a,b,c=0){let f=b?("string"==typeof b?b:JSON.stringify(b)).toLowerCase():"";for(let b of d.t2)if(b.text&&f&&f.includes(b.text)||b.status&&b.status===a){let a=!1!==b.shouldFallback;if(b.backoff){let b=Math.min(c+1,d.EQ.maxLevel);return{shouldFallback:a,cooldownMs:function(a=0){let b=Math.max(0,a-1);return Math.min(d.EQ.base*Math.pow(2,b),d.EQ.max)}(b),newBackoffLevel:b}}return{shouldFallback:a,cooldownMs:b.cooldownMs||0}}return a>=400&&a<500&&408!==a&&429!==a?{shouldFallback:!1,cooldownMs:0}:{shouldFallback:!0,cooldownMs:d.wf}}function f(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}let g="modelLock_",h=`${g}__all`;function i(a){return a?`${g}${a}`:h}function j(a,b){let c=i(b);return[a?.[c],a?.[h]].some(a=>a&&new Date(a).getTime()>Date.now())}function k(a){if(!a)return null;let b=null,c=Date.now();for(let[d,e]of Object.entries(a)){if(!d.startsWith(g)||!e)continue;let a=new Date(e).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}function l(a,b){return{[i(a)]:new Date(Date.now()+b).toISOString()}}},89865:(a,b,c)=>{c.d(b,{A1:()=>h,lR:()=>j,wO:()=>i,yj:()=>f,zL:()=>g});var d=c(87252);async function e(a,b){let c=a?.body?.getReader?.();if(!c)try{return(await a.text()).slice(0,b)}catch{return""}let d=new TextDecoder,e="",f=0;try{for(;f<b;){let{done:a,value:g}=await c.read();if(a)break;let h=g instanceof Uint8Array?g:new Uint8Array(g),i=b-f;if(e+=d.decode(h.subarray(0,i),{stream:h.byteLength<=i}),f+=Math.min(h.byteLength,i),h.byteLength>i){try{await c.cancel("upstream error body limit")}catch{}break}}return e+d.decode()}catch{return e}finally{try{c.releaseLock?.()}catch{}}}function f(a,b){let c;return new Response(JSON.stringify((c=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""}),{error:{message:b||d.O[a]||"An error occurred",type:c.type,code:c.code}})),{status:a,headers:{"Content-Type":"application/json"}})}async function g(a,b=null){let c=await e(a,65536);if(b&&"function"==typeof b.parseError)try{let e=b.parseError(a,c);if(e&&"object"==typeof e){let b=e.message||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:e.status||a.status,message:b,resetsAtMs:e.resetsAtMs}}}catch{}let f="";try{let a=JSON.parse(c);f="string"==typeof a?.error?.message?a.error.message:"string"==typeof a?.message?a.message:"string"==typeof a?.error_description?a.error_description:"string"==typeof a?.error?a.error:""}catch{f=c}let h=("string"==typeof f?f:"")||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:h}}function h(a,b,c){return{success:!1,status:a,error:b,resetsAtMs:c,response:f(a,b)}}function i(a,b,c,d){let e=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1);return new Response(JSON.stringify({error:{message:`${b} (${d})`}}),{status:a,headers:{"Content-Type":"application/json","Retry-After":String(e)}})}function j(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error",g=a.cause?.code,h=a.cause?.message,i=g||h?` (cause: ${[g,h].filter(Boolean).join(": ")})`:"";return`[${e}]: ${f}${i}`}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=3075,exports.ids=[3075],exports.modules={93075:(a,b,c)=>{c.d(b,{Op:()=>S,Nq:()=>E,PE:()=>U});var d=c(4573),e=c(89865),f=c(60290);let g="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";async function h(a,b="mp3"){let c=await a.arrayBuffer();if(c.byteLength<100)throw Error("Upstream returned empty audio");let e=a.headers.get("content-type")||"",f=b;return e.includes("wav")?f="wav":e.includes("mpeg")||e.includes("mp3")?f="mp3":e.includes("ogg")&&(f="ogg"),{base64:d.Buffer.from(c).toString("base64"),format:f}}async function i(a){let b=await a.text().catch(()=>""),c=`Upstream error (${a.status})`;try{let a=JSON.parse(b);c=a?.error?.message||a?.message||a?.detail?.message||("string"==typeof a?.detail?a.detail:null)||b||c}catch{c=b||c}throw Error(c)}let j={token:null,tokenTime:0},k=0;async function l(){let a=Date.now();if(j.token&&a-j.tokenTime<66e4)return j.token;let b=await fetch("https://translate.google.com/",{headers:{"User-Agent":g}});if(!b.ok)throw Error(`Google translate fetch failed: ${b.status}`);let c=await b.text(),d=c.match(/"FdrFJe":"(.*?)"/)?.[1],e=c.match(/"cfb2h":"(.*?)"/)?.[1];if(!d||!e)throw Error("Failed to parse Google token");return j.token={"f.sid":d,bl:e},j.tokenTime=a,j.token}let m={token:null,tokenTime:0},n=null,o=0;async function p(){let a=Date.now();if(m.token&&a-m.tokenTime<3e5)return m.token;let b=await fetch("https://www.bing.com/translator",{headers:{"User-Agent":g,"Accept-Language":"vi,en-US;q=0.9,en;q=0.8"}});if(!b.ok)throw Error(`Bing translator fetch failed: ${b.status}`);let c=(b.headers.getSetCookie?.()||[]).map(a=>a.split(";")[0]).join("; "),d=(await b.text()).match(/params_AbusePreventionHelper\s*=\s*\[([^,]+),([^,]+),/);if(!d)throw Error("Failed to parse Bing token");return m.token={key:d[1],token:d[2].replace(/"/g,""),cookie:c},m.tokenTime=a,m.token}async function q(a,b,c){let d=b.split("-").slice(0,2).join("-"),e=b.toLowerCase().includes("male")?"Male":"Female",f=`<speak version='1.0' xml:lang='${d}'><voice xml:lang='${d}' xml:gender='${e}' name='${b}'><prosody rate='0.00%'>${a}</prosody></voice></speak>`,h=new URLSearchParams;return h.append("ssml",f),h.append("token",c.token),h.append("key",c.key),fetch("https://www.bing.com/tfettts?isVertical=1&&IG=1&IID=translator.5023&SFX=1",{method:"POST",body:h.toString(),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"*/*",Origin:"https://www.bing.com",Referer:"https://www.bing.com/translator","User-Agent":g,...c.cookie?{Cookie:c.cookie}:{}}})}async function r(){let a=Date.now();if(n&&a-o<864e5)return n;let b=await fetch("https://speech.platform.bing.com/consumer/speech/synthesize/readaloud/voices/list?trustedclienttoken=6A5AA1D4EAFF4E9FB37E23D68491D6F4",{headers:{"User-Agent":g}});if(!b.ok)throw Error(`Edge TTS voices fetch failed: ${b.status}`);let c=await b.json();return n=c,o=a,c}var s=c(31421),t=c(57975),u=c(51455),v=c(48161),w=c(76760);let x=(0,t.promisify)(s.execFile),y=null;async function z(){let{stdout:a}=await x("say",["-v","?"]),b=[];for(let c of a.split("\n")){let a=c.match(/^([^\s].*?)\s{2,}([a-z]{2}_[A-Z]{2})/);if(!a)continue;let d=a[1].trim(),e=a[2].trim(),f=e.split("_")[0],g=e.split("_")[1];b.push({id:d,name:d,locale:e,lang:f,country:g,gender:""})}return b}async function A(){let{stdout:a}=await x("powershell.exe",["-NoProfile","-NonInteractive","-WindowStyle","Hidden","-Command","Add-Type -AssemblyName System.Speech; $s = New-Object System.Speech.Synthesis.SpeechSynthesizer; $s.GetInstalledVoices() | ForEach-Object { $v = $_.VoiceInfo; [PSCustomObject]@{ Name=$v.Name; Culture=$v.Culture.Name; Gender=$v.Gender } } | ConvertTo-Json -Compress"],{windowsHide:!0}),b=JSON.parse(a.trim()||"[]");return(Array.isArray(b)?b:[b]).map(a=>{let b=a.Culture||"en-US",[c,d=""]=b.split("-");return{id:a.Name,name:a.Name,locale:b.replace("-","_"),lang:c,country:d,gender:({1:"Male",2:"Female",Male:"Male",Female:"Female"})[a.Gender]||""}})}async function B(){if(y)return y;try{let a="win32"===process.platform?await A():await z();return y=a,a}catch{return[]}}async function C(a,b){let c=await (0,u.mkdtemp)((0,w.join)((0,v.tmpdir)(),"tts-")),d=(0,w.join)(c,"out.aiff"),e=(0,w.join)(c,"out.mp3");try{let c=b?["-v",b,"-o",d,a]:["-o",d,a];return await x("say",c),await x("ffmpeg",["-y","-i",d,"-codec:a","libmp3lame","-qscale:a","4",e]),(await (0,u.readFile)(e)).toString("base64")}finally{await (0,u.rm)(c,{recursive:!0,force:!0})}}let D=new Map;async function E(a){if(!a)throw Error("ElevenLabs API key required");let b=Date.now(),c=D.get(a);if(c&&b-c.time<864e5)return c.voices;let d=await fetch("https://api.elevenlabs.io/v1/voices",{headers:{"xi-api-key":a,"Content-Type":"application/json"}});if(!d.ok)throw Error(`ElevenLabs voices fetch failed: ${d.status}`);let e=((await d.json()).voices||[]).map(a=>({...a,lang:a.labels?.language||"en"}));return D.set(a,{voices:e,time:b}),e}var F=c(45350);let G=F.B$.openai?.ttsConfig?.defaultModel,H=F.B$.openrouter?.ttsConfig||{},I=F.B$.gemini?.ttsConfig||{},J=I.baseUrl,K=[...I.models||[],...F.vq["gemini-tts-models"]||[],...(F.vq.gemini||[]).filter(a=>"tts"===(a.kind||a.type))].map(a=>a?.id).filter(Boolean).filter((a,b,c)=>c.indexOf(a)===b),L=K[0]||"gemini-3.1-flash-tts-preview",M="Kore",N=[{id:"Zephyr",lang:"en",gender:"Female"},{id:"Puck",lang:"en",gender:"Male"},{id:"Charon",lang:"en",gender:"Male"},{id:"Kore",lang:"en",gender:"Female"},{id:"Fenrir",lang:"en",gender:"Male"},{id:"Leda",lang:"en",gender:"Female"},{id:"Orus",lang:"en",gender:"Male"},{id:"Aoede",lang:"en",gender:"Female"},{id:"Callirrhoe",lang:"en",gender:"Female"},{id:"Autonoe",lang:"en",gender:"Female"},{id:"Enceladus",lang:"en",gender:"Male"},{id:"Iapetus",lang:"en",gender:"Male"},{id:"Umbriel",lang:"en",gender:"Male"},{id:"Algieba",lang:"en",gender:"Male"},{id:"Despina",lang:"en",gender:"Female"},{id:"Erinome",lang:"en",gender:"Female"},{id:"Algenib",lang:"en",gender:"Male"},{id:"Rasalgethi",lang:"en",gender:"Male"},{id:"Laomedeia",lang:"en",gender:"Female"},{id:"Achernar",lang:"en",gender:"Female"},{id:"Alnilam",lang:"en",gender:"Male"},{id:"Schedar",lang:"en",gender:"Male"},{id:"Gacrux",lang:"en",gender:"Female"},{id:"Pulcherrima",lang:"en",gender:"Female"},{id:"Achird",lang:"en",gender:"Male"},{id:"Zubenelgenubi",lang:"en",gender:"Male"},{id:"Vindemiatrix",lang:"en",gender:"Female"},{id:"Sadachbia",lang:"en",gender:"Male"},{id:"Sadaltager",lang:"en",gender:"Male"},{id:"Sulafat",lang:"en",gender:"Female"}];async function O(){return N.map(a=>({voice_id:a.id,name:a.id,labels:{language:a.lang,gender:a.gender}}))}let P={hyperbolic:async function({baseUrl:a,apiKey:b,text:c}){let d=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b}`},body:JSON.stringify({text:c})});return d.ok||await i(d),{base64:(await d.json()).audio,format:"mp3"}},deepgram:async function({baseUrl:a,apiKey:b,text:c,modelId:d}){let e=new URL(a);e.searchParams.set("model",d||"aura-asteria-en");let f=await fetch(e.toString(),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Token ${b}`},body:JSON.stringify({text:c})});return f.ok||await i(f),h(f,"mp3")},"nvidia-tts":async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b}`},body:JSON.stringify({input:{text:c},voice:e||"default",model:d})});return f.ok||await i(f),h(f,"wav")},"huggingface-tts":async function({baseUrl:a,apiKey:b,text:c,modelId:d}){if(!d||d.includes(".."))throw Error("Invalid HuggingFace model ID");let e=await fetch(`${a}/${d}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b}`},body:JSON.stringify({inputs:c})});return e.ok||await i(e),h(e,"wav")},inworld:async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Basic ${b}`},body:JSON.stringify({text:c,voiceId:e||"Alex",modelId:d||"inworld-tts-1.5-mini",audioConfig:{audioEncoding:"MP3"}})});f.ok||await i(f);let g=await f.json();if(!g.audioContent)throw Error("Inworld TTS returned no audio");return{base64:g.audioContent,format:"mp3"}},cartesia:async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":b,"Cartesia-Version":"2024-06-10"},body:JSON.stringify({model_id:d||"sonic-2",transcript:c,...e?{voice:{mode:"id",id:e}}:{},output_format:{container:"mp3",bit_rate:128e3,sample_rate:44100}})});return f.ok||await i(f),h(f,"mp3")},playht:async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let[f,g]=(b||":").split(":"),j=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Accept:"audio/mpeg","X-USER-ID":f||"",Authorization:`Bearer ${g||b}`},body:JSON.stringify({text:c,voice:e||"s3://voice-cloning-zero-shot/d9ff78ba-d016-47f6-b0ef-dd630f59414e/female-cs/manifest.json",voice_engine:d||"PlayDialog",output_format:"mp3",speed:1})});return j.ok||await i(j),h(j,"mp3")},coqui:async function({baseUrl:a,text:b,voiceId:c}){let d=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:b,...c?{speaker_id:c}:{}})});return d.ok||await i(d),h(d,"wav")},tortoise:async function({baseUrl:a,text:b,voiceId:c}){let d=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:b,voice:c||"random"})});return d.ok||await i(d),h(d,"wav")},openai:async function({baseUrl:a,apiKey:b,text:c,modelId:d,voiceId:e}){let f={"Content-Type":"application/json"};b&&(f.Authorization=`Bearer ${b}`);let g=await fetch(a,{method:"POST",headers:f,body:JSON.stringify({model:d,input:c,voice:e||"alloy",response_format:"mp3",speed:1})});return g.ok||await i(g),h(g,"mp3")},"minimax-tts":async function({baseUrl:a,apiKey:b,text:c,modelId:e,voiceId:f}){let g=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b}`},body:JSON.stringify({model:e||"speech-2.8-hd",text:c,stream:!1,language_boost:"auto",output_format:"hex",voice_setting:{voice_id:f||"English_expressive_narrator",speed:1,vol:1,pitch:0},audio_setting:{sample_rate:32e3,bitrate:128e3,format:"mp3",channel:1}})}),h=await g.text(),i={};if(h)try{i=JSON.parse(h)}catch{i={}}let j=i.base_resp||i.baseResp||{},k=Number(j.status_code??j.statusCode??0),l=j.status_msg||j.statusMsg||i.message||"";if(!g.ok)throw Error(l||h||`MiniMax TTS error (${g.status})`);if(0!==k)throw Error(l||"MiniMax TTS upstream error");return{base64:function(a){let b="string"==typeof a?a.trim():"";if(!b)throw Error("MiniMax TTS returned no audio");if(b.length%2!=0||!/^[0-9a-f]+$/i.test(b))throw Error("MiniMax TTS returned invalid audio");return d.Buffer.from(b,"hex").toString("base64")}(i.data?.audio),format:i.extra_info?.audio_format||i.extraInfo?.audioFormat||"mp3"}}},Q={"google-tts":{noAuth:!0,async synthesize(a,b){let c=b||"en",d=await l(),e=a.replace(/[@^*()\\/\-_+=><"'\u201c\u201d\u3010\u3011]/g," ").replaceAll(", ",". "),f="jQ1olc",g=1e5*++k+Math.floor(1e3+9e3*Math.random()),h=new URLSearchParams({rpcids:f,"f.sid":d["f.sid"],bl:d.bl,hl:c,"soc-app":1,"soc-platform":1,"soc-device":1,_reqid:g,rt:"c"}),i=[e,c,null,"undefined",[0]],j=new URLSearchParams;j.append("f.req",JSON.stringify([[[f,JSON.stringify(i),null,"generic"]]]));let m=await fetch(`https://translate.google.com/_/TranslateWebserverUi/data/batchexecute?${h}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Referer:"https://translate.google.com/"},body:j.toString()});if(!m.ok)throw Error(`Google TTS failed: ${m.status}`);let n=JSON.parse(JSON.parse((await m.text()).split("\n")[3])[0][2])[0];if(!n||n.length<100)throw Error("Google TTS returned empty audio");return{base64:n,format:"mp3"}}},"edge-tts":{noAuth:!0,async synthesize(a,b){let c=b||"vi-VN-HoaiMyNeural",e=await p(),f=await q(a,c,e);if((429===f.status||403===f.status)&&(m.token=null,m.tokenTime=0,e=await p(),f=await q(a,c,e)),!f.ok){let a=await f.text().catch(()=>"");throw Error(`Bing TTS failed: ${f.status}${a?" - "+a:""}`)}let g=await f.arrayBuffer();if(g.byteLength<1024)throw Error("Bing TTS returned empty audio");return{base64:d.Buffer.from(g).toString("base64"),format:"mp3"}}},"local-device":{noAuth:!0,synthesize:async(a,b)=>({base64:await C(a,b),format:"mp3"})},elevenlabs:{async synthesize(a,b,c){if(!c?.apiKey)throw Error("ElevenLabs API key required");let e="eleven_flash_v2_5",f=b;b&&b.includes("/")&&([e,f]=b.split("/"));let g=await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${f}`,{method:"POST",headers:{"xi-api-key":c.apiKey,"Content-Type":"application/json"},body:JSON.stringify({text:a,model_id:e,voice_settings:{stability:.5,similarity_boost:.75}})});if(!g.ok){let a=await g.json().catch(()=>({}));throw Error(a?.detail?.message||`ElevenLabs TTS failed: ${g.status}`)}let h=await g.arrayBuffer();if(h.byteLength<1024)throw Error("ElevenLabs TTS returned empty audio");return{base64:d.Buffer.from(h).toString("base64"),format:"mp3"}}},openai:{async synthesize(a,b,c){if(!c?.apiKey)throw Error("No OpenAI API key configured");let e=G,f="alloy";if(b&&b.includes("/")){let a=b.split("/");2===a.length&&([e,f]=a)}else b&&(f=b);let g=(c.baseUrl||"https://api.openai.com").replace(/\/+$/,""),h=await fetch(`${g}/v1/audio/speech`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c.apiKey}`},body:JSON.stringify({model:e,voice:f,input:a})});if(!h.ok){let a=await h.json().catch(()=>({}));throw Error(a?.error?.message||`OpenAI TTS failed: ${h.status}`)}let i=await h.arrayBuffer();return{base64:d.Buffer.from(i).toString("base64"),format:"mp3"}}},openrouter:{async synthesize(a,b,c){if(!c?.apiKey)throw Error("No OpenRouter API key configured");let d=H.defaultModel,e="alloy";if(b&&b.includes("/")){let a=b.lastIndexOf("/"),c=b.slice(a+1),f=b.slice(0,a);f.includes("/")?(d=f,e=c):e=b}else b&&(e=b);let f=await fetch(H.baseUrl,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c.apiKey}`,...H.headers||{}},body:JSON.stringify({model:d,modalities:["text","audio"],audio:{voice:e,format:"wav"},stream:!0,messages:[{role:"user",content:a}]})});if(!f.ok){let a=await f.json().catch(()=>({}));throw Error(a?.error?.message||`OpenRouter TTS failed: ${f.status}`)}let g=[],h=f.body.getReader(),i=new TextDecoder,j="";for(;;){let{done:a,value:b}=await h.read();if(a)break;let c=(j+=i.decode(b,{stream:!0})).split("\n");for(let a of(j=c.pop(),c))if(a.startsWith("data: ")&&"data: [DONE]"!==a)try{let b=JSON.parse(a.slice(6)),c=b.choices?.[0]?.delta?.audio?.data;c&&g.push(c)}catch{}}if(0===g.length)throw Error("OpenRouter TTS returned no audio data");return{base64:g.join(""),format:"wav"}}},gemini:{async synthesize(a,b,c,e,f={}){var g,h;let i,j;if(!c?.apiKey)throw Error("No Gemini API key configured");let{modelId:k,voiceId:l}=function(a){if(!a)return{modelId:L,voiceId:M};for(let b of K){if(a===b)return{modelId:b,voiceId:M};if(a.startsWith(`${b}/`))return{modelId:b,voiceId:a.slice(b.length+1)}}return{modelId:L,voiceId:a}}(b),m=`${J}/${k}:generateContent?key=${c.apiKey}`,n=await fetch(m,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contents:[{parts:[{text:(g=f.language,/:\s/.test(a)?a:g?`Say in ${g}: ${a}`:`Say: ${a}`)}]}],generationConfig:{responseModalities:["AUDIO"],speechConfig:{voiceConfig:{prebuiltVoiceConfig:{voiceName:l}}}}})});if(!n.ok){let a=await n.json().catch(()=>({}));throw Error(a?.error?.message||`Gemini TTS failed: ${n.status}`)}let o=await n.json(),p=o?.candidates?.[0]?.content?.parts?.find(a=>a.inlineData?.data)?.inlineData?.data;if(!p){let a=o?.candidates?.[0]?.finishReason||o?.promptFeedback?.blockReason||"unknown";throw Error(`Gemini TTS returned no audio (finishReason: ${a}, voice: ${l}, model: ${k})`)}return{base64:(i=(h=d.Buffer.from(p,"base64")).length,(j=d.Buffer.alloc(44)).write("RIFF",0),j.writeUInt32LE(36+i,4),j.write("WAVE",8),j.write("fmt ",12),j.writeUInt32LE(16,16),j.writeUInt16LE(1,20),j.writeUInt16LE(1,22),j.writeUInt32LE(24e3,24),j.writeUInt32LE(48e3,28),j.writeUInt16LE(2,32),j.writeUInt16LE(16,34),j.write("data",36),j.writeUInt32LE(i,40),d.Buffer.concat([j,h])).toString("base64"),format:"wav"}}}};async function R(a,b,d,e,f={}){let{AI_PROVIDERS:g}=await c.e(615).then(c.bind(c,40615)),h=g[a]?.ttsConfig;if(!h)return null;let i=P[h.format];if(!i)return null;let j=e?.apiKey;if("none"!==h.authType&&!j)throw Error(`${a} API key required`);let{PROVIDER_MODELS:k}=await c.e(7335).then(c.bind(c,27335)),l=(k[a]||[]).filter(a=>"tts"===(a.kind||a.type)),{modelId:m,voiceId:n}=function(a,b="",c="",d=[]){if(!a)return{modelId:b,voiceId:c};for(let b of d.map(a=>a.id||a).filter(Boolean).sort((a,b)=>b.length-a.length)){if(a===b)return{modelId:b,voiceId:c};if(a.startsWith(`${b}/`))return{modelId:b,voiceId:a.slice(b.length+1)}}let e=a.lastIndexOf("/");return e>0?{modelId:a.slice(0,e),voiceId:a.slice(e+1)}:{modelId:b||a,voiceId:c||a}}(d,l[0]?.id||"","",l);return i({baseUrl:h.baseUrl,apiKey:j,text:b,modelId:m,voiceId:n,...f})}let S={"edge-tts":r,"local-device":B,elevenlabs:E,gemini:O};function T(a,b,c){let e=d.Buffer.from(a,"base64");return"json"===c?{success:!0,response:new Response(JSON.stringify({audio:a,format:b}),{headers:{"Content-Type":"application/json"}})}:{success:!0,response:new Response(e,{headers:{"Content-Type":`audio/${b}`,"Content-Length":String(e.length)}})}}async function U({provider:a,model:b,input:c,credentials:d,responseFormat:g="mp3",language:h,abortSignal:i=null}){if("string"!=typeof c||!c.trim())return(0,e.A1)(f.gx.BAD_REQUEST,"Missing required field: input");try{let j=Q[a]||null;if(j){let a=await j.synthesize(c.trim(),b,d,g,{language:h,signal:i});if(void 0!==a.success)return a;return T(a.base64,a.format,g)}let k=await R(a,c.trim(),b,d,{signal:i});if(k)return T(k.base64,k.format,g);return(0,e.A1)(f.gx.BAD_REQUEST,`Provider '${a}' does not support TTS via this route.`)}catch(a){return(0,e.A1)(f.gx.BAD_GATEWAY,a.message||"TTS synthesis failed")}}}};
|
|
1
|
+
"use strict";exports.id=3075,exports.ids=[3075],exports.modules={93075:(a,b,c)=>{c.d(b,{Op:()=>U,Nq:()=>H,PE:()=>W});var d=c(4573),e=c(89865),f=c(60290),g=c(46052),h=c(45350);function i(a,b,c,d={}){let e=h.xq[a]||{},f=h.B$[a]?.[`${b}Config`]||{};return(0,g.Fm)(c,{...d,identity:f.identity||e.identity||"openai-node",provider:a,format:f.format||e.format||"openai"})}let j="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";async function k(a,b="mp3"){let c=await a.arrayBuffer();if(c.byteLength<100)throw Error("Upstream returned empty audio");let e=a.headers.get("content-type")||"",f=b;return e.includes("wav")?f="wav":e.includes("mpeg")||e.includes("mp3")?f="mp3":e.includes("ogg")&&(f="ogg"),{base64:d.Buffer.from(c).toString("base64"),format:f}}async function l(a){let b=await a.text().catch(()=>""),c=`Upstream error (${a.status})`;try{let a=JSON.parse(b);c=a?.error?.message||a?.message||a?.detail?.message||("string"==typeof a?.detail?a.detail:null)||b||c}catch{c=b||c}throw Error(c)}let m={token:null,tokenTime:0},n=0;async function o(){let a=Date.now();if(m.token&&a-m.tokenTime<66e4)return m.token;let b=await fetch("https://translate.google.com/",{headers:{"User-Agent":j}});if(!b.ok)throw Error(`Google translate fetch failed: ${b.status}`);let c=await b.text(),d=c.match(/"FdrFJe":"(.*?)"/)?.[1],e=c.match(/"cfb2h":"(.*?)"/)?.[1];if(!d||!e)throw Error("Failed to parse Google token");return m.token={"f.sid":d,bl:e},m.tokenTime=a,m.token}let p={token:null,tokenTime:0},q=null,r=0;async function s(){let a=Date.now();if(p.token&&a-p.tokenTime<3e5)return p.token;let b=await fetch("https://www.bing.com/translator",{headers:{"User-Agent":j,"Accept-Language":"vi,en-US;q=0.9,en;q=0.8"}});if(!b.ok)throw Error(`Bing translator fetch failed: ${b.status}`);let c=(b.headers.getSetCookie?.()||[]).map(a=>a.split(";")[0]).join("; "),d=(await b.text()).match(/params_AbusePreventionHelper\s*=\s*\[([^,]+),([^,]+),/);if(!d)throw Error("Failed to parse Bing token");return p.token={key:d[1],token:d[2].replace(/"/g,""),cookie:c},p.tokenTime=a,p.token}async function t(a,b,c){let d=b.split("-").slice(0,2).join("-"),e=b.toLowerCase().includes("male")?"Male":"Female",f=`<speak version='1.0' xml:lang='${d}'><voice xml:lang='${d}' xml:gender='${e}' name='${b}'><prosody rate='0.00%'>${a}</prosody></voice></speak>`,g=new URLSearchParams;return g.append("ssml",f),g.append("token",c.token),g.append("key",c.key),fetch("https://www.bing.com/tfettts?isVertical=1&&IG=1&IID=translator.5023&SFX=1",{method:"POST",body:g.toString(),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"*/*",Origin:"https://www.bing.com",Referer:"https://www.bing.com/translator","User-Agent":j,...c.cookie?{Cookie:c.cookie}:{}}})}async function u(){let a=Date.now();if(q&&a-r<864e5)return q;let b=await fetch("https://speech.platform.bing.com/consumer/speech/synthesize/readaloud/voices/list?trustedclienttoken=6A5AA1D4EAFF4E9FB37E23D68491D6F4",{headers:{"User-Agent":j}});if(!b.ok)throw Error(`Edge TTS voices fetch failed: ${b.status}`);let c=await b.json();return q=c,r=a,c}var v=c(31421),w=c(57975),x=c(51455),y=c(48161),z=c(76760);let A=(0,w.promisify)(v.execFile),B=null;async function C(){let{stdout:a}=await A("say",["-v","?"]),b=[];for(let c of a.split("\n")){let a=c.match(/^([^\s].*?)\s{2,}([a-z]{2}_[A-Z]{2})/);if(!a)continue;let d=a[1].trim(),e=a[2].trim(),f=e.split("_")[0],g=e.split("_")[1];b.push({id:d,name:d,locale:e,lang:f,country:g,gender:""})}return b}async function D(){let{stdout:a}=await A("powershell.exe",["-NoProfile","-NonInteractive","-WindowStyle","Hidden","-Command","Add-Type -AssemblyName System.Speech; $s = New-Object System.Speech.Synthesis.SpeechSynthesizer; $s.GetInstalledVoices() | ForEach-Object { $v = $_.VoiceInfo; [PSCustomObject]@{ Name=$v.Name; Culture=$v.Culture.Name; Gender=$v.Gender } } | ConvertTo-Json -Compress"],{windowsHide:!0}),b=JSON.parse(a.trim()||"[]");return(Array.isArray(b)?b:[b]).map(a=>{let b=a.Culture||"en-US",[c,d=""]=b.split("-");return{id:a.Name,name:a.Name,locale:b.replace("-","_"),lang:c,country:d,gender:({1:"Male",2:"Female",Male:"Male",Female:"Female"})[a.Gender]||""}})}async function E(){if(B)return B;try{let a="win32"===process.platform?await D():await C();return B=a,a}catch{return[]}}async function F(a,b){let c=await (0,x.mkdtemp)((0,z.join)((0,y.tmpdir)(),"tts-")),d=(0,z.join)(c,"out.aiff"),e=(0,z.join)(c,"out.mp3");try{let c=b?["-v",b,"-o",d,a]:["-o",d,a];return await A("say",c),await A("ffmpeg",["-y","-i",d,"-codec:a","libmp3lame","-qscale:a","4",e]),(await (0,x.readFile)(e)).toString("base64")}finally{await (0,x.rm)(c,{recursive:!0,force:!0})}}let G=new Map;async function H(a){if(!a)throw Error("ElevenLabs API key required");let b=Date.now(),c=G.get(a);if(c&&b-c.time<864e5)return c.voices;let d=await i("elevenlabs","tts","https://api.elevenlabs.io/v1/voices",{headers:{"xi-api-key":a,"Content-Type":"application/json"}});if(!d.ok)throw Error(`ElevenLabs voices fetch failed: ${d.status}`);let e=((await d.json()).voices||[]).map(a=>({...a,lang:a.labels?.language||"en"}));return G.set(a,{voices:e,time:b}),e}let I=h.B$.openai?.ttsConfig?.defaultModel,J=h.B$.openrouter?.ttsConfig||{},K=h.B$.gemini?.ttsConfig||{},L=K.baseUrl,M=[...K.models||[],...h.vq["gemini-tts-models"]||[],...(h.vq.gemini||[]).filter(a=>"tts"===(a.kind||a.type))].map(a=>a?.id).filter(Boolean).filter((a,b,c)=>c.indexOf(a)===b),N=M[0]||"gemini-3.1-flash-tts-preview",O="Kore",P=[{id:"Zephyr",lang:"en",gender:"Female"},{id:"Puck",lang:"en",gender:"Male"},{id:"Charon",lang:"en",gender:"Male"},{id:"Kore",lang:"en",gender:"Female"},{id:"Fenrir",lang:"en",gender:"Male"},{id:"Leda",lang:"en",gender:"Female"},{id:"Orus",lang:"en",gender:"Male"},{id:"Aoede",lang:"en",gender:"Female"},{id:"Callirrhoe",lang:"en",gender:"Female"},{id:"Autonoe",lang:"en",gender:"Female"},{id:"Enceladus",lang:"en",gender:"Male"},{id:"Iapetus",lang:"en",gender:"Male"},{id:"Umbriel",lang:"en",gender:"Male"},{id:"Algieba",lang:"en",gender:"Male"},{id:"Despina",lang:"en",gender:"Female"},{id:"Erinome",lang:"en",gender:"Female"},{id:"Algenib",lang:"en",gender:"Male"},{id:"Rasalgethi",lang:"en",gender:"Male"},{id:"Laomedeia",lang:"en",gender:"Female"},{id:"Achernar",lang:"en",gender:"Female"},{id:"Alnilam",lang:"en",gender:"Male"},{id:"Schedar",lang:"en",gender:"Male"},{id:"Gacrux",lang:"en",gender:"Female"},{id:"Pulcherrima",lang:"en",gender:"Female"},{id:"Achird",lang:"en",gender:"Male"},{id:"Zubenelgenubi",lang:"en",gender:"Male"},{id:"Vindemiatrix",lang:"en",gender:"Female"},{id:"Sadachbia",lang:"en",gender:"Male"},{id:"Sadaltager",lang:"en",gender:"Male"},{id:"Sulafat",lang:"en",gender:"Female"}];async function Q(){return P.map(a=>({voice_id:a.id,name:a.id,labels:{language:a.lang,gender:a.gender}}))}let R={hyperbolic:async function({provider:a,baseUrl:b,apiKey:c,text:d}){let e=await i(a,"tts",b,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c}`},body:JSON.stringify({text:d})});return e.ok||await l(e),{base64:(await e.json()).audio,format:"mp3"}},deepgram:async function({provider:a,baseUrl:b,apiKey:c,text:d,modelId:e}){let f=new URL(b);f.searchParams.set("model",e||"aura-asteria-en");let g=await i(a,"tts",f.toString(),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Token ${c}`},body:JSON.stringify({text:d})});return g.ok||await l(g),k(g,"mp3")},"nvidia-tts":async function({provider:a,baseUrl:b,apiKey:c,text:d,modelId:e,voiceId:f}){let g=await i(a,"tts",b,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c}`},body:JSON.stringify({input:{text:d},voice:f||"default",model:e})});return g.ok||await l(g),k(g,"wav")},"huggingface-tts":async function({provider:a,baseUrl:b,apiKey:c,text:d,modelId:e}){if(!e||e.includes(".."))throw Error("Invalid HuggingFace model ID");let f=await i(a,"tts",`${b}/${e}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c}`},body:JSON.stringify({inputs:d})});return f.ok||await l(f),k(f,"wav")},inworld:async function({provider:a,baseUrl:b,apiKey:c,text:d,modelId:e,voiceId:f}){let g=await i(a,"tts",b,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Basic ${c}`},body:JSON.stringify({text:d,voiceId:f||"Alex",modelId:e||"inworld-tts-1.5-mini",audioConfig:{audioEncoding:"MP3"}})});g.ok||await l(g);let h=await g.json();if(!h.audioContent)throw Error("Inworld TTS returned no audio");return{base64:h.audioContent,format:"mp3"}},cartesia:async function({provider:a,baseUrl:b,apiKey:c,text:d,modelId:e,voiceId:f}){let g=await i(a,"tts",b,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":c,"Cartesia-Version":"2024-06-10"},body:JSON.stringify({model_id:e||"sonic-2",transcript:d,...f?{voice:{mode:"id",id:f}}:{},output_format:{container:"mp3",bit_rate:128e3,sample_rate:44100}})});return g.ok||await l(g),k(g,"mp3")},playht:async function({provider:a,baseUrl:b,apiKey:c,text:d,modelId:e,voiceId:f}){let[g,h]=(c||":").split(":"),j=await i(a,"tts",b,{method:"POST",headers:{"Content-Type":"application/json",Accept:"audio/mpeg","X-USER-ID":g||"",Authorization:`Bearer ${h||c}`},body:JSON.stringify({text:d,voice:f||"s3://voice-cloning-zero-shot/d9ff78ba-d016-47f6-b0ef-dd630f59414e/female-cs/manifest.json",voice_engine:e||"PlayDialog",output_format:"mp3",speed:1})});return j.ok||await l(j),k(j,"mp3")},coqui:async function({baseUrl:a,text:b,voiceId:c}){let d=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:b,...c?{speaker_id:c}:{}})});return d.ok||await l(d),k(d,"wav")},tortoise:async function({baseUrl:a,text:b,voiceId:c}){let d=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:b,voice:c||"random"})});return d.ok||await l(d),k(d,"wav")},openai:async function({provider:a,baseUrl:b,apiKey:c,text:d,modelId:e,voiceId:f}){let g={"Content-Type":"application/json"};c&&(g.Authorization=`Bearer ${c}`);let h={method:"POST",headers:g,body:JSON.stringify({model:e,input:d,voice:f||"alloy",response_format:"mp3",speed:1})},j=c?await i(a,"tts",b,h):await fetch(b,h);return j.ok||await l(j),k(j,"mp3")},"minimax-tts":async function({provider:a,baseUrl:b,apiKey:c,text:e,modelId:f,voiceId:g}){let h=await i(a,"tts",b,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c}`},body:JSON.stringify({model:f||"speech-2.8-hd",text:e,stream:!1,language_boost:"auto",output_format:"hex",voice_setting:{voice_id:g||"English_expressive_narrator",speed:1,vol:1,pitch:0},audio_setting:{sample_rate:32e3,bitrate:128e3,format:"mp3",channel:1}})}),j=await h.text(),k={};if(j)try{k=JSON.parse(j)}catch{k={}}let l=k.base_resp||k.baseResp||{},m=Number(l.status_code??l.statusCode??0),n=l.status_msg||l.statusMsg||k.message||"";if(!h.ok)throw Error(n||j||`MiniMax TTS error (${h.status})`);if(0!==m)throw Error(n||"MiniMax TTS upstream error");return{base64:function(a){let b="string"==typeof a?a.trim():"";if(!b)throw Error("MiniMax TTS returned no audio");if(b.length%2!=0||!/^[0-9a-f]+$/i.test(b))throw Error("MiniMax TTS returned invalid audio");return d.Buffer.from(b,"hex").toString("base64")}(k.data?.audio),format:k.extra_info?.audio_format||k.extraInfo?.audioFormat||"mp3"}}},S={"google-tts":{noAuth:!0,async synthesize(a,b){let c=b||"en",d=await o(),e=a.replace(/[@^*()\\/\-_+=><"'\u201c\u201d\u3010\u3011]/g," ").replaceAll(", ",". "),f="jQ1olc",g=1e5*++n+Math.floor(1e3+9e3*Math.random()),h=new URLSearchParams({rpcids:f,"f.sid":d["f.sid"],bl:d.bl,hl:c,"soc-app":1,"soc-platform":1,"soc-device":1,_reqid:g,rt:"c"}),i=[e,c,null,"undefined",[0]],j=new URLSearchParams;j.append("f.req",JSON.stringify([[[f,JSON.stringify(i),null,"generic"]]]));let k=await fetch(`https://translate.google.com/_/TranslateWebserverUi/data/batchexecute?${h}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Referer:"https://translate.google.com/"},body:j.toString()});if(!k.ok)throw Error(`Google TTS failed: ${k.status}`);let l=JSON.parse(JSON.parse((await k.text()).split("\n")[3])[0][2])[0];if(!l||l.length<100)throw Error("Google TTS returned empty audio");return{base64:l,format:"mp3"}}},"edge-tts":{noAuth:!0,async synthesize(a,b){let c=b||"vi-VN-HoaiMyNeural",e=await s(),f=await t(a,c,e);if((429===f.status||403===f.status)&&(p.token=null,p.tokenTime=0,e=await s(),f=await t(a,c,e)),!f.ok){let a=await f.text().catch(()=>"");throw Error(`Bing TTS failed: ${f.status}${a?" - "+a:""}`)}let g=await f.arrayBuffer();if(g.byteLength<1024)throw Error("Bing TTS returned empty audio");return{base64:d.Buffer.from(g).toString("base64"),format:"mp3"}}},"local-device":{noAuth:!0,synthesize:async(a,b)=>({base64:await F(a,b),format:"mp3"})},elevenlabs:{async synthesize(a,b,c){if(!c?.apiKey)throw Error("ElevenLabs API key required");let e="eleven_flash_v2_5",f=b;b&&b.includes("/")&&([e,f]=b.split("/"));let g=await i("elevenlabs","tts",`https://api.elevenlabs.io/v1/text-to-speech/${f}`,{method:"POST",headers:{"xi-api-key":c.apiKey,"Content-Type":"application/json"},body:JSON.stringify({text:a,model_id:e,voice_settings:{stability:.5,similarity_boost:.75}})});if(!g.ok){let a=await g.json().catch(()=>({}));throw Error(a?.detail?.message||`ElevenLabs TTS failed: ${g.status}`)}let h=await g.arrayBuffer();if(h.byteLength<1024)throw Error("ElevenLabs TTS returned empty audio");return{base64:d.Buffer.from(h).toString("base64"),format:"mp3"}}},openai:{async synthesize(a,b,c){if(!c?.apiKey)throw Error("No OpenAI API key configured");let e=I,f="alloy";if(b&&b.includes("/")){let a=b.split("/");2===a.length&&([e,f]=a)}else b&&(f=b);let g=(c.baseUrl||"https://api.openai.com").replace(/\/+$/,""),h=await i("openai","tts",`${g}/v1/audio/speech`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c.apiKey}`},body:JSON.stringify({model:e,voice:f,input:a})});if(!h.ok){let a=await h.json().catch(()=>({}));throw Error(a?.error?.message||`OpenAI TTS failed: ${h.status}`)}let j=await h.arrayBuffer();return{base64:d.Buffer.from(j).toString("base64"),format:"mp3"}}},openrouter:{async synthesize(a,b,c){if(!c?.apiKey)throw Error("No OpenRouter API key configured");let d=J.defaultModel,e="alloy";if(b&&b.includes("/")){let a=b.lastIndexOf("/"),c=b.slice(a+1),f=b.slice(0,a);f.includes("/")?(d=f,e=c):e=b}else b&&(e=b);let f=await i("openrouter","tts",J.baseUrl,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c.apiKey}`},body:JSON.stringify({model:d,modalities:["text","audio"],audio:{voice:e,format:"wav"},stream:!0,messages:[{role:"user",content:a}]})});if(!f.ok){let a=await f.json().catch(()=>({}));throw Error(a?.error?.message||`OpenRouter TTS failed: ${f.status}`)}let g=[],h=f.body.getReader(),j=new TextDecoder,k="";for(;;){let{done:a,value:b}=await h.read();if(a)break;let c=(k+=j.decode(b,{stream:!0})).split("\n");for(let a of(k=c.pop(),c))if(a.startsWith("data: ")&&"data: [DONE]"!==a)try{let b=JSON.parse(a.slice(6)),c=b.choices?.[0]?.delta?.audio?.data;c&&g.push(c)}catch{}}if(0===g.length)throw Error("OpenRouter TTS returned no audio data");return{base64:g.join(""),format:"wav"}}},gemini:{async synthesize(a,b,c,e,f={}){var g,h;let j,k;if(!c?.apiKey)throw Error("No Gemini API key configured");let{modelId:l,voiceId:m}=function(a){if(!a)return{modelId:N,voiceId:O};for(let b of M){if(a===b)return{modelId:b,voiceId:O};if(a.startsWith(`${b}/`))return{modelId:b,voiceId:a.slice(b.length+1)}}return{modelId:N,voiceId:a}}(b),n=`${L}/${l}:generateContent?key=${c.apiKey}`,o=await i("gemini","tts",n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contents:[{parts:[{text:(g=f.language,/:\s/.test(a)?a:g?`Say in ${g}: ${a}`:`Say: ${a}`)}]}],generationConfig:{responseModalities:["AUDIO"],speechConfig:{voiceConfig:{prebuiltVoiceConfig:{voiceName:m}}}}})});if(!o.ok){let a=await o.json().catch(()=>({}));throw Error(a?.error?.message||`Gemini TTS failed: ${o.status}`)}let p=await o.json(),q=p?.candidates?.[0]?.content?.parts?.find(a=>a.inlineData?.data)?.inlineData?.data;if(!q){let a=p?.candidates?.[0]?.finishReason||p?.promptFeedback?.blockReason||"unknown";throw Error(`Gemini TTS returned no audio (finishReason: ${a}, voice: ${m}, model: ${l})`)}return{base64:(j=(h=d.Buffer.from(q,"base64")).length,(k=d.Buffer.alloc(44)).write("RIFF",0),k.writeUInt32LE(36+j,4),k.write("WAVE",8),k.write("fmt ",12),k.writeUInt32LE(16,16),k.writeUInt16LE(1,20),k.writeUInt16LE(1,22),k.writeUInt32LE(24e3,24),k.writeUInt32LE(48e3,28),k.writeUInt16LE(2,32),k.writeUInt16LE(16,34),k.write("data",36),k.writeUInt32LE(j,40),d.Buffer.concat([k,h])).toString("base64"),format:"wav"}}}};async function T(a,b,c,d,e={}){let f=h.B$[a]?.ttsConfig;if(!f)return null;let g=R[f.format];if(!g)return null;let i=d?.apiKey;if("none"!==f.authType&&!i)throw Error(`${a} API key required`);let j=(h.vq[a]||[]).filter(a=>"tts"===(a.kind||a.type)),{modelId:k,voiceId:l}=function(a,b="",c="",d=[]){if(!a)return{modelId:b,voiceId:c};for(let b of d.map(a=>a.id||a).filter(Boolean).sort((a,b)=>b.length-a.length)){if(a===b)return{modelId:b,voiceId:c};if(a.startsWith(`${b}/`))return{modelId:b,voiceId:a.slice(b.length+1)}}let e=a.lastIndexOf("/");return e>0?{modelId:a.slice(0,e),voiceId:a.slice(e+1)}:{modelId:b||a,voiceId:c||a}}(c,j[0]?.id||"","",j);return g({provider:a,baseUrl:f.baseUrl,apiKey:i,text:b,modelId:k,voiceId:l,...e})}let U={"edge-tts":u,"local-device":E,elevenlabs:H,gemini:Q};function V(a,b,c){let e=d.Buffer.from(a,"base64");return"json"===c?{success:!0,response:new Response(JSON.stringify({audio:a,format:b}),{headers:{"Content-Type":"application/json"}})}:{success:!0,response:new Response(e,{headers:{"Content-Type":`audio/${b}`,"Content-Length":String(e.length)}})}}async function W({provider:a,model:b,input:c,credentials:d,responseFormat:g="mp3",language:h,abortSignal:i=null}){if("string"!=typeof c||!c.trim())return(0,e.A1)(f.gx.BAD_REQUEST,"Missing required field: input");try{let j=S[a]||null;if(j){let a=await j.synthesize(c.trim(),b,d,g,{language:h,signal:i});if(void 0!==a.success)return a;return V(a.base64,a.format,g)}let k=await T(a,c.trim(),b,d,{signal:i});if(k)return V(k.base64,k.format,g);return(0,e.A1)(f.gx.BAD_REQUEST,`Provider '${a}' does not support TTS via this route.`)}catch(a){return(0,e.A1)(f.gx.BAD_GATEWAY,a.message||"TTS synthesis failed")}}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=3546,exports.ids=[3546],exports.modules={73546:(a,b,c)=>{c.d(b,{QoderService:()=>
|
|
1
|
+
"use strict";exports.id=3546,exports.ids=[3546],exports.modules={73546:(a,b,c)=>{c.d(b,{QoderService:()=>m});var d=c(8298),e=c(55511),f=c.n(e),g=c(47293),h=c(53129),i=c(46052);let j=(0,h.ro)("qoder");function k(a){return a.toString("base64").replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}async function l(a,b={}){let c=new AbortController,d=setTimeout(()=>c.abort("timeout"),15e3);try{return await (0,i.Fm)(a,{...b,signal:c.signal,...j})}finally{clearTimeout(d)}}class m{generatePkcePair(){let a=k(f().randomBytes(32)),b=k(f().createHash("sha256").update(a).digest());return{verifier:a,challenge:b}}initiateDeviceFlow(){let{verifier:a,challenge:b}=this.generatePkcePair(),c=(0,g.A)(),e=(0,g.A)(),f=new URLSearchParams({challenge:b,challenge_method:"S256",machine_id:e,nonce:c});return{verificationUriComplete:`${d.rf}?${f.toString()}`,codeVerifier:a,nonce:c,machineId:e}}async pollDeviceToken({nonce:a,codeVerifier:b}){let c;if(!a||!b)throw Error("pollDeviceToken: missing nonce or code verifier");let e=`${d.bg}?nonce=${encodeURIComponent(a)}&verifier=${encodeURIComponent(b)}&challenge_method=S256`,f=await l(e,{method:"GET",headers:{Accept:"application/json","User-Agent":"Go-http-client/2.0"}});if(202===f.status||404===f.status)return{status:"pending"};let g=await f.text();if(!f.ok){let a=`Qoder device token poll failed: HTTP ${f.status}`;try{let b=JSON.parse(g);b.message&&(a=`Qoder device token poll failed: ${b.message}`)}catch{}throw Error(a)}try{c=JSON.parse(g)}catch(a){throw Error(`Qoder device token poll: invalid JSON response (${a.message})`)}if(!c.token)throw Error("Qoder device token poll returned 200 but no token");let h=m.parseExpiry(c.expires_at,c.expires_in);return{status:"ok",accessToken:c.token,refreshToken:c.refresh_token||"",userId:c.user_id||"",expireTime:h,rawResponse:c}}async fetchUserInfo(a){try{let b=await l(d._G,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","User-Agent":"Go-http-client/2.0"}});if(!b.ok)return{name:"",email:""};let c=await b.json();return{name:(c.name||c.username||"").trim(),email:(c.email||"").trim(),organizationId:(c.organization_id||"").trim()}}catch{return{name:"",email:""}}}static parseExpiry(a,b){if("number"==typeof a&&Number.isFinite(a)&&a>0)return a;let c="string"==typeof a?a.trim():"";if(c){if(/^\d+$/.test(c)){let a=Number.parseInt(c,10);if(Number.isFinite(a)&&a>0)return a}let a=Date.parse(c);if(!Number.isNaN(a))return a}return"number"==typeof b&&Number.isFinite(b)&&b>=0?Date.now()+1e3*b:Date.now()+2592e6}}}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=3593,exports.ids=[3593],exports.modules={53593:(a,b,c)=>{c.d(b,{createSqlJsAdapter:()=>
|
|
1
|
+
"use strict";exports.id=3593,exports.ids=[3593],exports.modules={53593:(a,b,c)=>{c.d(b,{createSqlJsAdapter:()=>n});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(46293),i=c.n(h),j=c(63775),k=c(54293);let l=null;async function m(){return l||(l=await i()())}async function n(a){let b=await m(),c=e().existsSync(a)?e().readFileSync(a):null,d=new b.Database(c);d.exec(j.oG);let f=!1,h=null;function i(){let b,c=d.export(),h=a+".tmp";e().writeFileSync(h,Buffer.from(c));let i=e().openSync(h,"r");try{e().fsyncSync(i)}finally{e().closeSync(i)}e().renameSync(h,a);try{b=e().openSync(g().dirname(a),"r"),e().fsyncSync(b)}catch{}finally{void 0!==b&&e().closeSync(b)}f=!1}function l(){f=!0,h&&clearTimeout(h),h=setTimeout(()=>{if(h=null,f)try{i()}catch(a){console.error("[sqljs] save failed:",a)}},100)}function n(a){if(!(!a||Array.isArray(a)&&0===a.length))return a}let o=!1;function p(){if(q(),!o){o=!0,clearTimeout(h);try{f&&i()}finally{d.close()}}}let q=(0,k.H)(p);return{driver:"sql.js",run:function(a,b=[]){let c=d.prepare(a);try{c.bind(n(b)),c.step();let a=d.getRowsModified(),e=d.exec("SELECT last_insert_rowid() as id")[0]?.values?.[0]?.[0]??null;return l(),{changes:a,lastInsertRowid:e}}finally{c.free()}},get:function(a,b=[]){let c=d.prepare(a);try{if(c.bind(n(b)),c.step())return c.getAsObject();return}finally{c.free()}},all:function(a,b=[]){let c=d.prepare(a);try{c.bind(n(b));let a=[];for(;c.step();)a.push(c.getAsObject());return a}finally{c.free()}},exec:function(a){d.exec(a),l()},transaction:function(a){let b=`sp_${Math.random().toString(36).slice(2)}`;d.exec(`SAVEPOINT ${b}`);try{let c=a();return d.exec(`RELEASE ${b}`),l(),c}catch(a){try{d.exec(`ROLLBACK TO ${b}`),d.exec(`RELEASE ${b}`)}catch{}throw a}},close:p,raw:d}}},54293:(a,b,c)=>{c.d(b,{H:()=>f});let d=Symbol.for("switchboard.adapterShutdownRegistry"),e=globalThis[d]??={closers:new Set,listener:null};function f(a){e.closers.add(a);let b=!0;return()=>!!b&&(b=!1,e.closers.delete(a))}e.listener||(e.listener=()=>{for(let a of[...e.closers])if(e.closers.delete(a))try{a()}catch{}},process.on("beforeExit",e.listener))},63775:(a,b,c)=>{c.d(b,{CG:()=>e,oG:()=>d,zE:()=>f});let d=`
|
|
2
2
|
PRAGMA journal_mode = WAL;
|
|
3
3
|
PRAGMA synchronous = NORMAL;
|
|
4
4
|
PRAGMA temp_store = MEMORY;
|
|
@@ -6,4 +6,4 @@ PRAGMA mmap_size = 30000000;
|
|
|
6
6
|
PRAGMA cache_size = -64000;
|
|
7
7
|
PRAGMA foreign_keys = ON;
|
|
8
8
|
PRAGMA busy_timeout = 5000;
|
|
9
|
-
`,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",
|
|
9
|
+
`,e={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL",keyPrefix:"TEXT",lookupDigest:"TEXT",allowedModels:"TEXT",allowedCombos:"TEXT",expiresAt:"TEXT",rateLimitPerMinute:"INTEGER",concurrencyLimit:"INTEGER",spendLimitUsd:"REAL",spentUsd:"REAL NOT NULL DEFAULT 0"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)","CREATE INDEX IF NOT EXISTS idx_ak_prefix ON apiKeys(keyPrefix)","CREATE UNIQUE INDEX IF NOT EXISTS idx_ak_lookup_digest ON apiKeys(lookupDigest) WHERE lookupDigest IS NOT NULL"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",clientKeyId:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT",requestId:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)","CREATE INDEX IF NOT EXISTS idx_uh_client_key ON usageHistory(clientKeyId)","CREATE UNIQUE INDEX IF NOT EXISTS idx_uh_request_id ON usageHistory(requestId) WHERE requestId IS NOT NULL"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]},fetchCache:{columns:{cacheKey:"TEXT PRIMARY KEY",kind:"TEXT",url:"TEXT",content:"TEXT NOT NULL",contentType:"TEXT",sizeBytes:"INTEGER",createdAt:"TEXT NOT NULL",expiresAt:"TEXT NOT NULL",lastAccessedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_fc_expires_at ON fetchCache(expiresAt)","CREATE INDEX IF NOT EXISTS idx_fc_last_accessed_at ON fetchCache(lastAccessedAt)"]},vault_entries:{columns:{id:"TEXT PRIMARY KEY",conversationId:"TEXT NOT NULL",toolName:"TEXT",content:"TEXT NOT NULL",sizeBytes:"INTEGER",createdAt:"TEXT NOT NULL",expiresAt:"TEXT NOT NULL",lastAccessedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_vault_conv ON vault_entries(conversationId)","CREATE INDEX IF NOT EXISTS idx_vault_expires ON vault_entries(expiresAt)","CREATE INDEX IF NOT EXISTS idx_vault_last_accessed ON vault_entries(lastAccessedAt)"]},vault_chunks:{columns:{entryId:"TEXT NOT NULL",chunkIndex:"INTEGER NOT NULL",conversationId:"TEXT NOT NULL",text:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (entryId, chunkIndex)",indexes:["CREATE INDEX IF NOT EXISTS idx_vault_chunks_conv ON vault_chunks(conversationId)"]},routing_events:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",comboName:"TEXT NOT NULL",sessionId:"TEXT",requestId:"TEXT",requestFingerprint:"TEXT",cluster:"TEXT",routerModel:"TEXT",pickedWorker:"TEXT",alternates:"TEXT",routerReason:"TEXT",routerConfidence:"TEXT",routerLatencyMs:"INTEGER",workerStatus:"INTEGER",workerLatencyMs:"INTEGER",fallbackUsed:"INTEGER DEFAULT 0",retries:"INTEGER DEFAULT 0",tokensIn:"INTEGER",tokensOut:"INTEGER",outcomeScore:"REAL",objective:"TEXT",learningVersionId:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_re_combo_ts ON routing_events(comboName, timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_re_cluster_combo ON routing_events(cluster, comboName)","CREATE INDEX IF NOT EXISTS idx_re_worker ON routing_events(pickedWorker)","CREATE INDEX IF NOT EXISTS idx_re_request ON routing_events(comboName, requestId)"]},router_learning_versions:{columns:{id:"TEXT PRIMARY KEY",comboName:"TEXT NOT NULL",version:"INTEGER NOT NULL",createdAt:"TEXT NOT NULL",source:"TEXT",banditTable:"TEXT",learnedRules:"TEXT",fewShots:"TEXT",evalScore:"REAL",prevVersionId:"TEXT",promoted:"INTEGER DEFAULT 0",notes:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_rlv_combo ON router_learning_versions(comboName)","CREATE UNIQUE INDEX IF NOT EXISTS idx_rlv_combo_ver ON router_learning_versions(comboName, version)"]}};function f(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}}};
|