@jheavenknows/bluerouter 1.0.67 → 1.0.68
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 +7 -7
- package/app/.next-cli-build/build-manifest.json +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.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.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.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.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.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.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.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.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.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.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/ollama-nodes/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/ollama-nodes/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.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.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.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.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.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.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.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.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.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.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.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/(dashboard)/dashboard/virtual-combos/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/virtual-combos/page_client-reference-manifest.js +1 -1
- 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.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 +3 -3
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- 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 +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.nft.json +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.nft.json +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.nft.json +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.nft.json +1 -1
- 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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.nft.json +1 -1
- 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.nft.json +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.nft.json +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.nft.json +1 -1
- 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.nft.json +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.nft.json +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.nft.json +1 -1
- 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.nft.json +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.nft.json +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.nft.json +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.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +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.nft.json +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.nft.json +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.nft.json +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.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.nft.json +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.nft.json +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.nft.json +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.nft.json +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/ollama-model-memory/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/reservations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/[id]/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/ollama-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/ollama-routing-targets/route.js.nft.json +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.nft.json +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.nft.json +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.nft.json +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.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.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.nft.json +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.nft.json +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.nft.json +1 -1
- 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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.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 +1 -1
- 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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.nft.json +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.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.nft.json +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.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.nft.json +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.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.nft.json +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.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.nft.json +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.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.nft.json +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/api/virtual-combos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/virtual-combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/virtual-combos/preview/route.js +1 -1
- package/app/.next-cli-build/server/app/api/virtual-combos/preview/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/virtual-combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/virtual-combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +3 -3
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- 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 +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
- 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 +6 -6
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- 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 +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk/dashboard/ollama-nodes/__PAGE__.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk/dashboard/ollama-nodes.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/ollama-nodes.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +4 -4
- 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 +4 -4
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +4 -4
- 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 +4 -4
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +4 -4
- 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 +4 -4
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
- 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 +6 -6
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- 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 +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard/virtual-combos/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard/virtual-combos.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_head.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_index.segment.rsc +3 -3
- package/app/.next-cli-build/server/app/dashboard/virtual-combos.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +5 -5
- 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 +5 -5
- 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 +3 -3
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +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 +3 -3
- 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 +3 -3
- 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 +3 -3
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/landing.html +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +3 -3
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- 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.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 +3 -3
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +3 -3
- 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 +3 -3
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
- 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.nft.json +1 -1
- package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +7 -7
- package/app/.next-cli-build/server/chunks/1336.js +199 -0
- package/app/.next-cli-build/server/chunks/1807.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/4746.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/8895.js +1 -199
- package/app/.next-cli-build/server/middleware-build-manifest.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/chunks/{1321-be4987849d0d77ef.js → 1321-ab586432c5f2fe3f.js} +1 -1
- package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/upgrade-1.0.67-to-1.0.68-1.0.68-20260528-104113/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/static/{3Q8AwccjLy8JolXgCc7Xe → zzxAWq5zwGSsDKtBWl_gF}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{3Q8AwccjLy8JolXgCc7Xe → zzxAWq5zwGSsDKtBWl_gF}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";exports.id=1336,exports.ids=[1336],exports.modules={71336:(a,b,c)=>{c.d(b,{q7:()=>G});let d="u">typeof process&&process.versions?.node&&!0,e="u">typeof process&&process.env||{},f="false"!==e.ENABLE_REQUEST_LOGS,g=null,h=null,i=null,j={expiresAt:0,config:null},k=new Set;async function l(){if(d&&f&&!g)try{g=await Promise.resolve().then(c.t.bind(c,29021,23)),h=await Promise.resolve().then(c.t.bind(c,33873,23)),i=e.REQUEST_LOG_DIR||(e.DATA_DIR?h.join(e.DATA_DIR,"logs","requests"):null)||h.join("u">typeof process&&process.cwd?process.cwd():".","logs")}catch{}}function m(a,b){k.has(a)||(k.add(a),console.log(b))}function n(a){return Array.isArray(a)?a[0]||"":a||""}function o(a={}){let b={};for(let[c,d]of Object.entries(a||{}))b[c.toLowerCase()]=d;return b}function p(a={}){let b=o(a);return{client_ip:String(n(b["x-9r-client-ip"])||n(b["x-forwarded-for"])||"").split(",")[0].trim().replace(/^::ffff:/,"").replace(/^::1$/,"127.0.0.1"),client_port:String(n(b["x-9r-client-port"])||""),client_user_agent:String(n(b["x-9r-client-user-agent"])||n(b["user-agent"])||""),client_host:String(n(b["x-9r-client-host"])||n(b.host)||"")}}function q(a={}){let b=o(a);return{source_tool:String(n(b["x-9r-source-tool"])||""),source_tool_label:String(n(b["x-9r-source-tool-label"])||""),source_host:String(n(b["x-9r-source-host"])||n(b.host)||"")}}function r(a={},b={}){return{...a,...Object.fromEntries(Object.entries(b||{}).filter(([,a])=>null!=a&&""!==String(a)))}}async function s(a){try{let b=await Promise.resolve().then(c.t.bind(c,87550,23)),d=new(b.default||b)(a);return d.pragma("journal_mode = WAL"),d.pragma("busy_timeout = 5000"),{kind:"better-sqlite3",db:d,get:(a,b=[])=>d.prepare(a).get(...b),exec(a){d.exec(a)},run:(a,b=[])=>d.prepare(a).run(...b),close(){d.close()}}}catch(d){let b=new(await Promise.resolve().then(c.t.bind(c,79868,23))).DatabaseSync(a);return b.exec("PRAGMA journal_mode = WAL"),b.exec("PRAGMA busy_timeout = 5000"),{kind:"node:sqlite",db:b,get:(a,c=[])=>b.prepare(a).get(...c),exec(a){b.exec(a)},run:(a,c=[])=>b.prepare(a).run(...c),close(){b.close()}}}}async function t(){if(await l(),!g||!h)return null;let a=Date.now();if(j.config&&j.expiresAt>a)return j.config;let b=null;try{let a=h?e.PROMPT_LOG_CONFIG_DB?e.PROMPT_LOG_CONFIG_DB:e.DATA_DIR?h.join(e.DATA_DIR,"db","data.sqlite"):null:null;if(a&&g.existsSync(a)){let c=await s(a);try{let a=c.get("SELECT data FROM settings WHERE id = 1");a?.data&&(b=JSON.parse(a.data).promptLogDb||null)}finally{c.close()}}}catch(a){m("config-read",`[PromptDB] Failed to read config: ${a.message}`)}return b||"true"!==e.PROMPT_LOG_DB_ENABLED||(b={enabled:!0,type:"sqlite",sqlitePath:e.PROMPT_LOG_DB||(e.DATA_DIR?h.join(e.DATA_DIR,"logs","promptLogs.sqlite"):""),logClientRequest:!0,logSourceRequest:!0,logTargetRequest:!0,logProviderResponse:"true"===e.PROMPT_LOG_DB_RESPONSE,logErrors:!0}),j={config:b,expiresAt:a+5e3},b}function u(a){return"postgres"===a?`
|
|
2
|
+
CREATE TABLE IF NOT EXISTS prompt_logs (
|
|
3
|
+
id TEXT PRIMARY KEY,
|
|
4
|
+
created_at TIMESTAMPTZ NOT NULL,
|
|
5
|
+
session_id TEXT,
|
|
6
|
+
source_format TEXT,
|
|
7
|
+
target_format TEXT,
|
|
8
|
+
model TEXT,
|
|
9
|
+
endpoint TEXT,
|
|
10
|
+
stage TEXT,
|
|
11
|
+
provider_url TEXT,
|
|
12
|
+
provider TEXT,
|
|
13
|
+
account_name TEXT,
|
|
14
|
+
connection_id TEXT,
|
|
15
|
+
display_model TEXT,
|
|
16
|
+
client_ip TEXT,
|
|
17
|
+
client_port TEXT,
|
|
18
|
+
client_user_agent TEXT,
|
|
19
|
+
client_host TEXT,
|
|
20
|
+
source_tool TEXT,
|
|
21
|
+
source_tool_label TEXT,
|
|
22
|
+
source_host TEXT,
|
|
23
|
+
prompt_text TEXT,
|
|
24
|
+
full_request_json JSONB,
|
|
25
|
+
response_text TEXT,
|
|
26
|
+
status_code INTEGER,
|
|
27
|
+
error_text TEXT,
|
|
28
|
+
meta_json JSONB
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
CREATE INDEX IF NOT EXISTS idx_prompt_logs_created_at
|
|
32
|
+
ON prompt_logs(created_at DESC);
|
|
33
|
+
|
|
34
|
+
CREATE INDEX IF NOT EXISTS idx_prompt_logs_model
|
|
35
|
+
ON prompt_logs(model);
|
|
36
|
+
|
|
37
|
+
CREATE INDEX IF NOT EXISTS idx_prompt_logs_stage
|
|
38
|
+
ON prompt_logs(stage);
|
|
39
|
+
|
|
40
|
+
CREATE INDEX IF NOT EXISTS idx_prompt_logs_session
|
|
41
|
+
ON prompt_logs(session_id);
|
|
42
|
+
|
|
43
|
+
CREATE INDEX IF NOT EXISTS idx_prompt_logs_client_ip
|
|
44
|
+
ON prompt_logs(client_ip);
|
|
45
|
+
|
|
46
|
+
CREATE INDEX IF NOT EXISTS idx_prompt_logs_source_tool
|
|
47
|
+
ON prompt_logs(source_tool);
|
|
48
|
+
`:"mysql"===a?`
|
|
49
|
+
CREATE TABLE IF NOT EXISTS prompt_logs (
|
|
50
|
+
id VARCHAR(80) PRIMARY KEY,
|
|
51
|
+
created_at DATETIME(3) NOT NULL,
|
|
52
|
+
session_id VARCHAR(255),
|
|
53
|
+
source_format VARCHAR(80),
|
|
54
|
+
target_format VARCHAR(80),
|
|
55
|
+
model VARCHAR(255),
|
|
56
|
+
endpoint TEXT,
|
|
57
|
+
stage VARCHAR(80),
|
|
58
|
+
provider_url TEXT,
|
|
59
|
+
provider VARCHAR(120),
|
|
60
|
+
account_name VARCHAR(255),
|
|
61
|
+
connection_id VARCHAR(120),
|
|
62
|
+
display_model VARCHAR(512),
|
|
63
|
+
client_ip VARCHAR(64),
|
|
64
|
+
client_port VARCHAR(32),
|
|
65
|
+
client_user_agent TEXT,
|
|
66
|
+
client_host TEXT,
|
|
67
|
+
source_tool VARCHAR(80),
|
|
68
|
+
source_tool_label VARCHAR(120),
|
|
69
|
+
source_host VARCHAR(255),
|
|
70
|
+
prompt_text LONGTEXT,
|
|
71
|
+
full_request_json JSON,
|
|
72
|
+
response_text LONGTEXT,
|
|
73
|
+
status_code INT,
|
|
74
|
+
error_text TEXT,
|
|
75
|
+
meta_json JSON,
|
|
76
|
+
INDEX idx_prompt_logs_created_at (created_at),
|
|
77
|
+
INDEX idx_prompt_logs_model (model),
|
|
78
|
+
INDEX idx_prompt_logs_stage (stage),
|
|
79
|
+
INDEX idx_prompt_logs_session (session_id),
|
|
80
|
+
INDEX idx_prompt_logs_client_ip (client_ip),
|
|
81
|
+
INDEX idx_prompt_logs_source_tool (source_tool)
|
|
82
|
+
);
|
|
83
|
+
`:`
|
|
84
|
+
CREATE TABLE IF NOT EXISTS prompt_logs (
|
|
85
|
+
id TEXT PRIMARY KEY,
|
|
86
|
+
created_at TEXT NOT NULL,
|
|
87
|
+
session_id TEXT,
|
|
88
|
+
source_format TEXT,
|
|
89
|
+
target_format TEXT,
|
|
90
|
+
model TEXT,
|
|
91
|
+
endpoint TEXT,
|
|
92
|
+
stage TEXT,
|
|
93
|
+
provider_url TEXT,
|
|
94
|
+
provider TEXT,
|
|
95
|
+
account_name TEXT,
|
|
96
|
+
connection_id TEXT,
|
|
97
|
+
display_model TEXT,
|
|
98
|
+
client_ip TEXT,
|
|
99
|
+
client_port TEXT,
|
|
100
|
+
client_user_agent TEXT,
|
|
101
|
+
client_host TEXT,
|
|
102
|
+
source_tool TEXT,
|
|
103
|
+
source_tool_label TEXT,
|
|
104
|
+
source_host TEXT,
|
|
105
|
+
prompt_text TEXT,
|
|
106
|
+
full_request_json TEXT,
|
|
107
|
+
response_text TEXT,
|
|
108
|
+
status_code INTEGER,
|
|
109
|
+
error_text TEXT,
|
|
110
|
+
meta_json TEXT
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
CREATE INDEX IF NOT EXISTS idx_prompt_logs_created_at
|
|
114
|
+
ON prompt_logs(created_at DESC);
|
|
115
|
+
|
|
116
|
+
CREATE INDEX IF NOT EXISTS idx_prompt_logs_model
|
|
117
|
+
ON prompt_logs(model);
|
|
118
|
+
|
|
119
|
+
CREATE INDEX IF NOT EXISTS idx_prompt_logs_stage
|
|
120
|
+
ON prompt_logs(stage);
|
|
121
|
+
|
|
122
|
+
CREATE INDEX IF NOT EXISTS idx_prompt_logs_session
|
|
123
|
+
ON prompt_logs(session_id);
|
|
124
|
+
`}async function v(a){a.get;let b=[];try{"better-sqlite3"===a.kind?b=a.db.prepare("PRAGMA table_info(prompt_logs)").all():"node:sqlite"===a.kind&&(b=a.db.prepare("PRAGMA table_info(prompt_logs)").all())}catch{b=[]}let c=new Set(b.map(a=>a.name)),d=(b,d)=>{c.has(b)||a.exec(`ALTER TABLE prompt_logs ADD COLUMN ${b} ${d};`)};d("client_ip","TEXT"),d("client_port","TEXT"),d("client_user_agent","TEXT"),d("client_host","TEXT"),d("source_tool","TEXT"),d("source_tool_label","TEXT"),d("source_host","TEXT"),d("provider","TEXT"),d("account_name","TEXT"),d("connection_id","TEXT"),d("display_model","TEXT"),a.exec("CREATE INDEX IF NOT EXISTS idx_prompt_logs_client_ip ON prompt_logs(client_ip);"),a.exec("CREATE INDEX IF NOT EXISTS idx_prompt_logs_source_tool ON prompt_logs(source_tool);")}async function w(a){await a.query(`
|
|
125
|
+
ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS client_ip TEXT;
|
|
126
|
+
ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS client_port TEXT;
|
|
127
|
+
ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS client_user_agent TEXT;
|
|
128
|
+
ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS client_host TEXT;
|
|
129
|
+
ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS source_tool TEXT;
|
|
130
|
+
ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS source_tool_label TEXT;
|
|
131
|
+
ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS source_host TEXT;
|
|
132
|
+
ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS provider TEXT;
|
|
133
|
+
ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS account_name TEXT;
|
|
134
|
+
ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS connection_id TEXT;
|
|
135
|
+
ALTER TABLE prompt_logs ADD COLUMN IF NOT EXISTS display_model TEXT;
|
|
136
|
+
|
|
137
|
+
CREATE INDEX IF NOT EXISTS idx_prompt_logs_client_ip
|
|
138
|
+
ON prompt_logs(client_ip);
|
|
139
|
+
|
|
140
|
+
CREATE INDEX IF NOT EXISTS idx_prompt_logs_source_tool
|
|
141
|
+
ON prompt_logs(source_tool);
|
|
142
|
+
`)}async function x(a,b,c,d){let[e]=await a.query(`
|
|
143
|
+
SELECT 1 AS found
|
|
144
|
+
FROM INFORMATION_SCHEMA.COLUMNS
|
|
145
|
+
WHERE TABLE_SCHEMA = ?
|
|
146
|
+
AND TABLE_NAME = ?
|
|
147
|
+
AND COLUMN_NAME = ?
|
|
148
|
+
LIMIT 1
|
|
149
|
+
`,[b,c,d]);return e.length>0}async function y(a,b,c,d){let[e]=await a.query(`
|
|
150
|
+
SELECT 1 AS found
|
|
151
|
+
FROM INFORMATION_SCHEMA.STATISTICS
|
|
152
|
+
WHERE TABLE_SCHEMA = ?
|
|
153
|
+
AND TABLE_NAME = ?
|
|
154
|
+
AND INDEX_NAME = ?
|
|
155
|
+
LIMIT 1
|
|
156
|
+
`,[b,c,d]);return e.length>0}async function z(a,b){let c=async(c,d)=>{await x(a,b.database,"prompt_logs",c)||await a.query(`ALTER TABLE prompt_logs ADD COLUMN ${c} ${d}`)};await c("client_ip","VARCHAR(64)"),await c("client_port","VARCHAR(32)"),await c("client_user_agent","TEXT"),await c("client_host","TEXT"),await c("source_tool","VARCHAR(80)"),await c("source_tool_label","VARCHAR(120)"),await c("source_host","VARCHAR(255)"),await c("provider","VARCHAR(120)"),await c("account_name","VARCHAR(255)"),await c("connection_id","VARCHAR(120)"),await c("display_model","VARCHAR(512)"),await y(a,b.database,"prompt_logs","idx_prompt_logs_client_ip")||await a.query("CREATE INDEX idx_prompt_logs_client_ip ON prompt_logs(client_ip)"),await y(a,b.database,"prompt_logs","idx_prompt_logs_source_tool")||await a.query("CREATE INDEX idx_prompt_logs_source_tool ON prompt_logs(source_tool)")}function A(a){return String(a||"").trim()}function B(a){let b=A(a);if(!b)return"";try{return new URL(b).hostname||""}catch{return b.replace(/^https?:\/\//,"").replace(/\/.*$/,"").replace(/:\d+$/,"")}}async function C(a){try{var b;if(await l(),!g||!h)return;let d=await t();if(b=a.stage,!d?.enabled||("client"===b?!1===d.logClientRequest:"source"===b||"openai"===b?!1===d.logSourceRequest:"target"===b?!1===d.logTargetRequest:"provider_response"===b?!0!==d.logProviderResponse:"error"===b&&!1===d.logErrors))return;let f=new Date().toISOString(),i=(a.promptText||(function a(b,c=0,d=[]){if(null==b||c>10||d.join("\n").length>2e5)return d;if("string"==typeof b)return b.trim()&&d.push(b),d;if(Array.isArray(b)){for(let e of b)a(e,c+1,d);return d}if("object"==typeof b)for(let[e,f]of Object.entries(b)){let b=e.toLowerCase();["content","text","prompt","input","message"].includes(b)?a(f,c+1,d):c<5&&("messages"===b||"contents"===b||"parts"===b||"body"===b)&&a(f,c+1,d)}return d})(a.request||a.response||{}).join("\n\n")).slice(0,5e5),j=p(a.headers||a.request?.headers||{}),k=q(a.headers||a.request?.headers||{}),m=r(j,a.clientInfo||{}),n=r(k,a.sourceInfo||{}),o=function(a={}){var b,c;let d,e,f,g=a.context||{},h=function(a){let b=A(a),c=b.indexOf("/");if(c<=0)return"";let d=b.slice(0,c);return/^[a-z][a-z0-9_-]{1,60}$/i.test(d)?d:""}(a.model),i=A(g.provider)||A(a.provider)||A(a.providerId)||A(a.provider_id)||h||"",j=(d=A(i),/^openai-compatible-chat-[0-9a-f-]{20,}$/i.test(d)||/^openai-compatible-[0-9a-f-]{20,}$/i.test(d))?"":i,k=A(g.accountName)||A(g.account_name)||A(g.connectionName)||A(a.accountName)||A(a.account_name)||A(a.keyName)||A(a.key_name)||"",l=A(g.connectionId)||A(a.connectionId)||A(a.connection_id)||"",m=(b=A(a.model),c=j||h,e=A(b),(f=A(c))&&e.startsWith(`${f}/`)?e.slice(f.length+1):e),n=B(a.providerUrl)||B(a.endpoint),o="";return j&&k&&k!==j?o=`${j}/${k}`:j?o=j:k?o=k:n&&(o=n),{provider:j||null,accountName:k||null,connectionId:l||null,displayModel:o&&m?`${o}/${m}`:null}}(a),x={id:`${Date.now()}_${Math.random().toString(16).slice(2)}`,created_at:f,session_id:a.sessionId||null,source_format:a.sourceFormat||null,target_format:a.targetFormat||null,model:a.model||null,endpoint:a.endpoint||null,stage:a.stage||null,provider_url:a.providerUrl||null,provider:o.provider||null,account_name:o.accountName||null,connection_id:o.connectionId||null,display_model:o.displayModel||null,client_ip:m.client_ip||null,client_port:m.client_port||null,client_user_agent:m.client_user_agent||null,client_host:m.client_host||null,source_tool:n.source_tool||null,source_tool_label:n.source_tool_label||null,source_host:n.source_host||null,prompt_text:i||null,full_request_json:a.request?JSON.stringify(a.request):null,response_text:"string"==typeof a.response?a.response:null,status_code:a.statusCode||null,error_text:a.errorText||null,meta_json:a.meta?JSON.stringify(a.meta):null};if("postgres"===d.type){let a=new(await Promise.resolve().then(c.bind(c,64939))).Client({host:d.host,port:Number(d.port||5432),database:d.database,user:d.username,password:d.password,ssl:!!d.ssl&&{rejectUnauthorized:!1}});try{await a.connect(),await a.query(u("postgres")),await w(a),await a.query(`INSERT INTO prompt_logs (
|
|
157
|
+
id, created_at, session_id, source_format, target_format, model,
|
|
158
|
+
endpoint, stage, provider_url, provider, account_name, connection_id, display_model,
|
|
159
|
+
client_ip, client_port, client_user_agent, client_host,
|
|
160
|
+
source_tool, source_tool_label, source_host,
|
|
161
|
+
prompt_text, full_request_json,
|
|
162
|
+
response_text, status_code, error_text, meta_json
|
|
163
|
+
) VALUES (
|
|
164
|
+
$1, $2, $3, $4, $5, $6,
|
|
165
|
+
$7, $8, $9, $10, $11, $12, $13,
|
|
166
|
+
$14, $15, $16, $17,
|
|
167
|
+
$18, $19, $20,
|
|
168
|
+
$21, $22::jsonb,
|
|
169
|
+
$23, $24, $25, $26::jsonb
|
|
170
|
+
)`,[x.id,x.created_at,x.session_id,x.source_format,x.target_format,x.model,x.endpoint,x.stage,x.provider_url,x.provider,x.account_name,x.connection_id,x.display_model,x.client_ip,x.client_port,x.client_user_agent,x.client_host,x.source_tool,x.source_tool_label,x.source_host,x.prompt_text,x.full_request_json,x.response_text,x.status_code,x.error_text,x.meta_json]),x.session_id&&x.display_model&&await a.query(`UPDATE prompt_logs
|
|
171
|
+
SET provider = COALESCE(provider, $1),
|
|
172
|
+
account_name = COALESCE(account_name, $2),
|
|
173
|
+
connection_id = COALESCE(connection_id, $3),
|
|
174
|
+
display_model = $4
|
|
175
|
+
WHERE session_id = $5`,[x.provider,x.account_name,x.connection_id,x.display_model,x.session_id])}finally{await a.end()}return}if("mysql"===d.type){let a=await c.e(8491).then(c.t.bind(c,38491,19)),b=await a.createConnection({host:d.host,port:Number(d.port||3306),database:d.database,user:d.username,password:d.password,ssl:d.ssl?{}:void 0,multipleStatements:!0});try{await b.query(u("mysql")),await z(b,d),await b.query(`INSERT INTO prompt_logs (
|
|
176
|
+
id, created_at, session_id, source_format, target_format, model,
|
|
177
|
+
endpoint, stage, provider_url, provider, account_name, connection_id, display_model,
|
|
178
|
+
client_ip, client_port, client_user_agent, client_host,
|
|
179
|
+
source_tool, source_tool_label, source_host,
|
|
180
|
+
prompt_text, full_request_json,
|
|
181
|
+
response_text, status_code, error_text, meta_json
|
|
182
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CAST(? AS JSON), ?, ?, ?, CAST(? AS JSON))`,[x.id,x.created_at.replace("T"," ").replace("Z",""),x.session_id,x.source_format,x.target_format,x.model,x.endpoint,x.stage,x.provider_url,x.provider,x.account_name,x.connection_id,x.display_model,x.client_ip,x.client_port,x.client_user_agent,x.client_host,x.source_tool,x.source_tool_label,x.source_host,x.prompt_text,x.full_request_json,x.response_text,x.status_code,x.error_text,x.meta_json]),x.session_id&&x.display_model&&await b.query(`UPDATE prompt_logs
|
|
183
|
+
SET provider = COALESCE(provider, ?),
|
|
184
|
+
account_name = COALESCE(account_name, ?),
|
|
185
|
+
connection_id = COALESCE(connection_id, ?),
|
|
186
|
+
display_model = ?
|
|
187
|
+
WHERE session_id = ?`,[x.provider,x.account_name,x.connection_id,x.display_model,x.session_id])}finally{await b.end()}return}let y=d.sqlitePath||(e.DATA_DIR?h.join(e.DATA_DIR,"logs","promptLogs.sqlite"):null);if(!y)return;g.mkdirSync(h.dirname(y),{recursive:!0});let C=await s(y);try{C.exec(u("sqlite")),await v(C),C.run(`INSERT INTO prompt_logs (
|
|
188
|
+
id, created_at, session_id, source_format, target_format, model,
|
|
189
|
+
endpoint, stage, provider_url, provider, account_name, connection_id, display_model,
|
|
190
|
+
client_ip, client_port, client_user_agent, client_host,
|
|
191
|
+
source_tool, source_tool_label, source_host,
|
|
192
|
+
prompt_text, full_request_json,
|
|
193
|
+
response_text, status_code, error_text, meta_json
|
|
194
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[x.id,x.created_at,x.session_id,x.source_format,x.target_format,x.model,x.endpoint,x.stage,x.provider_url,x.provider,x.account_name,x.connection_id,x.display_model,x.client_ip,x.client_port,x.client_user_agent,x.client_host,x.source_tool,x.source_tool_label,x.source_host,x.prompt_text,x.full_request_json,x.response_text,x.status_code,x.error_text,x.meta_json]),x.session_id&&x.display_model&&C.run(`UPDATE prompt_logs
|
|
195
|
+
SET provider = COALESCE(provider, ?),
|
|
196
|
+
account_name = COALESCE(account_name, ?),
|
|
197
|
+
connection_id = COALESCE(connection_id, ?),
|
|
198
|
+
display_model = ?
|
|
199
|
+
WHERE session_id = ?`,[x.provider,x.account_name,x.connection_id,x.display_model,x.session_id])}finally{C.close()}}catch(a){m("db-write",`[PromptDB] Failed to write prompt log: ${a.message}`)}}async function D(a,b,c){if(await l(),!g||!i)return null;try{g.existsSync(i)||g.mkdirSync(i,{recursive:!0});let d=function(a=new Date){let b=a=>String(a).padStart(2,"0"),c=a.getFullYear(),d=b(a.getMonth()+1),e=b(a.getDate()),f=b(a.getHours()),g=b(a.getMinutes()),h=b(a.getSeconds()),i=String(a.getMilliseconds()).padStart(3,"0");return`${c}${d}${e}_${f}${g}${h}_${i}`}(),e=(c||"unknown").replace(/[/:]/g,"-"),f=`${a}_${b}_${e}_${d}`,j=h.join(i,f);return g.mkdirSync(j,{recursive:!0}),j}catch(a){return console.log("[LOG] Failed to create log session:",a.message),null}}function E(a,b,c){if(g&&a)try{let d=h.join(a,b);g.writeFileSync(d,JSON.stringify(c,null,2))}catch(a){console.log(`[LOG] Failed to write ${b}:`,a.message)}}function F(a){if(!a)return{};let b={...a},c=["authorization","x-api-key","cookie","token","api-key","openai-api-key","anthropic-api-key","gemini-api-key","google-api-key"];for(let a of Object.keys(b)){let d=a.toLowerCase();if(c.some(a=>d.includes(a))){let c=String(b[a]||"");c.length>16?b[a]=`${c.slice(0,6)}...${c.slice(-4)}`:c.length>0&&(b[a]="***")}}return b}async function G(a,b,c,d={}){if(!f)return{sessionPath:null,logClientRawRequest(){},logRawRequest(){},logOpenAIRequest(){},logTargetRequest(){},logProviderResponse(){},appendProviderChunk(){},appendOpenAIChunk(){},logConvertedResponse(){},appendConvertedChunk(){},logError(){}};let e=await D(a,b,c),i=e?String(e).split(/[\\/]/).pop():null,j={},k={};return{get sessionPath(){return e},logClientRawRequest(f,g,h={}){let l={timestamp:new Date().toISOString(),endpoint:f,headers:F(h),body:g};j=r(j,p(h)),k=r(k,q(h)),E(e,"1_req_client.json",l),C({stage:"client",clientInfo:j,sourceInfo:k,sessionId:i,sourceFormat:a,targetFormat:b,model:c,context:d,endpoint:f,request:l})},logRawRequest(f,g={}){let h={timestamp:new Date().toISOString(),headers:F(g),body:f};j=r(j,p(g)),k=r(k,q(g)),E(e,"2_req_source.json",h),C({stage:"source",clientInfo:j,sourceInfo:k,sessionId:i,sourceFormat:a,targetFormat:b,model:c,context:d,request:h})},logOpenAIRequest(f){let g={timestamp:new Date().toISOString(),body:f};E(e,"3_req_openai.json",g),C({stage:"openai",clientInfo:j,sourceInfo:k,sessionId:i,sourceFormat:a,targetFormat:b,model:c,context:d,request:g})},logTargetRequest(f,g,h){let l={timestamp:new Date().toISOString(),url:f,headers:F(g),body:h};E(e,"4_req_target.json",l),C({stage:"target",clientInfo:j,sourceInfo:k,sessionId:i,sourceFormat:a,targetFormat:b,model:c,context:d,endpoint:f,providerUrl:f,request:l})},logProviderResponse(f,g,h,l){let m={timestamp:new Date().toISOString(),status:f,statusText:g,headers:h?"function"==typeof h.entries?Object.fromEntries(h.entries()):h:{},body:l};E(e,"5_res_provider.json",m),C({stage:"provider_response",clientInfo:j,sourceInfo:k,sessionId:i,sourceFormat:a,targetFormat:b,model:c,context:d,statusCode:f,response:l,meta:m})},appendProviderChunk(a){if(g&&e)try{let b=h.join(e,"5_res_provider.txt");g.appendFileSync(b,a)}catch{}},appendOpenAIChunk(a){if(g&&e)try{let b=h.join(e,"6_res_openai.txt");g.appendFileSync(b,a)}catch{}},logConvertedResponse(a){E(e,"7_res_client.json",{timestamp:new Date().toISOString(),body:a})},appendConvertedChunk(a){if(g&&e)try{let b=h.join(e,"7_res_client.txt");g.appendFileSync(b,a)}catch{}},logError(f,g=null){let h={timestamp:new Date().toISOString(),error:f?.message||String(f),stack:f?.stack,requestBody:g};E(e,"6_error.json",h),C({stage:"error",clientInfo:j,sourceInfo:k,sessionId:i,sourceFormat:a,targetFormat:b,model:c,context:d,errorText:h.error,request:g,meta:h})}}}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=1807,exports.ids=[1807],exports.modules={31807:(a,b,c)=>{c.d(b,{H8:()=>h,Lw:()=>n,M9:()=>o,YA:()=>w,au:()=>y,hy:()=>p});var d=c(6774),e=c(19253),f=c(69773),g=c(35448);let h="ollama-local";function i(a){return String(a??"").trim()}function j(a,b=!1){return null==a||""===a?b:!0===a||"true"===a||1===a||"1"===a||"on"===a}function k(a,b=0){let c=Number(a);return Number.isFinite(c)?c:b}function l(a){return i(a).replace(/^.*\//,"").toLowerCase()}function m(a,b=0){if("string"==typeof a)return{pattern:i(a),priority:Math.max(1,100-5*b),enabled:!0};if(!a||"object"!=typeof a)return null;let c=i(a.pattern||a.model||a.name||a.id);return c?{pattern:c,priority:k(a.priority,Math.max(1,100-5*b)),enabled:!1!==a.enabled,notes:i(a.notes||"")}:null}function n(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 m(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=i(b).toLowerCase(),f=i(c.join("="));("priority"===d||"prio"===d)&&(e.priority=k(f,e.priority)),"enabled"===d&&(e.enabled=j(f,!0)),("notes"===d||"note"===d)&&(e.notes=f)}return m(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=>i(a)).filter(Boolean))]:[...new Set(String(b||"").split(/[\n,;]+/).map(a=>i(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:j(d.preferLoaded,!0),allowWakeSleeping:j(d.allowWakeSleeping,!0),requireGpu:j(d.requireGpu,!1),allowCpuFallback:j(d.allowCpuFallback,!0),allowMultiGpuSplit:j(d.allowMultiGpuSplit,!1),maxWakeVramMb:Math.max(0,k(d.maxWakeVramMb,0)),maxWakeRamMb:Math.max(0,k(d.maxWakeRamMb,0)),fallbackCombo:i(d.fallbackCombo||""),selectionPolicy:i(d.selectionPolicy||"best-fit")||"best-fit"}}function o(a={}){return i(a.type||a.comboType).toLowerCase()===h}function p(a={}){let b=i(a.name||a.id||a.exposedModel||a.model),c=i(a.exposedModel||a.model||a.name||a.id);return{...a,id:i(a.id)||b,name:b,exposedModel:c,enabled:!1!==a.enabled,type:h,localOllama:n(a.localOllama||a),description:i(a.description||"")}}function q(a,b){return k(a?.requirement?.[b],0)}function r(a,b,c={}){return{...a,eligible:!1,reason:b,...c}}function s(a){return q(a,"effectiveMinRamFreeMb")||q(a,"minRamFreeMb")}function t(a){return q(a,"effectiveMinVramFreeMb")||q(a,"minVramFreeMb")}function u(a){let b=k(a?.latencyMs||a?.health?.latencyMs,0);return b>0?b/20:0}async function v(a,b={}){p(a);let c=await (0,d.U1)();if(!1!==b.refresh){let a=Math.max(1e3,k(b.maxAgeMs,5e3));c=(await (0,e.sV)(c,{maxAgeMs:a})).nodes}return(0,f.o)(c)}async function w(a,b={}){let c=p(a),d=c.localOllama;if(!d.modelPatterns.length)return{combo:c,selected:null,eligible:[],rejected:[],error:"No model patterns configured"};let e=await v(c,b),f=e.map(a=>(function(a,b){let c,d,e,f=function(a,b=[]){let c=b.map(b=>(function(a,b){let c,d=i(a).replace(/^.*\//,""),e=i(b?.pattern);if(!e||b?.enabled===!1)return null;let f=d===e,g=l(d)===l(e),h=e.includes("*")&&(c=i(e).split("*").map(a=>a.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")).join(".*"),RegExp(`^${c}$`,"i")).test(d);return f||g||h?{pattern:e,priority:k(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(!f)return r(a,"model-not-in-combo");if(b.allowedNodeIds.length&&!b.allowedNodeIds.includes(String(a.nodeId)))return r(a,"node-not-allowed",{patternMatch:f});if(b.allowedPorts.length&&!b.allowedPorts.includes(Number(a.port)))return r(a,"port-not-allowed",{patternMatch:f});if(!1===a.okToRoute)return r(a,a.status||"target-not-routeable",{patternMatch:f});let g=Array.isArray(a.gpuIndices)&&a.gpuIndices.length>0,h=b.allowCpuFallback&&!b.requireGpu;if(b.requireGpu&&!g)return r(a,"gpu-required-no-gpu-scope",{patternMatch:f});if(!g&&!h)return r(a,"cpu-fallback-disabled",{patternMatch:f});if(!a.loaded&&!b.allowWakeSleeping)return r(a,"sleeping-wake-disabled",{patternMatch:f});if(!a.loaded){let c=t(a),d=s(a);if(b.maxWakeVramMb>0&&c>b.maxWakeVramMb)return r(a,"wake-vram-over-combo-limit",{patternMatch:f,wakeVramMb:c});if(b.maxWakeRamMb>0&&d>b.maxWakeRamMb)return r(a,"wake-ram-over-combo-limit",{patternMatch:f,wakeRamMb:d})}let j=(c=String(b.selectionPolicy||"best-fit").toLowerCase(),d=0,b.preferLoaded&&a.loaded&&(d+=1e3),a.loaded&&"loaded-first"===c&&(d+=500),d+=5*k(f?.priority,0),f?.matchType==="exact"?d+=300:f?.matchType==="case-insensitive"?d+=250:f?.matchType==="wildcard"&&(d+=180),d+=(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"),d+=Math.min(200,k(a.vramFreeMb,0)/1024*10),d+=Math.min(120,k(a.ramAvailableMb,0)/4096*5),a.loaded||(d-=t(a)/1024*20,d-=s(a)/1024*8),d-=u(a),"lowest-latency"===c&&(d-=3*u(a)),"balanced"===c&&(d+=20*Math.random()),Math.round(100*d)/100);return{...a,eligible:!0,reason:a.loaded?"loaded-ok":"sleeping-ok",patternMatch:f,score:j}})(a,d)),g=f.filter(a=>a.eligible).sort((a,b)=>b.score-a.score),h=f.filter(a=>!a.eligible);return{combo:c,selected:g[0]||null,eligible:g,rejected:h,counts:{targets:e.length,eligible:g.length,rejected:h.length}}}async function x(a,b={}){if(!a||a.loaded)return null;let c=a.requirement||{},d=k(c.effectiveMinRamFreeMb,0),e=k(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:k(b?.metadata?.ollamaReservationTtlMs,6e4),reason:"ollama-local-combo-wake"})}async function y({body:a,combo:b,request:c,log:d,handleFallback:e}={}){let f=await w(b,{maxAgeMs:5e3}),g=f.selected;if(!g){let b=f.combo?.localOllama?.fallbackCombo;return b&&"function"==typeof e?(d?.warn?.("OLLAMA_LOCAL_COMBO",`No local target for ${f.combo.name}; falling back to ${b}`),e({...a,model:b},b,f)):new Response(JSON.stringify({error:{message:`No eligible local Ollama target for ${f.combo?.name||a?.model||"local combo"}`,preview:{counts:f.counts,rejected:f.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"}})}await x(g,a);let h=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),i=`${g.endpoint}${h}`,j={...a,model:g.model};d?.info?.("OLLAMA_LOCAL_COMBO",`${f.combo.name} -> ${g.nodeName}:${g.port} ${g.model} (${g.reason}, score=${g.score})`);try{let a,b;return await fetch(i,{method:"POST",headers:((a=new Headers).set("Content-Type","application/json"),(b=c?.headers?.get?.("accept"))&&a.set("Accept",b),a),body:JSON.stringify(j),cache:"no-store"})}catch(c){let b=f.combo?.localOllama?.fallbackCombo;if(b&&"function"==typeof e)return d?.warn?.("OLLAMA_LOCAL_COMBO",`Local target failed; falling back to ${b}`,{error:c?.message}),e({...a,model:b},b,f);return new Response(JSON.stringify({error:{message:c?.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
|
+
"use strict";exports.id=1807,exports.ids=[1807],exports.modules={31807:(a,b,c)=>{c.d(b,{H8:()=>q,Lw:()=>w,M9:()=>x,YA:()=>F,au:()=>H,hy:()=>y});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";function l(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 m(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 n(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 o({requestedModel:a,comboName:b,target:c,body:d,upstreamBody:e,responseBody:f,status:g,latencyMs:i,request:k,routePath:m,error:p=null}){let q=`${c?.nodeId||"node"}:${c?.port||"port"}`,r=c?.model||a||b||"ollama-local",s=n(f),t=m||"/v1/chat/completions";await (0,h.E5)({model:r,provider:j,connectionId:q,status:p?`FAILED ${g||502}`:`OK ${g||200}`}).catch(()=>{}),p||await (0,h.sZ)({provider:j,model:r,connectionId:q,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 m=n(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:m,request:{endpoint:k||"",headers:l(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:p,request:k,routePath:m})).catch(()=>{})}async function p({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,l(d?.headers)),f.logRawRequest(a,l(d?.headers)),f}catch{return null}}let q="ollama-local";function r(a){return String(a??"").trim()}function s(a,b=!1){return null==a||""===a?b:!0===a||"true"===a||1===a||"1"===a||"on"===a}function t(a,b=0){let c=Number(a);return Number.isFinite(c)?c:b}function u(a){return r(a).replace(/^.*\//,"").toLowerCase()}function v(a,b=0){if("string"==typeof a)return{pattern:r(a),priority:Math.max(1,100-5*b),enabled:!0};if(!a||"object"!=typeof a)return null;let c=r(a.pattern||a.model||a.name||a.id);return c?{pattern:c,priority:t(a.priority,Math.max(1,100-5*b)),enabled:!1!==a.enabled,notes:r(a.notes||"")}:null}function w(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 v(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=r(b).toLowerCase(),f=r(c.join("="));("priority"===d||"prio"===d)&&(e.priority=t(f,e.priority)),"enabled"===d&&(e.enabled=s(f,!0)),("notes"===d||"note"===d)&&(e.notes=f)}return v(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=>r(a)).filter(Boolean))]:[...new Set(String(b||"").split(/[\n,;]+/).map(a=>r(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:s(d.preferLoaded,!0),allowWakeSleeping:s(d.allowWakeSleeping,!0),requireGpu:s(d.requireGpu,!1),allowCpuFallback:s(d.allowCpuFallback,!0),allowMultiGpuSplit:s(d.allowMultiGpuSplit,!1),maxWakeVramMb:Math.max(0,t(d.maxWakeVramMb,0)),maxWakeRamMb:Math.max(0,t(d.maxWakeRamMb,0)),fallbackCombo:r(d.fallbackCombo||""),selectionPolicy:r(d.selectionPolicy||"best-fit")||"best-fit"}}function x(a={}){return r(a.type||a.comboType).toLowerCase()===q}function y(a={}){let b=r(a.name||a.id||a.exposedModel||a.model),c=r(a.exposedModel||a.model||a.name||a.id);return{...a,id:r(a.id)||b,name:b,exposedModel:c,enabled:!1!==a.enabled,type:q,localOllama:w(a.localOllama||a),description:r(a.description||"")}}function z(a,b){return t(a?.requirement?.[b],0)}function A(a,b,c={}){return{...a,eligible:!1,reason:b,...c}}function B(a){return z(a,"effectiveMinRamFreeMb")||z(a,"minRamFreeMb")}function C(a){return z(a,"effectiveMinVramFreeMb")||z(a,"minVramFreeMb")}function D(a){let b=t(a?.latencyMs||a?.health?.latencyMs,0);return b>0?b/20:0}async function E(a,b={}){y(a);let c=await (0,d.U1)();if(!1!==b.refresh){let a=Math.max(1e3,t(b.maxAgeMs,5e3));c=(await (0,e.sV)(c,{maxAgeMs:a})).nodes}return(0,f.o)(c)}async function F(a,b={}){let c=y(a),d=c.localOllama;if(!d.modelPatterns.length)return{combo:c,selected:null,eligible:[],rejected:[],error:"No model patterns configured"};let e=await E(c,b),f=e.map(a=>(function(a,b){let c,d,e,f=function(a,b=[]){let c=b.map(b=>(function(a,b){let c,d=r(a).replace(/^.*\//,""),e=r(b?.pattern);if(!e||b?.enabled===!1)return null;let f=d===e,g=u(d)===u(e),h=e.includes("*")&&(c=r(e).split("*").map(a=>a.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")).join(".*"),RegExp(`^${c}$`,"i")).test(d);return f||g||h?{pattern:e,priority:t(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(!f)return A(a,"model-not-in-combo");if(b.allowedNodeIds.length&&!b.allowedNodeIds.includes(String(a.nodeId)))return A(a,"node-not-allowed",{patternMatch:f});if(b.allowedPorts.length&&!b.allowedPorts.includes(Number(a.port)))return A(a,"port-not-allowed",{patternMatch:f});if(!1===a.okToRoute)return A(a,a.status||"target-not-routeable",{patternMatch:f});let g=Array.isArray(a.gpuIndices)&&a.gpuIndices.length>0,h=b.allowCpuFallback&&!b.requireGpu;if(b.requireGpu&&!g)return A(a,"gpu-required-no-gpu-scope",{patternMatch:f});if(!g&&!h)return A(a,"cpu-fallback-disabled",{patternMatch:f});if(!a.loaded&&!b.allowWakeSleeping)return A(a,"sleeping-wake-disabled",{patternMatch:f});if(!a.loaded){let c=C(a),d=B(a);if(b.maxWakeVramMb>0&&c>b.maxWakeVramMb)return A(a,"wake-vram-over-combo-limit",{patternMatch:f,wakeVramMb:c});if(b.maxWakeRamMb>0&&d>b.maxWakeRamMb)return A(a,"wake-ram-over-combo-limit",{patternMatch:f,wakeRamMb:d})}let i=(c=String(b.selectionPolicy||"best-fit").toLowerCase(),d=0,b.preferLoaded&&a.loaded&&(d+=1e3),a.loaded&&"loaded-first"===c&&(d+=500),d+=5*t(f?.priority,0),f?.matchType==="exact"?d+=300:f?.matchType==="case-insensitive"?d+=250:f?.matchType==="wildcard"&&(d+=180),d+=(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"),d+=Math.min(200,t(a.vramFreeMb,0)/1024*10),d+=Math.min(120,t(a.ramAvailableMb,0)/4096*5),a.loaded||(d-=C(a)/1024*20,d-=B(a)/1024*8),d-=D(a),"lowest-latency"===c&&(d-=3*D(a)),"balanced"===c&&(d+=20*Math.random()),Math.round(100*d)/100);return{...a,eligible:!0,reason:a.loaded?"loaded-ok":"sleeping-ok",patternMatch:f,score:i}})(a,d)),g=f.filter(a=>a.eligible).sort((a,b)=>b.score-a.score),h=f.filter(a=>!a.eligible);return{combo:c,selected:g[0]||null,eligible:g,rejected:h,counts:{targets:e.length,eligible:g.length,rejected:h.length}}}async function G(a,b={}){if(!a||a.loaded)return null;let c=a.requirement||{},d=t(c.effectiveMinRamFreeMb,0),e=t(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:t(b?.metadata?.ollamaReservationTtlMs,6e4),reason:"ollama-local-combo-wake"})}async function H({body:a,combo:b,request:c,log:d,handleFallback:e}={}){let f=r(a?.model||b?.exposedModel||b?.name),g=await F(b,{maxAgeMs:5e3}),i=g.selected;if(!i){let b=g.combo?.localOllama?.fallbackCombo;return b&&"function"==typeof e?(d?.warn?.("OLLAMA_LOCAL_COMBO",`No local target for ${g.combo.name}; falling back to ${b}`),e({...a,model:b},b,g)):new Response(JSON.stringify({error:{message:`No eligible local Ollama target for ${g.combo?.name||a?.model||"local combo"}`,preview:{counts:g.counts,rejected:g.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"}})}await G(i,a);let k=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),l=`${i.endpoint}${k}`,n={...a,model:i.model},q=a?.include_reasoning===!0||a?.metadata?.include_reasoning===!0,s=g.combo?.exposedModel||g.combo?.name||f,t=`${i.nodeId||"node"}:${i.port||"port"}`,u=Date.now(),v=null;d?.info?.("OLLAMA_LOCAL_COMBO",`${g.combo.name} -> ${i.nodeName}:${i.port} ${i.model} (${i.reason}, score=${i.score})`),(0,h.uw)(i.model,j,t,!0),await (0,h.E5)({model:i.model,provider:j,connectionId:t,status:"PENDING"}).catch(()=>{});try{let b,d;v=await p({body:a,requestedModel:f,target:i,request:c,routePath:k}),v?.logTargetRequest?.(l,{"Content-Type":"application/json"},n);let e=await fetch(l,{method:"POST",headers:((b=new Headers).set("Content-Type","application/json"),(d=c?.headers?.get?.("accept"))&&b.set("Accept",d),b),body:JSON.stringify(n),cache:"no-store"}),g=await e.text().catch(()=>""),r=null;try{r=g?JSON.parse(g):null}catch{}let{response:w,bodyForLog:x}=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=>(function(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=m(a,!1);return`data: ${JSON.stringify(b)}`}catch{return a}})(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=m(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:g,parsed:r,includeReasoning:q}),y=Date.now()-u;if(v?.logProviderResponse?.(e.status,e.statusText,e.headers,r||g),v?.logConvertedResponse?.(x),!e.ok){let b=r?.error?.message||r?.error||r?.message||g||e.statusText||"Ollama local combo target failed";return(0,h.uw)(i.model,j,t,!1,!0),await o({requestedModel:f,comboName:s,target:i,body:a,upstreamBody:n,responseBody:x,status:e.status,latencyMs:y,request:c,routePath:k,error:String(b)}),w}return(0,h.uw)(i.model,j,t,!1),await o({requestedModel:f,comboName:s,target:i,body:a,upstreamBody:n,responseBody:x,status:e.status,latencyMs:y,request:c,routePath:k}),w}catch(m){let b=Date.now()-u;(0,h.uw)(i.model,j,t,!1,!0),v?.logError?.(m,n),await o({requestedModel:f,comboName:s,target:i,body:a,upstreamBody:n,responseBody:null,status:502,latencyMs:b,request:c,routePath:k,error:m?.message||String(m)});let l=g.combo?.localOllama?.fallbackCombo;if(l&&"function"==typeof e)return d?.warn?.("OLLAMA_LOCAL_COMBO",`Local target failed; falling back to ${l}`,{error:m?.message}),e({...a,model:l},l,g);return new Response(JSON.stringify({error:{message:m?.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})}};
|
|
@@ -40,4 +40,4 @@
|
|
|
40
40
|
<style>body{font-family:system-ui;display:flex;justify-content:center;align-items:center;height:100vh;margin:0;background:#f5f5f5}.c{text-align:center;padding:2rem;background:#fff;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.1)}.i{color:${a?"#22c55e":"#ef4444"};font-size:3rem}h1{margin:1rem 0}p{color:#666}</style>
|
|
41
41
|
</head><body><div class="c"><div class="i">${a?"✓":"✗"}</div><h1>${c}</h1><p>${b}</p><p>Closing in <span id="cd">3</span>s...</p>
|
|
42
42
|
<script>let n=3;const c=document.getElementById("cd");const t=setInterval(()=>{n--;c.textContent=n;if(n<=0){clearInterval(t);window.close();}},1000);</script>
|
|
43
|
-
</div></body></html>`}function o(a){return new Promise(b=>{if(h)return void b({success:!0});let d=e().createServer(async(b,d)=>{let e=new f.URL(b.url,"http://localhost");if("/callback"!==e.pathname&&"/auth/callback"!==e.pathname){d.writeHead(404),d.end("Not found");return}let g=e.searchParams.get("code"),h=e.searchParams.get("state"),i=e.searchParams.get("error"),k=h?j.get(h):null;if(k){try{if(i)throw Error(e.searchParams.get("error_description")||i);if(!g)throw Error("No authorization code received");let{exchangeTokens:a}=await Promise.all([c.e(5433),c.e(4404),c.e(3110),c.e(318),c.e(8895),c.e(2549)]).then(c.bind(c,74177)),{createProviderConnection:b}=await c.e(1998).then(c.bind(c,71998)),f=await a("codex",g,k.redirectUri,k.codeVerifier,h),j=await b({provider:"codex",authType:"oauth",...f,expiresAt:f.expiresIn?new Date(Date.now()+1e3*f.expiresIn).toISOString():null,testStatus:"active"});k.status="done",k.connectionId=j.id,k.email=j.email,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(n(!0,"You can close this window."))}catch(a){k.status="error",k.error=a.message,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(n(!1,a.message))}finally{p()}return}let l=`http://localhost:${a}/callback${e.search}`;d.writeHead(302,{Location:l}),d.end(),p()});d.listen(1455,"127.0.0.1",()=>{h=d,i=setTimeout(()=>p(),3e5),b({success:!0})}),d.on("error",a=>{"EADDRINUSE"===a.code?b({success:!1,reason:"port_busy"}):b({success:!1,reason:a.message})})})}function p(){i&&(clearTimeout(i),i=null),h&&(h.close(),h=null)}let q=null,r=null,s=new Map;function t({state:a,codeVerifier:b,redirectUri:c}){return!!a&&!!b&&!!c&&(s.set(a,{codeVerifier:b,redirectUri:c,status:"pending",createdAt:Date.now()}),!0)}function u(a){return s.get(a)||null}function v(a){s.delete(a)}function w(a){return new Promise(b=>{if(q)return void b({success:!0});let d=e().createServer(async(b,d)=>{let e=new f.URL(b.url,"http://localhost");if("/callback"!==e.pathname&&"/auth/callback"!==e.pathname){d.writeHead(404),d.end("Not found");return}let g=e.searchParams.get("code"),h=e.searchParams.get("state"),i=e.searchParams.get("error"),j=h?s.get(h):null;if(j){try{if(i)throw Error(e.searchParams.get("error_description")||i);if(!g)throw Error("No authorization code received");let{exchangeTokens:a}=await Promise.all([c.e(5433),c.e(4404),c.e(3110),c.e(318),c.e(8895),c.e(2549)]).then(c.bind(c,74177)),{createProviderConnection:b}=await c.e(1998).then(c.bind(c,71998)),f=await a("xai",g,j.redirectUri,j.codeVerifier,h),k=await b({provider:"xai",authType:"oauth",...f,expiresAt:f.expiresIn?new Date(Date.now()+1e3*f.expiresIn).toISOString():null,testStatus:"active"});j.status="done",j.connectionId=k.id,j.email=k.email,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(n(!0,"You can close this window."))}catch(a){j.status="error",j.error=a.message,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(n(!1,a.message))}finally{x()}return}let k=`http://localhost:${a}/callback${e.search}`;d.writeHead(302,{Location:k}),d.end(),x()});d.listen(56121,"127.0.0.1",()=>{q=d,r=setTimeout(()=>x(),3e5),b({success:!0})}),d.on("error",a=>{"EADDRINUSE"===a.code?b({success:!1,reason:"port_busy"}):b({success:!1,reason:a.message})})})}function x(){r&&(clearTimeout(r),r=null),q&&(q.close(),q=null)}},73159:(a,b,c)=>{c.d(b,{Ue:()=>i,oT:()=>j});let d="https://auth.x.ai",e="/oauth2/authorize",f="/oauth2/token",g="/.well-known/openid-configuration",h="/callback",i=96,j={clientId:"b1a00492-073a-47ea-816f-4c329264a828",issuer:d,authEndpointPath:e,tokenEndpointPath:f,discoveryPath:g,authorizeUrl:`${d}${e}`,tokenUrl:`${d}${f}`,discoveryUrl:`${d}${g}`,scope:"openid profile email offline_access grok-cli:access api:access",apiBaseUrl:"https://api.x.ai/v1",redirectUri:`http://127.0.0.1:56121${h}`,loopbackPort:56121,callbackPath:h,pkceVerifierBytes:96,refreshLeadSeconds:300,userAgent:"grok-cli/bluerouter",codeChallengeMethod:"S256"}},92990:(a,b,c)=>{c.d(b,{DI:()=>g,Hp:()=>i,LT:()=>h,MZ:()=>r,Nl:()=>u,Nu:()=>n,OV:()=>f,Tx:()=>o,WN:()=>p,Ww:()=>v,YT:()=>l,ZL:()=>k,cD:()=>m,f7:()=>t,hF:()=>j,lB:()=>s,t:()=>q});var d=c(21820);function e(){let a=(0,d.platform)(),b=(0,d.arch)();return"darwin"===a?"arm64"===b?2:1:"linux"===a?"arm64"===b?4:3:5*("win32"===a)}let f={clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",authorizeUrl:"https://claude.ai/oauth/authorize",tokenUrl:"https://api.anthropic.com/v1/oauth/token",scopes:["org:create_api_key","user:profile","user:inference"],codeChallengeMethod:"S256"},g={clientId:"app_EMoamEEZ73f0CkXaXp7hrann",authorizeUrl:"https://auth.openai.com/oauth/authorize",tokenUrl:"https://auth.openai.com/oauth/token",scope:"openid profile email offline_access",codeChallengeMethod:"S256",extraParams:{id_token_add_organizations:"true",codex_cli_simplified_flow:"true",originator:"codex_cli_rs"}},h={clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile"]},i={clientId:"f0304373b74a44d2b584a3fb70ca9e56",deviceCodeUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",scope:"openid profile email model.completion",codeChallengeMethod:"S256"},j={apiBaseUrl:"https://api2.qoder.sh",deviceTokenUrl:"https://api2.qoder.sh/api/v1/deviceToken/poll",deviceRefreshUrl:"https://api2.qoder.sh/api/v1/deviceToken/refresh",refreshUrl:"https://api2.qoder.sh/api/v3/user/refresh_token",userInfoUrl:"https://api2.qoder.sh/api/v1/userinfo",statusUrl:"https://api2.qoder.sh/api/v3/user/status",loginUrl:"https://qoder.com/login"},k={clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",authorizeUrl:"https://iflow.cn/oauth",tokenUrl:"https://iflow.cn/oauth/token",userInfoUrl:"https://iflow.cn/api/oauth/getUserInfo",extraParams:{loginMethod:"phone",type:"phone"}},l={clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/cclog","https://www.googleapis.com/auth/experimentsandconfigs"],apiEndpoint:"https://cloudcode-pa.googleapis.com",apiVersion:"v1internal",loadCodeAssistEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",onboardUserEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:onboardUser",loadCodeAssistUserAgent:"google-api-nodejs-client/9.15.1",loadCodeAssistApiClient:"google-cloud-sdk vscode_cloudshelleditor/0.1",loadCodeAssistClientMetadata:JSON.stringify({ideType:9,platform:e(),pluginType:2})};function m(){return{ideType:9,platform:e(),pluginType:2}}let n={clientId:"Iv1.b507a08c87ecfe98",deviceCodeUrl:"https://github.com/login/device/code",tokenUrl:"https://github.com/login/oauth/access_token",userInfoUrl:"https://api.github.com/user",scopes:"read:user",apiVersion:"2022-11-28",copilotTokenUrl:"https://api.github.com/copilot_internal/v2/token",userAgent:"GitHubCopilotChat/0.26.7",editorVersion:"vscode/1.85.0",editorPluginVersion:"copilot-chat/0.26.7"},o={ssoOidcEndpoint:"https://oidc.us-east-1.amazonaws.com",registerClientUrl:"https://oidc.us-east-1.amazonaws.com/client/register",deviceAuthUrl:"https://oidc.us-east-1.amazonaws.com/device_authorization",tokenUrl:"https://oidc.us-east-1.amazonaws.com/token",startUrl:"https://view.awsapps.com/start",clientName:"kiro-oauth-client",clientType:"public",scopes:["codewhisperer:completions","codewhisperer:analysis","codewhisperer:conversations"],grantTypes:["urn:ietf:params:oauth:grant-type:device_code","refresh_token"],issuerUrl:"https://identitycenter.amazonaws.com/ssoins-722374e8c3c8e6c6",socialAuthEndpoint:"https://prod.us-east-1.auth.desktop.kiro.dev",socialLoginUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/login",socialTokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/oauth/token",socialRefreshUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authMethods:["builder-id","idc","google","github","import"]},p={apiEndpoint:"https://api2.cursor.sh",chatEndpoint:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",modelsEndpoint:"/aiserver.v1.AiService/GetDefaultModelNudgeData",api3Endpoint:"https://api3.cursor.sh",agentEndpoint:"https://agent.api5.cursor.sh",agentNonPrivacyEndpoint:"https://agentn.api5.cursor.sh",clientVersion:"3.1.0",clientType:"ide",tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"},dbKeys:{accessToken:"cursorAuth/accessToken",machineId:"storage.serviceMachineId"}},q={clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||"17e5f671-d194-4dfb-9706-5516cb48c098",deviceCodeUrl:"https://auth.kimi.com/api/oauth/device_authorization",tokenUrl:"https://auth.kimi.com/api/oauth/token"},r={apiBaseUrl:"https://api.kilo.ai",initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},s={appBaseUrl:"https://app.cline.bot",apiBaseUrl:"https://api.cline.bot",authorizeUrl:"https://api.cline.bot/api/v1/auth/authorize",tokenExchangeUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},t={defaultBaseUrl:"https://gitlab.com",authorizeUrlPath:"/oauth/authorize",tokenUrlPath:"/oauth/token",userInfoUrlPath:"/api/v4/user",scope:"api read_user",codeChallengeMethod:"S256"},u={baseUrl:"https://copilot.tencent.com",stateUrl:"https://copilot.tencent.com/v2/plugin/auth/state",tokenUrl:"https://copilot.tencent.com/v2/plugin/auth/token",refreshUrl:"https://copilot.tencent.com/v2/plugin/auth/token/refresh",userAgent:"CLI/2.63.2 CodeBuddy/2.63.2",platform:"CLI",pollInterval:5e3},v=3e5}};
|
|
43
|
+
</div></body></html>`}function o(a){return new Promise(b=>{if(h)return void b({success:!0});let d=e().createServer(async(b,d)=>{let e=new f.URL(b.url,"http://localhost");if("/callback"!==e.pathname&&"/auth/callback"!==e.pathname){d.writeHead(404),d.end("Not found");return}let g=e.searchParams.get("code"),h=e.searchParams.get("state"),i=e.searchParams.get("error"),k=h?j.get(h):null;if(k){try{if(i)throw Error(e.searchParams.get("error_description")||i);if(!g)throw Error("No authorization code received");let{exchangeTokens:a}=await Promise.all([c.e(5433),c.e(4404),c.e(3110),c.e(318),c.e(1336),c.e(8895),c.e(2549)]).then(c.bind(c,74177)),{createProviderConnection:b}=await c.e(1998).then(c.bind(c,71998)),f=await a("codex",g,k.redirectUri,k.codeVerifier,h),j=await b({provider:"codex",authType:"oauth",...f,expiresAt:f.expiresIn?new Date(Date.now()+1e3*f.expiresIn).toISOString():null,testStatus:"active"});k.status="done",k.connectionId=j.id,k.email=j.email,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(n(!0,"You can close this window."))}catch(a){k.status="error",k.error=a.message,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(n(!1,a.message))}finally{p()}return}let l=`http://localhost:${a}/callback${e.search}`;d.writeHead(302,{Location:l}),d.end(),p()});d.listen(1455,"127.0.0.1",()=>{h=d,i=setTimeout(()=>p(),3e5),b({success:!0})}),d.on("error",a=>{"EADDRINUSE"===a.code?b({success:!1,reason:"port_busy"}):b({success:!1,reason:a.message})})})}function p(){i&&(clearTimeout(i),i=null),h&&(h.close(),h=null)}let q=null,r=null,s=new Map;function t({state:a,codeVerifier:b,redirectUri:c}){return!!a&&!!b&&!!c&&(s.set(a,{codeVerifier:b,redirectUri:c,status:"pending",createdAt:Date.now()}),!0)}function u(a){return s.get(a)||null}function v(a){s.delete(a)}function w(a){return new Promise(b=>{if(q)return void b({success:!0});let d=e().createServer(async(b,d)=>{let e=new f.URL(b.url,"http://localhost");if("/callback"!==e.pathname&&"/auth/callback"!==e.pathname){d.writeHead(404),d.end("Not found");return}let g=e.searchParams.get("code"),h=e.searchParams.get("state"),i=e.searchParams.get("error"),j=h?s.get(h):null;if(j){try{if(i)throw Error(e.searchParams.get("error_description")||i);if(!g)throw Error("No authorization code received");let{exchangeTokens:a}=await Promise.all([c.e(5433),c.e(4404),c.e(3110),c.e(318),c.e(1336),c.e(8895),c.e(2549)]).then(c.bind(c,74177)),{createProviderConnection:b}=await c.e(1998).then(c.bind(c,71998)),f=await a("xai",g,j.redirectUri,j.codeVerifier,h),k=await b({provider:"xai",authType:"oauth",...f,expiresAt:f.expiresIn?new Date(Date.now()+1e3*f.expiresIn).toISOString():null,testStatus:"active"});j.status="done",j.connectionId=k.id,j.email=k.email,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(n(!0,"You can close this window."))}catch(a){j.status="error",j.error=a.message,d.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),d.end(n(!1,a.message))}finally{x()}return}let k=`http://localhost:${a}/callback${e.search}`;d.writeHead(302,{Location:k}),d.end(),x()});d.listen(56121,"127.0.0.1",()=>{q=d,r=setTimeout(()=>x(),3e5),b({success:!0})}),d.on("error",a=>{"EADDRINUSE"===a.code?b({success:!1,reason:"port_busy"}):b({success:!1,reason:a.message})})})}function x(){r&&(clearTimeout(r),r=null),q&&(q.close(),q=null)}},73159:(a,b,c)=>{c.d(b,{Ue:()=>i,oT:()=>j});let d="https://auth.x.ai",e="/oauth2/authorize",f="/oauth2/token",g="/.well-known/openid-configuration",h="/callback",i=96,j={clientId:"b1a00492-073a-47ea-816f-4c329264a828",issuer:d,authEndpointPath:e,tokenEndpointPath:f,discoveryPath:g,authorizeUrl:`${d}${e}`,tokenUrl:`${d}${f}`,discoveryUrl:`${d}${g}`,scope:"openid profile email offline_access grok-cli:access api:access",apiBaseUrl:"https://api.x.ai/v1",redirectUri:`http://127.0.0.1:56121${h}`,loopbackPort:56121,callbackPath:h,pkceVerifierBytes:96,refreshLeadSeconds:300,userAgent:"grok-cli/bluerouter",codeChallengeMethod:"S256"}},92990:(a,b,c)=>{c.d(b,{DI:()=>g,Hp:()=>i,LT:()=>h,MZ:()=>r,Nl:()=>u,Nu:()=>n,OV:()=>f,Tx:()=>o,WN:()=>p,Ww:()=>v,YT:()=>l,ZL:()=>k,cD:()=>m,f7:()=>t,hF:()=>j,lB:()=>s,t:()=>q});var d=c(21820);function e(){let a=(0,d.platform)(),b=(0,d.arch)();return"darwin"===a?"arm64"===b?2:1:"linux"===a?"arm64"===b?4:3:5*("win32"===a)}let f={clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",authorizeUrl:"https://claude.ai/oauth/authorize",tokenUrl:"https://api.anthropic.com/v1/oauth/token",scopes:["org:create_api_key","user:profile","user:inference"],codeChallengeMethod:"S256"},g={clientId:"app_EMoamEEZ73f0CkXaXp7hrann",authorizeUrl:"https://auth.openai.com/oauth/authorize",tokenUrl:"https://auth.openai.com/oauth/token",scope:"openid profile email offline_access",codeChallengeMethod:"S256",extraParams:{id_token_add_organizations:"true",codex_cli_simplified_flow:"true",originator:"codex_cli_rs"}},h={clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile"]},i={clientId:"f0304373b74a44d2b584a3fb70ca9e56",deviceCodeUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",scope:"openid profile email model.completion",codeChallengeMethod:"S256"},j={apiBaseUrl:"https://api2.qoder.sh",deviceTokenUrl:"https://api2.qoder.sh/api/v1/deviceToken/poll",deviceRefreshUrl:"https://api2.qoder.sh/api/v1/deviceToken/refresh",refreshUrl:"https://api2.qoder.sh/api/v3/user/refresh_token",userInfoUrl:"https://api2.qoder.sh/api/v1/userinfo",statusUrl:"https://api2.qoder.sh/api/v3/user/status",loginUrl:"https://qoder.com/login"},k={clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",authorizeUrl:"https://iflow.cn/oauth",tokenUrl:"https://iflow.cn/oauth/token",userInfoUrl:"https://iflow.cn/api/oauth/getUserInfo",extraParams:{loginMethod:"phone",type:"phone"}},l={clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/cclog","https://www.googleapis.com/auth/experimentsandconfigs"],apiEndpoint:"https://cloudcode-pa.googleapis.com",apiVersion:"v1internal",loadCodeAssistEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",onboardUserEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:onboardUser",loadCodeAssistUserAgent:"google-api-nodejs-client/9.15.1",loadCodeAssistApiClient:"google-cloud-sdk vscode_cloudshelleditor/0.1",loadCodeAssistClientMetadata:JSON.stringify({ideType:9,platform:e(),pluginType:2})};function m(){return{ideType:9,platform:e(),pluginType:2}}let n={clientId:"Iv1.b507a08c87ecfe98",deviceCodeUrl:"https://github.com/login/device/code",tokenUrl:"https://github.com/login/oauth/access_token",userInfoUrl:"https://api.github.com/user",scopes:"read:user",apiVersion:"2022-11-28",copilotTokenUrl:"https://api.github.com/copilot_internal/v2/token",userAgent:"GitHubCopilotChat/0.26.7",editorVersion:"vscode/1.85.0",editorPluginVersion:"copilot-chat/0.26.7"},o={ssoOidcEndpoint:"https://oidc.us-east-1.amazonaws.com",registerClientUrl:"https://oidc.us-east-1.amazonaws.com/client/register",deviceAuthUrl:"https://oidc.us-east-1.amazonaws.com/device_authorization",tokenUrl:"https://oidc.us-east-1.amazonaws.com/token",startUrl:"https://view.awsapps.com/start",clientName:"kiro-oauth-client",clientType:"public",scopes:["codewhisperer:completions","codewhisperer:analysis","codewhisperer:conversations"],grantTypes:["urn:ietf:params:oauth:grant-type:device_code","refresh_token"],issuerUrl:"https://identitycenter.amazonaws.com/ssoins-722374e8c3c8e6c6",socialAuthEndpoint:"https://prod.us-east-1.auth.desktop.kiro.dev",socialLoginUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/login",socialTokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/oauth/token",socialRefreshUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authMethods:["builder-id","idc","google","github","import"]},p={apiEndpoint:"https://api2.cursor.sh",chatEndpoint:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",modelsEndpoint:"/aiserver.v1.AiService/GetDefaultModelNudgeData",api3Endpoint:"https://api3.cursor.sh",agentEndpoint:"https://agent.api5.cursor.sh",agentNonPrivacyEndpoint:"https://agentn.api5.cursor.sh",clientVersion:"3.1.0",clientType:"ide",tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"},dbKeys:{accessToken:"cursorAuth/accessToken",machineId:"storage.serviceMachineId"}},q={clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||"17e5f671-d194-4dfb-9706-5516cb48c098",deviceCodeUrl:"https://auth.kimi.com/api/oauth/device_authorization",tokenUrl:"https://auth.kimi.com/api/oauth/token"},r={apiBaseUrl:"https://api.kilo.ai",initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},s={appBaseUrl:"https://app.cline.bot",apiBaseUrl:"https://api.cline.bot",authorizeUrl:"https://api.cline.bot/api/v1/auth/authorize",tokenExchangeUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},t={defaultBaseUrl:"https://gitlab.com",authorizeUrlPath:"/oauth/authorize",tokenUrlPath:"/oauth/token",userInfoUrlPath:"/api/v4/user",scope:"api read_user",codeChallengeMethod:"S256"},u={baseUrl:"https://copilot.tencent.com",stateUrl:"https://copilot.tencent.com/v2/plugin/auth/state",tokenUrl:"https://copilot.tencent.com/v2/plugin/auth/token",refreshUrl:"https://copilot.tencent.com/v2/plugin/auth/token/refresh",userAgent:"CLI/2.63.2 CodeBuddy/2.63.2",platform:"CLI",pollInterval:5e3},v=3e5}};
|