zevairouter 1.0.184 → 1.0.185
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/CHANGELOG.md +14 -0
- package/cli/app/.next-cli-build/BUILD_ID +1 -1
- package/cli/app/.next-cli-build/app-path-routes-manifest.json +18 -18
- package/cli/app/.next-cli-build/build-manifest.json +2 -2
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-token/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/callback.html +1 -1
- package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.html +1 -1
- package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/landing.html +1 -1
- package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app/login.html +1 -1
- package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
- package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
- package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
- package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/app-paths-manifest.json +18 -18
- package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3593.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/3949.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4650.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/4780.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/5307.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/7239.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/7965.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/8520.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/877.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/9489.js +1 -1
- package/cli/app/.next-cli-build/server/chunks/9621.js +1 -1
- package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/cli/app/.next-cli-build/server/middleware.js +2 -2
- package/cli/app/.next-cli-build/server/pages/404.html +1 -1
- package/cli/app/.next-cli-build/server/pages/500.html +1 -1
- package/cli/app/.next-cli-build/static/chunks/{620-3e838c8245c86ed0.js → 620-fe0d2b5c7c66dcb0.js} +1 -1
- package/cli/app/CHANGELOG.md +14 -0
- package/cli/app/package.json +1 -1
- package/cli/app/src/lib/db/adapters/nodeSqliteAdapter.js +8 -1
- package/cli/app/src/lib/db/adapters/sqljsAdapter.js +27 -5
- package/cli/app/src/mitm/server.js +1 -1
- package/cli/cli.js +8 -2
- package/cli/package.json +1 -1
- package/package.json +1 -1
- /package/cli/app/.next-cli-build/static/{vYp7NIT8WkZDm3HT4FDSk → FPkvOng0x2firdw2nnquf}/_buildManifest.js +0 -0
- /package/cli/app/.next-cli-build/static/{vYp7NIT8WkZDm3HT4FDSk → FPkvOng0x2firdw2nnquf}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=8520,exports.ids=[8520],exports.modules={88520:(a,b,c)=>{c.d(b,{createNodeSqliteAdapter:()=>e});var d=c(63775);async function e(a){let b=process.emit;process.emit=function(a,c
|
|
1
|
+
"use strict";exports.id=8520,exports.ids=[8520],exports.modules={88520:(a,b,c)=>{c.d(b,{createNodeSqliteAdapter:()=>e});var d=c(63775);async function e(a){let b,e=process.emit;process.emit=function(a,b,...c){return!("warning"===a&&b?.name==="ExperimentalWarning"&&/SQLite/i.test(b.message||""))&&e.call(process,a,b,...c)};try{b=await Promise.resolve().then(c.t.bind(c,79868,23))}finally{process.emit=e}let f=new b.DatabaseSync(a);f.exec(d.oG);let g=new Map;function h(a){let b=g.get(a);return b||(b=f.prepare(a),g.set(a,b)),b}let i=setInterval(()=>{try{f.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},6e4);"function"==typeof i.unref&&i.unref();let j=!1;function k(){if(!j){j=!0;try{f.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}try{g.clear()}catch{}try{f.close()}catch{}}}let l=()=>k();return process.once("beforeExit",l),{driver:"node:sqlite",run(a,b=[]){let c=h(a).run(...b);return{changes:Number(c.changes??0),lastInsertRowid:Number(c.lastInsertRowid??0)}},get:(a,b=[])=>h(a).get(...b),all:(a,b=[])=>h(a).all(...b),exec:a=>f.exec(a),transaction(a){let b=`sp_${Math.random().toString(36).slice(2)}`;f.exec(`SAVEPOINT ${b}`);try{let c=a();return f.exec(`RELEASE ${b}`),c}catch(a){try{f.exec(`ROLLBACK TO ${b}`),f.exec(`RELEASE ${b}`)}catch{}throw a}},checkpoint(){f.exec("PRAGMA wal_checkpoint(TRUNCATE)")},close(){clearInterval(i),process.removeListener("beforeExit",l),k()},raw:f}}}};
|
|
@@ -21,4 +21,4 @@ PRAGMA busy_timeout = 5000;
|
|
|
21
21
|
isActive=excluded.isActive, testStatus=excluded.testStatus,
|
|
22
22
|
data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.isActive,c.testStatus,c.data,c.createdAt,c.updatedAt])}async function m(a={}){let b=await (0,d.cK)(),c=[],e=[];void 0!==a.isActive&&(c.push("isActive = ?"),e.push(+!!a.isActive)),a.testStatus&&(c.push("testStatus = ?"),e.push(a.testStatus));let f=`SELECT * FROM proxyPools${c.length?` WHERE ${c.join(" AND ")}`:""}`,g=b.all(f,e).map(k);return g.sort((a,b)=>new Date(b.updatedAt||0)-new Date(a.updatedAt||0)),g}async function n(a){return k((await (0,d.cK)()).get("SELECT * FROM proxyPools WHERE id = ?",[a]))}async function o(a){let b=await (0,d.cK)(),c=new Date().toISOString(),e={id:a.id||(0,j.A)(),name:a.name,proxyUrl:a.proxyUrl,noProxy:a.noProxy||"",type:a.type||"http",isActive:void 0===a.isActive||a.isActive,strictProxy:!0===a.strictProxy,testStatus:a.testStatus||"unknown",lastTestedAt:a.lastTestedAt||null,lastError:a.lastError||null,createdAt:c,updatedAt:c};return l(b,e),e}async function p(a,b){let c=await (0,d.cK)(),e=null;return c.transaction(()=>{let d=c.get("SELECT * FROM proxyPools WHERE id = ?",[a]);if(!d)return;let f={...k(d),...b,updatedAt:new Date().toISOString()};l(c,f),e=f}),e}async function q(a){let b=await (0,d.cK)(),c=null;return b.transaction(()=>{let d=b.get("SELECT * FROM proxyPools WHERE id = ?",[a]);d&&(c=k(d),b.run("DELETE FROM proxyPools WHERE id = ?",[a]))}),c}var r=c(26556);let s=null,t=0;function u(){s=null,t=0}function v(a){return a?{id:a.id,name:a.name,content:a.content,enabled:1===a.enabled||!0===a.enabled,priority:Number(a.priority)||0,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}async function w(){return(await (0,d.cK)()).all("SELECT * FROM contextFiles ORDER BY priority ASC, createdAt ASC").map(v)}async function x(){let a=Date.now();return s&&a-t<5e3||(s=(await (0,d.cK)()).all("SELECT * FROM contextFiles WHERE enabled = 1 ORDER BY priority ASC, createdAt ASC").map(v),t=a),s}async function y(a){return v((await (0,d.cK)()).get("SELECT * FROM contextFiles WHERE id = ?",[a]))}async function z({name:a,content:b="",enabled:c=!0,priority:e=0}){let f=await (0,d.cK)(),g=(0,j.A)(),h=new Date().toISOString();return f.run(`INSERT INTO contextFiles(id, name, content, enabled, priority, createdAt, updatedAt)
|
|
23
23
|
VALUES(?, ?, ?, ?, ?, ?, ?)`,[g,String(a||"untitled"),String(b||""),+!!c,Number(e)||0,h,h]),u(),y(g)}async function A(a,b={}){let c=await y(a);if(!c)return null;let e=await (0,d.cK)(),f={name:void 0!==b.name?String(b.name):c.name,content:void 0!==b.content?String(b.content):c.content,enabled:void 0!==b.enabled?+!!b.enabled:+!!c.enabled,priority:void 0!==b.priority?Number(b.priority)||0:c.priority};return e.run("UPDATE contextFiles SET name = ?, content = ?, enabled = ?, priority = ?, updatedAt = ? WHERE id = ?",[f.name,f.content,f.enabled,f.priority,new Date().toISOString(),a]),u(),y(a)}async function B(a){return(await (0,d.cK)()).run("DELETE FROM contextFiles WHERE id = ?",[a]),u(),!0}async function C(a=[]){if(!Array.isArray(a)||0===a.length)return[];let b=await (0,d.cK)(),c=b.get("SELECT COALESCE(MAX(priority), -1) AS maxp FROM contextFiles"),e=(Number(c?.maxp)||-1)+1,f=[];return b.transaction(()=>{for(let c of a){let a=String(c?.name||"untitled").trim()||"untitled",d=String(c?.content||""),g=(0,j.A)(),h=new Date().toISOString();b.run(`INSERT INTO contextFiles(id, name, content, enabled, priority, createdAt, updatedAt)
|
|
24
|
-
VALUES(?, ?, ?, 0, ?, ?, ?)`,[g,a,d,e,h,h]),f.push({id:g,name:a}),e+=1}}),u(),f}var D=c(74452);function E(a){return a?{id:a.id,name:a.name,kind:a.kind,models:(0,f.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt}:null}async function F(){return(await (0,d.cK)()).all("SELECT * FROM combos ORDER BY createdAt ASC").map(E)}async function G(a){return E((await (0,d.cK)()).get("SELECT * FROM combos WHERE id = ?",[a]))}async function H(a){return E((await (0,d.cK)()).get("SELECT * FROM combos WHERE name = ?",[a]))}async function I(a){let b=await (0,d.cK)(),c=new Date().toISOString(),e={id:(0,j.A)(),name:a.name,kind:a.kind||null,models:a.models||[],createdAt:c,updatedAt:c};return b.run("INSERT INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[e.id,e.name,e.kind,(0,f.s)(e.models),e.createdAt,e.updatedAt]),e}async function J(a,b){let c=await (0,d.cK)(),e=null;return c.transaction(()=>{let d=c.get("SELECT * FROM combos WHERE id = ?",[a]);if(!d)return;let g={...E(d),...b,updatedAt:new Date().toISOString()};c.run("UPDATE combos SET name = ?, kind = ?, models = ?, updatedAt = ? WHERE id = ?",[g.name,g.kind,(0,f.s)(g.models||[]),g.updatedAt,a]),e=g}),e}async function K(a){let b=(await (0,d.cK)()).run("DELETE FROM combos WHERE id = ?",[a]);return(b?.changes??0)>0}var L=c(9460),M=c(97914);let N="disabledModels";async function O(){let a=(await (0,d.cK)()).all("SELECT key, value FROM kv WHERE scope = ?",[N]),b={};for(let c of a)b[c.key]=(0,f.q)(c.value,[]);return b}async function P(a,b){if(!a||!Array.isArray(b))return;let c=await (0,d.cK)();c.transaction(()=>{let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[N,a]),e=[...new Set([...d&&(0,f.q)(d.value,[])||[],...b])];c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[N,a,(0,f.s)(e)])})}async function Q(a,b){if(!a)return;let c=await (0,d.cK)();c.transaction(()=>{if(!Array.isArray(b)||0===b.length)return void c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[N,a]);let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[N,a]),e=d&&(0,f.q)(d.value,[])||[],g=new Set(b),h=e.filter(a=>!g.has(a));0===h.length?c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[N,a]):c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[N,a,(0,f.s)(h)])})}var R=c(99703),S=c(18943);let T=new Set(["usageHistory","requestDetails","quotaCache"]);async function U(){let a=await (0,d.cK)(),{exportSettings:b}=await Promise.resolve().then(c.bind(c,42655)),g=Object.keys(e.CG).filter(a=>!T.has(a)),h={settings:await b(),providerConnections:a.all("SELECT * FROM providerConnections").map(a=>({...(0,f.q)(a.data,{}),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt})),providerNodes:a.all("SELECT * FROM providerNodes").map(a=>({...(0,f.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt})),proxyPools:a.all("SELECT * FROM proxyPools").map(a=>({...(0,f.q)(a.data,{}),id:a.id,isActive:1===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt})),apiKeys:a.all("SELECT * FROM apiKeys").map(a=>({id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive,createdAt:a.createdAt})),combos:a.all("SELECT * FROM combos").map(a=>({id:a.id,name:a.name,kind:a.kind,models:(0,f.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt})),modelAliases:{},customModels:[],mitmAlias:{},pricing:{},tables:Object.fromEntries(g.map(b=>[b,a.all(`SELECT * FROM "${b}"`)])),excludedTables:[...T]};for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'modelAliases'"))h.modelAliases[b.key]=(0,f.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'customModels'"))h.customModels.push((0,f.q)(b.value));for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'mitmAlias'"))h.mitmAlias[b.key]=(0,f.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'pricing'"))h.pricing[b.key]=(0,f.q)(b.value);return h}async function V(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let b=await (0,d.cK)();return b.transaction(()=>{if(a.tables&&"object"==typeof a.tables&&!Array.isArray(a.tables)){for(let a of Object.keys(e.CG).reverse())b.run(`DELETE FROM "${a}"`);for(let[c,d]of Object.entries(a.tables))if(e.CG[c]&&Array.isArray(d))for(let a of d){let d=Object.keys(a).filter(a=>e.CG[c].columns[a]);0!==d.length&&b.run(`INSERT INTO "${c}" (${d.map(a=>`"${a}"`).join(", ")}) VALUES (${d.map(()=>"?").join(", ")})`,d.map(b=>a[b]))}return}for(let c of(b.run("DELETE FROM settings"),b.run("DELETE FROM providerConnections"),b.run("DELETE FROM providerNodes"),b.run("DELETE FROM proxyPools"),b.run("DELETE FROM apiKeys"),b.run("DELETE FROM combos"),b.run("DELETE FROM kv WHERE scope IN ('modelAliases', 'customModels', 'mitmAlias', 'pricing')"),a.settings&&b.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,f.s)(a.settings)]),a.providerConnections||[])){let{id:a,provider:d,authType:e,name:g,email:h,priority:i,isActive:j,createdAt:k,updatedAt:l,...m}=c;b.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a,d,e||"oauth",g||null,h||null,i||null,+(!1!==j),(0,f.s)(m),k||new Date().toISOString(),l||new Date().toISOString()])}for(let c of a.providerNodes||[]){let{id:a,type:d,name:e,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,d||null,e||null,(0,f.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.proxyPools||[]){let{id:a,isActive:d,testStatus:e,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,+(!1!==d),e||"unknown",(0,f.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.apiKeys||[])b.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.key,c.name||null,c.machineId||null,+(!1!==c.isActive),c.createdAt||new Date().toISOString()]);for(let c of a.combos||[])b.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.name,c.kind||null,(0,f.s)(c.models||[]),c.createdAt||new Date().toISOString(),c.updatedAt||new Date().toISOString()]);for(let[c,d]of Object.entries(a.modelAliases||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[c,(0,f.s)(d)]);for(let c of a.customModels||[]){let a=`${c.providerAlias}|${c.id}|${c.type||"llm"}`;b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[a,(0,f.s)(c)])}for(let[c,d]of Object.entries(a.mitmAlias||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[c,(0,f.s)(d||{})]);for(let[c,d]of Object.entries(a.pricing||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[c,(0,f.s)(d||{})])}),await U()}},74452:(a,b,c)=>{c.r(b),c.d(b,{admitApiKeyRequest:()=>p,checkApiKeyBudget:()=>s,createApiKey:()=>m,deleteApiKey:()=>q,getApiKeyById:()=>l,getApiKeys:()=>k,maskApiKey:()=>i,rotateApiKey:()=>o,updateApiKey:()=>n,validateApiKey:()=>r});var d=c(47293),e=c(36366);let f=new Set,g=new Map;function h(a){if(Array.isArray(a))return a;if(!a)return[];try{return JSON.parse(a)}catch{return[]}}function i(a){return a?a.length<=12?`${a.slice(0,4)}…`:`${a.slice(0,8)}…${a.slice(-4)}`:null}function j(a,b=!1){return a?{id:a.id,key:b?a.key:void 0,maskedKey:i(a.key),name:a.name,machineId:a.machineId,isActive:1===a.isActive||!0===a.isActive,createdAt:a.createdAt,budgetDaily:a.budgetDaily||0,budgetMonthly:a.budgetMonthly||0,requestsPerMinute:a.requestsPerMinute||0,allowedModels:h(a.allowedModels)}:null}async function k(a=!1){return(await (0,e.cK)()).all("SELECT * FROM apiKeys ORDER BY createdAt ASC").map(b=>j(b,a))}async function l(a,b=!1){return j((await (0,e.cK)()).get("SELECT * FROM apiKeys WHERE id = ?",[a]),b)}async function m(a,b){if(!b)throw Error("machineId is required");let f=await (0,e.cK)(),{generateApiKeyWithMachine:g}=await c.e(6844).then(c.bind(c,86844)),h=g(b),i={id:(0,d.A)(),name:a,key:h.key,machineId:b,isActive:!0,createdAt:new Date().toISOString()};return f.run("INSERT INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[i.id,i.key,i.name,i.machineId,1,i.createdAt]),i}async function n(a,b){let c=await (0,e.cK)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!e)return;let f={...j(e,!0),...b};c.run("UPDATE apiKeys SET key = ?, name = ?, machineId = ?, isActive = ?, budgetDaily = ?, budgetMonthly = ?, requestsPerMinute = ?, allowedModels = ? WHERE id = ?",[f.key,f.name,f.machineId,+!!f.isActive,Number(f.budgetDaily)||0,Number(f.budgetMonthly)||0,Number(f.requestsPerMinute)||0,JSON.stringify(f.allowedModels||[]),a]),d=f}),d}async function o(a){let b=await (0,e.cK)(),d=b.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!d)return null;let{generateApiKeyWithMachine:f}=await c.e(6844).then(c.bind(c,86844)),g=f(d.machineId).key;return b.run("UPDATE apiKeys SET key = ? WHERE id = ?",[g,a]),{...j({...d,key:g}),key:g}}async function p(a,b){let c=(await (0,e.cK)()).get("SELECT budgetDaily, budgetMonthly, requestsPerMinute, allowedModels FROM apiKeys WHERE key = ?",[a]);if(!c)return{allowed:!0,release(){}};let d=h(c.allowedModels);if(d.length>0&&!d.includes(b))return{allowed:!1,status:403,reason:`Model ${b} is not allowed for this API key`};let i=Number(c.requestsPerMinute)||0;if(i>0){let b=Date.now(),c=(g.get(a)||[]).filter(a=>b-a<6e4);if(c.length>=i){let d=Math.max(1,Math.ceil((6e4-(b-c[0]))/1e3));return g.set(a,c),{allowed:!1,status:429,retryAfter:d,reason:"API key rate limit exceeded"}}c.push(b),!g.has(a)&&g.size>=1e4&&function(a){for(let[b,c]of g)(0===c.length||a-c[c.length-1]>=6e4)&&g.delete(b)}(b),g.set(a,c)}let j=Number(c.budgetDaily)>0||Number(c.budgetMonthly)>0;return j&&f.has(a)?{allowed:!1,status:429,retryAfter:1,reason:"A budgeted request is already in progress"}:(j&&f.add(a),{allowed:!0,release:()=>f.delete(a)})}async function q(a){let b=(await (0,e.cK)()).run("DELETE FROM apiKeys WHERE id = ?",[a]);return(b?.changes??0)>0}async function r(a){let b=(await (0,e.cK)()).get("SELECT isActive FROM apiKeys WHERE key = ?",[a]);return!!b&&(1===b.isActive||!0===b.isActive)}async function s(a){let b=await (0,e.cK)(),c=b.get("SELECT budgetDaily, budgetMonthly FROM apiKeys WHERE key = ?",[a]);if(!c)return{allowed:!0};let d=c.budgetDaily||0,f=c.budgetMonthly||0;if(d<=0&&f<=0)return{allowed:!0,budgetDaily:d,budgetMonthly:f};let g=0,h=0;try{if(d>0){let c=new Date;c.setHours(0,0,0,0);let d=b.get("SELECT COALESCE(SUM(cost), 0) AS total FROM usageHistory WHERE apiKey = ? AND timestamp >= ?",[a,c.toISOString()]);g=d?.total||0}if(f>0){let c=new Date;c.setDate(1),c.setHours(0,0,0,0);let d=b.get("SELECT COALESCE(SUM(cost), 0) AS total FROM usageHistory WHERE apiKey = ? AND timestamp >= ?",[a,c.toISOString()]);h=d?.total||0}}catch(a){return{allowed:!1,error:!0,reason:"Budget accounting unavailable"}}return d>0&&g>=d?{allowed:!1,reason:`Daily budget exceeded ($${g.toFixed(4)} / $${d})`,spentDaily:g,spentMonthly:h,budgetDaily:d,budgetMonthly:f}:f>0&&h>=f?{allowed:!1,reason:`Monthly budget exceeded ($${h.toFixed(4)} / $${f})`,spentDaily:g,spentMonthly:h,budgetDaily:d,budgetMonthly:f}:{allowed:!0,spentDaily:g,spentMonthly:h,budgetDaily:d,budgetMonthly:f}}},97914:(a,b,c)=>{c.d(b,{KJ:()=>l,VT:()=>n,getPricingForModel:()=>k,r4:()=>j,yF:()=>m});var d=c(36366),e=c(644);let f=(0,c(22846).U)("pricing"),g={value:null,expiresAt:0};function h(){g={value:null,expiresAt:0}}async function i(){return await f.getAll()}async function j(){let a=Date.now();if(g.value&&g.expiresAt>a)return g.value;let b=await i(),{PROVIDER_PRICING:d}=await c.e(7341).then(c.bind(c,57341)),e={};for(let[a,c]of Object.entries(d))if(e[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))e[a][c]=e[a][c]?{...e[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(e[a])for(let[b,d]of Object.entries(c))e[a][b]||(e[a][b]=d);else e[a]={...c};return g={value:e,expiresAt:a+5e3},e}async function k(a,b){if(!b)return null;let d=await i();if(a&&d[a]?.[b])return d[a][b];let{getPricingForModel:e}=await c.e(7341).then(c.bind(c,57341));return e(a,b)}async function l(a){let b=await (0,d.cK)();return b.transaction(()=>{for(let[c,d]of Object.entries(a)){let a=b.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[c]),f={...a&&(0,e.q)(a.value,{})||{}};for(let[a,b]of Object.entries(d))f[a]=b;b.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[c,(0,e.s)(f)])}}),h(),await i()}async function m(a,b){if(!a)return await i();let c=await (0,d.cK)();return c.transaction(()=>{if(!b)return void c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]);let d=c.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[a]),f=d&&(0,e.q)(d.value,{})||{};delete f[b],0===Object.keys(f).length?c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]):c.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,(0,e.s)(f)])}),h(),await i()}async function n(){return await f.clear(),h(),{}}},99703:(a,b,c)=>{c.d(b,{BY:()=>G,E5:()=>J,Zx:()=>K,_3:()=>I,_V:()=>n,d_:()=>E,j$:()=>H,rg:()=>B,sZ:()=>D,uw:()=>A});var d=c(94735),e=c(77598),f=c(36366),g=c(644);c(62674);global._pendingRequests||(global._pendingRequests={byModel:{},byAccount:{}}),global._lastErrorProvider||(global._lastErrorProvider={provider:"",ts:0}),global._statsEmitter||(global._statsEmitter=new d.EventEmitter,global._statsEmitter.setMaxListeners(50)),global._pendingTimers||(global._pendingTimers={}),global._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0}),global._usageWritesInFlight||(global._usageWritesInFlight=new Set);let h=global._pendingRequests,i=global._lastErrorProvider,j=global._pendingTimers,k=global._recentRing,l=global._connectionMapCache,m=global._usageWritesInFlight,n=global._statsEmitter;function o(a){let b=a?new Date(a):new Date;return`${b.getFullYear()}-${String(b.getMonth()+1).padStart(2,"0")}-${String(b.getDate()).padStart(2,"0")}`}function p(a,b,c){a[b]||(a[b]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0}),a[b].requests+=c.requests||1,a[b].promptTokens+=c.promptTokens||0,a[b].completionTokens+=c.completionTokens||0,a[b].cachedTokens=(a[b].cachedTokens||0)+(c.cachedTokens||0),a[b].cost+=c.cost||0,c.meta&&Object.assign(a[b],c.meta)}function q(a){return a&&"object"==typeof a&&(a.cached_tokens||a.prompt_tokens_details?.cached_tokens||a.cache_read_input_tokens)||0}function r(a,b,c){return`${a}|${b||"unknown"}|${c||"unknown"}`}function s(a,b,c){return`${a||"local-no-key"}|${b||"unknown"}|${c||"unknown"}`}function t(a){return(0,e.createHash)("sha256").update(String(a)).digest("hex").slice(0,20)}function u(a,b){return a?b?.name||`External Key ${t(a).slice(0,8)}`:"Local (No API Key)"}async function v(){if(Date.now()-l.ts<3e4)return l.map;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,5781)),b=await a(),d={};for(let a of b)d[a.id]=a.name||a.email||a.id;l.map=d,l.ts=Date.now()}catch{}return l.map}async function w(){if(!k.initialized){k.initialized=!0;try{k.items=(await (0,f.cK)()).all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint, cost, status, tokens FROM usageHistory ORDER BY id DESC LIMIT ?",[50]).reverse().map(a=>({timestamp:a.timestamp,provider:a.provider,model:a.model,connectionId:a.connectionId,apiKey:a.apiKey,endpoint:a.endpoint,cost:a.cost,status:a.status,tokens:(0,g.q)(a.tokens,{})}))}catch{}}}async function x(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.resolve().then(c.bind(c,97914)),f=await e(a,b);if(!f)return 0;let g=0,h=d.prompt_tokens||d.input_tokens||0,i=q(d),j=void 0!==d.cached_tokens||d.prompt_tokens_details?.cached_tokens!==void 0?Math.max(0,h-i):h;if(g+=j*(f.input/1e6),i>0){let a=f.cached||f.input;g+=a/1e6*i}let k=d.completion_tokens||d.output_tokens||0;g+=k*(f.output/1e6);let l=d.reasoning_tokens||0;if(l>0){let a=f.reasoning||f.output;g+=a/1e6*l}let m=d.cache_creation_input_tokens||0;if(m>0){let a=f.cache_creation||f.input;g+=a/1e6*m}return g}catch(a){return console.error("Error calculating cost:",a),0}}function y(a,b=20){let c=new Set;return a.filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let b=JSON.stringify([a.timestamp,a.model,a.provider,a.promptTokens,a.completionTokens]);return!c.has(b)&&(c.add(b),!0)}).slice(0,b)}function z(a,b,c){h.byModel[a]||(h.byModel[a]=0),h.byModel[a]=Math.max(0,h.byModel[a]+c),0===h.byModel[a]&&delete h.byModel[a],b&&(h.byAccount[b]||(h.byAccount[b]={}),h.byAccount[b][a]||(h.byAccount[b][a]=0),h.byAccount[b][a]=Math.max(0,h.byAccount[b][a]+c),0===h.byAccount[b][a]&&(delete h.byAccount[b][a],0===Object.keys(h.byAccount[b]).length&&delete h.byAccount[b]))}function A(a,b,c,d,e=!1){let f=b?`${a} (${b})`:a,g=`${c}|${f}`;if(z(f,c,d?1:-1),d){let a=function(a,b,c){let d=j[a];if(Array.isArray(d))return d;d&&(clearTimeout(d),z(b,c,-1));let e=[];return j[a]=e,e}(g,f,c),b=setTimeout(()=>{let a=j[g];if(Array.isArray(a)){let c=a.indexOf(b);c>=0&&a.splice(c,1),0===a.length&&delete j[g]}z(f,c,-1),n.emit("pending")},6e4);b.unref?.(),a.push(b)}else{let a=j[g];if(Array.isArray(a)){let b=a.shift();b&&clearTimeout(b),0===a.length&&delete j[g]}else a&&(clearTimeout(a),delete j[g])}!d&&e&&b&&(i.provider=b.toLowerCase(),i.ts=Date.now());let h=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"});console.log(`[${h}] [PENDING] ${d?"START":"END"}${e?" (ERROR)":""} | provider=${b} | model=${a}`),n.emit("pending")}async function B(){let a=[],b=await v();for(let[c,d]of Object.entries(h.byAccount))for(let[e,f]of Object.entries(d))if(f>0){let d=b[c]||`Account ${c.slice(0,8)}...`,g=e.match(/^(.*) \((.*)\)$/);a.push({model:g?g[1]:e,provider:g?g[2]:"unknown",account:d,count:f})}return await w(),{activeRequests:a,recentRequests:y([...k.items].sort((a,b)=>new Date(b.timestamp)-new Date(a.timestamp)).map(a=>{let b=a.tokens||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,status:a.status||"ok"}})),errorProvider:Date.now()-i.ts<1e4?i.provider:""}}async function C(a){try{let b=await (0,f.cK)();a.timestamp||(a.timestamp=new Date().toISOString()),a.cost=await x(a.provider,a.model,a.tokens);let c=a.tokens||{},d=c.prompt_tokens||c.input_tokens||0,e=c.completion_tokens||c.output_tokens||0;b.transaction(()=>{b.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a.timestamp,a.provider||null,a.model||null,a.connectionId||null,a.apiKey||null,a.endpoint||null,d,e,a.cost||0,a.status||"ok",(0,g.s)(c),(0,g.s)(a.latency&&"object"==typeof a.latency?{latency:{ttft:a.latency.ttft||0,total:a.latency.total||0}}:{})]);let f=o(a.timestamp),h=b.get("SELECT data FROM usageDaily WHERE dateKey = ?",[f]),i=h?(0,g.q)(h.data,{}):{requests:0,promptTokens:0,completionTokens:0,cost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{}};!function(a,b){let c=b.tokens?.prompt_tokens||b.tokens?.input_tokens||0,d=b.tokens?.completion_tokens||b.tokens?.output_tokens||0,e=q(b.tokens),f=b.cost||0,g={promptTokens:c,completionTokens:d,cachedTokens:e,cost:f};a.requests=(a.requests||0)+1,a.promptTokens=(a.promptTokens||0)+c,a.completionTokens=(a.completionTokens||0)+d,a.cachedTokens=(a.cachedTokens||0)+e,a.cost=(a.cost||0)+f,a.byProvider||={},a.byModel||={},a.byAccount||={},a.byApiKey||={},a.byEndpoint||={},b.provider&&p(a.byProvider,b.provider,g);let h=b.provider?`${b.model}|${b.provider}`:b.model;if(p(a.byModel,h,{...g,meta:{rawModel:b.model,provider:b.provider}}),b.connectionId){let c=r(b.connectionId,b.model,b.provider);p(a.byAccount,c,{...g,meta:{connectionId:b.connectionId,rawModel:b.model,provider:b.provider}})}let i=s(b.apiKey&&"string"==typeof b.apiKey?b.apiKey:null,b.model,b.provider);p(a.byApiKey,i,{...g,meta:{rawModel:b.model,provider:b.provider,apiKey:b.apiKey||null}});let j=b.endpoint||"Unknown",k=`${j}|${b.model}|${b.provider||"unknown"}`;p(a.byEndpoint,k,{...g,meta:{endpoint:j,rawModel:b.model,provider:b.provider}})}(i,a),b.run("INSERT INTO usageDaily(dateKey, data) VALUES(?, ?) ON CONFLICT(dateKey) DO UPDATE SET data = excluded.data",[f,(0,g.s)(i)]);let j=b.get("SELECT value FROM _meta WHERE key = 'totalRequestsLifetime'"),k=(j?parseInt(j.value,10):0)+1;b.run("INSERT INTO _meta(key, value) VALUES('totalRequestsLifetime', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[String(k)])}),k.items.push(a),k.items.length>50&&(k.items=k.items.slice(-50)),n.emit("update")}catch(a){console.error("Failed to save usage stats:",a)}}function D(a){let b=C(a);return m.add(b),b.finally(()=>m.delete(b)),b}async function E(){for(;m.size>0;)await Promise.allSettled([...m])}function F(a,b){if(null==b)return a.all("SELECT dateKey, data FROM usageDaily");let c=new Date,d=new Date(c.getFullYear(),c.getMonth(),c.getDate()-b+1),e=`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,"0")}-${String(d.getDate()).padStart(2,"0")}`;return a.all("SELECT dateKey, data FROM usageDaily WHERE dateKey >= ?",[e])}async function G(a="all"){let b=await (0,f.cK)(),[{getProviderConnections:d},{getApiKeys:e},{getProviderNodes:j}]=await Promise.all([Promise.resolve().then(c.bind(c,5781)),Promise.resolve().then(c.bind(c,74452)),Promise.resolve().then(c.bind(c,1129))]),k=[];try{k=await d()}catch{}let l={};for(let a of k)l[a.id]=a.name||a.email||a.id;let m={};try{for(let a of(await j()))a.id&&a.name&&(m[a.id]=a.name)}catch{}let n=[];try{n=await e(!0)}catch{}let v={};for(let a of n)v[a.key]={name:a.name,id:a.id,createdAt:a.createdAt};let w={totalRequests:0,totalPromptTokens:0,totalCompletionTokens:0,totalCachedTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{},last10Minutes:[],pending:h,activeRequests:[],recentRequests:y(b.all("SELECT timestamp, provider, model, tokens, status FROM usageHistory ORDER BY id DESC LIMIT 100").map(a=>{let b=(0,g.q)(a.tokens,{})||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,status:a.status||"ok"}})),errorProvider:Date.now()-i.ts<1e4?i.provider:""};for(let[a,b]of Object.entries(h.byAccount))for(let[c,d]of Object.entries(b))if(d>0){let b=l[a]||`Account ${a.slice(0,8)}...`,e=c.match(/^(.*) \((.*)\)$/);w.activeRequests.push({model:e?e[1]:c,provider:e?e[2]:"unknown",account:b,count:d})}let x=new Date,z=new Date(6e4*Math.floor(x.getTime()/6e4)),A=new Date(z.getTime()-54e4),B={};for(let a=0;a<10;a++){let b=z.getTime()-(9-a)*6e4;B[b]={requests:0,promptTokens:0,completionTokens:0,cost:0},w.last10Minutes.push(B[b])}for(let a of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ? AND timestamp <= ?",[A.toISOString(),x.toISOString()])){let b=6e4*Math.floor(new Date(a.timestamp).getTime()/6e4);B[b]&&(B[b].requests++,B[b].promptTokens+=a.promptTokens||0,B[b].completionTokens+=a.completionTokens||0,B[b].cost+=a.cost||0)}if("24h"!==a&&"today"!==a){let c={"7d":7,"30d":30,"60d":60}[a]||null,d=F(b,c),e=c?Date.now()-864e5*c:0,f=b.all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, tokens FROM usageHistory WHERE timestamp >= ?",[new Date(e).toISOString()]),h={};for(let a of f){let b=o(a.timestamp);(h[b]||=[]).push(a)}for(let a of d){let b=a.dateKey,c=(0,g.q)(a.data,{});for(let[a,b]of(w.totalPromptTokens+=c.promptTokens||0,w.totalCompletionTokens+=c.completionTokens||0,w.totalCachedTokens+=c.cachedTokens||0,w.totalCost+=c.cost||0,Object.entries(c.byProvider||{})))w.byProvider[a]||(w.byProvider[a]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0}),w.byProvider[a].requests+=b.requests||0,w.byProvider[a].promptTokens+=b.promptTokens||0,w.byProvider[a].completionTokens+=b.completionTokens||0,w.byProvider[a].cachedTokens=(w.byProvider[a].cachedTokens||0)+(b.cachedTokens||0),w.byProvider[a].cost+=b.cost||0;for(let[a,d]of Object.entries(c.byModel||{})){let c=d.rawModel||a.split("|")[0],e=d.provider||a.split("|")[1]||"",f=e?`${c} (${e})`:c,g=m[e]||e;w.byModel[f]||(w.byModel[f]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:c,provider:g,lastUsed:b}),w.byModel[f].requests+=d.requests||0,w.byModel[f].promptTokens+=d.promptTokens||0,w.byModel[f].completionTokens+=d.completionTokens||0,w.byModel[f].cachedTokens+=d.cachedTokens||0,w.byModel[f].cost+=d.cost||0,b>(w.byModel[f].lastUsed||"")&&(w.byModel[f].lastUsed=b)}let d=c.byAccount||{},e=Object.values(d).some(a=>!a?.connectionId),f=h[b]||[];for(let[a,h]of(e&&f.length===(c.requests||0)&&(d=function(a){let b={};for(let c of a){if(!c.connectionId)continue;let a=(0,g.q)(c.tokens,{})||{},d=c.promptTokens||a.prompt_tokens||a.input_tokens||0,e=c.completionTokens||a.completion_tokens||a.output_tokens||0;p(b,r(c.connectionId,c.model,c.provider),{requests:1,promptTokens:d,completionTokens:e,cachedTokens:q(a),cost:c.cost||0,meta:{connectionId:c.connectionId,rawModel:c.model||"",provider:c.provider||""}})}return b}(f)),Object.entries(d))){let c=h.connectionId||a,d=l[c]||`Account ${c.slice(0,8)}...`,e=h.rawModel||"",f=h.provider||"",g=m[f]||f,i=r(c,e,f);w.byAccount[i]||(w.byAccount[i]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:e,provider:g,providerId:f,connectionId:c,accountName:d,lastUsed:b}),w.byAccount[i].requests+=h.requests||0,w.byAccount[i].promptTokens+=h.promptTokens||0,w.byAccount[i].completionTokens+=h.completionTokens||0,w.byAccount[i].cachedTokens+=h.cachedTokens||0,w.byAccount[i].cost+=h.cost||0,b>(w.byAccount[i].lastUsed||"")&&(w.byAccount[i].lastUsed=b)}for(let[a,d]of Object.entries(c.byApiKey||{})){let c=d.rawModel||"",e=d.provider||"",f=m[e]||e,g=d.apiKey,h=g?v[g]:null,i=u(g,h),j=g||"local-no-key";w.byApiKey[a]||(w.byApiKey[a]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:c,provider:f,apiKey:g,keyName:i,apiKeyKey:j,lastUsed:b}),w.byApiKey[a].requests+=d.requests||0,w.byApiKey[a].promptTokens+=d.promptTokens||0,w.byApiKey[a].completionTokens+=d.completionTokens||0,w.byApiKey[a].cachedTokens+=d.cachedTokens||0,w.byApiKey[a].cost+=d.cost||0,b>(w.byApiKey[a].lastUsed||"")&&(w.byApiKey[a].lastUsed=b)}for(let[a,d]of Object.entries(c.byEndpoint||{})){let c=d.endpoint||a.split("|")[0]||"Unknown",e=d.rawModel||"",f=d.provider||"",g=m[f]||f;w.byEndpoint[a]||(w.byEndpoint[a]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,endpoint:c,rawModel:e,provider:g,lastUsed:b}),w.byEndpoint[a].requests+=d.requests||0,w.byEndpoint[a].promptTokens+=d.promptTokens||0,w.byEndpoint[a].completionTokens+=d.completionTokens||0,w.byEndpoint[a].cachedTokens+=d.cachedTokens||0,w.byEndpoint[a].cost+=d.cost||0,b>(w.byEndpoint[a].lastUsed||"")&&(w.byEndpoint[a].lastUsed=b)}}for(let a of f){let b=a.timestamp,c=a.provider?`${a.model} (${a.provider})`:a.model;if(w.byModel[c]&&new Date(b)>new Date(w.byModel[c].lastUsed)&&(w.byModel[c].lastUsed=b),a.connectionId){let c=r(a.connectionId,a.model,a.provider);w.byAccount[c]&&new Date(b)>new Date(w.byAccount[c].lastUsed)&&(w.byAccount[c].lastUsed=b)}let d=s(a.apiKey&&"string"==typeof a.apiKey?a.apiKey:null,a.model,a.provider);w.byApiKey[d]&&new Date(b)>new Date(w.byApiKey[d].lastUsed)&&(w.byApiKey[d].lastUsed=b);let e=a.endpoint||"Unknown",f=`${e}|${a.model}|${a.provider||"unknown"}`;w.byEndpoint[f]&&new Date(b)>new Date(w.byEndpoint[f].lastUsed)&&(w.byEndpoint[f].lastUsed=b)}}else{let c;if("today"===a){let a=new Date;a.setHours(0,0,0,0),c=a.toISOString()}else c=new Date(Date.now()-864e5).toISOString();for(let a of b.all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, tokens FROM usageHistory WHERE timestamp >= ?",[c])){let b=(0,g.q)(a.tokens,{})||{},c=b.prompt_tokens||b.input_tokens||0,d=b.completion_tokens||b.output_tokens||0,e=q(b),f=a.cost||0,h=m[a.provider]||a.provider;w.totalPromptTokens+=c,w.totalCompletionTokens+=d,w.totalCachedTokens+=e,w.totalCost+=f,w.byProvider[a.provider]||(w.byProvider[a.provider]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0}),w.byProvider[a.provider].requests++,w.byProvider[a.provider].promptTokens+=c,w.byProvider[a.provider].completionTokens+=d,w.byProvider[a.provider].cachedTokens=(w.byProvider[a.provider].cachedTokens||0)+e,w.byProvider[a.provider].cost+=f;let i=a.provider?`${a.model} (${a.provider})`:a.model;if(w.byModel[i]||(w.byModel[i]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,lastUsed:a.timestamp}),w.byModel[i].requests++,w.byModel[i].promptTokens+=c,w.byModel[i].completionTokens+=d,w.byModel[i].cachedTokens+=e,w.byModel[i].cost+=f,new Date(a.timestamp)>new Date(w.byModel[i].lastUsed)&&(w.byModel[i].lastUsed=a.timestamp),a.connectionId){let b=l[a.connectionId]||`Account ${a.connectionId.slice(0,8)}...`,g=r(a.connectionId,a.model,a.provider);w.byAccount[g]||(w.byAccount[g]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,providerId:a.provider,connectionId:a.connectionId,accountName:b,lastUsed:a.timestamp}),w.byAccount[g].requests++,w.byAccount[g].promptTokens+=c,w.byAccount[g].completionTokens+=d,w.byAccount[g].cachedTokens+=e,w.byAccount[g].cost+=f,new Date(a.timestamp)>new Date(w.byAccount[g].lastUsed)&&(w.byAccount[g].lastUsed=a.timestamp)}if(a.apiKey&&"string"==typeof a.apiKey){let b=v[a.apiKey],g=u(a.apiKey,b),i=s(a.apiKey,a.model,a.provider);w.byApiKey[i]||(w.byApiKey[i]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,apiKey:a.apiKey,keyName:g,apiKeyKey:a.apiKey,lastUsed:a.timestamp});let j=w.byApiKey[i];j.requests++,j.promptTokens+=c,j.completionTokens+=d,j.cachedTokens+=e,j.cost+=f,new Date(a.timestamp)>new Date(j.lastUsed)&&(j.lastUsed=a.timestamp)}else{let b=s(null,a.model,a.provider);w.byApiKey[b]||(w.byApiKey[b]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,apiKey:null,keyName:"Local (No API Key)",apiKeyKey:"local-no-key",lastUsed:a.timestamp});let g=w.byApiKey[b];g.requests++,g.promptTokens+=c,g.completionTokens+=d,g.cachedTokens+=e,g.cost+=f,new Date(a.timestamp)>new Date(g.lastUsed)&&(g.lastUsed=a.timestamp)}let j=a.endpoint||"Unknown",k=`${j}|${a.model}|${a.provider||"unknown"}`;w.byEndpoint[k]||(w.byEndpoint[k]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,endpoint:j,rawModel:a.model,provider:h,lastUsed:a.timestamp});let n=w.byEndpoint[k];n.requests++,n.promptTokens+=c,n.completionTokens+=d,n.cachedTokens+=e,n.cost+=f,new Date(a.timestamp)>new Date(n.lastUsed)&&(n.lastUsed=a.timestamp)}}return w.totalRequests=Object.values(w.byProvider).reduce((a,b)=>a+(b.requests||0),0),w.byApiKey=function(a,b){let c={};for(let[d,e]of Object.entries(a||{})){let a="string"==typeof e.apiKey&&e.apiKey?e.apiKey:null,f=a?b[a]:null,g=a?f?.id||`external-${t(a)}`:"local-no-key",h={...e,apiKeyKey:g};delete h.apiKey,c[`bucket-${t(d)}`]=h}return c}(w.byApiKey,v),w}async function H(a="7d"){let b=await (0,f.cK)(),c=Date.now();if("today"===a){let a=new Date;a.setHours(0,0,0,0);let c=a.getTime(),d=c+864e5,e=Array.from({length:24},(a,b)=>({label:new Date(c+36e5*b).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),tokens:0,cost:0}));for(let a of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(c).toISOString()])){let b=new Date(a.timestamp).getTime();if(b<c||b>=d)continue;let f=Math.floor((b-c)/36e5);f>=0&&f<24&&(e[f].tokens+=(a.promptTokens||0)+(a.completionTokens||0),e[f].cost+=a.cost||0)}return e}if("24h"===a){let a=c-864e5,d=Array.from({length:24},(b,c)=>({label:new Date(a+36e5*c).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),tokens:0,cost:0}));for(let e of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(a).toISOString()])){let b=new Date(e.timestamp).getTime();if(b<a||b>c)continue;let f=Math.min(Math.floor((b-a)/36e5),23);d[f].tokens+=(e.promptTokens||0)+(e.completionTokens||0),d[f].cost+=e.cost||0}return d}let d="7d"===a?7:"30d"===a?30:60,e=new Date,h=F(b,d),i={};for(let a of h)i[a.dateKey]=(0,g.q)(a.data,{});return Array.from({length:d},(a,b)=>{let c=new Date(e);c.setDate(c.getDate()-(d-1-b));let f=i[`${c.getFullYear()}-${String(c.getMonth()+1).padStart(2,"0")}-${String(c.getDate()).padStart(2,"0")}`];return{label:c.toLocaleDateString("en-US",{month:"short",day:"numeric"}),tokens:f?(f.promptTokens||0)+(f.completionTokens||0):0,cost:f&&f.cost||0}})}async function I(a=3e5,b=2){let c=new Map;try{let d=await (0,f.cK)(),e=new Date(Date.now()-a).toISOString(),h=d.all("SELECT provider, connectionId, meta FROM usageHistory WHERE timestamp >= ? AND status = 'ok'",[e]),i=new Map;for(let a of h){if(!a.provider||!a.connectionId)continue;let b=(0,g.q)(a.meta,{}),c=b?.latency?.total;if("number"!=typeof c||c<=0)continue;let d=`${a.provider}|${a.connectionId}`,e=i.get(d)||{total:0,count:0};e.total+=c,e.count+=1,i.set(d,e)}for(let[a,d]of i.entries())d.count>=b&&c.set(a,{avgMs:Math.round(d.total/d.count),samples:d.count})}catch(a){console.error("[usageRepo] getLatencyStats failed:",a.message)}return c}async function J(){}async function K(a=200){try{let b=(await (0,f.cK)()).all("SELECT timestamp, provider, model, connectionId, promptTokens, completionTokens, status, tokens FROM usageHistory ORDER BY id DESC LIMIT ?",[a]);if(!b.length)return[];let d={};try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,5781));for(let b of(await a()))d[b.id]=b.name||b.email||""}catch{}return b.map(a=>{let b=function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${b(a.getDate())}-${b(a.getMonth()+1)}-${a.getFullYear()} ${b(a.getHours())}:${b(a.getMinutes())}:${b(a.getSeconds())}`}(new Date(a.timestamp)),c=a.provider?.toUpperCase()||"-",e=a.model||"-",f=d[a.connectionId]||(a.connectionId?a.connectionId.slice(0,8):"-"),h=a.tokens?(0,g.q)(a.tokens,{}):{},i=a.promptTokens??h.prompt_tokens??"-",j=a.completionTokens??h.completion_tokens??"-";return`${b} | ${e} | ${c} | ${f} | ${i} | ${j} | ${a.status||"-"}`})}catch(a){return console.error("[usageRepo] getRecentLogs failed:",a.message),[]}}}};
|
|
24
|
+
VALUES(?, ?, ?, 0, ?, ?, ?)`,[g,a,d,e,h,h]),f.push({id:g,name:a}),e+=1}}),u(),f}var D=c(74452);function E(a){return a?{id:a.id,name:a.name,kind:a.kind,models:(0,f.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt}:null}async function F(){return(await (0,d.cK)()).all("SELECT * FROM combos ORDER BY createdAt ASC").map(E)}async function G(a){return E((await (0,d.cK)()).get("SELECT * FROM combos WHERE id = ?",[a]))}async function H(a){return E((await (0,d.cK)()).get("SELECT * FROM combos WHERE name = ?",[a]))}async function I(a){let b=await (0,d.cK)(),c=new Date().toISOString(),e={id:(0,j.A)(),name:a.name,kind:a.kind||null,models:a.models||[],createdAt:c,updatedAt:c};return b.run("INSERT INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[e.id,e.name,e.kind,(0,f.s)(e.models),e.createdAt,e.updatedAt]),e}async function J(a,b){let c=await (0,d.cK)(),e=null;return c.transaction(()=>{let d=c.get("SELECT * FROM combos WHERE id = ?",[a]);if(!d)return;let g={...E(d),...b,updatedAt:new Date().toISOString()};c.run("UPDATE combos SET name = ?, kind = ?, models = ?, updatedAt = ? WHERE id = ?",[g.name,g.kind,(0,f.s)(g.models||[]),g.updatedAt,a]),e=g}),e}async function K(a){let b=(await (0,d.cK)()).run("DELETE FROM combos WHERE id = ?",[a]);return(b?.changes??0)>0}var L=c(9460),M=c(97914);let N="disabledModels";async function O(){let a=(await (0,d.cK)()).all("SELECT key, value FROM kv WHERE scope = ?",[N]),b={};for(let c of a)b[c.key]=(0,f.q)(c.value,[]);return b}async function P(a,b){if(!a||!Array.isArray(b))return;let c=await (0,d.cK)();c.transaction(()=>{let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[N,a]),e=[...new Set([...d&&(0,f.q)(d.value,[])||[],...b])];c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[N,a,(0,f.s)(e)])})}async function Q(a,b){if(!a)return;let c=await (0,d.cK)();c.transaction(()=>{if(!Array.isArray(b)||0===b.length)return void c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[N,a]);let d=c.get("SELECT value FROM kv WHERE scope = ? AND key = ?",[N,a]),e=d&&(0,f.q)(d.value,[])||[],g=new Set(b),h=e.filter(a=>!g.has(a));0===h.length?c.run("DELETE FROM kv WHERE scope = ? AND key = ?",[N,a]):c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[N,a,(0,f.s)(h)])})}var R=c(99703),S=c(18943);let T=new Set(["usageHistory","requestDetails","quotaCache"]);async function U(){let a=await (0,d.cK)(),{exportSettings:b}=await Promise.resolve().then(c.bind(c,42655)),g=Object.keys(e.CG).filter(a=>!T.has(a)),h={settings:await b(),providerConnections:a.all("SELECT * FROM providerConnections").map(a=>({...(0,f.q)(a.data,{}),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt})),providerNodes:a.all("SELECT * FROM providerNodes").map(a=>({...(0,f.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt})),proxyPools:a.all("SELECT * FROM proxyPools").map(a=>({...(0,f.q)(a.data,{}),id:a.id,isActive:1===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt})),apiKeys:a.all("SELECT * FROM apiKeys").map(a=>({id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive,createdAt:a.createdAt})),combos:a.all("SELECT * FROM combos").map(a=>({id:a.id,name:a.name,kind:a.kind,models:(0,f.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt})),modelAliases:{},customModels:[],mitmAlias:{},pricing:{},tables:Object.fromEntries(g.map(b=>[b,a.all(`SELECT * FROM "${b}"`)])),excludedTables:[...T]};for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'modelAliases'"))h.modelAliases[b.key]=(0,f.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'customModels'"))h.customModels.push((0,f.q)(b.value));for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'mitmAlias'"))h.mitmAlias[b.key]=(0,f.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'pricing'"))h.pricing[b.key]=(0,f.q)(b.value);return h}async function V(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let b=await (0,d.cK)();return b.transaction(()=>{if(a.tables&&"object"==typeof a.tables&&!Array.isArray(a.tables)){for(let a of Object.keys(e.CG).reverse())T.has(a)||b.run(`DELETE FROM "${a}"`);for(let[c,d]of Object.entries(a.tables))if(e.CG[c]&&Array.isArray(d))for(let a of d){let d=Object.keys(a).filter(a=>e.CG[c].columns[a]);0!==d.length&&b.run(`INSERT INTO "${c}" (${d.map(a=>`"${a}"`).join(", ")}) VALUES (${d.map(()=>"?").join(", ")})`,d.map(b=>a[b]))}return}for(let c of(b.run("DELETE FROM settings"),b.run("DELETE FROM providerConnections"),b.run("DELETE FROM providerNodes"),b.run("DELETE FROM proxyPools"),b.run("DELETE FROM apiKeys"),b.run("DELETE FROM combos"),b.run("DELETE FROM kv WHERE scope IN ('modelAliases', 'customModels', 'mitmAlias', 'pricing')"),a.settings&&b.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,f.s)(a.settings)]),a.providerConnections||[])){let{id:a,provider:d,authType:e,name:g,email:h,priority:i,isActive:j,createdAt:k,updatedAt:l,...m}=c;b.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a,d,e||"oauth",g||null,h||null,i||null,+(!1!==j),(0,f.s)(m),k||new Date().toISOString(),l||new Date().toISOString()])}for(let c of a.providerNodes||[]){let{id:a,type:d,name:e,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,d||null,e||null,(0,f.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.proxyPools||[]){let{id:a,isActive:d,testStatus:e,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,+(!1!==d),e||"unknown",(0,f.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.apiKeys||[])b.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.key,c.name||null,c.machineId||null,+(!1!==c.isActive),c.createdAt||new Date().toISOString()]);for(let c of a.combos||[])b.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.name,c.kind||null,(0,f.s)(c.models||[]),c.createdAt||new Date().toISOString(),c.updatedAt||new Date().toISOString()]);for(let[c,d]of Object.entries(a.modelAliases||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[c,(0,f.s)(d)]);for(let c of a.customModels||[]){let a=`${c.providerAlias}|${c.id}|${c.type||"llm"}`;b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[a,(0,f.s)(c)])}for(let[c,d]of Object.entries(a.mitmAlias||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[c,(0,f.s)(d||{})]);for(let[c,d]of Object.entries(a.pricing||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[c,(0,f.s)(d||{})])}),await U()}},74452:(a,b,c)=>{c.r(b),c.d(b,{admitApiKeyRequest:()=>p,checkApiKeyBudget:()=>s,createApiKey:()=>m,deleteApiKey:()=>q,getApiKeyById:()=>l,getApiKeys:()=>k,maskApiKey:()=>i,rotateApiKey:()=>o,updateApiKey:()=>n,validateApiKey:()=>r});var d=c(47293),e=c(36366);let f=new Map,g=new Map;function h(a){if(Array.isArray(a))return a;if(!a)return[];try{return JSON.parse(a)}catch{return[]}}function i(a){return a?a.length<=12?`${a.slice(0,4)}…`:`${a.slice(0,8)}…${a.slice(-4)}`:null}function j(a,b=!1){return a?{id:a.id,key:b?a.key:void 0,maskedKey:i(a.key),name:a.name,machineId:a.machineId,isActive:1===a.isActive||!0===a.isActive,createdAt:a.createdAt,budgetDaily:a.budgetDaily||0,budgetMonthly:a.budgetMonthly||0,requestsPerMinute:a.requestsPerMinute||0,allowedModels:h(a.allowedModels)}:null}async function k(a=!1){return(await (0,e.cK)()).all("SELECT * FROM apiKeys ORDER BY createdAt ASC").map(b=>j(b,a))}async function l(a,b=!1){return j((await (0,e.cK)()).get("SELECT * FROM apiKeys WHERE id = ?",[a]),b)}async function m(a,b){if(!b)throw Error("machineId is required");let f=await (0,e.cK)(),{generateApiKeyWithMachine:g}=await c.e(6844).then(c.bind(c,86844)),h=g(b),i={id:(0,d.A)(),name:a,key:h.key,machineId:b,isActive:!0,createdAt:new Date().toISOString()};return f.run("INSERT INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[i.id,i.key,i.name,i.machineId,1,i.createdAt]),i}async function n(a,b){let c=await (0,e.cK)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!e)return;let f={...j(e,!0),...b};c.run("UPDATE apiKeys SET key = ?, name = ?, machineId = ?, isActive = ?, budgetDaily = ?, budgetMonthly = ?, requestsPerMinute = ?, allowedModels = ? WHERE id = ?",[f.key,f.name,f.machineId,+!!f.isActive,Number(f.budgetDaily)||0,Number(f.budgetMonthly)||0,Number(f.requestsPerMinute)||0,JSON.stringify(f.allowedModels||[]),a]),d=f}),d}async function o(a){let b=await (0,e.cK)(),d=b.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!d)return null;let{generateApiKeyWithMachine:f}=await c.e(6844).then(c.bind(c,86844)),g=f(d.machineId).key;return b.run("UPDATE apiKeys SET key = ? WHERE id = ?",[g,a]),{...j({...d,key:g}),key:g}}async function p(a,b){let c=(await (0,e.cK)()).get("SELECT budgetDaily, budgetMonthly, requestsPerMinute, allowedModels FROM apiKeys WHERE key = ?",[a]);if(!c)return{allowed:!0,release(){}};let d=h(c.allowedModels);if(d.length>0&&!d.includes(b))return{allowed:!1,status:403,reason:`Model ${b} is not allowed for this API key`};let i=Number(c.requestsPerMinute)||0;if(i>0){let b=Date.now(),c=(g.get(a)||[]).filter(a=>b-a<6e4);if(c.length>=i){let d=Math.max(1,Math.ceil((6e4-(b-c[0]))/1e3));return g.set(a,c),{allowed:!1,status:429,retryAfter:d,reason:"API key rate limit exceeded"}}c.push(b),!g.has(a)&&g.size>=1e4&&function(a){for(let[b,c]of g)(0===c.length||a-c[c.length-1]>=6e4)&&g.delete(b)}(b),g.set(a,c)}if(!(Number(c.budgetDaily)>0||Number(c.budgetMonthly)>0))return{allowed:!0,release(){}};let j=Date.now(),k=f.get(a);if(k&&j-k.startedAt<6e5)return{allowed:!1,status:429,retryAfter:1,reason:"A budgeted request is already in progress"};let l={token:Symbol("budget-slot"),startedAt:j};return f.set(a,l),{allowed:!0,release:()=>{f.get(a)?.token===l.token&&f.delete(a)}}}async function q(a){let b=(await (0,e.cK)()).run("DELETE FROM apiKeys WHERE id = ?",[a]);return(b?.changes??0)>0}async function r(a){let b=(await (0,e.cK)()).get("SELECT isActive FROM apiKeys WHERE key = ?",[a]);return!!b&&(1===b.isActive||!0===b.isActive)}async function s(a){let b=await (0,e.cK)(),c=b.get("SELECT budgetDaily, budgetMonthly FROM apiKeys WHERE key = ?",[a]);if(!c)return{allowed:!0};let d=c.budgetDaily||0,f=c.budgetMonthly||0;if(d<=0&&f<=0)return{allowed:!0,budgetDaily:d,budgetMonthly:f};let g=0,h=0;try{if(d>0){let c=new Date;c.setHours(0,0,0,0);let d=b.get("SELECT COALESCE(SUM(cost), 0) AS total FROM usageHistory WHERE apiKey = ? AND timestamp >= ?",[a,c.toISOString()]);g=d?.total||0}if(f>0){let c=new Date;c.setDate(1),c.setHours(0,0,0,0);let d=b.get("SELECT COALESCE(SUM(cost), 0) AS total FROM usageHistory WHERE apiKey = ? AND timestamp >= ?",[a,c.toISOString()]);h=d?.total||0}}catch(a){return{allowed:!1,error:!0,reason:"Budget accounting unavailable"}}return d>0&&g>=d?{allowed:!1,reason:`Daily budget exceeded ($${g.toFixed(4)} / $${d})`,spentDaily:g,spentMonthly:h,budgetDaily:d,budgetMonthly:f}:f>0&&h>=f?{allowed:!1,reason:`Monthly budget exceeded ($${h.toFixed(4)} / $${f})`,spentDaily:g,spentMonthly:h,budgetDaily:d,budgetMonthly:f}:{allowed:!0,spentDaily:g,spentMonthly:h,budgetDaily:d,budgetMonthly:f}}},97914:(a,b,c)=>{c.d(b,{KJ:()=>l,VT:()=>n,getPricingForModel:()=>k,r4:()=>j,yF:()=>m});var d=c(36366),e=c(644);let f=(0,c(22846).U)("pricing"),g={value:null,expiresAt:0};function h(){g={value:null,expiresAt:0}}async function i(){return await f.getAll()}async function j(){let a=Date.now();if(g.value&&g.expiresAt>a)return g.value;let b=await i(),{PROVIDER_PRICING:d}=await c.e(7341).then(c.bind(c,57341)),e={};for(let[a,c]of Object.entries(d))if(e[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))e[a][c]=e[a][c]?{...e[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(e[a])for(let[b,d]of Object.entries(c))e[a][b]||(e[a][b]=d);else e[a]={...c};return g={value:e,expiresAt:a+5e3},e}async function k(a,b){if(!b)return null;let d=await i();if(a&&d[a]?.[b])return d[a][b];let{getPricingForModel:e}=await c.e(7341).then(c.bind(c,57341));return e(a,b)}async function l(a){let b=await (0,d.cK)();return b.transaction(()=>{for(let[c,d]of Object.entries(a)){let a=b.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[c]),f={...a&&(0,e.q)(a.value,{})||{}};for(let[a,b]of Object.entries(d))f[a]=b;b.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[c,(0,e.s)(f)])}}),h(),await i()}async function m(a,b){if(!a)return await i();let c=await (0,d.cK)();return c.transaction(()=>{if(!b)return void c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]);let d=c.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[a]),f=d&&(0,e.q)(d.value,{})||{};delete f[b],0===Object.keys(f).length?c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]):c.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,(0,e.s)(f)])}),h(),await i()}async function n(){return await f.clear(),h(),{}}},99703:(a,b,c)=>{c.d(b,{BY:()=>G,E5:()=>J,Zx:()=>K,_3:()=>I,_V:()=>n,d_:()=>E,j$:()=>H,rg:()=>B,sZ:()=>D,uw:()=>A});var d=c(94735),e=c(77598),f=c(36366),g=c(644);c(62674);global._pendingRequests||(global._pendingRequests={byModel:{},byAccount:{}}),global._lastErrorProvider||(global._lastErrorProvider={provider:"",ts:0}),global._statsEmitter||(global._statsEmitter=new d.EventEmitter,global._statsEmitter.setMaxListeners(50)),global._pendingTimers||(global._pendingTimers={}),global._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0}),global._usageWritesInFlight||(global._usageWritesInFlight=new Set);let h=global._pendingRequests,i=global._lastErrorProvider,j=global._pendingTimers,k=global._recentRing,l=global._connectionMapCache,m=global._usageWritesInFlight,n=global._statsEmitter;function o(a){let b=a?new Date(a):new Date;return`${b.getFullYear()}-${String(b.getMonth()+1).padStart(2,"0")}-${String(b.getDate()).padStart(2,"0")}`}function p(a,b,c){a[b]||(a[b]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0}),a[b].requests+=c.requests||1,a[b].promptTokens+=c.promptTokens||0,a[b].completionTokens+=c.completionTokens||0,a[b].cachedTokens=(a[b].cachedTokens||0)+(c.cachedTokens||0),a[b].cost+=c.cost||0,c.meta&&Object.assign(a[b],c.meta)}function q(a){return a&&"object"==typeof a&&(a.cached_tokens||a.prompt_tokens_details?.cached_tokens||a.cache_read_input_tokens)||0}function r(a,b,c){return`${a}|${b||"unknown"}|${c||"unknown"}`}function s(a,b,c){return`${a||"local-no-key"}|${b||"unknown"}|${c||"unknown"}`}function t(a){return(0,e.createHash)("sha256").update(String(a)).digest("hex").slice(0,20)}function u(a,b){return a?b?.name||`External Key ${t(a).slice(0,8)}`:"Local (No API Key)"}async function v(){if(Date.now()-l.ts<3e4)return l.map;try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,5781)),b=await a(),d={};for(let a of b)d[a.id]=a.name||a.email||a.id;l.map=d,l.ts=Date.now()}catch{}return l.map}async function w(){if(!k.initialized){k.initialized=!0;try{k.items=(await (0,f.cK)()).all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint, cost, status, tokens FROM usageHistory ORDER BY id DESC LIMIT ?",[50]).reverse().map(a=>({timestamp:a.timestamp,provider:a.provider,model:a.model,connectionId:a.connectionId,apiKey:a.apiKey,endpoint:a.endpoint,cost:a.cost,status:a.status,tokens:(0,g.q)(a.tokens,{})}))}catch{}}}async function x(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.resolve().then(c.bind(c,97914)),f=await e(a,b);if(!f)return 0;let g=0,h=d.prompt_tokens||d.input_tokens||0,i=q(d),j=void 0!==d.cached_tokens||d.prompt_tokens_details?.cached_tokens!==void 0?Math.max(0,h-i):h;if(g+=j*(f.input/1e6),i>0){let a=f.cached||f.input;g+=a/1e6*i}let k=d.completion_tokens||d.output_tokens||0;g+=k*(f.output/1e6);let l=d.reasoning_tokens||0;if(l>0){let a=f.reasoning||f.output;g+=a/1e6*l}let m=d.cache_creation_input_tokens||0;if(m>0){let a=f.cache_creation||f.input;g+=a/1e6*m}return g}catch(a){return console.error("Error calculating cost:",a),0}}function y(a,b=20){let c=new Set;return a.filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let b=JSON.stringify([a.timestamp,a.model,a.provider,a.promptTokens,a.completionTokens]);return!c.has(b)&&(c.add(b),!0)}).slice(0,b)}function z(a,b,c){h.byModel[a]||(h.byModel[a]=0),h.byModel[a]=Math.max(0,h.byModel[a]+c),0===h.byModel[a]&&delete h.byModel[a],b&&(h.byAccount[b]||(h.byAccount[b]={}),h.byAccount[b][a]||(h.byAccount[b][a]=0),h.byAccount[b][a]=Math.max(0,h.byAccount[b][a]+c),0===h.byAccount[b][a]&&(delete h.byAccount[b][a],0===Object.keys(h.byAccount[b]).length&&delete h.byAccount[b]))}function A(a,b,c,d,e=!1){let f=b?`${a} (${b})`:a,g=`${c}|${f}`;if(z(f,c,d?1:-1),d){let a=function(a,b,c){let d=j[a];if(Array.isArray(d))return d;d&&(clearTimeout(d),z(b,c,-1));let e=[];return j[a]=e,e}(g,f,c),b=setTimeout(()=>{let a=j[g];if(Array.isArray(a)){let c=a.indexOf(b);c>=0&&a.splice(c,1),0===a.length&&delete j[g]}z(f,c,-1),n.emit("pending")},6e4);b.unref?.(),a.push(b)}else{let a=j[g];if(Array.isArray(a)){let b=a.shift();b&&clearTimeout(b),0===a.length&&delete j[g]}else a&&(clearTimeout(a),delete j[g])}!d&&e&&b&&(i.provider=b.toLowerCase(),i.ts=Date.now());let h=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"});console.log(`[${h}] [PENDING] ${d?"START":"END"}${e?" (ERROR)":""} | provider=${b} | model=${a}`),n.emit("pending")}async function B(){let a=[],b=await v();for(let[c,d]of Object.entries(h.byAccount))for(let[e,f]of Object.entries(d))if(f>0){let d=b[c]||`Account ${c.slice(0,8)}...`,g=e.match(/^(.*) \((.*)\)$/);a.push({model:g?g[1]:e,provider:g?g[2]:"unknown",account:d,count:f})}return await w(),{activeRequests:a,recentRequests:y([...k.items].sort((a,b)=>new Date(b.timestamp)-new Date(a.timestamp)).map(a=>{let b=a.tokens||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,status:a.status||"ok"}})),errorProvider:Date.now()-i.ts<1e4?i.provider:""}}async function C(a){try{let b=await (0,f.cK)();a.timestamp||(a.timestamp=new Date().toISOString()),a.cost=await x(a.provider,a.model,a.tokens);let c=a.tokens||{},d=c.prompt_tokens||c.input_tokens||0,e=c.completion_tokens||c.output_tokens||0;b.transaction(()=>{b.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a.timestamp,a.provider||null,a.model||null,a.connectionId||null,a.apiKey||null,a.endpoint||null,d,e,a.cost||0,a.status||"ok",(0,g.s)(c),(0,g.s)(a.latency&&"object"==typeof a.latency?{latency:{ttft:a.latency.ttft||0,total:a.latency.total||0}}:{})]);let f=o(a.timestamp),h=b.get("SELECT data FROM usageDaily WHERE dateKey = ?",[f]),i=h?(0,g.q)(h.data,{}):{requests:0,promptTokens:0,completionTokens:0,cost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{}};!function(a,b){let c=b.tokens?.prompt_tokens||b.tokens?.input_tokens||0,d=b.tokens?.completion_tokens||b.tokens?.output_tokens||0,e=q(b.tokens),f=b.cost||0,g={promptTokens:c,completionTokens:d,cachedTokens:e,cost:f};a.requests=(a.requests||0)+1,a.promptTokens=(a.promptTokens||0)+c,a.completionTokens=(a.completionTokens||0)+d,a.cachedTokens=(a.cachedTokens||0)+e,a.cost=(a.cost||0)+f,a.byProvider||={},a.byModel||={},a.byAccount||={},a.byApiKey||={},a.byEndpoint||={},b.provider&&p(a.byProvider,b.provider,g);let h=b.provider?`${b.model}|${b.provider}`:b.model;if(p(a.byModel,h,{...g,meta:{rawModel:b.model,provider:b.provider}}),b.connectionId){let c=r(b.connectionId,b.model,b.provider);p(a.byAccount,c,{...g,meta:{connectionId:b.connectionId,rawModel:b.model,provider:b.provider}})}let i=s(b.apiKey&&"string"==typeof b.apiKey?b.apiKey:null,b.model,b.provider);p(a.byApiKey,i,{...g,meta:{rawModel:b.model,provider:b.provider,apiKey:b.apiKey||null}});let j=b.endpoint||"Unknown",k=`${j}|${b.model}|${b.provider||"unknown"}`;p(a.byEndpoint,k,{...g,meta:{endpoint:j,rawModel:b.model,provider:b.provider}})}(i,a),b.run("INSERT INTO usageDaily(dateKey, data) VALUES(?, ?) ON CONFLICT(dateKey) DO UPDATE SET data = excluded.data",[f,(0,g.s)(i)]);let j=b.get("SELECT value FROM _meta WHERE key = 'totalRequestsLifetime'"),k=(j?parseInt(j.value,10):0)+1;b.run("INSERT INTO _meta(key, value) VALUES('totalRequestsLifetime', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[String(k)])}),k.items.push(a),k.items.length>50&&(k.items=k.items.slice(-50)),n.emit("update")}catch(a){console.error("Failed to save usage stats:",a)}}function D(a){let b=C(a);return m.add(b),b.finally(()=>m.delete(b)),b}async function E(){for(;m.size>0;)await Promise.allSettled([...m])}function F(a,b){if(null==b)return a.all("SELECT dateKey, data FROM usageDaily");let c=new Date,d=new Date(c.getFullYear(),c.getMonth(),c.getDate()-b+1),e=`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,"0")}-${String(d.getDate()).padStart(2,"0")}`;return a.all("SELECT dateKey, data FROM usageDaily WHERE dateKey >= ?",[e])}async function G(a="all"){let b=await (0,f.cK)(),[{getProviderConnections:d},{getApiKeys:e},{getProviderNodes:j}]=await Promise.all([Promise.resolve().then(c.bind(c,5781)),Promise.resolve().then(c.bind(c,74452)),Promise.resolve().then(c.bind(c,1129))]),k=[];try{k=await d()}catch{}let l={};for(let a of k)l[a.id]=a.name||a.email||a.id;let m={};try{for(let a of(await j()))a.id&&a.name&&(m[a.id]=a.name)}catch{}let n=[];try{n=await e(!0)}catch{}let v={};for(let a of n)v[a.key]={name:a.name,id:a.id,createdAt:a.createdAt};let w={totalRequests:0,totalPromptTokens:0,totalCompletionTokens:0,totalCachedTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{},last10Minutes:[],pending:h,activeRequests:[],recentRequests:y(b.all("SELECT timestamp, provider, model, tokens, status FROM usageHistory ORDER BY id DESC LIMIT 100").map(a=>{let b=(0,g.q)(a.tokens,{})||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,status:a.status||"ok"}})),errorProvider:Date.now()-i.ts<1e4?i.provider:""};for(let[a,b]of Object.entries(h.byAccount))for(let[c,d]of Object.entries(b))if(d>0){let b=l[a]||`Account ${a.slice(0,8)}...`,e=c.match(/^(.*) \((.*)\)$/);w.activeRequests.push({model:e?e[1]:c,provider:e?e[2]:"unknown",account:b,count:d})}let x=new Date,z=new Date(6e4*Math.floor(x.getTime()/6e4)),A=new Date(z.getTime()-54e4),B={};for(let a=0;a<10;a++){let b=z.getTime()-(9-a)*6e4;B[b]={requests:0,promptTokens:0,completionTokens:0,cost:0},w.last10Minutes.push(B[b])}for(let a of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ? AND timestamp <= ?",[A.toISOString(),x.toISOString()])){let b=6e4*Math.floor(new Date(a.timestamp).getTime()/6e4);B[b]&&(B[b].requests++,B[b].promptTokens+=a.promptTokens||0,B[b].completionTokens+=a.completionTokens||0,B[b].cost+=a.cost||0)}if("24h"!==a&&"today"!==a){let c={"7d":7,"30d":30,"60d":60}[a]||null,d=F(b,c),e=c?Date.now()-864e5*c:0,f=b.all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, tokens FROM usageHistory WHERE timestamp >= ?",[new Date(e).toISOString()]),h={};for(let a of f){let b=o(a.timestamp);(h[b]||=[]).push(a)}for(let a of d){let b=a.dateKey,c=(0,g.q)(a.data,{});for(let[a,b]of(w.totalPromptTokens+=c.promptTokens||0,w.totalCompletionTokens+=c.completionTokens||0,w.totalCachedTokens+=c.cachedTokens||0,w.totalCost+=c.cost||0,Object.entries(c.byProvider||{})))w.byProvider[a]||(w.byProvider[a]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0}),w.byProvider[a].requests+=b.requests||0,w.byProvider[a].promptTokens+=b.promptTokens||0,w.byProvider[a].completionTokens+=b.completionTokens||0,w.byProvider[a].cachedTokens=(w.byProvider[a].cachedTokens||0)+(b.cachedTokens||0),w.byProvider[a].cost+=b.cost||0;for(let[a,d]of Object.entries(c.byModel||{})){let c=d.rawModel||a.split("|")[0],e=d.provider||a.split("|")[1]||"",f=e?`${c} (${e})`:c,g=m[e]||e;w.byModel[f]||(w.byModel[f]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:c,provider:g,lastUsed:b}),w.byModel[f].requests+=d.requests||0,w.byModel[f].promptTokens+=d.promptTokens||0,w.byModel[f].completionTokens+=d.completionTokens||0,w.byModel[f].cachedTokens+=d.cachedTokens||0,w.byModel[f].cost+=d.cost||0,b>(w.byModel[f].lastUsed||"")&&(w.byModel[f].lastUsed=b)}let d=c.byAccount||{},e=Object.values(d).some(a=>!a?.connectionId),f=h[b]||[];for(let[a,h]of(e&&f.length===(c.requests||0)&&(d=function(a){let b={};for(let c of a){if(!c.connectionId)continue;let a=(0,g.q)(c.tokens,{})||{},d=c.promptTokens||a.prompt_tokens||a.input_tokens||0,e=c.completionTokens||a.completion_tokens||a.output_tokens||0;p(b,r(c.connectionId,c.model,c.provider),{requests:1,promptTokens:d,completionTokens:e,cachedTokens:q(a),cost:c.cost||0,meta:{connectionId:c.connectionId,rawModel:c.model||"",provider:c.provider||""}})}return b}(f)),Object.entries(d))){let c=h.connectionId||a,d=l[c]||`Account ${c.slice(0,8)}...`,e=h.rawModel||"",f=h.provider||"",g=m[f]||f,i=r(c,e,f);w.byAccount[i]||(w.byAccount[i]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:e,provider:g,providerId:f,connectionId:c,accountName:d,lastUsed:b}),w.byAccount[i].requests+=h.requests||0,w.byAccount[i].promptTokens+=h.promptTokens||0,w.byAccount[i].completionTokens+=h.completionTokens||0,w.byAccount[i].cachedTokens+=h.cachedTokens||0,w.byAccount[i].cost+=h.cost||0,b>(w.byAccount[i].lastUsed||"")&&(w.byAccount[i].lastUsed=b)}for(let[a,d]of Object.entries(c.byApiKey||{})){let c=d.rawModel||"",e=d.provider||"",f=m[e]||e,g=d.apiKey,h=g?v[g]:null,i=u(g,h),j=g||"local-no-key";w.byApiKey[a]||(w.byApiKey[a]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:c,provider:f,apiKey:g,keyName:i,apiKeyKey:j,lastUsed:b}),w.byApiKey[a].requests+=d.requests||0,w.byApiKey[a].promptTokens+=d.promptTokens||0,w.byApiKey[a].completionTokens+=d.completionTokens||0,w.byApiKey[a].cachedTokens+=d.cachedTokens||0,w.byApiKey[a].cost+=d.cost||0,b>(w.byApiKey[a].lastUsed||"")&&(w.byApiKey[a].lastUsed=b)}for(let[a,d]of Object.entries(c.byEndpoint||{})){let c=d.endpoint||a.split("|")[0]||"Unknown",e=d.rawModel||"",f=d.provider||"",g=m[f]||f;w.byEndpoint[a]||(w.byEndpoint[a]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,endpoint:c,rawModel:e,provider:g,lastUsed:b}),w.byEndpoint[a].requests+=d.requests||0,w.byEndpoint[a].promptTokens+=d.promptTokens||0,w.byEndpoint[a].completionTokens+=d.completionTokens||0,w.byEndpoint[a].cachedTokens+=d.cachedTokens||0,w.byEndpoint[a].cost+=d.cost||0,b>(w.byEndpoint[a].lastUsed||"")&&(w.byEndpoint[a].lastUsed=b)}}for(let a of f){let b=a.timestamp,c=a.provider?`${a.model} (${a.provider})`:a.model;if(w.byModel[c]&&new Date(b)>new Date(w.byModel[c].lastUsed)&&(w.byModel[c].lastUsed=b),a.connectionId){let c=r(a.connectionId,a.model,a.provider);w.byAccount[c]&&new Date(b)>new Date(w.byAccount[c].lastUsed)&&(w.byAccount[c].lastUsed=b)}let d=s(a.apiKey&&"string"==typeof a.apiKey?a.apiKey:null,a.model,a.provider);w.byApiKey[d]&&new Date(b)>new Date(w.byApiKey[d].lastUsed)&&(w.byApiKey[d].lastUsed=b);let e=a.endpoint||"Unknown",f=`${e}|${a.model}|${a.provider||"unknown"}`;w.byEndpoint[f]&&new Date(b)>new Date(w.byEndpoint[f].lastUsed)&&(w.byEndpoint[f].lastUsed=b)}}else{let c;if("today"===a){let a=new Date;a.setHours(0,0,0,0),c=a.toISOString()}else c=new Date(Date.now()-864e5).toISOString();for(let a of b.all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, tokens FROM usageHistory WHERE timestamp >= ?",[c])){let b=(0,g.q)(a.tokens,{})||{},c=b.prompt_tokens||b.input_tokens||0,d=b.completion_tokens||b.output_tokens||0,e=q(b),f=a.cost||0,h=m[a.provider]||a.provider;w.totalPromptTokens+=c,w.totalCompletionTokens+=d,w.totalCachedTokens+=e,w.totalCost+=f,w.byProvider[a.provider]||(w.byProvider[a.provider]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0}),w.byProvider[a.provider].requests++,w.byProvider[a.provider].promptTokens+=c,w.byProvider[a.provider].completionTokens+=d,w.byProvider[a.provider].cachedTokens=(w.byProvider[a.provider].cachedTokens||0)+e,w.byProvider[a.provider].cost+=f;let i=a.provider?`${a.model} (${a.provider})`:a.model;if(w.byModel[i]||(w.byModel[i]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,lastUsed:a.timestamp}),w.byModel[i].requests++,w.byModel[i].promptTokens+=c,w.byModel[i].completionTokens+=d,w.byModel[i].cachedTokens+=e,w.byModel[i].cost+=f,new Date(a.timestamp)>new Date(w.byModel[i].lastUsed)&&(w.byModel[i].lastUsed=a.timestamp),a.connectionId){let b=l[a.connectionId]||`Account ${a.connectionId.slice(0,8)}...`,g=r(a.connectionId,a.model,a.provider);w.byAccount[g]||(w.byAccount[g]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,providerId:a.provider,connectionId:a.connectionId,accountName:b,lastUsed:a.timestamp}),w.byAccount[g].requests++,w.byAccount[g].promptTokens+=c,w.byAccount[g].completionTokens+=d,w.byAccount[g].cachedTokens+=e,w.byAccount[g].cost+=f,new Date(a.timestamp)>new Date(w.byAccount[g].lastUsed)&&(w.byAccount[g].lastUsed=a.timestamp)}if(a.apiKey&&"string"==typeof a.apiKey){let b=v[a.apiKey],g=u(a.apiKey,b),i=s(a.apiKey,a.model,a.provider);w.byApiKey[i]||(w.byApiKey[i]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,apiKey:a.apiKey,keyName:g,apiKeyKey:a.apiKey,lastUsed:a.timestamp});let j=w.byApiKey[i];j.requests++,j.promptTokens+=c,j.completionTokens+=d,j.cachedTokens+=e,j.cost+=f,new Date(a.timestamp)>new Date(j.lastUsed)&&(j.lastUsed=a.timestamp)}else{let b=s(null,a.model,a.provider);w.byApiKey[b]||(w.byApiKey[b]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,apiKey:null,keyName:"Local (No API Key)",apiKeyKey:"local-no-key",lastUsed:a.timestamp});let g=w.byApiKey[b];g.requests++,g.promptTokens+=c,g.completionTokens+=d,g.cachedTokens+=e,g.cost+=f,new Date(a.timestamp)>new Date(g.lastUsed)&&(g.lastUsed=a.timestamp)}let j=a.endpoint||"Unknown",k=`${j}|${a.model}|${a.provider||"unknown"}`;w.byEndpoint[k]||(w.byEndpoint[k]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,endpoint:j,rawModel:a.model,provider:h,lastUsed:a.timestamp});let n=w.byEndpoint[k];n.requests++,n.promptTokens+=c,n.completionTokens+=d,n.cachedTokens+=e,n.cost+=f,new Date(a.timestamp)>new Date(n.lastUsed)&&(n.lastUsed=a.timestamp)}}return w.totalRequests=Object.values(w.byProvider).reduce((a,b)=>a+(b.requests||0),0),w.byApiKey=function(a,b){let c={};for(let[d,e]of Object.entries(a||{})){let a="string"==typeof e.apiKey&&e.apiKey?e.apiKey:null,f=a?b[a]:null,g=a?f?.id||`external-${t(a)}`:"local-no-key",h={...e,apiKeyKey:g};delete h.apiKey,c[`bucket-${t(d)}`]=h}return c}(w.byApiKey,v),w}async function H(a="7d"){let b=await (0,f.cK)(),c=Date.now();if("today"===a){let a=new Date;a.setHours(0,0,0,0);let c=a.getTime(),d=c+864e5,e=Array.from({length:24},(a,b)=>({label:new Date(c+36e5*b).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),tokens:0,cost:0}));for(let a of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(c).toISOString()])){let b=new Date(a.timestamp).getTime();if(b<c||b>=d)continue;let f=Math.floor((b-c)/36e5);f>=0&&f<24&&(e[f].tokens+=(a.promptTokens||0)+(a.completionTokens||0),e[f].cost+=a.cost||0)}return e}if("24h"===a){let a=c-864e5,d=Array.from({length:24},(b,c)=>({label:new Date(a+36e5*c).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),tokens:0,cost:0}));for(let e of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(a).toISOString()])){let b=new Date(e.timestamp).getTime();if(b<a||b>c)continue;let f=Math.min(Math.floor((b-a)/36e5),23);d[f].tokens+=(e.promptTokens||0)+(e.completionTokens||0),d[f].cost+=e.cost||0}return d}let d="7d"===a?7:"30d"===a?30:60,e=new Date,h=F(b,d),i={};for(let a of h)i[a.dateKey]=(0,g.q)(a.data,{});return Array.from({length:d},(a,b)=>{let c=new Date(e);c.setDate(c.getDate()-(d-1-b));let f=i[`${c.getFullYear()}-${String(c.getMonth()+1).padStart(2,"0")}-${String(c.getDate()).padStart(2,"0")}`];return{label:c.toLocaleDateString("en-US",{month:"short",day:"numeric"}),tokens:f?(f.promptTokens||0)+(f.completionTokens||0):0,cost:f&&f.cost||0}})}async function I(a=3e5,b=2){let c=new Map;try{let d=await (0,f.cK)(),e=new Date(Date.now()-a).toISOString(),h=d.all("SELECT provider, connectionId, meta FROM usageHistory WHERE timestamp >= ? AND status = 'ok'",[e]),i=new Map;for(let a of h){if(!a.provider||!a.connectionId)continue;let b=(0,g.q)(a.meta,{}),c=b?.latency?.total;if("number"!=typeof c||c<=0)continue;let d=`${a.provider}|${a.connectionId}`,e=i.get(d)||{total:0,count:0};e.total+=c,e.count+=1,i.set(d,e)}for(let[a,d]of i.entries())d.count>=b&&c.set(a,{avgMs:Math.round(d.total/d.count),samples:d.count})}catch(a){console.error("[usageRepo] getLatencyStats failed:",a.message)}return c}async function J(){}async function K(a=200){try{let b=(await (0,f.cK)()).all("SELECT timestamp, provider, model, connectionId, promptTokens, completionTokens, status, tokens FROM usageHistory ORDER BY id DESC LIMIT ?",[a]);if(!b.length)return[];let d={};try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,5781));for(let b of(await a()))d[b.id]=b.name||b.email||""}catch{}return b.map(a=>{let b=function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${b(a.getDate())}-${b(a.getMonth()+1)}-${a.getFullYear()} ${b(a.getHours())}:${b(a.getMinutes())}:${b(a.getSeconds())}`}(new Date(a.timestamp)),c=a.provider?.toUpperCase()||"-",e=a.model||"-",f=d[a.connectionId]||(a.connectionId?a.connectionId.slice(0,8):"-"),h=a.tokens?(0,g.q)(a.tokens,{}):{},i=a.promptTokens??h.prompt_tokens??"-",j=a.completionTokens??h.completion_tokens??"-";return`${b} | ${e} | ${c} | ${f} | ${i} | ${j} | ${a.status||"-"}`})}catch(a){return console.error("[usageRepo] getRecentLogs failed:",a.message),[]}}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=9489,exports.ids=[9489],exports.modules={3359:(a,b,c)=>{c.d(b,{K0:()=>j,Oh:()=>n,c9:()=>q,lL:()=>r,s9:()=>i});var d=c(89718),e=c(44404);let f="gpt-5.6";function g(a){return String(a||"").trim().replace(/^\/+|\/+$/g,"")}function h(a){let b;return`cx/${(b=g(a)).startsWith("cx/")?b.slice(3):b.startsWith("codex/")?b.slice(6):b||f}`}function i(a){let b=g(a);if(!b)return null;if("auto-codex"===b)return{mode:"router",modelString:`cx/${f}`,strictAccount:!1,label:"Auto Codex"};if(b.startsWith("router/")){let a;return{mode:"router",modelString:(a=g(b.slice(7))||f).includes("/")?a:`cx/${a}`,strictAccount:!1,label:"Router Pool"}}if(b.startsWith("original/"))return{mode:"original",modelString:h(b.slice(9)),strictAccount:!0,label:"Original Codex"};if("original"===b)return{mode:"original",modelString:`cx/${f}`,strictAccount:!0,label:"Original Codex"};let c=b.startsWith("account/")?"account/":b.startsWith("codex-account/")?"codex-account/":null;if(c){let a=b.slice(c.length),d=a.indexOf("/"),e=-1===d?a:a.slice(0,d),g=-1===d?f:a.slice(d+1);return e?{mode:"account",accountRef:e,modelString:h(g),strictAccount:!0,label:"Pinned Codex Account"}:null}return null}function j(a){return a?.displayName||a?.name||a?.email||a?.id||"Codex account"}function k(a){let b=String(j(a)).toLowerCase().replace(/@/g,"-").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"account";return`${b}-${String(a?.id||"").slice(0,8)}`}function l(a){return String(a||"").trim().toLowerCase()}function m(a){let b=a?.providerSpecificData||{};return"GPTJson"===b.importedFrom||String(b.tokenSource||"").startsWith("ChatGPT_team")}async function n(a=5e3){let b=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),c=b.slice(0,a).map(a=>({id:a.id,slug:k(a),label:j(a),email:a.email||null,imported:m(a),priority:a.priority||null})),e=o(b);return{accounts:c,original:e?{id:e.id,slug:k(e),label:j(e),email:e.email||null,imported:m(e),priority:e.priority||null}:null}}function o(a){return Array.isArray(a)&&0!==a.length?a.find(a=>!m(a))||a[0]:null}async function p(a){let b=l(a);if(!b)return null;let c=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),e=c.find(a=>l(a.id)===b||k(a)===b||l(a.email)===b||l(a.name)===b||l(a.displayName)===b);if(e)return e;let f=c.filter(a=>l(a.id).startsWith(b)||k(a).startsWith(b));return 1===f.length?f[0]:null}async function q(a){if(!a||"original"!==a.mode&&"account"!==a.mode)return null;if("account"===a.mode)return p(a.accountRef);let b=await (0,d.mt)(),c=b.codexGatewayOriginalConnectionId||b.codexOriginalConnectionId||"";if(c){let a=await p(c);if(a)return a}return o(await (0,d.getProviderConnections)({provider:"codex",isActive:!0}))}function r(a=[]){if(!a.some(a=>"codex"===a.provider&&!1!==a.isActive))return[];let b=[{id:"auto-codex",object:"model",owned_by:"zevai-codex-gateway"},...(e.vq.cx||[]).filter(a=>!a.type||"llm"===a.type).map(a=>a.id).flatMap(a=>[{id:`router/${a}`,object:"model",owned_by:"zevai-codex-gateway"},{id:`original/${a}`,object:"model",owned_by:"zevai-codex-gateway"}])];for(let c of a.filter(a=>"codex"===a.provider&&!1!==a.isActive))b.push({id:`account/${k(c)}`,object:"model",owned_by:"zevai-codex-account"});return b}},18910:(a,b,c)=>{c.d(b,{Pr:()=>i,UP:()=>g,Vu:()=>h});var d=c(12557),e=c(43659);let f=new Map;function g(a){a?f.delete(a):f.clear()}function h(a,b){if(a.includes("/"))return null;let c=(Array.isArray(b)?b:b?.combos||[]).find(b=>b.name===a);return c&&c.models&&c.models.length>0?c.models:null}async function i({body:a,models:b,handleSingleModel:c,log:g,comboName:h,comboStrategy:j,comboStickyLimit:k=1}){let l=function(a,b,c,d=1){let e;if(!a||a.length<=1||"round-robin"!==c)return a;let g=b||"__default__",h=Number.isFinite(e=Number.parseInt(d,10))&&e>0?e:1,i=f.get(g),j="number"==typeof i?{index:i,consecutiveUseCount:0}:i||{index:0,consecutiveUseCount:0},k=j.index%a.length,l=function(a,b){let c=[...a];for(let a=0;a<b;a++){let a=c.shift();c.push(a)}return c}(a,k),m=j.consecutiveUseCount+1;return m>=h?f.set(g,{index:(k+1)%a.length,consecutiveUseCount:0}):f.set(g,{index:k,consecutiveUseCount:m}),l}(b,h,j,k),m=null,n=null,o=null;for(let b=0;b<l.length;b++){let e=l[b];g.info("COMBO",`Trying model ${b+1}/${l.length}: ${e}`);try{let b=await c(a,e);if(b.ok)return g.info("COMBO",`Model ${e} succeeded`),b;let f=b.statusText||"",h=null;try{let a=await b.clone().json();f=a?.error?.message||a?.error||a?.message||f,h=a?.retryAfter||null}catch{}if(h&&(!n||new Date(h)<new Date(n))&&(n=h),"string"!=typeof f)try{f=JSON.stringify(f)}catch{f=String(f)}let{shouldFallback:i}=(0,d.hk)(b.status,f);if(!i)return g.warn("COMBO",`Model ${e} failed (no fallback)`,{status:b.status}),b;m=f||String(b.status),o=b.status,g.warn("COMBO",`Model ${e} failed, trying next`,{status:b.status})}catch(a){m=a.message||String(a),o=500,g.warn("COMBO",`Model ${e} threw error, trying next`,{error:m})}}let p=m&&m.toLowerCase().includes("no credentials")?503:o||503,q=m||"All combo models unavailable";if(n){let a=(0,d.Qo)(n);return g.warn("COMBO",`All models failed | ${q} (${a})`),(0,e.wO)(p,q,n,a)}return g.warn("COMBO",`All models failed | ${q}`),new Response(JSON.stringify({error:{message:q}}),{status:p,headers:{"Content-Type":"application/json"}})}},35893:(a,b,c)=>{c.d(b,{S:()=>d});function d({connectionId:a,connectionName:b,provider:c,model:e,markUnavailable:f,logger:g}){let h=!1;return async(d={})=>{if(h)return{duplicate:!0};h=!0;let i=Number.isInteger(d.status)?d.status:502,j=[a,i,d.errorText||d.message||"Provider stream failed",c,e,d.resetsAtMs||null];d.failureMetadata&&"object"==typeof d.failureMetadata&&j.push(d.failureMetadata);let k=await f(...j);return k?.shouldFallback&&g?.warn?.("AUTH",`Account ${b||a||"unknown"} unavailable after stream failure (${i})`),k}}},38775:(a,b,c)=>{c.d(b,{d_:()=>i,mA:()=>h});var d=c(89718),e=c(40669),f=c(3359);let g={xmtp:"xiaomi-tokenplan","xiaomi-tokenplan":"xiaomi-tokenplan"};async function h(a){let b,c=(0,f.s9)(a);if(c)return{...await h(c.modelString),gateway:{mode:c.mode,accountRef:c.accountRef||null,strictAccount:!!c.strictAccount,requestedModel:a,modelString:c.modelString}};let i=(b=(0,e.Xh)(a),b?.providerAlias&&g[b.providerAlias]?{...b,provider:g[b.providerAlias]}:b);if(!i.isAlias){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===i.providerAlias);if(a)return{provider:a.id,model:i.model};let b=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===i.providerAlias);if(b)return{provider:b.id,model:i.model};let c=(await (0,d.Fh)({type:"custom-embedding"})).find(a=>a.prefix===i.providerAlias);return c?{provider:c.id,model:i.model}:{provider:i.provider,model:i.model}}return await (0,d.Dj)(i.model)?{provider:null,model:i.model}:(0,e.js)(a,d.getModelAliases)}async function i(a){if(a.includes("/"))return null;let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b.models:null}},79489:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>v});var e=c(48895),f=c(80238),g=c(71750),h=c(89718),i=c(38775),j=c(92500),k=c(43659),l=c(18910),m=c(27349),n=c(41004),o=c(14170),p=c(7803),q=c(67828),r=c(38160),s=c(3359),t=c(35893),u=a([e,j]);async function v(a,b=null){let d;try{d=await a.json()}catch{return p.warn("CHAT","Invalid JSON body"),(0,k.yj)(n.gx.BAD_REQUEST,"Invalid JSON body")}b||(b={endpoint:new URL(a.url).pathname,body:d,headers:Object.fromEntries(a.headers.entries())}),(0,g.n)(b.headers);let e=new URL(a.url),j=d.model,o=d.messages?.length||d.input?.length||0,q=d.tools?.length||0,r=d.reasoning_effort||d.reasoning?.effort||null;p.request("POST",`${e.pathname} | ${j} | ${o} msgs${q?` | ${q} tools`:""}${r?` | effort=${r}`:""}`);let s=a.headers.get("Authorization"),t=(0,f.Tr)(a);if(s&&t){let a=p.maskKey(t);p.debug("AUTH",`API Key: ${a}`)}else p.debug("AUTH","No API key provided (local mode)");let u=await (0,h.mt)();if(u.requireApiKey){if(!t)return p.warn("AUTH","Missing API key (requireApiKey=true)"),(0,k.yj)(n.gx.UNAUTHORIZED,"Missing API key");if(!await (0,f.kI)(t))return p.warn("AUTH","Invalid API key (requireApiKey=true)"),(0,k.yj)(n.gx.UNAUTHORIZED,"Invalid API key");if(t){let{checkApiKeyBudget:a}=await Promise.resolve().then(c.bind(c,70877)),b=await a(t);if(!b.allowed)return p.warn("BUDGET",`Blocked: ${b.reason}`),(0,k.yj)(b.error?n.gx.SERVICE_UNAVAILABLE:n.gx.PAYMENT_REQUIRED,b.reason||"Budget exceeded")}}if(!j)return p.warn("CHAT","Missing model"),(0,k.yj)(n.gx.BAD_REQUEST,"Missing model");let y=null;if(t){let{admitApiKeyRequest:a}=await Promise.resolve().then(c.bind(c,70877));if(!(y=await a(t,j)).allowed){let a=y.retryAfter?{"Retry-After":String(y.retryAfter)}:void 0;return new Response(JSON.stringify({error:{message:y.reason}}),{status:y.status||429,headers:{"Content-Type":"application/json",...a}})}}let z=a=>(function(a,b){if(!b)return a;if(!a?.body||!a.headers.get("content-type")?.includes("text/event-stream"))return b(),a;let c=a.body.getReader(),d=new ReadableStream({async pull(a){try{let{done:d,value:e}=await c.read();d?(b(),a.close()):a.enqueue(e)}catch(c){b(),a.error(c)}},async cancel(a){b(),await c.cancel(a)}});return new Response(d,{status:a.status,statusText:a.statusText,headers:a.headers})})(a,y?.release);try{let{responseCache:e,isCacheableRequest:f}=await c.e(5236).then(c.bind(c,45236)),g=!0===u.responseCacheEnabled?f(d,a.headers):{cacheable:!1,reason:"disabled"},h=null;if(g.cacheable){let a=(h=e.buildKey(d,t||"local"))?e.get(h):null;if(a)return p.info("CACHE",`HIT ${j} | age=${Math.round((Date.now()-a.storedAt)/1e3)}s | hits=${a.hits}`),z(new Response(JSON.stringify(a.body),{status:a.status,headers:{"Content-Type":"application/json","X-ZevAI-Cache":"HIT","X-ZevAI-Cache-Age":String(Math.round((Date.now()-a.storedAt)/1e3))}}));p.debug("CACHE",`MISS ${j} (${g.reason||"new"})`)}let k=a?.headers?.get("user-agent")||"",n=(0,m.c)(d,j,k,!!u.ccFilterNaming);if(n)return z(n.response||n);let o=await (0,i.d_)(j);if(o){let c=u.comboStrategies||{},e=c[j]?.fallbackStrategy||u.comboStrategy||"fallback",f=u.comboStickyRoundRobinLimit;p.info("CHAT",`Combo "${j}" with ${o.length} models (strategy: ${e}, sticky: ${f})`);let g=await (0,l.Pr)({body:d,models:o,handleSingleModel:(c,d)=>x(c,d,b,a,t),log:p,comboName:j,comboStrategy:e,comboStickyLimit:f});return z(await w(g,h,j))}let q=await x(d,j,b,a,t);return z(await w(q,h,j))}catch(a){throw y?.release?.(),a}}async function w(a,b,d){if(!b||!a||!a.ok||!(a.headers.get("content-type")||"").includes("application/json"))return a;try{let{responseCache:e,isCacheableResponse:f}=await c.e(5236).then(c.bind(c,45236)),g=await a.clone().json();if(!f(g,a.status))return a;e.set(b,{body:g,status:a.status,model:d}),p.debug("CACHE",`STORE ${d} (key ${b.slice(0,8)}…)`)}catch{}return a}async function x(a,b,d=null,e=null,g=null){let m=await (0,i.mA)(b);if(!m.provider){let c=await (0,i.d_)(b);if(c){let f=await (0,h.mt)(),i=f.comboStrategies||{},j=i[b]?.fallbackStrategy||f.comboStrategy||"fallback",k=f.comboStickyRoundRobinLimit;return p.info("CHAT",`Combo "${b}" with ${c.length} models (strategy: ${j}, sticky: ${k})`),(0,l.Pr)({body:a,models:c,handleSingleModel:(a,b)=>x(a,b,d,e,g),log:p,comboName:b,comboStrategy:j,comboStickyLimit:k})}return p.warn("CHAT","Invalid model format",{model:b}),(0,k.yj)(n.gx.BAD_REQUEST,"Invalid model format")}let{provider:u,model:v}=m,w=m.gateway||null;b!==`${u}/${v}`?p.info("ROUTING",`${b} → ${u}/${v}`):p.info("ROUTING",`Provider: ${u}, Model: ${v}`);let y=e?.headers?.get("user-agent")||"",z=new Set,A=null,B=null,C={};if(w&&"codex"===u&&("original"===w.mode||"account"===w.mode)){let a=await (0,s.c9)(w);if(!a){let a="account"===w.mode?`account "${w.accountRef}"`:"original Codex account";return p.warn("AUTH",`Codex gateway could not resolve ${a}`),(0,k.yj)(n.gx.NOT_FOUND,`Codex gateway could not resolve ${a}`)}C.preferredConnectionId=a.id,C.strictPreferred=!!w.strictAccount,p.info("ROUTING",`Codex gateway ${w.mode} pinned to ${(0,s.K0)(a)}`)}for(;;){let b,i=await (0,f.c1)(u,z,v,C);if(i?.modelUnavailable){let a=`${u}/${v}`;return p.warn("AUTH",`No known eligible account supports model: ${a}`),(0,k.yj)(n.gx.NOT_FOUND,`Model ${a} is not available on any known eligible account`)}if(!i||i.allRateLimited){if(i?.allRateLimited){let a=A||i.lastError||"Unavailable",b=B||Number(i.lastErrorCode)||n.gx.SERVICE_UNAVAILABLE;return p.warn("CHAT",`[${u}/${v}] ${a} (${i.retryAfterHuman})`),(0,k.wO)(b,`[${u}/${v}] ${a}`,i.retryAfter,i.retryAfterHuman)}if(0===z.size)return p.warn("AUTH",`No active credentials for provider: ${u}`),(0,k.yj)(n.gx.NOT_FOUND,`No active credentials for provider: ${u}`);return p.warn("CHAT","No more accounts available",{provider:u}),(0,k.yj)(B||n.gx.SERVICE_UNAVAILABLE,A||"All accounts unavailable")}p.info("AUTH",`\x1b[32mUsing ${u} account: ${i.connectionName}\x1b[0m`);try{b=await (0,q.eU)(u,i)}catch(e){if("kiro"!==u)throw e;let a=e?.permanent===!0,b=Number.isInteger(e?.status)?e.status:a?n.gx.UNAUTHORIZED:n.gx.BAD_GATEWAY,c=a?"Kiro rejected the refresh credential.":"Kiro credential refresh failed temporarily.",{shouldFallback:d}=await (0,f.vk)(i.connectionId,b,c,u,v,null,{failureClass:a?"reauth_required":"upstream_transient",providerErrorCode:e?.code||null,upstreamRequestId:e?.requestId||null,authLifecycle:{initialStatus:null,refreshAttempted:!0,refreshOutcome:a?"rejected":"transient_failed",retryStatus:null}});if(d){z.add(i.connectionId),A=c,B=b,p.warn("AUTH",`Kiro refresh failed for ${i.connectionName}; trying fallback`);continue}return(0,k.yj)(b,c)}if("antigravity"===u||"gemini-cli"===u){let a=b.projectId||i.projectId||i.providerSpecificData?.projectId||null;if(a&&(b.projectId=a),!b.projectId){let d=await (0,r.eG)(i.connectionId,b.accessToken,{preferredProjectId:a});if(!d&&"antigravity"===u)try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,71998));for(let b of await a({provider:"antigravity",isActive:!0})||[]){if(b.id===i.connectionId)continue;let a=b.projectId||b.providerSpecificData?.projectId;if(a){d=a;break}}}catch{}d&&(b.projectId=d,(0,q.vN)(i.connectionId,{projectId:d}).catch(()=>{}))}}let l=await (0,h.mt)(),m=(l.providerThinking||{})[u]||null,s=null;if(l.pxpipeEnabled)try{let{getTransform:a}=await c.e(4253).then(c.bind(c,24253));s=await a()}catch{s=null}let w=await (0,j.wk)({body:{...a,model:`${u}/${v}`},modelInfo:{provider:u,model:v},credentials:b,log:p,clientRawRequest:d,connectionId:i.connectionId,userAgent:y,apiKey:g,ccFilterNaming:!!l.ccFilterNaming,rtkEnabled:!!l.rtkEnabled,headroomEnabled:!!l.headroomEnabled,headroomUrl:l.headroomUrl||"http://localhost:8787",headroomCompressUserMessages:!!l.headroomCompressUserMessages,cavemanEnabled:!!l.cavemanEnabled,cavemanLevel:l.cavemanLevel||"full",ponytailEnabled:!!l.ponytailEnabled,ponytailLevel:l.ponytailLevel||"full",pxpipeEnabled:!!l.pxpipeEnabled,pxpipeMinChars:l.pxpipeMinChars,pxpipeTimeoutMs:l.pxpipeTimeoutMs,pxpipeTransform:s,onPxpipeEvent:async a=>{try{let{appendPxpipeEvent:b}=await c.e(2007).then(c.bind(c,74388));b(a)}catch{}},contextInjectionEnabled:!!l.contextInjectionEnabled,providerThinking:m,signal:e?.signal,sourceFormatOverride:e?.url?(0,o.t)(new URL(e.url).pathname,a):null,onCredentialsRefreshed:async a=>(0,q.vN)(i.connectionId,{...a,existingProviderSpecificData:i.providerSpecificData,testStatus:"active"}),onRequestSuccess:async()=>{await (0,f.Pt)(i.connectionId,i,v)},onStreamFailure:(0,t.S)({connectionId:i.connectionId,connectionName:i.connectionName,provider:u,model:v,markUnavailable:f.vk,logger:p})});if(w.success)return w.response;let x=!0===w.lifecycleHandled?!0===w.shouldFallback:null;if(!0!==w.lifecycleHandled&&({shouldFallback:x}=await (0,f.vk)(i.connectionId,w.status,w.error,u,v,w.resetsAtMs,w.failureMetadata)),x){p.warn("AUTH",`Account ${i.connectionName} unavailable (${w.status}), trying fallback`),z.add(i.connectionId),A=w.error,B=w.status;continue}return w.response}}[e,j]=u.then?(await u)():u,d()}catch(a){d(a)}})}};
|
|
1
|
+
"use strict";exports.id=9489,exports.ids=[9489],exports.modules={3359:(a,b,c)=>{c.d(b,{K0:()=>j,Oh:()=>n,c9:()=>q,lL:()=>r,s9:()=>i});var d=c(89718),e=c(44404);let f="gpt-5.6";function g(a){return String(a||"").trim().replace(/^\/+|\/+$/g,"")}function h(a){let b;return`cx/${(b=g(a)).startsWith("cx/")?b.slice(3):b.startsWith("codex/")?b.slice(6):b||f}`}function i(a){let b=g(a);if(!b)return null;if("auto-codex"===b)return{mode:"router",modelString:`cx/${f}`,strictAccount:!1,label:"Auto Codex"};if(b.startsWith("router/")){let a;return{mode:"router",modelString:(a=g(b.slice(7))||f).includes("/")?a:`cx/${a}`,strictAccount:!1,label:"Router Pool"}}if(b.startsWith("original/"))return{mode:"original",modelString:h(b.slice(9)),strictAccount:!0,label:"Original Codex"};if("original"===b)return{mode:"original",modelString:`cx/${f}`,strictAccount:!0,label:"Original Codex"};let c=b.startsWith("account/")?"account/":b.startsWith("codex-account/")?"codex-account/":null;if(c){let a=b.slice(c.length),d=a.indexOf("/"),e=-1===d?a:a.slice(0,d),g=-1===d?f:a.slice(d+1);return e?{mode:"account",accountRef:e,modelString:h(g),strictAccount:!0,label:"Pinned Codex Account"}:null}return null}function j(a){return a?.displayName||a?.name||a?.email||a?.id||"Codex account"}function k(a){let b=String(j(a)).toLowerCase().replace(/@/g,"-").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"account";return`${b}-${String(a?.id||"").slice(0,8)}`}function l(a){return String(a||"").trim().toLowerCase()}function m(a){let b=a?.providerSpecificData||{};return"GPTJson"===b.importedFrom||String(b.tokenSource||"").startsWith("ChatGPT_team")}async function n(a=5e3){let b=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),c=b.slice(0,a).map(a=>({id:a.id,slug:k(a),label:j(a),email:a.email||null,imported:m(a),priority:a.priority||null})),e=o(b);return{accounts:c,original:e?{id:e.id,slug:k(e),label:j(e),email:e.email||null,imported:m(e),priority:e.priority||null}:null}}function o(a){return Array.isArray(a)&&0!==a.length?a.find(a=>!m(a))||a[0]:null}async function p(a){let b=l(a);if(!b)return null;let c=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),e=c.find(a=>l(a.id)===b||k(a)===b||l(a.email)===b||l(a.name)===b||l(a.displayName)===b);if(e)return e;let f=c.filter(a=>l(a.id).startsWith(b)||k(a).startsWith(b));return 1===f.length?f[0]:null}async function q(a){if(!a||"original"!==a.mode&&"account"!==a.mode)return null;if("account"===a.mode)return p(a.accountRef);let b=await (0,d.mt)(),c=b.codexGatewayOriginalConnectionId||b.codexOriginalConnectionId||"";if(c){let a=await p(c);if(a)return a}return o(await (0,d.getProviderConnections)({provider:"codex",isActive:!0}))}function r(a=[]){if(!a.some(a=>"codex"===a.provider&&!1!==a.isActive))return[];let b=[{id:"auto-codex",object:"model",owned_by:"zevai-codex-gateway"},...(e.vq.cx||[]).filter(a=>!a.type||"llm"===a.type).map(a=>a.id).flatMap(a=>[{id:`router/${a}`,object:"model",owned_by:"zevai-codex-gateway"},{id:`original/${a}`,object:"model",owned_by:"zevai-codex-gateway"}])];for(let c of a.filter(a=>"codex"===a.provider&&!1!==a.isActive))b.push({id:`account/${k(c)}`,object:"model",owned_by:"zevai-codex-account"});return b}},18910:(a,b,c)=>{c.d(b,{Pr:()=>i,UP:()=>g,Vu:()=>h});var d=c(12557),e=c(43659);let f=new Map;function g(a){a?f.delete(a):f.clear()}function h(a,b){if(a.includes("/"))return null;let c=(Array.isArray(b)?b:b?.combos||[]).find(b=>b.name===a);return c&&c.models&&c.models.length>0?c.models:null}async function i({body:a,models:b,handleSingleModel:c,log:g,comboName:h,comboStrategy:j,comboStickyLimit:k=1}){let l=function(a,b,c,d=1){let e;if(!a||a.length<=1||"round-robin"!==c)return a;let g=b||"__default__",h=Number.isFinite(e=Number.parseInt(d,10))&&e>0?e:1,i=f.get(g),j="number"==typeof i?{index:i,consecutiveUseCount:0}:i||{index:0,consecutiveUseCount:0},k=j.index%a.length,l=function(a,b){let c=[...a];for(let a=0;a<b;a++){let a=c.shift();c.push(a)}return c}(a,k),m=j.consecutiveUseCount+1;return m>=h?f.set(g,{index:(k+1)%a.length,consecutiveUseCount:0}):f.set(g,{index:k,consecutiveUseCount:m}),l}(b,h,j,k),m=null,n=null,o=null;for(let b=0;b<l.length;b++){let e=l[b];g.info("COMBO",`Trying model ${b+1}/${l.length}: ${e}`);try{let b=await c(a,e);if(b.ok)return g.info("COMBO",`Model ${e} succeeded`),b;let f=b.statusText||"",h=null;try{let a=await b.clone().json();f=a?.error?.message||a?.error||a?.message||f,h=a?.retryAfter||null}catch{}if(h&&(!n||new Date(h)<new Date(n))&&(n=h),"string"!=typeof f)try{f=JSON.stringify(f)}catch{f=String(f)}let{shouldFallback:i}=(0,d.hk)(b.status,f);if(!i)return g.warn("COMBO",`Model ${e} failed (no fallback)`,{status:b.status}),b;m=f||String(b.status),o=b.status,g.warn("COMBO",`Model ${e} failed, trying next`,{status:b.status})}catch(a){m=a.message||String(a),o=500,g.warn("COMBO",`Model ${e} threw error, trying next`,{error:m})}}let p=m&&m.toLowerCase().includes("no credentials")?503:o||503,q=m||"All combo models unavailable";if(n){let a=(0,d.Qo)(n);return g.warn("COMBO",`All models failed | ${q} (${a})`),(0,e.wO)(p,q,n,a)}return g.warn("COMBO",`All models failed | ${q}`),new Response(JSON.stringify({error:{message:q}}),{status:p,headers:{"Content-Type":"application/json"}})}},35893:(a,b,c)=>{c.d(b,{S:()=>d});function d({connectionId:a,connectionName:b,provider:c,model:e,markUnavailable:f,logger:g}){let h=!1;return async(d={})=>{if(h)return{duplicate:!0};h=!0;let i=Number.isInteger(d.status)?d.status:502,j=[a,i,d.errorText||d.message||"Provider stream failed",c,e,d.resetsAtMs||null];d.failureMetadata&&"object"==typeof d.failureMetadata&&j.push(d.failureMetadata);let k=await f(...j);return k?.shouldFallback&&g?.warn?.("AUTH",`Account ${b||a||"unknown"} unavailable after stream failure (${i})`),k}}},38775:(a,b,c)=>{c.d(b,{d_:()=>i,mA:()=>h});var d=c(89718),e=c(40669),f=c(3359);let g={xmtp:"xiaomi-tokenplan","xiaomi-tokenplan":"xiaomi-tokenplan"};async function h(a){let b,c=(0,f.s9)(a);if(c)return{...await h(c.modelString),gateway:{mode:c.mode,accountRef:c.accountRef||null,strictAccount:!!c.strictAccount,requestedModel:a,modelString:c.modelString}};let i=(b=(0,e.Xh)(a),b?.providerAlias&&g[b.providerAlias]?{...b,provider:g[b.providerAlias]}:b);if(!i.isAlias){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===i.providerAlias);if(a)return{provider:a.id,model:i.model};let b=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===i.providerAlias);if(b)return{provider:b.id,model:i.model};let c=(await (0,d.Fh)({type:"custom-embedding"})).find(a=>a.prefix===i.providerAlias);return c?{provider:c.id,model:i.model}:{provider:i.provider,model:i.model}}return await (0,d.Dj)(i.model)?{provider:null,model:i.model}:(0,e.js)(a,d.getModelAliases)}async function i(a){if(a.includes("/"))return null;let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b.models:null}},79489:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>v});var e=c(48895),f=c(80238),g=c(71750),h=c(89718),i=c(38775),j=c(92500),k=c(43659),l=c(18910),m=c(27349),n=c(41004),o=c(14170),p=c(7803),q=c(67828),r=c(38160),s=c(3359),t=c(35893),u=a([e,j]);async function v(a,b=null){let d;try{d=await a.json()}catch{return p.warn("CHAT","Invalid JSON body"),(0,k.yj)(n.gx.BAD_REQUEST,"Invalid JSON body")}b||(b={endpoint:new URL(a.url).pathname,body:d,headers:Object.fromEntries(a.headers.entries())}),(0,g.n)(b.headers);let e=new URL(a.url),j=d.model,o=d.messages?.length||d.input?.length||0,q=d.tools?.length||0,r=d.reasoning_effort||d.reasoning?.effort||null;p.request("POST",`${e.pathname} | ${j} | ${o} msgs${q?` | ${q} tools`:""}${r?` | effort=${r}`:""}`);let s=a.headers.get("Authorization"),t=(0,f.Tr)(a);if(s&&t){let a=p.maskKey(t);p.debug("AUTH",`API Key: ${a}`)}else p.debug("AUTH","No API key provided (local mode)");let u=await (0,h.mt)();if(u.requireApiKey){if(!t)return p.warn("AUTH","Missing API key (requireApiKey=true)"),(0,k.yj)(n.gx.UNAUTHORIZED,"Missing API key");if(!await (0,f.kI)(t))return p.warn("AUTH","Invalid API key (requireApiKey=true)"),(0,k.yj)(n.gx.UNAUTHORIZED,"Invalid API key")}if(t){let{checkApiKeyBudget:a}=await Promise.resolve().then(c.bind(c,70877)),b=await a(t);if(!b.allowed)return p.warn("BUDGET",`Blocked: ${b.reason}`),(0,k.yj)(b.error?n.gx.SERVICE_UNAVAILABLE:n.gx.PAYMENT_REQUIRED,b.reason||"Budget exceeded")}if(!j)return p.warn("CHAT","Missing model"),(0,k.yj)(n.gx.BAD_REQUEST,"Missing model");let y=null;if(t){let{admitApiKeyRequest:a}=await Promise.resolve().then(c.bind(c,70877));if(!(y=await a(t,j)).allowed){let a=y.retryAfter?{"Retry-After":String(y.retryAfter)}:void 0;return new Response(JSON.stringify({error:{message:y.reason}}),{status:y.status||429,headers:{"Content-Type":"application/json",...a}})}}let z=a=>(function(a,b){if(!b)return a;if(!a?.body||!a.headers.get("content-type")?.includes("text/event-stream"))return b(),a;let c=a.body.getReader(),d=new ReadableStream({async pull(a){try{let{done:d,value:e}=await c.read();d?(b(),a.close()):a.enqueue(e)}catch(c){b(),a.error(c)}},async cancel(a){b(),await c.cancel(a)}});return new Response(d,{status:a.status,statusText:a.statusText,headers:a.headers})})(a,y?.release);try{let{responseCache:e,isCacheableRequest:f}=await c.e(5236).then(c.bind(c,45236)),g=!0===u.responseCacheEnabled?f(d,a.headers):{cacheable:!1,reason:"disabled"},h=null;if(g.cacheable){let a=(h=e.buildKey(d,t||"local"))?e.get(h):null;if(a)return p.info("CACHE",`HIT ${j} | age=${Math.round((Date.now()-a.storedAt)/1e3)}s | hits=${a.hits}`),z(new Response(JSON.stringify(a.body),{status:a.status,headers:{"Content-Type":"application/json","X-ZevAI-Cache":"HIT","X-ZevAI-Cache-Age":String(Math.round((Date.now()-a.storedAt)/1e3))}}));p.debug("CACHE",`MISS ${j} (${g.reason||"new"})`)}let k=a?.headers?.get("user-agent")||"",n=(0,m.c)(d,j,k,!!u.ccFilterNaming);if(n)return z(n.response||n);let o=await (0,i.d_)(j);if(o){let c=u.comboStrategies||{},e=c[j]?.fallbackStrategy||u.comboStrategy||"fallback",f=u.comboStickyRoundRobinLimit;p.info("CHAT",`Combo "${j}" with ${o.length} models (strategy: ${e}, sticky: ${f})`);let g=await (0,l.Pr)({body:d,models:o,handleSingleModel:(c,d)=>x(c,d,b,a,t),log:p,comboName:j,comboStrategy:e,comboStickyLimit:f});return z(await w(g,h,j))}let q=await x(d,j,b,a,t);return z(await w(q,h,j))}catch(a){throw y?.release?.(),a}}async function w(a,b,d){if(!b||!a||!a.ok||!(a.headers.get("content-type")||"").includes("application/json"))return a;try{let{responseCache:e,isCacheableResponse:f}=await c.e(5236).then(c.bind(c,45236)),g=await a.clone().json();if(!f(g,a.status))return a;e.set(b,{body:g,status:a.status,model:d}),p.debug("CACHE",`STORE ${d} (key ${b.slice(0,8)}…)`)}catch{}return a}async function x(a,b,d=null,e=null,g=null){let m=await (0,i.mA)(b);if(!m.provider){let c=await (0,i.d_)(b);if(c){let f=await (0,h.mt)(),i=f.comboStrategies||{},j=i[b]?.fallbackStrategy||f.comboStrategy||"fallback",k=f.comboStickyRoundRobinLimit;return p.info("CHAT",`Combo "${b}" with ${c.length} models (strategy: ${j}, sticky: ${k})`),(0,l.Pr)({body:a,models:c,handleSingleModel:(a,b)=>x(a,b,d,e,g),log:p,comboName:b,comboStrategy:j,comboStickyLimit:k})}return p.warn("CHAT","Invalid model format",{model:b}),(0,k.yj)(n.gx.BAD_REQUEST,"Invalid model format")}let{provider:u,model:v}=m,w=m.gateway||null;b!==`${u}/${v}`?p.info("ROUTING",`${b} → ${u}/${v}`):p.info("ROUTING",`Provider: ${u}, Model: ${v}`);let y=e?.headers?.get("user-agent")||"",z=new Set,A=null,B=null,C={};if(w&&"codex"===u&&("original"===w.mode||"account"===w.mode)){let a=await (0,s.c9)(w);if(!a){let a="account"===w.mode?`account "${w.accountRef}"`:"original Codex account";return p.warn("AUTH",`Codex gateway could not resolve ${a}`),(0,k.yj)(n.gx.NOT_FOUND,`Codex gateway could not resolve ${a}`)}C.preferredConnectionId=a.id,C.strictPreferred=!!w.strictAccount,p.info("ROUTING",`Codex gateway ${w.mode} pinned to ${(0,s.K0)(a)}`)}for(;;){let b,i=await (0,f.c1)(u,z,v,C);if(i?.modelUnavailable){let a=`${u}/${v}`;return p.warn("AUTH",`No known eligible account supports model: ${a}`),(0,k.yj)(n.gx.NOT_FOUND,`Model ${a} is not available on any known eligible account`)}if(!i||i.allRateLimited){if(i?.allRateLimited){let a=A||i.lastError||"Unavailable",b=B||Number(i.lastErrorCode)||n.gx.SERVICE_UNAVAILABLE;return p.warn("CHAT",`[${u}/${v}] ${a} (${i.retryAfterHuman})`),(0,k.wO)(b,`[${u}/${v}] ${a}`,i.retryAfter,i.retryAfterHuman)}if(0===z.size)return p.warn("AUTH",`No active credentials for provider: ${u}`),(0,k.yj)(n.gx.NOT_FOUND,`No active credentials for provider: ${u}`);return p.warn("CHAT","No more accounts available",{provider:u}),(0,k.yj)(B||n.gx.SERVICE_UNAVAILABLE,A||"All accounts unavailable")}p.info("AUTH",`\x1b[32mUsing ${u} account: ${i.connectionName}\x1b[0m`);try{b=await (0,q.eU)(u,i)}catch(e){if("kiro"!==u)throw e;let a=e?.permanent===!0,b=Number.isInteger(e?.status)?e.status:a?n.gx.UNAUTHORIZED:n.gx.BAD_GATEWAY,c=a?"Kiro rejected the refresh credential.":"Kiro credential refresh failed temporarily.",{shouldFallback:d}=await (0,f.vk)(i.connectionId,b,c,u,v,null,{failureClass:a?"reauth_required":"upstream_transient",providerErrorCode:e?.code||null,upstreamRequestId:e?.requestId||null,authLifecycle:{initialStatus:null,refreshAttempted:!0,refreshOutcome:a?"rejected":"transient_failed",retryStatus:null}});if(d){z.add(i.connectionId),A=c,B=b,p.warn("AUTH",`Kiro refresh failed for ${i.connectionName}; trying fallback`);continue}return(0,k.yj)(b,c)}if("antigravity"===u||"gemini-cli"===u){let a=b.projectId||i.projectId||i.providerSpecificData?.projectId||null;if(a&&(b.projectId=a),!b.projectId){let d=await (0,r.eG)(i.connectionId,b.accessToken,{preferredProjectId:a});if(!d&&"antigravity"===u)try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,71998));for(let b of await a({provider:"antigravity",isActive:!0})||[]){if(b.id===i.connectionId)continue;let a=b.projectId||b.providerSpecificData?.projectId;if(a){d=a;break}}}catch{}d&&(b.projectId=d,(0,q.vN)(i.connectionId,{projectId:d}).catch(()=>{}))}}let l=await (0,h.mt)(),m=(l.providerThinking||{})[u]||null,s=null;if(l.pxpipeEnabled)try{let{getTransform:a}=await c.e(4253).then(c.bind(c,24253));s=await a()}catch{s=null}let w=await (0,j.wk)({body:{...a,model:`${u}/${v}`},modelInfo:{provider:u,model:v},credentials:b,log:p,clientRawRequest:d,connectionId:i.connectionId,userAgent:y,apiKey:g,ccFilterNaming:!!l.ccFilterNaming,rtkEnabled:!!l.rtkEnabled,headroomEnabled:!!l.headroomEnabled,headroomUrl:l.headroomUrl||"http://localhost:8787",headroomCompressUserMessages:!!l.headroomCompressUserMessages,cavemanEnabled:!!l.cavemanEnabled,cavemanLevel:l.cavemanLevel||"full",ponytailEnabled:!!l.ponytailEnabled,ponytailLevel:l.ponytailLevel||"full",pxpipeEnabled:!!l.pxpipeEnabled,pxpipeMinChars:l.pxpipeMinChars,pxpipeTimeoutMs:l.pxpipeTimeoutMs,pxpipeTransform:s,onPxpipeEvent:async a=>{try{let{appendPxpipeEvent:b}=await c.e(2007).then(c.bind(c,74388));b(a)}catch{}},contextInjectionEnabled:!!l.contextInjectionEnabled,providerThinking:m,signal:e?.signal,sourceFormatOverride:e?.url?(0,o.t)(new URL(e.url).pathname,a):null,onCredentialsRefreshed:async a=>(0,q.vN)(i.connectionId,{...a,existingProviderSpecificData:i.providerSpecificData,testStatus:"active"}),onRequestSuccess:async()=>{await (0,f.Pt)(i.connectionId,i,v)},onStreamFailure:(0,t.S)({connectionId:i.connectionId,connectionName:i.connectionName,provider:u,model:v,markUnavailable:f.vk,logger:p})});if(w.success)return w.response;let x=!0===w.lifecycleHandled?!0===w.shouldFallback:null;if(!0!==w.lifecycleHandled&&({shouldFallback:x}=await (0,f.vk)(i.connectionId,w.status,w.error,u,v,w.resetsAtMs,w.failureMetadata)),x){p.warn("AUTH",`Account ${i.connectionName} unavailable (${w.status}), trying fallback`),z.add(i.connectionId),A=w.error,B=w.status;continue}return w.response}}[e,j]=u.then?(await u)():u,d()}catch(a){d(a)}})}};
|