@rsalmn/extremerouter 0.8.3 → 0.8.5
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-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +14 -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/routes-manifest.json +24 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/alerts/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/alerts/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/alerts/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
- 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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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/console-log/page.js +2 -2
- 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/health/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
- 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 +2 -2
- 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/overview/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/overview/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/overview/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
- 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/playground/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
- 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 +2 -2
- 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 +2 -2
- 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/proxy-pools/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
- 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/page.js +2 -2
- 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/swarm/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/swarm/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/swarm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
- 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 +2 -2
- 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 +2 -2
- 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 +3 -3
- 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/_global-error.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_index.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 +2 -2
- 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 +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/api/alerts/test/route.js +2 -2
- package/app/.next-cli-build/server/app/api/alerts/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/reset-password/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/breaker/route.js +1 -1
- package/app/.next-cli-build/server/app/api/breaker/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cache/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cache/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
- 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-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +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 +3 -3
- 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/hermes-settings/route.js +3 -3
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/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/combos/validate-roles/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/validate-roles/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/dashboard/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js +2 -2
- 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/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/health/providers/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/health/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/health/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js +1 -1
- package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +2 -2
- 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/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/1min/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/1min/import/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/kimi-desktop/auto-import/route.js +1 -0
- package/app/.next-cli-build/server/app/api/oauth/kimi-desktop/auto-import/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/oauth/kimi-desktop/auto-import/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/oauth/kimi-desktop/import/route.js +1 -0
- package/app/.next-cli-build/server/app/api/oauth/kimi-desktop/import/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/oauth/kimi-desktop/import/route_client-reference-manifest.js +1 -0
- package/app/.next-cli-build/server/app/api/oauth/kimi-desktop/quota/route.js +1 -0
- package/app/.next-cli-build/server/app/api/oauth/kimi-desktop/quota/route.js.nft.json +1 -0
- package/app/.next-cli-build/server/app/api/oauth/kimi-desktop/quota/route_client-reference-manifest.js +1 -0
- 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/oauth/qwen/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/qwen/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/wp-studio/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/wp-studio/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js +2 -2
- package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/zed/import/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]/agnes-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/agnes-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/freebuff-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/freebuff-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/health-timeline/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/health-timeline/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/inxora-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/inxora-profile/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]/onemin-api-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/onemin-api-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/onemin-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/onemin-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/qwencloud-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/qwencloud-profile/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/[id]/v0-profile/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/v0-profile/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/vault-pool/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/vault-pool/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/zenmux-plans/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/zenmux-plans/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/proxy-pools/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
- package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/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/require-login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/require-login/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/swarm/active/route.js +1 -1
- package/app/.next-cli-build/server/app/api/swarm/active/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/swarm/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/swarm/stream/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/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/tunnel/disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/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/leaderboard/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/leaderboard/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/meta/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/meta/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/retry-stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/retry-stats/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 +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/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 +2 -2
- 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 +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +6 -6
- 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 +1 -1
- package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
- 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 +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +6 -6
- 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 +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- 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 +6 -6
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing/page.js +2 -2
- 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 +6 -6
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +6 -6
- 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 +1 -1
- package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login/page.js +2 -2
- 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 +7 -7
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +6 -6
- 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 +2 -2
- package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
- 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 +2 -2
- 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 +14 -10
- package/app/.next-cli-build/server/chunks/1241.js +1 -1
- package/app/.next-cli-build/server/chunks/1350.js +1 -1
- package/app/.next-cli-build/server/chunks/1429.js +1 -0
- package/app/.next-cli-build/server/chunks/1719.js +1 -1
- package/app/.next-cli-build/server/chunks/1891.js +10 -0
- package/app/.next-cli-build/server/chunks/212.js +1 -1
- package/app/.next-cli-build/server/chunks/2231.js +1 -1
- package/app/.next-cli-build/server/chunks/2409.js +1 -0
- package/app/.next-cli-build/server/chunks/3535.js +1 -1
- package/app/.next-cli-build/server/chunks/4046.js +1 -1
- package/app/.next-cli-build/server/chunks/412.js +2 -2
- package/app/.next-cli-build/server/chunks/5102.js +1 -0
- package/app/.next-cli-build/server/chunks/5330.js +12 -10
- package/app/.next-cli-build/server/chunks/5612.js +1 -1
- package/app/.next-cli-build/server/chunks/5615.js +1 -1
- package/app/.next-cli-build/server/chunks/5699.js +1 -1
- package/app/.next-cli-build/server/chunks/5961.js +1 -1
- package/app/.next-cli-build/server/chunks/6070.js +1 -1
- package/app/.next-cli-build/server/chunks/6306.js +1 -1
- package/app/.next-cli-build/server/chunks/6560.js +1 -0
- package/app/.next-cli-build/server/chunks/6777.js +1 -1
- package/app/.next-cli-build/server/chunks/7187.js +1 -1
- package/app/.next-cli-build/server/chunks/7566.js +1 -1
- package/app/.next-cli-build/server/chunks/8238.js +1 -1
- package/app/.next-cli-build/server/chunks/8271.js +1 -1
- package/app/.next-cli-build/server/chunks/8802.js +2 -2
- package/app/.next-cli-build/server/chunks/885.js +75 -0
- package/app/.next-cli-build/server/chunks/{3735.js → 8873.js} +1 -1
- package/app/.next-cli-build/server/chunks/8895.js +5 -5
- package/app/.next-cli-build/server/chunks/8955.js +8 -8
- package/app/.next-cli-build/server/chunks/9422.js +2 -2
- package/app/.next-cli-build/server/chunks/9703.js +2 -2
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js +3 -3
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
- package/app/.next-cli-build/static/7zgJjF0BTyl0D0ZYIuDWj/_buildManifest.js +1 -0
- package/app/.next-cli-build/static/chunks/{1321-5792bb21361dcd65.js → 1321-3b1aef2827d68b60.js} +1 -1
- package/app/.next-cli-build/static/chunks/1992-7359483e85c66d42.js +1 -0
- package/app/.next-cli-build/static/chunks/5497-51105899e4e24c89.js +7 -0
- package/app/.next-cli-build/static/chunks/{705-cfe5cd65ea2dc6f1.js → 705-6dadbd8815279945.js} +1 -1
- package/app/.next-cli-build/static/chunks/8105-76bf5c11dd3bc8ce.js +1 -0
- package/app/.next-cli-build/static/chunks/981-eead750d8fdba2cb.js +3 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-b4a78d784383253c.js +3 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-3828106aa4f490c1.js → page-7d472b122fb182f0.js} +10 -10
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-83272baae17d38f1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/page-4069e1d40a3c70a6.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/overview/page-839ed70e115af9c9.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-201ce34cf7a0a9ed.js → page-6b500acebeff856b.js} +2 -2
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-c02ccb0fd35970d1.js +1 -0
- package/app/.next-cli-build/static/chunks/app/(dashboard)/layout-0a63db83d5e05667.js +1 -0
- package/app/.next-cli-build/static/chunks/app/_global-error/page-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/alerts/test/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/breaker/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cache/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/validate-roles/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/stream/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/providers/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/stream/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/init/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/locale/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/1min/import/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kimi-desktop/auto-import/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kimi-desktop/import/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kimi-desktop/quota/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/qwen/import/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/wp-studio/import/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/auto-import/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/import/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/agnes-profile/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/freebuff-profile/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/health-timeline/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/inxora-profile/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/onemin-api-profile/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/onemin-profile/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/qwencloud-profile/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/v0-profile/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/vault-pool/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/zenmux-plans/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/swarm/active/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/swarm/stream/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tags/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/leaderboard/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/meta/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/retry-stats/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/app/page-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-158df2528a1edacc.js +1 -0
- package/app/.next-cli-build/static/css/b7a8bd59db43d15e.css +1 -0
- package/app/node_modules/nanoid/package.json +1 -1
- package/app/package.json +6 -4
- package/app/public/providers/codebuddy-intl.png +0 -0
- package/app/public/providers/helyxai.png +0 -0
- package/app/public/providers/inferx.svg +8 -0
- package/app/public/providers/kimi-desktop.svg +9 -0
- package/app/public/providers/novita.svg +6 -0
- package/app/public/providers/tokenharbor.svg +12 -0
- package/app/public/providers/workbuddy.png +0 -0
- package/package.json +1 -1
- package/app/.next-cli-build/server/chunks/1212.js +0 -1
- package/app/.next-cli-build/server/chunks/2701.js +0 -10
- package/app/.next-cli-build/server/chunks/3437.js +0 -75
- package/app/.next-cli-build/server/chunks/4632.js +0 -1
- package/app/.next-cli-build/server/chunks/615.js +0 -1
- package/app/.next-cli-build/server/chunks/6686.js +0 -1
- package/app/.next-cli-build/static/chunks/1992-b492aa3235a8c259.js +0 -1
- package/app/.next-cli-build/static/chunks/5497-b321fb89cc6d6e14.js +0 -7
- package/app/.next-cli-build/static/chunks/8105-37d0f6450b27ac6b.js +0 -1
- package/app/.next-cli-build/static/chunks/981-777b2911f938c030.js +0 -3
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-648e105b4f37fef0.js +0 -3
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-e086fed7677d4852.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/overview/page-2dae733c8e1582bf.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-0be4cac4f06ef3e2.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/layout-d62e22634bbd6c94.js +0 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/alerts/test/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/breaker/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cache/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/validate-roles/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/stream/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/providers/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/stream/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/init/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/locale/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/1min/import/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/qwen/import/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/wp-studio/import/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/auto-import/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/zed/import/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/agnes-profile/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/freebuff-profile/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/health-timeline/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/inxora-profile/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/onemin-api-profile/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/onemin-profile/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/qwencloud-profile/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/v0-profile/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/vault-pool/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/zenmux-plans/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/swarm/active/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/swarm/stream/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tags/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/leaderboard/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/meta/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/retry-stats/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/app/page-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-ab464cb25617d9dd.js +0 -1
- package/app/.next-cli-build/static/css/27a3eadf22014a5b.css +0 -1
- package/app/.next-cli-build/static/j7bBgtavtSkTBPfbmetr9/_buildManifest.js +0 -1
- /package/app/.next-cli-build/static/{j7bBgtavtSkTBPfbmetr9 → 7zgJjF0BTyl0D0ZYIuDWj}/_ssgManifest.js +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
"use strict";exports.id=8955,exports.ids=[8955],exports.modules={31589:(a,b,c)=>{c.d(b,{Ub:()=>l});var d=c(
|
|
2
|
-
[truncated by combo budget]`}let
|
|
1
|
+
"use strict";exports.id=8955,exports.ids=[8955],exports.modules={31589:(a,b,c)=>{c.d(b,{Ub:()=>l});var d=c(91994),e=c(40669);let f=Object.freeze({toolUse:!0,fileAccess:!0,streaming:!0,multiTurn:!0,controlRole:!0,reliableJson:!0}),g=Object.freeze({toolUse:!1,fileAccess:!1,streaming:!1,multiTurn:!1,controlRole:!1,reliableJson:!1}),h={webCookie:Object.freeze({toolUse:!1,fileAccess:!1,streaming:!0,multiTurn:!0,controlRole:!1,reliableJson:!1})},i=Object.freeze({manager:{controlRole:!0,reliableJson:!0,multiTurn:!0},staff:{controlRole:!0,reliableJson:!0,multiTurn:!0},audit:{controlRole:!0,reliableJson:!0,multiTurn:!0},judge:{controlRole:!0,reliableJson:!0,multiTurn:!0}}),j=new Map;for(let a of d.A)if(a.capabilities&&"object"==typeof a.capabilities)j.set(a.id,{...f,...a.capabilities});else{let b=h[a.category];j.set(a.id,b?{...b}:{...f})}function k(a,b){if(!a||"string"!=typeof a)return!0;let c=a.indexOf("/"),d=c>=0?a.slice(0,c):a;return function(a,b){let c,d=i[b];if(!d)return!0;let f=(c=(0,e.g2)(a),j.get(c)||{...g});for(let[a,b]of Object.entries(d))if(b&&!f[a])return!1;return!0}((0,e.g2)(d),b)}function l(a,b,c=[]){let d=[],e=Array.isArray(c)&&c.length>0?c[0]:"";if("swarm"===a){for(let{role:a,model:c}of[{role:"manager",model:b?.managerModel||e},{role:"staff",model:b?.staffModel||e},{role:"audit",model:b?.auditModel||e}])if(c&&!k(c,a)){let b=c.split("/")[0];d.push({role:a,model:c,reason:`Provider "${b}" cannot serve as ${a} — web cookie providers lack tool use and file access required for control roles.`})}}else if("fusion"===a){let a=b?.judgeModel||e;if(a&&!k(a,"judge")){let b=a.split("/")[0];d.push({role:"judge",model:a,reason:`Provider "${b}" cannot serve as judge — web cookie providers lack tool use and file access required for the judge role.`})}}return d}},36701:(a,b,c)=>{c.d(b,{SH:()=>l,ZW:()=>p,_5:()=>k,_s:()=>j,bt:()=>n,gF:()=>m,kA:()=>o,ni:()=>f});var d=c(78474),e=c(77598);global._swarmEmitter||(global._swarmEmitter=new d.EventEmitter,global._swarmEmitter.setMaxListeners(200),global._swarmRuns=new Map,global._swarmEmitTimers={});let f=global._swarmEmitter,g=global._swarmRuns,h=global._swarmEmitTimers;function i(a,b,c=120){let d=b?.worker!==void 0?`:w${b.worker}`:"",e=`${a}:${b?.runId||""}${d}`;h[e]&&clearTimeout(h[e]),h[e]=setTimeout(()=>{delete h[e],f.emit(a,b)},c)}function j({comboName:a,promptPreview:b,managerModel:c,staffModel:d,auditModel:f,workerCount:h}){let k=(0,e.randomUUID)(),l=Date.now(),m={runId:k,comboName:a,promptPreview:(b||"").slice(0,200),managerModel:c,staffModel:d,auditModel:f,workerCount:h||0,status:"running",startedAt:l,completedAt:null,totalDurationMs:null,stages:{gatekeeper:{status:"pending",startedAt:null,completedAt:null,durationMs:null,model:c,verdict:null},manager:{status:"pending",startedAt:null,completedAt:null,durationMs:null,model:c,strategy:null},workers:{status:"pending",startedAt:null,completedAt:null,durationMs:null,workers:[]},audit:{status:"pending",startedAt:null,completedAt:null,durationMs:null,model:d||f},synthesis:{status:"pending",startedAt:null,completedAt:null,durationMs:null,model:c}}};for(let a=0;a<(h||0);a++)m.stages.workers.workers.push({index:a,status:"pending",model:null,durationMs:null});if(g.set(k,m),g.size>50){let a=[...g.entries()].sort((a,b)=>a[1].startedAt-b[1].startedAt)[0];a&&g.delete(a[0])}return i("swarm:start",{runId:k,comboName:a,promptPreview:m.promptPreview,workerCount:m.workerCount},0),m}function k(a,b,c={}){let d=g.get(a);if(!d)return;let e=d.stages[b];e&&(e.status="running",e.startedAt=Date.now(),Object.assign(e,c),i("swarm:stage",{runId:a,stage:b,status:"running",...c}))}function l(a,b,c={}){let d=g.get(a);if(!d)return;let e=d.stages[b];e&&"done"!==e.status&&(e.status="done",e.completedAt=Date.now(),e.durationMs=e.startedAt?e.completedAt-e.startedAt:null,Object.assign(e,c),i("swarm:stage",{runId:a,stage:b,status:"done",durationMs:e.durationMs,...c}))}function m(a,b,c,d={}){let e=g.get(a);if(!e)return;for(;e.stages.workers.workers.length<=b;)e.stages.workers.workers.push({index:e.stages.workers.workers.length,status:"pending",model:null,durationMs:null});let f=e.stages.workers.workers[b];f&&(f.status=c,Object.assign(f,d),i("swarm:stage",{runId:a,stage:"workers",worker:b,status:c,...d}))}function n(a,b){let c=g.get(a);c&&"done"!==c.status&&"error"!==c.status&&(c.status="error",c.error=String(b?.message||b||"unknown"),c.completedAt=Date.now(),c.totalDurationMs=c.completedAt-c.startedAt,i("swarm:error",{runId:a,error:c.error,totalDurationMs:c.totalDurationMs},0))}function o(a,b={}){let c=g.get(a);c&&"done"!==c.status&&"error"!==c.status&&(c.status="done",c.completedAt=Date.now(),c.totalDurationMs=c.completedAt-c.startedAt,Object.assign(c,b),i("swarm:complete",{runId:a,totalDurationMs:c.totalDurationMs,...b},0))}function p(a=20){return[...g.values()].sort((a,b)=>b.startedAt-a.startedAt).slice(0,a)}},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},82121:(a,b,c)=>{c.d(b,{sm:()=>X,zH:()=>ae,Ci:()=>Y,dW:()=>ah,t8:()=>_,Vt:()=>ad,$x:()=>V,Vu:()=>ab,Ni:()=>ak,Pr:()=>ac,vt:()=>ai,je:()=>M,UP:()=>aa,wj:()=>ag});var d=c(12557),e=c(43659),f=c(66306),g=c(26922),h=c(24467),i=c(31589),j=c(40669);function k(a,b,c){let d,e=new AbortController,f=()=>e.abort(c?.reason||Error("parent aborted"));return c?.aborted?f():c?.addEventListener("abort",f,{once:!0}),{promise:new Promise(c=>{d=setTimeout(()=>{e.abort(Error("combo task timeout")),c({__timeout:!0})},b),Promise.resolve().then(()=>a(e.signal)).then(a=>c(a)).catch(a=>c({__error:a})).finally(()=>clearTimeout(d))}),signal:e.signal,abort(a="combo task cancelled"){e.signal.aborted||e.abort(Error(a))},cleanup(){clearTimeout(d),c?.removeEventListener("abort",f)}}}var l=c(14170);function m(a){return a?.request?.contents?l.h.ANTIGRAVITY:Array.isArray(a?.contents)?l.h.GEMINI:a?.input===void 0||a?.messages?a?.anthropic_version||a?.system!==void 0?l.h.CLAUDE:l.h.OPENAI:l.h.OPENAI_RESPONSES}function n(a,b,c=m(a)){let d={...a};if(c===l.h.ANTIGRAVITY){let c={...a.request||{}};c.contents=[...c.contents||[],{role:"user",parts:[{text:b}]}],d.request=c}else c===l.h.GEMINI?d.contents=[...a.contents||[],{role:"user",parts:[{text:b}]}]:c===l.h.OPENAI_RESPONSES?d.input=[..."string"==typeof a.input?[{role:"user",content:a.input}]:[...a.input||[]],{role:"user",content:[{type:"input_text",text:b}]}]:d.messages=[...a.messages||[],{role:"user",content:b}];return d}function o(a){return(a||[]).filter(Boolean).map(a=>{if("string"==typeof a||!a||"object"!=typeof a)return a;if(a.functionCall)return`[Called tool: ${a.functionCall.name||"tool"}]`;if(a.functionResponse){let b=a.functionResponse.response,c="string"==typeof b?b:JSON.stringify(b);return`[Tool result: ${c||""}]`}return void 0!==a.text?a.text:a})}function p(a){return(a||[]).filter(Boolean).map(a=>{if("tool"===a.role||"function"===a.role)return{role:"assistant",content:`[Tool result: ${(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)||"";return{...c,content:`${e}${e?"\n":""}[Called tools: ${d}]`}}if(Array.isArray(a.content)&&a.content.some(a=>a?.type==="tool_use"||a?.type==="tool_result")){let b=a.content.map(a=>a?.text||(a?.type==="tool_use"?`[Called tool: ${a.name||"tool"}]`:a?.type==="tool_result"?`[Tool result: ${(0,g.kU)(a.content)}]`:"")).filter(Boolean).join("\n");return{...a,content:b}}return a})}function q(a,b=m(a)){let{tools:c,tool_choice:d,...e}=a,f={...e,stream:!1};return b===l.h.OPENAI_RESPONSES?Array.isArray(f.input)&&(f.input=p(f.input)):b===l.h.ANTIGRAVITY?f.request={...f.request||{},tools:void 0,contents:Array.isArray(f.request.contents)?f.request.contents.map(a=>({...a,parts:o(a.parts)})):f.request.contents}:b===l.h.GEMINI?f.contents=Array.isArray(f.contents)?f.contents.map(a=>({...a,parts:o(a.parts)})):f.contents:Array.isArray(f.messages)&&(f.messages=p(f.messages)),f}function r(a,b){let c=String(a||"");return c.length<=b?c:`${c.slice(0,b)}
|
|
2
|
+
[truncated by combo budget]`}let s=[/you are (an? )?(expert|senior|principal|staff)?\s*(coding|programming|software|ai)\s*(assistant|agent|engineer|companion|specialist)/i,/you are (claude|cursor|cline|copilot|windsurf|aider|roo|cody|continue)/i,/your (primary )?(task|role|job|goal) is to (help|assist|act as)/i,/follow the user[''']?s instructions/i,/you are operating as (a |an )?(pair|interactive|autonomous)/i,/write (clean|idiomatic|production)[- ]ready code/i,/you have access to (a set of |various )?tools/i,/<environment|<context|<system_prompt>/i];function t(a){return!!a&&"string"==typeof a&&!(a.length<80)&&s.some(b=>b.test(a))}function u(a){if(!a)return a;let b={...a};for(let a of["messages","input"])Array.isArray(b[a])&&(b[a]=b[a].filter(a=>{var b;return a?.role!=="system"&&a?.role!=="developer"||!t("string"==typeof(b=a.content)?b:Array.isArray(b)?b.map(a=>"string"==typeof a?a:a?.text||"").join("\n"):"")}));if("string"==typeof b.system&&t(b.system))delete b.system;else if(Array.isArray(b.system)){let a=b.system.filter(a=>!(a?.type==="text"&&t(a.text)));b.system=a.length>0?a:void 0,void 0===b.system&&delete b.system}for(let a of["system_instruction","systemInstruction"]){let c=b[a];c&&t(Array.isArray(c.parts)?c.parts.map(a=>a?.text||"").join("\n"):"")&&delete b[a]}return b}let v={default:"You are a specialist worker in a swarm. Focus exclusively on your assigned subtask. Produce complete, production-ready output. Do not attempt other subtasks.",architecture:"You are a software architect. Design the structure, interfaces, and module boundaries for your assigned component. Prioritize clean separation of concerns.","game-logic":"You are a game-logic specialist. Implement mechanics, state machines, and rules with correctness and balance in mind.","data-layer":"You are a data/persistence specialist. Implement storage, schemas, serialization, and access patterns with integrity and performance in mind.",ui:"You are a UI/UX specialist. Build accessible, responsive interfaces with clean component structure.",testing:"You are a testing specialist. Write thorough tests covering happy paths, edge cases, and failure modes.",security:"You are a security specialist. Harden inputs, prevent injection/XSS, and enforce least-privilege.",devops:"You are a DevOps specialist. Handle deployment, configuration, and operational concerns."};function w(a){let b=v[a?.role]||v.default,c=a?.instruction||a?.title||"Complete your assigned subtask.";return["=== SWARM WORKER DIRECTIVE ===",b,"",`Subtask: ${a?.title||"Untitled"}`,"",c,"\nOutput ONLY your work for this subtask. Do not reference other workers or the orchestrator.\n=== END DIRECTIVE ==="].join("\n")}var x=c(36701);let y={workerHardTimeoutMs:9e4,workerQuorum:2,stragglerGraceMs:1e4,managerTimeoutMs:6e4,minWorkers:2,maxWorkers:8},z="=== SWARM GATEKEEPER ===\nYou are the GATEKEEPER of a hierarchical swarm. Classify the user's most recent request as SIMPLE or COMPLEX.\n\nSIMPLE = greeting, small talk, a factual question, a one-line clarification, or anything answerable in under ~50 tokens without decomposition.\nCOMPLEX = a coding task, multi-step build request, design problem, debugging session, or anything benefiting from decomposition into parallel specialist work.\n\nRespond with EXACTLY one line, nothing else:\nVERDICT: SIMPLE\nor\nVERDICT: COMPLEX";function A(a){return['=== SWARM MANAGER (STRATEGY) ===\nYou are the MANAGER of a hierarchical swarm. Analyze the user\'s request and produce a high-level execution strategy that decomposes it into independent parallel subtasks.\n\nRespond with ONLY a JSON object (no markdown fences, no prose) of this exact shape:\n{\n "assessment": "<1-2 sentence summary of what the request needs>",\n "subtasks": [\n { "id": 1, "title": "<short title>", "role": "<architecture|game-logic|data-layer|ui|testing|security|devops|default>", "instruction": "<detailed instruction for the specialist worker>" }\n ]\n}\n\nRules:\n- Aim for 2-5 subtasks. Each must be independently executable in parallel.\n- `role` must be one of the listed values; pick the best specialist fit.\n- `instruction` must be self-contained — a worker sees only its own subtask.\n- Do NOT include integration/assembly as a subtask; the Staff auditor + Manager synthesis handle that.\n\n=== USER REQUEST ===',a].join("\n")}function B(a){return["=== SWARM STAFF (AUDIT) ===\nYou are the STAFF auditor of a hierarchical swarm. Specialist workers have independently completed their assigned subtasks. Your job is to produce a TECHNICAL AUDIT REPORT that the Manager will use to synthesize the final answer.\n\nFor each worker output, evaluate:\n- Completeness: did it fulfill the subtask instruction?\n- Correctness: any bugs, type errors, logic flaws, or missing edge cases?\n- Consistency: naming conflicts, duplicated logic, or mismatched interfaces with other workers?\n- Integration risks: what will need reconciliation when combining outputs?\n\nThen provide a CONSOLIDATION PLAN: the order in which outputs should be merged, what conflicts to resolve, and what gaps remain.\n\n=== SUBTASKS & WORKER OUTPUTS ===",a.map(a=>{let b=a.output||"(worker did not produce output)";return`### Subtask ${a.id}: ${a.title}
|
|
3
3
|
Role: ${a.role}
|
|
4
4
|
Instruction: ${a.instruction}
|
|
5
5
|
|
|
6
6
|
#### Worker Output
|
|
7
|
-
${b}`}).join("\n\n---\n\n"),"=== END ===\n\nNow write the technical audit report. Be concrete and specific. Reference subtask IDs."].join("\n")}function
|
|
7
|
+
${b}`}).join("\n\n---\n\n"),"=== END ===\n\nNow write the technical audit report. Be concrete and specific. Reference subtask IDs."].join("\n")}function C(a,b){return["=== SWARM MANAGER (SYNTHESIS) ===\nYou are the MANAGER producing the FINAL ANSWER. A Staff auditor has reviewed the parallel worker outputs and produced a technical audit report below. Synthesize ONE cohesive, complete, production-quality answer for the user's original request.\n\nRules:\n- Resolve any conflicts the auditor flagged.\n- Integrate all worker outputs into a single coherent result (codebase, explanation, or both).\n- Do NOT mention the swarm, workers, audit, or that multiple agents were used. The user sees only your final answer.\n- Match the user's language and intent exactly.\n\n=== TECHNICAL AUDIT REPORT ===",a,"=== END AUDIT ===\n\n=== ORIGINAL USER REQUEST ===",b,"\nNow produce the final answer."].join("\n")}function D(a){for(let b of["messages","input"])if(Array.isArray(a[b]))for(let c=a[b].length-1;c>=0;c--){let d=a[b][c];if(d?.role==="user"){if("string"==typeof d.content)return d.content;if(Array.isArray(d.content))return d.content.map(a=>"string"==typeof a?a:a?.text||"").join("")}}if(Array.isArray(a.contents)){let b=a.contents[a.contents.length-1];if(b?.role==="user"&&Array.isArray(b.parts))return b.parts.map(a=>a?.text||"").join("")}return""}function E(a){if(!a)return null;let b=a.replace(/```json\s*/gi,"").replace(/```/g,"").trim(),c=b.indexOf("{"),d=b.lastIndexOf("}");if(-1!==c&&-1!==d&&d>c)try{let a=JSON.parse(b.slice(c,d+1));if(Array.isArray(a.subtasks)&&a.subtasks.length>0)return a}catch{}let e=[];for(let a of function*(a){let b=0,c=-1,d=!1,e=!1;for(let f=0;f<a.length;f++){let g=a[f];if(e){e=!1;continue}if("\\"===g){e=!0;continue}if('"'===g){d=!d;continue}!d&&("{"===g?(0===b&&(c=f),b++):"}"===g&&0==--b&&c>=0&&(yield a.slice(c,f+1),c=-1))}}(b))if(/"id"\s*:/.test(a))try{let b=JSON.parse(a);b&&(b.title||b.instruction||b.role)&&e.push({id:"number"==typeof b.id?b.id:e.length+1,title:b.title||`Subtask ${e.length+1}`,role:b.role||"default",instruction:b.instruction||b.title||""})}catch{}return e.length>0?{assessment:"(recovered from truncated output)",subtasks:e}:null}function F(a){let{tools:b,tool_choice:c,...d}=a,e={...d,stream:!1};return Array.isArray(e.messages)&&(e.messages=V(e.messages)),e}let G=new Map;async function H({runId:a,body:b,managerModel:c,handleSingleModel:d,cfg:e,log:f}){(0,x._5)(a,"gatekeeper",{model:c}),D(b);let g=ae(u(F(b)),z);try{let b=await ag(d(g,c,{isPanel:!0,role:"gatekeeper"}),e.managerTimeoutMs);if(b?.__timeout||b?.__error)return(0,x.SH)(a,"gatekeeper",{verdict:"complex"}),I(c,f),"complex";let h=ad(await b.clone().json().catch(()=>({}))),i=/VERDICT:\s*SIMPLE/i.test(h)?"simple":"complex";return(0,x.SH)(a,"gatekeeper",{verdict:i}),G.delete(c),f?.info?.("SWARM",`Gatekeeper verdict: ${i}`),i}catch(b){return f?.warn?.("SWARM",`Gatekeeper error, assuming complex: ${b?.message||b}`),(0,x.SH)(a,"gatekeeper",{verdict:"complex"}),I(c,f),"complex"}}function I(a,b){let c=(G.get(a)||0)+1;G.set(a,c),3===c&&b?.warn?.("SWARM",`Gatekeeper has failed ${c} consecutive times for ${a}. Every request is falling through to a full swarm pipeline — the manager model may be degraded.`)}async function J({runId:a,body:b,managerModel:c,handleSingleModel:d,cfg:e,log:f}){(0,x._5)(a,"manager",{model:c});let g=D(b),h=ae(u(F(b)),A(g));try{let b=await ag(d(h,c,{isPanel:!0,role:"manager"}),e.managerTimeoutMs);if(b?.__timeout||b?.__error)return(0,x.SH)(a,"manager",{strategy:null}),null;let g=ad(await b.clone().json().catch(()=>({}))),i=E(g);return(0,x.SH)(a,"manager",{strategy:i?{subtaskCount:i.subtasks.length}:null}),i||f?.warn?.("SWARM","Manager produced unparseable strategy"),i}catch(b){return f?.warn?.("SWARM",`Manager strategy error: ${b?.message||b}`),(0,x.SH)(a,"manager",{strategy:null}),null}}async function K({runId:a,strategy:b,models:c,body:d,handleSingleModel:e,cfg:f,log:g,runBudget:h}){(0,x._5)(a,"workers",{workerCount:b.subtasks.length});let i=b.subtasks,j=c.filter(Boolean);if(0===j.length)return(0,x.SH)(a,"workers",{workers:[]}),[];let k=i.map((b,c)=>{let g=j[c%j.length],i=ae(F(d),w(b));return(0,x.gF)(a,c,"running",{model:g}),ag(e(i,g,{isPanel:!0,role:"worker"}),f.workerHardTimeoutMs).then(async d=>{if(d?.__timeout||d?.__error)return(0,x.gF)(a,c,"error",{model:g}),{ok:!1,text:""};if(!d?.ok)return(0,x.gF)(a,c,"error",{model:g,status:d?.status}),{ok:!1,text:""};let e=ad(await d.clone().json().catch(()=>({}))),f=h?h.clampOutput(e):e;return e&&!f?((0,x.gF)(a,c,"error",{model:g,reason:"over_budget"}),{ok:!1,text:""}):((0,x.gF)(a,c,"done",{model:g,outputLen:f.length}),{ok:!0,text:f,subtask:b})}).catch(()=>((0,x.gF)(a,c,"error",{model:g}),{ok:!1,text:""}))}),l=await ah(k,{minPanel:Math.min(f.workerQuorum,k.length),stragglerGraceMs:f.stragglerGraceMs,panelHardTimeoutMs:f.workerHardTimeoutMs}),m=[];for(let a=0;a<l.length;a++){let b=l[a];b&&b.ok&&m.push({subtask:i[a],text:b.text})}return(0,x.SH)(a,"workers",{workers:l.map((a,b)=>({index:b,ok:!!a?.ok}))}),m}async function L({runId:a,strategy:b,workerOutputs:c,staffModel:d,auditModel:e,body:f,handleSingleModel:g,cfg:h,log:i,runBudget:j}){let k=d||e;if(!k)return(0,x.SH)(a,"audit",{skipped:!0}),null;(0,x._5)(a,"audit",{model:k});let l=b.subtasks.map(a=>{let b=c.find(b=>b.subtask===a);return{...a,output:b?.text||"(no output)"}}),m=ae(u(F(f)),B(l));try{let b=await ag(g(m,k,{isPanel:!0,role:"audit"}),h.managerTimeoutMs);if(b?.__timeout||b?.__error)return(0,x.SH)(a,"audit",{skipped:!0}),null;let c=ad(await b.clone().json().catch(()=>({})));return(0,x.SH)(a,"audit",{reportLen:c.length}),j?j.clampOutput(c):c}catch(b){return i?.warn?.("SWARM",`Staff audit error: ${b?.message||b}`),(0,x.SH)(a,"audit",{skipped:!0}),null}}async function M({body:a,models:b,handleSingleModel:c,log:d,comboName:e,managerModel:f,staffModel:g,auditModel:h,workerCount:j,swarmTuning:k,telemetry:l=!0,signal:m,runBudget:n,principalId:o,autoScale:p}){let q=b.filter(Boolean);if(0===q.length)return new Response(JSON.stringify({error:"Swarm requires at least one worker model"}),{status:400});let r={...y,...k||{}},s=(f||"").trim()||q[0],t=D(a);if(1===q.length&&!f&&!g&&!h)return c(a,q[0],{role:"manager"});let u=(0,i.Ub)("swarm",{managerModel:f,staffModel:g,auditModel:h},q);if(u.length>0){let a=u.map(a=>a.reason).join(" ");return new Response(JSON.stringify({error:{message:`Swarm role validation failed: ${a}`,type:"capability_error"}}),{status:400,headers:{"Content-Type":"application/json"}})}let v=l?(0,x._s)({comboName:e,promptPreview:t,managerModel:s,staffModel:g,auditModel:h,workerCount:j||r.minWorkers}):null,w=v?.runId;try{let b,e=l?await H({runId:w,body:a,managerModel:s,handleSingleModel:c,cfg:r,log:d}):await N({body:a,managerModel:s,handleSingleModel:c,cfg:r,log:d});if("simple"===e)return d?.info?.("SWARM","Gatekeeper bypass — simple request, direct answer"),w&&(0,x.kA)(w,{bypassed:!0}),c(a,s,{role:"manager"});let f=l?await J({runId:w,body:a,managerModel:s,handleSingleModel:c,cfg:r,log:d}):await O({body:a,managerModel:s,handleSingleModel:c,cfg:r,log:d});if(!f||!Array.isArray(f.subtasks)||0===f.subtasks.length)return d?.warn?.("SWARM","Strategy decomposition failed — falling back to direct answer"),w&&(0,x.kA)(w,{fallback:!0}),c(a,s,{role:"manager"});p?.enabled?(b=Math.min(Math.max(f.subtasks.length,p.minWorkers||1),p.maxWorkers||r.maxWorkers),d?.info?.("SWARM",`Auto-scale: ${f.subtasks.length} subtasks → ${b} workers (${p.minWorkers||1}–${p.maxWorkers||r.maxWorkers})`)):b="number"==typeof j&&j>0?Math.min(j,r.maxWorkers):r.maxWorkers;let i=f.subtasks.slice(0,b),k=l?await K({runId:w,strategy:{subtasks:i},models:q,body:a,handleSingleModel:c,cfg:r,log:d,runBudget:n}):await P({strategy:{subtasks:i},models:q,body:a,handleSingleModel:c,cfg:r,log:d,runBudget:n});if(k.length<r.minWorkers){if(d?.warn?.("SWARM",`Only ${k.length}/${i.length} workers succeeded — fallback`),w&&(0,x.kA)(w,{fallback:!0}),1===k.length){let b=k[0].text||"";return c(ae(a,`The specialist worker produced this answer for the subtask "${k[0].subtask?.title||""}". Output it verbatim to the user, adjusting only for formatting if needed:
|
|
8
8
|
|
|
9
|
-
${b}`),s,{role:"manager"})}return c(a,s,{role:"manager"})}let m=l?await K({runId:y,strategy:{subtasks:i},workerOutputs:k,staffModel:g,auditModel:h,body:a,handleSingleModel:c,cfg:r,log:d}):await P({strategy:{subtasks:i},workerOutputs:k,staffModel:g,auditModel:h,body:a,handleSingleModel:c,cfg:r,log:d}),n=m?B(m,t):B(k.map(a=>a.text).join("\n\n---\n\n"),t),o=_(a,n);if(d?.info?.("SWARM",`Synthesizing final answer from ${k.length} worker outputs`),y){(0,w._5)(y,"synthesis",{model:s});let a=await c(o,s,{role:"manager"});if(a?.body){let b=a.body,c=new ReadableStream({start(a){let c=b.getReader(),d=()=>c.read().then(({done:b,value:c})=>{if(b){a.close(),(0,w.SH)(y,"synthesis"),(0,w.kA)(y,{workerCount:k.length});return}return a.enqueue(c),d()}).catch(()=>{try{a.close()}catch{}(0,w.SH)(y,"synthesis"),(0,w.kA)(y,{workerCount:k.length})});d()},cancel(a){(0,w.SH)(y,"synthesis"),(0,w.kA)(y,{workerCount:k.length})}});return new Response(c,{status:a.status,statusText:a.statusText,headers:a.headers})}return(0,w.SH)(y,"synthesis"),(0,w.kA)(y,{workerCount:k.length}),a}return c(o,s,{role:"manager"})}catch(b){return d?.error?.("SWARM",`Swarm failed: ${b?.message||b}`),y&&(0,w.bt)(y,b),c(a,s,{role:"manager"})}}async function M({body:a,managerModel:b,handleSingleModel:c,cfg:d,log:e}){let f=_(t(E(a)),y);try{let a=await ab(c(f,b,{isPanel:!0,role:"gatekeeper"}),d.managerTimeoutMs);if(a?.__timeout||a?.__error)return"complex";let e=$(await a.clone().json().catch(()=>({})));return/VERDICT:\s*SIMPLE/i.test(e)?"simple":"complex"}catch{return"complex"}}async function N({body:a,managerModel:b,handleSingleModel:c,cfg:d,log:e}){let f=C(a),g=_(t(E(a)),z(f));try{let a=await ab(c(g,b,{isPanel:!0,role:"manager"}),d.managerTimeoutMs);if(a?.__timeout||a?.__error)return null;let e=$(await a.clone().json().catch(()=>({})));return D(e)}catch{return null}}async function O({strategy:a,models:b,body:c,handleSingleModel:d,cfg:e}){let f=b.filter(Boolean);if(0===f.length)return[];let g=a.subtasks.map((a,b)=>{let g=f[b%f.length];return ab(d(_(E(c),v(a)),g,{isPanel:!0,role:"worker"}),e.workerHardTimeoutMs).then(async b=>b?.__timeout||b?.__error||!b?.ok?{ok:!1,text:""}:{ok:!0,text:$(await b.clone().json().catch(()=>({}))),subtask:a}).catch(()=>({ok:!1,text:""}))}),h=await ac(g,{minPanel:Math.min(e.workerQuorum,g.length),stragglerGraceMs:e.stragglerGraceMs,panelHardTimeoutMs:e.workerHardTimeoutMs}),i=[];for(let a of h)a&&a.ok&&a.text&&i.push({subtask:a.subtask,text:a.text});return i}async function P({strategy:a,workerOutputs:b,staffModel:c,auditModel:d,body:e,handleSingleModel:f,cfg:g}){let h=c||d;if(!h)return null;let i=a.subtasks.map(a=>{let c=b.find(b=>b.subtask===a);return{...a,output:c?.text||"(no output)"}}),j=_(t(E(e)),A(i));try{let a=await ab(f(j,h,{isPanel:!0,role:"audit"}),g.managerTimeoutMs);if(a?.__timeout||a?.__error)return null;return $(await a.clone().json().catch(()=>({})))}catch{return null}}let Q=new Set(["vision","pdf","audioInput","videoInput"]);async function R(a,b){if(!Array.isArray(a)||a.length<=1)return{active:a||[],skipped:[]};let d=[],e=[];for(let f of a){let a="string"==typeof f?f.indexOf("/"):-1,g=a>0?f.slice(0,a):"",i=g?(0,j.g2)(g):"";if(i&&(0,h.GK)(i,b))e.push(f);else if(i){let a=null;try{let{getProviderHealth:b}=await c.e(5628).then(c.bind(c,15628));a=b(i)}catch{}a&&a.total>=10&&null!==a.successRate&&a.successRate<.5?e.push(f):d.push(f)}else d.push(f)}return 0===d.length?{active:a,skipped:[]}:{active:d,skipped:e}}let S="[Called tools: ",T="[Tool result: ";function U(a){return a.filter(a=>a).map(a=>{if("tool"===a.role||"function"===a.role)return{role:"assistant",content:`${T}${(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":""}${S}${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":""}${S}${c.join(", ")}]`),d.length>0&&(f=`${f}${f?"\n":""}${T}${d.join("\n")}]`),{...e,content:f}}}return a})}let V=new Map;function W(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 X(a){a?V.delete(a):V.clear()}function Y(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}async function Z({body:a,models:b,handleSingleModel:c,log:g,comboName:h,comboStrategy:i,comboStickyLimit:k=1,autoSwitch:l=!0,breakerSettings:m=null,signal:n,runBudget:o}){let p=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=V.get(f)||{index:0,consecutiveUseCount:0},i=h.index%a.length,j=function(a,b){let c=[...a];for(let a=0;a<b;a++){let a=c.shift();c.push(a)}return c}(a,i),k=h.consecutiveUseCount+1;return k>=g?V.set(f,{index:(i+1)%a.length,consecutiveUseCount:0}):V.set(f,{index:i,consecutiveUseCount:k}),j}(b,h,i,k);if(m){let{active:a,skipped:b}=await R(p,m);b.length>0&&(g.info("COMBO",`breaker pre-filter: skipped ${b.length} open-breaker model(s) [${b.join(", ")}]`),p=a)}if(l){let b=function(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 W(a.messages))d(b.content);for(let b of W(a.input))d(b.content);for(let b of W(a.contents||a.request?.contents))d(b.parts);return b}(a);if(b.size>0){let a=function(a,b){if(!b||0===b.size||!Array.isArray(a)||a.length<=1)return a;let c=[...b].filter(a=>Q.has(a)),d=[...b].filter(a=>!Q.has(a));return a.map((a,b)=>{let e,g,h,i;return{m:a,i:b,t:(g=(e="string"==typeof a?a.indexOf("/"):-1)>0?(0,j.g2)(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)}(p,b);a[0]!==p[0]&&g.info("COMBO",`auto-switch for [${[...b].join(",")}] → ${a[0]}`),p=a}}let q=null,r=null,s=null;for(let b=0;b<p.length;b++){let e=p[b];g.info("COMBO",`Trying model ${b+1}/${p.length}: ${e}`);try{let b=await c(a,e,{role:"worker"});if(b.ok)return g.info("COMBO",`Model ${e} succeeded`),b;let f=b.statusText||"",h=null;try{let a=await b.clone().json();f=a?.error?.message||a?.error||a?.message||f,h=a?.retryAfter||null}catch{}if(h&&(!r||new Date(h)<new Date(r))&&(r=h),"string"!=typeof f)try{f=JSON.stringify(f)}catch{f=String(f)}let{shouldFallback:i,cooldownMs:j}=[400,405,406,413,415,422].includes(b.status)?{shouldFallback:!1,cooldownMs:0}:(0,d.hk)(b.status,f);if(!i)return g.warn("COMBO",`Model ${e} failed (no fallback)`,{status:b.status}),b;j&&j>0&&j<=5e3&&(503===b.status||502===b.status||504===b.status)&&(g.info("COMBO",`Model ${e} transient ${b.status}, waiting ${j}ms before next`),await new Promise(a=>setTimeout(a,j))),q=f||String(b.status),s||(s=b.status),g.warn("COMBO",`Model ${e} failed, trying next`,{status:b.status})}catch(a){q=a.message||String(a),s||(s=500),g.warn("COMBO",`Model ${e} threw error, trying next`,{error:q})}}let t=q&&q.toLowerCase().includes("no credentials")?503:s||503,u=q||"All combo models unavailable";if(r){let a=(0,d.Qo)(r);return g.warn("COMBO",`All models failed | ${u} (${a})`),(0,e.wO)(t,u,r,a)}return g.warn("COMBO",`All models failed | ${u}`),new Response(JSON.stringify({error:{message:u,type:"server_error",code:"all_models_failed"}}),{status:t,headers:{"Content-Type":"application/json"}})}function $(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}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""}function _(a,b){let c={...a};return Array.isArray(a.messages)?c.messages=[...a.messages,{role:"user",content:b}]:Array.isArray(a.input)?c.input=[...a.input,{role:"user",content:b}]:Array.isArray(a.contents)?c.contents=[...a.contents,{role:"user",parts:[{text:b}]}]:c.messages=[{role:"user",content:b}],c}let aa={minPanel:2,stragglerGraceMs:8e3,panelHardTimeoutMs:9e4};function ab(a,b,c){return"function"==typeof a?k(a,b,c).promise:new Promise(c=>{let d=setTimeout(()=>c({__timeout:!0}),b);Promise.resolve(a).then(a=>{clearTimeout(d),c(a)}).catch(a=>{clearTimeout(d),c({__error:a})})})}function ac(a,{minPanel:b,stragglerGraceMs:c,panelHardTimeoutMs:d,onFinish:e}){return new Promise(f=>{let g=Array(a.length),h=0,i=0,j=!1,k=null,l=()=>{j||(j=!0,clearTimeout(m),k&&clearTimeout(k),e?.(),f(g))},m=setTimeout(l,d);a.forEach((d,e)=>{Promise.resolve(d).then(a=>{g[e]=a}).catch(a=>{g[e]={__error:a}}).finally(()=>{if(h++,g[e]&&g[e].ok&&i++,h===a.length)return l();i>=b&&!k&&(k=setTimeout(l,c))})})})}async function ad({body:a,models:b,handleSingleModel:c,log:d,comboName:e,judgeModel:f,tuning:g,signal:h,runBudget:j}){let l,o=Array.isArray(b)?b.filter(Boolean):[];if(0===o.length)return new Response(JSON.stringify({error:{message:"Fusion combo has no models"}}),{status:400,headers:{"Content-Type":"application/json"}});if(1===o.length)return c(a,o[0],{role:"judge"});let r=(0,i.Ub)("fusion",{judgeModel:f},o);if(r.length>0){let a=r.map(a=>a.reason).join(" ");return new Response(JSON.stringify({error:{message:`Fusion role validation failed: ${a}`,type:"capability_error"}}),{status:400,headers:{"Content-Type":"application/json"}})}let s={...aa,...g||{}},t=Math.min(Math.max(2,s.minPanel),o.length),u=f&&f.trim()?f.trim():o[0];d.info("FUSION",`Combo "${e}" | panel=${o.length} [${o.join(", ")}] | judge=${u} | quorum=${t}`);let v=m(a),w=p(a,v),x=o.map(a=>k(b=>c(w,a,{isPanel:!0,signal:b,trafficClass:"panel",role:"panel"}),s.panelHardTimeoutMs,h)),y=Date.now(),z=await ac(x.map(a=>a.promise),{...s,minPanel:t,onFinish:()=>x.forEach(a=>a.abort("fusion panel closed"))});x.forEach(a=>a.cleanup()),d.info("FUSION",`fan-out collected in ${Date.now()-y}ms`);let A=[];for(let a=0;a<z.length;a++){let b=z[a],c=o[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);if(e){let a=j?j.clampOutput(e):e;if(!a){d.warn("FUSION",`Panel ${c} exceeded output budget`);continue}A.push({model:c,text:a,res:b}),d.info("FUSION",`Panel ${c} ok (${e.length} chars)`)}else d.warn("FUSION",`Panel ${c} returned empty content`)}catch(a){d.warn("FUSION",`Panel ${c} unparseable`,{error:a.message||String(a)})}}if(0===A.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===A.length)return a?.stream===!0?(d.info("FUSION",`Only ${A[0].model} succeeded — re-running with stream:true to honor client SSE request (no fusion)`),c(a,A[0].model,{role:"panel",signal:h,trafficClass:"user"})):(d.info("FUSION",`Only ${A[0].model} succeeded — returning its response directly (no fusion, no re-run)`),A[0].res);let B=j?.limits?.maxOutputChars||12e4,C=n(a,q((l=A.map((a,b)=>`[Source ${b+1}]
|
|
10
|
-
${a.text}`).join("\n\n"),[`You are the JUDGE in a model-fusion panel. ${
|
|
9
|
+
${b}`),s,{role:"manager"})}return c(a,s,{role:"manager"})}let m=l?await L({runId:w,strategy:{subtasks:i},workerOutputs:k,staffModel:g,auditModel:h,body:a,handleSingleModel:c,cfg:r,log:d,runBudget:n}):await Q({strategy:{subtasks:i},workerOutputs:k,staffModel:g,auditModel:h,body:a,handleSingleModel:c,cfg:r,log:d,runBudget:n}),o=m?C(m,t):C(k.map(a=>a.text).join("\n\n---\n\n"),t),u=ae(a,o);if(d?.info?.("SWARM",`Synthesizing final answer from ${k.length} worker outputs`),w){(0,x._5)(w,"synthesis",{model:s});let a=await c(u,s,{role:"manager"});if(a?.body){let b=a.body,c=new ReadableStream({start(a){let c=b.getReader(),d=()=>c.read().then(({done:b,value:c})=>{if(b){a.close(),(0,x.SH)(w,"synthesis"),(0,x.kA)(w,{workerCount:k.length});return}return a.enqueue(c),d()}).catch(()=>{try{a.close()}catch{}(0,x.SH)(w,"synthesis"),(0,x.kA)(w,{workerCount:k.length})});d()},cancel(a){(0,x.SH)(w,"synthesis"),(0,x.kA)(w,{workerCount:k.length})}});return new Response(c,{status:a.status,statusText:a.statusText,headers:a.headers})}return(0,x.SH)(w,"synthesis"),(0,x.kA)(w,{workerCount:k.length}),a}return c(u,s,{role:"manager"})}catch(b){return d?.error?.("SWARM",`Swarm failed: ${b?.message||b}`),w&&(0,x.bt)(w,b),c(a,s,{role:"manager"})}}async function N({body:a,managerModel:b,handleSingleModel:c,cfg:d,log:e}){let f=ae(u(F(a)),z);try{let a=await ag(c(f,b,{isPanel:!0,role:"gatekeeper"}),d.managerTimeoutMs);if(a?.__timeout||a?.__error)return"complex";let e=ad(await a.clone().json().catch(()=>({})));return/VERDICT:\s*SIMPLE/i.test(e)?"simple":"complex"}catch{return"complex"}}async function O({body:a,managerModel:b,handleSingleModel:c,cfg:d,log:e}){let f=D(a),g=ae(u(F(a)),A(f));try{let a=await ag(c(g,b,{isPanel:!0,role:"manager"}),d.managerTimeoutMs);if(a?.__timeout||a?.__error)return null;let e=ad(await a.clone().json().catch(()=>({})));return E(e)}catch{return null}}async function P({strategy:a,models:b,body:c,handleSingleModel:d,cfg:e,log:f,runBudget:g}){let h=b.filter(Boolean);if(0===h.length)return[];let i=a.subtasks.map((a,b)=>{let f=h[b%h.length];return ag(d(ae(F(c),w(a)),f,{isPanel:!0,role:"worker"}),e.workerHardTimeoutMs).then(async b=>{if(b?.__timeout||b?.__error||!b?.ok)return{ok:!1,text:""};let c=ad(await b.clone().json().catch(()=>({}))),d=g?g.clampOutput(c):c;return c&&!d?{ok:!1,text:""}:{ok:!0,text:d,subtask:a}}).catch(()=>({ok:!1,text:""}))}),j=await ah(i,{minPanel:Math.min(e.workerQuorum,i.length),stragglerGraceMs:e.stragglerGraceMs,panelHardTimeoutMs:e.workerHardTimeoutMs}),k=[];for(let a of j)a&&a.ok&&a.text&&k.push({subtask:a.subtask,text:a.text});return k}async function Q({strategy:a,workerOutputs:b,staffModel:c,auditModel:d,body:e,handleSingleModel:f,cfg:g,log:h,runBudget:i}){let j=c||d;if(!j)return null;let k=a.subtasks.map(a=>{let c=b.find(b=>b.subtask===a);return{...a,output:c?.text||"(no output)"}}),l=ae(u(F(e)),B(k));try{let a=await ag(f(l,j,{isPanel:!0,role:"audit"}),g.managerTimeoutMs);if(a?.__timeout||a?.__error)return null;let b=ad(await a.clone().json().catch(()=>({})));return i?i.clampOutput(b):b}catch{return null}}let R=new Set(["vision","pdf","audioInput","videoInput"]);async function S(a,b){if(!Array.isArray(a)||a.length<=1)return{active:a||[],skipped:[]};let d=[],e=[];for(let f of a){let a="string"==typeof f?f.indexOf("/"):-1,g=a>0?f.slice(0,a):"",i=g?(0,j.g2)(g):"";if(i&&(0,h.GK)(i,b))e.push(f);else if(i){let a=null;try{let{getProviderHealth:b}=await c.e(5628).then(c.bind(c,15628));a=b(i)}catch{}a&&a.total>=10&&null!==a.successRate&&a.successRate<.5?e.push(f):d.push(f)}else d.push(f)}return 0===d.length?{active:a,skipped:[]}:{active:d,skipped:e}}let T="[Called tools: ",U="[Tool result: ";function V(a){return a.filter(a=>a).map(a=>{if("tool"===a.role||"function"===a.role)return{role:"assistant",content:`${U}${(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":""}${T}${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":""}${T}${c.join(", ")}]`),d.length>0&&(f=`${f}${f?"\n":""}${U}${d.join("\n")}]`),{...e,content:f}}}return a})}function W(a){let b="string"==typeof a?a.indexOf("/"):-1,c=b>0?(0,j.g2)(a.slice(0,b)):"",d=b>0?a.slice(b+1):a;return(0,f.nl)(c,d)}let X="oc/mimo-v2.5-free";function Y(a,b,c=""){if(!Array.isArray(a)||0===a.length)return a;let d=[...b||[]].filter(a=>R.has(a));if(0===d.length)return a;let e=a=>{let b=W(a);return d.every(a=>!0===b[a])};return a.some(e)||!c||a.includes(c)||!e(c)?a:[c,...a]}let Z=new Map;function $(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 _(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"),("audio_url"===c||"audio"===c||"input_audio"===c)&&b.add("audioInput"),("video_url"===c||"video"===c||"input_video"===c)&&b.add("videoInput"),("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"),"string"==typeof d&&(d.startsWith("audio/")||"application/ogg"===d)&&b.add("audioInput"),"string"==typeof d&&(d.startsWith("video/")||"application/mp4"===d)&&b.add("videoInput"),"application/pdf"===d&&b.add("pdf")},d=a=>{if(Array.isArray(a))for(let b of a)c(b)};for(let b of $(a.messages))d(b.content);for(let b of $(a.input))d(b.content);for(let b of $(a.contents||a.request?.contents))d(b.parts);return b}function aa(a){a?Z.delete(a):Z.clear()}function ab(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}async function ac({body:a,models:b,handleSingleModel:c,log:f,comboName:g,comboStrategy:h,comboStickyLimit:i=1,autoSwitch:j=!0,breakerSettings:k=null,signal:l,runBudget:m}){if("fusion"===h||"swarm"===h||"cascade"===h)return f.warn("COMBO",`Combo "${g}" strategy ${h} not supported here (fallback/round-robin only)`),new Response(JSON.stringify({error:{message:`Combo strategy "${h}" is only supported for chat requests`,type:"invalid_request_error",code:"combo_strategy_not_supported"}}),{status:400,headers:{"Content-Type":"application/json"}});let n=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=Z.get(f)||{index:0,consecutiveUseCount:0},i=h.index%a.length,j=function(a,b){let c=[...a];for(let a=0;a<b;a++){let a=c.shift();c.push(a)}return c}(a,i),k=h.consecutiveUseCount+1;return k>=g?Z.set(f,{index:(i+1)%a.length,consecutiveUseCount:0}):Z.set(f,{index:i,consecutiveUseCount:k}),j}(b,g,h,i);if(k){let{active:a,skipped:b}=await S(n,k);b.length>0&&(f.info("COMBO",`breaker pre-filter: skipped ${b.length} open-breaker model(s) [${b.join(", ")}]`),n=a)}if(j){let b=_(a);if(b.size>0){let a=function(a,b){if(!b||0===b.size||!Array.isArray(a)||a.length<=1)return a;let c=[...b].filter(a=>R.has(a)),d=[...b].filter(a=>!R.has(a));return a.map((a,b)=>{let e;return{m:a,i:b,t:(e=W(a),c.every(a=>!0===e[a])?+!d.every(a=>!0===e[a]):2)}}).sort((a,b)=>a.t-b.t||a.i-b.i).map(a=>a.m)}(n,b);a[0]!==n[0]&&f.info("COMBO",`auto-switch for [${[...b].join(",")}] → ${a[0]}`),n=a}}let o=null,p=null,q=null;for(let b=0;b<n.length;b++){let e=n[b];f.info("COMBO",`Trying model ${b+1}/${n.length}: ${e}`);try{let b=await c(a,e,{role:"worker"});if(b.ok)return f.info("COMBO",`Model ${e} succeeded`),b;let g=b.statusText||"",h=null;try{let a=await b.clone().json();g=a?.error?.message||a?.error||a?.message||g,h=a?.retryAfter||null}catch{}if(h&&(!p||new Date(h)<new Date(p))&&(p=h),"string"!=typeof g)try{g=JSON.stringify(g)}catch{g=String(g)}let{shouldFallback:i,cooldownMs:j}=[400,405,406,413,415,422].includes(b.status)?{shouldFallback:!1,cooldownMs:0}:(0,d.hk)(b.status,g);if(!i)return f.warn("COMBO",`Model ${e} failed (no fallback)`,{status:b.status}),b;j&&j>0&&j<=5e3&&(503===b.status||502===b.status||504===b.status)&&(f.info("COMBO",`Model ${e} transient ${b.status}, waiting ${j}ms before next`),await new Promise(a=>setTimeout(a,j))),o=g||String(b.status),q||(q=b.status),f.warn("COMBO",`Model ${e} failed, trying next`,{status:b.status})}catch(a){o=a.message||String(a),q||(q=500),f.warn("COMBO",`Model ${e} threw error, trying next`,{error:o})}}let r=o&&o.toLowerCase().includes("no credentials")?503:q||503,s=o||"All combo models unavailable";if(p){let a=(0,d.Qo)(p);return f.warn("COMBO",`All models failed | ${s} (${a})`),(0,e.wO)(r,s,p,a)}return f.warn("COMBO",`All models failed | ${s}`),new Response(JSON.stringify({error:{message:s,type:"server_error",code:"all_models_failed"}}),{status:r,headers:{"Content-Type":"application/json"}})}function ad(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}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""}function ae(a,b){let c={...a};return Array.isArray(a.messages)?c.messages=[...a.messages,{role:"user",content:b}]:Array.isArray(a.input)?c.input=[...a.input,{role:"user",content:b}]:Array.isArray(a.contents)?c.contents=[...a.contents,{role:"user",parts:[{text:b}]}]:c.messages=[{role:"user",content:b}],c}let af={minPanel:2,stragglerGraceMs:8e3,panelHardTimeoutMs:9e4};function ag(a,b,c){return"function"==typeof a?k(a,b,c).promise:new Promise(c=>{let d=setTimeout(()=>c({__timeout:!0}),b);Promise.resolve(a).then(a=>{clearTimeout(d),c(a)}).catch(a=>{clearTimeout(d),c({__error:a})})})}function ah(a,{minPanel:b,stragglerGraceMs:c,panelHardTimeoutMs:d,onFinish:e}){return new Promise(f=>{let g=Array(a.length),h=0,i=0,j=!1,k=null,l=()=>{j||(j=!0,clearTimeout(m),k&&clearTimeout(k),e?.(),f(g))},m=setTimeout(l,d);a.forEach((d,e)=>{Promise.resolve(d).then(a=>{g[e]=a}).catch(a=>{g[e]={__error:a}}).finally(()=>{if(h++,g[e]&&g[e].ok&&i++,h===a.length)return l();i>=b&&!k&&(k=setTimeout(l,c))})})})}async function ai({body:a,models:b,handleSingleModel:c,log:d,comboName:e,judgeModel:f,tuning:g,signal:h,runBudget:j}){let l,o=Array.isArray(b)?b.filter(Boolean):[];if(0===o.length)return new Response(JSON.stringify({error:{message:"Fusion combo has no models"}}),{status:400,headers:{"Content-Type":"application/json"}});if(1===o.length)return c(a,o[0],{role:"judge"});let p=(0,i.Ub)("fusion",{judgeModel:f},o);if(p.length>0){let a=p.map(a=>a.reason).join(" ");return new Response(JSON.stringify({error:{message:`Fusion role validation failed: ${a}`,type:"capability_error"}}),{status:400,headers:{"Content-Type":"application/json"}})}let s={...af,...g||{}},t=Math.min(Math.max(2,s.minPanel),o.length),u=f&&f.trim()?f.trim():o[0];d.info("FUSION",`Combo "${e}" | panel=${o.length} [${o.join(", ")}] | judge=${u} | quorum=${t}`);let v=async(a,b)=>{let c=k(a,s.panelHardTimeoutMs,h),e=await c.promise;if(c.cleanup(),e?.__error?.name==="AbortError")throw e.__error;return e?.__timeout?(d.warn("FUSION",`${b} timed out after ${s.panelHardTimeoutMs}ms`),new Response(JSON.stringify({error:{message:`${b} timed out`}}),{status:504,headers:{"Content-Type":"application/json"}})):e?.__error?(d.warn("FUSION",`${b} error: ${e.__error?.message||e.__error}`),new Response(JSON.stringify({error:{message:`${b} failed: ${e.__error?.message||"unknown error"}`}}),{status:502,headers:{"Content-Type":"application/json"}})):e},w=m(a),x=q(a,w),y=o.map(a=>k(b=>c(x,a,{isPanel:!0,signal:b,trafficClass:"panel",role:"panel"}),s.panelHardTimeoutMs,h)),z=Date.now(),A=await ah(y.map(a=>a.promise),{...s,minPanel:t,onFinish:()=>y.forEach(a=>a.abort("fusion panel closed"))});y.forEach(a=>a.cleanup()),d.info("FUSION",`fan-out collected in ${Date.now()-z}ms`);let B=[];for(let a=0;a<A.length;a++){let b=A[a],c=o[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=ad(a);if(e){let a=j?j.clampOutput(e):e;if(!a){d.warn("FUSION",`Panel ${c} exceeded output budget`);continue}B.push({model:c,text:a,res:b}),d.info("FUSION",`Panel ${c} ok (${e.length} chars)`)}else d.warn("FUSION",`Panel ${c} returned empty content`)}catch(a){d.warn("FUSION",`Panel ${c} unparseable`,{error:a.message||String(a)})}}if(0===B.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===B.length)return a?.stream===!0?(d.info("FUSION",`Only ${B[0].model} succeeded — re-running with stream:true to honor client SSE request (no fusion)`),v(b=>c(a,B[0].model,{role:"panel",signal:b,trafficClass:"user"}),`Re-run ${B[0].model}`)):(d.info("FUSION",`Only ${B[0].model} succeeded — returning its response directly (no fusion, no re-run)`),B[0].res);let C=j?.limits?.maxOutputChars||12e4,D=n(a,r((l=B.map((a,b)=>`[Source ${b+1}]
|
|
10
|
+
${a.text}`).join("\n\n"),[`You are the JUDGE in a model-fusion panel. ${B.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 ===",l,"=== END PANEL RESPONSES ===\n\nNow write the final answer to the user's original request."].join("\n")),C),w);return d.info("FUSION",`Judging ${B.length} answers with ${u}`),v(a=>c(D,u,{role:"judge",signal:a,trafficClass:"user"}),`Judge ${u}`)}let aj={confidenceThreshold:70,confidencePrompt:"Rate your confidence in this answer from 0 to 100. End your response with exactly: CONFIDENCE: <number>",escalatePrompt:"A prior model gave the following answer with low confidence. Review it, correct any issues, and provide a better answer.",maxStages:3};async function ak({body:a,models:b,handleSingleModel:c,log:d,comboName:e,tuning:f,signal:g,runBudget:h}){let i=Array.isArray(b)?b.filter(Boolean):[];if(0===i.length)return new Response(JSON.stringify({error:{message:"Cascade combo has no models"}}),{status:400,headers:{"Content-Type":"application/json"}});let j={...aj,...f||{}},k=Math.min(Math.max(1,j.maxStages),i.length),l=m(a),o=q(a,l),p=null,s=null;for(let a=0;a<k;a++){var t;let b,e=i[a],f=a===k-1,m=o;m=null!=p?n(m,`${j.escalatePrompt}
|
|
11
11
|
|
|
12
|
-
--- Prior Answer (${
|
|
13
|
-
${
|
|
12
|
+
--- Prior Answer (${s}) ---
|
|
13
|
+
${r(p,6e4)}
|
|
14
14
|
--- End Prior Answer ---
|
|
15
15
|
|
|
16
|
-
${
|
|
16
|
+
${j.confidencePrompt}`,l):n(m,j.confidencePrompt,l),d.info("CASCADE",`Stage ${a+1}/${k}: ${e}${p?" (escalated)":""}`);try{b=await c(m,e,{isPanel:!0,role:"worker",signal:g})}catch(b){if(b?.name==="AbortError")throw b;if(d.warn("CASCADE",`Stage ${a+1} (${e}) threw: ${b?.message||b}`),f)return new Response(JSON.stringify({error:{message:`Cascade failed at final stage: ${b?.message||"unknown"}`}}),{status:502,headers:{"Content-Type":"application/json"}});p=null,s=e;continue}if(b?.__timeout||b?.__error){if(d.warn("CASCADE",`Stage ${a+1} (${e}) ${b.__timeout?"timed out":"errored"}`),f)return new Response(JSON.stringify({error:{message:"Cascade failed at final stage"}}),{status:502,headers:{"Content-Type":"application/json"}});p=null,s=e;continue}if(!b?.ok){if(d.warn("CASCADE",`Stage ${a+1} (${e}) returned status ${b?.status}`),f)return b;p=null,s=e;continue}if(f)return d.info("CASCADE",`Final stage (${e}) returning`),b;let q="";try{let a=await b.clone().json().catch(()=>({}));(q=ad(a))&&h&&(q=h.clampOutput(q))}catch{}let u=function(a){if(!a||"string"!=typeof a)return -1;let b=a.match(/CONFIDENCE:\s*(\d{1,3})\s*$/i);if(!b)return -1;let c=Number.parseInt(b[1],10);return Number.isFinite(c)&&c>=0&&c<=100?c:-1}(q);if(d.info("CASCADE",`Stage ${a+1} (${e}) confidence=${u}`),u>=0&&u>=j.confidenceThreshold)return d.info("CASCADE",`Stage ${a+1} confident (${u} ≥ ${j.confidenceThreshold}) — returning`),b;p=((t=q)&&"string"==typeof t?t.replace(/\s*CONFIDENCE:\s*\d{1,3}\s*$/i,"").trim():t)||q,s=e}return new Response(JSON.stringify({error:{message:"Cascade exhausted all stages"}}),{status:502,headers:{"Content-Type":"application/json"}})}},94755:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}}};
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
ON CONFLICT(id) DO UPDATE SET
|
|
7
7
|
provider=excluded.provider, authType=excluded.authType, name=excluded.name,
|
|
8
8
|
email=excluded.email, priority=excluded.priority, isActive=excluded.isActive,
|
|
9
|
-
data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.provider,c.authType,c.name,c.email,c.priority,c.isActive,c.data,c.createdAt,c.updatedAt])}let j=new Map,k=new Set(["lastUsedAt","consecutiveUseCount","lastRefreshAt","lastTested","lastError","lastErrorAt","errorCode","expiresIn"]);async function l(a){let b=await (0,e.c)(),c=[],d=[];a.provider&&(c.push("provider = ?"),d.push(a.provider)),void 0!==a.isActive&&(c.push("isActive = ?"),d.push(+!!a.isActive));let f=`SELECT * FROM providerConnections${c.length?` WHERE ${c.join(" AND ")}`:""}`,g=b.all(f,d).map(h);return g.sort((a,b)=>(a.priority||999)-(b.priority||999)),g}async function m(a={}){let b=function(a={}){let b=[];return a.provider&&b.push(`p:${a.provider}`),void 0!==a.isActive&&b.push(`a:${+!!a.isActive}`),b.length?b.join("|"):"all"}(a),c=Date.now(),d=j.get(b);if(d&&c-d.at<2e3)return d.promise.then(a=>a.slice());let e=l(a).catch(a=>{throw j.delete(b),a});return j.set(b,{promise:e,at:c}),e.then(a=>a.slice())}function n(){j.clear()}async function o(a){return h((await (0,e.c)()).get("SELECT * FROM providerConnections WHERE id = ?",[a]))}function p(a,b){let c=a.all("SELECT * FROM providerConnections WHERE provider = ?",[b]).map(h);c.sort((a,b)=>{let c=(a.priority||0)-(b.priority||0);return 0!==c?c:new Date(b.updatedAt||0)-new Date(a.updatedAt||0)}),c.forEach((b,c)=>{a.run("UPDATE providerConnections SET priority = ? WHERE id = ?",[c+1,b.id])})}async function q(a){let b,c=await (0,e.c)(),f=new Date().toISOString();return c.transaction(()=>{let e=c.all("SELECT * FROM providerConnections WHERE provider = ?",[a.provider]).map(h),j=null;if("oauth"===a.authType&&a.email){let b=a.providerSpecificData?.username,c=a.providerSpecificData?.chatgptAccountId;j=e.find(d=>{if("oauth"!==d.authType||d.email!==a.email)return!1;let e=d.providerSpecificData?.chatgptAccountId;if(c&&e)return c===e;if(c&&!e||!c&&e)return!1;let f=d.providerSpecificData?.username;return b&&f?b===f:!b&&!f})}else"apikey"===a.authType&&a.name&&(j=e.find(b=>"apikey"===b.authType&&b.name===a.name));if(j){let d={...j,...a,updatedAt:f};i(c,d),b=d;return}let k=a.name||null;k||"oauth"!==a.authType&&"access_token"!==a.authType||(k=a.email||`Account ${e.length+1}`);let l=a.priority;l||(l=e.reduce((a,b)=>Math.max(a,b.priority||0),0)+1);let m={id:(0,d.A)(),provider:a.provider,authType:a.authType||"oauth",name:k,priority:l,isActive:void 0===a.isActive||a.isActive,createdAt:f,updatedAt:f};for(let b of g)void 0!==a[b]&&null!==a[b]&&(m[b]=a[b]);a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(m.providerSpecificData=a.providerSpecificData),void 0!==a.email&&(m.email=a.email),i(c,m),p(c,a.provider),b=m}),n(),b}async function r(a,b){let c,d=await (0,e.c)();return d.transaction(()=>{let e=d.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!e){c=null;return}let f=h(e),g={...f,...b,updatedAt:new Date().toISOString()};i(d,g),void 0!==b.priority&&p(d,f.provider),c=g}),(!b||"object"!=typeof b||Object.keys(b).some(a=>!k.has(a)))&&n(),c}async function s(a){let b=await (0,e.c)(),c=!1;return b.transaction(()=>{let d=b.get("SELECT provider FROM providerConnections WHERE id = ?",[a]);d&&(b.run("DELETE FROM providerConnections WHERE id = ?",[a]),p(b,d.provider),c=!0)}),c&&n(),c}async function t(a){let b=await (0,e.c)(),c=b.get("SELECT COUNT(*) AS n FROM providerConnections WHERE provider = ?",[a]);return b.run("DELETE FROM providerConnections WHERE provider = ?",[a]),c?.n&&n(),c?.n||0}async function u(a){let b=await (0,e.c)();b.transaction(()=>p(b,a)),n()}async function v(){let a=await (0,e.c)(),b=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","consecutiveUseCount"],c=0;return a.transaction(()=>{for(let d of a.all("SELECT * FROM providerConnections")){let e=h(d),f=!1;for(let a of b)(null===e[a]||void 0===e[a])&&a in e&&(delete e[a],c++,f=!0);e.providerSpecificData&&0===Object.keys(e.providerSpecificData).length&&(delete e.providerSpecificData,c++,f=!0),f&&i(a,e)}}),c&&n(),c}},9460:(a,b,c)=>{c.d(b,{L9:()=>r,OM:()=>j,S8:()=>o,fv:()=>l,getMitmAlias:()=>q,o5:()=>k,uL:()=>p,uv:()=>n});var d=c(36366),e=c(644),f=c(22846);let g=(0,f.U)("modelAliases"),h=(0,f.U)("customModels"),i=(0,f.U)("mitmAlias");async function j(){return await g.getAll()}async function k(a,b){await g.set(a,b)}async function l(a){await g.remove(a)}function m(a,b,c){return`${a}|${b}|${c}`}async function n(){return Object.values(await h.getAll())}async function o({providerAlias:a,id:b,type:c="llm",name:f}){let g=m(a,b,c),h=await (0,d.c)(),i=!1;return h.transaction(()=>{if(h.get("SELECT 1 FROM kv WHERE scope = 'customModels' AND key = ?",[g]))return;let d=(0,e.s)({providerAlias:a,id:b,type:c,name:f||b});h.run("INSERT INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[g,d]),i=!0}),i}async function p({providerAlias:a,id:b,type:c="llm"}){await h.remove(m(a,b,c))}async function q(a){return a?await i.get(a)||{}:await i.getAll()}async function r(a,b){await i.set(a,b||{})}},12280:(a,b,c)=>{c.d(b,{X3:()=>k,jm:()=>m,uH:()=>l,wg:()=>f});let d=new Set(["fallback","round-robin","fusion","swarm","cascade"]),e=new Set(["llm","image","tts","stt","embedding","imageToText","webSearch","webFetch"]),f=Object.freeze({maxMembers:999,maxWorkers:8,maxConcurrentRunsPerPrincipal:2,maxConcurrentRunsGlobal:8,maxProviderFanout:4,minTimeoutMs:1e3,maxTimeoutMs:12e4,maxGraceMs:3e4,maxOutputChars:12e4,maxAggregateOutputChars:3e5,maxLogicalCalls:16,maxEstimatedCostUsd:100}),g=/^[a-zA-Z0-9_.-]+\/.+$/,h=(a,b,c,d)=>{let e=Number.parseInt(a,10);return Number.isFinite(e)?Math.min(d,Math.max(c,e)):b},i=new Set(["auto","off","extended","effort"]),j=new Set(["low","medium","high","max"]);function k(a={}){var b,c,e,g;let l,m,n,o=a&&"object"==typeof a&&!Array.isArray(a)?a:{},p=(l="string"==typeof(b=o.fallbackStrategy)?b.trim().toLowerCase():"fallback",d.has(l)?l:"fallback"),q=h(o.workerCount,4,1,f.maxWorkers),r=o.swarmTuning&&"object"==typeof o.swarmTuning?o.swarmTuning:{},s=o.fusionTuning&&"object"==typeof o.fusionTuning?o.fusionTuning:{},t=o.budgets&&"object"==typeof o.budgets?o.budgets:{},u=o.cascade&&"object"==typeof o.cascade?o.cascade:{};return{fallbackStrategy:p,judgeModel:"string"==typeof o.judgeModel?o.judgeModel.trim():"",managerModel:"string"==typeof o.managerModel?o.managerModel.trim():"",staffModel:"string"==typeof o.staffModel?o.staffModel.trim():"",auditModel:"string"==typeof o.auditModel?o.auditModel.trim():"",workerCount:q,enableTelemetry:!1!==o.enableTelemetry,thinking:function(a){let b=a&&"object"==typeof a&&!Array.isArray(a)?a:{},c=i.has(b.type)?b.type:"auto",d={type:c};if("effort"===c&&(d.effort="string"==typeof b.effort&&j.has(b.effort)?b.effort:"high"),"extended"===c&&(d.budgetTokens=h(b.budgetTokens,4096,1024,128e3)),b.roles&&"object"==typeof b.roles&&!Array.isArray(b.roles))for(let[a,c]of(d.roles={},Object.entries(b.roles))){if(!c||"object"!=typeof c)continue;let b=i.has(c.type)?c.type:"inherit";"inherit"===b?d.roles[a]={type:"inherit",...c.effort?{effort:c.effort}:{},...c.budgetTokens?{budgetTokens:c.budgetTokens}:{}}:"off"===b||"auto"===b?d.roles[a]={type:b}:"effort"===b?d.roles[a]={type:"effort",effort:j.has(c.effort)?c.effort:"high"}:"extended"===b&&(d.roles[a]={type:"extended",budgetTokens:h(c.budgetTokens,4096,1024,128e3)})}return d}(o.thinking),cascade:{confidenceThreshold:h((m=u&&"object"==typeof u&&!Array.isArray(u)?u:{}).confidenceThreshold,70,0,100),confidencePrompt:"string"==typeof m.confidencePrompt&&m.confidencePrompt.trim()?m.confidencePrompt.trim():"Rate your confidence in this answer from 0 to 100. End your response with exactly: CONFIDENCE: <number>",escalatePrompt:"string"==typeof m.escalatePrompt&&m.escalatePrompt.trim()?m.escalatePrompt.trim():"A prior model gave the following answer with low confidence. Review it, correct any issues, and provide a better answer.",maxStages:h(m.maxStages,3,1,8)},fusionTuning:{minPanel:h(s.minPanel,2,2,f.maxMembers),stragglerGraceMs:h(s.stragglerGraceMs,8e3,0,f.maxGraceMs),panelHardTimeoutMs:h(s.panelHardTimeoutMs,9e4,f.minTimeoutMs,f.maxTimeoutMs)},swarmTuning:{workerHardTimeoutMs:h(r.workerHardTimeoutMs,9e4,f.minTimeoutMs,f.maxTimeoutMs),workerQuorum:h(r.workerQuorum,Math.min(2,q),1,q),stragglerGraceMs:h(r.stragglerGraceMs,1e4,0,f.maxGraceMs),managerTimeoutMs:h(r.managerTimeoutMs,6e4,f.minTimeoutMs,f.maxTimeoutMs),minWorkers:h(r.minWorkers,Math.min(2,q),1,q),maxWorkers:h(r.maxWorkers,q,1,f.maxWorkers)},budgets:{maxLogicalCalls:h(t.maxLogicalCalls,f.maxLogicalCalls,1,f.maxLogicalCalls),maxOutputChars:h(t.maxOutputChars,f.maxOutputChars,1e3,f.maxOutputChars),maxAggregateOutputChars:h(t.maxAggregateOutputChars,f.maxAggregateOutputChars,5e3,f.maxAggregateOutputChars),maxEstimatedCostUsd:(c=t.maxEstimatedCostUsd,e=f.maxEstimatedCostUsd,g=f.maxEstimatedCostUsd,Number.isFinite(n=Number(c))?Math.min(g,Math.max(.01,n)):e)},autoScale:{enabled:o.autoScale?.enabled===!0,minWorkers:h(o.autoScale?.minWorkers,1,1,o.autoScale?.maxWorkers||f.maxWorkers),maxWorkers:h(o.autoScale?.maxWorkers,q||f.maxWorkers,1,f.maxWorkers)}}}function l(a,{allowPartial:b=!1}={}){let c=[];if((!b||void 0!==a.name)&&("string"==typeof a.name&&a.name.trim()?/^[a-zA-Z0-9_.-]+$/.test(a.name)||c.push("Name can only contain letters, numbers, -, _ and ."):c.push("Name is required")),!b||void 0!==a.models)if(Array.isArray(a.models)){let b=a.models.map(a=>"string"==typeof a?a.trim():"");b.length<1&&c.push("At least one model is required"),b.some(a=>!g.test(a))&&c.push("Every model must use provider/model format"),new Set(b).size!==b.length&&c.push("Duplicate models are not allowed")}else c.push("Models must be an array");if(void 0===a.kind||null===a.kind||e.has(a.kind)||c.push("Invalid combo kind"),void 0!==a.strategyConfig){let b=a.strategyConfig;if(!b||"object"!=typeof b||Array.isArray(b))c.push("strategyConfig must be an object");else{for(let a of["judgeModel","managerModel","staffModel","auditModel"])b[a]&&!g.test(String(b[a]).trim())&&c.push(`${a} must use provider/model format`);[b.fusionTuning,b.swarmTuning,b.budgets].filter(Boolean).some(a=>"object"!=typeof a||Array.isArray(a))&&c.push("Tuning and budgets must be objects")}}return{valid:0===c.length,errors:c}}function m(a,b){let c=k(a);return"fusion"===c.fallbackStrategy?Math.min(b,f.maxMembers)+1:"swarm"===c.fallbackStrategy?Math.min(c.workerCount,f.maxWorkers)+4:"cascade"===c.fallbackStrategy?Math.min(b,c.cascade?.maxStages||3):Math.max(1,Math.min(b,f.maxMembers))}},22846:(a,b,c)=>{c.d(b,{U:()=>f});var d=c(36366),e=c(644);function f(a){return{async get(b,c=null){let f=(await (0,d.c)()).get("SELECT value FROM kv WHERE scope = ? AND key = ?",[a,b]);return f?(0,e.q)(f.value,c):c},async getAll(){let b=(await (0,d.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[a]),c={};for(let a of b)c[a.key]=(0,e.q)(a.value);return c},async set(b,c){(await (0,d.c)()).run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,b,(0,e.s)(c)])},async setMany(b){let c=await (0,d.c)();c.transaction(()=>{for(let[d,f]of Object.entries(b))c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,d,(0,e.s)(f)])})},async remove(b){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ? AND key = ?",[a,b])},async clear(){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ?",[a])}}}},39422:(a,b,c)=>{c.d(b,{S8:()=>z.S8,E5:()=>F.E5,bI:()=>g.cleanupProviderConnections,Iq:()=>q.createApiKey,jd:()=>w,iE:()=>g.createProviderConnection,i0:()=>h.createProviderNode,ZO:()=>n,Lh:()=>q.deleteApiKey,CG:()=>y,uL:()=>z.uL,fv:()=>z.fv,fK:()=>g.deleteProviderConnection,op:()=>g.deleteProviderConnectionsByProvider,Pc:()=>h.deleteProviderNode,Yd:()=>p,tm:()=>D,oF:()=>E,zP:()=>S,rg:()=>F.rg,yg:()=>q.getApiKeyById,mY:()=>q.getApiKeyByKey,PX:()=>q.getApiKeys,j$:()=>F.j$,L:()=>u,Dj:()=>v,Uv:()=>t,uv:()=>z.uv,vF:()=>C,Lk:()=>Q,Re:()=>F.Re,R0:()=>F.R0,c:()=>z.getMitmAlias,OM:()=>z.OM,r4:()=>A.r4,Mc:()=>g.getProviderConnectionById,P:()=>g.getProviderConnections,Qu:()=>h.getProviderNodeById,Fh:()=>h.getProviderNodes,hr:()=>m,ui:()=>l,Zx:()=>F.Zx,SL:()=>P,mt:()=>f.getSettings,Q5:()=>F.Q5,PK:()=>F.PK,M2:()=>F.M2,BY:()=>F.BY,K1:()=>T,VT:()=>A.VT,yF:()=>A.yF,ox:()=>O,sZ:()=>F.sZ,L9:()=>z.L9,o5:()=>z.o5,_V:()=>F._V,uw:()=>F.uw,XW:()=>q.updateApiKey,oG:()=>x,KJ:()=>A.KJ,rj:()=>g.updateProviderConnection,ho:()=>h.updateProviderNode,Q_:()=>o,Xx:()=>f.Xx,ek:()=>q.validateApiKey});var d=c(36366),e=c(644),f=c(42655),g=c(5781),h=c(1129),i=c(94755);function j(a){return a?{...(0,e.q)(a.data,{}),id:a.id,isActive:1===a.isActive||!0===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function k(a,b){let c=function(a){let{id:b,isActive:c,testStatus:d,createdAt:f,updatedAt:g,...h}=a;return{id:b,isActive:+(!1!==c),testStatus:d??null,data:(0,e.s)(h),createdAt:f,updatedAt:g}}(b);a.run(`INSERT INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt)
|
|
9
|
+
data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.provider,c.authType,c.name,c.email,c.priority,c.isActive,c.data,c.createdAt,c.updatedAt])}let j=new Map,k=new Set(["lastUsedAt","consecutiveUseCount","lastRefreshAt","lastTested","lastError","lastErrorAt","errorCode","expiresIn"]);async function l(a){let b=await (0,e.c)(),c=[],d=[];a.provider&&(c.push("provider = ?"),d.push(a.provider)),void 0!==a.isActive&&(c.push("isActive = ?"),d.push(+!!a.isActive));let f=`SELECT * FROM providerConnections${c.length?` WHERE ${c.join(" AND ")}`:""}`,g=b.all(f,d).map(h);return g.sort((a,b)=>(a.priority||999)-(b.priority||999)),g}async function m(a={}){let b=function(a={}){let b=[];return a.provider&&b.push(`p:${a.provider}`),void 0!==a.isActive&&b.push(`a:${+!!a.isActive}`),b.length?b.join("|"):"all"}(a),c=Date.now(),d=j.get(b);if(d&&c-d.at<2e3)return d.promise.then(a=>a.slice());let e=l(a).catch(a=>{throw j.delete(b),a});return j.set(b,{promise:e,at:c}),e.then(a=>a.slice())}function n(){j.clear()}async function o(a){return h((await (0,e.c)()).get("SELECT * FROM providerConnections WHERE id = ?",[a]))}function p(a,b){let c=a.all("SELECT * FROM providerConnections WHERE provider = ?",[b]).map(h);c.sort((a,b)=>{let c=(a.priority||0)-(b.priority||0);return 0!==c?c:new Date(b.updatedAt||0)-new Date(a.updatedAt||0)}),c.forEach((b,c)=>{a.run("UPDATE providerConnections SET priority = ? WHERE id = ?",[c+1,b.id])})}async function q(a){let b,c=await (0,e.c)(),f=new Date().toISOString();return c.transaction(()=>{let e=c.all("SELECT * FROM providerConnections WHERE provider = ?",[a.provider]).map(h),j=null;if("oauth"===a.authType&&a.email){let b=a.providerSpecificData?.username,c=a.providerSpecificData?.chatgptAccountId;j=e.find(d=>{if("oauth"!==d.authType||d.email!==a.email)return!1;let e=d.providerSpecificData?.chatgptAccountId;if(c&&e)return c===e;if(c&&!e||!c&&e)return!1;let f=d.providerSpecificData?.username;return b&&f?b===f:!b&&!f})}else"apikey"===a.authType&&a.name&&(j=e.find(b=>"apikey"===b.authType&&b.name===a.name));if(j){let d={...j,...a,updatedAt:f};i(c,d),b=d;return}let k=a.name||null;k||"oauth"!==a.authType&&"access_token"!==a.authType||(k=a.email||`Account ${e.length+1}`);let l=a.priority;l||(l=e.reduce((a,b)=>Math.max(a,b.priority||0),0)+1);let m={id:(0,d.A)(),provider:a.provider,authType:a.authType||"oauth",name:k,priority:l,isActive:void 0===a.isActive||a.isActive,createdAt:f,updatedAt:f};for(let b of g)void 0!==a[b]&&null!==a[b]&&(m[b]=a[b]);a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(m.providerSpecificData=a.providerSpecificData),void 0!==a.email&&(m.email=a.email),i(c,m),p(c,a.provider),b=m}),n(),b}async function r(a,b){let c,d=await (0,e.c)();return d.transaction(()=>{let e=d.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!e){c=null;return}let f=h(e),g={...f,...b,updatedAt:new Date().toISOString()};i(d,g),void 0!==b.priority&&p(d,f.provider),c=g}),(!b||"object"!=typeof b||Object.keys(b).some(a=>!k.has(a)))&&n(),c}async function s(a){let b=await (0,e.c)(),c=!1;return b.transaction(()=>{let d=b.get("SELECT provider FROM providerConnections WHERE id = ?",[a]);d&&(b.run("DELETE FROM providerConnections WHERE id = ?",[a]),p(b,d.provider),c=!0)}),c&&n(),c}async function t(a){let b=await (0,e.c)(),c=b.get("SELECT COUNT(*) AS n FROM providerConnections WHERE provider = ?",[a]);return b.run("DELETE FROM providerConnections WHERE provider = ?",[a]),c?.n&&n(),c?.n||0}async function u(a){let b=await (0,e.c)();b.transaction(()=>p(b,a)),n()}async function v(){let a=await (0,e.c)(),b=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","consecutiveUseCount"],c=0;return a.transaction(()=>{for(let d of a.all("SELECT * FROM providerConnections")){let e=h(d),f=!1;for(let a of b)(null===e[a]||void 0===e[a])&&a in e&&(delete e[a],c++,f=!0);e.providerSpecificData&&0===Object.keys(e.providerSpecificData).length&&(delete e.providerSpecificData,c++,f=!0),f&&i(a,e)}}),c&&n(),c}},9460:(a,b,c)=>{c.d(b,{L9:()=>r,OM:()=>j,S8:()=>o,fv:()=>l,getMitmAlias:()=>q,o5:()=>k,uL:()=>p,uv:()=>n});var d=c(36366),e=c(644),f=c(22846);let g=(0,f.U)("modelAliases"),h=(0,f.U)("customModels"),i=(0,f.U)("mitmAlias");async function j(){return await g.getAll()}async function k(a,b){await g.set(a,b)}async function l(a){await g.remove(a)}function m(a,b,c){return`${a}|${b}|${c}`}async function n(){return Object.values(await h.getAll())}async function o({providerAlias:a,id:b,type:c="llm",name:f}){let g=m(a,b,c),h=await (0,d.c)(),i=!1;return h.transaction(()=>{if(h.get("SELECT 1 FROM kv WHERE scope = 'customModels' AND key = ?",[g]))return;let d=(0,e.s)({providerAlias:a,id:b,type:c,name:f||b});h.run("INSERT INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[g,d]),i=!0}),i}async function p({providerAlias:a,id:b,type:c="llm"}){await h.remove(m(a,b,c))}async function q(a){return a?await i.get(a)||{}:await i.getAll()}async function r(a,b){await i.set(a,b||{})}},12280:(a,b,c)=>{c.d(b,{X3:()=>k,jm:()=>m,uH:()=>l,wg:()=>f});let d=new Set(["fallback","round-robin","fusion","swarm","cascade"]),e=new Set(["llm","image","tts","stt","embedding","imageToText","webSearch","webFetch"]),f=Object.freeze({maxMembers:999,maxWorkers:8,maxConcurrentRunsPerPrincipal:2,maxConcurrentRunsGlobal:8,maxProviderFanout:4,minTimeoutMs:1e3,maxTimeoutMs:12e4,maxGraceMs:3e4,maxOutputChars:12e4,maxAggregateOutputChars:3e5,maxLogicalCalls:16,maxEstimatedCostUsd:1/0}),g=/^[a-zA-Z0-9_.-]+\/.+$/,h=(a,b,c,d)=>{let e=Number.parseInt(a,10);return Number.isFinite(e)?Math.min(d,Math.max(c,e)):b},i=new Set(["auto","off","extended","effort"]),j=new Set(["low","medium","high","max"]);function k(a={}){var b,c,e,g;let l,m,n,o=a&&"object"==typeof a&&!Array.isArray(a)?a:{},p=(l="string"==typeof(b=o.fallbackStrategy)?b.trim().toLowerCase():"fallback",d.has(l)?l:"fallback"),q=h(o.workerCount,4,1,f.maxWorkers),r=o.swarmTuning&&"object"==typeof o.swarmTuning?o.swarmTuning:{},s=o.fusionTuning&&"object"==typeof o.fusionTuning?o.fusionTuning:{},t=o.budgets&&"object"==typeof o.budgets?o.budgets:{},u=o.cascade&&"object"==typeof o.cascade?o.cascade:{},v=o.capabilityAdapter&&"object"==typeof o.capabilityAdapter?o.capabilityAdapter:{};return{fallbackStrategy:p,judgeModel:"string"==typeof o.judgeModel?o.judgeModel.trim():"",managerModel:"string"==typeof o.managerModel?o.managerModel.trim():"",staffModel:"string"==typeof o.staffModel?o.staffModel.trim():"",auditModel:"string"==typeof o.auditModel?o.auditModel.trim():"",workerCount:q,enableTelemetry:!1!==o.enableTelemetry,thinking:function(a){let b=a&&"object"==typeof a&&!Array.isArray(a)?a:{},c=i.has(b.type)?b.type:"auto",d={type:c};if("effort"===c&&(d.effort="string"==typeof b.effort&&j.has(b.effort)?b.effort:"high"),"extended"===c&&(d.budgetTokens=h(b.budgetTokens,4096,1024,128e3)),b.roles&&"object"==typeof b.roles&&!Array.isArray(b.roles))for(let[a,c]of(d.roles={},Object.entries(b.roles))){if(!c||"object"!=typeof c)continue;let b=i.has(c.type)?c.type:"inherit";"inherit"===b?d.roles[a]={type:"inherit",...c.effort?{effort:c.effort}:{},...c.budgetTokens?{budgetTokens:c.budgetTokens}:{}}:"off"===b||"auto"===b?d.roles[a]={type:b}:"effort"===b?d.roles[a]={type:"effort",effort:j.has(c.effort)?c.effort:"high"}:"extended"===b&&(d.roles[a]={type:"extended",budgetTokens:h(c.budgetTokens,4096,1024,128e3)})}return d}(o.thinking),cascade:{confidenceThreshold:h((m=u&&"object"==typeof u&&!Array.isArray(u)?u:{}).confidenceThreshold,70,0,100),confidencePrompt:"string"==typeof m.confidencePrompt&&m.confidencePrompt.trim()?m.confidencePrompt.trim():"Rate your confidence in this answer from 0 to 100. End your response with exactly: CONFIDENCE: <number>",escalatePrompt:"string"==typeof m.escalatePrompt&&m.escalatePrompt.trim()?m.escalatePrompt.trim():"A prior model gave the following answer with low confidence. Review it, correct any issues, and provide a better answer.",maxStages:h(m.maxStages,3,1,8)},capabilityAdapter:{enabled:"boolean"==typeof v.enabled?v.enabled:null,fallbackModel:"string"==typeof v.fallbackModel?v.fallbackModel.trim():""},fusionTuning:{minPanel:h(s.minPanel,2,2,f.maxMembers),stragglerGraceMs:h(s.stragglerGraceMs,8e3,0,f.maxGraceMs),panelHardTimeoutMs:h(s.panelHardTimeoutMs,9e4,f.minTimeoutMs,f.maxTimeoutMs)},swarmTuning:{workerHardTimeoutMs:h(r.workerHardTimeoutMs,9e4,f.minTimeoutMs,f.maxTimeoutMs),workerQuorum:h(r.workerQuorum,Math.min(2,q),1,q),stragglerGraceMs:h(r.stragglerGraceMs,1e4,0,f.maxGraceMs),managerTimeoutMs:h(r.managerTimeoutMs,6e4,f.minTimeoutMs,f.maxTimeoutMs),minWorkers:h(r.minWorkers,Math.min(2,q),1,q),maxWorkers:h(r.maxWorkers,q,1,f.maxWorkers)},budgets:{enabled:!0===t.enabled,maxLogicalCalls:h(t.maxLogicalCalls,f.maxLogicalCalls,1,f.maxLogicalCalls),maxOutputChars:h(t.maxOutputChars,f.maxOutputChars,1e3,f.maxOutputChars),maxAggregateOutputChars:h(t.maxAggregateOutputChars,f.maxAggregateOutputChars,5e3,f.maxAggregateOutputChars),maxEstimatedCostUsd:(c=t.maxEstimatedCostUsd,e=f.maxEstimatedCostUsd,g=f.maxEstimatedCostUsd,Number.isFinite(n=Number(c))?Math.min(g,Math.max(.01,n)):e)},autoScale:{enabled:o.autoScale?.enabled===!0,minWorkers:h(o.autoScale?.minWorkers,1,1,o.autoScale?.maxWorkers||f.maxWorkers),maxWorkers:h(o.autoScale?.maxWorkers,q||f.maxWorkers,1,f.maxWorkers)}}}function l(a,{allowPartial:b=!1}={}){let c=[];if((!b||void 0!==a.name)&&("string"==typeof a.name&&a.name.trim()?/^[a-zA-Z0-9_.-]+$/.test(a.name)||c.push("Name can only contain letters, numbers, -, _ and ."):c.push("Name is required")),!b||void 0!==a.models)if(Array.isArray(a.models)){let b=a.models.map(a=>"string"==typeof a?a.trim():"");b.length<1&&c.push("At least one model is required"),b.some(a=>!g.test(a))&&c.push("Every model must use provider/model format"),new Set(b).size!==b.length&&c.push("Duplicate models are not allowed")}else c.push("Models must be an array");if(void 0===a.kind||null===a.kind||e.has(a.kind)||c.push("Invalid combo kind"),void 0!==a.strategyConfig){let b=a.strategyConfig;if(!b||"object"!=typeof b||Array.isArray(b))c.push("strategyConfig must be an object");else{for(let a of["judgeModel","managerModel","staffModel","auditModel"])b[a]&&!g.test(String(b[a]).trim())&&c.push(`${a} must use provider/model format`);[b.fusionTuning,b.swarmTuning,b.budgets].filter(Boolean).some(a=>"object"!=typeof a||Array.isArray(a))&&c.push("Tuning and budgets must be objects")}}return{valid:0===c.length,errors:c}}function m(a,b){let c=k(a);return"fusion"===c.fallbackStrategy?Math.min(b,f.maxMembers)+1:"swarm"===c.fallbackStrategy?Math.min(c.workerCount,f.maxWorkers)+4:"cascade"===c.fallbackStrategy?Math.min(b,c.cascade?.maxStages||3):Math.max(1,Math.min(b,f.maxMembers))}},22846:(a,b,c)=>{c.d(b,{U:()=>f});var d=c(36366),e=c(644);function f(a){return{async get(b,c=null){let f=(await (0,d.c)()).get("SELECT value FROM kv WHERE scope = ? AND key = ?",[a,b]);return f?(0,e.q)(f.value,c):c},async getAll(){let b=(await (0,d.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[a]),c={};for(let a of b)c[a.key]=(0,e.q)(a.value);return c},async set(b,c){(await (0,d.c)()).run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,b,(0,e.s)(c)])},async setMany(b){let c=await (0,d.c)();c.transaction(()=>{for(let[d,f]of Object.entries(b))c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,d,(0,e.s)(f)])})},async remove(b){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ? AND key = ?",[a,b])},async clear(){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ?",[a])}}}},39422:(a,b,c)=>{c.d(b,{S8:()=>z.S8,E5:()=>F.E5,bI:()=>g.cleanupProviderConnections,Iq:()=>q.createApiKey,jd:()=>w,iE:()=>g.createProviderConnection,i0:()=>h.createProviderNode,ZO:()=>n,Lh:()=>q.deleteApiKey,CG:()=>y,uL:()=>z.uL,fv:()=>z.fv,fK:()=>g.deleteProviderConnection,op:()=>g.deleteProviderConnectionsByProvider,Pc:()=>h.deleteProviderNode,Yd:()=>p,tm:()=>D,oF:()=>E,zP:()=>S,rg:()=>F.rg,yg:()=>q.getApiKeyById,mY:()=>q.getApiKeyByKey,PX:()=>q.getApiKeys,j$:()=>F.j$,L:()=>u,Dj:()=>v,Uv:()=>t,uv:()=>z.uv,vF:()=>C,Lk:()=>Q,Re:()=>F.Re,R0:()=>F.R0,c:()=>z.getMitmAlias,OM:()=>z.OM,r4:()=>A.r4,Mc:()=>g.getProviderConnectionById,P:()=>g.getProviderConnections,Qu:()=>h.getProviderNodeById,Fh:()=>h.getProviderNodes,hr:()=>m,ui:()=>l,Zx:()=>F.Zx,SL:()=>P,mt:()=>f.getSettings,Q5:()=>F.Q5,PK:()=>F.PK,M2:()=>F.M2,BY:()=>F.BY,K1:()=>T,VT:()=>A.VT,yF:()=>A.yF,ox:()=>O,sZ:()=>F.sZ,L9:()=>z.L9,o5:()=>z.o5,_V:()=>F._V,uw:()=>F.uw,XW:()=>q.updateApiKey,oG:()=>x,KJ:()=>A.KJ,rj:()=>g.updateProviderConnection,ho:()=>h.updateProviderNode,Q_:()=>o,Xx:()=>f.Xx,ek:()=>q.validateApiKey});var d=c(36366),e=c(644),f=c(42655),g=c(5781),h=c(1129),i=c(94755);function j(a){return a?{...(0,e.q)(a.data,{}),id:a.id,isActive:1===a.isActive||!0===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function k(a,b){let c=function(a){let{id:b,isActive:c,testStatus:d,createdAt:f,updatedAt:g,...h}=a;return{id:b,isActive:+(!1!==c),testStatus:d??null,data:(0,e.s)(h),createdAt:f,updatedAt:g}}(b);a.run(`INSERT INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt)
|
|
10
10
|
VALUES(?, ?, ?, ?, ?, ?)
|
|
11
11
|
ON CONFLICT(id) DO UPDATE SET
|
|
12
12
|
isActive=excluded.isActive, testStatus=excluded.testStatus,
|
|
13
|
-
data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.isActive,c.testStatus,c.data,c.createdAt,c.updatedAt])}async function l(a={}){let b=await (0,d.c)(),c=[],e=[];void 0!==a.isActive&&(c.push("isActive = ?"),e.push(+!!a.isActive)),a.testStatus&&(c.push("testStatus = ?"),e.push(a.testStatus));let f=`SELECT * FROM proxyPools${c.length?` WHERE ${c.join(" AND ")}`:""}`,g=b.all(f,e).map(j);return g.sort((a,b)=>new Date(b.updatedAt||0)-new Date(a.updatedAt||0)),g}async function m(a){return j((await (0,d.c)()).get("SELECT * FROM proxyPools WHERE id = ?",[a]))}async function n(a){let b=await (0,d.c)(),c=new Date().toISOString(),e={id:a.id||(0,i.A)(),name:a.name,proxyUrl:a.proxyUrl,noProxy:a.noProxy||"",type:a.type||"http",isActive:void 0===a.isActive||a.isActive,strictProxy:!0===a.strictProxy,testStatus:a.testStatus||"unknown",lastTestedAt:a.lastTestedAt||null,lastError:a.lastError||null,createdAt:c,updatedAt:c};return k(b,e),e}async function o(a,b){let c=await (0,d.c)(),e=null;return c.transaction(()=>{let d=c.get("SELECT * FROM proxyPools WHERE id = ?",[a]);if(!d)return;let f={...j(d),...b,updatedAt:new Date().toISOString()};k(c,f),e=f}),e}async function p(a){let b=await (0,d.c)(),c=null;return b.transaction(()=>{let d=b.get("SELECT * FROM proxyPools WHERE id = ?",[a]);d&&(c=j(d),b.run("DELETE FROM proxyPools WHERE id = ?",[a]))}),c}var q=c(74452),r=c(12280);function s(a){return a?{id:a.id,name:a.name,kind:a.kind,models:(0,e.q)(a.models,[]),strategyConfig:(0,r.X3)((0,e.q)(a.strategyConfig,{})),context_length:null===a.context_length||void 0===a.context_length?null:Number(a.context_length),revision:Number(a.revision)||1,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}async function t(){return(await (0,d.c)()).all("SELECT * FROM combos ORDER BY createdAt ASC").map(s)}async function u(a){return s((await (0,d.c)()).get("SELECT * FROM combos WHERE id = ?",[a]))}async function v(a){return s((await (0,d.c)()).get("SELECT * FROM combos WHERE name = ?",[a]))}async function w(a){let b=await (0,d.c)(),c=new Date().toISOString(),f={id:(0,i.A)(),name:a.name,kind:a.kind||null,models:a.models||[],strategyConfig:(0,r.X3)(a.strategyConfig),context_length:void 0===a.context_length?null:a.context_length,revision:1,createdAt:c,updatedAt:c};return b.run("INSERT INTO combos(id, name, kind, models, strategyConfig, context_length, revision, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)",[f.id,f.name,f.kind,(0,e.s)(f.models),(0,e.s)(f.strategyConfig),f.context_length,f.revision,c,c]),f}async function x(a,b){let c=await (0,d.c)(),f=null,g=!1;return(c.transaction(()=>{let d=c.get("SELECT * FROM combos WHERE id = ?",[a]);if(!d)return;let h=s(d);if(void 0!==b.revision&&Number(b.revision)!==h.revision){g=!0;return}let i={...h,name:void 0!==b.name?b.name:h.name,kind:void 0!==b.kind?b.kind:h.kind,models:void 0!==b.models?b.models:h.models,strategyConfig:void 0!==b.strategyConfig?(0,r.X3)(b.strategyConfig):h.strategyConfig,context_length:void 0!==b.context_length?b.context_length:h.context_length,revision:h.revision+1,updatedAt:new Date().toISOString()};c.run("UPDATE combos SET name = ?, kind = ?, models = ?, strategyConfig = ?, context_length = ?, revision = ?, updatedAt = ? WHERE id = ? AND revision = ?",[i.name,i.kind,(0,e.s)(i.models),(0,e.s)(i.strategyConfig),i.context_length,i.revision,i.updatedAt,a,h.revision]),f=i}),g)?{conflict:!0}:f}async function y(a){let b=await (0,d.c)();return(b.run("DELETE FROM combos WHERE id = ?",[a])?.changes??0)>0}var z=c(9460),A=c(97914);let B="disabledModels";async function C(){let a=(await (0,d.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[B]),b={};for(let c of a)b[c.key]=(0,e.q)(c.value,[]);return b}async function D(a,b){if(!a||!Array.isArray(b))return;let c=await (0,d.c)();c.transaction(()=>{let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[B,a]),f=[...new Set([...d&&(0,e.q)(d.value,[])||[],...b])];c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[B,a,(0,e.s)(f)])})}async function E(a,b){if(!a)return;let c=await (0,d.c)();c.transaction(()=>{if(!Array.isArray(b)||0===b.length)return void c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[B,a]);let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[B,a]),f=d&&(0,e.q)(d.value,[])||[],g=new Set(b),h=f.filter(a=>!g.has(a));0===h.length?c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[B,a]):c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[B,a,(0,e.s)(h)])})}var F=c(99703);let G=null,H=0;async function I(){if(G&&Date.now()-H<5e3)return G;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,42655)),b=await a(),d="false"!==process.env.OBSERVABILITY_ENABLED;G={enabled:"boolean"==typeof b.enableObservability2?b.enableObservability2:d,maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10))}}catch{G={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120}}return H=Date.now(),G}let J=[],K=null,L=!1;function M(a,b){let c=JSON.stringify(a||{});return c.length>b?{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}:a||{}}async function N(){if(!L&&0!==J.length){L=!0;try{for(;J.length>0;){let a=J.splice(0,J.length),b=await (0,d.c)(),c=await I();b.transaction(()=>{for(let d of a){d.id||(d.id=function(a){let b=new Date().toISOString(),c=Math.random().toString(36).substring(2,8),d=a?a.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown";return`${b}-${c}-${d}`}(d.model)),d.timestamp||(d.timestamp=new Date().toISOString()),d.request?.headers&&(d.request.headers=function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(d.request.headers));let a={id:d.id,provider:d.provider||null,model:d.model||null,connectionId:d.connectionId||null,timestamp:d.timestamp,status:d.status||null,latency:d.latency||{},tokens:d.tokens||{},request:M(d.request,c.maxJsonSize),providerRequest:M(d.providerRequest,c.maxJsonSize),providerResponse:M(d.providerResponse,c.maxJsonSize),response:M(d.response,c.maxJsonSize)};b.run("INSERT INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET timestamp = excluded.timestamp, provider = excluded.provider, model = excluded.model, connectionId = excluded.connectionId, status = excluded.status, data = excluded.data",[a.id,a.timestamp,a.provider,a.model,a.connectionId,a.status,(0,e.s)(a)])}let d=b.get("SELECT COUNT(*) as c FROM requestDetails");d&&d.c>c.maxRecords&&b.run("DELETE FROM requestDetails WHERE id IN (SELECT id FROM requestDetails ORDER BY timestamp ASC LIMIT ?)",[d.c-c.maxRecords])})}}catch(a){console.error("[requestDetailsRepo] Batch write failed:",a)}finally{L=!1}}}async function O(a){let b=await I();b.enabled&&(J.push(a),J.length>=b.batchSize?(K&&(clearTimeout(K),K=null),N().catch(a=>console.error("[requestDetailsRepo] flush err:",a))):K||(K=setTimeout(()=>{K=null,N().catch(()=>{})},b.flushIntervalMs)))}async function P(a={}){let b=await (0,d.c)(),c=[],f=[];a.provider&&(c.push("provider = ?"),f.push(a.provider)),a.model&&(c.push("model = ?"),f.push(a.model)),a.connectionId&&(c.push("connectionId = ?"),f.push(a.connectionId)),a.status&&(c.push("status = ?"),f.push(a.status)),a.startDate&&(c.push("timestamp >= ?"),f.push(new Date(a.startDate).toISOString())),a.endDate&&(c.push("timestamp <= ?"),f.push(new Date(a.endDate).toISOString()));let g=c.length?`WHERE ${c.join(" AND ")}`:"",h=b.get(`SELECT COUNT(*) as c FROM requestDetails ${g}`,f),i=h?h.c:0,j=a.page||1,k=a.pageSize||50,l=Math.ceil(i/k);return{details:b.all(`SELECT data FROM requestDetails ${g} ORDER BY timestamp DESC LIMIT ? OFFSET ?`,[...f,k,(j-1)*k]).map(a=>(0,e.q)(a.data,{})),pagination:{page:j,pageSize:k,totalItems:i,totalPages:l,hasNext:j<l,hasPrev:j>1}}}async function Q(){return(await (0,d.c)()).all("SELECT DISTINCT provider FROM requestDetails WHERE provider IS NOT NULL AND provider != '' ORDER BY provider").map(a=>a.provider)}let R=async()=>{K&&(clearTimeout(K),K=null),J.length>0&&await N()};async function S(){let a=await (0,d.c)(),{exportSettings:b}=await Promise.resolve().then(c.bind(c,42655)),f={settings:await b(),providerConnections:a.all("SELECT * FROM providerConnections").map(a=>({...(0,e.q)(a.data,{}),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt})),providerNodes:a.all("SELECT * FROM providerNodes").map(a=>({...(0,e.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt})),proxyPools:a.all("SELECT * FROM proxyPools").map(a=>({...(0,e.q)(a.data,{}),id:a.id,isActive:1===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt})),apiKeys:a.all("SELECT * FROM apiKeys").map(a=>({id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive,createdAt:a.createdAt})),combos:a.all("SELECT * FROM combos").map(a=>({id:a.id,name:a.name,kind:a.kind,models:(0,e.q)(a.models,[]),strategyConfig:(0,e.q)(a.strategyConfig,{}),revision:Number(a.revision)||1,createdAt:a.createdAt,updatedAt:a.updatedAt})),modelAliases:{},customModels:[],mitmAlias:{},pricing:{}};for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'modelAliases'"))f.modelAliases[b.key]=(0,e.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'customModels'"))f.customModels.push((0,e.q)(b.value));for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'mitmAlias'"))f.mitmAlias[b.key]=(0,e.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'pricing'"))f.pricing[b.key]=(0,e.q)(b.value);return f}async function T(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let b=await (0,d.c)();return b.transaction(()=>{for(let c of(b.run("DELETE FROM settings"),b.run("DELETE FROM providerConnections"),b.run("DELETE FROM providerNodes"),b.run("DELETE FROM proxyPools"),b.run("DELETE FROM apiKeys"),b.run("DELETE FROM combos"),b.run("DELETE FROM kv WHERE scope IN ('modelAliases', 'customModels', 'mitmAlias', 'pricing')"),a.settings&&b.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(a.settings)]),a.providerConnections||[])){let{id:a,provider:d,authType:f,name:g,email:h,priority:i,isActive:j,createdAt:k,updatedAt:l,...m}=c;b.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a,d,f||"oauth",g||null,h||null,i||null,+(!1!==j),(0,e.s)(m),k||new Date().toISOString(),l||new Date().toISOString()])}for(let c of a.providerNodes||[]){let{id:a,type:d,name:f,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,d||null,f||null,(0,e.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.proxyPools||[]){let{id:a,isActive:d,testStatus:f,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,+(!1!==d),f||"unknown",(0,e.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.apiKeys||[])b.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.key,c.name||null,c.machineId||null,+(!1!==c.isActive),c.createdAt||new Date().toISOString()]);for(let c of a.combos||[])b.run("INSERT OR REPLACE INTO combos(id, name, kind, models, strategyConfig, revision, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?)",[c.id,c.name,c.kind||null,(0,e.s)(c.models||[]),(0,e.s)(c.strategyConfig||{}),Number(c.revision)||1,c.createdAt||new Date().toISOString(),c.updatedAt||new Date().toISOString()]);for(let[c,d]of Object.entries(a.modelAliases||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[c,(0,e.s)(d)]);for(let c of a.customModels||[]){let a=`${c.providerAlias}|${c.id}|${c.type||"llm"}`;b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[a,(0,e.s)(c)])}for(let[c,d]of Object.entries(a.mitmAlias||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[c,(0,e.s)(d||{})]);for(let[c,d]of Object.entries(a.pricing||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[c,(0,e.s)(d||{})])}),invalidateSettingsCache(),invalidateConnectionsCache(),await S()}process.off("beforeExit",R),process.off("SIGINT",R),process.off("SIGTERM",R),process.off("exit",R),process.on("beforeExit",R),process.on("SIGINT",R),process.on("SIGTERM",R),process.on("exit",R)},42655:(a,b,c)=>{c.d(b,{Xx:()=>l,exportSettings:()=>m,getSettings:()=>k});var d=c(36366),e=c(644);let f={cloudEnabled:!1,tunnelEnabled:!1,tunnelUrl:"",tunnelProvider:"cloudflare",tailscaleEnabled:!1,tailscaleUrl:"",stickyRoundRobinLimit:3,providerStrategies:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},requireLogin:!0,tunnelDashboardAccess:!0,authMode:"password",oidcIssuerUrl:"",oidcClientId:"",oidcClientSecret:"",oidcScopes:"openid profile email",oidcLoginLabel:"Sign in with OIDC",enableObservability:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:5,circuitBreaker:{enabled:!0,failureThreshold:5,windowMs:6e4,cooldownMs:3e4,halfOpenMaxCalls:1},healthMonitor:{enabled:!0,windowMs:3e5},outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,headroomEnabled:!1,headroomUrl:process.env.HEADROOM_URL||"http://localhost:8787",headroomCompressUserMessages:!1,cavemanEnabled:!1,cavemanLevel:"full",ponytailEnabled:!1,ponytailLevel:"full",pxpipeEnabled:!1,pxpipeAutoInstall:!1,pxpipeMinChars:25e3,pxpipeTimeoutMs:5e3,semanticCacheEnabled:!1,semanticCacheThreshold:.85,webhookEnabled:!1,webhookDiscordUrl:"",webhookTelegramToken:"",webhookTelegramChatId:"",webhookGenericUrl:"",webhookAlertEvents:{providerDown:!0,rateLimited:!0,healthDegraded:!0,budgetExceeded:!1}};async function g(){let a=(await (0,d.c)()).get("SELECT data FROM settings WHERE id = 1");return a?(0,e.q)(a.data,{}):{}}function h(a){let b={...f,...a||{}};for(let[a,c]of Object.entries(f))void 0===b[a]&&("outboundProxyEnabled"===a&&"string"==typeof b.outboundProxyUrl&&b.outboundProxyUrl.trim()?b[a]=!0:b[a]=c);return b}let i=null;async function j(){return h(await g())}async function k(){let a=Date.now(),b=i;if(b&&a-b.at<5e3)return b.promise;let c=j().catch(a=>{throw i=null,a});return i={promise:c,at:a},c}async function l(a){let b,c=await (0,d.c)();return c.transaction(()=>{let d=c.get("SELECT data FROM settings WHERE id = 1"),f=d?(0,e.q)(d.data,{}):{};if(b={...f,...a},a&&"object"==typeof a.comboStrategies&&!Array.isArray(a.comboStrategies)){let c={...f.comboStrategies&&"object"==typeof f.comboStrategies?f.comboStrategies:{}};for(let[b,d]of Object.entries(a.comboStrategies))null===d?delete c[b]:c[b]={...c[b]||{},...d||{}};b.comboStrategies=c}c.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(b)])}),i=null,h(b)}async function m(){return await g()}},74452:(a,b,c)=>{c.r(b),c.d(b,{createApiKey:()=>k,deleteApiKey:()=>m,getApiKeyById:()=>i,getApiKeyByKey:()=>j,getApiKeys:()=>h,updateApiKey:()=>l,validateApiKey:()=>n});var d=c(94755),e=c(36366),f=c(644);function g(a){return a?{id:a.id,key:a.key,name:a.name,machineId:a.machineId,allowedModels:(0,f.q)(a.allowedModels,null),isActive:1===a.isActive||!0===a.isActive,createdAt:a.createdAt}:null}async function h(){return(await (0,e.c)()).all("SELECT * FROM apiKeys ORDER BY createdAt ASC").map(g)}async function i(a){return g((await (0,e.c)()).get("SELECT * FROM apiKeys WHERE id = ?",[a]))}async function j(a){return g((await (0,e.c)()).get("SELECT * FROM apiKeys WHERE key = ?",[a]))}async function k(a,b,g=null){if(!b)throw Error("machineId is required");let h=await (0,e.c)(),{generateApiKeyWithMachine:i}=await c.e(6844).then(c.bind(c,86844)),j=i(b),l={id:(0,d.A)(),name:a,key:j.key,machineId:b,allowedModels:g,isActive:!0,createdAt:new Date().toISOString()};return h.run("INSERT INTO apiKeys(id, key, name, machineId, allowedModels, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?, ?)",[l.id,l.key,l.name,l.machineId,g?(0,f.s)(g):null,1,l.createdAt]),l}async function l(a,b){let c=await (0,e.c)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!e)return;let h={...g(e),...b};c.run("UPDATE apiKeys SET key = ?, name = ?, machineId = ?, allowedModels = ?, isActive = ? WHERE id = ?",[h.key,h.name,h.machineId,h.allowedModels?(0,f.s)(h.allowedModels):null,+!!h.isActive,a]),d=h}),d}async function m(a){let b=(await (0,e.c)()).run("DELETE FROM apiKeys WHERE id = ?",[a]);return(b?.changes??0)>0}async function n(a){let b=(await (0,e.c)()).get("SELECT isActive FROM apiKeys WHERE key = ?",[a]);return!!b&&(1===b.isActive||!0===b.isActive)}},97914:(a,b,c)=>{c.d(b,{KJ:()=>l,VT:()=>n,getPricingForModel:()=>k,r4:()=>j,yF:()=>m});var d=c(36366),e=c(644);let f=(0,c(22846).U)("pricing"),g={value:null,expiresAt:0};function h(){g={value:null,expiresAt:0}}async function i(){return await f.getAll()}async function j(){let a=Date.now();if(g.value&&g.expiresAt>a)return g.value;let b=await i(),{PROVIDER_PRICING:d}=await Promise.resolve().then(c.bind(c,58920)),e={};for(let[a,c]of Object.entries(d))if(e[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))e[a][c]=e[a][c]?{...e[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(e[a])for(let[b,d]of Object.entries(c))e[a][b]||(e[a][b]=d);else e[a]={...c};return g={value:e,expiresAt:a+5e3},e}async function k(a,b){if(!b)return null;let d=await i();if(a&&d[a]?.[b])return d[a][b];let{getPricingForModel:e}=await Promise.resolve().then(c.bind(c,58920));return e(a,b)}async function l(a){let b=await (0,d.c)();return b.transaction(()=>{for(let[c,d]of Object.entries(a)){let a=b.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[c]),f={...a&&(0,e.q)(a.value,{})||{}};for(let[a,b]of Object.entries(d))f[a]=b;b.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[c,(0,e.s)(f)])}}),h(),await i()}async function m(a,b){if(!a)return await i();let c=await (0,d.c)();return c.transaction(()=>{if(!b)return void c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]);let d=c.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[a]),f=d&&(0,e.q)(d.value,{})||{};delete f[b],0===Object.keys(f).length?c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]):c.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,(0,e.s)(f)])}),h(),await i()}async function n(){return await f.clear(),h(),{}}}};
|
|
13
|
+
data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.isActive,c.testStatus,c.data,c.createdAt,c.updatedAt])}async function l(a={}){let b=await (0,d.c)(),c=[],e=[];void 0!==a.isActive&&(c.push("isActive = ?"),e.push(+!!a.isActive)),a.testStatus&&(c.push("testStatus = ?"),e.push(a.testStatus));let f=`SELECT * FROM proxyPools${c.length?` WHERE ${c.join(" AND ")}`:""}`,g=b.all(f,e).map(j);return g.sort((a,b)=>new Date(b.updatedAt||0)-new Date(a.updatedAt||0)),g}async function m(a){return j((await (0,d.c)()).get("SELECT * FROM proxyPools WHERE id = ?",[a]))}async function n(a){let b=await (0,d.c)(),c=new Date().toISOString(),e={id:a.id||(0,i.A)(),name:a.name,proxyUrl:a.proxyUrl,noProxy:a.noProxy||"",type:a.type||"http",isActive:void 0===a.isActive||a.isActive,strictProxy:!0===a.strictProxy,testStatus:a.testStatus||"unknown",lastTestedAt:a.lastTestedAt||null,lastError:a.lastError||null,createdAt:c,updatedAt:c};return k(b,e),e}async function o(a,b){let c=await (0,d.c)(),e=null;return c.transaction(()=>{let d=c.get("SELECT * FROM proxyPools WHERE id = ?",[a]);if(!d)return;let f={...j(d),...b,updatedAt:new Date().toISOString()};k(c,f),e=f}),e}async function p(a){let b=await (0,d.c)(),c=null;return b.transaction(()=>{let d=b.get("SELECT * FROM proxyPools WHERE id = ?",[a]);d&&(c=j(d),b.run("DELETE FROM proxyPools WHERE id = ?",[a]))}),c}var q=c(74452),r=c(12280);function s(a){return a?{id:a.id,name:a.name,kind:a.kind,models:(0,e.q)(a.models,[]),strategyConfig:(0,r.X3)((0,e.q)(a.strategyConfig,{})),context_length:null===a.context_length||void 0===a.context_length?null:Number(a.context_length),revision:Number(a.revision)||1,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}async function t(){return(await (0,d.c)()).all("SELECT * FROM combos ORDER BY createdAt ASC").map(s)}async function u(a){return s((await (0,d.c)()).get("SELECT * FROM combos WHERE id = ?",[a]))}async function v(a){return s((await (0,d.c)()).get("SELECT * FROM combos WHERE name = ?",[a]))}async function w(a){let b=await (0,d.c)(),c=new Date().toISOString(),f={id:(0,i.A)(),name:a.name,kind:a.kind||null,models:a.models||[],strategyConfig:(0,r.X3)(a.strategyConfig),context_length:void 0===a.context_length?null:a.context_length,revision:1,createdAt:c,updatedAt:c};return b.run("INSERT INTO combos(id, name, kind, models, strategyConfig, context_length, revision, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)",[f.id,f.name,f.kind,(0,e.s)(f.models),(0,e.s)(f.strategyConfig),f.context_length,f.revision,c,c]),f}async function x(a,b){let c=await (0,d.c)(),f=null,g=!1;return(c.transaction(()=>{let d=c.get("SELECT * FROM combos WHERE id = ?",[a]);if(!d)return;let h=s(d);if(void 0!==b.revision&&Number(b.revision)!==h.revision){g=!0;return}let i={...h,name:void 0!==b.name?b.name:h.name,kind:void 0!==b.kind?b.kind:h.kind,models:void 0!==b.models?b.models:h.models,strategyConfig:void 0!==b.strategyConfig?(0,r.X3)(b.strategyConfig):h.strategyConfig,context_length:void 0!==b.context_length?b.context_length:h.context_length,revision:h.revision+1,updatedAt:new Date().toISOString()};c.run("UPDATE combos SET name = ?, kind = ?, models = ?, strategyConfig = ?, context_length = ?, revision = ?, updatedAt = ? WHERE id = ? AND revision = ?",[i.name,i.kind,(0,e.s)(i.models),(0,e.s)(i.strategyConfig),i.context_length,i.revision,i.updatedAt,a,h.revision]),f=i}),g)?{conflict:!0}:f}async function y(a){let b=await (0,d.c)();return(b.run("DELETE FROM combos WHERE id = ?",[a])?.changes??0)>0}var z=c(9460),A=c(97914);let B="disabledModels";async function C(){let a=(await (0,d.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[B]),b={};for(let c of a)b[c.key]=(0,e.q)(c.value,[]);return b}async function D(a,b){if(!a||!Array.isArray(b))return;let c=await (0,d.c)();c.transaction(()=>{let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[B,a]),f=[...new Set([...d&&(0,e.q)(d.value,[])||[],...b])];c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[B,a,(0,e.s)(f)])})}async function E(a,b){if(!a)return;let c=await (0,d.c)();c.transaction(()=>{if(!Array.isArray(b)||0===b.length)return void c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[B,a]);let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[B,a]),f=d&&(0,e.q)(d.value,[])||[],g=new Set(b),h=f.filter(a=>!g.has(a));0===h.length?c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[B,a]):c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[B,a,(0,e.s)(h)])})}var F=c(99703);let G=null,H=0;async function I(){if(G&&Date.now()-H<5e3)return G;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,42655)),b=await a(),d="false"!==process.env.OBSERVABILITY_ENABLED;G={enabled:"boolean"==typeof b.enableObservability2?b.enableObservability2:d,maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10))}}catch{G={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120}}return H=Date.now(),G}let J=[],K=null,L=!1;function M(a,b){let c=JSON.stringify(a||{});return c.length>b?{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}:a||{}}async function N(){if(!L&&0!==J.length){L=!0;try{for(;J.length>0;){let a=J.splice(0,J.length),b=await (0,d.c)(),c=await I();b.transaction(()=>{for(let d of a){d.id||(d.id=function(a){let b=new Date().toISOString(),c=Math.random().toString(36).substring(2,8),d=a?a.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown";return`${b}-${c}-${d}`}(d.model)),d.timestamp||(d.timestamp=new Date().toISOString()),d.request?.headers&&(d.request.headers=function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(d.request.headers));let a={id:d.id,provider:d.provider||null,model:d.model||null,connectionId:d.connectionId||null,timestamp:d.timestamp,status:d.status||null,latency:d.latency||{},tokens:d.tokens||{},request:M(d.request,c.maxJsonSize),providerRequest:M(d.providerRequest,c.maxJsonSize),providerResponse:M(d.providerResponse,c.maxJsonSize),response:M(d.response,c.maxJsonSize)};b.run("INSERT INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET timestamp = excluded.timestamp, provider = excluded.provider, model = excluded.model, connectionId = excluded.connectionId, status = excluded.status, data = excluded.data",[a.id,a.timestamp,a.provider,a.model,a.connectionId,a.status,(0,e.s)(a)])}let d=b.get("SELECT COUNT(*) as c FROM requestDetails");d&&d.c>c.maxRecords&&b.run("DELETE FROM requestDetails WHERE id IN (SELECT id FROM requestDetails ORDER BY timestamp ASC LIMIT ?)",[d.c-c.maxRecords])})}}catch(a){console.error("[requestDetailsRepo] Batch write failed:",a)}finally{L=!1}}}async function O(a){let b=await I();b.enabled&&(J.push(a),J.length>=b.batchSize?(K&&(clearTimeout(K),K=null),N().catch(a=>console.error("[requestDetailsRepo] flush err:",a))):K||(K=setTimeout(()=>{K=null,N().catch(()=>{})},b.flushIntervalMs)))}async function P(a={}){let b=await (0,d.c)(),c=[],f=[];a.provider&&(c.push("provider = ?"),f.push(a.provider)),a.model&&(c.push("model = ?"),f.push(a.model)),a.connectionId&&(c.push("connectionId = ?"),f.push(a.connectionId)),a.status&&(c.push("status = ?"),f.push(a.status)),a.startDate&&(c.push("timestamp >= ?"),f.push(new Date(a.startDate).toISOString())),a.endDate&&(c.push("timestamp <= ?"),f.push(new Date(a.endDate).toISOString()));let g=c.length?`WHERE ${c.join(" AND ")}`:"",h=b.get(`SELECT COUNT(*) as c FROM requestDetails ${g}`,f),i=h?h.c:0,j=a.page||1,k=a.pageSize||50,l=Math.ceil(i/k);return{details:b.all(`SELECT data FROM requestDetails ${g} ORDER BY timestamp DESC LIMIT ? OFFSET ?`,[...f,k,(j-1)*k]).map(a=>(0,e.q)(a.data,{})),pagination:{page:j,pageSize:k,totalItems:i,totalPages:l,hasNext:j<l,hasPrev:j>1}}}async function Q(){return(await (0,d.c)()).all("SELECT DISTINCT provider FROM requestDetails WHERE provider IS NOT NULL AND provider != '' ORDER BY provider").map(a=>a.provider)}let R=async()=>{K&&(clearTimeout(K),K=null),J.length>0&&await N()};async function S(){let a=await (0,d.c)(),{exportSettings:b}=await Promise.resolve().then(c.bind(c,42655)),f={settings:await b(),providerConnections:a.all("SELECT * FROM providerConnections").map(a=>({...(0,e.q)(a.data,{}),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt})),providerNodes:a.all("SELECT * FROM providerNodes").map(a=>({...(0,e.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt})),proxyPools:a.all("SELECT * FROM proxyPools").map(a=>({...(0,e.q)(a.data,{}),id:a.id,isActive:1===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt})),apiKeys:a.all("SELECT * FROM apiKeys").map(a=>({id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive,createdAt:a.createdAt})),combos:a.all("SELECT * FROM combos").map(a=>({id:a.id,name:a.name,kind:a.kind,models:(0,e.q)(a.models,[]),strategyConfig:(0,e.q)(a.strategyConfig,{}),revision:Number(a.revision)||1,createdAt:a.createdAt,updatedAt:a.updatedAt})),modelAliases:{},customModels:[],mitmAlias:{},pricing:{}};for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'modelAliases'"))f.modelAliases[b.key]=(0,e.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'customModels'"))f.customModels.push((0,e.q)(b.value));for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'mitmAlias'"))f.mitmAlias[b.key]=(0,e.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'pricing'"))f.pricing[b.key]=(0,e.q)(b.value);return f}async function T(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let b=await (0,d.c)();return b.transaction(()=>{for(let c of(b.run("DELETE FROM settings"),b.run("DELETE FROM providerConnections"),b.run("DELETE FROM providerNodes"),b.run("DELETE FROM proxyPools"),b.run("DELETE FROM apiKeys"),b.run("DELETE FROM combos"),b.run("DELETE FROM kv WHERE scope IN ('modelAliases', 'customModels', 'mitmAlias', 'pricing')"),a.settings&&b.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(a.settings)]),a.providerConnections||[])){let{id:a,provider:d,authType:f,name:g,email:h,priority:i,isActive:j,createdAt:k,updatedAt:l,...m}=c;b.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a,d,f||"oauth",g||null,h||null,i||null,+(!1!==j),(0,e.s)(m),k||new Date().toISOString(),l||new Date().toISOString()])}for(let c of a.providerNodes||[]){let{id:a,type:d,name:f,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,d||null,f||null,(0,e.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.proxyPools||[]){let{id:a,isActive:d,testStatus:f,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,+(!1!==d),f||"unknown",(0,e.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.apiKeys||[])b.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.key,c.name||null,c.machineId||null,+(!1!==c.isActive),c.createdAt||new Date().toISOString()]);for(let c of a.combos||[])b.run("INSERT OR REPLACE INTO combos(id, name, kind, models, strategyConfig, revision, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?)",[c.id,c.name,c.kind||null,(0,e.s)(c.models||[]),(0,e.s)(c.strategyConfig||{}),Number(c.revision)||1,c.createdAt||new Date().toISOString(),c.updatedAt||new Date().toISOString()]);for(let[c,d]of Object.entries(a.modelAliases||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[c,(0,e.s)(d)]);for(let c of a.customModels||[]){let a=`${c.providerAlias}|${c.id}|${c.type||"llm"}`;b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[a,(0,e.s)(c)])}for(let[c,d]of Object.entries(a.mitmAlias||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[c,(0,e.s)(d||{})]);for(let[c,d]of Object.entries(a.pricing||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[c,(0,e.s)(d||{})])}),invalidateSettingsCache(),invalidateConnectionsCache(),await S()}process.off("beforeExit",R),process.off("SIGINT",R),process.off("SIGTERM",R),process.off("exit",R),process.on("beforeExit",R),process.on("SIGINT",R),process.on("SIGTERM",R),process.on("exit",R)},42655:(a,b,c)=>{c.d(b,{Xx:()=>l,exportSettings:()=>m,getSettings:()=>k});var d=c(36366),e=c(644);let f={cloudEnabled:!1,tunnelEnabled:!1,tunnelUrl:"",tunnelProvider:"cloudflare",tailscaleEnabled:!1,tailscaleUrl:"",stickyRoundRobinLimit:3,providerStrategies:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},comboCapabilityAdapterEnabled:!0,requireLogin:!0,tunnelDashboardAccess:!0,authMode:"password",oidcIssuerUrl:"",oidcClientId:"",oidcClientSecret:"",oidcScopes:"openid profile email",oidcLoginLabel:"Sign in with OIDC",enableObservability:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:5,circuitBreaker:{enabled:!0,failureThreshold:5,windowMs:6e4,cooldownMs:3e4,halfOpenMaxCalls:1},healthMonitor:{enabled:!0,windowMs:3e5},outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,headroomEnabled:!1,headroomUrl:process.env.HEADROOM_URL||"http://localhost:8787",headroomCompressUserMessages:!1,cavemanEnabled:!1,cavemanLevel:"full",ponytailEnabled:!1,ponytailLevel:"full",pxpipeEnabled:!1,pxpipeAutoInstall:!1,pxpipeMinChars:25e3,pxpipeTimeoutMs:5e3,semanticCacheEnabled:!1,semanticCacheThreshold:.85,webhookEnabled:!1,webhookDiscordUrl:"",webhookTelegramToken:"",webhookTelegramChatId:"",webhookGenericUrl:"",webhookAlertEvents:{providerDown:!0,rateLimited:!0,healthDegraded:!0,budgetExceeded:!1}};async function g(){let a=(await (0,d.c)()).get("SELECT data FROM settings WHERE id = 1");return a?(0,e.q)(a.data,{}):{}}function h(a){let b={...f,...a||{}};for(let[a,c]of Object.entries(f))void 0===b[a]&&("outboundProxyEnabled"===a&&"string"==typeof b.outboundProxyUrl&&b.outboundProxyUrl.trim()?b[a]=!0:b[a]=c);return b}let i=null;async function j(){return h(await g())}async function k(){let a=Date.now(),b=i;if(b&&a-b.at<5e3)return b.promise;let c=j().catch(a=>{throw i=null,a});return i={promise:c,at:a},c}async function l(a){let b,c=await (0,d.c)();return c.transaction(()=>{let d=c.get("SELECT data FROM settings WHERE id = 1"),f=d?(0,e.q)(d.data,{}):{};if(b={...f,...a},a&&"object"==typeof a.comboStrategies&&!Array.isArray(a.comboStrategies)){let c={...f.comboStrategies&&"object"==typeof f.comboStrategies?f.comboStrategies:{}};for(let[b,d]of Object.entries(a.comboStrategies))null===d?delete c[b]:c[b]={...c[b]||{},...d||{}};b.comboStrategies=c}c.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(b)])}),i=null,h(b)}async function m(){return await g()}},74452:(a,b,c)=>{c.r(b),c.d(b,{createApiKey:()=>k,deleteApiKey:()=>m,getApiKeyById:()=>i,getApiKeyByKey:()=>j,getApiKeys:()=>h,updateApiKey:()=>l,validateApiKey:()=>n});var d=c(94755),e=c(36366),f=c(644);function g(a){return a?{id:a.id,key:a.key,name:a.name,machineId:a.machineId,allowedModels:(0,f.q)(a.allowedModels,null),isActive:1===a.isActive||!0===a.isActive,createdAt:a.createdAt}:null}async function h(){return(await (0,e.c)()).all("SELECT * FROM apiKeys ORDER BY createdAt ASC").map(g)}async function i(a){return g((await (0,e.c)()).get("SELECT * FROM apiKeys WHERE id = ?",[a]))}async function j(a){return g((await (0,e.c)()).get("SELECT * FROM apiKeys WHERE key = ?",[a]))}async function k(a,b,g=null){if(!b)throw Error("machineId is required");let h=await (0,e.c)(),{generateApiKeyWithMachine:i}=await c.e(6844).then(c.bind(c,86844)),j=i(b),l={id:(0,d.A)(),name:a,key:j.key,machineId:b,allowedModels:g,isActive:!0,createdAt:new Date().toISOString()};return h.run("INSERT INTO apiKeys(id, key, name, machineId, allowedModels, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?, ?)",[l.id,l.key,l.name,l.machineId,g?(0,f.s)(g):null,1,l.createdAt]),l}async function l(a,b){let c=await (0,e.c)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!e)return;let h={...g(e),...b};c.run("UPDATE apiKeys SET key = ?, name = ?, machineId = ?, allowedModels = ?, isActive = ? WHERE id = ?",[h.key,h.name,h.machineId,h.allowedModels?(0,f.s)(h.allowedModels):null,+!!h.isActive,a]),d=h}),d}async function m(a){let b=(await (0,e.c)()).run("DELETE FROM apiKeys WHERE id = ?",[a]);return(b?.changes??0)>0}async function n(a){let b=(await (0,e.c)()).get("SELECT isActive FROM apiKeys WHERE key = ?",[a]);return!!b&&(1===b.isActive||!0===b.isActive)}},97914:(a,b,c)=>{c.d(b,{KJ:()=>l,VT:()=>n,getPricingForModel:()=>k,r4:()=>j,yF:()=>m});var d=c(36366),e=c(644);let f=(0,c(22846).U)("pricing"),g={value:null,expiresAt:0};function h(){g={value:null,expiresAt:0}}async function i(){return await f.getAll()}async function j(){let a=Date.now();if(g.value&&g.expiresAt>a)return g.value;let b=await i(),{PROVIDER_PRICING:d}=await Promise.resolve().then(c.bind(c,58920)),e={};for(let[a,c]of Object.entries(d))if(e[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))e[a][c]=e[a][c]?{...e[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(e[a])for(let[b,d]of Object.entries(c))e[a][b]||(e[a][b]=d);else e[a]={...c};return g={value:e,expiresAt:a+5e3},e}async function k(a,b){if(!b)return null;let d=await i();if(a&&d[a]?.[b])return d[a][b];let{getPricingForModel:e}=await Promise.resolve().then(c.bind(c,58920));return e(a,b)}async function l(a){let b=await (0,d.c)();return b.transaction(()=>{for(let[c,d]of Object.entries(a)){let a=b.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[c]),f={...a&&(0,e.q)(a.value,{})||{}};for(let[a,b]of Object.entries(d))f[a]=b;b.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[c,(0,e.s)(f)])}}),h(),await i()}async function m(a,b){if(!a)return await i();let c=await (0,d.c)();return c.transaction(()=>{if(!b)return void c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]);let d=c.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[a]),f=d&&(0,e.q)(d.value,{})||{};delete f[b],0===Object.keys(f).length?c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]):c.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,(0,e.s)(f)])}),h(),await i()}async function n(){return await f.clear(),h(),{}}}};
|