@jheavenknows/bluerouter 1.0.80 → 1.0.82
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 +3 -15
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/prerender-manifest.json +0 -48
- package/app/.next-cli-build/routes-manifest.json +0 -82
- 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 +2 -2
- 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/media-providers/[kind]/[id]/page.js +2 -2
- 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/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/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/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/prompt-logs/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +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 +3 -3
- 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/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 +2 -2
- package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_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 +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
- 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/auth/ldap/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/ldap/users/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/status/route.js +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +3 -3
- 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 +1 -1
- 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/autostart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/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 +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +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 +1 -1
- 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 +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
- 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 +1 -1
- 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 +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/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/dashboard/prompt-logs/[id]/route.js +3 -21
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js +3 -21
- package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/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/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 +5 -5
- 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/[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/import-token/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/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/social-authorize/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-health/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-health/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]/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/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/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/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 +1 -1
- 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/tunnel/tailscale-login/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js +1 -1
- package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/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/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +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/restart/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/restart/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 +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
- 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 +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- 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/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
- package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
- 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 +4 -4
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing/page.js +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 +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +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 +4 -4
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- 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 +3 -15
- package/app/.next-cli-build/server/chunks/{5199.js → 1850.js} +1 -1
- package/app/.next-cli-build/server/chunks/3104.js +1 -1
- package/app/.next-cli-build/server/chunks/3110.js +1 -1
- package/app/.next-cli-build/server/chunks/318.js +1 -1
- package/app/.next-cli-build/server/chunks/4177.js +1 -0
- package/app/.next-cli-build/server/chunks/4632.js +1 -1
- package/app/.next-cli-build/server/chunks/4746.js +1 -1
- package/app/.next-cli-build/server/chunks/4884.js +1 -1
- package/app/.next-cli-build/server/chunks/6108.js +1 -1
- package/app/.next-cli-build/server/chunks/6604.js +1 -1
- package/app/.next-cli-build/server/chunks/7130.js +1 -1
- package/app/.next-cli-build/server/chunks/7153.js +1 -1
- package/app/.next-cli-build/server/chunks/8491.js +2 -2
- package/app/.next-cli-build/server/chunks/8520.js +1 -1
- package/app/.next-cli-build/server/chunks/918.js +1 -1
- package/app/.next-cli-build/server/chunks/9489.js +2 -1
- package/app/.next-cli-build/server/functions-config-manifest.json +1 -9
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js +1 -1
- 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/static/R24qfjQevGqknodafpTPA/_buildManifest.js +1 -0
- package/app/.next-cli-build/static/chunks/{1321-d65a296076eb1466.js → 1321-ec91d8042c9c4ec5.js} +1 -1
- package/app/.next-cli-build/static/chunks/{5497-89fc67cbff3f0984.js → 5497-31de2efdeddd7fc5.js} +1 -1
- package/app/.next-cli-build/static/chunks/app/_global-error/page-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/ldap/test/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/ldap/users/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/autostart/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/prompt-log-db/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/root-ca/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/combos/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/[id]/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/health/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/init/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/keys/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/locale/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-health/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/settings/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tags/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-login/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-start-daemon/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/restart/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/app/page-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-06c52ffae3497d9a.js +1 -0
- package/app/.next-cli-build/static/css/9fe572f5db18fa52.css +1 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.80-to-1.0.81-1.0.81-20260608-234740/data.sqlite +0 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.81-to-1.0.82-1.0.82-20260609-074214/data.sqlite +0 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ollama-nodes/page.js +0 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ollama-nodes/page.js.nft.json +0 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ollama-nodes/page_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/virtual-combos/page.js +0 -16
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/virtual-combos/page.js.nft.json +0 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/virtual-combos/page_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/app/api/ollama-model-memory/route.js +0 -1
- package/app/.next-cli-build/server/app/api/ollama-model-memory/route.js.nft.json +0 -1
- package/app/.next-cli-build/server/app/api/ollama-model-memory/route_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/install/route.js +0 -816
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/install/route.js.nft.json +0 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/install/route_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/reservations/route.js +0 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/reservations/route.js.nft.json +0 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/reservations/route_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/route.js +0 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/route.js.nft.json +0 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/route_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/status/route.js +0 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/status/route.js.nft.json +0 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/status/route_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/route.js +0 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/route.js.nft.json +0 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/route_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/app/api/ollama-routing-targets/route.js +0 -1
- package/app/.next-cli-build/server/app/api/ollama-routing-targets/route.js.nft.json +0 -1
- package/app/.next-cli-build/server/app/api/ollama-routing-targets/route_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/app/api/virtual-combos/[id]/route.js +0 -1
- package/app/.next-cli-build/server/app/api/virtual-combos/[id]/route.js.nft.json +0 -1
- package/app/.next-cli-build/server/app/api/virtual-combos/[id]/route_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/app/api/virtual-combos/preview/route.js +0 -1
- package/app/.next-cli-build/server/app/api/virtual-combos/preview/route.js.nft.json +0 -1
- package/app/.next-cli-build/server/app/api/virtual-combos/preview/route_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/app/api/virtual-combos/route.js +0 -1
- package/app/.next-cli-build/server/app/api/virtual-combos/route.js.nft.json +0 -1
- package/app/.next-cli-build/server/app/api/virtual-combos/route_client-reference-manifest.js +0 -1
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.html +0 -1
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.meta +0 -17
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.rsc +0 -25
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk/dashboard/ollama-nodes/__PAGE__.segment.rsc +0 -9
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk/dashboard/ollama-nodes.segment.rsc +0 -5
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_full.segment.rsc +0 -25
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_head.segment.rsc +0 -6
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_index.segment.rsc +0 -8
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_tree.segment.rsc +0 -4
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.html +0 -1
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.meta +0 -17
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.rsc +0 -25
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard/virtual-combos/__PAGE__.segment.rsc +0 -9
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard/virtual-combos.segment.rsc +0 -5
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +0 -5
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk.segment.rsc +0 -6
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_full.segment.rsc +0 -25
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_head.segment.rsc +0 -6
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_index.segment.rsc +0 -8
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_tree.segment.rsc +0 -4
- package/app/.next-cli-build/server/chunks/1807.js +0 -2
- package/app/.next-cli-build/server/chunks/2549.js +0 -1
- package/app/.next-cli-build/server/chunks/6774.js +0 -1
- package/app/.next-cli-build/server/chunks/8910.js +0 -1
- package/app/.next-cli-build/server/chunks/9253.js +0 -1
- package/app/.next-cli-build/static/KCwxawOv78IJegXLYHGW0/_buildManifest.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/ollama-nodes/page-c771cf90148ecc62.js +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/virtual-combos/page-79d93a5bfc4e1475.js +0 -15
- package/app/.next-cli-build/static/chunks/app/_global-error/page-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/ldap/test/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/ldap/users/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/login/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/auth/status/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/autostart/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/prompt-log-db/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/root-ca/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/combos/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/[id]/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/dashboard/prompt-logs/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/health/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/init/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/keys/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/locale/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/alias/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/availability/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/custom/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/models/test/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/ollama-model-memory/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/ollama-nodes/[id]/install/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/ollama-nodes/[id]/reservations/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/ollama-nodes/[id]/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/ollama-nodes/[id]/status/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/ollama-nodes/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/ollama-routing-targets/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/pricing/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-health/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/client/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/database/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/settings/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/shutdown/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tags/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/load/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/save/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/send/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-login/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-start-daemon/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/history/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/models/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/search/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/restart/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/version/update/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/virtual-combos/[id]/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/virtual-combos/preview/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/api/virtual-combos/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/app/page-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-092c69469068a0c3.js +0 -1
- package/app/.next-cli-build/static/css/e1d3ab81dc0fcb09.css +0 -1
- /package/app/.next-cli-build/static/{KCwxawOv78IJegXLYHGW0 → R24qfjQevGqknodafpTPA}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/7a3e1568f247f3d0.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/e1d3ab81dc0fcb09.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/008a05b0ad6b854a.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-a990cabb6976f421.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-cef5038dc7aa126a.js" async=""></script><script src="/_next/static/chunks/main-app-0a27584eea53a4b0.js" async=""></script><script src="/_next/static/chunks/1a258343-bc0b514c079d8898.js" async=""></script><script src="/_next/static/chunks/1051-eec0f271123ef82f.js" async=""></script><script src="/_next/static/chunks/1321-d65a296076eb1466.js" async=""></script><script src="/_next/static/chunks/5497-89fc67cbff3f0984.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-3a946e00857971ef.js" async=""></script><script src="/_next/static/chunks/app/layout-39f1f36912db26e1.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/dashboard/virtual-combos/page-79d93a5bfc4e1475.js" async=""></script><meta name="theme-color" content="#0a0a0a"/><title>Blue Router Gateway - AI Infrastructure Management</title><meta name="description" content="One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly."/><link rel="manifest" href="/manifest.webmanifest"/><link rel="icon" href="/favicon.ico?d69b7278ea27dcf7" type="image/x-icon" sizes="32x32"/><link rel="icon" href="/favicon.svg"/><script>if(document.fonts&&document.fonts.ready){document.fonts.ready.then(function(){document.documentElement.classList.add('fonts-loaded')})}else{document.documentElement.classList.add('fonts-loaded')}</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div class="flex h-screen w-full overflow-hidden bg-bg"><div class="fixed top-4 right-4 z-[80] flex w-[min(92vw,380px)] flex-col gap-2"></div><div class="hidden lg:flex"><aside class="flex h-full w-72 flex-col border-r border-border bg-sidebar px-3 py-4"><div class="mb-4 rounded-2xl border border-border bg-background/70 p-3 shadow-sm"><div class="flex items-center gap-3"><span class="material-symbols-outlined rounded-xl bg-primary/10 p-2 text-primary">hub</span><div class="min-w-0"><div class="font-semibold text-text-main">Blue Router</div><div class="text-xs text-text-muted">v<!-- -->1.0.80</div></div></div></div><nav class="min-h-0 flex-1 space-y-1 overflow-y-auto pr-1"><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/endpoint"><span class="material-symbols-outlined text-[20px]">api</span><span class="truncate">Endpoint</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/providers"><span class="material-symbols-outlined text-[20px]">dns</span><span class="truncate">Providers</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/combos"><span class="material-symbols-outlined text-[20px]">layers</span><span class="truncate">Combos</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all bg-primary/10 text-primary" href="/dashboard/virtual-combos"><span class="material-symbols-outlined text-[20px]">hub</span><span class="truncate">Virtual Combos</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/usage"><span class="material-symbols-outlined text-[20px]">bar_chart</span><span class="truncate">Usage</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/quota"><span class="material-symbols-outlined text-[20px]">data_usage</span><span class="truncate">Quota Tracker</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/mitm"><span class="material-symbols-outlined text-[20px]">security</span><span class="truncate">AI Traffic Gateway</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/prompt-logs"><span class="material-symbols-outlined text-[20px]">manage_search</span><span class="truncate">Prompt Logs</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/cli-tools"><span class="material-symbols-outlined text-[20px]">terminal</span><span class="truncate">CLI Tools</span></a><div class="pt-3 text-[11px] font-semibold uppercase tracking-wide text-text-muted">System</div><button type="button" class="group flex w-full items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main"><span class="material-symbols-outlined text-[20px]">perm_media</span><span class="flex-1 text-left">Media Providers</span><span class="material-symbols-outlined text-[18px]">expand_more</span></button><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/proxy-pools"><span class="material-symbols-outlined text-[20px]">lan</span><span class="truncate">Proxy Pools</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/ollama-nodes"><span class="material-symbols-outlined text-[20px]">memory</span><span class="truncate">Ollama Nodes</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/skills"><span class="material-symbols-outlined text-[20px]">extension</span><span class="truncate">Skills</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/profile"><span class="material-symbols-outlined text-[20px]">settings</span><span class="truncate">Settings</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/console-log"><span class="material-symbols-outlined text-[20px]">terminal</span><span class="truncate">Console Log</span></a></nav><div class="mt-3 grid grid-cols-3 gap-2 border-t border-border pt-3"><button type="button" class="flex h-10 items-center justify-center rounded-xl border border-blue-200 text-blue-600 transition hover:border-blue-300 hover:bg-blue-50 dark:border-blue-500/30 dark:hover:bg-blue-500/10" title="Restart" aria-label="Restart"><span class="material-symbols-outlined text-[20px]">restart_alt</span></button><button type="button" class="flex h-10 items-center justify-center rounded-xl border border-border text-text-muted transition hover:bg-surface hover:text-text-main" title="Logout" aria-label="Logout"><span class="material-symbols-outlined text-[20px]">logout</span></button><button type="button" class="flex h-10 items-center justify-center rounded-xl border border-red-200 text-red-500 transition hover:border-red-300 hover:bg-red-50 dark:border-red-500/30 dark:hover:bg-red-500/10" title="Shutdown" aria-label="Shutdown"><span class="material-symbols-outlined text-[20px]">power_settings_new</span></button></div></aside></div><div class="fixed inset-y-0 left-0 z-50 transform lg:hidden transition-transform duration-300 ease-in-out -translate-x-full"><aside class="flex h-full w-72 flex-col border-r border-border bg-sidebar px-3 py-4"><div class="mb-4 rounded-2xl border border-border bg-background/70 p-3 shadow-sm"><div class="flex items-center gap-3"><span class="material-symbols-outlined rounded-xl bg-primary/10 p-2 text-primary">hub</span><div class="min-w-0"><div class="font-semibold text-text-main">Blue Router</div><div class="text-xs text-text-muted">v<!-- -->1.0.80</div></div></div></div><nav class="min-h-0 flex-1 space-y-1 overflow-y-auto pr-1"><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/endpoint"><span class="material-symbols-outlined text-[20px]">api</span><span class="truncate">Endpoint</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/providers"><span class="material-symbols-outlined text-[20px]">dns</span><span class="truncate">Providers</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/combos"><span class="material-symbols-outlined text-[20px]">layers</span><span class="truncate">Combos</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all bg-primary/10 text-primary" href="/dashboard/virtual-combos"><span class="material-symbols-outlined text-[20px]">hub</span><span class="truncate">Virtual Combos</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/usage"><span class="material-symbols-outlined text-[20px]">bar_chart</span><span class="truncate">Usage</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/quota"><span class="material-symbols-outlined text-[20px]">data_usage</span><span class="truncate">Quota Tracker</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/mitm"><span class="material-symbols-outlined text-[20px]">security</span><span class="truncate">AI Traffic Gateway</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/prompt-logs"><span class="material-symbols-outlined text-[20px]">manage_search</span><span class="truncate">Prompt Logs</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/cli-tools"><span class="material-symbols-outlined text-[20px]">terminal</span><span class="truncate">CLI Tools</span></a><div class="pt-3 text-[11px] font-semibold uppercase tracking-wide text-text-muted">System</div><button type="button" class="group flex w-full items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main"><span class="material-symbols-outlined text-[20px]">perm_media</span><span class="flex-1 text-left">Media Providers</span><span class="material-symbols-outlined text-[18px]">expand_more</span></button><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/proxy-pools"><span class="material-symbols-outlined text-[20px]">lan</span><span class="truncate">Proxy Pools</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/ollama-nodes"><span class="material-symbols-outlined text-[20px]">memory</span><span class="truncate">Ollama Nodes</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/skills"><span class="material-symbols-outlined text-[20px]">extension</span><span class="truncate">Skills</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/profile"><span class="material-symbols-outlined text-[20px]">settings</span><span class="truncate">Settings</span></a><a class="group flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-all text-text-muted hover:bg-surface-2 hover:text-text-main" href="/dashboard/console-log"><span class="material-symbols-outlined text-[20px]">terminal</span><span class="truncate">Console Log</span></a></nav><div class="mt-3 grid grid-cols-3 gap-2 border-t border-border pt-3"><button type="button" class="flex h-10 items-center justify-center rounded-xl border border-blue-200 text-blue-600 transition hover:border-blue-300 hover:bg-blue-50 dark:border-blue-500/30 dark:hover:bg-blue-500/10" title="Restart" aria-label="Restart"><span class="material-symbols-outlined text-[20px]">restart_alt</span></button><button type="button" class="flex h-10 items-center justify-center rounded-xl border border-border text-text-muted transition hover:bg-surface hover:text-text-main" title="Logout" aria-label="Logout"><span class="material-symbols-outlined text-[20px]">logout</span></button><button type="button" class="flex h-10 items-center justify-center rounded-xl border border-red-200 text-red-500 transition hover:border-red-300 hover:bg-red-50 dark:border-red-500/30 dark:hover:bg-red-500/10" title="Shutdown" aria-label="Shutdown"><span class="material-symbols-outlined text-[20px]">power_settings_new</span></button></div></aside></div><main class="flex flex-col flex-1 h-full min-w-0 relative transition-colors duration-300 isolate"><div class="landing-grid absolute inset-0 pointer-events-none -z-10" aria-hidden="true"></div><header class="shrink-0 flex items-center justify-between gap-3 px-4 lg:px-8 pt-3 pb-2 border-b border-border-subtle bg-surface/60 backdrop-blur-xl lg:bg-transparent lg:backdrop-blur-none z-20"><div class="flex items-center gap-3 lg:hidden shrink-0"><button class="text-text-main hover:text-primary transition-colors"><span class="material-symbols-outlined">menu</span></button></div><div class="flex flex-col min-w-0 flex-1"></div><div class="flex items-center gap-1 shrink-0"><button class="flex items-center justify-center size-10 rounded-full text-text-muted hover:text-text-main hover:bg-surface-2 transition-colors" aria-label="Switch to dark mode" title="Switch to dark mode"><span class="material-symbols-outlined text-[22px]">dark_mode</span></button><div class="relative"><button class="flex items-center justify-center p-2 rounded-lg text-text-muted hover:text-text-main hover:bg-black/5 dark:hover:bg-white/5 transition-all" title="Menu"><span class="material-symbols-outlined">grid_view</span></button></div><div class=""></div></div></header><div class="flex-1 overflow-y-auto custom-scrollbar p-6 lg:p-10 "><div class="w-full max-w-none"><div class="space-y-6"><div class="flex flex-wrap items-start justify-between gap-3"><div><h1 class="text-2xl font-semibold text-text-main">Virtual Combos</h1><p class="mt-1 max-w-3xl text-sm text-text-muted">Expose one virtual model name and route it to provider targets or hardware-aware local Ollama model selectors.</p></div><div class="flex flex-wrap gap-2"><button type="button" class="rounded-xl border px-4 py-2 text-sm font-medium transition-all focus:outline-none focus:ring-2 focus:ring-primary/40 focus:ring-offset-1 border-border bg-background text-text-main hover:border-primary/50 hover:bg-surface-2 hover:text-primary" aria-pressed="false">New Provider Combo</button><button type="button" class="rounded-xl border px-4 py-2 text-sm font-medium transition-all focus:outline-none focus:ring-2 focus:ring-primary/40 focus:ring-offset-1 border-border bg-background text-text-main hover:border-primary/50 hover:bg-surface-2 hover:text-primary" aria-pressed="false">New Ollama Local Combo</button></div></div><div class="grid gap-3 md:grid-cols-5"><button type="button" class="rounded-2xl border border-border bg-surface-1 p-3 text-left hover:bg-surface-2"><div class="text-sm font-semibold text-text-main">auto/offline-fast</div><div class="mt-1 text-xs text-text-muted">Load preset</div></button><button type="button" class="rounded-2xl border border-border bg-surface-1 p-3 text-left hover:bg-surface-2"><div class="text-sm font-semibold text-text-main">auto/offline-coding</div><div class="mt-1 text-xs text-text-muted">Load preset</div></button><button type="button" class="rounded-2xl border border-border bg-surface-1 p-3 text-left hover:bg-surface-2"><div class="text-sm font-semibold text-text-main">auto/offline-vision</div><div class="mt-1 text-xs text-text-muted">Load preset</div></button><button type="button" class="rounded-2xl border border-border bg-surface-1 p-3 text-left hover:bg-surface-2"><div class="text-sm font-semibold text-text-main">auto/offline-translate</div><div class="mt-1 text-xs text-text-muted">Load preset</div></button><button type="button" class="rounded-2xl border border-border bg-surface-1 p-3 text-left hover:bg-surface-2"><div class="text-sm font-semibold text-text-main">auto/offline-embed</div><div class="mt-1 text-xs text-text-muted">Load preset</div></button></div><div class="rounded-2xl border border-border bg-surface-1 p-8 text-sm text-text-muted">Loading...</div></div><!--$--><!--/$--></div></div></main></div><script src="/_next/static/chunks/webpack-a990cabb6976f421.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[21110,[\"3862\",\"static/chunks/1a258343-bc0b514c079d8898.js\",\"1051\",\"static/chunks/1051-eec0f271123ef82f.js\",\"1321\",\"static/chunks/1321-d65a296076eb1466.js\",\"5497\",\"static/chunks/5497-89fc67cbff3f0984.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-3a946e00857971ef.js\"],\"ThemeProvider\"]\n3:I[94635,[\"1321\",\"static/chunks/1321-d65a296076eb1466.js\",\"7177\",\"static/chunks/app/layout-39f1f36912db26e1.js\"],\"RuntimeI18nProvider\"]\n4:I[57121,[],\"\"]\n5:I[74581,[],\"\"]\n6:I[7648,[\"3862\",\"static/chunks/1a258343-bc0b514c079d8898.js\",\"1051\",\"static/chunks/1051-eec0f271123ef82f.js\",\"1321\",\"static/chunks/1321-d65a296076eb1466.js\",\"5497\",\"static/chunks/5497-89fc67cbff3f0984.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-3a946e00857971ef.js\"],\"default\"]\n7:I[61304,[],\"ClientPageRoot\"]\n8:I[53677,[\"6967\",\"static/chunks/app/(dashboard)/dashboard/virtual-combos/page-79d93a5bfc4e1475.js\"],\"default\"]\nb:I[90484,[],\"OutletBoundary\"]\nc:\"$Sreact.suspense\"\nf:I[90484,[],\"ViewportBoundary\"]\n11:I[90484,[],\"MetadataBoundary\"]\n13:I[27123,[],\"default\",1]\n:HL[\"/_next/static/css/7a3e1568f247f3d0.css\",\"style\"]\n:HL[\"/_next/static/css/e1d3ab81dc0fcb09.css\",\"style\"]\n:HL[\"/_next/static/css/008a05b0ad6b854a.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"dashboard\",\"virtual-combos\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"(dashboard)\",{\"children\":[\"dashboard\",{\"children\":[\"virtual-combos\",{\"children\":[\"__PAGE__\",{}]}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/7a3e1568f247f3d0.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/e1d3ab81dc0fcb09.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"if(document.fonts\u0026\u0026document.fonts.ready){document.fonts.ready.then(function(){document.documentElement.classList.add('fonts-loaded')})}else{document.documentElement.classList.add('fonts-loaded')}\"}}]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/008a05b0ad6b854a.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"Component\":\"$8\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@9\",\"$@a\"]}}],null,[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$c\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@d\"}]}]]}],{},null,false,null]},null,false,\"$@e\"]},null,false,\"$@e\"]},null,false,null]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L11\",null,{\"children\":[\"$\",\"$c\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L12\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$13\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"KCwxawOv78IJegXLYHGW0\"}\n"])</script><script>self.__next_f.push([1,"14:[]\ne:\"$W14\"\n9:{}\na:\"$0:f:0:1:1:children:1:children:1:children:1:children:0:props:children:0:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0a0a0a\"}]]\n"])</script><script>self.__next_f.push([1,"15:I[86869,[],\"IconMark\"]\nd:null\n12:[[\"$\",\"title\",\"0\",{\"children\":\"Blue Router Gateway - AI Infrastructure Management\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?d69b7278ea27dcf7\",\"type\":\"image/x-icon\",\"sizes\":\"32x32\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$L15\",\"5\",{}]]\n"])</script></body></html>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"headers": {
|
|
3
|
-
"x-nextjs-stale-time": "300",
|
|
4
|
-
"x-nextjs-prerender": "1",
|
|
5
|
-
"x-next-cache-tags": "_N_T_/layout,_N_T_/(dashboard)/layout,_N_T_/(dashboard)/dashboard/layout,_N_T_/(dashboard)/dashboard/virtual-combos/layout,_N_T_/(dashboard)/dashboard/virtual-combos/page,_N_T_/dashboard/virtual-combos"
|
|
6
|
-
},
|
|
7
|
-
"segmentPaths": [
|
|
8
|
-
"/_tree",
|
|
9
|
-
"/_full",
|
|
10
|
-
"/!KGRhc2hib2FyZCk/dashboard/virtual-combos/__PAGE__",
|
|
11
|
-
"/!KGRhc2hib2FyZCk/dashboard/virtual-combos",
|
|
12
|
-
"/!KGRhc2hib2FyZCk/dashboard",
|
|
13
|
-
"/!KGRhc2hib2FyZCk",
|
|
14
|
-
"/_index",
|
|
15
|
-
"/_head"
|
|
16
|
-
]
|
|
17
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
1:"$Sreact.fragment"
|
|
2
|
-
2:I[21110,["3862","static/chunks/1a258343-bc0b514c079d8898.js","1051","static/chunks/1051-eec0f271123ef82f.js","1321","static/chunks/1321-d65a296076eb1466.js","5497","static/chunks/5497-89fc67cbff3f0984.js","9305","static/chunks/app/(dashboard)/layout-3a946e00857971ef.js"],"ThemeProvider"]
|
|
3
|
-
3:I[94635,["1321","static/chunks/1321-d65a296076eb1466.js","7177","static/chunks/app/layout-39f1f36912db26e1.js"],"RuntimeI18nProvider"]
|
|
4
|
-
4:I[57121,[],""]
|
|
5
|
-
5:I[74581,[],""]
|
|
6
|
-
6:I[7648,["3862","static/chunks/1a258343-bc0b514c079d8898.js","1051","static/chunks/1051-eec0f271123ef82f.js","1321","static/chunks/1321-d65a296076eb1466.js","5497","static/chunks/5497-89fc67cbff3f0984.js","9305","static/chunks/app/(dashboard)/layout-3a946e00857971ef.js"],"default"]
|
|
7
|
-
7:I[61304,[],"ClientPageRoot"]
|
|
8
|
-
8:I[53677,["6967","static/chunks/app/(dashboard)/dashboard/virtual-combos/page-79d93a5bfc4e1475.js"],"default"]
|
|
9
|
-
b:I[90484,[],"OutletBoundary"]
|
|
10
|
-
c:"$Sreact.suspense"
|
|
11
|
-
f:I[90484,[],"ViewportBoundary"]
|
|
12
|
-
11:I[90484,[],"MetadataBoundary"]
|
|
13
|
-
13:I[27123,[],"default",1]
|
|
14
|
-
:HL["/_next/static/css/7a3e1568f247f3d0.css","style"]
|
|
15
|
-
:HL["/_next/static/css/e1d3ab81dc0fcb09.css","style"]
|
|
16
|
-
:HL["/_next/static/css/008a05b0ad6b854a.css","style"]
|
|
17
|
-
0:{"P":null,"c":["","dashboard","virtual-combos"],"q":"","i":false,"f":[[["",{"children":["(dashboard)",{"children":["dashboard",{"children":["virtual-combos",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/7a3e1568f247f3d0.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/e1d3ab81dc0fcb09.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"if(document.fonts&&document.fonts.ready){document.fonts.ready.then(function(){document.documentElement.classList.add('fonts-loaded')})}else{document.documentElement.classList.add('fonts-loaded')}"}}]}],["$","body",null,{"className":"__variable_f367f3 font-sans antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/008a05b0ad6b854a.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@9","$@a"]}}],null,["$","$Lb",null,{"children":["$","$c",null,{"name":"Next.MetadataOutlet","children":"$@d"}]}]]}],{},null,false,null]},null,false,"$@e"]},null,false,"$@e"]},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lf",null,{"children":"$L10"}],["$","div",null,{"hidden":true,"children":["$","$L11",null,{"children":["$","$c",null,{"name":"Next.Metadata","children":"$L12"}]}]}],null]}],false]],"m":"$undefined","G":["$13",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"KCwxawOv78IJegXLYHGW0"}
|
|
18
|
-
14:[]
|
|
19
|
-
e:"$W14"
|
|
20
|
-
9:{}
|
|
21
|
-
a:"$0:f:0:1:1:children:1:children:1:children:1:children:0:props:children:0:props:serverProvidedParams:params"
|
|
22
|
-
10:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","2",{"name":"theme-color","content":"#0a0a0a"}]]
|
|
23
|
-
15:I[86869,[],"IconMark"]
|
|
24
|
-
d:null
|
|
25
|
-
12:[["$","title","0",{"children":"Blue Router Gateway - AI Infrastructure Management"}],["$","meta","1",{"name":"description","content":"One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly."}],["$","link","2",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}],["$","link","3",{"rel":"icon","href":"/favicon.ico?d69b7278ea27dcf7","type":"image/x-icon","sizes":"32x32"}],["$","link","4",{"rel":"icon","href":"/favicon.svg"}],["$","$L15","5",{}]]
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
1:"$Sreact.fragment"
|
|
2
|
-
2:I[61304,[],"ClientPageRoot"]
|
|
3
|
-
3:I[53677,["6967","static/chunks/app/(dashboard)/dashboard/virtual-combos/page-79d93a5bfc4e1475.js"],"default"]
|
|
4
|
-
6:I[90484,[],"OutletBoundary"]
|
|
5
|
-
7:"$Sreact.suspense"
|
|
6
|
-
0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],null,["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"KCwxawOv78IJegXLYHGW0"}
|
|
7
|
-
4:{}
|
|
8
|
-
5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
|
|
9
|
-
8:null
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
1:"$Sreact.fragment"
|
|
2
|
-
2:I[57121,[],""]
|
|
3
|
-
3:I[74581,[],""]
|
|
4
|
-
4:[]
|
|
5
|
-
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"KCwxawOv78IJegXLYHGW0"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
1:"$Sreact.fragment"
|
|
2
|
-
2:I[57121,[],""]
|
|
3
|
-
3:I[74581,[],""]
|
|
4
|
-
4:[]
|
|
5
|
-
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"KCwxawOv78IJegXLYHGW0"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
1:"$Sreact.fragment"
|
|
2
|
-
2:I[7648,["3862","static/chunks/1a258343-bc0b514c079d8898.js","1051","static/chunks/1051-eec0f271123ef82f.js","1321","static/chunks/1321-d65a296076eb1466.js","5497","static/chunks/5497-89fc67cbff3f0984.js","9305","static/chunks/app/(dashboard)/layout-3a946e00857971ef.js"],"default"]
|
|
3
|
-
3:I[57121,[],""]
|
|
4
|
-
4:I[74581,[],""]
|
|
5
|
-
:HL["/_next/static/css/008a05b0ad6b854a.css","style"]
|
|
6
|
-
0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/008a05b0ad6b854a.css","precedence":"next"}]],["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"KCwxawOv78IJegXLYHGW0"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
1:"$Sreact.fragment"
|
|
2
|
-
2:I[21110,["3862","static/chunks/1a258343-bc0b514c079d8898.js","1051","static/chunks/1051-eec0f271123ef82f.js","1321","static/chunks/1321-d65a296076eb1466.js","5497","static/chunks/5497-89fc67cbff3f0984.js","9305","static/chunks/app/(dashboard)/layout-3a946e00857971ef.js"],"ThemeProvider"]
|
|
3
|
-
3:I[94635,["1321","static/chunks/1321-d65a296076eb1466.js","7177","static/chunks/app/layout-39f1f36912db26e1.js"],"RuntimeI18nProvider"]
|
|
4
|
-
4:I[57121,[],""]
|
|
5
|
-
5:I[74581,[],""]
|
|
6
|
-
6:I[7648,["3862","static/chunks/1a258343-bc0b514c079d8898.js","1051","static/chunks/1051-eec0f271123ef82f.js","1321","static/chunks/1321-d65a296076eb1466.js","5497","static/chunks/5497-89fc67cbff3f0984.js","9305","static/chunks/app/(dashboard)/layout-3a946e00857971ef.js"],"default"]
|
|
7
|
-
7:I[61304,[],"ClientPageRoot"]
|
|
8
|
-
8:I[53677,["6967","static/chunks/app/(dashboard)/dashboard/virtual-combos/page-79d93a5bfc4e1475.js"],"default"]
|
|
9
|
-
b:I[90484,[],"OutletBoundary"]
|
|
10
|
-
c:"$Sreact.suspense"
|
|
11
|
-
f:I[90484,[],"ViewportBoundary"]
|
|
12
|
-
11:I[90484,[],"MetadataBoundary"]
|
|
13
|
-
13:I[27123,[],"default",1]
|
|
14
|
-
:HL["/_next/static/css/7a3e1568f247f3d0.css","style"]
|
|
15
|
-
:HL["/_next/static/css/e1d3ab81dc0fcb09.css","style"]
|
|
16
|
-
:HL["/_next/static/css/008a05b0ad6b854a.css","style"]
|
|
17
|
-
0:{"P":null,"c":["","dashboard","virtual-combos"],"q":"","i":false,"f":[[["",{"children":["(dashboard)",{"children":["dashboard",{"children":["virtual-combos",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/7a3e1568f247f3d0.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/e1d3ab81dc0fcb09.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"if(document.fonts&&document.fonts.ready){document.fonts.ready.then(function(){document.documentElement.classList.add('fonts-loaded')})}else{document.documentElement.classList.add('fonts-loaded')}"}}]}],["$","body",null,{"className":"__variable_f367f3 font-sans antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/008a05b0ad6b854a.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","$L6",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@9","$@a"]}}],null,["$","$Lb",null,{"children":["$","$c",null,{"name":"Next.MetadataOutlet","children":"$@d"}]}]]}],{},null,false,null]},null,false,"$@e"]},null,false,"$@e"]},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lf",null,{"children":"$L10"}],["$","div",null,{"hidden":true,"children":["$","$L11",null,{"children":["$","$c",null,{"name":"Next.Metadata","children":"$L12"}]}]}],null]}],false]],"m":"$undefined","G":["$13",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"KCwxawOv78IJegXLYHGW0"}
|
|
18
|
-
14:[]
|
|
19
|
-
e:"$W14"
|
|
20
|
-
9:{}
|
|
21
|
-
a:"$0:f:0:1:1:children:1:children:1:children:1:children:0:props:children:0:props:serverProvidedParams:params"
|
|
22
|
-
10:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","2",{"name":"theme-color","content":"#0a0a0a"}]]
|
|
23
|
-
15:I[86869,[],"IconMark"]
|
|
24
|
-
d:null
|
|
25
|
-
12:[["$","title","0",{"children":"Blue Router Gateway - AI Infrastructure Management"}],["$","meta","1",{"name":"description","content":"One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly."}],["$","link","2",{"rel":"manifest","href":"/manifest.webmanifest","crossOrigin":"$undefined"}],["$","link","3",{"rel":"icon","href":"/favicon.ico?d69b7278ea27dcf7","type":"image/x-icon","sizes":"32x32"}],["$","link","4",{"rel":"icon","href":"/favicon.svg"}],["$","$L15","5",{}]]
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
1:"$Sreact.fragment"
|
|
2
|
-
2:I[90484,[],"ViewportBoundary"]
|
|
3
|
-
3:I[90484,[],"MetadataBoundary"]
|
|
4
|
-
4:"$Sreact.suspense"
|
|
5
|
-
5:I[86869,[],"IconMark"]
|
|
6
|
-
0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","2",{"name":"theme-color","content":"#0a0a0a"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Blue Router Gateway - AI Infrastructure Management"}],["$","meta","1",{"name":"description","content":"One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly."}],["$","link","2",{"rel":"manifest","href":"/manifest.webmanifest"}],["$","link","3",{"rel":"icon","href":"/favicon.ico?d69b7278ea27dcf7","type":"image/x-icon","sizes":"32x32"}],["$","link","4",{"rel":"icon","href":"/favicon.svg"}],["$","$L5","5",{}]]}]}]}],null]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"KCwxawOv78IJegXLYHGW0"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
1:"$Sreact.fragment"
|
|
2
|
-
2:I[21110,["3862","static/chunks/1a258343-bc0b514c079d8898.js","1051","static/chunks/1051-eec0f271123ef82f.js","1321","static/chunks/1321-d65a296076eb1466.js","5497","static/chunks/5497-89fc67cbff3f0984.js","9305","static/chunks/app/(dashboard)/layout-3a946e00857971ef.js"],"ThemeProvider"]
|
|
3
|
-
3:I[94635,["1321","static/chunks/1321-d65a296076eb1466.js","7177","static/chunks/app/layout-39f1f36912db26e1.js"],"RuntimeI18nProvider"]
|
|
4
|
-
4:I[57121,[],""]
|
|
5
|
-
5:I[74581,[],""]
|
|
6
|
-
:HL["/_next/static/css/7a3e1568f247f3d0.css","style"]
|
|
7
|
-
:HL["/_next/static/css/e1d3ab81dc0fcb09.css","style"]
|
|
8
|
-
0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/7a3e1568f247f3d0.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/e1d3ab81dc0fcb09.css","precedence":"next"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"if(document.fonts&&document.fonts.ready){document.fonts.ready.then(function(){document.documentElement.classList.add('fonts-loaded')})}else{document.documentElement.classList.add('fonts-loaded')}"}}]}],["$","body",null,{"className":"__variable_f367f3 font-sans antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","template":["$","$L5",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"KCwxawOv78IJegXLYHGW0"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
:HL["/_next/static/css/7a3e1568f247f3d0.css","style"]
|
|
2
|
-
:HL["/_next/static/css/e1d3ab81dc0fcb09.css","style"]
|
|
3
|
-
:HL["/_next/static/css/008a05b0ad6b854a.css","style"]
|
|
4
|
-
0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"(dashboard)","param":null,"prefetchHints":0,"slots":{"children":{"name":"dashboard","param":null,"prefetchHints":0,"slots":{"children":{"name":"virtual-combos","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}}}},"staleTime":300,"buildId":"KCwxawOv78IJegXLYHGW0"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=1807,exports.ids=[1807],exports.modules={31807:(a,b,c)=>{c.d(b,{H8:()=>t,Lw:()=>z,M9:()=>A,YA:()=>L,au:()=>P,hy:()=>B});var d=c(6774),e=c(19253),f=c(69773),g=c(35448),h=c(47370),i=c(71336);let j="ollama-local",k="ollama-local-combo",l=new Map,m=new Map;function n(a){let b={};try{a&&"function"==typeof a.forEach?a.forEach((a,c)=>{b[c]=a}):a&&"object"==typeof a&&Object.assign(b,a)}catch{}return b}function o(a,b=!1){if(b||!a||"object"!=typeof a)return a;let c=Array.isArray(a)?[...a]:{...a};return void 0!==c.reasoning&&delete c.reasoning,void 0!==c.thinking&&delete c.thinking,void 0!==c.reasoning_content&&delete c.reasoning_content,Array.isArray(c.choices)&&(c.choices=c.choices.map(a=>{if(!a||"object"!=typeof a)return a;let b={...a};return b.message&&"object"==typeof b.message&&(b.message={...b.message},delete b.message.reasoning,delete b.message.thinking,delete b.message.reasoning_content),b.delta&&"object"==typeof b.delta&&(b.delta={...b.delta},delete b.delta.reasoning,delete b.delta.thinking,delete b.delta.reasoning_content),b})),c}function p(a,b=!1){if(b||!String(a||"").startsWith("data:"))return a;let c=String(a).slice(5).trimStart();if(!c||"[DONE]"===c)return a;try{let a=JSON.parse(c),b=o(a,!1);return`data: ${JSON.stringify(b)}`}catch{return a}}function q(a){let b=a?.usage||{};return{prompt_tokens:Number(b.prompt_tokens||b.input_tokens||0),completion_tokens:Number(b.completion_tokens||b.output_tokens||0),total_tokens:Number(b.total_tokens||(b.prompt_tokens||b.input_tokens||0)+(b.completion_tokens||b.output_tokens||0)),reasoning_tokens:Number(b.completion_tokens_details?.reasoning_tokens||b.reasoning_tokens||0)}}async function r({requestedModel:a,comboName:b,target:c,body:d,upstreamBody:e,responseBody:f,status:g,latencyMs:i,request:k,routePath:l,error:m=null}){let o=`${c?.nodeId||"node"}:${c?.port||"port"}`,p=c?.model||a||b||"ollama-local",s=q(f),t=l||"/v1/chat/completions";await (0,h.E5)({model:p,provider:j,connectionId:o,status:m?`FAILED ${g||502}`:`OK ${g||200}`}).catch(()=>{}),m||await (0,h.sZ)({provider:j,model:p,connectionId:o,endpoint:t,status:"ok",tokens:s,meta:{requestedModel:a,combo:b,nodeId:c?.nodeId,nodeName:c?.nodeName,port:c?.port,localCombo:!0}}).catch(()=>{}),await (0,h.ox)(function({requestedModel:a,target:b,body:c,upstreamBody:d,responseBody:e,status:f,latencyMs:g,error:h=null,request:i,routePath:k}){let l=q(e);return{provider:j,model:b?.model||a,connectionId:`${b?.nodeId||"node"}:${b?.port||"port"}`,status:h?"error":"success",latency:{total:g,ttft:0},tokens:l,request:{endpoint:k||"",headers:n(i?.headers),body:c,routedModel:b?.model||null,requestedModel:a},providerRequest:d||null,providerResponse:e||null,response:h?{error:h,status:f}:{body:e,status:f}}}({requestedModel:a,target:c,body:d,upstreamBody:e,responseBody:f,status:g,latencyMs:i,error:m,request:k,routePath:l})).catch(()=>{})}async function s({body:a,requestedModel:b,target:c,request:d,routePath:e}){try{let f=await (0,i.q7)("openai","openai",c?.model||b,{provider:j,connectionName:c?.nodeName?`${c.nodeName}:${c.port}`:k,connectionId:c?.nodeId?`${c.nodeId}:${c.port}`:k,accountName:c?.nodeName||"Ollama Local Combo"});return f.logClientRawRequest(e||"/v1/chat/completions",a,n(d?.headers)),f.logRawRequest(a,n(d?.headers)),f}catch{return null}}let t="ollama-local";function u(a){return String(a??"").trim()}function v(a,b=!1){return null==a||""===a?b:!0===a||"true"===a||1===a||"1"===a||"on"===a}function w(a,b=0){let c=Number(a);return Number.isFinite(c)?c:b}function x(a){return u(a).replace(/^.*\//,"").toLowerCase()}function y(a,b=0){if("string"==typeof a)return{pattern:u(a),priority:Math.max(1,100-5*b),enabled:!0};if(!a||"object"!=typeof a)return null;let c=u(a.pattern||a.model||a.name||a.id);return c?{pattern:c,priority:w(a.priority,Math.max(1,100-5*b)),enabled:!1!==a.enabled,notes:u(a.notes||"")}:null}function z(a={}){var b,c;let d=a?.localOllama&&"object"==typeof a.localOllama?a.localOllama:a||{};return{modelPatterns:function(a=[]){return(Array.isArray(a)?a:String(a||"").split(/\n+/)).map((a,b)=>{if("string"!=typeof a)return y(a,b);let c=a.split("|").map(a=>a.trim()).filter(Boolean),d=c.shift();if(!d)return null;let e={pattern:d,priority:Math.max(1,100-5*b),enabled:!0};for(let a of c){let[b,...c]=a.split("="),d=u(b).toLowerCase(),f=u(c.join("="));("priority"===d||"prio"===d)&&(e.priority=w(f,e.priority)),"enabled"===d&&(e.enabled=v(f,!0)),("notes"===d||"note"===d)&&(e.notes=f)}return y(e,b)}).filter(Boolean)}(d.modelPatterns||d.models||d.patterns||[]),allowedNodeIds:Array.isArray(b=d.allowedNodeIds||d.allowedNodes||d.nodeIds)?[...new Set(b.map(a=>u(a)).filter(Boolean))]:[...new Set(String(b||"").split(/[\n,;]+/).map(a=>u(a)).filter(Boolean))],allowedPorts:Array.isArray(c=d.allowedPorts||d.ports||d.allowedInstancePorts)?[...new Set(c.map(Number).filter(a=>Number.isFinite(a)&&a>0))]:[...new Set(String(c||"").split(/[\n,;\s]+/).map(Number).filter(a=>Number.isFinite(a)&&a>0))],preferLoaded:v(d.preferLoaded,!0),allowWakeSleeping:v(d.allowWakeSleeping,!0),requireGpu:v(d.requireGpu,!1),allowCpuFallback:v(d.allowCpuFallback,!0),allowMultiGpuSplit:v(d.allowMultiGpuSplit,!1),maxWakeVramMb:Math.max(0,w(d.maxWakeVramMb,0)),maxWakeRamMb:Math.max(0,w(d.maxWakeRamMb,0)),fallbackCombo:u(d.fallbackCombo||""),selectionPolicy:u(d.selectionPolicy||"stable-fit")||"stable-fit",wakeMargin:Math.max(0,w(d.wakeMargin,300)),backgroundWakeTimeoutMs:Math.max(1e3,w(d.backgroundWakeTimeoutMs,12e4)),wakeFailureCooldownMs:Math.max(0,w(d.wakeFailureCooldownMs,12e4)),backgroundWakeKeepAlive:u(d.backgroundWakeKeepAlive||"15m")}}function A(a={}){return u(a.type||a.comboType).toLowerCase()===t}function B(a={}){let b=u(a.name||a.id||a.exposedModel||a.model),c=u(a.exposedModel||a.model||a.name||a.id);return{...a,id:u(a.id)||b,name:b,exposedModel:c,enabled:!1!==a.enabled,type:t,localOllama:z(a.localOllama||a),description:u(a.description||"")}}function C(a,b){return w(a?.requirement?.[b],0)}function D(a,b,c={}){return{...a,eligible:!1,reason:b,...c}}function E(a){return C(a,"effectiveMinRamFreeMb")||C(a,"minRamFreeMb")}function F(a){return C(a,"effectiveMinVramFreeMb")||C(a,"minVramFreeMb")}function G(a){let b=w(a?.latencyMs||a?.health?.latencyMs,0);return b>0?b/20:0}function H(a,b,c,d={}){let e,f=String(b.selectionPolicy||"stable-fit").toLowerCase(),g=!0===d.ignoreLoadedBias,h=0;return!g&&b.preferLoaded&&a.loaded&&(h+=1e3),!g&&a.loaded&&"loaded-first"===f&&(h+=500),h+=5*w(c?.priority,0),c?.matchType==="exact"?h+=300:c?.matchType==="case-insensitive"?h+=250:c?.matchType==="wildcard"&&(h+=180),h+=(e=String(a?.hardwareScope?.source||a?.effectiveGpuSource||"").toLowerCase()).includes("manual")?180:e.includes("configured")?150:e.includes("runtime")||e.includes("nvidia")?120:80*!!e.includes("ps"),h+=Math.min(200,w(a.vramFreeMb,0)/1024*10),h+=Math.min(120,w(a.ramAvailableMb,0)/4096*5),a.loaded||(h-=F(a)/1024*20,h-=E(a)/1024*8),h-=G(a),"lowest-latency"===f&&(h-=3*G(a)),"balanced"===f&&(h+=20*Math.random()),Math.round(100*h)/100}async function I(a,b={}){B(a);let c=await (0,d.U1)();if(!1!==b.refresh){let a=Math.max(1e3,w(b.maxAgeMs,5e3));c=(await (0,e.sV)(c,{maxAgeMs:a})).nodes}return(0,f.o)(c)}function J(a=[]){return[...a].sort((a,b)=>b.score!==a.score?b.score-a.score:+!!b.loaded!=+!!a.loaded?!!b.loaded-!!a.loaded:String(a.id||a.model||"").localeCompare(String(b.id||b.model||"")))}function K(a=[]){return[...a].sort((a,b)=>{let c=Number(a.fitScore??a.score??0),d=Number(b.fitScore??b.score??0);return d!==c?d-c:+!!b.loaded!=+!!a.loaded?!!b.loaded-!!a.loaded:String(a.id||a.model||"").localeCompare(String(b.id||b.model||""))})}async function L(a,b={}){let c=B(a),d=c.localOllama;if(!d.modelPatterns.length)return{combo:c,selected:null,eligible:[],rejected:[],error:"No model patterns configured"};let e=await I(c,b),f=e.map(a=>(function(a,b){let c=function(a,b=[]){let c=b.map(b=>(function(a,b){let c,d=u(a).replace(/^.*\//,""),e=u(b?.pattern);if(!e||b?.enabled===!1)return null;let f=d===e,g=x(d)===x(e),h=e.includes("*")&&(c=u(e).split("*").map(a=>a.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")).join(".*"),RegExp(`^${c}$`,"i")).test(d);return f||g||h?{pattern:e,priority:w(b.priority,0),matchType:f?"exact":g?"case-insensitive":"wildcard"}:null})(a,b)).filter(Boolean);return c.sort((a,b)=>b.priority-a.priority),c[0]||null}(a.model,b.modelPatterns);if(!c)return D(a,"model-not-in-combo");if(b.allowedNodeIds.length&&!b.allowedNodeIds.includes(String(a.nodeId)))return D(a,"node-not-allowed",{patternMatch:c});if(b.allowedPorts.length&&!b.allowedPorts.includes(Number(a.port)))return D(a,"port-not-allowed",{patternMatch:c});if(!1===a.okToRoute)return D(a,a.status||"target-not-routeable",{patternMatch:c});let d=Array.isArray(a.gpuIndices)&&a.gpuIndices.length>0,e=b.allowCpuFallback&&!b.requireGpu;if(b.requireGpu&&!d)return D(a,"gpu-required-no-gpu-scope",{patternMatch:c});if(!d&&!e)return D(a,"cpu-fallback-disabled",{patternMatch:c});if(!a.loaded&&!b.allowWakeSleeping)return D(a,"sleeping-wake-disabled",{patternMatch:c});if(!a.loaded){let d=F(a),e=E(a);if(b.maxWakeVramMb>0&&d>b.maxWakeVramMb)return D(a,"wake-vram-over-combo-limit",{patternMatch:c,wakeVramMb:d});if(b.maxWakeRamMb>0&&e>b.maxWakeRamMb)return D(a,"wake-ram-over-combo-limit",{patternMatch:c,wakeRamMb:e})}let f=H(a,b,c),g=H(a,b,c,{ignoreLoadedBias:!0});return{...a,eligible:!0,reason:a.loaded?"loaded-ok":"sleeping-ok",patternMatch:c,score:f,fitScore:g}})(a,d)),g=J(f.filter(a=>a.eligible)),h=f.filter(a=>!a.eligible),i=function(a=[],b={}){let c=String(b.selectionPolicy||"stable-fit").toLowerCase(),d=J(a);return"stable-fit"===c?function(a=[],b={}){let c=J(a),d=J(c.filter(a=>a.loaded)),e=J(c.filter(a=>!a.loaded)),f=d[0]||null,g=K(d)[0]||f,h=K(e)[0]||null,i=Math.max(0,w(b.wakeMargin,300));if(f){let a=h&&b.allowWakeSleeping&&Number(h.fitScore??h.score??0)>Number(g?.fitScore??f?.score??0)+i?h:null;return{selected:f,wakeCandidate:a,routeMode:a?"loaded-now-background-wake":"loaded-now",wakeMargin:i,loadedCount:d.length,sleepingCount:e.length}}return h&&b.allowWakeSleeping?{selected:null,wakeCandidate:h,routeMode:"background-wake-no-loaded",wakeMargin:i,loadedCount:0,sleepingCount:e.length}:{selected:null,wakeCandidate:null,routeMode:"no-loaded-target",wakeMargin:i,loadedCount:d.length,sleepingCount:e.length}}(d,b):{selected:d[0]||null,wakeCandidate:null,routeMode:d[0]?.loaded?"direct-loaded":"direct-wake",wakeMargin:Math.max(0,w(b.wakeMargin,300)),loadedCount:d.filter(a=>a.loaded).length,sleepingCount:d.filter(a=>!a.loaded).length}}(g,d);return{combo:c,selected:i.selected,wakeCandidate:i.wakeCandidate,routeMode:i.routeMode,wakeMargin:i.wakeMargin,loadedCount:i.loadedCount,sleepingCount:i.sleepingCount,eligible:g,rejected:h,counts:{targets:e.length,eligible:g.length,rejected:h.length,loaded:i.loadedCount,sleeping:i.sleepingCount}}}async function M(a,b={},c=12e4){let d=new AbortController,e=setTimeout(()=>d.abort(),Math.max(1e3,c));try{return await fetch(a,{...b,signal:d.signal,cache:"no-store"})}finally{clearTimeout(e)}}async function N(a){try{return await a.text()}catch{return""}}async function O(a,b={}){if(!a||a.loaded)return null;let c=a.requirement||{},d=w(c.effectiveMinRamFreeMb,0),e=w(c.effectiveMinVramFreeMb,0);return d<=0&&e<=0?null:(0,g.lz)({nodeId:a.nodeId,instanceId:a.instanceId,port:a.port,model:a.model,ramMb:d,vramMb:e,gpuIndices:a.gpuIndices||[],ttlMs:w(b?.metadata?.ollamaReservationTtlMs,6e4),reason:"ollama-local-combo-wake"})}async function P({body:a,combo:b,request:c,log:d,handleFallback:f}={}){let g=u(a?.model||b?.exposedModel||b?.name),i=await L(b,{maxAgeMs:5e3}),k=i.combo?.localOllama||{};i.wakeCandidate&&function(a,b={},c={},d=null){if(!a||a.loaded)return;let f=function(a={}){return[a.nodeId||"node",a.port||"port",a.model||"model"].join(":")}(a);if(l.has(f))return;let g=Date.now(),h=Number(m.get(f)||0);if(h>g)return d?.debug?.("OLLAMA_LOCAL_COMBO",`Skip background wake for ${a.model}; cooldown ${Math.ceil((h-g)/1e3)}s left`);let i=Math.max(1e3,w(b.backgroundWakeTimeoutMs,12e4)),j=Math.max(0,w(b.wakeFailureCooldownMs,12e4)),k=u(b.backgroundWakeKeepAlive||"15m"),n=`${a.endpoint}/api/generate`,o=(async()=>{try{await O(a,c).catch(()=>null),d?.info?.("OLLAMA_LOCAL_COMBO",`Background wake queued for ${a.nodeName}:${a.port} ${a.model}`);let b=await M(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:a.model,prompt:"",stream:!1,keep_alive:k})},i),f=await N(b);if(!b.ok)throw Error(`Background wake failed: HTTP ${b.status} ${f.slice(0,240)}`.trim());a.nodeId&&await (0,e.MR)(a.nodeId,{force:!0,timeoutMs:1e4}).catch(()=>null),d?.info?.("OLLAMA_LOCAL_COMBO",`Background wake complete for ${a.nodeName}:${a.port} ${a.model}`)}catch(b){j>0&&m.set(f,Date.now()+j),d?.warn?.("OLLAMA_LOCAL_COMBO",`Background wake failed for ${a.nodeName}:${a.port} ${a.model}`,{error:b?.message||String(b)})}finally{l.delete(f)}})();l.set(f,o)}(i.wakeCandidate,k,a,d);let n=i.selected;if(!n){let b=i.combo?.localOllama?.fallbackCombo;if(b&&"function"==typeof f)return d?.warn?.("OLLAMA_LOCAL_COMBO",`No loaded local target for ${i.combo.name}; waking candidate in background and falling back to ${b}`),f({...a,model:b},b,i);let c=i.wakeCandidate?{nodeName:i.wakeCandidate.nodeName,port:i.wakeCandidate.port,model:i.wakeCandidate.model,endpoint:i.wakeCandidate.endpoint,score:i.wakeCandidate.score}:null;return new Response(JSON.stringify({error:{message:c?`Local Ollama model is waking in background for ${i.combo?.name||a?.model||"local combo"}. Retry shortly or configure a fallback combo.`:`No eligible local Ollama target for ${i.combo?.name||a?.model||"local combo"}`,routeMode:i.routeMode,warming:c,preview:{counts:i.counts,rejected:i.rejected.slice(0,20).map(a=>({nodeName:a.nodeName,port:a.port,model:a.model,reason:a.reason,status:a.status}))}}}),{status:503,headers:{"Content-Type":"application/json",...c?{"Retry-After":"10"}:{}}})}String(k.selectionPolicy||"").toLowerCase().includes("stable")||await O(n,a);let q=function(a,b={}){let c="/v1/chat/completions";try{c=new URL(a.url).pathname}catch{}return c.includes("/embeddings")?"/v1/embeddings":"/v1/chat/completions"}(c,a),t=`${n.endpoint}${q}`,v={...a,model:n.model},x=a?.include_reasoning===!0||a?.metadata?.include_reasoning===!0,y=i.combo?.exposedModel||i.combo?.name||g,z=`${n.nodeId||"node"}:${n.port||"port"}`,A=Date.now(),B=null;d?.info?.("OLLAMA_LOCAL_COMBO",`${i.combo.name} -> ${n.nodeName}:${n.port} ${n.model} (${i.routeMode||n.reason}, score=${n.score})`),(0,h.uw)(n.model,j,z,!0),await (0,h.E5)({model:n.model,provider:j,connectionId:z,status:"PENDING"}).catch(()=>{});try{let b,d;B=await s({body:a,requestedModel:g,target:n,request:c,routePath:q}),B?.logTargetRequest?.(t,{"Content-Type":"application/json"},v);let e=await fetch(t,{method:"POST",headers:((b=new Headers).set("Content-Type","application/json"),(d=c?.headers?.get?.("accept"))&&b.set("Accept",d),b),body:JSON.stringify(v),cache:"no-store",signal:c?.signal}),f=e.headers.get("content-type")||"";if(e.ok&&f.includes("text/event-stream")&&e.body)return function({upstreamResponse:a,includeReasoning:b=!1,onComplete:c,onError:d}){let e=new Headers(a.headers);e.set("Content-Type","text/event-stream; charset=utf-8"),e.set("Cache-Control","no-cache, no-transform"),e.set("Connection","keep-alive"),e.set("X-Accel-Buffering","no"),e.delete("content-length"),e.delete("content-encoding");let f=new TextEncoder,g=new TextDecoder,h="",i="";return new Response(new ReadableStream({async start(e){let j=a.body?.getReader?.();if(!j){let a=Error("Ollama local combo returned an empty stream");Promise.resolve(d?.(a,i)).catch(()=>{}),e.error(a);return}let k=a=>{a&&(i+=a,e.enqueue(f.encode(a)))},l=()=>{let a=h.split(/\r?\n/);for(let c of(h=a.pop()||"",a))k(`${p(c,b)}
|
|
2
|
-
`)};try{for(;;){let{value:a,done:b}=await j.read();if(b)break;h+=g.decode(a,{stream:!0}),l()}let a=g.decode();a&&(h+=a),h&&(k(p(h,b)),h=""),Promise.resolve(c?.(i)).catch(()=>{}),e.close()}catch(a){Promise.resolve(d?.(a,i)).catch(()=>{}),e.error(a)}},cancel(a){Promise.resolve(d?.(a||Error("Client cancelled Ollama local combo stream"),i)).catch(()=>{})}}),{status:a.status,statusText:a.statusText,headers:e})}({upstreamResponse:e,includeReasoning:x,onComplete:async b=>{let d=Date.now()-A;B?.logProviderResponse?.(e.status,e.statusText,e.headers,b),B?.logConvertedResponse?.(b),(0,h.uw)(n.model,j,z,!1),await r({requestedModel:g,comboName:y,target:n,body:a,upstreamBody:v,responseBody:b,status:e.status,latencyMs:d,request:c,routePath:q})},onError:async(b,d)=>{let e=Date.now()-A,f=b?.message||String(b||"Ollama local combo stream failed");B?.logError?.(b,v),(0,h.uw)(n.model,j,z,!1,!0),await r({requestedModel:g,comboName:y,target:n,body:a,upstreamBody:v,responseBody:d||null,status:502,latencyMs:e,request:c,routePath:q,error:f})}});let i=await e.text().catch(()=>""),k=null;try{k=i?JSON.parse(i):null}catch{}let{response:l,bodyForLog:m}=function({upstreamResponse:a,rawText:b,parsed:c,includeReasoning:d=!1}){let e=new Headers(a.headers);if(e.set("Content-Type",e.get("Content-Type")||"application/json; charset=utf-8"),e.delete("content-length"),e.delete("content-encoding"),(e.get("content-type")||"").includes("text/event-stream")){let c=function(a,b=!1){return b?a:String(a||"").split(/\r?\n/).map(a=>p(a,b)).join("\n")}(b,d);return e.set("Content-Type","text/event-stream; charset=utf-8"),{response:new Response(c,{status:a.status,statusText:a.statusText,headers:e}),bodyForLog:c}}if(c&&"object"==typeof c){let b=o(c,d);return e.set("Content-Type","application/json; charset=utf-8"),{response:new Response(JSON.stringify(b),{status:a.status,statusText:a.statusText,headers:e}),bodyForLog:b}}return{response:new Response(b,{status:a.status,statusText:a.statusText,headers:e}),bodyForLog:b}}({upstreamResponse:e,rawText:i,parsed:k,includeReasoning:x}),u=Date.now()-A;if(B?.logProviderResponse?.(e.status,e.statusText,e.headers,k||i),B?.logConvertedResponse?.(m),!e.ok){let b=k?.error?.message||k?.error||k?.message||i||e.statusText||"Ollama local combo target failed";return(0,h.uw)(n.model,j,z,!1,!0),await r({requestedModel:g,comboName:y,target:n,body:a,upstreamBody:v,responseBody:m,status:e.status,latencyMs:u,request:c,routePath:q,error:String(b)}),l}return(0,h.uw)(n.model,j,z,!1),await r({requestedModel:g,comboName:y,target:n,body:a,upstreamBody:v,responseBody:m,status:e.status,latencyMs:u,request:c,routePath:q}),l}catch(k){let b=Date.now()-A;(0,h.uw)(n.model,j,z,!1,!0),B?.logError?.(k,v),await r({requestedModel:g,comboName:y,target:n,body:a,upstreamBody:v,responseBody:null,status:502,latencyMs:b,request:c,routePath:q,error:k?.message||String(k)});let e=i.combo?.localOllama?.fallbackCombo;if(e&&"function"==typeof f)return d?.warn?.("OLLAMA_LOCAL_COMBO",`Local target failed; falling back to ${e}`,{error:k?.message}),f({...a,model:e},e,i);return new Response(JSON.stringify({error:{message:k?.message||"Ollama local combo request failed"}}),{status:502,headers:{"Content-Type":"application/json"}})}}},69773:(a,b,c)=>{function d(a,b=0){let c=Number(a);return Number.isFinite(c)?c:b}function e(a){return Array.isArray(a)?a:[]}function f(a,b){return`http://${a.host}:${b.port}`}function g(a=[]){let b=[];for(let c of a)if(c?.enabled){for(let a of c.lastEvaluation?.instances||[])if(function(a={},b={}){let c=function(a={}){let b=e(a.instances).filter(a=>a&&!1!==a.enabled).map(a=>Number(a.port)).filter(a=>Number.isFinite(a)&&a>0);if(b.length)return new Set(b);let c=e(a.ollamaPorts).map(a=>Number(a)).filter(a=>Number.isFinite(a)&&a>0);return c.length?new Set(c):null}(a);if(!c)return!0;let d=Number(b.port);return Number.isFinite(d)&&c.has(d)}(c,a)&&a.config?.enabled!==!1&&!1!==a.alive)for(let g of a.modelReadiness||[])b.push(function(a,b,c){let g=b.config||{},h=c.hardwareScope||b.hardwareScope||{},i=c.requirement||null;return{id:`${a.id}:${b.port}:${c.model}`,nodeId:a.id,nodeName:a.name,nodeHost:a.host,instanceId:g.id||b.id||`ollama-${b.port}`,instanceName:g.name||b.name||`Ollama :${b.port}`,port:Number(b.port),endpoint:f(a,b),baseUrl:b.baseUrl||f(a,b),model:c.model,okToRoute:!1!==c.okToRoute,loaded:!0===c.loaded,loadedName:c.loadedName||null,loadedMatch:c.loadedMatch||null,status:c.status,reason:c.reason,ruleSource:c.ruleSource,ruleKey:c.ruleKey,requirement:i,ramAvailableMb:d(c.ramAvailableMb,0),vramFreeMb:d(c.vramFreeMb,0),gpuMode:g.gpuMode||"auto",gpuIndices:e(h.gpuIndices).map(Number).filter(a=>Number.isInteger(a)&&a>=0),candidateGpuIndices:e(h.candidateGpuIndices).map(Number).filter(a=>Number.isInteger(a)&&a>=0),allowMultiGpuSplit:!0===g.allowMultiGpuSplit,hardwareScope:h,runtimeType:b.runtimeType||null,serviceName:b.serviceName||null,containerName:b.containerName||null,pid:b.pid||null,configuredGpuIndices:e(b.configuredGpuIndices),configuredGpuSource:b.configuredGpuSource||null,runtimeGpuIndices:e(b.runtimeGpuIndices),detectedGpuIndices:e(b.detectedGpuIndices),detectedGpuBindingSource:b.detectedGpuBindingSource||null,effectiveGpuIndices:e(b.effectiveGpuIndices),effectiveGpuSource:b.effectiveGpuSource||null,temperatureC:h.gpus?.length?Math.max(...h.gpus.map(a=>d(a.temperatureC,0))):null,updatedAt:a.lastStatusAt||null}}(c,a,g))}return b}c.d(b,{o:()=>g})}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=2549,exports.ids=[2549],exports.modules={12557:(a,b,c)=>{c.d(b,{Bl:()=>j,Qo:()=>f,S5:()=>l,hk:()=>e,kJ:()=>k});var d=c(3662);function e(a,b,c=0){let f=b?("string"==typeof b?b:JSON.stringify(b)).toLowerCase():"";for(let b of d.t2)if(b.text&&f&&f.includes(b.text)||b.status&&b.status===a){if(b.backoff){let a=Math.min(c+1,d.EQ.maxLevel);return{shouldFallback:!0,cooldownMs:function(a=0){let b=Math.max(0,a-1);return Math.min(d.EQ.base*Math.pow(2,b),d.EQ.max)}(a),newBackoffLevel:a}}return{shouldFallback:!0,cooldownMs:b.cooldownMs}}return{shouldFallback:!0,cooldownMs:d.wf}}function f(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}let g="modelLock_",h=`${g}__all`;function i(a){return a?`${g}${a}`:h}function j(a,b){let c=a[i(b)]||a[h];return!!c&&new Date(c).getTime()>Date.now()}function k(a){if(!a)return null;let b=null,c=Date.now();for(let[d,e]of Object.entries(a)){if(!d.startsWith(g)||!e)continue;let a=new Date(e).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}function l(a,b){return{[i(a)]:new Date(Date.now()+b).toISOString()}}},43659:(a,b,c)=>{c.d(b,{A1:()=>g,lR:()=>i,wO:()=>h,yj:()=>e,zL:()=>f});var d=c(3662);function e(a,b){let c;return new Response(JSON.stringify((c=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""}),{error:{message:b||d.O[a]||"An error occurred",type:c.type,code:c.code}})),{status:a,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}async function f(a,b=null){let c="";try{c=await a.text()}catch{c=""}if(b&&"function"==typeof b.parseError)try{let e=b.parseError(a,c);if(e&&"object"==typeof e){let b=e.message||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:e.status||a.status,message:b,resetsAtMs:e.resetsAtMs}}}catch{}let e="";try{let a=JSON.parse(c);e=a.error?.message||a.message||a.error||c}catch{e=c}let g=("string"==typeof e?e:JSON.stringify(e))||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:g}}function g(a,b,c){return{success:!1,status:a,error:b,resetsAtMs:c,response:e(a,b)}}function h(a,b,c,d){let e=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1);return new Response(JSON.stringify({error:{message:`${b} (${d})`}}),{status:a,headers:{"Content-Type":"application/json","Retry-After":String(e)}})}function i(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error",g=a.cause?.code,h=a.cause?.message,i=g||h?` (cause: ${[g,h].filter(Boolean).join(": ")})`:"";return`[${e}]: ${f}${i}`}},74177:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{PY:()=>u,Re:()=>s,Su:()=>t,exchangeTokens:()=>r,extractCodexAccountInfo:()=>o,kP:()=>q,sO:()=>p});var e=c(48895),f=c(55511),g=c.n(f),h=c(13808),i=c(92990),j=c(73159),k=a([e]);e=(k.then?(await k)():k)[0];let v=null;function l(a,b){let c,d=String(a||"").trim();if(!d)throw Error(`xai discovery ${b} is empty`);try{c=new URL(d)}catch(a){throw Error(`xai discovery ${b} is invalid: ${a.message}`)}if("https:"!==c.protocol)throw Error(`xai discovery ${b} must use https: ${d}`);let e=c.hostname.toLowerCase().trim();if("x.ai"!==e&&!e.endsWith(".x.ai"))throw Error(`xai discovery ${b} host ${e} is not on x.ai`);return d}async function m(){if(v)return v;try{let a=await fetch(j.oT.discoveryUrl,{headers:{Accept:"application/json"}});if(a.ok){let b=await a.json();return v={authorizeUrl:l(b.authorization_endpoint,"authorization_endpoint"),tokenUrl:l(b.token_endpoint,"token_endpoint")}}}catch{}return v={authorizeUrl:j.oT.authorizeUrl,tokenUrl:j.oT.tokenUrl}}function n(a){try{if(!a||"string"!=typeof a)return null;let b=a.split(".");if(3!==b.length)return null;let c=b[1].replace(/-/g,"+").replace(/_/g,"/"),d=(4-c.length%4)%4,e=c+"=".repeat(d);return JSON.parse(Buffer.from(e,"base64").toString("utf8"))}catch{return null}}function o(a){let b=n(a);if(!b)return{};let c=b["https://api.openai.com/auth"]||{};return{email:b.email,chatgptAccountId:c.chatgpt_account_id||b.account_id,chatgptPlanType:c.chatgpt_plan_type||b.plan_type}}let w={claude:{config:i.OV,flowType:"authorization_code_pkce",buildAuthUrl:(a,b,c,d)=>{let e=new URLSearchParams({code:"true",client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),code_challenge:d,code_challenge_method:a.codeChallengeMethod,state:c});return`${a.authorizeUrl}?${e.toString()}`},exchangeToken:async(a,b,c,d,e)=>{let f=b,g="";if(f.includes("#")){let a=f.split("#");f=a[0],g=a[1]||""}let h=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({code:f,state:g||e,grant_type:"authorization_code",client_id:a.clientId,redirect_uri:c,code_verifier:d})});if(!h.ok){let a=await h.text();throw Error(`Token exchange failed: ${a}`)}return await h.json()},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope})},codex:{config:i.DI,flowType:"authorization_code_pkce",fixedPort:1455,callbackPath:"/auth/callback",buildAuthUrl:(a,b,c,d)=>{let e={response_type:"code",client_id:a.clientId,redirect_uri:b,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod,...a.extraParams,state:c},f=Object.entries(e).map(([a,b])=>`${a}=${encodeURIComponent(b)}`).join("&");return`${a.authorizeUrl}?${f}`},exchangeToken:async(a,b,c,d)=>{let e=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,code:b,redirect_uri:c,code_verifier:d})});if(!e.ok){let a=await e.text();throw Error(`Token exchange failed: ${a}`)}return await e.json()},mapTokens:a=>{let b=o(a.id_token),c={accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in};return b.email&&(c.email=b.email),(b.chatgptAccountId||b.chatgptPlanType)&&(c.providerSpecificData={chatgptAccountId:b.chatgptAccountId,chatgptPlanType:b.chatgptPlanType}),c}},xai:{config:j.oT,flowType:"authorization_code_pkce",fixedPort:j.oT.loopbackPort,callbackPath:j.oT.callbackPath,pkceVerifierBytes:j.Ue,prepareConfig:async a=>{let b=await m();return{...a,authorizeUrl:b.authorizeUrl,tokenUrl:b.tokenUrl}},buildAuthUrl:(a,b,c,d)=>{let e=g().randomBytes(16).toString("hex"),f={response_type:"code",client_id:a.clientId,redirect_uri:b,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod,state:c,nonce:e,plan:"generic",referrer:"cli-proxy-api"},h=Object.entries(f).map(([a,b])=>`${a}=${encodeURIComponent(b)}`).join("&");return`${a.authorizeUrl}?${h}`},exchangeToken:async(a,b,c,d)=>{let e=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,code:b,redirect_uri:c,code_verifier:d})});if(!e.ok){let a=await e.text();throw Error(`xAI token exchange failed: ${a}`)}return await e.json()},mapTokens:a=>{let b={accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope},c=function(a){if(!a||"string"!=typeof a)return;let b=a.split(".");if(3===b.length)try{let a=b[1].replace(/-/g,"+").replace(/_/g,"/"),c=(4-a.length%4)%4,d=Buffer.from(a+"=".repeat(c),"base64").toString("utf8"),e=JSON.parse(d);return e.email||e.preferred_username||e.sub||void 0}catch{return}}(a.id_token);return c&&(b.email=c),a.id_token&&(b.providerSpecificData={idToken:a.id_token}),b}},"gemini-cli":{config:i.LT,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),state:c,access_type:"offline",prompt:"consent"});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,client_secret:a.clientSecret,code:b,redirect_uri:c})});if(!d.ok){let a=await d.text();throw Error(`Token exchange failed: ${a}`)}return await d.json()},postExchange:async a=>{let b=await fetch(`${i.LT.userInfoUrl}?alt=json`,{headers:{Authorization:`Bearer ${a.access_token}`}}),c=b.ok?await b.json():{},d="";try{let b=await fetch("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${a.access_token}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:(0,i.cD)(),mode:1})});if(b.ok){let a=await b.json();d=a.cloudaicompanionProject?.id||a.cloudaicompanionProject||""}}catch(a){console.log("Failed to fetch project ID:",a)}return{userInfo:c,projectId:d}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,email:b?.userInfo?.email,projectId:b?.projectId})},antigravity:{config:i.YT,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),state:c,access_type:"offline",prompt:"consent"});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,client_secret:a.clientSecret,code:b,redirect_uri:c})});if(!d.ok){let a=await d.text();throw Error(`Token exchange failed: ${a}`)}return await d.json()},postExchange:async a=>{let b={Authorization:`Bearer ${a.access_token}`,"Content-Type":"application/json","User-Agent":i.YT.loadCodeAssistUserAgent,"X-Goog-Api-Client":i.YT.loadCodeAssistApiClient,"Client-Metadata":i.YT.loadCodeAssistClientMetadata,"x-request-source":"local"},c=(0,i.cD)(),d=await fetch(`${i.YT.userInfoUrl}?alt=json`,{headers:{Authorization:`Bearer ${a.access_token}`,"x-request-source":"local"}}),e=d.ok?await d.json():{},f="",g="legacy-tier";try{let a=await fetch(i.YT.loadCodeAssistEndpoint,{method:"POST",headers:b,body:JSON.stringify({metadata:c})});if(a.ok){let b=await a.json();if(f=b.cloudaicompanionProject?.id||b.cloudaicompanionProject||"",Array.isArray(b.allowedTiers)){for(let a of b.allowedTiers)if(a.isDefault&&a.id){g=a.id.trim();break}}}}catch(a){console.log("Failed to load code assist:",a)}return f&&(async()=>{for(let a=0;a<10;a++){try{let a=await fetch(i.YT.onboardUserEndpoint,{method:"POST",headers:b,body:JSON.stringify({tierId:g,metadata:c})});if(a.ok){let b=await a.json();if(!0===b.done)break}}catch(a){break}await new Promise(a=>setTimeout(a,5e3))}})().catch(()=>{}),{userInfo:e,projectId:f}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,email:b?.userInfo?.email,projectId:b?.projectId})},iflow:{config:i.ZL,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({loginMethod:a.extraParams.loginMethod,type:a.extraParams.type,redirect:b,state:c,client_id:a.clientId});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=Buffer.from(`${a.clientId}:${a.clientSecret}`).toString("base64"),e=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",Authorization:`Basic ${d}`},body:new URLSearchParams({grant_type:"authorization_code",code:b,redirect_uri:c,client_id:a.clientId,client_secret:a.clientSecret})});if(!e.ok){let a=await e.text();throw Error(`Token exchange failed: ${a}`)}return await e.json()},postExchange:async a=>{let b=await fetch(`${i.ZL.userInfoUrl}?accessToken=${encodeURIComponent(a.access_token)}`,{headers:{Accept:"application/json"}});if(!b.ok){let a=await b.text();throw Error(`Failed to fetch user info: ${a}`)}let c=await b.json();if(!c.success)throw Error(`User info request failed: ${c.message||"Unknown error"}`);let d=c.data||{};if(!d.apiKey||""===d.apiKey.trim())throw Error("Empty API key returned from iFlow");if(!(d.email?.trim()||d.phone?.trim()))throw Error("Missing account email/phone in user info");return{userInfo:d}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,apiKey:b?.userInfo?.apiKey,email:b?.userInfo?.email||b?.userInfo?.phone,displayName:b?.userInfo?.nickname||b?.userInfo?.name})},qoder:{config:i.hF,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({client_id:a.clientId,response_type:"code",redirect_uri:b,state:c});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=Buffer.from(`${a.clientId}:${a.clientSecret}`).toString("base64"),e=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",Authorization:`Basic ${d}`},body:new URLSearchParams({grant_type:"authorization_code",code:b,redirect_uri:c,client_id:a.clientId,client_secret:a.clientSecret})});if(!e.ok){let a=await e.text();throw Error(`Token exchange failed: ${a}`)}return await e.json()},postExchange:async a=>{let b=await fetch(`${i.hF.userInfoUrl}?accessToken=${encodeURIComponent(a.access_token)}`,{headers:{Accept:"application/json"}});if(!b.ok){let a=await b.text();throw Error(`Failed to fetch user info: ${a}`)}let c=await b.json();if(!c.success)throw Error(`User info request failed: ${c.message||"Unknown error"}`);let d=c.data||{};if(!d.apiKey||""===d.apiKey.trim())throw Error("Empty API key returned from Qoder");if(!(d.email?.trim()||d.phone?.trim()))throw Error("Missing account email/phone in user info");return{userInfo:d}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,apiKey:b?.userInfo?.apiKey,email:b?.userInfo?.email||b?.userInfo?.phone,displayName:b?.userInfo?.nickname||b?.userInfo?.name})},qwen:{config:i.Hp,flowType:"device_code",requestDeviceCode:async(a,b)=>{let c=await fetch(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,scope:a.scope,code_challenge:b,code_challenge_method:a.codeChallengeMethod})});if(!c.ok){let a=await c.text();throw Error(`Device code request failed: ${a}`)}return await c.json()},pollToken:async(a,b,c)=>{let d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",client_id:a.clientId,device_code:b,code_verifier:c})});return{ok:d.ok,data:await d.json()}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,providerSpecificData:{resourceUrl:a.resource_url}})},github:{config:i.Nu,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,scope:a.scopes})});if(!b.ok){let a=await b.text();throw Error(`Device code request failed: ${a}`)}return await b.json()},pollToken:async(a,b)=>{let c,d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,device_code:b,grant_type:"urn:ietf:params:oauth:grant-type:device_code"})});try{c=await d.json()}catch(b){let a=await d.text();c={error:"invalid_response",error_description:a}}return{ok:d.ok,data:c}},postExchange:async a=>{let b=await fetch(i.Nu.copilotTokenUrl,{headers:{Authorization:`Bearer ${a.access_token}`,Accept:"application/json","X-GitHub-Api-Version":i.Nu.apiVersion,"User-Agent":i.Nu.userAgent}}),c=b.ok?await b.json():{},d=await fetch(i.Nu.userInfoUrl,{headers:{Authorization:`Bearer ${a.access_token}`,Accept:"application/json","X-GitHub-Api-Version":i.Nu.apiVersion,"User-Agent":i.Nu.userAgent}}),e=d.ok?await d.json():{};return{copilotToken:c,userInfo:e}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,providerSpecificData:{copilotToken:b?.copilotToken?.token,copilotTokenExpiresAt:b?.copilotToken?.expires_at,githubUserId:b?.userInfo?.id,githubLogin:b?.userInfo?.login,githubName:b?.userInfo?.name,githubEmail:b?.userInfo?.email}})},kiro:{config:i.Tx,flowType:"device_code",requestDeviceCode:async(a,b,c={})=>{let d=("string"==typeof c.region?c.region.trim():"")||"us-east-1",e=("string"==typeof c.startUrl?c.startUrl.trim():"")||a.startUrl,f="idc"===c.authMethod?"idc":"builder-id",g=`https://oidc.${d}.amazonaws.com/client/register`,h=`https://oidc.${d}.amazonaws.com/device_authorization`,i=await fetch(g,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientName:a.clientName,clientType:a.clientType,scopes:a.scopes,grantTypes:a.grantTypes,issuerUrl:a.issuerUrl})});if(!i.ok){let a=await i.text();throw Error(`Client registration failed: ${a}`)}let j=await i.json(),k=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:j.clientId,clientSecret:j.clientSecret,startUrl:e})});if(!k.ok){let a=await k.text();throw Error(`Device authorization failed: ${a}`)}let l=await k.json();return{device_code:l.deviceCode,user_code:l.userCode,verification_uri:l.verificationUri,verification_uri_complete:l.verificationUriComplete,expires_in:l.expiresIn,interval:l.interval||5,_clientId:j.clientId,_clientSecret:j.clientSecret,_region:d,_authMethod:f,_startUrl:e}},pollToken:async(a,b,c,d)=>{let e,f=d?._region||"us-east-1",g=`https://oidc.${f}.amazonaws.com/token`,h=await fetch(g,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:d?._clientId,clientSecret:d?._clientSecret,deviceCode:b,grantType:"urn:ietf:params:oauth:grant-type:device_code"})});try{e=await h.json()}catch(b){let a=await h.text();e={error:"invalid_response",error_description:a}}return e.accessToken?{ok:!0,data:{access_token:e.accessToken,refresh_token:e.refreshToken,expires_in:e.expiresIn,profile_arn:e?.profileArn||null,_clientId:d?._clientId,_clientSecret:d?._clientSecret,_region:d?._region,_authMethod:d?._authMethod,_startUrl:d?._startUrl}}:{ok:!1,data:{error:e.error||"authorization_pending",error_description:e.error_description||e.message}}},mapTokens:a=>{let b=function(a){let b=n(a);if(b)return b.email||b.preferred_username||b.sub||void 0}(a.access_token);return{accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,email:b,providerSpecificData:{profileArn:a?.profile_arn||null,clientId:a._clientId,clientSecret:a._clientSecret,region:a._region||"us-east-1",authMethod:a._authMethod||"builder-id",startUrl:a._startUrl||i.Tx.startUrl}}}},cursor:{config:i.WN,flowType:"import_token",mapTokens:a=>({accessToken:a.accessToken,refreshToken:null,expiresIn:a.expiresIn||86400,providerSpecificData:{machineId:a.machineId,authMethod:"imported"}})},"kimi-coding":{config:i.t,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId})});if(!b.ok){let a=await b.text();throw Error(`Device code request failed: ${a}`)}let c=await b.json();return{device_code:c.device_code,user_code:c.user_code,verification_uri:c.verification_uri||"https://www.kimi.com/code/authorize_device",verification_uri_complete:c.verification_uri_complete||`https://www.kimi.com/code/authorize_device?user_code=${c.user_code}`,expires_in:c.expires_in,interval:c.interval||5}},pollToken:async(a,b)=>{let c,d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",client_id:a.clientId,device_code:b})});try{c=await d.json()}catch(b){let a=await d.text();c={error:"invalid_response",error_description:a}}return{ok:d.ok,data:c}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in})},kilocode:{config:i.MZ,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(a.initiateUrl,{method:"POST",headers:{"Content-Type":"application/json"}});if(!b.ok){if(429===b.status)throw Error("Too many pending authorization requests. Please try again later.");let a=await b.text();throw Error(`Device auth initiation failed: ${a}`)}let c=await b.json();return{device_code:c.code,user_code:c.code,verification_uri:c.verificationUrl,verification_uri_complete:c.verificationUrl,expires_in:c.expiresIn||300,interval:3}},pollToken:async(a,b)=>{let c=await fetch(`${a.pollUrlBase}/${b}`);if(202===c.status)return{ok:!1,data:{error:"authorization_pending"}};if(403===c.status)return{ok:!1,data:{error:"access_denied",error_description:"Authorization denied by user"}};if(410===c.status)return{ok:!1,data:{error:"expired_token",error_description:"Authorization code expired"}};if(!c.ok)return{ok:!1,data:{error:"poll_failed",error_description:`Poll failed: ${c.status}`}};let d=await c.json();if("approved"===d.status&&d.token){let b=null;try{let c=await fetch(`${a.apiBaseUrl}/api/profile`,{headers:{Authorization:`Bearer ${d.token}`}});if(c.ok){let a=await c.json();b=a.organizations?.[0]?.id||null}}catch{}return{ok:!0,data:{access_token:d.token,_userEmail:d.userEmail,_orgId:b}}}return{ok:!1,data:{error:"authorization_pending"}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:null,expiresIn:null,email:a._userEmail,...a._orgId?{providerSpecificData:{orgId:a._orgId}}:{}})},cline:{config:i.lB,flowType:"authorization_code",buildAuthUrl:(a,b)=>{let c=new URLSearchParams({client_type:"extension",callback_url:b,redirect_uri:b});return`${a.authorizeUrl}?${c.toString()}`},exchangeToken:async(a,b,c)=>{try{let a=b,c=4-a.length%4;4!==c&&(a+="=".repeat(c));let d=Buffer.from(a,"base64").toString("utf-8"),e=d.lastIndexOf("}");if(-1===e)throw Error("No JSON found in decoded code");let f=JSON.parse(d.substring(0,e+1));return{access_token:f.accessToken,refresh_token:f.refreshToken,email:f.email,firstName:f.firstName,lastName:f.lastName,expires_at:f.expiresAt}}catch(f){let d=await fetch(a.tokenExchangeUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:b,client_type:"extension",redirect_uri:c})});if(!d.ok){let a=await d.text();throw Error(`Cline token exchange failed: ${a}`)}let e=await d.json();return{access_token:e.data?.accessToken||e.accessToken,refresh_token:e.data?.refreshToken||e.refreshToken,email:e.data?.userInfo?.email||"",expires_at:e.data?.expiresAt||e.expiresAt}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_at?Math.floor((new Date(a.expires_at).getTime()-Date.now())/1e3):3600,email:a.email,providerSpecificData:{firstName:a.firstName,lastName:a.lastName}})},gitlab:{config:i.f7,flowType:"authorization_code_pkce",buildAuthUrl:(a,b,c,d,e={})=>{let f=e.baseUrl||a.defaultBaseUrl,g=e.clientId||"",h=new URLSearchParams({client_id:g,redirect_uri:b,response_type:"code",state:c,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod});return`${f}${a.authorizeUrlPath}?${h.toString()}`},exchangeToken:async(a,b,c,d,e,f={})=>{let g=f.baseUrl||a.defaultBaseUrl,h=f.clientId||"",i=f.clientSecret||"",j=new URLSearchParams({client_id:h,grant_type:"authorization_code",code:b,redirect_uri:c,code_verifier:d});i&&j.set("client_secret",i);let k=await fetch(`${g}${a.tokenUrlPath}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:j.toString()});if(!k.ok)throw Error(`GitLab token exchange failed: ${await k.text()}`);let l=await k.json(),m=await fetch(`${g}${a.userInfoUrlPath}`,{headers:{Authorization:`Bearer ${l.access_token}`}}),n=m.ok?await m.json():{};return{...l,_user:n,_baseUrl:g,_clientId:h}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,providerSpecificData:{username:a._user?.username||"",email:a._user?.email||a._user?.public_email||"",name:a._user?.name||"",baseUrl:a._baseUrl,clientId:a._clientId,authKind:"oauth"}})},codebuddy:{config:i.Nl,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(`${a.stateUrl}?platform=${a.platform}`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"copilot.tencent.com","X-No-Authorization":"true","X-No-User-Id":"true","X-Product":"SaaS"},body:"{}"});if(!b.ok)throw Error(`CodeBuddy state request failed: ${await b.text()}`);let c=await b.json();if(0!==c.code||!c.data?.state||!c.data?.authUrl)throw Error(`CodeBuddy state error: ${c.msg||"missing state/authUrl"}`);return{device_code:c.data.state,verification_uri:c.data.authUrl,user_code:"",interval:a.pollInterval/1e3,_isCodeBuddy:!0}},pollToken:async(a,b)=>{let c=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"copilot.tencent.com","X-No-Authorization":"true","X-No-User-Id":"true","X-Product":"SaaS"},body:JSON.stringify({state:b})});if(!c.ok)return{ok:!1,data:{error:"request_failed"}};let d=await c.json();return 0===d.code&&d.data?.accessToken?{ok:!0,data:{access_token:d.data.accessToken,refresh_token:d.data.refreshToken||"",token_type:d.data.tokenType||"Bearer"}}:11217===d.code?{ok:!0,data:{error:"authorization_pending"}}:{ok:!1,data:{error:d.msg||"unknown_error"}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:86400,providerSpecificData:{}})}};function p(a){let b=w[a];if(!b)throw Error(`Unknown provider: ${a}`);return b}async function q(a,b,c){let d=p(a),e=d.prepareConfig?await d.prepareConfig(d.config,c||{}):d.config,{codeVerifier:f,codeChallenge:g,state:i}=(0,h.lz)(d.pkceVerifierBytes);return{authUrl:"device_code"===d.flowType?null:"authorization_code_pkce"===d.flowType?d.buildAuthUrl(e,b,i,g,c||{}):d.buildAuthUrl(e,b,i,void 0,c||{}),state:i,codeVerifier:f,codeChallenge:g,redirectUri:b,flowType:d.flowType,fixedPort:d.fixedPort,callbackPath:d.callbackPath||"/callback"}}async function r(a,b,c,d,e,f){let g=p(a),h=g.prepareConfig?await g.prepareConfig(g.config,f||{}):g.config,i=await g.exchangeToken(h,b,c,d,e,f||{}),j=null;return g.postExchange&&(j=await g.postExchange(i)),g.mapTokens(i,j)}async function s(a,b,c){let d=p(a);if("device_code"!==d.flowType)throw Error(`Provider ${a} does not support device code flow`);return await d.requestDeviceCode(d.config,b,c||{})}async function t(a,b,c,d){let e=p(a);if("device_code"!==e.flowType)throw Error(`Provider ${a} does not support device code flow`);let f=await e.pollToken(e.config,b,c,d);if(f.ok)if(f.data.access_token){let a=null;return e.postExchange&&(a=await e.postExchange(f.data)),{success:!0,tokens:e.mapTokens(f.data,a)}}else if("authorization_pending"===f.data.error||"slow_down"===f.data.error)return{success:!1,error:f.data.error,errorDescription:f.data.error_description||f.data.message,pending:"authorization_pending"===f.data.error};else return{success:!1,error:f.data.error||"no_access_token",errorDescription:f.data.error_description||f.data.message||"No access token received"};return{success:!1,error:f.data.error,errorDescription:f.data.error_description}}let x=!1;async function u(){if(!x){x=!0;try{let{getProviderConnections:a,updateProviderConnection:b}=await Promise.resolve().then(c.bind(c,89718));for(let c of(await a()).filter(a=>{if("codex"!==a.provider||"oauth"!==a.authType||!a.idToken)return!1;let b=!!a.email,c=!!a.providerSpecificData?.chatgptAccountId;return!b||!c})){let a=o(c.idToken);if(!a.email&&!a.chatgptAccountId)continue;let d={};!c.email&&a.email&&(d.email=a.email),(a.chatgptAccountId||a.chatgptPlanType)&&(d.providerSpecificData={...c.providerSpecificData||{},chatgptAccountId:a.chatgptAccountId,chatgptPlanType:a.chatgptPlanType}),Object.keys(d).length&&await b(c.id,d)}}catch(a){x=!1,console.log("backfillCodexEmails failed:",a?.message||a)}}}d()}catch(a){d(a)}})}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=6774,exports.ids=[6774],exports.modules={6774:(a,b,c)=>{c.d(b,{U1:()=>x,Vs:()=>y,YT:()=>B,iJ:()=>A,op:()=>C,ri:()=>z});var d=c(79748),e=c.n(d),f=c(33873),g=c.n(f),h=c(55511),i=c.n(h),j=c(21820),k=c.n(j),l=c(55013);let m=process.env.DATA_DIR||process.env.BLUEROUTER_DATA_DIR||g().join(k().homedir(),".bluerouter"),n=g().join(m,"ollama-nodes.json");async function o(){await e().mkdir(m,{recursive:!0});try{await e().access(n)}catch{await e().writeFile(n,JSON.stringify({nodes:[]},null,2))}}async function p(){await o();try{let a=await e().readFile(n,"utf8"),b=JSON.parse(a||"{}");return{nodes:Array.isArray(b.nodes)?b.nodes:[]}}catch{return{nodes:[]}}}async function q(a){await e().mkdir(m,{recursive:!0}),await e().writeFile(n,JSON.stringify({nodes:a.nodes||[]},null,2))}function r(){return new Date().toISOString()}function s(a){return Array.isArray(a)?[...new Set(a.map(a=>Number(a)).filter(a=>Number.isFinite(a)&&a>0))]:[...new Set(String(a||"11434").split(/[\s,;]+/).map(a=>Number(a.trim())).filter(a=>Number.isFinite(a)&&a>0))]}function t(a,b={}){if(!a)return b;if("object"==typeof a&&!Array.isArray(a))return a;try{let c=JSON.parse(String(a));return c&&"object"==typeof c&&!Array.isArray(c)?c:b}catch{return b}}function u(a,b=[]){if(!a||"object"!=typeof a)return a||null;let c=function(a=[]){let b=s(a);return b.length?new Set(b.map(Number)):null}(b);if(!c)return a;let d={...a};return Array.isArray(d.instances)&&(d.instances=d.instances.filter(a=>{let b=Number(a?.port);return Number.isFinite(b)&&c.has(b)})),Array.isArray(d.reservations)&&(d.reservations=d.reservations.filter(a=>{if(!a?.port)return!0;let b=Number(a.port);return Number.isFinite(b)&&c.has(b)})),d}function v(a){return a?{...a,sshPassword:void 0,sudoPassword:void 0}:null}function w(a={},b={}){let c=String(a.host??b.host??"").trim(),d=Number(a.agentPort??b.agentPort??19999)||19999,e=s(a.ollamaPorts??b.ollamaPorts??[11434]),f=t(a.modelMemoryRequirements??b.modelMemoryRequirements,b.modelMemoryRequirements||{}),g=(0,l.nw)(f,{partial:!0,preserveEnabled:!0}),h=b.id||a.id||i().randomUUID(),j=String(a.agentToken??b.agentToken??i().randomBytes(24).toString("hex")).trim(),k=function(a,b,c={}){let d=new Map((Array.isArray(c.instances)?c.instances:[]).map(a=>[Number(a.port),a])),e=new Map((Array.isArray(a)?a:[]).map(a=>[Number(a.port),a]));return b.map(a=>(function(a={},b={}){var c;let d=Number(a.port??b.port??11434)||11434;return{id:String(a.id??b.id??`ollama-${d}`).trim()||`ollama-${d}`,name:String(a.name??b.name??`Ollama :${d}`).trim()||`Ollama :${d}`,port:d,enabled:a.enabled??b.enabled??!0,gpuMode:["auto","cpu","specific","all"].includes(a.gpuMode??b.gpuMode)?a.gpuMode??b.gpuMode:"auto",gpuIndices:Array.isArray(c=a.gpuIndices??b.gpuIndices??[])?[...new Set(c.map(a=>Number(a)).filter(a=>Number.isInteger(a)&&a>=0))]:[...new Set(String(c||"").split(/[\s,;]+/).map(a=>Number(a)).filter(a=>Number.isInteger(a)&&a>=0))],allowMultiGpuSplit:a.allowMultiGpuSplit??b.allowMultiGpuSplit??!1,tags:Array.isArray(a.tags??b.tags)?(a.tags??b.tags).map(a=>String(a).trim()).filter(Boolean):[],modelMemoryRequirements:(0,l.nw)(t(a.modelMemoryRequirements??b.modelMemoryRequirements,b.modelMemoryRequirements||{}),{partial:!0,preserveEnabled:!0})}})(e.get(Number(a))||{},d.get(Number(a))||{port:a}))}(a.instances??b.instances,e.length?e:[11434],b),m=u(b.lastStatus||null,e),n=u(b.lastEvaluation||null,e);return{id:h,name:String(a.name??b.name??c??"Ollama Node").trim()||c||"Ollama Node",host:c,sshPort:Number(a.sshPort??b.sshPort??22)||22,sshUser:String(a.sshUser??b.sshUser??"root").trim()||"root",useSudo:a.useSudo??b.useSudo??!1,agentPort:d,agentToken:j,ollamaPorts:e.length?e:[11434],instances:k,refreshIntervalMs:Math.max(5e3,Number(a.refreshIntervalMs??b.refreshIntervalMs??15e3)||15e3),enabled:a.enabled??b.enabled??!0,ufwAllowFrom:String(a.ufwAllowFrom??b.ufwAllowFrom??"").trim(),useGlobalModelMemory:a.useGlobalModelMemory??b.useGlobalModelMemory??!0,modelMemoryRequirements:g,notes:String(a.notes??b.notes??"").trim(),lastStatus:m,lastEvaluation:n,lastStatusAt:b.lastStatusAt||null,lastError:b.lastError||null,lastInstallAt:b.lastInstallAt||null,lastInstallOk:b.lastInstallOk||!1,lastInstallLog:b.lastInstallLog||"",createdAt:b.createdAt||r(),updatedAt:r()}}async function x(){return(await p()).nodes.map(a=>v(w(a,a)))}async function y(a){let b=(await p()).nodes.find(b=>b.id===a)||null;return b?w(b,b):null}async function z(a){let b=await p(),c=w(a);return b.nodes.push(c),await q(b),v(c)}async function A(a,b){let c=await p(),d=c.nodes.findIndex(b=>b.id===a);if(d<0)return null;let e=c.nodes[d],f=b&&Object.prototype.hasOwnProperty.call(b,"ollamaPorts")&&!function(a=[],b=[]){return s(a).map(Number).sort((a,b)=>a-b).join(",")===s(b).map(Number).sort((a,b)=>a-b).join(",")}(e.ollamaPorts,b.ollamaPorts),g=w(b,e);return f&&(g.lastStatusAt=null,g.lastError=null),c.nodes[d]=g,await q(c),v(g)}async function B(a,b){let c=await p(),d=c.nodes.findIndex(b=>b.id===a);return d<0?null:(c.nodes[d]={...c.nodes[d],...b,updatedAt:r()},await q(c),v(w(c.nodes[d],c.nodes[d])))}async function C(a){let b=await p(),c=b.nodes.length;return b.nodes=b.nodes.filter(b=>b.id!==a),await q(b),b.nodes.length!==c}},55013:(a,b,c)=>{c.d(b,{LM:()=>v,LQ:()=>u,MW:()=>s,dV:()=>l,eY:()=>t,iP:()=>m,nw:()=>o});var d=c(79748),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j=process.env.DATA_DIR||process.env.BLUEROUTER_DATA_DIR||g().join(i().homedir(),".bluerouter"),k=g().join(j,"ollama-model-memory.json"),l={"qwen3:1.7b":{minRamFreeMb:2048,minVramFreeMb:0,loadedRamFreeMb:512,loadedVramFreeMb:0,safetyMarginMb:512,notes:"small text model"},"qwen3:4b":{minRamFreeMb:4096,minVramFreeMb:0,loadedRamFreeMb:1024,loadedVramFreeMb:0,safetyMarginMb:512,notes:"small/medium text model"},"qwen3:8b":{minRamFreeMb:6144,minVramFreeMb:0,loadedRamFreeMb:1024,loadedVramFreeMb:512,safetyMarginMb:1024,notes:"8B text model"},"qwen3:14b":{minRamFreeMb:8192,minVramFreeMb:1e4,loadedRamFreeMb:2048,loadedVramFreeMb:1024,safetyMarginMb:1024,notes:"14B class model"},"qwen3:32b":{minRamFreeMb:4096,minVramFreeMb:16e3,loadedRamFreeMb:2048,loadedVramFreeMb:2048,safetyMarginMb:2048,notes:"32B class model, GPU preferred"},"qwen3-coder:30b":{minRamFreeMb:8192,minVramFreeMb:24e3,loadedRamFreeMb:2048,loadedVramFreeMb:3072,safetyMarginMb:2048,notes:"30B coder"},"qwen3-coder:latest":{minRamFreeMb:8192,minVramFreeMb:24e3,loadedRamFreeMb:2048,loadedVramFreeMb:3072,safetyMarginMb:2048,notes:"qwen3 coder latest, treat as 30B unless overridden"},"qwen2.5-coder:14b":{minRamFreeMb:8192,minVramFreeMb:1e4,loadedRamFreeMb:2048,loadedVramFreeMb:1024,safetyMarginMb:1024,notes:"14B coder"},"qwen2.5vl:7b":{minRamFreeMb:8192,minVramFreeMb:8e3,loadedRamFreeMb:2048,loadedVramFreeMb:1024,safetyMarginMb:1024,notes:"7B vision-language"},"qwen2.5vl:latest":{minRamFreeMb:8192,minVramFreeMb:1e4,loadedRamFreeMb:2048,loadedVramFreeMb:1024,safetyMarginMb:1024,notes:"vision-language latest"},"bge-m3:latest":{minRamFreeMb:4096,minVramFreeMb:0,loadedRamFreeMb:512,loadedVramFreeMb:0,safetyMarginMb:512,notes:"embedding model"},"deepseek-coder:6.7b":{minRamFreeMb:4096,minVramFreeMb:0,loadedRamFreeMb:1024,loadedVramFreeMb:512,safetyMarginMb:1024,notes:"6.7B coder"},"gemma4:e4b":{minRamFreeMb:4096,minVramFreeMb:0,loadedRamFreeMb:1024,loadedVramFreeMb:0,safetyMarginMb:1024,notes:"small Gemma variant"},"gemma:7b":{minRamFreeMb:4096,minVramFreeMb:0,loadedRamFreeMb:1024,loadedVramFreeMb:0,safetyMarginMb:1024,notes:"7B text model"},"glm-4.7-flash:latest":{minRamFreeMb:4096,minVramFreeMb:0,loadedRamFreeMb:1024,loadedVramFreeMb:512,safetyMarginMb:1024,notes:"flash/local text model"},"gpt-oss:20b":{minRamFreeMb:8192,minVramFreeMb:12e3,loadedRamFreeMb:2048,loadedVramFreeMb:2048,safetyMarginMb:2048,notes:"20B class model"},"llama3.1:8b":{minRamFreeMb:6144,minVramFreeMb:0,loadedRamFreeMb:1024,loadedVramFreeMb:512,safetyMarginMb:1024,notes:"8B text model"},"llama3.2-vision:latest":{minRamFreeMb:8192,minVramFreeMb:1e4,loadedRamFreeMb:2048,loadedVramFreeMb:1024,safetyMarginMb:1024,notes:"vision model"},"qwen3-*-translate-f16:*":{minRamFreeMb:8192,minVramFreeMb:16e3,loadedRamFreeMb:2048,loadedVramFreeMb:2048,safetyMarginMb:2048,notes:"custom Qwen3 f16 translate wildcard"},"qwen3-*-translate*:latest":{minRamFreeMb:6144,minVramFreeMb:8e3,loadedRamFreeMb:1024,loadedVramFreeMb:1024,safetyMarginMb:1024,notes:"custom Qwen3 translate wildcard"},"bge-m3:*":{minRamFreeMb:4096,minVramFreeMb:0,loadedRamFreeMb:512,loadedVramFreeMb:0,safetyMarginMb:512,notes:"embedding model wildcard"},"gemma*:e4b":{minRamFreeMb:4096,minVramFreeMb:0,loadedRamFreeMb:1024,loadedVramFreeMb:0,safetyMarginMb:1024,notes:"Gemma E4B wildcard"},"gemma*:7b":{minRamFreeMb:4096,minVramFreeMb:0,loadedRamFreeMb:1024,loadedVramFreeMb:0,safetyMarginMb:1024,notes:"Gemma 7B wildcard"},"*:1.7b":{minRamFreeMb:2048,minVramFreeMb:0,loadedRamFreeMb:512,loadedVramFreeMb:0,safetyMarginMb:512,notes:"generic 1.7B fallback"},"*:4b":{minRamFreeMb:4096,minVramFreeMb:0,loadedRamFreeMb:1024,loadedVramFreeMb:0,safetyMarginMb:512,notes:"generic 4B fallback"},"*:6.7b":{minRamFreeMb:4096,minVramFreeMb:0,loadedRamFreeMb:1024,loadedVramFreeMb:512,safetyMarginMb:1024,notes:"generic 6-7B fallback"},"*:7b":{minRamFreeMb:4096,minVramFreeMb:0,loadedRamFreeMb:1024,loadedVramFreeMb:512,safetyMarginMb:1024,notes:"generic 7B fallback"},"*:8b":{minRamFreeMb:6144,minVramFreeMb:0,loadedRamFreeMb:1024,loadedVramFreeMb:512,safetyMarginMb:1024,notes:"generic 8B fallback"},"*:14b":{minRamFreeMb:8192,minVramFreeMb:1e4,loadedRamFreeMb:2048,loadedVramFreeMb:1024,safetyMarginMb:1024,notes:"generic 14B fallback"},"*:20b":{minRamFreeMb:8192,minVramFreeMb:12e3,loadedRamFreeMb:2048,loadedVramFreeMb:2048,safetyMarginMb:2048,notes:"generic 20B fallback"},"*:30b":{minRamFreeMb:8192,minVramFreeMb:24e3,loadedRamFreeMb:2048,loadedVramFreeMb:3072,safetyMarginMb:2048,notes:"generic 30B fallback"},"*:32b":{minRamFreeMb:4096,minVramFreeMb:16e3,loadedRamFreeMb:2048,loadedVramFreeMb:2048,safetyMarginMb:2048,notes:"generic 32B fallback"}},m=["minRamFreeMb","minVramFreeMb","loadedRamFreeMb","loadedVramFreeMb","safetyMarginMb"];function n(a,b=0){let c=Number(a);return Number.isFinite(c)&&c>=0?c:b}function o(a={},b={}){let c={};if(!a||"object"!=typeof a||Array.isArray(a))return c;for(let[d,e]of Object.entries(a)){let a=String(d||"").trim();if(!a||!e||"object"!=typeof e||Array.isArray(e))continue;let f=function(a,{partial:b=!1,preserveEnabled:c=!1}={}){let d={};for(let c of m)if(b){var e;null!=(e=a?.[c])&&""!==String(e).trim()&&(d[c]=n(a[c],0))}else d[c]=n(a?.[c],0);let f=String(a?.notes||"").trim();return f&&(d.notes=f),c&&a&&Object.prototype.hasOwnProperty.call(a,"enabled")&&(d.enabled=!1!==a.enabled),d}(e,b),g=m.some(a=>Object.prototype.hasOwnProperty.call(f,a)),h=b.preserveEnabled&&Object.prototype.hasOwnProperty.call(f,"enabled");(g||f.notes||h)&&(c[a]=f)}return c}async function p(){await e().mkdir(j,{recursive:!0});try{await e().access(k)}catch{await e().writeFile(k,JSON.stringify({requirements:l,updatedAt:new Date().toISOString()},null,2))}}async function q(){await p();try{let a=await e().readFile(k,"utf8"),b=JSON.parse(a||"{}");return{requirements:function(a={}){return o({...l,...a})}(b.requirements||{}),updatedAt:b.updatedAt||null}}catch{return{requirements:o(l),updatedAt:null}}}async function r(a){await e().mkdir(j,{recursive:!0});let b={requirements:o(a),updatedAt:new Date().toISOString()};return await e().writeFile(k,JSON.stringify(b,null,2)),b}async function s(){return(await q()).requirements}async function t(){return q()}async function u(a){return r(a)}async function v(){return r(l)}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=8910,exports.ids=[8910],exports.modules={11893:(a,b,c)=>{c.d(b,{Fg:()=>D,Gc:()=>A,OF:()=>z,OI:()=>t,YD:()=>I,ZL:()=>B,_d:()=>F,_i:()=>G,h6:()=>E,kb:()=>C,vd:()=>H,zY:()=>J});let d={maxInFlightPerTarget:Number(process.env.PROVIDER_HEALTH_MAX_IN_FLIGHT||2),failureThreshold:Number(process.env.PROVIDER_HEALTH_FAILURE_THRESHOLD||2),recoverySuccessThreshold:Number(process.env.PROVIDER_HEALTH_RECOVERY_SUCCESSES||2),degradedLatencyMs:Number(process.env.PROVIDER_HEALTH_DEGRADED_LATENCY_MS||15e3),baseCooldownMs:Number(process.env.PROVIDER_HEALTH_BASE_COOLDOWN_MS||3e4),maxCooldownMs:Number(process.env.PROVIDER_HEALTH_MAX_COOLDOWN_MS||3e5)},e=new Map,f=new Map,g=0,h="";function i(){return Date.now()}function j(a){return String(a||"").trim()}function k(a,b){let c=Number(a);return Number.isFinite(c)&&c>0?c:b}function l(a){return"string"==typeof a?a:a&&"object"==typeof a&&(a.model||a.value||a.id)||""}function m(a){return a&&"object"==typeof a?j(a.connectionId||a.connection_id||a.accountId):""}function n(a){return"string"==typeof a?a:a&&"object"==typeof a?j(a.label||a.displayName||a.name||l(a)):""}function o(a){let b=a?.tags||a?.labels||a?.routingTags||[];return Array.isArray(b)?b.map(a=>j(a)).filter(Boolean):"string"==typeof b?b.split(/[\n,;\s]+/).map(a=>j(a)).filter(Boolean):b&&"object"==typeof b?Object.entries(b).filter(([,a])=>!1!==a&&null!=a).map(([a,b])=>!0===b?j(a):`${j(a)}:${j(b)}`).filter(Boolean):[]}function p(a){let b=l(a),c=m(a);return b?c?`${c}::${b}`:b:""}function q(a={}){return j(a.endpoint||a.baseUrl||a.baseURL||a.base_url||a.providerUrl||a.provider_url||a.url)}function r(a={}){let b=p(a),c=i();return{key:b,state:"available",circuit:"closed",mode:"passive-runtime",connectionId:m(a),provider:j(a.provider),providerLabel:j(a.providerLabel||a.accountName||a.account_name||a.label),label:n(a),model:l(a),endpoint:q(a),tags:o(a),lastCheckedAt:0,lastRequestAt:0,lastOkAt:0,lastFailAt:0,latencyMs:0,avgLatencyMs:0,consecutiveFailures:0,consecutiveSuccesses:0,failures:0,successes:0,inFlight:0,halfOpenInFlight:0,cooldownUntil:0,cooldownMs:d.baseCooldownMs,modelAvailable:!0,lastError:"",updatedAt:c}}function s(a){let b=p(a);if(!b)return null;g||(g=i());let c=function(a,b={}){let c={...a||r(b)};return c.connectionId=c.connectionId||m(b),c.provider=j(b.provider)||c.provider,c.providerLabel=j(b.providerLabel||b.accountName||b.account_name||b.label)||c.providerLabel,c.label=n(b)||c.label,c.model=l(b)||c.model,c.endpoint=q(b)||c.endpoint,c.tags=o(b).length?o(b):c.tags||[],c.mode="passive-runtime",c.updatedAt=i(),c}(e.get(b),a);return e.set(b,c),f.set(b,{...f.get(b)||{},...a,key:b}),c}function t(a=[]){for(let b of a||[])s(b)}function u(){let a=i();for(let b of e.values())"open"===b.circuit&&b.cooldownUntil&&b.cooldownUntil<=a&&(b.circuit="half_open",b.halfOpenInFlight=0,b.updatedAt=a,e.set(b.key,b))}function v(a){return a?.circuit==="open"&&a.cooldownUntil>i()}function w(a){return a?.circuit==="half_open"&&(a.halfOpenInFlight||0)>0}function x(a){let b=Number(a?.maxInFlight||a?.maxInFlightPerTarget);return Number.isFinite(b)&&b>0?b:k(d.maxInFlightPerTarget,2)}function y(a){let b=p(a),c=b&&e.get(b)||r(a),d=x(a);if(v(c))return 9e3;if(w(c))return 8e3;if((c.inFlight||0)>=d)return 7e3;let f=500;return"half_open"===c.circuit&&(f-=50),"healthy"===c.state&&(f-=300),("unknown"===c.state||"available"===c.state)&&(f-=20),"degraded"===c.state&&(f+=300),"overloaded"===c.state&&(f+=700),("down"===c.state||"model_unavailable"===c.state)&&(f+=1200),f+=Math.min(c.avgLatencyMs||c.latencyMs||0,3e4)/100+150*(c.inFlight||0)+400*(c.consecutiveFailures||0)}function z(a=[],b="",c={}){let d=function(a,b={}){let c=b?.[a]||b?.[String(a||"").split("/").pop()]||[];return Array.isArray(c)?c.map(a=>j(a)).filter(Boolean):"string"==typeof c?c.split(/[\n,;]+/).map(a=>j(a)).filter(Boolean):[]}(b,c);if(!d.length)return[...a||[]];let e=d.map(a=>a.toLowerCase());return(a||[]).filter(a=>{let b=o(a).map(a=>a.toLowerCase());return e.every(a=>b.includes(a))})}function A(a=[],b={}){u();let c=[...a||[]];if(b.modelTagRules){let a=z(c,b.model,b.modelTagRules);a.length&&(c=a)}if(c.length<=1)return c;let d=[],f=[];for(let a of c){let b=e.get(p(a))||null,c=x(a);b&&(v(b)||w(b)||(b.inFlight||0)>=c||"model_unavailable"===b.state)?f.push(a):d.push(a)}if(b.preserveOrder)return d.length?b.includeSkippedAtEnd?[...d,...f]:d:c;let g=d.sort((a,b)=>y(a)-y(b));return g.length?b.includeSkippedAtEnd?[...g,...f.sort((a,b)=>y(a)-y(b))]:g:c}function B(a=[],b={}){let c=A(a,{...b,includeSkippedAtEnd:!0}),d=c.slice(0,Math.min(2,c.length));if(c.length>2){let a=c[Math.floor(Math.random()*c.length)],b=c[Math.floor(Math.random()*c.length)];if(c.length>1){let d=0;for(;b===a&&d<5;)b=c[Math.floor(Math.random()*c.length)],d+=1}let d=[a,b].filter(Boolean).sort((a,b)=>y(a)-y(b)),e=c.filter(a=>!d.includes(a));return[...d,...e]}return d}function C(a){u();let b=s(a);if(!b)return{skipped:!1,end:()=>{}};let c=x(a);if(v(b))return{skipped:!0,reason:"circuit_open",state:b};if(w(b))return{skipped:!0,reason:"half_open_probe_busy",state:b};if((b.inFlight||0)>=c)return{skipped:!0,reason:"in_flight_full",state:b};b.inFlight=(b.inFlight||0)+1,b.lastRequestAt=i(),"half_open"===b.circuit&&(b.halfOpenInFlight=(b.halfOpenInFlight||0)+1),b.updatedAt=i(),e.set(b.key,b);let d=!1;return{skipped:!1,state:b,end:()=>{if(d)return;d=!0;let a=e.get(b.key);a&&(a.inFlight=Math.max(0,(a.inFlight||0)-1),"half_open"===a.circuit&&(a.halfOpenInFlight=Math.max(0,(a.halfOpenInFlight||0)-1)),a.updatedAt=i(),e.set(a.key,a))}}}function D(a,b=null){let c;if(function(a={}){let b=Number(a?.status||a?.statusCode||0);return!!(a?.healthFailed||a?.forceFailure||a?.error||a?.exception||a?.timeout||b>=400)}(a))return E(a,function(a={}){let b=Number(a?.status||a?.statusCode||0);return a?.error?a.error:a?.exception?a.exception:a?.timeout?{message:"timeout",code:"TIMEOUT"}:b>=400?{status:b,message:a?.statusText||"request_failed"}:{message:"request_failed"}}(a));let f=s(a);if(!f)return null;let g=i();Number.isFinite(c=Number(b))&&!(c<0)&&(f.latencyMs=c,f.avgLatencyMs=f.avgLatencyMs?Math.round(.8*f.avgLatencyMs+.2*c):c),f.successes=(f.successes||0)+1,f.consecutiveSuccesses=(f.consecutiveSuccesses||0)+1,f.consecutiveFailures=0,f.lastOkAt=g,f.lastRequestAt=g,f.lastError="",f.modelAvailable=!0,f.updatedAt=g;let h=k(d.recoverySuccessThreshold,2);return"open"===f.circuit||"half_open"===f.circuit?f.consecutiveSuccesses>=h?(f.circuit="closed",f.state="healthy",f.cooldownUntil=0,f.cooldownMs=d.baseCooldownMs):(f.circuit="half_open",f.state="recovering",f.cooldownUntil=0):(f.circuit="closed",f.state="healthy",f.cooldownUntil=0),e.set(f.key,f),f}function E(a,b){let c,f,g=s(a);if(!g)return null;let h=i(),j=(c=String(b?.message||b||"").toLowerCase(),404===(f=Number(b?.status||b?.statusCode||b))||c.includes("model_not_found")||c.includes("model not found")?{state:"model_unavailable",cooldownMs:d.maxCooldownMs,error:"model_not_found"}:408===f||429===f||502===f||503===f||504===f||c.includes("timeout")||c.includes("busy")||c.includes("overload")||c.includes("queue")?{state:"overloaded",cooldownMs:d.baseCooldownMs,error:c||String(f||"overloaded")}:c.includes("econnrefused")||c.includes("enotfound")||c.includes("ehostunreach")||c.includes("fetch failed")||c.includes("network")?{state:"down",cooldownMs:d.baseCooldownMs,error:c||"network_error"}:f>=500?{state:"down",cooldownMs:d.baseCooldownMs,error:c||String(f)}:{state:"degraded",cooldownMs:d.baseCooldownMs,error:c||String(f||"provider_error")});g.failures=(g.failures||0)+1,g.consecutiveFailures=(g.consecutiveFailures||0)+1,g.consecutiveSuccesses=0,g.lastFailAt=h,g.lastRequestAt=h,g.lastError=j.error||String(b?.message||b||"request_failed"),g.updatedAt=h,g.modelAvailable="model_unavailable"!==j.state;let l=k(d.failureThreshold,2);return g.consecutiveFailures>=l?(g.state=j.state,g.circuit="open",g.cooldownMs=Math.min(Math.max(j.cooldownMs||d.baseCooldownMs,g.cooldownMs||d.baseCooldownMs),d.maxCooldownMs),g.cooldownUntil=h+g.cooldownMs):(g.state="degraded",g.circuit="closed",g.cooldownUntil=0),e.set(g.key,g),g}function F(){return g||(g=i()),!1}function G(){return!1}async function H(){return u(),I()}function I(){u();let a=Array.from(e.values()).sort((a,b)=>y(a)-y(b)).map(a=>({...a,cooldownRemainingMs:Math.max(0,(a.cooldownUntil||0)-i()),score:Math.round(y(a))}));return{enabled:!0,mode:"passive-runtime",started:!!g,startedAt:g||null,lastMonitorError:h,config:{...d},totals:{targets:a.length,healthy:a.filter(a=>"healthy"===a.state).length,available:a.filter(a=>"available"===a.state||"unknown"===a.state).length,degraded:a.filter(a=>"degraded"===a.state).length,overloaded:a.filter(a=>"overloaded"===a.state).length,down:a.filter(a=>"down"===a.state).length,open:a.filter(a=>"open"===a.circuit).length,halfOpen:a.filter(a=>"half_open"===a.circuit).length,inFlight:a.reduce((a,b)=>a+(b.inFlight||0),0)},targets:a}}function J(a=null){if(a){e.delete(a),f.delete(a);return}e.clear(),f.clear(),h="",g=0}},12557:(a,b,c)=>{c.d(b,{Bl:()=>j,Qo:()=>f,S5:()=>l,hk:()=>e,kJ:()=>k});var d=c(3662);function e(a,b,c=0){let f=b?("string"==typeof b?b:JSON.stringify(b)).toLowerCase():"";for(let b of d.t2)if(b.text&&f&&f.includes(b.text)||b.status&&b.status===a){if(b.backoff){let a=Math.min(c+1,d.EQ.maxLevel);return{shouldFallback:!0,cooldownMs:function(a=0){let b=Math.max(0,a-1);return Math.min(d.EQ.base*Math.pow(2,b),d.EQ.max)}(a),newBackoffLevel:a}}return{shouldFallback:!0,cooldownMs:b.cooldownMs}}return{shouldFallback:!0,cooldownMs:d.wf}}function f(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}let g="modelLock_",h=`${g}__all`;function i(a){return a?`${g}${a}`:h}function j(a,b){let c=a[i(b)]||a[h];return!!c&&new Date(c).getTime()>Date.now()}function k(a){if(!a)return null;let b=null,c=Date.now();for(let[d,e]of Object.entries(a)){if(!d.startsWith(g)||!e)continue;let a=new Date(e).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}function l(a,b){return{[i(a)]:new Date(Date.now()+b).toISOString()}}},18910:(a,b,c)=>{c.d(b,{Pr:()=>s,UP:()=>q,Vu:()=>r});var d=c(12557),e=c(43659),f=c(11893);let g=new Map,h=new Map,i=0;function j(a){return"client_ip"===a||"client_session"===a?a:"global"}function k(a){let b=Number.parseInt(a,10);return!Number.isFinite(b)||b<=0?120:Math.min(b,10080)}function l(a,b){let c=[...a];for(let a=0;a<b;a++){let a=c.shift();c.push(a)}return c}function m(a){let b=g.get(a);return"number"==typeof b?{index:b,consecutiveUseCount:0}:b||{index:0,consecutiveUseCount:0}}function n(a,b,c,d){let e=m(a).consecutiveUseCount+1;e>=d?g.set(a,{index:(b+1)%c,consecutiveUseCount:0}):g.set(a,{index:b,consecutiveUseCount:e})}function o(a,b,c){let d=b||"__default__",e=m(d).index%a.length,f=l(a,e);return n(d,e,a.length,c),f}function p(a,b){return{model:a,label:a,provider:b||"combo"}}function q(a){if(!a){g.clear(),h.clear();return}g.delete(a);let b=`${a}::`;for(let a of h.keys())a.startsWith(b)&&h.delete(a)}function r(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 s({body:a,models:b,handleSingleModel:c,log:g,comboName:q,comboStrategy:r,comboStickyLimit:t=1,comboStickyScope:u="global",comboStickyTtlMinutes:v=120,comboStickyContext:w=null}){let x=r||"fallback",y=function(a,b,c,d=1,e={}){let g;if(!a||a.length<=1)return a;let q=c||"fallback",r=a.map(a=>p(a,b));if((0,f.OI)(r),"least-latency"===q||"least_latency"===q)return(0,f.Gc)(r,{includeSkippedAtEnd:!0}).map(a=>a.model);if("p2c"===q||"power-of-two"===q||"power_of_two"===q)return(0,f.ZL)(r,{includeSkippedAtEnd:!0}).map(a=>a.model);if("round-robin"!==q)return a;let s=Number.isFinite(g=Number.parseInt(d,10))&&g>0?g:1,t=j(e.stickyScope),u=k(e.stickyTtlMinutes);return"global"===t?o(a,b,s):function(a,b,c,d,e,f){let g,p=Date.now();if(!(p-i<6e4))for(let[a,b]of(i=p,h.entries()))(!b?.expiresAt||b.expiresAt<=p)&&h.delete(a);let q=j(d),r="global"!==(g=j(q))&&f?.key?`${b||"__default__"}::${g}::${f.key}`:null;if(!r)return o(a,b,c);let s=Date.now(),t=6e4*k(e),u=h.get(r);if(u&&u.expiresAt>s){let b=Number.isFinite(u.index)?u.index:0;if(u.model){let c=a.indexOf(u.model);c>=0&&(b=c)}return b%=a.length,h.set(r,{...u,index:b,model:a[b],lastUsedAt:s,expiresAt:s+t}),l(a,b)}let v=b||"__default__",w=m(v).index%a.length;return h.set(r,{index:w,model:a[w],stickyScope:q,stickyKey:f.key,sessionId:f.sessionId||null,clientIp:f.clientIp||null,createdAt:s,lastUsedAt:s,expiresAt:s+t}),n(v,w,a.length,c),l(a,w)}(a,b,s,t,u,e.stickyContext||null)}(b,q,x,t,{stickyScope:u,stickyTtlMinutes:v,stickyContext:w});["round-robin","least-latency","least_latency","p2c","power-of-two","power_of_two"].includes(x)&&g?.debug?.("COMBO",`${x} combo "${q||"__default__"}" | sticky=${u||"global"}${w?.label?` | key=${w.label}`:""}`);let z=null,A=null,B=null;for(let b=0;b<y.length;b++){let e=y[b],h=p(e,q),i=(0,f.kb)(h);if(i.skipped&&b<y.length-1){g?.warn?.("COMBO",`Skipping ${e}: ${i.reason}`);continue}let j=Date.now();g.info("COMBO",`Trying model ${b+1}/${y.length}: ${e}`);try{let b=await c(a,e),k=Date.now()-j;if(i.end?.(),b.ok)return(0,f.Fg)(h,k),g.info("COMBO",`Model ${e} succeeded`),b;let l=b.statusText||"",m=null;try{let a=await b.clone().json();l=a?.error?.message||a?.error||a?.message||l,m=a?.retryAfter||null}catch{}if("string"!=typeof l)try{l=JSON.stringify(l)}catch{l=String(l)}(0,f.h6)(h,{status:b.status,message:l}),m&&(!A||new Date(m)<new Date(A))&&(A=m);let{shouldFallback:n,cooldownMs:o}=(0,d.hk)(b.status,l);if(!n)return g.warn("COMBO",`Model ${e} failed (no fallback)`,{status:b.status}),b;o&&o>0&&o<=5e3&&[502,503,504].includes(b.status)&&(g.info("COMBO",`Model ${e} transient ${b.status}, waiting ${o}ms before next`),await new Promise(a=>setTimeout(a,o))),z=l||String(b.status),B||(B=b.status),g.warn("COMBO",`Model ${e} failed, trying next`,{status:b.status})}catch(a){i.end?.(),z=a.message||String(a),B||(B=500),(0,f.h6)(h,a),g.warn("COMBO",`Model ${e} threw error, trying next`,{error:z})}}let C=z&&z.toLowerCase().includes("no credentials")?503:B||503,D=z||"All combo models unavailable";if(A){let a=(0,d.Qo)(A);return g.warn("COMBO",`All models failed | ${D} (${a})`),(0,e.wO)(C,D,A,a)}return g.warn("COMBO",`All models failed | ${D}`),new Response(JSON.stringify({error:{message:D}}),{status:C,headers:{"Content-Type":"application/json"}})}},43659:(a,b,c)=>{c.d(b,{A1:()=>g,lR:()=>i,wO:()=>h,yj:()=>e,zL:()=>f});var d=c(3662);function e(a,b){let c;return new Response(JSON.stringify((c=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""}),{error:{message:b||d.O[a]||"An error occurred",type:c.type,code:c.code}})),{status:a,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}async function f(a,b=null){let c="";try{c=await a.text()}catch{c=""}if(b&&"function"==typeof b.parseError)try{let e=b.parseError(a,c);if(e&&"object"==typeof e){let b=e.message||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:e.status||a.status,message:b,resetsAtMs:e.resetsAtMs}}}catch{}let e="";try{let a=JSON.parse(c);e=a.error?.message||a.message||a.error||c}catch{e=c}let g=("string"==typeof e?e:JSON.stringify(e))||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:g}}function g(a,b,c){return{success:!1,status:a,error:b,resetsAtMs:c,response:e(a,b)}}function h(a,b,c,d){let e=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1);return new Response(JSON.stringify({error:{message:`${b} (${d})`}}),{status:a,headers:{"Content-Type":"application/json","Retry-After":String(e)}})}function i(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error",g=a.cause?.code,h=a.cause?.message,i=g||h?` (cause: ${[g,h].filter(Boolean).join(": ")})`:"";return`[${e}]: ${f}${i}`}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=9253,exports.ids=[9253],exports.modules={19253:(a,b,c)=>{c.d(b,{MR:()=>u,sV:()=>v});var d=c(55013),e=c(35448);function f(a,b=0){let c=Number(a);return Number.isFinite(c)?c:b}function g(a){return String(a||"").trim().replace(/^.*\//,"").toLowerCase()}function h(a){return String(a||"").trim().replace(/^.*\//,"")}function i(a={},b){if(!a||"object"!=typeof a)return null;let c=h(b),d=a[c];if(d)return{rule:d,key:c,matchType:"exact"};let e=g(c),f=Object.keys(a).find(a=>g(a)===e);if(f)return{rule:a[f],key:f,matchType:"case-insensitive"};let j=Object.keys(a).find(a=>{let b;return a.includes("*")&&(b=String(a||"").split("*").map(a=>a.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")).join(".*"),RegExp(`^${b}$`,"i")).test(c)});return j?{rule:a[j],key:j,matchType:"wildcard"}:null}function j(a,b=[]){return Math.max(0,f(a?.hardware?.ram?.availableMb??a?.hardware?.ram?.freeMb,0)-(0,e.Hj)(b).ramMb)}function k(a,b,{aggregate:c=!1,source:d="auto",mode:e="auto"}={}){let g=Array.isArray(b)&&b.length?function(a,b=[]){let c=new Set((b||[]).map(Number));return a.filter(a=>c.has(Number(a.index)))}(a,b):a;if(g.length||(g=a),!g.length)return{mode:e,source:d,aggregate:!1,gpus:[],gpuIndices:[],vramFreeMb:0};let h=!0===c,i=h?g.reduce((a,b)=>a+f(b.vramFreeMb,0),0):Math.max(...g.map(a=>f(a.vramFreeMb,0)),0),j=g.reduce((a,b)=>f(a.vramFreeMb,0)>=f(b.vramFreeMb,0)?a:b,g[0]);return{mode:e,source:d,aggregate:h,gpus:g,gpuIndices:h?g.map(a=>a.index):[j.index],candidateGpuIndices:g.map(a=>a.index),vramFreeMb:i}}function l(a,b={},c=[],d={}){let g=function(a,b=[]){let c=(0,e.Hj)(b);return a.map(b=>{let d=Number(c.vramByGpu[b.index]||0)+(c.vramUnscopedMb?c.vramUnscopedMb/Math.max(1,a.length):0);return{...b,reservedVramMb:d,vramFreeMb:Math.max(0,f(b.vramFreeMb,0)-d)}})}(Array.isArray(a?.hardware?.gpus)?a.hardware.gpus.map((a,b)=>({...a,index:Number.isInteger(Number(a.index))?Number(a.index):b})):[],c),h=b.gpuMode||"auto";if("cpu"===h||0===g.length)return{mode:h,source:"cpu"===h?"manual-cpu":"no-gpu",aggregate:!1,gpus:[],gpuIndices:[],vramFreeMb:0};if("specific"===h&&Array.isArray(b.gpuIndices)&&b.gpuIndices.length)return k(g,b.gpuIndices,{aggregate:!0===b.allowMultiGpuSplit,source:"manual-specific",mode:h});if("all"===h)return k(g,g.map(a=>a.index),{aggregate:!0===b.allowMultiGpuSplit,source:!0===b.allowMultiGpuSplit?"manual-all-aggregate":"manual-all-best-gpu",mode:h});let i=Array.isArray(d?.effectiveGpuIndices)&&d.effectiveGpuIndices.length?{indices:d.effectiveGpuIndices.map(Number),source:d.effectiveGpuSource||"agent-effective"}:Array.isArray(d?.configuredGpuIndices)&&d.configuredGpuIndices.length?{indices:d.configuredGpuIndices.map(Number),source:d.configuredGpuSource||"agent-configured"}:Array.isArray(d?.detectedGpuIndices)&&d.detectedGpuIndices.length?{indices:d.detectedGpuIndices.map(Number),source:d.detectedGpuBindingSource||"agent-runtime"}:Array.isArray(d?.runtimeGpuIndices)&&d.runtimeGpuIndices.length?{indices:d.runtimeGpuIndices.map(Number),source:"agent-runtime"}:null;return i?.indices?.length?k(g,i.indices,{aggregate:!0===b.allowMultiGpuSplit,source:!0===b.allowMultiGpuSplit?`${i.source}-aggregate`:`${i.source}-best-gpu`,mode:"auto"}):k(g,g.map(a=>a.index),{aggregate:!1,source:"auto-best-gpu",mode:"auto"})}var m=c(6774);let n=new Map;function o(){return new Date().toISOString()}function p(a){return`http://${a.host}:${a.agentPort||19999}/status`}function q(a,b={}){var c;let d;if(!a?.enabled)return!1;let e=Number(b.now||Date.now()),f=Number.isFinite(d=(c=a.lastStatusAt)?new Date(c).getTime():0)?d:0;if(!f)return!0;let g=Number(b.maxAgeMs||0);return e-f>=(g>0?g:function(a,b=5e3){return Math.max(5e3,Number(a?.refreshIntervalMs||b)||b)}(a))}async function r(a){try{return await a.text()}catch{return""}}async function s(a,b={}){let c,d=p(a),e={};a.agentToken&&(e.Authorization=`Bearer ${a.agentToken}`);let f=new AbortController,g=setTimeout(()=>f.abort(),Math.max(1e3,Number(b.timeoutMs||1e4))),h="";try{c=await fetch(d,{headers:e,signal:f.signal,cache:"no-store"}),h=await r(c)}finally{clearTimeout(g)}if(!c.ok){let a=Error(`Agent status failed: HTTP ${c.status}`);throw a.agentUrl=d,a.agentStatus=c.status,a.agentBody=h.slice(0,1e3),a}try{return{status:JSON.parse(h||"{}"),agentUrl:d}}catch{let a=Error("Agent returned invalid JSON");throw a.agentUrl=d,a.agentStatus=c.status,a.agentBody=h.slice(0,1e3),a}}async function t(a,b={}){let c="string"==typeof a?await (0,m.Vs)(a):a;if(!c?.id)return null;if(!b.force&&!q(c,b))return c;let k=c.id;if(n.has(k))return n.get(k);let r=(async()=>{try{let{status:a,agentUrl:k}=await s(c,b),n=await (0,d.MW)(),p=await (0,e._)({nodeId:c.id}),q=function(a,b={},c={},e={}){let k=(Array.isArray(a?.instances)?a.instances:[{id:"default",port:null,baseUrl:a?.ollama?.baseUrl,alive:a?.ollama?.alive,models:a?.ollama?.models||[],loadedModels:a?.ollama?.loadedModels||[]}]).filter(a=>(function(a={},b={}){let c=function(a={}){let b=Array.isArray(a.instances)?a.instances.filter(a=>a&&!1!==a.enabled).map(a=>Number(a.port)).filter(a=>Number.isFinite(a)&&a>0):[];if(b.length)return new Set(b);let c=Array.isArray(a.ollamaPorts)?a.ollamaPorts.map(a=>Number(a)).filter(a=>Number.isFinite(a)&&a>0):[];return c.length?new Set(c):null}(a);if(!c)return!0;let d=Number(b?.port);return Number.isFinite(d)&&c.has(d)})(b,a)),m=Array.isArray(e.reservations)?e.reservations:[],n=k.map(e=>{let k,n,o=(k=Array.isArray(b?.instances)?b.instances:[],n=Number(e?.port),k.find(a=>Number(a.port)===n)||k.find(a=>a.id&&a.id===e?.id)||{port:n,gpuMode:"auto",gpuIndices:[],allowMultiGpuSplit:!1,modelMemoryRequirements:{}}),p=m.filter(a=>!a.port||Number(a.port)===Number(e.port)||a.instanceId&&a.instanceId===o.id),q=(e.models||[]).map(h).filter(Boolean),r=l(a,o,p,e),s=q.map(k=>(function({status:a,node:b,instance:c,instanceConfig:e,reservations:g,globalRequirements:k,model:m,loadedInfo:n}){let o=h(m),p=n?.loaded===!0,q=function(a,b,c,e,g){let h=[],j=g?c||{}:d.dV,k=i(j,e);k&&h.push({...k,source:g?"global":"default"});let l=i(b,e);l&&h.push({...l,source:"node"});let m=i(a,e);m&&h.push({...m,source:"instance"});let n={},o=[],p=[];for(let a of h)if(a?.rule){for(let b of(o.push(a.source),p.push(a.key),d.iP))Object.prototype.hasOwnProperty.call(a.rule,b)&&(n[b]=f(a.rule[b],0));a.rule.notes&&(n.notes=a.rule.notes)}return Object.keys(n).length?{rule:n,source:o.join("+"),key:p.filter(Boolean).join(" > ")}:null}(e?.modelMemoryRequirements||{},b?.modelMemoryRequirements||{},k||{},o,b?.useGlobalModelMemory!==!1),r=q?.rule,s=j(a,g),t=l(a,e,g,c),u=t.vramFreeMb;if(!r)return{model:o,loaded:p,loadedName:n?.loadedName||null,loadedMatch:n?.matchedBy||null,status:p?"loaded-unconfigured":"sleeping-unconfigured",okToRoute:!0,reason:"No model memory rule matched; allowing route by default.",ruleSource:"none",ruleKey:null,ramAvailableMb:s,vramFreeMb:u,hardwareScope:t,requirement:null};let v=f(r.safetyMarginMb,0),w=p?f(r.loadedRamFreeMb,0):f(r.minRamFreeMb,0),x=p?f(r.loadedVramFreeMb,0):f(r.minVramFreeMb,0),y=w+v,z=x+v,A=s>=y,B=x<=0||u>=z,C=p?"loaded-ready":"sleeping-ready",D=p?`Model is already loaded${n?.loadedName?` as ${n.loadedName}`:""}${n?.matchedBy?` (${n.matchedBy} match)`:""} and has enough overhead memory.`:"Model can be woken with current free memory.";return A||B?A?B||(C=p?"loaded-low-vram":"sleeping-insufficient-vram",D=`Not enough VRAM in this instance GPU scope. Free ${u}MB < required ${z}MB.`):(C=p?"loaded-low-ram":"sleeping-insufficient-ram",D=`Not enough RAM. Free ${s}MB < required ${y}MB.`):(C=p?"loaded-low-ram-vram":"sleeping-insufficient-ram-vram",D=`Not enough RAM/VRAM. RAM free ${s}MB < ${y}MB, VRAM scope free ${u}MB < ${z}MB.`),{model:o,loaded:p,loadedName:n?.loadedName||null,loadedMatch:n?.matchedBy||null,status:C,okToRoute:A&&B,reason:D,ruleSource:q.source,ruleKey:q.key,ramAvailableMb:s,vramFreeMb:u,hardwareScope:t,requirement:{...r,effectiveMinRamFreeMb:y,effectiveMinVramFreeMb:z}}})({status:a,node:b,instance:e,instanceConfig:o,reservations:p,globalRequirements:c,model:k,loadedInfo:function(a,b){let c,d,e,f,i=(c=h(b),d=new Set([c,g(c)]),(e=g(c)).endsWith(":latest")&&d.add(e.replace(/:latest$/,"")),(f=e.split(":")[0])&&d.add(f),d),j=function(a){let b=new Map;for(let c of a?.modelDetails||a?.modelsInfo||[]){let a=c?.digest;if(a)for(let d of[c.name,c.model])d&&b.set(g(d),a)}return b}(a),k=new Set;for(let a of i){let b=j.get(a);b&&k.add(b)}for(let b of function(a){let b=[];if(Array.isArray(a?.psModels)&&b.push(...a.psModels),Array.isArray(a?.loadedModelDetails)&&b.push(...a.loadedModelDetails),Array.isArray(a?.loadedModels))for(let c of a.loadedModels)b.push({name:c,model:c});return b}(a)){let a=[b?.name,b?.model].filter(Boolean);if(a.map(g).some(a=>i.has(a)))return{loaded:!0,matchedBy:"name",loadedName:a[0],psModel:b};let c=b?.digest;if(c&&k.has(c))return{loaded:!0,matchedBy:"digest",loadedName:a[0],psModel:b}}return{loaded:!1,matchedBy:null,loadedName:null,psModel:null}}(e,k)})),t=s.filter(a=>!a.loaded&&!a.okToRoute);return{...e,config:o,hardwareScope:r,modelReadiness:s,blockedSleepingModels:t,hasBlockedSleepingModels:t.length>0}});return{ok:a?.ok===!0,ramAvailableMb:j(a,m),reservations:m,instances:n,hasBlockedSleepingModels:n.some(a=>a.hasBlockedSleepingModels)}}(a,c,n,{reservations:p});return{node:await (0,m.YT)(c.id,{lastStatus:a,lastEvaluation:q,lastStatusAt:o(),lastError:null}),status:a,evaluation:q,reservations:p,agentUrl:k,refreshed:!0}}catch(b){let a=b?.name==="AbortError"?"Agent status timed out":b.message||"Agent status failed";return{node:await (0,m.YT)(c.id,{lastError:a,lastStatusAt:o()}),error:a,agentUrl:b.agentUrl||p(c),agentStatus:b.agentStatus,agentBody:b.agentBody,refreshed:!1}}finally{n.delete(k)}})();return n.set(k,r),r}async function u(a,b={}){let c=await (0,m.Vs)(a);return c?t(c,{...b,force:!0}):null}async function v(a=null,b={}){let c=Array.isArray(a)?a:await (0,m.U1)(),d=[];for(let a of c)a?.enabled&&(b.force||q(a,b))&&d.push(await t(a,b));return{nodes:await (0,m.U1)(),refreshed:d}}},35448:(a,b,c)=>{c.d(b,{Hj:()=>w,_:()=>t,lz:()=>u,y3:()=>v});var d=c(79748),e=c.n(d),f=c(33873),g=c.n(f),h=c(55511),i=c.n(h),j=c(21820),k=c.n(j);let l=process.env.DATA_DIR||process.env.BLUEROUTER_DATA_DIR||g().join(k().homedir(),".bluerouter"),m=g().join(l,"ollama-memory-reservations.json");async function n(){await e().mkdir(l,{recursive:!0});try{await e().access(m)}catch{await e().writeFile(m,JSON.stringify({reservations:[]},null,2))}}async function o(){await n();try{let a=await e().readFile(m,"utf8"),b=JSON.parse(a||"{}");return{reservations:Array.isArray(b.reservations)?b.reservations:[]}}catch{return{reservations:[]}}}async function p(a){await e().mkdir(l,{recursive:!0}),await e().writeFile(m,JSON.stringify({reservations:a.reservations||[]},null,2))}function q(){return Date.now()}function r(a){let b=new Date(a.expiresAt).getTime();return Number.isFinite(b)&&b>q()}async function s(){let a=await o(),b=a.reservations.filter(r);return b.length!==a.reservations.length&&(a.reservations=b,await p(a)),b}async function t(a={}){return(await s()).filter(b=>(!a.nodeId||b.nodeId===a.nodeId)&&(!a.instanceId||b.instanceId===a.instanceId)&&(!a.port||Number(b.port)===Number(a.port)))}async function u(a){let b=await o();b.reservations=b.reservations.filter(r);let c=function(a={}){let b=Math.max(1e3,Number(a.ttlMs||6e4)),c=q();return{id:a.id||i().randomUUID(),nodeId:String(a.nodeId||"").trim(),instanceId:String(a.instanceId||"").trim(),port:Number(a.port||0)||null,model:String(a.model||"").trim(),ramMb:Math.max(0,Number(a.ramMb||0)),vramMb:Math.max(0,Number(a.vramMb||0)),gpuIndices:Array.isArray(a.gpuIndices)?a.gpuIndices.map(Number).filter(a=>Number.isInteger(a)&&a>=0):[],reason:String(a.reason||"wake-model").trim(),createdAt:new Date(c).toISOString(),expiresAt:new Date(c+b).toISOString()}}(a);return b.reservations.push(c),await p(b),c}async function v(a){let b=await o(),c=b.reservations.length;return b.reservations=b.reservations.filter(b=>b.id!==a),await p(b),b.reservations.length!==c}function w(a=[]){let b={ramMb:0,vramByGpu:{},vramUnscopedMb:0};for(let c of a)if(b.ramMb+=Number(c.ramMb||0),Array.isArray(c.gpuIndices)&&c.gpuIndices.length){let a=Number(c.vramMb||0)/c.gpuIndices.length;for(let d of c.gpuIndices)b.vramByGpu[d]=(b.vramByGpu[d]||0)+a}else b.vramUnscopedMb+=Number(c.vramMb||0);return b}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST=function(e,s,t){return{__rewrites:{afterFiles:[{has:e,source:"/v1/v1/:path*",destination:s},{has:e,source:"/v1/v1",destination:t},{has:e,source:"/codex/:path*",destination:"/api/v1/responses"},{has:e,source:"/v1/:path*",destination:s},{has:e,source:"/v1",destination:t}],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:152,errorRate:1e-4,numBits:2914,numHashes:14,bitArray:[1,1,1,1,0,0,0,1,0,1,1,0,1,1,1,1,1,0,1,1,0,0,1,0,0,0,1,0,1,0,1,1,1,1,0,0,1,1,1,0,1,0,0,0,0,1,0,0,0,1,0,0,1,1,0,1,1,0,1,1,0,0,0,0,0,0,0,1,1,1,0,1,0,0,1,1,1,1,0,0,1,0,0,0,0,0,1,0,1,1,1,0,1,0,1,1,1,1,1,0,0,0,0,1,0,0,0,1,1,0,1,1,1,0,0,1,1,1,0,0,1,0,1,1,1,0,0,0,1,0,0,1,1,1,1,1,1,0,0,1,0,1,1,0,1,0,0,0,1,0,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,1,0,0,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,0,1,1,0,0,0,1,0,1,1,1,1,0,0,1,0,1,0,0,1,0,0,1,1,1,0,1,1,1,0,1,0,1,0,1,0,1,0,1,1,0,0,1,0,0,1,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,1,0,1,1,0,0,0,0,1,1,0,1,0,1,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,0,1,1,0,0,0,1,1,1,0,0,1,0,1,0,1,0,0,1,1,0,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,1,1,0,1,0,0,0,1,0,1,1,0,0,1,1,1,1,0,1,1,1,0,1,0,0,0,1,0,1,1,1,1,0,0,0,1,1,1,0,1,1,1,0,0,0,1,0,1,0,0,1,1,1,1,1,0,0,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,0,1,0,0,0,1,1,0,0,0,1,0,1,1,1,1,0,1,0,1,1,1,0,0,1,0,1,0,1,0,0,1,1,0,0,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,1,1,1,0,1,1,0,0,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,0,1,0,1,0,1,1,1,1,0,1,1,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,0,0,1,1,1,0,1,0,1,0,0,1,1,0,0,0,1,1,1,1,0,0,1,1,0,1,0,0,1,1,1,0,0,0,1,0,1,1,1,1,1,0,0,1,0,0,1,0,1,1,1,0,0,1,1,0,1,0,1,1,0,1,0,0,1,1,1,0,1,0,1,1,0,1,1,0,1,0,1,0,0,1,1,1,0,1,1,1,1,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,0,1,0,0,0,1,1,1,1,0,0,1,0,0,1,1,1,0,0,1,0,1,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,1,0,1,1,0,0,0,1,0,1,1,0,0,1,1,0,1,0,1,0,0,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,1,1,0,1,0,1,1,1,1,0,1,1,0,1,1,1,0,1,1,1,1,0,0,0,0,0,1,0,1,0,1,1,1,1,0,1,1,0,0,0,1,1,0,0,1,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,0,0,1,1,0,1,0,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,1,0,1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,1,1,1,1,0,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,1,1,1,0,0,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,1,1,0,1,0,1,1,1,0,1,1,0,1,0,1,1,1,0,1,0,0,0,1,1,0,1,1,0,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,1,1,0,0,1,1,1,1,0,1,1,0,1,1,1,0,1,0,1,0,0,1,0,1,0,0,1,1,1,0,1,1,0,0,0,1,0,1,1,1,0,1,0,0,0,1,0,1,1,0,1,0,1,0,1,1,0,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,1,1,0,0,0,0,0,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,1,1,0,1,1,1,1,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,0,1,1,0,0,1,1,1,1,1,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,0,1,0,0,0,1,1,0,1,1,1,0,1,1,0,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,1,0,1,0,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,1,1,0,1,1,1,1,0,0,1,0,1,0,0,0,1,1,0,0,1,1,0,1,0,1,1,0,0,0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,0,1,1,1,0,1,0,1,0,0,1,0,1,0,1,1,1,0,1,1,0,1,1,0,1,0,1,0,1,1,1,1,1,1,1,1,0,1,1,0,0,0,1,0,0,1,0,1,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,1,1,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,1,0,1,1,0,0,1,1,0,0,1,1,0,1,0,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,1,1,1,0,1,0,0,0,0,1,1,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,0,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,1,0,0,0,0,1,1,0,1,1,1,0,0,1,0,0,0,0,1,1,1,1,1,1,1,0,1,0,1,0,1,0,0,1,1,1,0,1,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0,1,1,1,0,0,1,1,0,1,1,0,1,0,1,0,1,0,1,0,0,0,1,1,1,0,0,0,0,1,0,0,0,1,0,1,1,0,0,1,0,1,1,1,1,1,1,0,1,0,1,1,1,0,0,1,0,1,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,0,1,0,0,1,1,0,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,0,1,1,0,1,1,1,0,1,1,1,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,0,0,1,0,1,0,0,1,1,0,1,1,1,1,0,1,0,0,0,1,0,1,1,0,1,1,1,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,1,1,1,0,1,0,1,0,1,1,0,1,1,1,1,1,0,0,0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1,0,1,0,0,1,1,0,0,0,1,1,0,1,0,0,0,1,1,0,1,1,0,1,1,0,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,1,0,1,1,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0,1,0,1,1,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,0,1,0,1,1,1,1,0,1,1,1,0,0,0,1,0,0,0,1,0,1,1,0,1,1,0,0,0,1,1,1,0,0,0,1,1,0,0,1,1,0,1,0,0,1,1,0,1,1,1,0,1,1,0,0,0,0,0,1,0,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,1,0,0,0,1,1,1,1,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,1,0,1,0,1,1,1,0,0,0,0,1,0,0,1,0,1,1,0,0,0,0,1,0,0,1,1,0,1,1,1,0,1,1,1,0,1,1,0,1,1,0,0,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,0,1,1,1,0,1,0,1,1,0,0,1,0,0,0,1,0,0,1,1,0,1,1,1,1,1,0,0,1,1,0,0,1,0,1,0,0,0,1,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,1,1,0,0,0,0,1,1,1,1,0,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,1,1,0,0,1,0,1,1,1,0,0,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,0,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,0,1,1,1,0,0,1,0,1,0,1,0,1,1,0,1,0,1,1,1,1,1,1,1,0,0,0,1,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,1,0,1,1,1,0,0,0,0,0,1,1,0,0,1,1,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,1,0,1,1,0,1,1,0,1,0,1,0,1,0,0,0,1,1,0,1,1,0,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,1,1,0,1,0,1,0,0,1,1,0,1,1,0,1,0,1,1,1,1,0,0,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,1,0,0,0,0,1,0,1,0,1,1,1,1,0,0,0,1,1,0,1,1,0,1,1,1,0,1,1,1,1,0,0,0,0,1,0,0,1,0,1,1,1,0,0,0,1,1,0,0,0,1,0,0,0,0,1,1,0,0,1,0,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,1,1,0,1,0,1,0,1,0,1,0,1,1,1,1,0,0,0,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,1,0,0,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,0,1,1,1,0,1,1,0,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,1,0,1,1,1,1,0,1,1,0,0,1,0,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,1,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,0,1,1,0,1,0,0,0,0,1,0,1,0,0,0,1,1,0,0,0,0,1,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,1,0,1,1,1,1,1,0,0,0,1,0,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,1,1,1,1,0,1,1,1,0,1,1,0,1,0,1,0,0,1,1,1,0,1,0,1,1,0,0,1,1,0]},__routerFilterDynamic:{numItems:17,errorRate:1e-4,numBits:326,numHashes:14,bitArray:[1,1,0,1,1,1,0,0,1,1,1,1,1,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,0,0,1,0,1,1,1,0,1,1,0,1,0,0,1,0,1,1,1,0,1,0,1,1,1,0,0,1,0,1,1,0,0,1,0,0,1,0,0,1,1,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,0,0,1,0,1,0,0,1,0,0,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,1,1,1,0,1,0,1,1,0,1,1,0,1,1,1,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,1,0,0,1,1,0,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,0,1,1,1,0,0,1,1,1,0,1,0,1,0,1,0,0,1,1,0,1,1,1,1,0,1,1,0,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,0,1,0,1,1,0,1,1,1,0,0,1,0,1,0,0,1,0,0,1,0,1,1]},sortedPages:["/_app"]}}(void 0,"/api/v1/:path*","/api/v1"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|