switchboard-router 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/static/chunks/{1321-ba836ca888fbad7c.js → 1321-4326712adc6f965a.js} +1 -1
- package/app/{.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-995a96a01c24b126.js → .next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-772f246688672d59.js} +12 -12
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-d8610d9b77a2cae4.js +10 -0
- package/app/.next/static/css/d89fdbc0e71b454e.css +1 -0
- package/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +4 -4
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/prerender-manifest.json +3 -3
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/api/agent-library/catalog/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/doctor/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/export/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/mcp/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/skills/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/sync/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/agent-library/updates/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +10 -10
- package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-full-catalog/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-picker-labels/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +5 -5
- package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +6 -6
- package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +3 -3
- package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
- package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/cli-tools/picker-labels/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
- package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
- package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/metrics/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/routing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/usage/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/mgmt/v1/version/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
- package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
- package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/cache/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/prepare/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/remove-unavailable/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/cancel/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/routing/feedback/route.js +1 -1
- package/app/.next-cli-build/server/app/api/routing/feedback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/routing/insights/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/routing/learn/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/routing/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/routing/versions/promote/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/routing/versions/rollback/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
- package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/skills/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/token-saver/vault-stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/landing.html +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/login.html +1 -1
- package/app/.next-cli-build/server/app/login.rsc +4 -4
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +4 -4
- package/app/.next-cli-build/server/chunks/1350.js +1 -1
- package/app/.next-cli-build/server/chunks/194.js +1 -1
- package/app/.next-cli-build/server/chunks/369.js +2 -2
- package/app/.next-cli-build/server/chunks/3735.js +2 -2
- package/app/.next-cli-build/server/chunks/5616.js +1 -1
- package/app/.next-cli-build/server/chunks/5717.js +2 -2
- package/app/.next-cli-build/server/chunks/5781.js +1 -1
- package/app/.next-cli-build/server/chunks/6052.js +1 -1
- package/app/.next-cli-build/server/chunks/6274.js +1 -1
- package/app/.next-cli-build/server/chunks/6328.js +1 -1
- package/app/.next-cli-build/server/chunks/646.js +17 -0
- package/app/.next-cli-build/server/chunks/6985.js +1 -1
- package/app/.next-cli-build/server/chunks/7454.js +1 -1
- package/app/.next-cli-build/server/chunks/869.js +1 -1
- package/app/.next-cli-build/server/chunks/8775.js +1 -1
- package/app/.next-cli-build/server/chunks/8998.js +8 -8
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/middleware.js +2 -2
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
- package/app/.next-cli-build/static/chunks/{1321-ba836ca888fbad7c.js → 1321-4326712adc6f965a.js} +1 -1
- package/app/{.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-995a96a01c24b126.js → .next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-772f246688672d59.js} +12 -12
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-d8610d9b77a2cae4.js +10 -0
- package/app/.next-cli-build/static/css/d89fdbc0e71b454e.css +1 -0
- package/app/open-sse/identity/tls/bin/darwin/arm64/switchboard-claude-tls +0 -0
- package/app/open-sse/identity/tls/bin/darwin/x64/switchboard-claude-tls +0 -0
- package/app/open-sse/identity/tls/bin/linux/arm64/switchboard-claude-tls +0 -0
- package/app/open-sse/identity/tls/bin/linux/x64/switchboard-claude-tls +0 -0
- package/app/open-sse/identity/tls/bin/win32/arm64/switchboard-claude-tls.exe +0 -0
- package/app/open-sse/identity/tls/bin/win32/x64/switchboard-claude-tls.exe +0 -0
- package/app/package.json +5 -2
- package/package.json +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-b7ff5b3522a3bf1f.js +0 -10
- package/app/.next/static/css/23b999cda6943547.css +0 -1
- package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-b7ff5b3522a3bf1f.js +0 -10
- package/app/.next-cli-build/static/css/23b999cda6943547.css +0 -1
- /package/app/.next/static/{87MOk9ZQAnrFin72qerKV → 0ignrkqK9akTSbGxH0G97}/_buildManifest.js +0 -0
- /package/app/.next/static/{87MOk9ZQAnrFin72qerKV → 0ignrkqK9akTSbGxH0G97}/_ssgManifest.js +0 -0
- /package/app/.next-cli-build/static/{87MOk9ZQAnrFin72qerKV → 0ignrkqK9akTSbGxH0G97}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{87MOk9ZQAnrFin72qerKV → 0ignrkqK9akTSbGxH0G97}/_ssgManifest.js +0 -0
|
@@ -61,9 +61,9 @@ ${b}`;return}if(Array.isArray(a.system)){if(e(a.system.map(a=>a?.text||"").join(
|
|
|
61
61
|
|
|
62
62
|
${b}`:b;return}let c=Array.isArray(a.messages)?a.messages:Array.isArray(a.input)?a.input:null;if(!c)return;let d=c.findIndex(a=>a&&("system"===a.role||"developer"===a.role));if(d>=0){var f,g,h;if(e("string"==typeof(f=c[d]).content?f.content:Array.isArray(f.content)?f.content.map(a=>a.text||"").join(" "):"",b))return;g=c[d],h=b,"string"==typeof g.content?g.content=`${g.content}
|
|
63
63
|
|
|
64
|
-
${h}`:Array.isArray(g.content)?g.content.push({type:"input_text",text:h}):g.content=h}else c.unshift({role:"system",content:b})}(a,c)}}},27226:(a,b,c)=>{c.d(b,{Jz:()=>f,Qf:()=>l,lP:()=>k});var d=c(35570);let e={claude:["claude","anthropic"],"gemini-cli":["gemini-cli"],antigravity:["antigravity"],codex:["codex"]};function f(a={},b={}){let c=a["user-agent"]||"";return"antigravity"===b.userAgent?"antigravity":/^GitHubCopilotChat\/\d+\.\d+\.\d+/i.test(c)&&a["editor-version"]&&a["editor-plugin-version"]?"github-copilot":/claude-(?:cli|code)\/\d+\.\d+\.\d+/i.test(c)?"claude":/^GeminiCLI\/\d+\.\d+\.\d+/i.test(c)?"gemini-cli":/^(?:codex_cli_rs|codex-cli)\/\d+\.\d+\.\d+/i.test(c)?"codex":/^Cline\/\d+\.\d+\.\d+/i.test(c)&&"extension"===a["x-client-type"]?"cline":/^QwenCode\/\d+\.\d+\.\d+/i.test(c)?"qwen":c.includes("deepseek-tui")?"deepseek-tui":null}let g={claude:"claude-cli",codex:"codex-cli","gemini-cli":"gemini-cli",antigravity:"antigravity",cline:"cline",qwen:"qwen","github-copilot":"copilot"},h=/^claude-(?:cli|code)\/(\d+\.\d+\.\d+)(?:\s|\(|$)/i,i=/_session_([a-f0-9-]+)$/;function j(a,b){let c=a?.[b]??a?.[b.toLowerCase()];return"string"==typeof c&&c.trim()?c:null}function k(a,b={},c={}){let e=g[a];if(!e||f(b,c)!==a)return!1;if("claude"!==a)return(0,d.I2)(e,b);if(!function(a={},b={}){if(!a||"object"!=typeof a)return!1;let c=j(a,"user-agent"),e=c?.match(h)?.[1],f=(0,d.zi)("claude-cli")?.version;return!!(e&&e===f&&j(a,"x-app")?.toLowerCase()==="cli"&&j(a,"anthropic-beta")&&j(a,"x-stainless-package-version")&&j(a,"x-stainless-runtime-version")&&j(a,"x-stainless-os")&&j(a,"x-stainless-arch")&&function(a){let b=a?.metadata?.user_id;if("string"!=typeof b||!b)return null;let c=b.match(i)?.[1];if(c)return c;if("{"!==b[0])return null;try{let a=JSON.parse(b)?.session_id;if("string"!=typeof a)return null;let c=a.trim();return c&&c.length<=256?c:null}catch{return null}}(b))}(b,c))return!1;let l=b["user-agent"]||b["User-Agent"];return(0,d.I2)(e,{...b,"user-agent":l.replace(/^claude-code\//i,"claude-cli/")})}function l(a,b){if(!a)return!1;let c=e[a];if(!c)return!1;let d=b.startsWith("anthropic-compatible")?"anthropic":b;return c.includes(d)}},28190:(a,b,c)=>{c.d(b,{F:()=>g});let d=[{triggers:["mcp__exa__web_search_exa","mcp__exa__web_fetch_exa"],strip:["WebSearch","WebFetch","mcp__workspace__web_fetch"]},{triggers:["mcp__tavily__tavily_search","mcp__tavily__tavily_extract"],strip:["WebSearch","WebFetch","mcp__workspace__web_fetch"]},{triggers:[/^mcp__browsermcp__/],strip:[/^mcp__Claude_in_Chrome__/]}];function e(a){return a?.name||a?.function?.name||""}function f(a,b){return"string"==typeof b?a===b:b instanceof RegExp&&b.test(a)}function g(a){if(!Array.isArray(a)||0===a.length)return{tools:a,stripped:[]};let b=a.map(e),c=new Set;for(let a of d)if(b.some(b=>a.triggers.some(a=>f(b,a))))for(let d of b)a.strip.some(a=>f(d,a))&&c.add(d);return 0===c.size?{tools:a,stripped:[]}:{tools:a.filter(a=>!c.has(e(a))),stripped:Array.from(c)}}},29461:(a,b,c)=>{c.d(b,{$R:()=>j,Fo:()=>h,MK:()=>i,qr:()=>k});var d=c(12407),e=c(6755),f=c(67677);let g=["temperature","top_p","top_k","max_tokens","max_completion_tokens","thinking","reasoning","enable_thinking","presence_penalty","frequency_penalty","seed","stop","tools","tool_choice","response_format","prediction","store","metadata","n","logprobs","top_logprobs","logit_bias","user","parallel_tool_calls"];function h(a,b){let c={messages:a.messages||[],model:a.model,stream:b};for(let b of g)void 0!==a[b]&&(c[b]=a[b]);return c}function i(a){return a&&"object"==typeof a?a.usage?.input_tokens!==void 0?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usage?.prompt_tokens!==void 0?{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens}:a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,cached_tokens:a.usageMetadata.cachedContentTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount||0}:null:null}function j(a,b={}){return{provider:a.provider||"unknown",model:a.model||"unknown",connectionId:a.connectionId||void 0,timestamp:new Date().toISOString(),latency:a.latency||{ttft:0,total:0},tokens:a.tokens||{prompt_tokens:0,completion_tokens:0},request:a.request,providerRequest:a.providerRequest||null,providerResponse:a.providerResponse||null,response:a.response||{},pxpipe:a.pxpipe||void 0,status:a.status||"success",...b}}function k({provider:a,model:b,tokens:c,connectionId:g,clientKeyId:h,endpoint:i,requestId:j=null,label:l="USAGE"}){if(!c||"object"!=typeof c)return;let m=c.input_tokens??c.prompt_tokens??0,n=c.output_tokens??c.completion_tokens??0;if(0===m&&0===n)return;let o=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}),p=g?` | account=${g.slice(0,8)}...`:"";console.log(`${e.lm.green}[${o}] 📊 [${l}] ${a.toUpperCase()} | in=${m} | out=${n}${p}${e.lm.reset}`);let q=(0,f._6)(c)||{prompt_tokens:c.prompt_tokens??c.input_tokens??0,completion_tokens:c.completion_tokens??c.output_tokens??0};return(0,d.sZ)({provider:a||"unknown",model:b||"unknown",tokens:q,timestamp:new Date().toISOString(),connectionId:g||void 0,clientKeyId:h||void 0,endpoint:i||null,requestId:j||null})}},30369:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{SB:()=>f.SB}),c(46052),c(4630),c(28730),c(60290),c(27335),c(19956),c(48664),c(17717),c(66451),c(49263),c(41029),c(18129);var e=c(36362);c(15575);var f=c(48400);c(89865),c(6755);var g=a([e,f]);[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},34267:(a,b,c)=>{c.d(b,{gH:()=>f});var d=c(57642),e=c(60290);function f({body:a,reexecute:b,signal:c,log:g,stallTimeoutMs:h=e.xM,baseDelayMs:i=500,onExhausted:j}){let k=new TextEncoder,l=null,m=!1,n=null,o=null,p=()=>{let a=n;n=null,o&&(c?.removeEventListener?.("abort",o),o=null),a?.()};return new ReadableStream({async start(e){l=a.getReader();let f=!1,q=null,r=async a=>{let b;if(!m&&(await (b=e.desiredSize,m||c?.aborted||null==b||b>0?Promise.resolve():new Promise(a=>{n=a,c?.addEventListener&&(o=p,c.addEventListener("abort",o,{once:!0}))})),!(m||c?.aborted)))try{e.enqueue(k.encode(a))}catch{m=!0}},s=()=>{if(!m)try{e.close()}catch{}},t=()=>{p();try{l.cancel().catch(()=>{})}catch{}if(m)return;let a=Error("Request aborted");a.name="AbortError";try{e.error(a)}catch{}},u=async a=>{try{await Promise.resolve(j?.(a,{upstreamError:q?.error||null}))}catch{}let b=q?.kind==="error_object"?q.line:`data: ${JSON.stringify({error:{code:502,status:"EMPTY_RESPONSE",message:a}})}`;await r(`${b}
|
|
64
|
+
${h}`:Array.isArray(g.content)?g.content.push({type:"input_text",text:h}):g.content=h}else c.unshift({role:"system",content:b})}(a,c)}}},27226:(a,b,c)=>{c.d(b,{Jz:()=>f,Qf:()=>l,lP:()=>k});var d=c(35570);let e={claude:["claude","anthropic"],"gemini-cli":["gemini-cli"],antigravity:["antigravity"],codex:["codex"]};function f(a={},b={}){let c=a["user-agent"]||"";return"antigravity"===b.userAgent?"antigravity":/^GitHubCopilotChat\/\d+\.\d+\.\d+/i.test(c)&&a["editor-version"]&&a["editor-plugin-version"]?"github-copilot":/claude-(?:cli|code)\/\d+\.\d+\.\d+/i.test(c)?"claude":/^GeminiCLI\/\d+\.\d+\.\d+/i.test(c)?"gemini-cli":/^(?:codex_cli_rs|codex-cli)\/\d+\.\d+\.\d+/i.test(c)?"codex":/^Cline\/\d+\.\d+\.\d+/i.test(c)&&"extension"===a["x-client-type"]?"cline":/^QwenCode\/\d+\.\d+\.\d+/i.test(c)?"qwen":c.includes("deepseek-tui")?"deepseek-tui":null}let g={claude:"claude-cli",codex:"codex-cli","gemini-cli":"gemini-cli",antigravity:"antigravity",cline:"cline",qwen:"qwen","github-copilot":"copilot"},h=/^claude-(?:cli|code)\/(\d+\.\d+\.\d+)(?:\s|\(|$)/i,i=/_session_([a-f0-9-]+)$/;function j(a,b){let c=a?.[b]??a?.[b.toLowerCase()];return"string"==typeof c&&c.trim()?c:null}function k(a,b={},c={}){let e=g[a];if(!e||f(b,c)!==a)return!1;if("claude"!==a)return(0,d.I2)(e,b);if(!function(a={},b={}){if(!a||"object"!=typeof a)return!1;let c=j(a,"user-agent"),e=c?.match(h)?.[1],f=(0,d.zi)("claude-cli")?.version;return!!(e&&e===f&&j(a,"x-app")?.toLowerCase()==="cli"&&j(a,"anthropic-beta")&&j(a,"x-stainless-package-version")&&j(a,"x-stainless-runtime-version")&&j(a,"x-stainless-os")&&j(a,"x-stainless-arch")&&function(a){let b=a?.metadata?.user_id;if("string"!=typeof b||!b)return null;let c=b.match(i)?.[1];if(c)return c;if("{"!==b[0])return null;try{let a=JSON.parse(b)?.session_id;if("string"!=typeof a)return null;let c=a.trim();return c&&c.length<=256?c:null}catch{return null}}(b))}(b,c))return!1;let l=b["user-agent"]||b["User-Agent"];return(0,d.I2)(e,{...b,"user-agent":l.replace(/^claude-code\//i,"claude-cli/")})}function l(a,b){if(!a)return!1;let c=e[a];if(!c)return!1;let d=b.startsWith("anthropic-compatible")?"anthropic":b;return c.includes(d)}},28190:(a,b,c)=>{c.d(b,{F:()=>g});let d=[{triggers:["mcp__exa__web_search_exa","mcp__exa__web_fetch_exa"],strip:["WebSearch","WebFetch","mcp__workspace__web_fetch"]},{triggers:["mcp__tavily__tavily_search","mcp__tavily__tavily_extract"],strip:["WebSearch","WebFetch","mcp__workspace__web_fetch"]},{triggers:[/^mcp__browsermcp__/],strip:[/^mcp__Claude_in_Chrome__/]}];function e(a){return a?.name||a?.function?.name||""}function f(a,b){return"string"==typeof b?a===b:b instanceof RegExp&&b.test(a)}function g(a){if(!Array.isArray(a)||0===a.length)return{tools:a,stripped:[]};let b=a.map(e),c=new Set;for(let a of d)if(b.some(b=>a.triggers.some(a=>f(b,a))))for(let d of b)a.strip.some(a=>f(d,a))&&c.add(d);return 0===c.size?{tools:a,stripped:[]}:{tools:a.filter(a=>!c.has(e(a))),stripped:Array.from(c)}}},29461:(a,b,c)=>{c.d(b,{$R:()=>j,Fo:()=>h,MK:()=>i,qr:()=>k});var d=c(12407),e=c(6755),f=c(67677);let g=["temperature","top_p","top_k","max_tokens","max_completion_tokens","thinking","reasoning","enable_thinking","presence_penalty","frequency_penalty","seed","stop","tools","tool_choice","response_format","prediction","store","metadata","n","logprobs","top_logprobs","logit_bias","user","parallel_tool_calls"];function h(a,b){let c={messages:a.messages||[],model:a.model,stream:b};for(let b of g)void 0!==a[b]&&(c[b]=a[b]);return c}function i(a){return a&&"object"==typeof a?a.usage?.input_tokens!==void 0?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usage?.prompt_tokens!==void 0?{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens}:a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,cached_tokens:a.usageMetadata.cachedContentTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount||0}:null:null}function j(a,b={}){return{provider:a.provider||"unknown",model:a.model||"unknown",connectionId:a.connectionId||void 0,timestamp:new Date().toISOString(),latency:a.latency||{ttft:0,total:0},tokens:a.tokens||{prompt_tokens:0,completion_tokens:0},request:a.request,providerRequest:a.providerRequest||null,providerResponse:a.providerResponse||null,response:a.response||{},pxpipe:a.pxpipe||void 0,rtk:a.rtk||void 0,status:a.status||"success",...b}}function k({provider:a,model:b,tokens:c,connectionId:g,clientKeyId:h,endpoint:i,requestId:j=null,label:l="USAGE"}){if(!c||"object"!=typeof c)return;let m=c.input_tokens??c.prompt_tokens??0,n=c.output_tokens??c.completion_tokens??0;if(0===m&&0===n)return;let o=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}),p=g?` | account=${g.slice(0,8)}...`:"";console.log(`${e.lm.green}[${o}] 📊 [${l}] ${a.toUpperCase()} | in=${m} | out=${n}${p}${e.lm.reset}`);let q=(0,f._6)(c)||{prompt_tokens:c.prompt_tokens??c.input_tokens??0,completion_tokens:c.completion_tokens??c.output_tokens??0};return(0,d.sZ)({provider:a||"unknown",model:b||"unknown",tokens:q,timestamp:new Date().toISOString(),connectionId:g||void 0,clientKeyId:h||void 0,endpoint:i||null,requestId:j||null})}},30369:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{SB:()=>f.SB}),c(46052),c(4630),c(28730),c(60290),c(27335),c(19956),c(48664),c(17717),c(66451),c(49263),c(41029),c(18129);var e=c(36362);c(15575);var f=c(48400);c(89865),c(6755);var g=a([e,f]);[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},34267:(a,b,c)=>{c.d(b,{gH:()=>f});var d=c(57642),e=c(60290);function f({body:a,reexecute:b,signal:c,log:g,stallTimeoutMs:h=e.xM,baseDelayMs:i=500,onExhausted:j}){let k=new TextEncoder,l=null,m=!1,n=null,o=null,p=()=>{let a=n;n=null,o&&(c?.removeEventListener?.("abort",o),o=null),a?.()};return new ReadableStream({async start(e){l=a.getReader();let f=!1,q=null,r=async a=>{let b;if(!m&&(await (b=e.desiredSize,m||c?.aborted||null==b||b>0?Promise.resolve():new Promise(a=>{n=a,c?.addEventListener&&(o=p,c.addEventListener("abort",o,{once:!0}))})),!(m||c?.aborted)))try{e.enqueue(k.encode(a))}catch{m=!0}},s=()=>{if(!m)try{e.close()}catch{}},t=()=>{p();try{l.cancel().catch(()=>{})}catch{}if(m)return;let a=Error("Request aborted");a.name="AbortError";try{e.error(a)}catch{}},u=async a=>{try{await Promise.resolve(j?.(a,{upstreamError:q?.error||null}))}catch{}let b=q?.kind==="error_object"?q.line:`data: ${JSON.stringify({error:{code:502,status:"EMPTY_RESPONSE",message:a}})}`;await r(`${b}
|
|
65
65
|
|
|
66
|
-
`),s()};for(let a=0;;a++){let e=new TextDecoder,j="",k=null,m=!1,n="empty";for(;;){let a,b;if(c?.aborted)return t();try{a=await Promise.race([l.read(),new Promise(a=>{b=setTimeout(()=>a({__stalled:!0}),h)})])}catch{if(c?.aborted)return t();n="read_error";break}finally{clearTimeout(b)}if(a.__stalled){try{l.cancel().catch(()=>{})}catch{}n="stall";break}let{done:g,value:i}=a;if(g)break;let o=(j+=e.decode(i,{stream:!0})).split("\n");for(let a of(j=o.pop(),o)){let b;if(k)continue;let c=a.trim();if(!c.startsWith("data:")){await r(a+"\n");continue}let e=c.slice(5).trim();if(!e||"[DONE]"===e){await r(a+"\n");continue}try{b=JSON.parse(e)}catch{await r(a+"\n");continue}let g=function(a,b){let c=a.response||a;if(!c||"object"!=typeof c)return{action:"forward"};let e=c.error||a.error;if(e)return b?{action:"forward",terminal:!0}:{action:"hold",kind:"error_object",reason:e.status||e.message||"error",error:e};if(!c.candidates?.length&&c.promptFeedback?.blockReason)return{action:"forward",terminal:!0};let f=c.candidates?.[0];if(!f)return{action:"forward"};let g=!1;for(let a of f.content?.parts||[])if(a.functionCall||a.inlineData?.data||a.inline_data?.data||!0!==a.thought&&"string"==typeof a.text&&a.text.trim().length>0){g=!0;break}let h=f.finishReason&&String(f.finishReason).toUpperCase();return h?d.zh.has(h)||h===d.a_.MAX_TOKENS||g||b?{action:"forward",meaningful:g,terminal:!0}:{action:"hold",kind:d.lW.has(h)?"error_finish":"stop",reason:h}:{action:"forward",meaningful:g}}(b,f);if(g.meaningful&&(f=!0),"hold"===g.action){q=k={kind:g.kind,reason:g.reason,error:g.error||null,line:a};continue}g.terminal&&(m=!0),await r(a+"\n")}}if(f||m){let a=j+e.decode();!k&&a&&await r(a),s();return}let o=k?k.reason:n;if(g?.warn?.("STREAM",`ANTIGRAVITY | empty (${o}) | attempt ${a+1}/3`),a>=2)return u(`empty response from upstream (${o}) after ${a+1} attempts`);if(await function(a,b){return new Promise(c=>{let d,e=()=>{clearTimeout(d),c()};d=setTimeout(()=>{a?.removeEventListener?.("abort",e),c()},b),a?.addEventListener?.("abort",e,{once:!0})})}(c,i*2**a),c?.aborted)return t();try{l=(await b()).getReader()}catch(a){if(a?.name==="AbortError"||c?.aborted)return t();return u(a?.message||"retry request failed")}}},pull(){p()},cancel(a){m=!0,p();try{l?.cancel(a)?.catch?.(()=>{})}catch{}}})}},36362:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{w:()=>O});var e=c(17717),f=c(48664),g=c(94454),h=c(19956),i=c(43788),j=c(6755),k=c(15575),l=c(41029),m=c(18129),n=c(70718),o=c(27335),p=c(4630),q=c(89865),r=c(60290),s=c(2735),t=c(12407),u=c(48400),v=c(29461),w=c(78255),x=c(15142),y=c(61229),z=c(34267),A=c(27226),B=c(28190),C=c(10640),D=c(37208),E=c(16799),F=c(92),G=c(12197),H=c(54070),I=c(39232),J=c(90197),K=c(43904),L=c(94501),M=c(96145),N=a([u]);u=(N.then?(await N)():N)[0];let P=new Set([h.h.GEMINI,h.h.GEMINI_CLI,h.h.ANTIGRAVITY,h.h.VERTEX]);async function O({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:N,onRequestSuccess:Q,onDisconnect:R,onUpstreamEmptyExhausted:S,clientRawRequest:T,connectionId:U,userAgent:V,clientKeyId:W,ccFilterNaming:X,rtkEnabled:Y,vaultEnabled:Z,vaultThresholdKB:$,vaultTtlHours:_,vaultConversationId:aa,headroomEnabled:ab,headroomUrl:ac,headroomCompressUserMessages:ad,cavemanEnabled:ae,cavemanLevel:af,ponytailEnabled:ag,ponytailLevel:ah,pxpipeEnabled:ai,pxpipeMinChars:aj,pxpipeTimeoutMs:ak,pxpipeTransform:al,onPxpipeEvent:am,sourceFormatOverride:an,providerThinking:ao,bypassNativePassthrough:ap,vaultInternal:aq,abortSignal:ar}){let as,at,au,av,aw,ax,{provider:ay,model:az}=b,aA=Date.now(),aB=an||(0,e.Tz)(a),aC=(0,s.c)(a,az,V,X);if(aC)return aC;let aD=o.Xg[ay]||ay,aE=(0,o.ux)(aD,az),aF=(0,o.ez)(aD,az),aG=aE||(0,e.jJ)(ay,c),aH=(0,e.oF)(ay,aB,aF),aI=aH||(0,e.oF)(ay,aG,aF),aJ=aH?.format===aB;c&&(c.runtimeTransport=aI||void 0);let aK=aJ?aB:aI?.format||aG,aL=(0,o.cY)(aD,az),aM=(0,o.kt)(aD,az);if(ao?.mode&&"auto"!==ao.mode){let b=ao.mode;"on"!==b||a.thinking?"off"!==b||a.thinking?a.reasoning_effort||(a={...a,reasoning_effort:b}):a={...a,thinking:{type:"disabled"}}:(console.log("Injecting provider-level thinking config override: on"),a={...a,thinking:{type:"enabled",budget_tokens:1e4}})}let aN=!0===a.stream||aB===h.h.ANTIGRAVITY||aB===h.h.GEMINI||aB===h.h.GEMINI_CLI,aO=p.xq[ay]?.forceStream===!0,aP=!!aO||!1!==a.stream,aQ=(0,o.OA)(aD,az);("imageGen"===aQ||/image|imagen|image-generation/i.test(az))&&("antigravity"===ay||"gemini-cli"===ay)&&(aP=!1);let aR=(0,A.Jz)(T?.headers||{},a);"deepseek-tui"===aR&&!0!==a.stream&&(aP=!1);let aS=T?.headers?.accept||"",aT=aS.includes("application/json"),aU=aS.includes("text/event-stream");!aT||aU||!0===a.stream||aO||(aP=!1),a&&"object"==typeof a&&(a={...a,stream:aP});let aV=await (0,n.q7)(aB,aK,az);T&&aV.logClientRawRequest(T.endpoint,T.body,T.headers),aV.logRawRequest(a),d?.debug?.("FORMAT",`${aB} → ${aK} | stream=${aP}`);let aW=(0,A.Jz)(T?.headers||{},a);(0,A.lP)(aW,T?.headers||{},a);let aX=!ap&&(0,A.Qf)(aW,ay);if(c&&(c.rawHeaders=T?.headers||{}),!aX){let b=(0,K.nl)(ay,az);(0,L.X)(a,aB,b)&&d?.debug?.("MODALITY",`stripped unsupported media for ${ay}/${az}`);try{let b=await (0,M.C)(a,aB,aK,{signal:ar});b>0&&d?.debug?.("MODALITY",`prefetched ${b} remote image(s) for ${aK}`)}catch(a){d?.warn?.("MODALITY",`image prefetch failed: ${a.message}`)}}let aY=(0,C.Ay)(a);if(aY>0&&d?.debug?.("TOOLCLEAN",`pre-translation: stripped ${aY} orphaned tool result(s)`),aX)d?.debug?.("PASSTHROUGH",`${aW} → ${ay} | native lossless`),as={...a,model:(0,g.kD)(aM)},"claude"===aW&&(0,i.ui)(as,as.model);else{if(!(as=(0,f.GH)(aB,aK,aM,a,aP,c,ay,aV,aL,U,aW)))return(0,t.uw)(az,ay,U,!1,!0),(0,q.A1)(r.gx.BAD_REQUEST,`Failed to translate request for ${aB} → ${aK}`);at=as._toolNameMap,delete as._toolNameMap,as.model=(0,g.kD)(aM)}if("claude"===aW&&Array.isArray(as.tools)){let{tools:a,stripped:b}=(0,B.F)(as.tools);b.length>0&&(as.tools=a,d?.debug?.("TOOLDEDUP",`stripped ${b.length}: ${b.slice(0,3).join(", ")}${b.length>3?"...":""}`))}let aZ=aX?aB:aK;"tts"===(0,o.OA)(aD,az)&&as.messages&&(as.messages=as.messages.filter(a=>"tool"!==a.role),delete as.tools);let a$=null;try{if(Z&&aa&&Array.isArray(as?.tools)&&as.tools.length>0&&(aB===h.h.OPENAI||aB===h.h.CLAUDE)){let a=1024*(0,G.u1)($??8),b=3600*Math.max(1,Number(_??24))*1e3;a$=await (0,G.f3)(as,{conversationId:aa,thresholdBytes:a,ttlMs:b,log:d})}}catch(a){d?.warn?.("VAULT",`store failed (dropped): ${a?.message||a}`)}let a_=T?.headers?.[r.SA]?.toLowerCase()!=="off",a0=(0,F.BI)(as,a_&&Y),a1=(0,F.fT)(a0);if(a1&&console.log(a1),a$?.vaulted>0){let a=a$.bytesBefore-a$.bytesAfter;(0,H.DL)(a$.vaulted,a),d?.info?.("VAULT",`externalized ${a$.vaulted} tool result(s), saved ${a}B`)}let a2={},a3=await (0,I.SI)(as,{enabled:a_&&ab,url:ac,model:aM,format:aZ,compressUserMessages:ad,diagnostics:a2}),a4=(0,I.Nv)(a3),a5=(0,I.O2)(a2);a4?(d?.info?.("HEADROOM",`${a4}${a5?` | ${a5}`:""}`),(0,I.cB)(a3,a2)&&d?.warn?.("HEADROOM",`reported token delta, but outbound JSON shrank <5%; provider may bill near-original payload | ${a5}`)):a_&&ab&&d?.warn?.("HEADROOM",`skipped: ${a2.reason||"compression unavailable"}${a2.endpoint?` (${a2.endpoint})`:""}`);let a6=(0,C.Ay)(as);a6>0&&d?.debug?.("TOOLCLEAN",`post-compression: stripped ${a6} orphaned tool result(s)`),a_&&ae&&af&&((0,D.p)(as,aZ,af),d?.debug?.("CAVEMAN",`${af} | ${aZ}`)),a_&&ag&&ah&&((0,E.U)(as,aZ,ah),d?.debug?.("PONYTAIL",`${ah} | ${aZ}`));let a7=null;if(a_&&ai){let a=await (0,J.H)(as,{enabled:!0,format:aZ,model:aM,minChars:aj,timeoutMs:ak,transform:al});a7=a.summary;let b=(0,J._)(a7);b?d?.info?.("PXPIPE",b):d?.debug?.("PXPIPE",`skipped: ${a7?.reason||"unknown"}`),a.body&&(as=a.body);try{am&&am({provider:ay,model:az,...a7})}catch{}}if(as&&"object"==typeof as)if(P.has(aZ)){let{stream:a,request:b,...c}=as;if(b&&"object"==typeof b){let{stream:a,...d}=b;as={...c,request:d}}else as=c}else as.stream!==aP&&(as={...as,stream:aP});aX&&"claude"===aW&&(0,i._W)(as);let a8=(0,u.SB)(ay);(0,t.uw)(az,ay,U,!0),aq||(0,t.E5)({model:az,provider:ay,connectionId:U,status:"PENDING"}).catch(()=>{});let a9=as.messages?.length||as.input?.length||as.contents?.length||as.request?.contents?.length||0;d?.debug?.("REQUEST",`${ay.toUpperCase()} | ${az} | ${a9} msgs`);let ba=(0,k.jd)({onDisconnect:a=>{(0,t.uw)(az,ay,U,!1),R&&R(a)},onError:()=>(0,t.uw)(az,ay,U,!1),log:d,provider:ay,model:az});if(ar)if(ar.aborted)try{ba.abort()}catch{}else ar.addEventListener("abort",()=>{try{ba.abort()}catch{}},{once:!0});let bb={connectionProxyEnabled:c?.providerSpecificData?.connectionProxyEnabled===!0,connectionProxyUrl:c?.providerSpecificData?.connectionProxyUrl||"",connectionNoProxy:c?.providerSpecificData?.connectionNoProxy||"",vercelRelayUrl:c?.providerSpecificData?.vercelRelayUrl||""};if(bb.vercelRelayUrl){let a=c?.connectionName||c?.connectionId||"unknown",b=c?.providerSpecificData?.connectionProxyPoolId||"none";d?.info?.("PROXY",`${ay.toUpperCase()} | ${az} | conn=${a} | pool=${b} | vercel-relay=${bb.vercelRelayUrl}`)}else if(bb.connectionProxyEnabled&&bb.connectionProxyUrl){let a=bb.connectionProxyUrl;try{let b=new URL(bb.connectionProxyUrl),c=b.hostname||"",d=b.port?`:${b.port}`:"",e=b.protocol||"http:";a=`${e}//${c}${d}`}catch{}let b=c?.providerSpecificData?.connectionProxyPoolId||"none",e=c?.connectionName||c?.connectionId||"unknown";d?.info?.("PROXY",`${ay.toUpperCase()} | ${az} | conn=${e} | pool=${b} | url=${a}`)}if(bb.connectionProxyEnabled&&bb.connectionNoProxy){let a=c?.connectionName||c?.connectionId||"unknown";d?.debug?.("PROXY",`${ay.toUpperCase()} | ${az} | conn=${a} | no_proxy=${bb.connectionNoProxy}`)}try{let a=await a8.execute({model:az,body:as,stream:aP,credentials:c,signal:ba.signal,log:d,proxyOptions:bb});au=a.response,av=a.url,aw=a.headers,ax=a.transformedBody,aV.logTargetRequest(av,aw,ax)}catch(c){if((0,t.uw)(az,ay,U,!1,!0),(0,t.ox)((0,v.$R)({provider:ay,model:az,connectionId:U,latency:{ttft:0,total:Date.now()-aA},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,v.Fo)(a,aP),providerRequest:as||null,response:{error:c.message||String(c),status:"AbortError"===c.name?499:502,thinking:null},status:"error",pxpipe:a7||void 0})).catch(()=>{}),"AbortError"===c.name)return ba.handleError(c),(0,q.A1)(499,"Request aborted");let b=(0,q.lR)(c,ay,az,r.gx.BAD_GATEWAY);return console.log(`${j.lm.red}[ERROR] ${b}${j.lm.reset}`),(0,q.A1)(r.gx.BAD_GATEWAY,b)}if(!a8.noAuth&&(au.status===r.gx.UNAUTHORIZED||au.status===r.gx.FORBIDDEN))try{let a=await (0,l.qZ)(async()=>{let a=await (0,m.MF)(ay,c,()=>a8.refreshCredentials(c,d,bb));return a?.refreshToken&&a.refreshToken!==c.refreshToken&&(a.accessToken&&(c.accessToken=a.accessToken),c.refreshToken=a.refreshToken),a},3,d);if(a?.accessToken||a?.copilotToken){if(d?.info?.("TOKEN",`${ay.toUpperCase()} | refreshed`),Object.assign(c,a),N)try{await N(a)}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}try{let a=await a8.execute({model:az,body:as,stream:aP,credentials:c,signal:ba.signal,log:d,proxyOptions:bb});try{await au.body?.cancel?.()}catch{}au=a.response,av=a.url}catch{d?.warn?.("TOKEN",`${ay.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${ay.toUpperCase()} | refresh failed`)}catch(a){d?.warn?.("TOKEN",`${ay.toUpperCase()} | refresh threw: ${a.message}`)}if(!au.ok){(0,t.uw)(az,ay,U,!1,!0);let{statusCode:b,message:c,resetsAtMs:d}=await (0,q.zL)(au,a8);(0,t.ox)((0,v.$R)({provider:ay,model:az,connectionId:U,latency:{ttft:0,total:Date.now()-aA},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,v.Fo)(a,aP),providerRequest:ax||as||null,response:{error:c,status:b,thinking:null},status:"error",pxpipe:a7||void 0})).catch(()=>{});let e=(0,q.lR)(Error(c),ay,az,b);return console.log(`${j.lm.red}[ERROR] ${e}${j.lm.reset}`),aV.logError(Error(c),ax||as),(0,q.A1)(b,e,d)}if("antigravity"===ay&&aP&&au.body){let a=async()=>{let a=await a8.execute({model:az,body:as,stream:aP,credentials:c,signal:ba.signal,log:d,proxyOptions:bb});if(!a.response.ok){let{statusCode:b,message:c}=await (0,q.zL)(a.response,a8);throw Error(`[${b}] ${c}`)}if(!a.response.body)throw Error("upstream returned no body");return a.response.body};au=new Response((0,z.gH)({body:au.body,reexecute:a,signal:ba.signal,log:d,onExhausted:(a,{upstreamError:b}={})=>{if(!S)return;let c=a8.parseRetryFromErrorMessage?.(b?.message||a);return S((0,q.lR)(Error(a),ay,az,r.gx.BAD_GATEWAY),c?Date.now()+c:void 0)}}),{status:au.status,headers:au.headers})}let bc=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`,bd={provider:ay,model:az,body:a,stream:aP,translatedBody:as,finalBody:ax,requestStartTime:aA,connectionId:U,clientKeyId:W,clientRawRequest:T,onRequestSuccess:Q,requestId:bc,pxpipe:a7||void 0},be=a=>{aq||(0,t.E5)({model:az,provider:ay,connectionId:U,...a}).catch(()=>{})},bf=()=>(0,t.uw)(az,ay,U,!1);if(!aN&&aO){let a=await (0,w.I)({...bd,providerResponse:au,sourceFormat:aB,targetFormat:aK,trackDone:bf,appendLog:be});if(a)return ba.handleComplete(),a}if(!aP){let a=await (0,x.N)({...bd,providerResponse:au,sourceFormat:aB,targetFormat:aK,reqLogger:aV,toolNameMap:at,trackDone:bf,appendLog:be});return ba.handleComplete(),a}let{onStreamComplete:bg,streamDetailId:bh}=(0,y.$)({...bd});return(0,y.M)({...bd,providerResponse:au,sourceFormat:aB,targetFormat:aK,userAgent:V,reqLogger:aV,toolNameMap:at,streamController:ba,onStreamComplete:bg,streamDetailId:bh})}d()}catch(a){d(a)}})},37208:(a,b,c)=>{c.d(b,{p:()=>n});var d=c(17429);let e="Code blocks, file paths, commands, errors, URLs: keep exact. Security warnings, irreversible action confirmations, multi-step ordered sequences: write normal. Resume terse style after.",f='Not: "Sure! I\'d be happy to help you with that. The issue you\'re experiencing is likely caused by..." Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"',g="Auto-Clarity: drop caveman for security warnings, irreversible actions, multi-step sequences where fragment ambiguity risks misread, or when user repeats a question. Resume after the clear part.",h="ACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure.",i="No invented abbreviations. Standard well-known tech acronyms (DB, API, HTTP, URL, JSON, ID, OS, CPU) OK. Names of code symbols, function names, API names, error strings: keep verbatim.",j="Preserve the user's dominant language. User wrote Vietnamese, reply Vietnamese. User wrote English, reply English. Wenyan/classical-Chinese levels override this language-preservation rule. Code identifiers, error strings, file paths, commands: keep in their original form regardless of language.",k='No self-reference. Do not name or announce the style (no "caveman mode", no "me caveman think", no "compressed mode active"). Just respond.',l='No decorative emoji. No narrating tool calls ("I will now search", "I used X to find Y"). No status phrases ("Sure!", "Of course!", "I\'d be happy to"). No causal arrow shorthand ("A -> B -> fails"). State the thing, the action, the reason. Then next step.',m={lite:["Respond tersely. Keep grammar and full sentences but drop filler, hedging and pleasantries (just/really/basically/sure/of course/I'd be happy to). Pattern: state the thing, the action, the reason. Then next step.",f,e,g,h,i,j,k,l].join(" "),full:["Respond like terse caveman. All technical substance stay exact, only fluff die. Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries, hedging. Fragments OK. Short synonyms (big not extensive, fix not implement a solution for). Pattern: [thing] [action] [reason]. [next step].",f,e,g,h,i,j,k,l].join(" "),ultra:["Respond ultra-terse. Maximum compression. Telegraphic. Strip conjunctions. One word when one word enough. Pattern: [thing] [action] [reason]. [next step].",f,e,g,h,i,j,k,l].join(" "),"wenyan-lite":["Respond semi-classical. Drop filler/hedging but keep grammar structure, classical register. Use classical Chinese sentence patterns where natural. Keep English for technical terms.",f,e,g,h,i,j,k,l].join(" "),wenyan:["Respond classical Chinese (文言文). Maximum classical terseness. 80-90% character reduction. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其). Keep English for code, commands, function names, API names, error strings.",f,e,g,h,i,j,k,l].join(" "),"wenyan-ultra":["Respond extreme classical compression (文言文 ultra). Maximum compression, ultra terse. Same classical rules as wenyan-full but even more compressed. One classical particle per clause.",f,e,g,h,i,j,k,l].join(" ")};function n(a,b,c){(0,d.J)(a,b,m[c])}},39232:(a,b,c)=>{c.d(b,{Nv:()=>l,O2:()=>m,SI:()=>k,cB:()=>n});var d=c(37377),e=c(29229),f=c(97579);function g(a){try{return new TextEncoder().encode(JSON.stringify(a)||"").length}catch{return 0}}function h(a){let b=Array.isArray(a?.messages)?a.messages:Array.isArray(a?.input)?a.input:null,c=b?.filter(a=>a?.role==="tool"||a?.role==="function"||a?.tool_calls?.length||a?.content?.some?.(a=>a?.type==="tool_use"||a?.type==="tool_result"))||[];return{bodyBytes:g(a),messageBytes:b?g(b):0,toolSchemaBytes:g(a?.tools||[]),toolHistoryBytes:g(c)}}function i(a,b){a&&!a.reason&&(a.reason=b)}async function j(a,b,c,d,e,f){let g,h=function(a){try{let b=new URL(a);return b.pathname=`${b.pathname.replace(/\/$/,"")}/v1/compress`,b.hash="",b.toString()}catch{let[b,c=""]=String(a).replace(/#.*$/,"").split("?",2),d=`${b.replace(/\/$/,"")}/v1/compress`;return c?`${d}?${c}`:d}}(a);f.endpoint=function(a){try{let b=new URL(a);return b.username="",b.password="",b.search="",b.hash="",b.toString()}catch{return String(a).replace(/\/\/[^/@\s]+@/,"//").replace(/[?#].*$/,"")}}(h);let j={messages:b,model:c};e&&(j.config={compress_user_messages:!0});try{g=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(j),signal:AbortSignal.timeout(d)})}catch(d){var k;let a,b,c;return i(f,`request failed: ${(k=d,a=k?.cause,b=a?.code||k?.code,c=String(a?.message||k?.message||String(k)).replace(/\/\/[^/@\s]+@/g,"//").replace(/(https?:\/\/[^\s?#]+)[?#][^\s)]*/g,"$1"),b?`${b}: ${c}`:c)}`),null}if(!g.ok)return i(f,`proxy returned HTTP ${g.status}`),null;let l=await g.json();return Array.isArray(l?.messages)?l:(i(f,"proxy response missing messages[]"),null)}async function k(a,{enabled:b,url:c,model:g,format:l,compressUserMessages:m,timeoutMs:n=3e3,diagnostics:o=null}={}){if(!b)return i(o,"disabled"),null;if(!c)return i(o,"missing proxy URL"),null;if(!a)return i(o,"missing request body"),null;try{if(o&&(o.before=h(a)),"claude"===l){let b=(0,d.t)(g,a,!1);if(!Array.isArray(b?.messages))return i(o,"Claude request did not translate to messages[]"),null;let f=await j(c,b.messages,g,n,m,o||{});if(!f)return null;let k=(0,e.p)(g,{...b,messages:f.messages},!1);return Array.isArray(k?.messages)&&(a.messages=k.messages),k?.system!==void 0&&(a.system=k.system),o&&(o.after=h(a)),f}if("openai-responses"===l){if(Array.isArray(a?.input)&&a.input.some(a=>!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.type&&"message"!==a.type))return i(o,"skipped: openai-responses tool/reasoning input is not safe to compress"),null;let b=(0,f.Z)(g,a,!1);if(!Array.isArray(b?.messages))return null;let d=await j(c,b.messages,g,n,m,o||{});if(!d)return null;let e=(0,f.h)(g,{...b,input:void 0,messages:d.messages},!1);return Array.isArray(e?.input)&&(a.input=e.input),o&&(o.after=h(a)),d}let b=Array.isArray(a.messages)?"messages":Array.isArray(a.input)?"input":null;if(!b)return i(o,`unsupported ${l||"unknown"} request shape`),null;let k=await j(c,a[b],g,n,m,o||{});if(!k)return null;return a[b]=k.messages,o&&(o.after=h(a)),k}catch(a){return i(o,`unexpected error: ${a?.message||String(a)}`),null}}function l(a){if(!a)return null;let b=a.tokens_before||0,c=a.tokens_after||0,d=a.tokens_saved||0,e=b>0?(d/b*100).toFixed(1):"0";return`reported token delta=${d} before=${b}${c?` after=${c}`:""} (${e}%)`.trim()}function m(a){let b=a?.before,c=a?.after;if(!b||!c)return"";let d=b.bodyBytes>0?((b.bodyBytes-c.bodyBytes)/b.bodyBytes*100).toFixed(1):"0.0";return`body=${b.bodyBytes}B→${c.bodyBytes}B messages=${b.messageBytes}B→${c.messageBytes}B tools=${b.toolSchemaBytes||0}B→${c.toolSchemaBytes||0}B toolHistory=${b.toolHistoryBytes||0}B→${c.toolHistoryBytes||0}B effective=${d}%`}function n(a,b,c=.05){if(!a?.tokens_saved||a.tokens_saved<=0)return!1;let d=b?.before?.bodyBytes||0,e=b?.after?.bodyBytes||0;return!(d<=0)&&!(e<=0)&&e>=d*(1-c)}},48330:(a,b,c)=>{c.d(b,{Hr:()=>j,nu:()=>h,u9:()=>k,yx:()=>g});var d=c(19956),e=c(45894);let f=new Set(["response.completed","response.done","response.failed","error"]);function g(a,b){return a||(b&&"string"==typeof b.type?b.type:null)}function h(a,b){let c=g(a,b);if(f.has(c))return!0;let d=b?.response?.status;return"completed"===d||"failed"===d}let i=new TextEncoder;function j(){return i.encode(`${k()}data: [DONE]
|
|
66
|
+
`),s()};for(let a=0;;a++){let e=new TextDecoder,j="",k=null,m=!1,n="empty";for(;;){let a,b;if(c?.aborted)return t();try{a=await Promise.race([l.read(),new Promise(a=>{b=setTimeout(()=>a({__stalled:!0}),h)})])}catch{if(c?.aborted)return t();n="read_error";break}finally{clearTimeout(b)}if(a.__stalled){try{l.cancel().catch(()=>{})}catch{}n="stall";break}let{done:g,value:i}=a;if(g)break;let o=(j+=e.decode(i,{stream:!0})).split("\n");for(let a of(j=o.pop(),o)){let b;if(k)continue;let c=a.trim();if(!c.startsWith("data:")){await r(a+"\n");continue}let e=c.slice(5).trim();if(!e||"[DONE]"===e){await r(a+"\n");continue}try{b=JSON.parse(e)}catch{await r(a+"\n");continue}let g=function(a,b){let c=a.response||a;if(!c||"object"!=typeof c)return{action:"forward"};let e=c.error||a.error;if(e)return b?{action:"forward",terminal:!0}:{action:"hold",kind:"error_object",reason:e.status||e.message||"error",error:e};if(!c.candidates?.length&&c.promptFeedback?.blockReason)return{action:"forward",terminal:!0};let f=c.candidates?.[0];if(!f)return{action:"forward"};let g=!1;for(let a of f.content?.parts||[])if(a.functionCall||a.inlineData?.data||a.inline_data?.data||!0!==a.thought&&"string"==typeof a.text&&a.text.trim().length>0){g=!0;break}let h=f.finishReason&&String(f.finishReason).toUpperCase();return h?d.zh.has(h)||h===d.a_.MAX_TOKENS||g||b?{action:"forward",meaningful:g,terminal:!0}:{action:"hold",kind:d.lW.has(h)?"error_finish":"stop",reason:h}:{action:"forward",meaningful:g}}(b,f);if(g.meaningful&&(f=!0),"hold"===g.action){q=k={kind:g.kind,reason:g.reason,error:g.error||null,line:a};continue}g.terminal&&(m=!0),await r(a+"\n")}}if(f||m){let a=j+e.decode();!k&&a&&await r(a),s();return}let o=k?k.reason:n;if(g?.warn?.("STREAM",`ANTIGRAVITY | empty (${o}) | attempt ${a+1}/3`),a>=2)return u(`empty response from upstream (${o}) after ${a+1} attempts`);if(await function(a,b){return new Promise(c=>{let d,e=()=>{clearTimeout(d),c()};d=setTimeout(()=>{a?.removeEventListener?.("abort",e),c()},b),a?.addEventListener?.("abort",e,{once:!0})})}(c,i*2**a),c?.aborted)return t();try{l=(await b()).getReader()}catch(a){if(a?.name==="AbortError"||c?.aborted)return t();return u(a?.message||"retry request failed")}}},pull(){p()},cancel(a){m=!0,p();try{l?.cancel(a)?.catch?.(()=>{})}catch{}}})}},36362:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{w:()=>O});var e=c(17717),f=c(48664),g=c(94454),h=c(19956),i=c(43788),j=c(6755),k=c(15575),l=c(41029),m=c(18129),n=c(70718),o=c(27335),p=c(4630),q=c(89865),r=c(60290),s=c(2735),t=c(12407),u=c(48400),v=c(29461),w=c(78255),x=c(15142),y=c(61229),z=c(34267),A=c(27226),B=c(28190),C=c(10640),D=c(37208),E=c(16799),F=c(92),G=c(12197),H=c(54070),I=c(39232),J=c(90197),K=c(43904),L=c(94501),M=c(96145),N=a([u]);u=(N.then?(await N)():N)[0];let P=new Set([h.h.GEMINI,h.h.GEMINI_CLI,h.h.ANTIGRAVITY,h.h.VERTEX]);async function O({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:N,onRequestSuccess:Q,onDisconnect:R,onUpstreamEmptyExhausted:S,clientRawRequest:T,connectionId:U,userAgent:V,clientKeyId:W,ccFilterNaming:X,rtkEnabled:Y,vaultEnabled:Z,vaultThresholdKB:$,vaultTtlHours:_,vaultConversationId:aa,headroomEnabled:ab,headroomUrl:ac,headroomCompressUserMessages:ad,cavemanEnabled:ae,cavemanLevel:af,ponytailEnabled:ag,ponytailLevel:ah,pxpipeEnabled:ai,pxpipeMinChars:aj,pxpipeTimeoutMs:ak,pxpipeTransform:al,onPxpipeEvent:am,sourceFormatOverride:an,providerThinking:ao,bypassNativePassthrough:ap,vaultInternal:aq,abortSignal:ar}){let as,at,au,av,aw,ax,{provider:ay,model:az}=b,aA=Date.now(),aB=an||(0,e.Tz)(a),aC=(0,s.c)(a,az,V,X);if(aC)return aC;let aD=o.Xg[ay]||ay,aE=(0,o.ux)(aD,az),aF=(0,o.ez)(aD,az),aG=aE||(0,e.jJ)(ay,c),aH=(0,e.oF)(ay,aB,aF),aI=aH||(0,e.oF)(ay,aG,aF),aJ=aH?.format===aB;c&&(c.runtimeTransport=aI||void 0);let aK=aJ?aB:aI?.format||aG,aL=(0,o.cY)(aD,az),aM=(0,o.kt)(aD,az);if(ao?.mode&&"auto"!==ao.mode){let b=ao.mode;"on"!==b||a.thinking?"off"!==b||a.thinking?a.reasoning_effort||(a={...a,reasoning_effort:b}):a={...a,thinking:{type:"disabled"}}:(console.log("Injecting provider-level thinking config override: on"),a={...a,thinking:{type:"enabled",budget_tokens:1e4}})}let aN=!0===a.stream||aB===h.h.ANTIGRAVITY||aB===h.h.GEMINI||aB===h.h.GEMINI_CLI,aO=p.xq[ay]?.forceStream===!0,aP=!!aO||!1!==a.stream,aQ=(0,o.OA)(aD,az);("imageGen"===aQ||/image|imagen|image-generation/i.test(az))&&("antigravity"===ay||"gemini-cli"===ay)&&(aP=!1);let aR=(0,A.Jz)(T?.headers||{},a);"deepseek-tui"===aR&&!0!==a.stream&&(aP=!1);let aS=T?.headers?.accept||"",aT=aS.includes("application/json"),aU=aS.includes("text/event-stream");!aT||aU||!0===a.stream||aO||(aP=!1),a&&"object"==typeof a&&(a={...a,stream:aP});let aV=await (0,n.q7)(aB,aK,az);T&&aV.logClientRawRequest(T.endpoint,T.body,T.headers),aV.logRawRequest(a),d?.debug?.("FORMAT",`${aB} → ${aK} | stream=${aP}`);let aW=(0,A.Jz)(T?.headers||{},a);(0,A.lP)(aW,T?.headers||{},a);let aX=!ap&&(0,A.Qf)(aW,ay);if(c&&(c.rawHeaders=T?.headers||{}),!aX){let b=(0,K.nl)(ay,az);(0,L.X)(a,aB,b)&&d?.debug?.("MODALITY",`stripped unsupported media for ${ay}/${az}`);try{let b=await (0,M.C)(a,aB,aK,{signal:ar});b>0&&d?.debug?.("MODALITY",`prefetched ${b} remote image(s) for ${aK}`)}catch(a){d?.warn?.("MODALITY",`image prefetch failed: ${a.message}`)}}let aY=(0,C.Ay)(a);if(aY>0&&d?.debug?.("TOOLCLEAN",`pre-translation: stripped ${aY} orphaned tool result(s)`),aX)d?.debug?.("PASSTHROUGH",`${aW} → ${ay} | native lossless`),as={...a,model:(0,g.kD)(aM)},"claude"===aW&&(0,i.ui)(as,as.model);else{if(!(as=(0,f.GH)(aB,aK,aM,a,aP,c,ay,aV,aL,U,aW)))return(0,t.uw)(az,ay,U,!1,!0),(0,q.A1)(r.gx.BAD_REQUEST,`Failed to translate request for ${aB} → ${aK}`);at=as._toolNameMap,delete as._toolNameMap,as.model=(0,g.kD)(aM)}if("claude"===aW&&Array.isArray(as.tools)){let{tools:a,stripped:b}=(0,B.F)(as.tools);b.length>0&&(as.tools=a,d?.debug?.("TOOLDEDUP",`stripped ${b.length}: ${b.slice(0,3).join(", ")}${b.length>3?"...":""}`))}let aZ=aX?aB:aK;"tts"===(0,o.OA)(aD,az)&&as.messages&&(as.messages=as.messages.filter(a=>"tool"!==a.role),delete as.tools);let a$=null;try{if(Z&&aa&&Array.isArray(as?.tools)&&as.tools.length>0&&(aB===h.h.OPENAI||aB===h.h.CLAUDE)){let a=1024*(0,G.u1)($??8),b=3600*Math.max(1,Number(_??24))*1e3;a$=await (0,G.f3)(as,{conversationId:aa,thresholdBytes:a,ttlMs:b,log:d})}}catch(a){d?.warn?.("VAULT",`store failed (dropped): ${a?.message||a}`)}let a_=T?.headers?.[r.SA]?.toLowerCase()!=="off",a0=(0,F.BI)(as,a_&&Y),a1=(0,F.fT)(a0);if(a1&&console.log(a1),a$?.vaulted>0){let a=a$.bytesBefore-a$.bytesAfter;(0,H.DL)(a$.vaulted,a),d?.info?.("VAULT",`externalized ${a$.vaulted} tool result(s), saved ${a}B`)}let a2={},a3=await (0,I.SI)(as,{enabled:a_&&ab,url:ac,model:aM,format:aZ,compressUserMessages:ad,diagnostics:a2}),a4=(0,I.Nv)(a3),a5=(0,I.O2)(a2);a4?(d?.info?.("HEADROOM",`${a4}${a5?` | ${a5}`:""}`),(0,I.cB)(a3,a2)&&d?.warn?.("HEADROOM",`reported token delta, but outbound JSON shrank <5%; provider may bill near-original payload | ${a5}`)):a_&&ab&&d?.warn?.("HEADROOM",`skipped: ${a2.reason||"compression unavailable"}${a2.endpoint?` (${a2.endpoint})`:""}`);let a6=(0,C.Ay)(as);a6>0&&d?.debug?.("TOOLCLEAN",`post-compression: stripped ${a6} orphaned tool result(s)`),a_&&ae&&af&&((0,D.p)(as,aZ,af),d?.debug?.("CAVEMAN",`${af} | ${aZ}`)),a_&&ag&&ah&&((0,E.U)(as,aZ,ah),d?.debug?.("PONYTAIL",`${ah} | ${aZ}`));let a7=null;if(a_&&ai){let a=await (0,J.H)(as,{enabled:!0,format:aZ,model:aM,minChars:aj,timeoutMs:ak,transform:al});a7=a.summary;let b=(0,J._)(a7);b?d?.info?.("PXPIPE",b):d?.debug?.("PXPIPE",`skipped: ${a7?.reason||"unknown"}`),a.body&&(as=a.body);try{am&&am({provider:ay,model:az,...a7})}catch{}}if(as&&"object"==typeof as)if(P.has(aZ)){let{stream:a,request:b,...c}=as;if(b&&"object"==typeof b){let{stream:a,...d}=b;as={...c,request:d}}else as=c}else as.stream!==aP&&(as={...as,stream:aP});aX&&"claude"===aW&&(0,i._W)(as);let a8=(0,u.SB)(ay);(0,t.uw)(az,ay,U,!0),aq||(0,t.E5)({model:az,provider:ay,connectionId:U,status:"PENDING"}).catch(()=>{});let a9=as.messages?.length||as.input?.length||as.contents?.length||as.request?.contents?.length||0;d?.debug?.("REQUEST",`${ay.toUpperCase()} | ${az} | ${a9} msgs`);let ba=(0,k.jd)({onDisconnect:a=>{(0,t.uw)(az,ay,U,!1),R&&R(a)},onError:()=>(0,t.uw)(az,ay,U,!1),log:d,provider:ay,model:az});if(ar)if(ar.aborted)try{ba.abort()}catch{}else ar.addEventListener("abort",()=>{try{ba.abort()}catch{}},{once:!0});let bb={connectionProxyEnabled:c?.providerSpecificData?.connectionProxyEnabled===!0,connectionProxyUrl:c?.providerSpecificData?.connectionProxyUrl||"",connectionNoProxy:c?.providerSpecificData?.connectionNoProxy||"",vercelRelayUrl:c?.providerSpecificData?.vercelRelayUrl||""};if(bb.vercelRelayUrl){let a=c?.connectionName||c?.connectionId||"unknown",b=c?.providerSpecificData?.connectionProxyPoolId||"none";d?.info?.("PROXY",`${ay.toUpperCase()} | ${az} | conn=${a} | pool=${b} | vercel-relay=${bb.vercelRelayUrl}`)}else if(bb.connectionProxyEnabled&&bb.connectionProxyUrl){let a=bb.connectionProxyUrl;try{let b=new URL(bb.connectionProxyUrl),c=b.hostname||"",d=b.port?`:${b.port}`:"",e=b.protocol||"http:";a=`${e}//${c}${d}`}catch{}let b=c?.providerSpecificData?.connectionProxyPoolId||"none",e=c?.connectionName||c?.connectionId||"unknown";d?.info?.("PROXY",`${ay.toUpperCase()} | ${az} | conn=${e} | pool=${b} | url=${a}`)}if(bb.connectionProxyEnabled&&bb.connectionNoProxy){let a=c?.connectionName||c?.connectionId||"unknown";d?.debug?.("PROXY",`${ay.toUpperCase()} | ${az} | conn=${a} | no_proxy=${bb.connectionNoProxy}`)}try{let a=await a8.execute({model:az,body:as,stream:aP,credentials:c,signal:ba.signal,log:d,proxyOptions:bb});au=a.response,av=a.url,aw=a.headers,ax=a.transformedBody,aV.logTargetRequest(av,aw,ax)}catch(c){if((0,t.uw)(az,ay,U,!1,!0),(0,t.ox)((0,v.$R)({provider:ay,model:az,connectionId:U,latency:{ttft:0,total:Date.now()-aA},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,v.Fo)(a,aP),providerRequest:as||null,response:{error:c.message||String(c),status:"AbortError"===c.name?499:502,thinking:null},status:"error",pxpipe:a7||void 0,rtk:a0||void 0})).catch(()=>{}),"AbortError"===c.name)return ba.handleError(c),(0,q.A1)(499,"Request aborted");let b=(0,q.lR)(c,ay,az,r.gx.BAD_GATEWAY);return console.log(`${j.lm.red}[ERROR] ${b}${j.lm.reset}`),(0,q.A1)(r.gx.BAD_GATEWAY,b)}if(!a8.noAuth&&(au.status===r.gx.UNAUTHORIZED||au.status===r.gx.FORBIDDEN))try{let a=await (0,l.qZ)(async()=>{let a=await (0,m.MF)(ay,c,()=>a8.refreshCredentials(c,d,bb));return a?.refreshToken&&a.refreshToken!==c.refreshToken&&(a.accessToken&&(c.accessToken=a.accessToken),c.refreshToken=a.refreshToken),a},3,d);if(a?.accessToken||a?.copilotToken){if(d?.info?.("TOKEN",`${ay.toUpperCase()} | refreshed`),Object.assign(c,a),N)try{await N(a)}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}try{let a=await a8.execute({model:az,body:as,stream:aP,credentials:c,signal:ba.signal,log:d,proxyOptions:bb});try{await au.body?.cancel?.()}catch{}au=a.response,av=a.url}catch{d?.warn?.("TOKEN",`${ay.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${ay.toUpperCase()} | refresh failed`)}catch(a){d?.warn?.("TOKEN",`${ay.toUpperCase()} | refresh threw: ${a.message}`)}if(!au.ok){(0,t.uw)(az,ay,U,!1,!0);let{statusCode:b,message:c,resetsAtMs:d}=await (0,q.zL)(au,a8);(0,t.ox)((0,v.$R)({provider:ay,model:az,connectionId:U,latency:{ttft:0,total:Date.now()-aA},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,v.Fo)(a,aP),providerRequest:ax||as||null,response:{error:c,status:b,thinking:null},status:"error",pxpipe:a7||void 0,rtk:a0||void 0})).catch(()=>{});let e=(0,q.lR)(Error(c),ay,az,b);return console.log(`${j.lm.red}[ERROR] ${e}${j.lm.reset}`),aV.logError(Error(c),ax||as),(0,q.A1)(b,e,d)}if("antigravity"===ay&&aP&&au.body){let a=async()=>{let a=await a8.execute({model:az,body:as,stream:aP,credentials:c,signal:ba.signal,log:d,proxyOptions:bb});if(!a.response.ok){let{statusCode:b,message:c}=await (0,q.zL)(a.response,a8);throw Error(`[${b}] ${c}`)}if(!a.response.body)throw Error("upstream returned no body");return a.response.body};au=new Response((0,z.gH)({body:au.body,reexecute:a,signal:ba.signal,log:d,onExhausted:(a,{upstreamError:b}={})=>{if(!S)return;let c=a8.parseRetryFromErrorMessage?.(b?.message||a);return S((0,q.lR)(Error(a),ay,az,r.gx.BAD_GATEWAY),c?Date.now()+c:void 0)}}),{status:au.status,headers:au.headers})}let bc=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`,bd={provider:ay,model:az,body:a,stream:aP,translatedBody:as,finalBody:ax,requestStartTime:aA,connectionId:U,clientKeyId:W,clientRawRequest:T,onRequestSuccess:Q,requestId:bc,pxpipe:a7||void 0},be=a=>{aq||(0,t.E5)({model:az,provider:ay,connectionId:U,...a}).catch(()=>{})},bf=()=>(0,t.uw)(az,ay,U,!1);if(!aN&&aO){let a=await (0,w.I)({...bd,providerResponse:au,sourceFormat:aB,targetFormat:aK,trackDone:bf,appendLog:be});if(a)return ba.handleComplete(),a}if(!aP){let a=await (0,x.N)({...bd,providerResponse:au,sourceFormat:aB,targetFormat:aK,reqLogger:aV,toolNameMap:at,trackDone:bf,appendLog:be});return ba.handleComplete(),a}let{onStreamComplete:bg,streamDetailId:bh}=(0,y.$)({...bd});return(0,y.M)({...bd,providerResponse:au,sourceFormat:aB,targetFormat:aK,userAgent:V,reqLogger:aV,toolNameMap:at,streamController:ba,onStreamComplete:bg,streamDetailId:bh})}d()}catch(a){d(a)}})},37208:(a,b,c)=>{c.d(b,{p:()=>n});var d=c(17429);let e="Code blocks, file paths, commands, errors, URLs: keep exact. Security warnings, irreversible action confirmations, multi-step ordered sequences: write normal. Resume terse style after.",f='Not: "Sure! I\'d be happy to help you with that. The issue you\'re experiencing is likely caused by..." Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"',g="Auto-Clarity: drop caveman for security warnings, irreversible actions, multi-step sequences where fragment ambiguity risks misread, or when user repeats a question. Resume after the clear part.",h="ACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure.",i="No invented abbreviations. Standard well-known tech acronyms (DB, API, HTTP, URL, JSON, ID, OS, CPU) OK. Names of code symbols, function names, API names, error strings: keep verbatim.",j="Preserve the user's dominant language. User wrote Vietnamese, reply Vietnamese. User wrote English, reply English. Wenyan/classical-Chinese levels override this language-preservation rule. Code identifiers, error strings, file paths, commands: keep in their original form regardless of language.",k='No self-reference. Do not name or announce the style (no "caveman mode", no "me caveman think", no "compressed mode active"). Just respond.',l='No decorative emoji. No narrating tool calls ("I will now search", "I used X to find Y"). No status phrases ("Sure!", "Of course!", "I\'d be happy to"). No causal arrow shorthand ("A -> B -> fails"). State the thing, the action, the reason. Then next step.',m={lite:["Respond tersely. Keep grammar and full sentences but drop filler, hedging and pleasantries (just/really/basically/sure/of course/I'd be happy to). Pattern: state the thing, the action, the reason. Then next step.",f,e,g,h,i,j,k,l].join(" "),full:["Respond like terse caveman. All technical substance stay exact, only fluff die. Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries, hedging. Fragments OK. Short synonyms (big not extensive, fix not implement a solution for). Pattern: [thing] [action] [reason]. [next step].",f,e,g,h,i,j,k,l].join(" "),ultra:["Respond ultra-terse. Maximum compression. Telegraphic. Strip conjunctions. One word when one word enough. Pattern: [thing] [action] [reason]. [next step].",f,e,g,h,i,j,k,l].join(" "),"wenyan-lite":["Respond semi-classical. Drop filler/hedging but keep grammar structure, classical register. Use classical Chinese sentence patterns where natural. Keep English for technical terms.",f,e,g,h,i,j,k,l].join(" "),wenyan:["Respond classical Chinese (文言文). Maximum classical terseness. 80-90% character reduction. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其). Keep English for code, commands, function names, API names, error strings.",f,e,g,h,i,j,k,l].join(" "),"wenyan-ultra":["Respond extreme classical compression (文言文 ultra). Maximum compression, ultra terse. Same classical rules as wenyan-full but even more compressed. One classical particle per clause.",f,e,g,h,i,j,k,l].join(" ")};function n(a,b,c){(0,d.J)(a,b,m[c])}},39232:(a,b,c)=>{c.d(b,{Nv:()=>l,O2:()=>m,SI:()=>k,cB:()=>n});var d=c(37377),e=c(29229),f=c(97579);function g(a){try{return new TextEncoder().encode(JSON.stringify(a)||"").length}catch{return 0}}function h(a){let b=Array.isArray(a?.messages)?a.messages:Array.isArray(a?.input)?a.input:null,c=b?.filter(a=>a?.role==="tool"||a?.role==="function"||a?.tool_calls?.length||a?.content?.some?.(a=>a?.type==="tool_use"||a?.type==="tool_result"))||[];return{bodyBytes:g(a),messageBytes:b?g(b):0,toolSchemaBytes:g(a?.tools||[]),toolHistoryBytes:g(c)}}function i(a,b){a&&!a.reason&&(a.reason=b)}async function j(a,b,c,d,e,f){let g,h=function(a){try{let b=new URL(a);return b.pathname=`${b.pathname.replace(/\/$/,"")}/v1/compress`,b.hash="",b.toString()}catch{let[b,c=""]=String(a).replace(/#.*$/,"").split("?",2),d=`${b.replace(/\/$/,"")}/v1/compress`;return c?`${d}?${c}`:d}}(a);f.endpoint=function(a){try{let b=new URL(a);return b.username="",b.password="",b.search="",b.hash="",b.toString()}catch{return String(a).replace(/\/\/[^/@\s]+@/,"//").replace(/[?#].*$/,"")}}(h);let j={messages:b,model:c};e&&(j.config={compress_user_messages:!0});try{g=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(j),signal:AbortSignal.timeout(d)})}catch(d){var k;let a,b,c;return i(f,`request failed: ${(k=d,a=k?.cause,b=a?.code||k?.code,c=String(a?.message||k?.message||String(k)).replace(/\/\/[^/@\s]+@/g,"//").replace(/(https?:\/\/[^\s?#]+)[?#][^\s)]*/g,"$1"),b?`${b}: ${c}`:c)}`),null}if(!g.ok)return i(f,`proxy returned HTTP ${g.status}`),null;let l=await g.json();return Array.isArray(l?.messages)?l:(i(f,"proxy response missing messages[]"),null)}async function k(a,{enabled:b,url:c,model:g,format:l,compressUserMessages:m,timeoutMs:n=3e3,diagnostics:o=null}={}){if(!b)return i(o,"disabled"),null;if(!c)return i(o,"missing proxy URL"),null;if(!a)return i(o,"missing request body"),null;try{if(o&&(o.before=h(a)),"claude"===l){let b=(0,d.t)(g,a,!1);if(!Array.isArray(b?.messages))return i(o,"Claude request did not translate to messages[]"),null;let f=await j(c,b.messages,g,n,m,o||{});if(!f)return null;let k=(0,e.p)(g,{...b,messages:f.messages},!1);return Array.isArray(k?.messages)&&(a.messages=k.messages),k?.system!==void 0&&(a.system=k.system),o&&(o.after=h(a)),f}if("openai-responses"===l){if(Array.isArray(a?.input)&&a.input.some(a=>!(!a||"object"!=typeof a||Array.isArray(a))&&"string"==typeof a.type&&"message"!==a.type))return i(o,"skipped: openai-responses tool/reasoning input is not safe to compress"),null;let b=(0,f.Z)(g,a,!1);if(!Array.isArray(b?.messages))return null;let d=await j(c,b.messages,g,n,m,o||{});if(!d)return null;let e=(0,f.h)(g,{...b,input:void 0,messages:d.messages},!1);return Array.isArray(e?.input)&&(a.input=e.input),o&&(o.after=h(a)),d}let b=Array.isArray(a.messages)?"messages":Array.isArray(a.input)?"input":null;if(!b)return i(o,`unsupported ${l||"unknown"} request shape`),null;let k=await j(c,a[b],g,n,m,o||{});if(!k)return null;return a[b]=k.messages,o&&(o.after=h(a)),k}catch(a){return i(o,`unexpected error: ${a?.message||String(a)}`),null}}function l(a){if(!a)return null;let b=a.tokens_before||0,c=a.tokens_after||0,d=a.tokens_saved||0,e=b>0?(d/b*100).toFixed(1):"0";return`reported token delta=${d} before=${b}${c?` after=${c}`:""} (${e}%)`.trim()}function m(a){let b=a?.before,c=a?.after;if(!b||!c)return"";let d=b.bodyBytes>0?((b.bodyBytes-c.bodyBytes)/b.bodyBytes*100).toFixed(1):"0.0";return`body=${b.bodyBytes}B→${c.bodyBytes}B messages=${b.messageBytes}B→${c.messageBytes}B tools=${b.toolSchemaBytes||0}B→${c.toolSchemaBytes||0}B toolHistory=${b.toolHistoryBytes||0}B→${c.toolHistoryBytes||0}B effective=${d}%`}function n(a,b,c=.05){if(!a?.tokens_saved||a.tokens_saved<=0)return!1;let d=b?.before?.bodyBytes||0,e=b?.after?.bodyBytes||0;return!(d<=0)&&!(e<=0)&&e>=d*(1-c)}},48330:(a,b,c)=>{c.d(b,{Hr:()=>j,nu:()=>h,u9:()=>k,yx:()=>g});var d=c(19956),e=c(45894);let f=new Set(["response.completed","response.done","response.failed","error"]);function g(a,b){return a||(b&&"string"==typeof b.type?b.type:null)}function h(a,b){let c=g(a,b);if(f.has(c))return!0;let d=b?.response?.status;return"completed"===d||"failed"===d}let i=new TextEncoder;function j(){return i.encode(`${k()}data: [DONE]
|
|
67
67
|
|
|
68
68
|
`)}function k(){return(0,e.v8)({event:"response.failed",data:{type:"response.failed",response:{id:`resp_${Date.now()}`,status:"failed",error:{type:"stream_error",code:"stream_disconnected",message:"stream closed before response.completed"}}}},d.h.OPENAI_RESPONSES)}},49612:(a,b,c)=>{c.d(b,{g:()=>k,p:()=>l});var d=c(19956),e=c(98173),f=c(57642);function g(a){if(!a)return{};if("object"==typeof a)return a;try{return JSON.parse(a)}catch{return{}}}function h(a){return a?.choices?.[0]||{}}function i(a){return h(a).message||{}}function j(a){let b=i(a).tool_calls;return Array.isArray(b)?b:[]}function k(a,b){let c=Array.isArray(a?.output)?a.output:[],d=c.filter(a=>a?.type==="reasoning").flatMap(a=>Array.isArray(a.summary)?a.summary:[]).map(a=>a?.text||"").join(""),e=c.filter(a=>a?.type==="message"),f=[...e].reverse().find(a=>(Array.isArray(a.content)?a.content:[]).some(a=>"string"==typeof a.text&&a.text.length>0))||e[e.length-1]||null,g=(Array.isArray(f?.content)?f.content:[]).map(a=>("output_text"===a.type||"string"==typeof a.text)&&a.text||"").join(""),h=c.filter(a=>a?.type==="function_call").map((a,b)=>({id:a.call_id||`call_${a.name||"tool"}_${b}`,type:"function",function:{name:a.name||"",arguments:"string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments||{})}})),i=a?.usage||{},j={role:"assistant",content:g||(h.length>0?null:"")};d&&(j.reasoning_content=d),h.length>0&&(j.tool_calls=h);let k=a?.status==="completed"||a?.status==="done",l=h.length>0?"tool_calls":k?"stop":a?.status||"stop";return{id:a?.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:a?.created_at||Math.floor(Date.now()/1e3),model:a?.model||b||"unknown",choices:[{index:0,message:j,finish_reason:l}],usage:{prompt_tokens:i.input_tokens||i.prompt_tokens||0,completion_tokens:i.output_tokens||i.completion_tokens||0,total_tokens:i.total_tokens||(i.input_tokens||i.prompt_tokens||0)+(i.output_tokens||i.completion_tokens||0)}}}function l(a,b){switch(b){case d.h.CLAUDE:return function(a){if(!a?.choices?.[0])return a;let b=h(a),c=i(a),f=[],k=c.reasoning_content||c.provider_specific_fields?.reasoning_content||"";for(let b of(k&&f.push({type:"thinking",thinking:k}),"string"==typeof c.content&&c.content.length>0&&f.push({type:"text",text:c.content}),j(a))){let a=b.function||{};f.push({type:"tool_use",id:b.id||`toolu_${Date.now()}_${f.length}`,name:a.name||b.name||"",input:g(a.arguments||b.arguments)})}0===f.length&&f.push({type:"text",text:""});let l=a.usage||{};return{id:String(a.id||`msg_${Date.now()}`).replace(/^chatcmpl-/,""),type:"message",role:"assistant",model:a.model||"unknown",content:f,stop_reason:(0,e.Q)(b.finish_reason,d.h.CLAUDE),stop_sequence:null,usage:{input_tokens:l.prompt_tokens||l.input_tokens||0,output_tokens:l.completion_tokens||l.output_tokens||0}}}(a);case d.h.GEMINI:case d.h.GEMINI_CLI:case d.h.ANTIGRAVITY:case d.h.VERTEX:return function(a){if(!a?.choices?.[0])return a;let b=i(a),c=a.usage||{},d=[],e=b.reasoning_content||b.provider_specific_fields?.reasoning_content||"";for(let c of(e&&d.push({text:e,thought:!0}),"string"==typeof b.content&&b.content.length>0&&d.push({text:b.content}),j(a))){let a=c.function||{};d.push({functionCall:{name:a.name||c.name||"",args:g(a.arguments||c.arguments)}})}return 0===d.length&&d.push({text:""}),{response:{candidates:[{content:{role:"model",parts:d},finishReason:function(a){switch(a){case f.bC.LENGTH:return f.a_.MAX_TOKENS;case f.bC.CONTENT_FILTER:return f.a_.SAFETY;default:return f.a_.STOP}}(h(a).finish_reason),index:0}],usageMetadata:{promptTokenCount:c.prompt_tokens||c.input_tokens||0,candidatesTokenCount:c.completion_tokens||c.output_tokens||0,totalTokenCount:c.total_tokens||(c.prompt_tokens||0)+(c.completion_tokens||0)},modelVersion:a.model||"unknown",responseId:a.id||`resp_${Date.now()}`}}}(a);case d.h.OLLAMA:return function(a){if(!a?.choices?.[0])return a;let b=h(a),c=i(a),d={role:"assistant",content:"string"==typeof c.content?c.content:""};c.reasoning_content&&(d.thinking=c.reasoning_content);let e=j(a).map(a=>{let b=a.function||{};return{id:a.id,function:{name:b.name||a.name||"",arguments:g(b.arguments||a.arguments)}}});e.length>0&&(d.tool_calls=e);let f=a.usage||{};return{model:a.model||"unknown",created_at:a.created?new Date(1e3*a.created).toISOString():new Date().toISOString(),message:d,done:!0,done_reason:b.finish_reason||"stop",prompt_eval_count:f.prompt_tokens||f.input_tokens||0,eval_count:f.completion_tokens||f.output_tokens||0}}(a);case d.h.OPENAI_RESPONSES:case d.h.OPENAI_RESPONSE:return function(a){if(!a?.choices?.[0])return a;let b=i(a),c=a.usage||{},d=[],e=0,f=b.reasoning_content||b.provider_specific_fields?.reasoning_content||"";f&&(d.push({type:"reasoning",id:`rs_${a.id||Date.now()}_${e}`,summary:[{type:"summary_text",text:f}]}),e++);let g="string"==typeof b.content?b.content:"";g&&(d.push({type:"message",id:`msg_${a.id||Date.now()}_${e}`,role:"assistant",content:[{type:"output_text",text:g,annotations:[],logprobs:[]}]}),e++);let k=j(a);if(k.length>0)for(let a of k){let b=a.function||{},c=a.id||`call_${b.name||"tool"}_${e}`;d.push({type:"function_call",id:`fc_${c}`,call_id:c,name:b.name||a.name||"",arguments:"string"==typeof b.arguments?b.arguments:JSON.stringify(b.arguments||{})}),e++}else g||f||d.push({type:"message",id:`msg_${a.id||Date.now()}_${e}`,role:"assistant",content:[{type:"output_text",text:"",annotations:[],logprobs:[]}]});let l=h(a).finish_reason||"stop";return{id:a.id?`resp_${a.id}`:`resp_${Date.now()}`,object:"response",created_at:a.created||Math.floor(Date.now()/1e3),status:"stop"===l||"tool_calls"===l?"completed":l,output:d,usage:{input_tokens:c.prompt_tokens||c.input_tokens||0,output_tokens:c.completion_tokens||c.output_tokens||0,total_tokens:c.total_tokens||(c.prompt_tokens||0)+(c.completion_tokens||0)}}}(a);default:return a}}},54070:(a,b,c)=>{c.d(b,{DL:()=>g,VS:()=>h,_s:()=>i});let d=global.__vaultStats??={entries:0,hits:0,bytesSaved:0};function e(a){try{let b=Number(a);if(!Number.isFinite(b)||b<0)return 0;return Math.trunc(b)}catch{return 0}}function f(a,b){try{let c=e(d[a])+e(b);d[a]=Number.isSafeInteger(c)?c:Number.MAX_SAFE_INTEGER}catch{}}function g(a,b){try{f("entries",a),f("bytesSaved",b)}catch{}}function h(a=1){try{f("hits",a)}catch{}}function i(){try{return{entries:e(d.entries),hits:e(d.hits),bytesSaved:e(d.bytesSaved)}}catch{return{entries:0,hits:0,bytesSaved:0}}}},61229:(a,b,c)=>{c.d(b,{$:()=>p,M:()=>o});var d=c(19956),e=c(48664),f=c(6755),g=c(15575),h=c(4630),i=c(60290),j=c(48330),k=c(29461),l=c(12407),m=c(4905);let n={[d.h.OPENAI_RESPONSES]:d.h.OPENAI_RESPONSES,[d.h.CLAUDE]:d.h.CLAUDE,[d.h.ANTIGRAVITY]:d.h.ANTIGRAVITY,[d.h.GEMINI]:d.h.ANTIGRAVITY,[d.h.GEMINI_CLI]:d.h.ANTIGRAVITY};async function o({providerResponse:a,provider:b,model:c,sourceFormat:p,targetFormat:q,userAgent:r,body:s,stream:t,translatedBody:u,finalBody:v,requestStartTime:w,connectionId:x,clientKeyId:y,requestId:z,clientRawRequest:A,onRequestSuccess:B,reqLogger:C,toolNameMap:D,streamController:E,onStreamComplete:F,streamDetailId:G,pxpipe:H}){let I=(a.headers.get("content-type")||"").toLowerCase();if((I.includes("application/x-ndjson")||I.includes("application/ndjson"))&&a.body){let b,c,d,e;a=new Response(a.body.pipeThrough((b=new TextDecoder,c=new TextEncoder,d="",new TransformStream({transform(a,e){let f=(d+=b.decode(a,{stream:!0})).split("\n");for(let a of(d=f.pop()||"",f)){let b=a.trim();if(b){if(b.startsWith("data:")||b.startsWith("event:")){e.enqueue(c.encode(a+"\n"));continue}try{JSON.parse(b),e.enqueue(c.encode(`data: ${b}
|
|
69
69
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=3735,exports.ids=[3735],exports.modules={7803:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>h,error:()=>k,info:()=>i,maskKey:()=>o,request:()=>l,response:()=>m,stream:()=>n,warn:()=>j});let d={DEBUG:0,INFO:1,WARN:2,ERROR:3},e=d[process.env.LOG_LEVEL?.toUpperCase?.()]??d.INFO;function f(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}function g(a){if(!a)return"";if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}function h(a,b,c){if(e<=d.DEBUG){let d=c?` ${g(c)}`:"";console.log(`[${f()}] 🔍 [${a}] ${b}${d}`)}}function i(a,b,c){if(e<=d.INFO){let d=c?` ${g(c)}`:"";console.log(`[${f()}] ℹ️ [${a}] ${b}${d}`)}}function j(a,b,c){e<=d.WARN&&c&&g(c)}function k(a,b,c){if(e<=d.ERROR){let d=c?` ${g(c)}`:"";console.log(`[${f()}] ❌ [${a}] ${b}${d}`)}}function l(a,b,c){let d=c?` ${g(c)}`:"";console.log(`\x1b[36m[${f()}] 📥 ${a} ${b}${d}\x1b[0m`)}function m(a,b,c){let d=c?` ${g(c)}`:"";console.log(`[${f()}] ${a<400?"\uD83D\uDCE4":"\uD83D\uDCA5"} ${a} (${b}ms)${d}`)}function n(a,b){let c=b?` ${g(b)}`:"";console.log(`[${f()}] 🌊 [STREAM] ${a}${c}`)}function o(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}},15186:(a,b,c)=>{c.d(b,{Ou:()=>k,eG:()=>j});var d=c(28730),e=c(4630),f=c(46052);let g=new Map,h=new Map,i=null;async function j(a,b,c="gemini-cli",d=null){if(!a||!b)return null;let e=g.get(a);if(e&&Date.now()-e.fetchedAt<36e5)return e.projectId;if(h.has(a))return h.get(a).promise;let f=new AbortController,i=(async()=>{try{let e=await l(b,f.signal,c,d);if(e)return g.set(a,{projectId:e,fetchedAt:Date.now()}),e;return console.warn("[ProjectId] could not fetch projectId for connection",a.slice(0,8)),null}catch(a){return console.warn(`[ProjectId] Error fetching project ID: ${a.message}`),null}finally{h.delete(a)}})();return h.set(a,{promise:i,controller:f,startedAt:Date.now()}),i}function k(a){g.delete(a)}async function l(a,b,c,g){let h=e.xq[c]||e.xq["gemini-cli"],i=await (0,f.Fm)(d.nZ.loadCodeAssist,{method:"POST",headers:{...d.Ic,Authorization:`Bearer ${a}`},body:JSON.stringify({metadata:d.zv}),signal:b,identity:h.identity,provider:c,format:h.format},g);if(!i.ok){let a=await i.text().catch(()=>"");throw Error(`loadCodeAssist failed: HTTP ${i.status} ${a.slice(0,200)}`)}let j=await i.json(),k=function(a){if(!a)return null;if("string"==typeof a.cloudaicompanionProject){let b=a.cloudaicompanionProject.trim();if(b)return b}if(a.cloudaicompanionProject&&"object"==typeof a.cloudaicompanionProject){let b=a.cloudaicompanionProject.id;if("string"==typeof b&&b.trim())return b.trim()}return null}(j);if(k)return k;let l="legacy-tier";if(Array.isArray(j.allowedTiers)){for(let a of j.allowedTiers)if(a&&"object"==typeof a&&!0===a.isDefault&&a.id&&"string"==typeof a.id&&a.id.trim()){l=a.id.trim();break}}return m(a,l,b,c,g)}async function m(a,b,c,g,h){console.log(`[ProjectId] Onboarding user with tier: ${b}`);let i={tierId:b,metadata:d.zv};for(let b=1;b<=5&&!c?.aborted;b++){let j=new AbortController,k=setTimeout(()=>j.abort(),3e4),l=()=>j.abort();c?.addEventListener("abort",l);try{let c=e.xq[g]||e.xq["gemini-cli"],l=await (0,f.Fm)(d.nZ.onboardUser,{method:"POST",headers:{...d.Ic,Authorization:`Bearer ${a}`},body:JSON.stringify(i),signal:j.signal,identity:c.identity,provider:g,format:c.format},h);if(clearTimeout(k),!l.ok){let a=await l.text().catch(()=>"");throw Error(`onboardUser HTTP ${l.status}: ${a.slice(0,200)}`)}let m=await l.json();if(!0===m.done){let a=function(a){if(!a?.response)return null;let b=a.response.cloudaicompanionProject;if("string"==typeof b){let a=b.trim();if(a)return a}if(b&&"object"==typeof b){let a=b.id;if("string"==typeof a&&a.trim())return a.trim()}return null}(m);if(a)return console.log(`[ProjectId] Successfully onboarded, project ID: ${a}`),a;throw Error("onboardUser done but no project_id in response")}console.log(`[ProjectId] Onboard attempt ${b}/5: not done yet, waiting...`),await new Promise(a=>setTimeout(a,2e3))}catch(a){if(clearTimeout(k),"AbortError"===a.name){if(console.warn(`[ProjectId] onboardUser attempt ${b} aborted (timeout or connection removed)`),c?.aborted)return null;continue}if(5===b)return console.warn(`[ProjectId] onboardUser failed after 5 attempts: ${a.message}`),null;console.warn(`[ProjectId] onboardUser attempt ${b} failed: ${a.message}, retrying...`),await new Promise(a=>setTimeout(a,2e3))}finally{clearTimeout(k),c?.removeEventListener("abort",l)}}return null}i=setInterval(()=>{try{let a=Date.now();for(let[b,c]of g)(!c||a-c.fetchedAt>=36e5)&&g.delete(b);for(let[b,c]of h){if(!c||"number"!=typeof c.startedAt){h.delete(b);continue}if(a-c.startedAt>12e4){try{c.controller.abort()}catch(a){}h.delete(b)}}}catch(a){console.warn("[ProjectId] cleanup sweep error:",a?.message??a)}},6e5),i?.unref?.()},38775:(a,b,c)=>{c.d(b,{getComboModels:()=>k,mA:()=>j});var d=c(15717),e=c(66451),f=c(58976),g=c(68393);let h={xmtp:"xiaomi-tokenplan","xiaomi-tokenplan":"xiaomi-tokenplan"},i=new Set(Object.keys(h));for(let a of f.A)for(let b of(i.add(a.id),a.alias&&i.add(a.alias),a.aliases||[]))i.add(b);async function j(a){let b,c=(0,g.iO)(a)||a,f=(b=(0,e.Xh)(c),b?.providerAlias&&h[b.providerAlias]?{...b,provider:h[b.providerAlias]}:b);if(!f.isAlias){if(!i.has(f.providerAlias)){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===f.providerAlias);if(a)return{provider:a.id,model:f.model};let b=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===f.providerAlias);if(b)return{provider:b.id,model:f.model};let c=(await (0,d.Fh)({type:"custom-embedding"})).find(a=>a.prefix===f.providerAlias);if(c)return{provider:c.id,model:f.model}}return{provider:f.provider,model:f.model}}return await (0,d.Dj)(f.model)?{provider:null,model:f.model}:(0,e.js)(c,d.OM)}async function k(a){let b=(0,g.iO)(a)||a;if(b.includes("/"))return null;let c=await (0,d.Dj)(b);return c&&c.models&&c.models.length>0?c.models:null}},39326:(a,b,c)=>{function d(a){return null==a?"":String(a).trim()}async function e(a={}){try{let b=function(a={}){let b=a?.connectionProxyEnabled===!0,c=d(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:d(a?.connectionNoProxy)}}(a);if(b.connectionProxyEnabled&&b.connectionProxyUrl)return{source:"legacy",proxyPoolId:null,proxyPool:null,...b,strictProxy:!1,vercelRelayUrl:""};return{source:"none",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:b.connectionNoProxy||"",strictProxy:!1,vercelRelayUrl:""}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1,vercelRelayUrl:""}}}c.d(b,{B:()=>e})},40863:(a,b,c)=>{var d=c(12407),e=c(15717),f=c(2142),g=c(38775),h=c(34772);let i=!1;i=!0,(0,d.qd)({getSettings:e.mt,trackPendingRequest:e.uw,appendRequestLog:e.E5,saveRequestDetail:e.ox,saveRequestUsage:e.sZ,getRoutingEvents:f.Kx,getClusterWorkerStats:f.GU,getPromotedLearningVersion:f.p3,createLearningVersion:f.Hr,countRoutingEvents:f.f8,listCombosWithRoutingEvents:f.dC,getLastScheduledLearnAt:f.HP,getClusterLatencyP50:f._6,getComboModels:g.getComboModels,getVaultEntry:h.Bl,putVaultEntry:h.M8,searchVault:h.$s,cleanupExpiredVault:h.ui,buildExternalIdpRefreshParams:async(...a)=>(await c.e(8080).then(c.bind(c,18080))).buildExternalIdpRefreshParams(...a),createXaiService:async()=>new(await Promise.all([c.e(9091),c.e(7557)]).then(c.bind(c,37557))).XaiService,fetchKiroProfileArn:async(...a)=>(await Promise.all([c.e(7774),c.e(4646),c.e(3904),c.e(6406),c.e(9261),c.e(1937),c.e(8400),c.e(369),c.e(159),c.e(6347)]).then(c.bind(c,74177))).fetchKiroProfileArn(...a)})},64254:(a,b,c)=>{c.d(b,{u:()=>n});var d=c(79748),e=c(21820),f=c(33873),g=c(79646);let h=(0,c(28354).promisify)(g.execFile),i=["cursorAuth/accessToken","cursorAuth/token"],j=["storage.serviceMachineId","storage.machineId","telemetry.machineId"];function k(a){if("string"!=typeof a)return a;try{let b=JSON.parse(a);return"string"==typeof b?b:a}catch{return a}}async function l(a){let{default:b}=await Promise.resolve().then(c.t.bind(c,87550,23)),d=new b(a,{readonly:!0,fileMustExist:!0});try{let a=[...i,...j],b=a.map(()=>"?").join(", "),c=d.prepare(`SELECT key, value FROM itemTable WHERE key IN (${b})`).all(...a),e=new Map(c.map(({key:a,value:b})=>[a,k(b)])),f=i.map(a=>e.get(a)).find(Boolean)||null,g=j.map(a=>e.get(a)).find(Boolean)||null;if(!f||!g)for(let{key:a,value:b}of d.prepare("SELECT key, value FROM itemTable WHERE key LIKE ? OR key LIKE ?").all("%accessToken%","%machineId%")){let c=k(b);!f&&/access.?token/i.test(a)&&(f=c),!g&&/machine.?id/i.test(a)&&(g=c)}return{accessToken:f,machineId:g}}finally{d.close()}}async function m(a){let b=async b=>{let{stdout:c}=await h("sqlite3",[a,b],{timeout:1e4});return c.trim()};try{await b("SELECT 1 FROM itemTable LIMIT 1")}catch{return{accessToken:null,machineId:null,opened:!1}}let c=null;for(let a of i)try{let d=await b(`SELECT value FROM itemTable WHERE key='${a}' LIMIT 1`);if(d){c=k(d.trim());break}}catch{}let d=null;for(let a of j)try{let c=await b(`SELECT value FROM itemTable WHERE key='${a}' LIMIT 1`);if(c){d=k(c.trim());break}}catch{}return{accessToken:c,machineId:d,opened:!0}}async function n(a={}){let b=a.platform||process.platform;if(!["darwin","win32","linux"].includes(b))return{found:!1,error:"Unsupported platform"};let c=function(a=process.platform){let b=(0,e.homedir)();if("darwin"===a)return[(0,f.join)(b,"Library/Application Support/Cursor/User/globalStorage/state.vscdb"),(0,f.join)(b,"Library/Application Support/Cursor - Insiders/User/globalStorage/state.vscdb")];if("win32"===a){let a=process.env.APPDATA||(0,f.join)(b,"AppData","Roaming"),c=process.env.LOCALAPPDATA||(0,f.join)(b,"AppData","Local");return[(0,f.join)(a,"Cursor","User","globalStorage","state.vscdb"),(0,f.join)(a,"Cursor - Insiders","User","globalStorage","state.vscdb"),(0,f.join)(c,"Cursor","User","globalStorage","state.vscdb"),(0,f.join)(c,"Programs","Cursor","User","globalStorage","state.vscdb")]}return[(0,f.join)(b,".config/Cursor/User/globalStorage/state.vscdb"),(0,f.join)(b,".config/cursor/User/globalStorage/state.vscdb")]}(b),g=null;for(let a of c)try{await (0,d.access)(a,d.constants.R_OK),g=a;break}catch{}if(!g){let a="darwin"===b?"known macOS locations":"known locations";return{found:!1,error:`Cursor database not found in ${a}:
|
|
1
|
+
"use strict";exports.id=3735,exports.ids=[3735],exports.modules={7803:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>h,error:()=>k,info:()=>i,maskKey:()=>o,request:()=>l,response:()=>m,stream:()=>n,warn:()=>j});let d={DEBUG:0,INFO:1,WARN:2,ERROR:3},e=d[process.env.LOG_LEVEL?.toUpperCase?.()]??d.INFO;function f(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}function g(a){if(!a)return"";if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}function h(a,b,c){if(e<=d.DEBUG){let d=c?` ${g(c)}`:"";console.log(`[${f()}] 🔍 [${a}] ${b}${d}`)}}function i(a,b,c){if(e<=d.INFO){let d=c?` ${g(c)}`:"";console.log(`[${f()}] ℹ️ [${a}] ${b}${d}`)}}function j(a,b,c){e<=d.WARN&&c&&g(c)}function k(a,b,c){if(e<=d.ERROR){let d=c?` ${g(c)}`:"";console.log(`[${f()}] ❌ [${a}] ${b}${d}`)}}function l(a,b,c){let d=c?` ${g(c)}`:"";console.log(`\x1b[36m[${f()}] 📥 ${a} ${b}${d}\x1b[0m`)}function m(a,b,c){let d=c?` ${g(c)}`:"";console.log(`[${f()}] ${a<400?"\uD83D\uDCE4":"\uD83D\uDCA5"} ${a} (${b}ms)${d}`)}function n(a,b){let c=b?` ${g(b)}`:"";console.log(`[${f()}] 🌊 [STREAM] ${a}${c}`)}function o(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}},15186:(a,b,c)=>{c.d(b,{Ou:()=>k,eG:()=>j});var d=c(28730),e=c(4630),f=c(46052);let g=new Map,h=new Map,i=null;async function j(a,b,c="gemini-cli",d=null){if(!a||!b)return null;let e=g.get(a);if(e&&Date.now()-e.fetchedAt<36e5)return e.projectId;if(h.has(a))return h.get(a).promise;let f=new AbortController,i=(async()=>{try{let e=await l(b,f.signal,c,d);if(e)return g.set(a,{projectId:e,fetchedAt:Date.now()}),e;return console.warn("[ProjectId] could not fetch projectId for connection",a.slice(0,8)),null}catch(a){return console.warn(`[ProjectId] Error fetching project ID: ${a.message}`),null}finally{h.delete(a)}})();return h.set(a,{promise:i,controller:f,startedAt:Date.now()}),i}function k(a){g.delete(a)}async function l(a,b,c,g){let h=e.xq[c]||e.xq["gemini-cli"],i=await (0,f.Fm)(d.nZ.loadCodeAssist,{method:"POST",headers:{...d.Ic,Authorization:`Bearer ${a}`},body:JSON.stringify({metadata:d.zv}),signal:b,identity:h.identity,provider:c,format:h.format},g);if(!i.ok){let a=await i.text().catch(()=>"");throw Error(`loadCodeAssist failed: HTTP ${i.status} ${a.slice(0,200)}`)}let j=await i.json(),k=function(a){if(!a)return null;if("string"==typeof a.cloudaicompanionProject){let b=a.cloudaicompanionProject.trim();if(b)return b}if(a.cloudaicompanionProject&&"object"==typeof a.cloudaicompanionProject){let b=a.cloudaicompanionProject.id;if("string"==typeof b&&b.trim())return b.trim()}return null}(j);if(k)return k;let l="legacy-tier";if(Array.isArray(j.allowedTiers)){for(let a of j.allowedTiers)if(a&&"object"==typeof a&&!0===a.isDefault&&a.id&&"string"==typeof a.id&&a.id.trim()){l=a.id.trim();break}}return m(a,l,b,c,g)}async function m(a,b,c,g,h){console.log(`[ProjectId] Onboarding user with tier: ${b}`);let i={tierId:b,metadata:d.zv};for(let b=1;b<=5&&!c?.aborted;b++){let j=new AbortController,k=setTimeout(()=>j.abort(),3e4),l=()=>j.abort();c?.addEventListener("abort",l);try{let c=e.xq[g]||e.xq["gemini-cli"],l=await (0,f.Fm)(d.nZ.onboardUser,{method:"POST",headers:{...d.Ic,Authorization:`Bearer ${a}`},body:JSON.stringify(i),signal:j.signal,identity:c.identity,provider:g,format:c.format},h);if(clearTimeout(k),!l.ok){let a=await l.text().catch(()=>"");throw Error(`onboardUser HTTP ${l.status}: ${a.slice(0,200)}`)}let m=await l.json();if(!0===m.done){let a=function(a){if(!a?.response)return null;let b=a.response.cloudaicompanionProject;if("string"==typeof b){let a=b.trim();if(a)return a}if(b&&"object"==typeof b){let a=b.id;if("string"==typeof a&&a.trim())return a.trim()}return null}(m);if(a)return console.log(`[ProjectId] Successfully onboarded, project ID: ${a}`),a;throw Error("onboardUser done but no project_id in response")}console.log(`[ProjectId] Onboard attempt ${b}/5: not done yet, waiting...`),await new Promise(a=>setTimeout(a,2e3))}catch(a){if(clearTimeout(k),"AbortError"===a.name){if(console.warn(`[ProjectId] onboardUser attempt ${b} aborted (timeout or connection removed)`),c?.aborted)return null;continue}if(5===b)return console.warn(`[ProjectId] onboardUser failed after 5 attempts: ${a.message}`),null;console.warn(`[ProjectId] onboardUser attempt ${b} failed: ${a.message}, retrying...`),await new Promise(a=>setTimeout(a,2e3))}finally{clearTimeout(k),c?.removeEventListener("abort",l)}}return null}i=setInterval(()=>{try{let a=Date.now();for(let[b,c]of g)(!c||a-c.fetchedAt>=36e5)&&g.delete(b);for(let[b,c]of h){if(!c||"number"!=typeof c.startedAt){h.delete(b);continue}if(a-c.startedAt>12e4){try{c.controller.abort()}catch(a){}h.delete(b)}}}catch(a){console.warn("[ProjectId] cleanup sweep error:",a?.message??a)}},6e5),i?.unref?.()},38775:(a,b,c)=>{c.d(b,{getComboModels:()=>l,mA:()=>k});var d=c(15717),e=c(66451),f=c(58976),g=c(68393);let h={xmtp:"xiaomi-tokenplan","xiaomi-tokenplan":"xiaomi-tokenplan"},i=new Set(Object.keys(h));for(let a of f.A)for(let b of(i.add(a.id),a.alias&&i.add(a.alias),a.aliases||[]))i.add(b);async function j(a){let b=await (0,d.OM)();return(0,e.sc)(a,b)}async function k(a){let b,c=(0,g.iO)(a)||a,f=await j(c);if(f)return!f.provider&&f.model&&await (0,d.Dj)(f.model)?{provider:null,model:f.model}:f;let k=(b=(0,e.Xh)(c),b?.providerAlias&&h[b.providerAlias]?{...b,provider:h[b.providerAlias]}:b);if(!k.isAlias){if(!i.has(k.providerAlias)){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===k.providerAlias);if(a)return{provider:a.id,model:k.model};let b=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===k.providerAlias);if(b)return{provider:b.id,model:k.model};let c=(await (0,d.Fh)({type:"custom-embedding"})).find(a=>a.prefix===k.providerAlias);if(c)return{provider:c.id,model:k.model}}return{provider:k.provider,model:k.model}}return await (0,d.Dj)(k.model)?{provider:null,model:k.model}:(0,e.js)(c,d.OM)}async function l(a){let b=(0,g.iO)(a)||a;if(b.includes("/"))return null;let c=await (0,d.Dj)(b);return c&&c.models&&c.models.length>0?c.models:null}},39326:(a,b,c)=>{function d(a){return null==a?"":String(a).trim()}async function e(a={}){try{let b=function(a={}){let b=a?.connectionProxyEnabled===!0,c=d(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:d(a?.connectionNoProxy)}}(a);if(b.connectionProxyEnabled&&b.connectionProxyUrl)return{source:"legacy",proxyPoolId:null,proxyPool:null,...b,strictProxy:!1,vercelRelayUrl:""};return{source:"none",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:b.connectionNoProxy||"",strictProxy:!1,vercelRelayUrl:""}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1,vercelRelayUrl:""}}}c.d(b,{B:()=>e})},40863:(a,b,c)=>{var d=c(12407),e=c(15717),f=c(2142),g=c(38775),h=c(34772);let i=!1;i=!0,(0,d.qd)({getSettings:e.mt,trackPendingRequest:e.uw,appendRequestLog:e.E5,saveRequestDetail:e.ox,saveRequestUsage:e.sZ,getRoutingEvents:f.Kx,getClusterWorkerStats:f.GU,getPromotedLearningVersion:f.p3,createLearningVersion:f.Hr,countRoutingEvents:f.f8,listCombosWithRoutingEvents:f.dC,getLastScheduledLearnAt:f.HP,getClusterLatencyP50:f._6,getComboModels:g.getComboModels,getVaultEntry:h.Bl,putVaultEntry:h.M8,searchVault:h.$s,cleanupExpiredVault:h.ui,buildExternalIdpRefreshParams:async(...a)=>(await c.e(8080).then(c.bind(c,18080))).buildExternalIdpRefreshParams(...a),createXaiService:async()=>new(await Promise.all([c.e(9091),c.e(7557)]).then(c.bind(c,37557))).XaiService,fetchKiroProfileArn:async(...a)=>(await Promise.all([c.e(7774),c.e(4646),c.e(3904),c.e(6406),c.e(9261),c.e(1937),c.e(8400),c.e(369),c.e(159),c.e(6347)]).then(c.bind(c,74177))).fetchKiroProfileArn(...a)})},64254:(a,b,c)=>{c.d(b,{u:()=>n});var d=c(79748),e=c(21820),f=c(33873),g=c(79646);let h=(0,c(28354).promisify)(g.execFile),i=["cursorAuth/accessToken","cursorAuth/token"],j=["storage.serviceMachineId","storage.machineId","telemetry.machineId"];function k(a){if("string"!=typeof a)return a;try{let b=JSON.parse(a);return"string"==typeof b?b:a}catch{return a}}async function l(a){let{default:b}=await Promise.resolve().then(c.t.bind(c,87550,23)),d=new b(a,{readonly:!0,fileMustExist:!0});try{let a=[...i,...j],b=a.map(()=>"?").join(", "),c=d.prepare(`SELECT key, value FROM itemTable WHERE key IN (${b})`).all(...a),e=new Map(c.map(({key:a,value:b})=>[a,k(b)])),f=i.map(a=>e.get(a)).find(Boolean)||null,g=j.map(a=>e.get(a)).find(Boolean)||null;if(!f||!g)for(let{key:a,value:b}of d.prepare("SELECT key, value FROM itemTable WHERE key LIKE ? OR key LIKE ?").all("%accessToken%","%machineId%")){let c=k(b);!f&&/access.?token/i.test(a)&&(f=c),!g&&/machine.?id/i.test(a)&&(g=c)}return{accessToken:f,machineId:g}}finally{d.close()}}async function m(a){let b=async b=>{let{stdout:c}=await h("sqlite3",[a,b],{timeout:1e4});return c.trim()};try{await b("SELECT 1 FROM itemTable LIMIT 1")}catch{return{accessToken:null,machineId:null,opened:!1}}let c=null;for(let a of i)try{let d=await b(`SELECT value FROM itemTable WHERE key='${a}' LIMIT 1`);if(d){c=k(d.trim());break}}catch{}let d=null;for(let a of j)try{let c=await b(`SELECT value FROM itemTable WHERE key='${a}' LIMIT 1`);if(c){d=k(c.trim());break}}catch{}return{accessToken:c,machineId:d,opened:!0}}async function n(a={}){let b=a.platform||process.platform;if(!["darwin","win32","linux"].includes(b))return{found:!1,error:"Unsupported platform"};let c=function(a=process.platform){let b=(0,e.homedir)();if("darwin"===a)return[(0,f.join)(b,"Library/Application Support/Cursor/User/globalStorage/state.vscdb"),(0,f.join)(b,"Library/Application Support/Cursor - Insiders/User/globalStorage/state.vscdb")];if("win32"===a){let a=process.env.APPDATA||(0,f.join)(b,"AppData","Roaming"),c=process.env.LOCALAPPDATA||(0,f.join)(b,"AppData","Local");return[(0,f.join)(a,"Cursor","User","globalStorage","state.vscdb"),(0,f.join)(a,"Cursor - Insiders","User","globalStorage","state.vscdb"),(0,f.join)(c,"Cursor","User","globalStorage","state.vscdb"),(0,f.join)(c,"Programs","Cursor","User","globalStorage","state.vscdb")]}return[(0,f.join)(b,".config/Cursor/User/globalStorage/state.vscdb"),(0,f.join)(b,".config/cursor/User/globalStorage/state.vscdb")]}(b),g=null;for(let a of c)try{await (0,d.access)(a,d.constants.R_OK),g=a;break}catch{}if(!g){let a="darwin"===b?"known macOS locations":"known locations";return{found:!1,error:`Cursor database not found in ${a}:
|
|
2
2
|
${c.join("\n")}
|
|
3
3
|
|
|
4
|
-
Make sure Cursor IDE is installed and opened at least once.`}}if("linux"===b&&!1!==a.verifyLinuxInstall){let a=!1;try{await h("which",["cursor"],{timeout:5e3}),a=!0}catch{try{await (0,d.access)((0,f.join)((0,e.homedir)(),".local/share/applications/cursor.desktop"),d.constants.R_OK),a=!0}catch{}}if(!a)return{found:!1,error:"Cursor config files found but Cursor IDE does not appear to be installed. Skipping auto-import."}}let i=null;try{let a=await l(g);if(a.accessToken&&a.machineId)return{found:!0,...a,dbPath:g}}catch(a){i=a}let j=!1;try{let a=await m(g);if(j=a.opened,a.accessToken&&a.machineId)return{found:!0,accessToken:a.accessToken,machineId:a.machineId,dbPath:g}}catch{}return i&&!j?{found:!1,error:`Cursor database was found but could not open it: ${i.message}`}:{found:!1,windowsManual:"win32"===b,error:"Please login to Cursor IDE first, then restart Switchboard to import its credentials.",dbPath:g}}},66451:(a,b,c)=>{c.d(b,{Xh:()=>f,js:()=>g});var d=c(58976);let e={el:"elevenlabs",jina:"jina-ai","jina-ai":"jina-ai",polly:"aws-polly","aws-polly":"aws-polly"};for(let a of d.A)for(let b of(e[a.id]=a.id,a.alias&&(e[a.alias]=a.id),a.aliases||[]))e[b]=a.id;function f(a){if(!a)return{provider:null,model:null,isAlias:!1,providerAlias:null};if(a.includes("/")){let b=a.indexOf("/"),c=a.slice(0,b),d=a.slice(b+1);return{provider:e[c]||c,model:d,isAlias:!1,providerAlias:c}}return{provider:null,model:a,isAlias:!0,providerAlias:null}}
|
|
4
|
+
Make sure Cursor IDE is installed and opened at least once.`}}if("linux"===b&&!1!==a.verifyLinuxInstall){let a=!1;try{await h("which",["cursor"],{timeout:5e3}),a=!0}catch{try{await (0,d.access)((0,f.join)((0,e.homedir)(),".local/share/applications/cursor.desktop"),d.constants.R_OK),a=!0}catch{}}if(!a)return{found:!1,error:"Cursor config files found but Cursor IDE does not appear to be installed. Skipping auto-import."}}let i=null;try{let a=await l(g);if(a.accessToken&&a.machineId)return{found:!0,...a,dbPath:g}}catch(a){i=a}let j=!1;try{let a=await m(g);if(j=a.opened,a.accessToken&&a.machineId)return{found:!0,accessToken:a.accessToken,machineId:a.machineId,dbPath:g}}catch{}return i&&!j?{found:!1,error:`Cursor database was found but could not open it: ${i.message}`}:{found:!1,windowsManual:"win32"===b,error:"Please login to Cursor IDE first, then restart Switchboard to import its credentials.",dbPath:g}}},66451:(a,b,c)=>{c.d(b,{Xh:()=>f,js:()=>h,sc:()=>g});var d=c(58976);let e={el:"elevenlabs",jina:"jina-ai","jina-ai":"jina-ai",polly:"aws-polly","aws-polly":"aws-polly"};for(let a of d.A)for(let b of(e[a.id]=a.id,a.alias&&(e[a.alias]=a.id),a.aliases||[]))e[b]=a.id;function f(a){if(!a)return{provider:null,model:null,isAlias:!1,providerAlias:null};if(a.includes("/")){let b=a.indexOf("/"),c=a.slice(0,b),d=a.slice(b+1);return{provider:e[c]||c,model:d,isAlias:!1,providerAlias:c}}return{provider:null,model:a,isAlias:!0,providerAlias:null}}function g(a,b){var c,d;if(!b||"string"!=typeof a)return null;let f=b[a];if(!f){for(let[c,d]of Object.entries(b))if("string"==typeof c&&c.includes("*"))try{let b="^"+c.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*")+"$";if(RegExp(b,"i").test(a)){f=d;break}}catch{}}if(!f)return null;if("string"==typeof f&&f.includes("/")){let a=f.indexOf("/");return{provider:e[c=f.slice(0,a)]||c,model:f.slice(a+1)}}return"object"==typeof f&&f.provider&&f.model?{provider:e[d=f.provider]||d,model:f.model}:"string"==typeof f?{provider:null,model:f}:null}async function h(a,b){let c=f(a);if(!c.isAlias)return{provider:c.provider,model:c.model};let d="function"==typeof b?await b():b,e=g(c.model,d);return e||{provider:function(a){if(!a)return"openai";let b=a.toLowerCase();return i.find(([a])=>a.test(b))?.[1]||"openai"}(c.model),model:c.model}}let i=[[/^grok-build$/,"grok-cli"],[/^claude-/,"anthropic"],[/^gemini-/,"gemini"],[/^gpt-/,"openai"],[/^o[134]/,"openai"],[/^deepseek-/,"openrouter"]]},67828:(a,b,c)=>{c.d(b,{I9:()=>k,Yx:()=>l,eU:()=>p,vN:()=>o}),c(40863);var d=c(7803),e=c(15717),f=c(64254),g=c(15186),h=c(41029),i=c(18129);let j=h.oD,k=(a,b,c)=>(0,h.I9)(a,b,c,d);async function l(a,b={}){if(a?.providerSpecificData?.authMethod!=="imported"||!b.force&&!(0,i.fp)("cursor",a))return a;try{let b=await (0,f.u)();if(!b.found||!b.accessToken||!b.machineId)return a;let c={...a.providerSpecificData||{},machineId:b.machineId,authMethod:"imported"},d=m(86400),e={...a,accessToken:b.accessToken,expiresIn:86400,expiresAt:d,providerSpecificData:c},g=b.accessToken!==a.accessToken||b.machineId!==a.providerSpecificData?.machineId||(0,i.fp)("cursor",a),h=a.connectionId||a.id;return g&&h&&await o(h,{accessToken:b.accessToken,expiresIn:86400,providerSpecificData:{machineId:b.machineId,authMethod:"imported"},existingProviderSpecificData:a.providerSpecificData||{}}),e}catch(b){return d.warn("TOKEN_REFRESH","Could not reload imported Cursor credentials",{connectionId:a.connectionId||a.id||null,error:b?.message||String(b)}),a}}function m(a){return new Date(Date.now()+1e3*a).toISOString()}function n(a){if(!a)return null;let b=new Date(a);return Number.isFinite(b.getTime())?b.toISOString():null}async function o(a,b){try{let c={};if(b.accessToken&&(c.accessToken=b.accessToken),b.refreshToken&&(c.refreshToken=b.refreshToken),b.idToken&&(c.idToken=b.idToken),b.lastRefreshAt&&(c.lastRefreshAt=b.lastRefreshAt),b.expiresAt&&(c.expiresAt=b.expiresAt),b.expiresIn)c.expiresAt=m(b.expiresIn),c.expiresIn=b.expiresIn;else if(b.expiresAt){let a=n(b.expiresAt);a&&(c.expiresAt=a,c.expiresIn=Math.max(1,Math.floor((new Date(a).getTime()-Date.now())/1e3)))}b.providerSpecificData&&(c.providerSpecificData={...b.existingProviderSpecificData||{},...b.providerSpecificData}),(b.copilotToken||b.copilotTokenExpiresAt)&&(c.providerSpecificData={...c.providerSpecificData||b.existingProviderSpecificData||{},...b.copilotToken?{copilotToken:b.copilotToken}:{},...b.copilotTokenExpiresAt?{copilotTokenExpiresAt:b.copilotTokenExpiresAt}:{}}),b.projectId&&(c.projectId=b.projectId);let f=await (0,e.updateProviderConnection)(a,c);return d.info("TOKEN_REFRESH","Credentials updated in localDb",{connectionId:a,success:!!f}),!!f}catch(b){return d.error("TOKEN_REFRESH","Error updating credentials in localDb",{connectionId:a,error:b.message}),!1}}async function p(a,b,c={}){let e={...b};!e.connectionId&&e.id&&(e.connectionId=e.id);let f=c?.force===!0;if("cursor"===a&&(e=await l(e)),f||(0,i.fp)(a,e)){let b=e.expiresAt?new Date(e.expiresAt).getTime():null,c=b?b-Date.now():null,f=(0,h.Og)(a);d.info("TOKEN_REFRESH","Refreshing provider credentials proactively",{provider:a,expiresIn:null===c?null:Math.round(c/1e3),refreshLeadMs:f,lastRefreshAt:e.lastRefreshAt||null});let j=null;try{j=await (0,i.Vq)(a,e,d)}catch(b){d.warn("TOKEN_REFRESH","Provider credential refresh failed; using existing credentials",{provider:a,error:b?.message||String(b)})}if(j?.accessToken||j?.apiKey||j?.copilotToken){let b={...j,existingProviderSpecificData:e.providerSpecificData};await o(e.connectionId,b),function(a,b,c){("antigravity"===a||"gemini-cli"===a)&&b&&c&&((0,g.Ou)(b),(0,g.eG)(b,c,a).then(a=>{a&&o(b,{projectId:a}).catch(a=>{d.debug("TOKEN_REFRESH","Failed to persist refreshed projectId",{connectionId:b,error:a?.message??a})})}).catch(a=>{d.debug("TOKEN_REFRESH","Failed to fetch projectId after token refresh",{connectionId:b,error:a?.message??a})}))}(a,(e={...e,...j,expiresAt:j.expiresIn?m(j.expiresIn):n(j.expiresAt)||j.expiresAt||e.expiresAt,providerSpecificData:j.providerSpecificData?{...e.providerSpecificData,...j.providerSpecificData}:e.providerSpecificData}).connectionId,e.accessToken)}}if("github"===a){let b=e.providerSpecificData?.copilotToken,c=(e.providerSpecificData?.copilotTokenExpiresAt?1e3*e.providerSpecificData.copilotTokenExpiresAt:0)-Date.now();if(!b||c<j){let f;d.info("TOKEN_REFRESH","Copilot token expiring soon or missing, refreshing proactively",{provider:a,expiresIn:b?Math.round(c/1e3):"missing"});let g=await (f=e.accessToken,(0,h.jR)(f,d));if(g){let a={...e.providerSpecificData,copilotToken:g.token,copilotTokenExpiresAt:g.expiresAt};await o(e.connectionId,{providerSpecificData:a}),e.providerSpecificData=a,e.copilotToken=g.token}}}return e}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=5616,exports.ids=[5616],exports.modules={18271:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>m,refreshAndUpdateCredentials:()=>l});var e=c(30369),f=c(15717),g=c(56002),h=c(48400),i=c(39326),j=c(40615),k=a([e,h]);[e,h]=k.then?(await k)():k;let n=["expired","authentication","unauthorized","401","re-authorize"];async function l(a,b=!1,c=null){let d=(0,h.SB)(a.provider),e={accessToken:a.accessToken,refreshToken:a.refreshToken,idToken:a.idToken,expiresAt:a.expiresAt||a.tokenExpiresAt,lastRefreshAt:a.lastRefreshAt,connectionId:a.id,providerSpecificData:a.providerSpecificData,copilotToken:a.providerSpecificData?.copilotToken,copilotTokenExpiresAt:a.providerSpecificData?.copilotTokenExpiresAt};if(!(b||d.needsRefresh(e)))return{connection:a,refreshed:!1};let g=await d.refreshCredentials(e,console,c);if(!g){if(a.accessToken)return{connection:a,refreshed:!1};throw Error("Failed to refresh credentials. Please re-authorize the connection.")}let i={updatedAt:new Date().toISOString()};g.accessToken&&(i.accessToken=g.accessToken),g.refreshToken&&(i.refreshToken=g.refreshToken),g.idToken&&(i.idToken=g.idToken),g.lastRefreshAt&&(i.lastRefreshAt=g.lastRefreshAt),g.expiresIn?(i.expiresAt=new Date(Date.now()+1e3*g.expiresIn).toISOString(),i.expiresIn=g.expiresIn):g.expiresAt&&(i.expiresAt=g.expiresAt);let j={...g.providerSpecificData||{},...g.copilotToken?{copilotToken:g.copilotToken}:{},...g.copilotTokenExpiresAt?{copilotTokenExpiresAt:g.copilotTokenExpiresAt}:{}};return Object.keys(j).length>0&&(i.providerSpecificData={...a.providerSpecificData||{},...j}),await (0,f.updateProviderConnection)(a.id,i),{connection:{...a,...i,providerSpecificData:i.providerSpecificData||a.providerSpecificData},refreshed:!0}}async function m(a,{params:b}){let c;try{let{connectionId:d}=await b,e="1"===new URL(a.url).searchParams.get("force");if(!(c=await (0,f.Mc)(d)))return Response.json({error:"Connection not found"},{status:404});let h="oauth"===c.authType,k=("apikey"===c.authType||"api_key"===c.authType)&&j.jO.includes(c.provider);if(!h&&!k)return Response.json({message:"Usage not available for this connection"});let m=await (0,i.B)(c.providerSpecificData),o={connectionProxyEnabled:!0===m.connectionProxyEnabled,connectionProxyUrl:m.connectionProxyUrl||"",connectionNoProxy:m.connectionNoProxy||"",vercelRelayUrl:m.vercelRelayUrl||"",strictProxy:!1};if(h)try{c=(await l(c,!1,o)).connection}catch(a){return console.error("[Usage API] Credential refresh failed:",a),Response.json({error:`Credential refresh failed: ${a.message}`},{status:401})}let p=await (0,g.my)(c,o,{force:e});if(h&&function(a){if(!a?.message)return!1;let b=a.message.toLowerCase();return n.some(a=>b.includes(a))}(p)&&c.refreshToken)try{c=(await l(c,!0,o)).connection,p=await (0,g.my)(c,o,{force:e})}catch(a){console.warn(`[Usage] ${c.provider}: force refresh failed: ${a.message}`)}return Response.json(p)}catch(b){let a=c?.provider??"unknown";return console.warn(`[Usage] ${a}: ${b.message}`),Response.json({error:b.message},{status:500})}}d()}catch(a){d(a)}})},39326:(a,b,c)=>{function d(a){return null==a?"":String(a).trim()}async function e(a={}){try{let b=function(a={}){let b=a?.connectionProxyEnabled===!0,c=d(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:d(a?.connectionNoProxy)}}(a);if(b.connectionProxyEnabled&&b.connectionProxyUrl)return{source:"legacy",proxyPoolId:null,proxyPool:null,...b,strictProxy:!1,vercelRelayUrl:""};return{source:"none",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:b.connectionNoProxy||"",strictProxy:!1,vercelRelayUrl:""}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1,vercelRelayUrl:""}}}c.d(b,{B:()=>e})},49485:(a,b,c)=>{c.d(b,{RO:()=>m,Tl:()=>k,Yt:()=>l});var d=c(46052),e=c(88705);let f={usageUrl:(0,e.U)("codex").url,resetCreditsUrl:(0,e.U)("codex").resetCreditsUrl,resetCreditsConsumeUrl:(0,e.U)("codex").resetCreditsConsumeUrl};function g(a){if(!a)return null;let b=a instanceof Date?a:new Date("number"==typeof a&&a<1e12?1e3*a:a);return Number.isFinite(b.getTime())?b.toISOString():null}function h(a){return!a||"object"!=typeof a||Array.isArray(a)?null:a.rate_limit&&"object"==typeof a.rate_limit?a.rate_limit:a}function i(a){let b=Math.max(0,Math.min(100,(0,e.IQ)(a?.used_percent??a?.percent_used,0)));return{used:b,total:100,remaining:Math.max(0,100-b),resetAt:(0,e.eZ)(a?.reset_at??a?.resets_at??a?.resetAt??null),unlimited:!1}}function j(a,b,c){let d=h(c);if(!d)return!1;let e=d.primary_window||d.primary||c.primary_window||c.primary,f=d.secondary_window||d.secondary||c.secondary_window||c.secondary,g=!1;return e&&(a[b?`${b}_session`:"session"]=i(e),g=!0),f&&(a[b?`${b}_weekly`:"weekly"]=i(f),g=!0),g}async function k(a,b=null){try{let c=await (0,d.Fm)(f.usageUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"},identity:"codex-cli",provider:"codex",format:"codex"},b);if(!c.ok)return{message:`Codex connected. Usage API temporarily unavailable (${c.status}).`};let g=await c.json(),i=g.rate_limit||g.rate_limits||g.rate_limits_by_limit_id?.codex||{},k=function(a){if(a.code_review_rate_limit||a.review_rate_limit)return a.code_review_rate_limit||a.review_rate_limit;let b=a.rate_limits_by_limit_id;return b&&"object"==typeof b&&!Array.isArray(b)?b.code_review||b.codex_review||b.review||null:(Array.isArray(a.additional_rate_limits)?a.additional_rate_limits:[]).find(a=>{let b=String(a?.limit_name||a?.metered_feature||a?.id||"").toLowerCase();return"code_review"===b||"codex_review"===b||"review"===b||b.includes("review")})||null}(g),l=Math.max(0,(0,e.IQ)(g.rate_limit_reset_credits?.available_count,0)),m={};return j(m,"",i),j(m,"review",k),{plan:g.plan_type||g.summary?.plan||"unknown",limitReached:h(i)?.limit_reached||!1,reviewLimitReached:h(k)?.limit_reached||!1,resetCredits:{availableCount:l},quotas:m}}catch(a){throw Error(`Failed to fetch Codex usage: ${a.message}`)}}async function l(a,b=null,c=null){if(!a)throw Error("No Codex access token available. Please re-authorize the connection.");let h=c?.workspaceId||c?.accountId||c?.chatgptAccountId||null,i={Authorization:`Bearer ${a}`,Accept:"application/json","OpenAI-Beta":"codex-1",originator:"codex_cli_rs"};h&&(i["ChatGPT-Account-ID"]=h);let j=await (0,d.Fm)(f.resetCreditsUrl,{method:"GET",headers:i,identity:"codex-cli",provider:"codex",format:"codex"},b),k=null;try{k=await j.json()}catch{k=null}if(!j.ok)throw Error(k?.message||k?.error||k?.detail||`Codex reset credits API unavailable (${j.status}).`);let m=Array.isArray(k?.credits)?k.credits:[];return{availableCount:Math.max(0,(0,e.IQ)(k?.available_count??k?.availableCount,0)),credits:m.map(a=>({status:String(a?.status||"unknown"),grantedAt:g(a?.granted_at??a?.grantedAt),expiresAt:g(a?.expires_at??a?.expiresAt)}))}}async function m(a,b,c=null){let g;if(!a)throw Error("No Codex access token available. Please re-authorize the connection.");if(!b||"string"!=typeof b)throw Error("A redeem request id is required to consume a Codex reset credit.");let h=null;try{g=await (0,d.Fm)(f.resetCreditsConsumeUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({redeem_request_id:b}),identity:"codex-cli",provider:"codex",format:"codex"},c);let e=await g.text();h=e?JSON.parse(e):null}catch(a){throw Error(`Failed to consume Codex reset credit: ${a.message}`)}let i=h?.code||null,j=(0,e.IQ)(h?.windows_reset,0);return{ok:g.ok&&("reset"===i||j>0),noCredit:g.ok&&"no_credit"===i,status:g.status,code:i,windowsReset:j,message:h?.message||null,raw:h}}},56002:(a,b,c)=>{c.d(b,{RO:()=>o.RO,Yt:()=>o.Yt,my:()=>U});var d=c(46052),e=c(88705);async function f(a,b,c=null){try{if(!a)throw Error("No GitHub access token available. Please re-authorize the connection.");let b=await (0,d.Fm)((0,e.U)("github").url,{headers:{Authorization:`token ${a}`,Accept:"application/json"},identity:"copilot",provider:"github",format:"openai"},c);if(!b.ok){let a=await b.text();throw Error(`GitHub API error: ${a}`)}let f=await b.json();if(f.quota_snapshots){let a=f.quota_snapshots,b=(0,e.eZ)(f.quota_reset_date);return{plan:f.copilot_plan,resetDate:f.quota_reset_date,quotas:{chat:{...g(a.chat),resetAt:b},completions:{...g(a.completions),resetAt:b},premium_interactions:{...g(a.premium_interactions),resetAt:b}}}}if(f.monthly_quotas||f.limited_user_quotas){let a=f.monthly_quotas||{},b=f.limited_user_quotas||{},c=(0,e.eZ)(f.limited_user_reset_date);return{plan:f.copilot_plan||f.access_type_sku,resetDate:f.limited_user_reset_date,quotas:{chat:{used:b.chat||0,total:a.chat||0,unlimited:!1,resetAt:c},completions:{used:b.completions||0,total:a.completions||0,unlimited:!1,resetAt:c}}}}return{message:"GitHub Copilot connected. Unable to parse quota data."}}catch(a){throw Error(`Failed to fetch GitHub usage: ${a.message}`)}}function g(a){return a?{used:a.entitlement-a.remaining,total:a.entitlement,remaining:a.remaining,unlimited:a.unlimited||!1}:{used:0,total:0,unlimited:!0}}var h=c(28730);let i=(0,e.U)("antigravity");async function j(a,b,c=null){if(!a)return{plan:"Free",message:"Gemini CLI access token not available."};try{let d=(0,e.gD)(b?.projectId),f="Free";if(!d){let b=await k(a,c);d=(0,e.gD)(b?.cloudaicompanionProject),f=b?.currentTier?.name||f}if(!d)return{plan:f,message:"Gemini CLI project ID not available. Reconnect Gemini CLI, or configure a Google Cloud project with Gemini Code Assist access before checking quota."};let g=await (0,e.u9)((0,e.U)("gemini-cli").quotaUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({project:d}),identity:"gemini-cli",provider:"gemini-cli",format:"gemini"},1e4,c);if(!g.ok)return{plan:f,message:`Gemini CLI quota error (${g.status}).`};let h=await g.json(),i={};if(Array.isArray(h.buckets))for(let a of h.buckets){if(!a.modelId||null==a.remainingFraction)continue;let b=Number(a.remainingFraction)||0,c=Math.round(1e3*b),d=Math.max(0,1e3-c);i[a.modelId]={used:d,total:1e3,resetAt:(0,e.eZ)(a.resetTime),remainingPercentage:100*b,unlimited:!1}}return{plan:f,quotas:i}}catch(a){return{message:`Gemini CLI error: ${a.message}`}}}async function k(a,b=null){try{let c=await (0,e.u9)((0,e.U)("gemini-cli").loadCodeAssistUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:h.Cn}),identity:"gemini-cli",provider:"gemini-cli",format:"gemini"},1e4,b);if(!c.ok)return null;return await c.json()}catch{return null}}async function l(a,b,c=null){try{let b=await m(a,c),d=b?.cloudaicompanionProject||null,f=await (0,e.u9)(i.quotaApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","X-Client-Name":"antigravity"},body:JSON.stringify({...d?{project:d}:{}}),identity:"antigravity",provider:"antigravity",format:"antigravity"},1e4,c);if(403===f.status)return{message:"Antigravity quota API access forbidden. Chat may still work.",quotas:{}};if(401===f.status)return{message:"Antigravity quota API authentication expired. Chat may still work.",quotas:{}};if(!f.ok)throw Error(`Antigravity API error: ${f.status}`);let g=await f.json(),h={};if(g.models){let a=["gemini-3-flash-agent","gemini-3.5-flash-low","gemini-3.5-flash-extra-low","gemini-pro-agent","gemini-3.1-pro-low","claude-sonnet-4-6","claude-opus-4-6-thinking","gpt-oss-120b-medium","gemini-3-flash","gemini-3.1-flash-image","gemini-3-pro-image"];for(let[b,c]of Object.entries(g.models)){if(!c.quotaInfo||c.isInternal||!a.includes(b))continue;let d=c.quotaInfo.remainingFraction||0,f=100*d,g=Math.round(1e3*d),i=1e3-g;h[b]={used:i,total:1e3,resetAt:(0,e.eZ)(c.quotaInfo.resetTime),remainingPercentage:f,unlimited:!1,displayName:c.displayName||b}}}return{plan:b?.currentTier?.name||"Unknown",quotas:h,subscriptionInfo:b}}catch(a){return console.error("[Antigravity Usage] Error:",a.message,a.cause),{message:`Antigravity error: ${a.message}`}}}async function m(a,b=null){try{let c=await (0,e.u9)(i.loadProjectApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:h.Cn,mode:1}),identity:"antigravity",provider:"antigravity",format:"antigravity"},1e4,b);if(!c.ok)return null;return await c.json()}catch(a){return console.error("[Antigravity Subscription] Error:",a.message),null}}var n=c(98594),o=c(49485),p=c(3148);async function q(a,b,c=null){let f=b?.authMethod||"builder-id",g="api_key"===f,h=g?{tokentype:"API_KEY"}:{},i="external_idp"===f?{TokenType:"EXTERNAL_IDP"}:{},j=g?b?.profileArn||"":b?.profileArn||(0,p.We)(f),k=new URLSearchParams({isEmailRequired:"true",origin:"AI_EDITOR",resourceType:"AGENTIC_REQUEST"}),l=!1,m=[];for(let b of[{name:"codewhisperer-get",run:async()=>(0,d.Fm)(`${(0,e.U)("kiro").cwHost}${(0,e.U)("kiro").limitsPath}?${k.toString()}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","x-amz-user-agent":"aws-sdk-js/1.0.0 KiroIDE","user-agent":"aws-sdk-js/1.0.0 KiroIDE",...h,...i}},c)},{name:"codewhisperer-post",run:async()=>(0,d.Fm)((0,e.U)("kiro").cwHost,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.GetUsageLimits",Accept:"application/json",...h,...i},body:JSON.stringify({origin:"AI_EDITOR",...j?{profileArn:j}:{},resourceType:"AGENTIC_REQUEST"})},c)},{name:"q-get",run:async()=>{let b=new URLSearchParams({origin:"AI_EDITOR",...j?{profileArn:j}:{},resourceType:"AGENTIC_REQUEST"});return(0,d.Fm)(`${(0,e.U)("kiro").qHost}${(0,e.U)("kiro").limitsPath}?${b}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json",...h,...i}},c)}}])try{let a=await b.run();if(!a.ok){let c=await a.text().catch(()=>"");(401===a.status||403===a.status)&&(l=!0),m.push(`${b.name}:${a.status}${c?`:${c}`:""}`);continue}let c=await a.json();return function(a){let b=a.usageBreakdownList||[],c={},d=(0,e.eZ)(a.nextDateReset||a.resetDate);return b.forEach(a=>{let b=a.resourceType?.toLowerCase()||"unknown",f=a.currentUsageWithPrecision||0,g=a.usageLimitWithPrecision||0;if(c[b]={used:f,total:g,remaining:g-f,resetAt:d,unlimited:!1},a.freeTrialInfo){let f=a.freeTrialInfo.currentUsageWithPrecision||0,g=a.freeTrialInfo.usageLimitWithPrecision||0;c[`${b}_freetrial`]={used:f,total:g,remaining:g-f,resetAt:(0,e.eZ)(a.freeTrialInfo.freeTrialExpiry||d),unlimited:!1}}}),{plan:a.subscriptionInfo?.subscriptionTitle||"Kiro",quotas:c}}(c)}catch(a){m.push(`${b.name}:${a.message}`)}return l&&"idc"===f?{message:"Kiro quota API is unavailable for the current AWS IAM Identity Center session. Chat may still work. If this persists after renewing your session, reconnect Kiro.",quotas:{}}:l&&("google"===f||"github"===f)?{message:"Kiro quota API authentication expired. Chat may still work.",quotas:{}}:l?{message:"Kiro quota API rejected the current token. Chat may still work.",quotas:{}}:{message:m.length>0?`Unable to fetch Kiro usage right now. (${m[m.length-1]})`:"Unable to fetch Kiro usage right now.",quotas:{}}}let r={minimax:(0,e.U)("minimax").urls,"minimax-cn":(0,e.U)("minimax-cn").urls};function s(a,b,c){return a&&"object"==typeof a?a[b]??a[c]??null:null}function t(a,b,c){if(!a||"object"!=typeof a)return null;let d=a[b]??a[c];if(null==d)return null;let e=Number(d);return Number.isFinite(e)?Math.max(0,Math.min(100,e)):null}function u(a){return Math.max(0,Number(s(a,"current_interval_total_count","currentIntervalTotalCount"))||0)}function v(a){return Math.max(0,Number(s(a,"current_weekly_total_count","currentWeeklyTotalCount"))||0)}function w(a){return!!(u(a)>0||v(a)>0)||null!==t(a,"current_interval_remaining_percent","currentIntervalRemainingPercent")||null!==t(a,"current_weekly_remaining_percent","currentWeeklyRemainingPercent")}function x(a,b,c,d,f,g,h,i,j,k){let l=d(c),m=t(c,h,i);if(l<=0&&null===m)return;let n=Math.max(0,Number(s(c,f,g))||0),o=l,p=n;l<=0&&(o=100,p=k?Math.round(m/100*o):Math.round(o*(1-m/100))),a[b]=function(a,b,c,d,e=null){var f,g,h;let i=Math.max(0,a),j=d?Math.max(i-b,0):Math.min(Math.max(0,b),i),k=Math.max(i-j,0),l=(f=e,g=k,h=i,null!=f&&Number.isFinite(f)?Math.max(0,Math.min(100,f)):h>0?Math.max(0,Math.min(100,g/h*100)):0);return{used:j,total:i,remaining:k,remainingPercentage:l,resetAt:c,unlimited:!1}}(o,p,function(a,b,c,d,f,g){let h=Number(s(a,c,d))||0;return h>0?new Date(b+h).toISOString():(0,e.eZ)(s(a,f,g))}(c,...j),k,m)}async function y(a,b,c=null){if(!a)return{message:"MiniMax API key not available."};let e=r[b]||[],f="";for(let b=0;b<e.length;b+=1){let g=e[b],h=b<e.length-1;try{let b=await (0,d.Fm)(g,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"}},c),e=await b.text(),i={};if(e)try{i=JSON.parse(e)}catch{i={}}let j=(i?.base_resp??i?.baseResp)||{},k=Number(j.status_code??j.statusCode)||0,l=String(j.status_msg??j.statusMsg??"").trim(),m=`${l} ${e}`.trim(),n=/token plan|coding plan|invalid api key|invalid key|unauthorized|inactive/i;if(401===b.status||403===b.status||1004===k||n.test(m))return{message:"MiniMax API key invalid or inactive. Use an active Token/Coding Plan key."};if(!b.ok){if(f=`MiniMax usage endpoint error (${b.status})`,(404===b.status||405===b.status||b.status>=500)&&h)continue;return{message:`MiniMax connected. ${f}`}}if(0!==k)return{message:`MiniMax connected. ${l||"Upstream quota API error"}`};let o=i?.model_remains??i?.modelRemains,p=(Array.isArray(o)?o:[]).filter(w);if(0===p.length)return{message:"MiniMax connected. No quota data was returned."};let q=Date.now(),r=g.includes("/coding_plan/remains"),t={};for(let a of p){let b=function(a){let b=String(s(a,"model_name","modelName")||"").trim();return b?"MiniMax-M*"===b||"general"===b?"M-series":b.replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,a=>a.toUpperCase()).replace(/\bTo\b/g,"to").replace(/\bTts\b/g,"TTS").replace(/\bHd\b/g,"HD"):"MiniMax"}(a);x(t,`${b} (5h)`,a,u,"current_interval_usage_count","currentIntervalUsageCount","current_interval_remaining_percent","currentIntervalRemainingPercent",[q,"remains_time","remainsTime","end_time","endTime"],r),x(t,`${b} (7d)`,a,v,"current_weekly_usage_count","currentWeeklyUsageCount","current_weekly_remaining_percent","currentWeeklyRemainingPercent",[q,"weekly_remains_time","weeklyRemainsTime","weekly_end_time","weeklyEndTime"],r)}if(0===Object.keys(t).length)return{message:"MiniMax connected. Unable to extract quota usage."};return{quotas:t}}catch(a){if(f=a.message,!h)break}}return{message:f?`MiniMax connected. Unable to fetch usage: ${f}`:"MiniMax connected. Unable to fetch usage."}}var z=c(45350);let A="codebuddy-cn";function B(a,b){let c=Number(a??b);return Number.isFinite(c)?c:0}async function C(a,b,c,f=null){let g=a||b;if(!g)return{message:"CodeBuddy CN credential not available."};try{let a=await (0,d.Fm)((0,e.U)(A).url,{method:"POST",headers:{...z.xq[A]?.headers||{},Authorization:`Bearer ${g}`,"Content-Type":"application/json",Accept:"application/json"},body:"{}"},f);if(401===a.status||403===a.status)return{message:"CodeBuddy CN credential invalid or expired."};if(!a.ok)return{message:`CodeBuddy CN quota API error (${a.status}).`};let b=await a.json();if(b?.code!==0)return{message:`CodeBuddy CN quota error: ${b?.msg||"unknown"}`};let c=b?.data?.Response?.Data||{},h=Array.isArray(c.Accounts)?c.Accounts:[];if(0===h.length)return{message:"CodeBuddy CN connected. No credit package found."};let i=a=>{let b=(0,e.eZ)(a.CycleEndTime);return b?new Date(b).getTime():1/0},j=a=>{let b=i(a),c=Number(a.DeductionEndTime);return Number.isFinite(b)&&Number.isFinite(c)&&c-b>1728e5},k=(a,b)=>i(a)-i(b),l=h.filter(j).sort(k),m=h.filter(a=>!j(a)).sort(k),n={},o={};l.forEach(a=>{let b=function(a){let b=(0,e.eZ)(a.CycleStartTime),c=(0,e.eZ)(a.CycleEndTime);if(b&&c){let a=(new Date(c).getTime()-new Date(b).getTime())/864e5;if(a<=1.5)return"Daily";if(a<=10)return"Weekly"}return"Monthly"}(a);o[b]=(o[b]||0)+1,n[o[b]>1?`${b} ${o[b]}`:b]={used:B(a.CycleCapacityUsedPrecise,a.CycleCapacityUsed),total:B(a.CycleCapacitySizePrecise,a.CycleCapacitySize),resetAt:(0,e.eZ)(a.CycleEndTime),unlimited:!1,recurring:!0}}),m.forEach((a,b)=>{n[`Bonus Pack ${b+1}`]={used:B(a.CapacityUsedPrecise,a.CapacityUsed),total:B(a.CapacitySizePrecise,a.CapacitySize),resetAt:(0,e.eZ)(a.CycleEndTime),unlimited:!1,recurring:!1}});let p=l[0]||h[0]||{};return{plan:p.PackageName||p.SubProductName||"CodeBuddy CN",quotas:n}}catch(a){return{message:`CodeBuddy CN error: ${a.message}`}}}let D={LEVEL_BASIC:"Moderato",LEVEL_INTERMEDIATE:"Allegretto",LEVEL_ADVANCED:"Allegro",LEVEL_STANDARD:"Vivace"};function E({used:a,total:b,remaining:c,resetAt:d}){let f,g=Math.max(0,(0,e.IQ)(b,0)),h=Math.max(0,(0,e.IQ)(a,0));return f=g>0&&null!=c&&Number.isFinite(Number(c))?Math.max(0,Number(c))/g*100:g>0?Math.max(0,g-h)/g*100:0,{used:h,total:g,remainingPercentage:f,resetAt:d||null,unlimited:!1}}async function F(a=null,b=null,c=null,f=null){let g="string"==typeof b&&b.length>0,i=!g&&"string"==typeof a&&a.length>0;if(!g&&!i)return{message:"Kimi access token or API key not available."};let j=g?{"x-api-key":b}:{Authorization:`Bearer ${a}`,...(0,h.VK)(f?.deviceId)};try{let a,b=await (0,d.Fm)("https://api.kimi.com/coding/v1/usages",{method:"GET",headers:{...j,"Content-Type":"application/json",Accept:"application/json"}},c),f=await b.text().catch(()=>"");if(!b.ok)return{plan:"Kimi Coding",message:function(a,b){let c=null;try{c=JSON.parse(b||"")}catch{}let d=Array.isArray(c?.details)?c.details[0]:null,e=d?.debug||c?.debug||null,f=e?.reason||c?.reason||"",g=e?.localizedMessage?.message||d?.localizedMessage?.message||c?.message||"";if(401===a)return"Kimi authentication expired. Please re-authorize.";if(403===a&&("REASON_FEATURE_NO_PERMISSION"===f||/permission_denied|do not have permission|subscribe/i.test(`${c?.code||""} ${g} ${b||""}`)))return g||"Kimi connected, but this account has no permission to view usage. Subscribe to Kimi Code to access quota.";let h=(g||b||"").slice(0,100);return h?`Kimi Coding connected. API Error ${a}: ${h}`:`Kimi Coding connected. API Error ${a}`}(b.status,f)};try{a=JSON.parse(f||"{}")}catch{return{plan:"Kimi Coding",message:"Kimi Coding connected. Invalid JSON response from API."}}let g={},h=a?.usage&&"object"==typeof a.usage?a.usage:{},i=(0,e.IQ)(h.limit??h.Limit,0),k=(0,e.IQ)(h.used??h.Used,0),l=h.remaining??h.Remaining,m=null!=l&&""!==l?(0,e.IQ)(l,NaN):NaN,n=h.resetTime||h.ResetTime||h.reset_at||h.resetAt;for(let b of(i>0&&(g.Weekly=E({used:k,total:i,remaining:Number.isFinite(m)?m:null,resetAt:(0,e.eZ)(n)})),Array.isArray(a?.limits)?a.limits:[])){if(!b||"object"!=typeof b)continue;let a=b.detail&&"object"==typeof b.detail?b.detail:{},c=(0,e.IQ)(a.limit??a.Limit,0),d=(0,e.IQ)(a.remaining??a.Remaining,NaN),f=a.resetTime||a.reset_at||a.resetAt;if(c>0){let a=Number.isFinite(d)?d:Math.max(0,c);g.Ratelimit=E({used:Math.max(0,c-a),total:c,remaining:a,resetAt:(0,e.eZ)(f)})}}let o=a?.user?.membership?.level,p=function(a){if(!a)return"";let b=String(a);return D[b]?D[b]:b.replace(/^LEVEL_/,"").toLowerCase()}(o)||"Kimi Coding";if(Object.keys(g).length>0)return{plan:p,quotas:g};return{plan:p,message:"Kimi Coding connected. Usage tracked per request."}}catch(a){return{message:`Kimi Coding connected. Unable to fetch usage: ${a.message}`}}}async function G(a=null,b=null){if(!a||"string"!=typeof a||!a.trim())return{message:"DeepSeek API key not available. Add a key to view usage."};try{let c=await (0,d.Fm)("https://api.deepseek.com/user/balance",{method:"GET",headers:{Authorization:`Bearer ${a.trim()}`,"Content-Type":"application/json",Accept:"application/json"}},b);if(401===c.status||403===c.status)return{plan:"DeepSeek",message:"DeepSeek authentication failed. Check the API key."};if(!c.ok){let a=await c.text().catch(()=>"");return{plan:"DeepSeek",message:`DeepSeek balance API error (${c.status})${a?`: ${a.slice(0,120)}`:""}`}}let f=await c.json().catch(()=>null);if(!f||"object"!=typeof f)return{message:"DeepSeek balance response was not JSON."};let g=function(a){let b=Array.isArray(a?.balance_infos)?a.balance_infos:[],c=[];for(let a of b){if(!a||"object"!=typeof a)continue;let b="string"==typeof a.currency?a.currency.toUpperCase():"";if(!b)continue;let d=(0,e.IQ)(a.total_balance??a.totalBalance,0);c.push({currency:b,totalBalance:d,grantedBalance:(0,e.IQ)(a.granted_balance??a.grantedBalance,0),toppedUpBalance:(0,e.IQ)(a.topped_up_balance??a.toppedUpBalance,0)})}return c}(f);if(0===g.length)return{plan:"DeepSeek",message:"DeepSeek connected. No balance data returned."};let h=!0===f.is_available||!0===f.isAvailable,i={};for(let a of g){let b=Math.max(0,a.totalBalance);i[`Balance (${a.currency})`]={used:0,total:b,remainingPercentage:100*(b>0),resetAt:null,unlimited:b>0}}return{plan:h?"DeepSeek":"DeepSeek (Insufficient Balance)",quotas:i}}catch(a){return{message:`DeepSeek error: ${a.message}`}}}var H=c(13247);let I=(a,b=0)=>a&&"object"==typeof a&&"val"in a?(0,e.IQ)(a.val,b):(0,e.IQ)(a,b);function J(a,b,c=null){let d=Math.max(0,b),e=Math.max(0,a);return{used:e,total:d,remainingPercentage:d?Math.max(0,(d-e)/d*100):0,resetAt:c,unlimited:!1}}async function K(a,b=null,c=null){if(!a)return{message:"Grok CLI access token not available."};let f=(0,H.Ab)(a,b||{}),g=(0,e.U)("grok-cli");try{let[a,b]=await Promise.all([(0,d.Fm)(g.url,{method:"GET",headers:f,...H.Ai},c),(0,d.Fm)(g.userUrl,{method:"GET",headers:f,signal:AbortSignal.timeout(2e3),...H.Ai},c).catch(()=>null)]);if(401===a.status||403===a.status)return{message:"Grok CLI authentication expired. Please re-authorize."};if(!a.ok)return{message:`Grok CLI billing API error (${a.status})`};let h=await a.json(),i=b?.ok?await b.json().catch(()=>null):null,j=function(a,b=null){let c=a&&"object"==typeof a?a:{},d=c.config&&"object"==typeof c.config?c.config:c,f=(0,e.eZ)(d.billingPeriodEnd||d.currentPeriod?.end||d.resetAt),g=b?.subscriptionTier||b?.subscription_tier||b?.subscription?.tier||"",h="string"==typeof g&&""!==g&&!/^(free|none|null)$/i.test(g),i={},j=I(d.monthlyLimit??c.monthlyLimit,NaN),k=I(d.includedUsed??c.includedUsed??d.totalUsed??c.totalUsed,0);Number.isFinite(j)&&j>0&&(i["Monthly included"]=J(k,j,f));let l=I(d.onDemandCap??c.onDemandCap,NaN),m=I(d.onDemandUsed??c.onDemandUsed,0);Number.isFinite(l)&&l>0?i["On-demand"]=J(m,l,f):h||0!==l||(i["On-demand"]=J(1,1,f));let n=I(d.prepaidBalance??c.prepaidBalance,NaN);return Number.isFinite(n)&&n>0&&(i.Prepaid=J(0,n)),{plan:g?String(g).replace(/[_-]+/g," ").replace(/\b\w/g,a=>a.toUpperCase()):b?.hasGrokCodeAccess?"Grok Code":"Grok Build",quotas:i,subscriptionAccess:h}}(h,i);if(Object.keys(j.quotas).length)return{plan:j.plan,quotas:j.quotas};return{plan:j.plan,quotas:{},message:j.subscriptionAccess?"Subscription access is active; Grok does not expose a numeric included quota.":"Grok Build connected, but no credit allotment was returned."}}catch(a){return{message:`Grok CLI usage error: ${a.message}`}}}let L={international:(0,e.U)("glm").url,china:(0,e.U)("glm-cn").url},M=(0,e.U)("vercel-ai-gateway").url;async function N(a,b){try{if(!b?.resourceUrl)return{message:"Qwen connected. No resource URL available."};return{message:"Qwen connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch Qwen usage."}}}async function O(a){try{return{message:"iFlow connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch iFlow usage."}}}async function P(a,b,c=null){if(!a)return{message:"Ollama Cloud API key not available."};try{let b,f=await (0,d.Fm)("https://ollama.com/api/usage",{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},c);if(401===f.status||403===f.status)return{message:"Ollama Cloud API key invalid or expired."};if(!f.ok)return{message:`Ollama Cloud usage API error (${f.status}).`};try{b=await f.json()}catch{return{message:"Ollama Cloud usage response was not JSON."}}let g=await (0,d.Fm)("https://ollama.com/api/me",{method:"POST",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Length":"0"}},c).then(a=>a.ok?a.json():null).catch(()=>null),h="string"==typeof g?.Plan?g.Plan:"",i=h?h.charAt(0).toUpperCase()+h.slice(1).toLowerCase():"Ollama Cloud",j=b?.limits&&"object"==typeof b.limits?b.limits:{};function e(a,b=null){let c=Math.max(0,Math.min(1,Number(a)||0)),d=Math.round(100*c);return{used:d,total:100,remainingPercentage:100-d,resetAt:b,unlimited:!1}}let k=j.session?.usage,l=j.weekly?.usage,m=Number(k),n=Number(l),o=null!=k&&!Number.isNaN(m),p=null!=l&&!Number.isNaN(n);if(!o&&!p)return{plan:i,message:"Ollama Cloud connected. No usage limits reported.",quotas:{}};let q={};return o&&(q["Session (5h)"]=e(m)),p&&(q["Weekly (7d)"]=e(n)),{plan:i,quotas:q}}catch(a){return{message:`Ollama Cloud error: ${a.message}`}}}async function Q(a,b,c=null){if(!a)return{message:"GLM API key not available."};let e=L["glm-cn"===b?"china":"international"];try{let b=await (0,d.Fm)(e,{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},c);if(!b.ok){if(401===b.status)return{message:"GLM API key invalid or expired."};return{message:`GLM quota API error (${b.status}).`}}let f=await b.json(),g=f?.data&&"object"==typeof f.data?f.data:{},h=Array.isArray(g.limits)?g.limits:[],i={};for(let a of h){if(!a||"TOKENS_LIMIT"!==a.type)continue;let b=Number(a.percentage)||0,c=Number(a.nextResetTime)||0,d=Math.max(0,100-b);i.session={used:b,total:100,remaining:d,remainingPercentage:d,resetAt:c>0?new Date(c).toISOString():null,unlimited:!1}}let j="string"==typeof g.level?g.level:"";return{plan:j?j.charAt(0).toUpperCase()+j.slice(1).toLowerCase():"Unknown",quotas:i}}catch(a){return{message:`GLM error: ${a.message}`}}}async function R(a,b=null){if(!a)return{message:"Vercel AI Gateway API key not available."};try{let c=await (0,d.Fm)(M,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},b);if(401===c.status||403===c.status)return{message:"Vercel AI Gateway API key invalid or expired."};if(!c.ok){let a=await c.text().catch(()=>""),b=a?`: ${a.slice(0,200)}`:"";return{message:`Vercel AI Gateway credits API error (${c.status})${b}`}}let e=await c.json(),f=Number(e?.balance)||0,g=Number(e?.total_used)||0;if(f<=0&&g<=0)return{plan:"Pay-as-you-go",message:"Vercel AI Gateway connected. No credit allocation found (BYOK or unfunded account).",quotas:{}};return{plan:"Pay-as-you-go",quotas:{"Used (USD)":{used:g,total:0,remaining:0,remainingPercentage:100,unlimited:!0},"Remaining (USD)":{used:f,total:5,remaining:f,remainingPercentage:f/5*100,unlimited:!1}}}}catch(a){return{message:`Vercel AI Gateway error: ${a.message}`}}}async function S(a,b=null){if(!a)return{message:"Qoder usage unavailable: no access token"};try{let c=await (0,d.Fm)((0,e.U)("qoder").url,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},b);if(!c.ok)return{message:`Qoder connected. Usage fetch returned ${c.status}.`};let f=await c.json().catch(()=>null);if(!f)return{message:"Qoder connected. Usage response was not JSON."};let g=f.userQuota||{},h=f.orgResourcePackage||{},i=Number.isFinite(Number(f.expiresAt))&&Number(f.expiresAt)>0?Number(f.expiresAt):null,j=i?new Date(i).toISOString():null;return{quotas:{user:{total:Number(g.total)||0,used:Number(g.used)||0,remaining:Number(g.remaining)||0,unit:g.unit||"credits",resetAt:j},organization:{total:Number(h.total)||0,used:Number(h.used)||0,remaining:Number(h.remaining)||0,unit:h.unit||"credits",resetAt:j}},totalUsagePercentage:Number(f.totalUsagePercentage)||0,isQuotaExceeded:!!f.isQuotaExceeded,expiresAt:i}}catch(a){return{message:`Qoder connected. Unable to fetch usage: ${a.message}`}}}let T={github:a=>f(a.accessToken,a.providerSpecificData,a.proxyOptions),"gemini-cli":a=>j(a.accessToken,a.providerDataWithProjectId,a.proxyOptions),antigravity:a=>l(a.accessToken,a.providerSpecificData,a.proxyOptions),claude:a=>(0,n.g)(a.accessToken,a.proxyOptions,{force:a.force}),codex:a=>(0,o.Tl)(a.accessToken,a.proxyOptions),kiro:a=>q(a.accessToken,a.providerSpecificData,a.proxyOptions),qoder:a=>S(a.accessToken,a.proxyOptions),qwen:a=>N(a.accessToken,a.providerSpecificData),iflow:a=>O(a.accessToken),ollama:a=>P(a.apiKey,a.providerSpecificData,a.proxyOptions),glm:a=>Q(a.apiKey,a.provider,a.proxyOptions),"glm-cn":a=>Q(a.apiKey,a.provider,a.proxyOptions),minimax:a=>y(a.apiKey,a.provider,a.proxyOptions),"minimax-cn":a=>y(a.apiKey,a.provider,a.proxyOptions),"vercel-ai-gateway":a=>R(a.apiKey,a.proxyOptions),"codebuddy-cn":a=>C(a.accessToken,a.apiKey,a.providerSpecificData,a.proxyOptions),kimi:a=>F(a.accessToken,a.apiKey,a.proxyOptions,a.providerSpecificData),"kimi-coding":a=>F(a.accessToken,a.apiKey,a.proxyOptions,a.providerSpecificData),deepseek:a=>G(a.apiKey,a.proxyOptions),"grok-cli":a=>K(a.accessToken,a.providerSpecificData,a.proxyOptions)};async function U(a,b=null,c={}){let{provider:d,accessToken:e,apiKey:f,providerSpecificData:g,projectId:h}=a,i={...g||{},...h?{projectId:h}:{}},j=T[d];return j?await j({provider:d,accessToken:e,apiKey:f,providerSpecificData:g,providerDataWithProjectId:i,proxyOptions:b,force:!0===c.force}):{message:`Usage API not implemented for ${d}`}}},66451:(a,b,c)=>{c.d(b,{Xh:()=>f,js:()=>g});var d=c(58976);let e={el:"elevenlabs",jina:"jina-ai","jina-ai":"jina-ai",polly:"aws-polly","aws-polly":"aws-polly"};for(let a of d.A)for(let b of(e[a.id]=a.id,a.alias&&(e[a.alias]=a.id),a.aliases||[]))e[b]=a.id;function f(a){if(!a)return{provider:null,model:null,isAlias:!1,providerAlias:null};if(a.includes("/")){let b=a.indexOf("/"),c=a.slice(0,b),d=a.slice(b+1);return{provider:e[c]||c,model:d,isAlias:!1,providerAlias:c}}return{provider:null,model:a,isAlias:!0,providerAlias:null}}async function g(a,b){let c=f(a);if(!c.isAlias)return{provider:c.provider,model:c.model};let d="function"==typeof b?await b():b,g=function(a,b){var c,d;if(!b)return null;let f=b[a];if(!f)return null;if("string"==typeof f&&f.includes("/")){let a=f.indexOf("/");return{provider:e[c=f.slice(0,a)]||c,model:f.slice(a+1)}}return"object"==typeof f&&f.provider&&f.model?{provider:e[d=f.provider]||d,model:f.model}:null}(c.model,d);return g||{provider:function(a){if(!a)return"openai";let b=a.toLowerCase();return h.find(([a])=>a.test(b))?.[1]||"openai"}(c.model),model:c.model}}let h=[[/^grok-build$/,"grok-cli"],[/^claude-/,"anthropic"],[/^gemini-/,"gemini"],[/^gpt-/,"openai"],[/^o[134]/,"openai"],[/^deepseek-/,"openrouter"]]},75008:(a,b,c)=>{c.d(b,{R:()=>f});var d=c(57034);let e=/^arn:(aws|aws-us-gov):codewhisperer:([^:]+):(\d{12}):profile\/([^/]+)$/;function f(a){let b="string"==typeof a?a.trim():"",c=b.match(e);return c&&(0,d.i7)(c[2])?{profileArn:b,region:c[2]}:null}},88705:(a,b,c)=>{c.d(b,{IQ:()=>h,U:()=>f,eZ:()=>g,gD:()=>i,u9:()=>j});var d=c(45350),e=c(46052);let f=a=>d.xq[a]?.usage||{};function g(a){if(!a)return null;try{if(a instanceof Date)return a.toISOString();if("number"==typeof a)return new Date(a<1e12?1e3*a:a).toISOString();if("string"==typeof a){if(/^\d+$/.test(a)){let b=Number(a);return new Date(b<1e12?1e3*b:b).toISOString()}return new Date(a).toISOString()}return null}catch(b){return console.warn(`Failed to parse reset time: ${a}`,b),null}}function h(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&a.trim()){let b=Number(a);if(Number.isFinite(b))return b}return b}function i(a){return"string"==typeof a?a.trim()||null:a&&"object"==typeof a&&"string"==typeof a.id&&a.id.trim()||null}async function j(a,b,c=1e4,d=null){let f=new AbortController,g=setTimeout(()=>f.abort(),c);try{return await (0,e.Fm)(a,{...b,signal:f.signal},d)}finally{clearTimeout(g)}}},98594:(a,b,c)=>{c.d(b,{g:()=>j});var d=c(46052),e=c(92675),f=c(88705);let g={oauthUsageUrl:(0,f.U)("claude").oauthUrl,usageUrl:(0,f.U)("claude").orgUrl,settingsUrl:(0,f.U)("claude").settingsUrl,apiVersion:e.b8},h=new Map,i=new Map;async function j(a,b=null,c={}){let d=c?.force===!0;if(!d&&a){let b=i.get(a);if(b?.promise)return b.promise;if(b&&b.expiresAt>Date.now())return b.result}let e=!d&&a&&i.get(a)?.result||null,f=(async()=>{let c=await k(a,b);return a&&c?.quotas?(i.set(a,{result:c,expiresAt:Date.now()+3e5}),c):e||c})();return a&&i.set(a,{promise:f}),f.then(()=>{let b=i.get(a);a&&b?.promise===f&&i.delete(a)}),f}async function k(a,b=null){try{let c=h.get(a);if(c&&Date.now()<c)return await l(a,b);let e=await (0,d.Fm)(g.oauthUsageUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-beta":"oauth-2025-04-20","anthropic-version":g.apiVersion},identity:"claude-cli",provider:"claude",format:"claude"},b);if(e.ok){let a=await e.json(),b={},c=a=>a&&"object"==typeof a&&"number"==typeof a.utilization,d=a=>{let b=a.utilization,c=Math.max(0,100-b);return{used:b,total:100,remaining:c,remainingPercentage:c,resetAt:(0,f.eZ)(a.resets_at),unlimited:!1}};for(let[e,f]of(c(a.five_hour)&&(b["session (5h)"]=d(a.five_hour)),c(a.seven_day)&&(b["weekly (7d)"]=d(a.seven_day)),Object.entries(a)))if(e.startsWith("seven_day_")&&"seven_day"!==e&&c(f)){let a=e.replace("seven_day_","");b[`weekly ${a} (7d)`]=d(f)}return{plan:"Claude Code",extraUsage:a.extra_usage??null,quotas:b}}return 429===e.status&&h.set(a,Date.now()+18e4),console.warn(`[Claude Usage] OAuth endpoint returned ${e.status}, falling back to legacy`),await l(a,b)}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}async function l(a,b=null){try{let c=await (0,d.Fm)(g.settingsUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":g.apiVersion},identity:"claude-cli",provider:"claude",format:"claude"},b);if(c.ok){let e=await c.json();if(e.organization_id){let c=await (0,d.Fm)(g.usageUrl.replace("{org_id}",e.organization_id),{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":g.apiVersion},identity:"claude-cli",provider:"claude",format:"claude"},b);if(c.ok){let a=await c.json();return{plan:e.plan||"Unknown",organization:e.organization_name,quotas:a}}}return{plan:e.plan||"Unknown",organization:e.organization_name,message:"Claude connected. Usage details require admin access."}}return{message:"Claude connected. Usage API requires admin permissions."}}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}}};
|
|
1
|
+
"use strict";exports.id=5616,exports.ids=[5616],exports.modules={18271:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{GET:()=>m,refreshAndUpdateCredentials:()=>l});var e=c(30369),f=c(15717),g=c(56002),h=c(48400),i=c(39326),j=c(40615),k=a([e,h]);[e,h]=k.then?(await k)():k;let n=["expired","authentication","unauthorized","401","re-authorize"];async function l(a,b=!1,c=null){let d=(0,h.SB)(a.provider),e={accessToken:a.accessToken,refreshToken:a.refreshToken,idToken:a.idToken,expiresAt:a.expiresAt||a.tokenExpiresAt,lastRefreshAt:a.lastRefreshAt,connectionId:a.id,providerSpecificData:a.providerSpecificData,copilotToken:a.providerSpecificData?.copilotToken,copilotTokenExpiresAt:a.providerSpecificData?.copilotTokenExpiresAt};if(!(b||d.needsRefresh(e)))return{connection:a,refreshed:!1};let g=await d.refreshCredentials(e,console,c);if(!g){if(a.accessToken)return{connection:a,refreshed:!1};throw Error("Failed to refresh credentials. Please re-authorize the connection.")}let i={updatedAt:new Date().toISOString()};g.accessToken&&(i.accessToken=g.accessToken),g.refreshToken&&(i.refreshToken=g.refreshToken),g.idToken&&(i.idToken=g.idToken),g.lastRefreshAt&&(i.lastRefreshAt=g.lastRefreshAt),g.expiresIn?(i.expiresAt=new Date(Date.now()+1e3*g.expiresIn).toISOString(),i.expiresIn=g.expiresIn):g.expiresAt&&(i.expiresAt=g.expiresAt);let j={...g.providerSpecificData||{},...g.copilotToken?{copilotToken:g.copilotToken}:{},...g.copilotTokenExpiresAt?{copilotTokenExpiresAt:g.copilotTokenExpiresAt}:{}};return Object.keys(j).length>0&&(i.providerSpecificData={...a.providerSpecificData||{},...j}),await (0,f.updateProviderConnection)(a.id,i),{connection:{...a,...i,providerSpecificData:i.providerSpecificData||a.providerSpecificData},refreshed:!0}}async function m(a,{params:b}){let c;try{let{connectionId:d}=await b,e="1"===new URL(a.url).searchParams.get("force");if(!(c=await (0,f.Mc)(d)))return Response.json({error:"Connection not found"},{status:404});let h="oauth"===c.authType,k=("apikey"===c.authType||"api_key"===c.authType)&&j.jO.includes(c.provider);if(!h&&!k)return Response.json({message:"Usage not available for this connection"});let m=await (0,i.B)(c.providerSpecificData),o={connectionProxyEnabled:!0===m.connectionProxyEnabled,connectionProxyUrl:m.connectionProxyUrl||"",connectionNoProxy:m.connectionNoProxy||"",vercelRelayUrl:m.vercelRelayUrl||"",strictProxy:!1};if(h)try{c=(await l(c,!1,o)).connection}catch(a){return console.error("[Usage API] Credential refresh failed:",a),Response.json({error:`Credential refresh failed: ${a.message}`},{status:401})}let p=await (0,g.my)(c,o,{force:e});if(h&&function(a){if(!a?.message)return!1;let b=a.message.toLowerCase();return n.some(a=>b.includes(a))}(p)&&c.refreshToken)try{c=(await l(c,!0,o)).connection,p=await (0,g.my)(c,o,{force:e})}catch(a){console.warn(`[Usage] ${c.provider}: force refresh failed: ${a.message}`)}return Response.json(p)}catch(b){let a=c?.provider??"unknown";return console.warn(`[Usage] ${a}: ${b.message}`),Response.json({error:b.message},{status:500})}}d()}catch(a){d(a)}})},39326:(a,b,c)=>{function d(a){return null==a?"":String(a).trim()}async function e(a={}){try{let b=function(a={}){let b=a?.connectionProxyEnabled===!0,c=d(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:d(a?.connectionNoProxy)}}(a);if(b.connectionProxyEnabled&&b.connectionProxyUrl)return{source:"legacy",proxyPoolId:null,proxyPool:null,...b,strictProxy:!1,vercelRelayUrl:""};return{source:"none",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:b.connectionNoProxy||"",strictProxy:!1,vercelRelayUrl:""}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1,vercelRelayUrl:""}}}c.d(b,{B:()=>e})},49485:(a,b,c)=>{c.d(b,{RO:()=>m,Tl:()=>k,Yt:()=>l});var d=c(46052),e=c(88705);let f={usageUrl:(0,e.U)("codex").url,resetCreditsUrl:(0,e.U)("codex").resetCreditsUrl,resetCreditsConsumeUrl:(0,e.U)("codex").resetCreditsConsumeUrl};function g(a){if(!a)return null;let b=a instanceof Date?a:new Date("number"==typeof a&&a<1e12?1e3*a:a);return Number.isFinite(b.getTime())?b.toISOString():null}function h(a){return!a||"object"!=typeof a||Array.isArray(a)?null:a.rate_limit&&"object"==typeof a.rate_limit?a.rate_limit:a}function i(a){let b=Math.max(0,Math.min(100,(0,e.IQ)(a?.used_percent??a?.percent_used,0)));return{used:b,total:100,remaining:Math.max(0,100-b),resetAt:(0,e.eZ)(a?.reset_at??a?.resets_at??a?.resetAt??null),unlimited:!1}}function j(a,b,c){let d=h(c);if(!d)return!1;let e=d.primary_window||d.primary||c.primary_window||c.primary,f=d.secondary_window||d.secondary||c.secondary_window||c.secondary,g=!1;return e&&(a[b?`${b}_session`:"session"]=i(e),g=!0),f&&(a[b?`${b}_weekly`:"weekly"]=i(f),g=!0),g}async function k(a,b=null){try{let c=await (0,d.Fm)(f.usageUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"},identity:"codex-cli",provider:"codex",format:"codex"},b);if(!c.ok)return{message:`Codex connected. Usage API temporarily unavailable (${c.status}).`};let g=await c.json(),i=g.rate_limit||g.rate_limits||g.rate_limits_by_limit_id?.codex||{},k=function(a){if(a.code_review_rate_limit||a.review_rate_limit)return a.code_review_rate_limit||a.review_rate_limit;let b=a.rate_limits_by_limit_id;return b&&"object"==typeof b&&!Array.isArray(b)?b.code_review||b.codex_review||b.review||null:(Array.isArray(a.additional_rate_limits)?a.additional_rate_limits:[]).find(a=>{let b=String(a?.limit_name||a?.metered_feature||a?.id||"").toLowerCase();return"code_review"===b||"codex_review"===b||"review"===b||b.includes("review")})||null}(g),l=Math.max(0,(0,e.IQ)(g.rate_limit_reset_credits?.available_count,0)),m={};return j(m,"",i),j(m,"review",k),{plan:g.plan_type||g.summary?.plan||"unknown",limitReached:h(i)?.limit_reached||!1,reviewLimitReached:h(k)?.limit_reached||!1,resetCredits:{availableCount:l},quotas:m}}catch(a){throw Error(`Failed to fetch Codex usage: ${a.message}`)}}async function l(a,b=null,c=null){if(!a)throw Error("No Codex access token available. Please re-authorize the connection.");let h=c?.workspaceId||c?.accountId||c?.chatgptAccountId||null,i={Authorization:`Bearer ${a}`,Accept:"application/json","OpenAI-Beta":"codex-1",originator:"codex_cli_rs"};h&&(i["ChatGPT-Account-ID"]=h);let j=await (0,d.Fm)(f.resetCreditsUrl,{method:"GET",headers:i,identity:"codex-cli",provider:"codex",format:"codex"},b),k=null;try{k=await j.json()}catch{k=null}if(!j.ok)throw Error(k?.message||k?.error||k?.detail||`Codex reset credits API unavailable (${j.status}).`);let m=Array.isArray(k?.credits)?k.credits:[];return{availableCount:Math.max(0,(0,e.IQ)(k?.available_count??k?.availableCount,0)),credits:m.map(a=>({status:String(a?.status||"unknown"),grantedAt:g(a?.granted_at??a?.grantedAt),expiresAt:g(a?.expires_at??a?.expiresAt)}))}}async function m(a,b,c=null){let g;if(!a)throw Error("No Codex access token available. Please re-authorize the connection.");if(!b||"string"!=typeof b)throw Error("A redeem request id is required to consume a Codex reset credit.");let h=null;try{g=await (0,d.Fm)(f.resetCreditsConsumeUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({redeem_request_id:b}),identity:"codex-cli",provider:"codex",format:"codex"},c);let e=await g.text();h=e?JSON.parse(e):null}catch(a){throw Error(`Failed to consume Codex reset credit: ${a.message}`)}let i=h?.code||null,j=(0,e.IQ)(h?.windows_reset,0);return{ok:g.ok&&("reset"===i||j>0),noCredit:g.ok&&"no_credit"===i,status:g.status,code:i,windowsReset:j,message:h?.message||null,raw:h}}},56002:(a,b,c)=>{c.d(b,{RO:()=>o.RO,Yt:()=>o.Yt,my:()=>U});var d=c(46052),e=c(88705);async function f(a,b,c=null){try{if(!a)throw Error("No GitHub access token available. Please re-authorize the connection.");let b=await (0,d.Fm)((0,e.U)("github").url,{headers:{Authorization:`token ${a}`,Accept:"application/json"},identity:"copilot",provider:"github",format:"openai"},c);if(!b.ok){let a=await b.text();throw Error(`GitHub API error: ${a}`)}let f=await b.json();if(f.quota_snapshots){let a=f.quota_snapshots,b=(0,e.eZ)(f.quota_reset_date);return{plan:f.copilot_plan,resetDate:f.quota_reset_date,quotas:{chat:{...g(a.chat),resetAt:b},completions:{...g(a.completions),resetAt:b},premium_interactions:{...g(a.premium_interactions),resetAt:b}}}}if(f.monthly_quotas||f.limited_user_quotas){let a=f.monthly_quotas||{},b=f.limited_user_quotas||{},c=(0,e.eZ)(f.limited_user_reset_date);return{plan:f.copilot_plan||f.access_type_sku,resetDate:f.limited_user_reset_date,quotas:{chat:{used:b.chat||0,total:a.chat||0,unlimited:!1,resetAt:c},completions:{used:b.completions||0,total:a.completions||0,unlimited:!1,resetAt:c}}}}return{message:"GitHub Copilot connected. Unable to parse quota data."}}catch(a){throw Error(`Failed to fetch GitHub usage: ${a.message}`)}}function g(a){return a?{used:a.entitlement-a.remaining,total:a.entitlement,remaining:a.remaining,unlimited:a.unlimited||!1}:{used:0,total:0,unlimited:!0}}var h=c(28730);let i=(0,e.U)("antigravity");async function j(a,b,c=null){if(!a)return{plan:"Free",message:"Gemini CLI access token not available."};try{let d=(0,e.gD)(b?.projectId),f="Free";if(!d){let b=await k(a,c);d=(0,e.gD)(b?.cloudaicompanionProject),f=b?.currentTier?.name||f}if(!d)return{plan:f,message:"Gemini CLI project ID not available. Reconnect Gemini CLI, or configure a Google Cloud project with Gemini Code Assist access before checking quota."};let g=await (0,e.u9)((0,e.U)("gemini-cli").quotaUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({project:d}),identity:"gemini-cli",provider:"gemini-cli",format:"gemini"},1e4,c);if(!g.ok)return{plan:f,message:`Gemini CLI quota error (${g.status}).`};let h=await g.json(),i={};if(Array.isArray(h.buckets))for(let a of h.buckets){if(!a.modelId||null==a.remainingFraction)continue;let b=Number(a.remainingFraction)||0,c=Math.round(1e3*b),d=Math.max(0,1e3-c);i[a.modelId]={used:d,total:1e3,resetAt:(0,e.eZ)(a.resetTime),remainingPercentage:100*b,unlimited:!1}}return{plan:f,quotas:i}}catch(a){return{message:`Gemini CLI error: ${a.message}`}}}async function k(a,b=null){try{let c=await (0,e.u9)((0,e.U)("gemini-cli").loadCodeAssistUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:h.Cn}),identity:"gemini-cli",provider:"gemini-cli",format:"gemini"},1e4,b);if(!c.ok)return null;return await c.json()}catch{return null}}async function l(a,b,c=null){try{let b=await m(a,c),d=b?.cloudaicompanionProject||null,f=await (0,e.u9)(i.quotaApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","X-Client-Name":"antigravity"},body:JSON.stringify({...d?{project:d}:{}}),identity:"antigravity",provider:"antigravity",format:"antigravity"},1e4,c);if(403===f.status)return{message:"Antigravity quota API access forbidden. Chat may still work.",quotas:{}};if(401===f.status)return{message:"Antigravity quota API authentication expired. Chat may still work.",quotas:{}};if(!f.ok)throw Error(`Antigravity API error: ${f.status}`);let g=await f.json(),h={};if(g.models){let a=["gemini-3-flash-agent","gemini-3.5-flash-low","gemini-3.5-flash-extra-low","gemini-pro-agent","gemini-3.1-pro-low","claude-sonnet-4-6","claude-opus-4-6-thinking","gpt-oss-120b-medium","gemini-3-flash","gemini-3.1-flash-image","gemini-3-pro-image"];for(let[b,c]of Object.entries(g.models)){if(!c.quotaInfo||c.isInternal||!a.includes(b))continue;let d=c.quotaInfo.remainingFraction||0,f=100*d,g=Math.round(1e3*d),i=1e3-g;h[b]={used:i,total:1e3,resetAt:(0,e.eZ)(c.quotaInfo.resetTime),remainingPercentage:f,unlimited:!1,displayName:c.displayName||b}}}return{plan:b?.currentTier?.name||"Unknown",quotas:h,subscriptionInfo:b}}catch(a){return console.error("[Antigravity Usage] Error:",a.message,a.cause),{message:`Antigravity error: ${a.message}`}}}async function m(a,b=null){try{let c=await (0,e.u9)(i.loadProjectApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:h.Cn,mode:1}),identity:"antigravity",provider:"antigravity",format:"antigravity"},1e4,b);if(!c.ok)return null;return await c.json()}catch(a){return console.error("[Antigravity Subscription] Error:",a.message),null}}var n=c(98594),o=c(49485),p=c(3148);async function q(a,b,c=null){let f=b?.authMethod||"builder-id",g="api_key"===f,h=g?{tokentype:"API_KEY"}:{},i="external_idp"===f?{TokenType:"EXTERNAL_IDP"}:{},j=g?b?.profileArn||"":b?.profileArn||(0,p.We)(f),k=new URLSearchParams({isEmailRequired:"true",origin:"AI_EDITOR",resourceType:"AGENTIC_REQUEST"}),l=!1,m=[];for(let b of[{name:"codewhisperer-get",run:async()=>(0,d.Fm)(`${(0,e.U)("kiro").cwHost}${(0,e.U)("kiro").limitsPath}?${k.toString()}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","x-amz-user-agent":"aws-sdk-js/1.0.0 KiroIDE","user-agent":"aws-sdk-js/1.0.0 KiroIDE",...h,...i}},c)},{name:"codewhisperer-post",run:async()=>(0,d.Fm)((0,e.U)("kiro").cwHost,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.GetUsageLimits",Accept:"application/json",...h,...i},body:JSON.stringify({origin:"AI_EDITOR",...j?{profileArn:j}:{},resourceType:"AGENTIC_REQUEST"})},c)},{name:"q-get",run:async()=>{let b=new URLSearchParams({origin:"AI_EDITOR",...j?{profileArn:j}:{},resourceType:"AGENTIC_REQUEST"});return(0,d.Fm)(`${(0,e.U)("kiro").qHost}${(0,e.U)("kiro").limitsPath}?${b}`,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json",...h,...i}},c)}}])try{let a=await b.run();if(!a.ok){let c=await a.text().catch(()=>"");(401===a.status||403===a.status)&&(l=!0),m.push(`${b.name}:${a.status}${c?`:${c}`:""}`);continue}let c=await a.json();return function(a){let b=a.usageBreakdownList||[],c={},d=(0,e.eZ)(a.nextDateReset||a.resetDate);return b.forEach(a=>{let b=a.resourceType?.toLowerCase()||"unknown",f=a.currentUsageWithPrecision||0,g=a.usageLimitWithPrecision||0;if(c[b]={used:f,total:g,remaining:g-f,resetAt:d,unlimited:!1},a.freeTrialInfo){let f=a.freeTrialInfo.currentUsageWithPrecision||0,g=a.freeTrialInfo.usageLimitWithPrecision||0;c[`${b}_freetrial`]={used:f,total:g,remaining:g-f,resetAt:(0,e.eZ)(a.freeTrialInfo.freeTrialExpiry||d),unlimited:!1}}}),{plan:a.subscriptionInfo?.subscriptionTitle||"Kiro",quotas:c}}(c)}catch(a){m.push(`${b.name}:${a.message}`)}return l&&"idc"===f?{message:"Kiro quota API is unavailable for the current AWS IAM Identity Center session. Chat may still work. If this persists after renewing your session, reconnect Kiro.",quotas:{}}:l&&("google"===f||"github"===f)?{message:"Kiro quota API authentication expired. Chat may still work.",quotas:{}}:l?{message:"Kiro quota API rejected the current token. Chat may still work.",quotas:{}}:{message:m.length>0?`Unable to fetch Kiro usage right now. (${m[m.length-1]})`:"Unable to fetch Kiro usage right now.",quotas:{}}}let r={minimax:(0,e.U)("minimax").urls,"minimax-cn":(0,e.U)("minimax-cn").urls};function s(a,b,c){return a&&"object"==typeof a?a[b]??a[c]??null:null}function t(a,b,c){if(!a||"object"!=typeof a)return null;let d=a[b]??a[c];if(null==d)return null;let e=Number(d);return Number.isFinite(e)?Math.max(0,Math.min(100,e)):null}function u(a){return Math.max(0,Number(s(a,"current_interval_total_count","currentIntervalTotalCount"))||0)}function v(a){return Math.max(0,Number(s(a,"current_weekly_total_count","currentWeeklyTotalCount"))||0)}function w(a){return!!(u(a)>0||v(a)>0)||null!==t(a,"current_interval_remaining_percent","currentIntervalRemainingPercent")||null!==t(a,"current_weekly_remaining_percent","currentWeeklyRemainingPercent")}function x(a,b,c,d,f,g,h,i,j,k){let l=d(c),m=t(c,h,i);if(l<=0&&null===m)return;let n=Math.max(0,Number(s(c,f,g))||0),o=l,p=n;l<=0&&(o=100,p=k?Math.round(m/100*o):Math.round(o*(1-m/100))),a[b]=function(a,b,c,d,e=null){var f,g,h;let i=Math.max(0,a),j=d?Math.max(i-b,0):Math.min(Math.max(0,b),i),k=Math.max(i-j,0),l=(f=e,g=k,h=i,null!=f&&Number.isFinite(f)?Math.max(0,Math.min(100,f)):h>0?Math.max(0,Math.min(100,g/h*100)):0);return{used:j,total:i,remaining:k,remainingPercentage:l,resetAt:c,unlimited:!1}}(o,p,function(a,b,c,d,f,g){let h=Number(s(a,c,d))||0;return h>0?new Date(b+h).toISOString():(0,e.eZ)(s(a,f,g))}(c,...j),k,m)}async function y(a,b,c=null){if(!a)return{message:"MiniMax API key not available."};let e=r[b]||[],f="";for(let b=0;b<e.length;b+=1){let g=e[b],h=b<e.length-1;try{let b=await (0,d.Fm)(g,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"}},c),e=await b.text(),i={};if(e)try{i=JSON.parse(e)}catch{i={}}let j=(i?.base_resp??i?.baseResp)||{},k=Number(j.status_code??j.statusCode)||0,l=String(j.status_msg??j.statusMsg??"").trim(),m=`${l} ${e}`.trim(),n=/token plan|coding plan|invalid api key|invalid key|unauthorized|inactive/i;if(401===b.status||403===b.status||1004===k||n.test(m))return{message:"MiniMax API key invalid or inactive. Use an active Token/Coding Plan key."};if(!b.ok){if(f=`MiniMax usage endpoint error (${b.status})`,(404===b.status||405===b.status||b.status>=500)&&h)continue;return{message:`MiniMax connected. ${f}`}}if(0!==k)return{message:`MiniMax connected. ${l||"Upstream quota API error"}`};let o=i?.model_remains??i?.modelRemains,p=(Array.isArray(o)?o:[]).filter(w);if(0===p.length)return{message:"MiniMax connected. No quota data was returned."};let q=Date.now(),r=g.includes("/coding_plan/remains"),t={};for(let a of p){let b=function(a){let b=String(s(a,"model_name","modelName")||"").trim();return b?"MiniMax-M*"===b||"general"===b?"M-series":b.replace(/[_-]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,a=>a.toUpperCase()).replace(/\bTo\b/g,"to").replace(/\bTts\b/g,"TTS").replace(/\bHd\b/g,"HD"):"MiniMax"}(a);x(t,`${b} (5h)`,a,u,"current_interval_usage_count","currentIntervalUsageCount","current_interval_remaining_percent","currentIntervalRemainingPercent",[q,"remains_time","remainsTime","end_time","endTime"],r),x(t,`${b} (7d)`,a,v,"current_weekly_usage_count","currentWeeklyUsageCount","current_weekly_remaining_percent","currentWeeklyRemainingPercent",[q,"weekly_remains_time","weeklyRemainsTime","weekly_end_time","weeklyEndTime"],r)}if(0===Object.keys(t).length)return{message:"MiniMax connected. Unable to extract quota usage."};return{quotas:t}}catch(a){if(f=a.message,!h)break}}return{message:f?`MiniMax connected. Unable to fetch usage: ${f}`:"MiniMax connected. Unable to fetch usage."}}var z=c(45350);let A="codebuddy-cn";function B(a,b){let c=Number(a??b);return Number.isFinite(c)?c:0}async function C(a,b,c,f=null){let g=a||b;if(!g)return{message:"CodeBuddy CN credential not available."};try{let a=await (0,d.Fm)((0,e.U)(A).url,{method:"POST",headers:{...z.xq[A]?.headers||{},Authorization:`Bearer ${g}`,"Content-Type":"application/json",Accept:"application/json"},body:"{}"},f);if(401===a.status||403===a.status)return{message:"CodeBuddy CN credential invalid or expired."};if(!a.ok)return{message:`CodeBuddy CN quota API error (${a.status}).`};let b=await a.json();if(b?.code!==0)return{message:`CodeBuddy CN quota error: ${b?.msg||"unknown"}`};let c=b?.data?.Response?.Data||{},h=Array.isArray(c.Accounts)?c.Accounts:[];if(0===h.length)return{message:"CodeBuddy CN connected. No credit package found."};let i=a=>{let b=(0,e.eZ)(a.CycleEndTime);return b?new Date(b).getTime():1/0},j=a=>{let b=i(a),c=Number(a.DeductionEndTime);return Number.isFinite(b)&&Number.isFinite(c)&&c-b>1728e5},k=(a,b)=>i(a)-i(b),l=h.filter(j).sort(k),m=h.filter(a=>!j(a)).sort(k),n={},o={};l.forEach(a=>{let b=function(a){let b=(0,e.eZ)(a.CycleStartTime),c=(0,e.eZ)(a.CycleEndTime);if(b&&c){let a=(new Date(c).getTime()-new Date(b).getTime())/864e5;if(a<=1.5)return"Daily";if(a<=10)return"Weekly"}return"Monthly"}(a);o[b]=(o[b]||0)+1,n[o[b]>1?`${b} ${o[b]}`:b]={used:B(a.CycleCapacityUsedPrecise,a.CycleCapacityUsed),total:B(a.CycleCapacitySizePrecise,a.CycleCapacitySize),resetAt:(0,e.eZ)(a.CycleEndTime),unlimited:!1,recurring:!0}}),m.forEach((a,b)=>{n[`Bonus Pack ${b+1}`]={used:B(a.CapacityUsedPrecise,a.CapacityUsed),total:B(a.CapacitySizePrecise,a.CapacitySize),resetAt:(0,e.eZ)(a.CycleEndTime),unlimited:!1,recurring:!1}});let p=l[0]||h[0]||{};return{plan:p.PackageName||p.SubProductName||"CodeBuddy CN",quotas:n}}catch(a){return{message:`CodeBuddy CN error: ${a.message}`}}}let D={LEVEL_BASIC:"Moderato",LEVEL_INTERMEDIATE:"Allegretto",LEVEL_ADVANCED:"Allegro",LEVEL_STANDARD:"Vivace"};function E({used:a,total:b,remaining:c,resetAt:d}){let f,g=Math.max(0,(0,e.IQ)(b,0)),h=Math.max(0,(0,e.IQ)(a,0));return f=g>0&&null!=c&&Number.isFinite(Number(c))?Math.max(0,Number(c))/g*100:g>0?Math.max(0,g-h)/g*100:0,{used:h,total:g,remainingPercentage:f,resetAt:d||null,unlimited:!1}}async function F(a=null,b=null,c=null,f=null){let g="string"==typeof b&&b.length>0,i=!g&&"string"==typeof a&&a.length>0;if(!g&&!i)return{message:"Kimi access token or API key not available."};let j=g?{"x-api-key":b}:{Authorization:`Bearer ${a}`,...(0,h.VK)(f?.deviceId)};try{let a,b=await (0,d.Fm)("https://api.kimi.com/coding/v1/usages",{method:"GET",headers:{...j,"Content-Type":"application/json",Accept:"application/json"}},c),f=await b.text().catch(()=>"");if(!b.ok)return{plan:"Kimi Coding",message:function(a,b){let c=null;try{c=JSON.parse(b||"")}catch{}let d=Array.isArray(c?.details)?c.details[0]:null,e=d?.debug||c?.debug||null,f=e?.reason||c?.reason||"",g=e?.localizedMessage?.message||d?.localizedMessage?.message||c?.message||"";if(401===a)return"Kimi authentication expired. Please re-authorize.";if(403===a&&("REASON_FEATURE_NO_PERMISSION"===f||/permission_denied|do not have permission|subscribe/i.test(`${c?.code||""} ${g} ${b||""}`)))return g||"Kimi connected, but this account has no permission to view usage. Subscribe to Kimi Code to access quota.";let h=(g||b||"").slice(0,100);return h?`Kimi Coding connected. API Error ${a}: ${h}`:`Kimi Coding connected. API Error ${a}`}(b.status,f)};try{a=JSON.parse(f||"{}")}catch{return{plan:"Kimi Coding",message:"Kimi Coding connected. Invalid JSON response from API."}}let g={},h=a?.usage&&"object"==typeof a.usage?a.usage:{},i=(0,e.IQ)(h.limit??h.Limit,0),k=(0,e.IQ)(h.used??h.Used,0),l=h.remaining??h.Remaining,m=null!=l&&""!==l?(0,e.IQ)(l,NaN):NaN,n=h.resetTime||h.ResetTime||h.reset_at||h.resetAt;for(let b of(i>0&&(g.Weekly=E({used:k,total:i,remaining:Number.isFinite(m)?m:null,resetAt:(0,e.eZ)(n)})),Array.isArray(a?.limits)?a.limits:[])){if(!b||"object"!=typeof b)continue;let a=b.detail&&"object"==typeof b.detail?b.detail:{},c=(0,e.IQ)(a.limit??a.Limit,0),d=(0,e.IQ)(a.remaining??a.Remaining,NaN),f=a.resetTime||a.reset_at||a.resetAt;if(c>0){let a=Number.isFinite(d)?d:Math.max(0,c);g.Ratelimit=E({used:Math.max(0,c-a),total:c,remaining:a,resetAt:(0,e.eZ)(f)})}}let o=a?.user?.membership?.level,p=function(a){if(!a)return"";let b=String(a);return D[b]?D[b]:b.replace(/^LEVEL_/,"").toLowerCase()}(o)||"Kimi Coding";if(Object.keys(g).length>0)return{plan:p,quotas:g};return{plan:p,message:"Kimi Coding connected. Usage tracked per request."}}catch(a){return{message:`Kimi Coding connected. Unable to fetch usage: ${a.message}`}}}async function G(a=null,b=null){if(!a||"string"!=typeof a||!a.trim())return{message:"DeepSeek API key not available. Add a key to view usage."};try{let c=await (0,d.Fm)("https://api.deepseek.com/user/balance",{method:"GET",headers:{Authorization:`Bearer ${a.trim()}`,"Content-Type":"application/json",Accept:"application/json"}},b);if(401===c.status||403===c.status)return{plan:"DeepSeek",message:"DeepSeek authentication failed. Check the API key."};if(!c.ok){let a=await c.text().catch(()=>"");return{plan:"DeepSeek",message:`DeepSeek balance API error (${c.status})${a?`: ${a.slice(0,120)}`:""}`}}let f=await c.json().catch(()=>null);if(!f||"object"!=typeof f)return{message:"DeepSeek balance response was not JSON."};let g=function(a){let b=Array.isArray(a?.balance_infos)?a.balance_infos:[],c=[];for(let a of b){if(!a||"object"!=typeof a)continue;let b="string"==typeof a.currency?a.currency.toUpperCase():"";if(!b)continue;let d=(0,e.IQ)(a.total_balance??a.totalBalance,0);c.push({currency:b,totalBalance:d,grantedBalance:(0,e.IQ)(a.granted_balance??a.grantedBalance,0),toppedUpBalance:(0,e.IQ)(a.topped_up_balance??a.toppedUpBalance,0)})}return c}(f);if(0===g.length)return{plan:"DeepSeek",message:"DeepSeek connected. No balance data returned."};let h=!0===f.is_available||!0===f.isAvailable,i={};for(let a of g){let b=Math.max(0,a.totalBalance);i[`Balance (${a.currency})`]={used:0,total:b,remainingPercentage:100*(b>0),resetAt:null,unlimited:b>0}}return{plan:h?"DeepSeek":"DeepSeek (Insufficient Balance)",quotas:i}}catch(a){return{message:`DeepSeek error: ${a.message}`}}}var H=c(13247);let I=(a,b=0)=>a&&"object"==typeof a&&"val"in a?(0,e.IQ)(a.val,b):(0,e.IQ)(a,b);function J(a,b,c=null){let d=Math.max(0,b),e=Math.max(0,a);return{used:e,total:d,remainingPercentage:d?Math.max(0,(d-e)/d*100):0,resetAt:c,unlimited:!1}}async function K(a,b=null,c=null){if(!a)return{message:"Grok CLI access token not available."};let f=(0,H.Ab)(a,b||{}),g=(0,e.U)("grok-cli");try{let[a,b]=await Promise.all([(0,d.Fm)(g.url,{method:"GET",headers:f,...H.Ai},c),(0,d.Fm)(g.userUrl,{method:"GET",headers:f,signal:AbortSignal.timeout(2e3),...H.Ai},c).catch(()=>null)]);if(401===a.status||403===a.status)return{message:"Grok CLI authentication expired. Please re-authorize."};if(!a.ok)return{message:`Grok CLI billing API error (${a.status})`};let h=await a.json(),i=b?.ok?await b.json().catch(()=>null):null,j=function(a,b=null){let c=a&&"object"==typeof a?a:{},d=c.config&&"object"==typeof c.config?c.config:c,f=(0,e.eZ)(d.billingPeriodEnd||d.currentPeriod?.end||d.resetAt),g=b?.subscriptionTier||b?.subscription_tier||b?.subscription?.tier||"",h="string"==typeof g&&""!==g&&!/^(free|none|null)$/i.test(g),i={},j=I(d.monthlyLimit??c.monthlyLimit,NaN),k=I(d.includedUsed??c.includedUsed??d.totalUsed??c.totalUsed,0);Number.isFinite(j)&&j>0&&(i["Monthly included"]=J(k,j,f));let l=I(d.onDemandCap??c.onDemandCap,NaN),m=I(d.onDemandUsed??c.onDemandUsed,0);Number.isFinite(l)&&l>0?i["On-demand"]=J(m,l,f):h||0!==l||(i["On-demand"]=J(1,1,f));let n=I(d.prepaidBalance??c.prepaidBalance,NaN);return Number.isFinite(n)&&n>0&&(i.Prepaid=J(0,n)),{plan:g?String(g).replace(/[_-]+/g," ").replace(/\b\w/g,a=>a.toUpperCase()):b?.hasGrokCodeAccess?"Grok Code":"Grok Build",quotas:i,subscriptionAccess:h}}(h,i);if(Object.keys(j.quotas).length)return{plan:j.plan,quotas:j.quotas};return{plan:j.plan,quotas:{},message:j.subscriptionAccess?"Subscription access is active; Grok does not expose a numeric included quota.":"Grok Build connected, but no credit allotment was returned."}}catch(a){return{message:`Grok CLI usage error: ${a.message}`}}}let L={international:(0,e.U)("glm").url,china:(0,e.U)("glm-cn").url},M=(0,e.U)("vercel-ai-gateway").url;async function N(a,b){try{if(!b?.resourceUrl)return{message:"Qwen connected. No resource URL available."};return{message:"Qwen connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch Qwen usage."}}}async function O(a){try{return{message:"iFlow connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch iFlow usage."}}}async function P(a,b,c=null){if(!a)return{message:"Ollama Cloud API key not available."};try{let b,f=await (0,d.Fm)("https://ollama.com/api/usage",{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},c);if(401===f.status||403===f.status)return{message:"Ollama Cloud API key invalid or expired."};if(!f.ok)return{message:`Ollama Cloud usage API error (${f.status}).`};try{b=await f.json()}catch{return{message:"Ollama Cloud usage response was not JSON."}}let g=await (0,d.Fm)("https://ollama.com/api/me",{method:"POST",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Length":"0"}},c).then(a=>a.ok?a.json():null).catch(()=>null),h="string"==typeof g?.Plan?g.Plan:"",i=h?h.charAt(0).toUpperCase()+h.slice(1).toLowerCase():"Ollama Cloud",j=b?.limits&&"object"==typeof b.limits?b.limits:{};function e(a,b=null){let c=Math.max(0,Math.min(1,Number(a)||0)),d=Math.round(100*c);return{used:d,total:100,remainingPercentage:100-d,resetAt:b,unlimited:!1}}let k=j.session?.usage,l=j.weekly?.usage,m=Number(k),n=Number(l),o=null!=k&&!Number.isNaN(m),p=null!=l&&!Number.isNaN(n);if(!o&&!p)return{plan:i,message:"Ollama Cloud connected. No usage limits reported.",quotas:{}};let q={};return o&&(q["Session (5h)"]=e(m)),p&&(q["Weekly (7d)"]=e(n)),{plan:i,quotas:q}}catch(a){return{message:`Ollama Cloud error: ${a.message}`}}}async function Q(a,b,c=null){if(!a)return{message:"GLM API key not available."};let e=L["glm-cn"===b?"china":"international"];try{let b=await (0,d.Fm)(e,{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},c);if(!b.ok){if(401===b.status)return{message:"GLM API key invalid or expired."};return{message:`GLM quota API error (${b.status}).`}}let f=await b.json(),g=f?.data&&"object"==typeof f.data?f.data:{},h=Array.isArray(g.limits)?g.limits:[],i={};for(let a of h){if(!a||"TOKENS_LIMIT"!==a.type)continue;let b=Number(a.percentage)||0,c=Number(a.nextResetTime)||0,d=Math.max(0,100-b);i.session={used:b,total:100,remaining:d,remainingPercentage:d,resetAt:c>0?new Date(c).toISOString():null,unlimited:!1}}let j="string"==typeof g.level?g.level:"";return{plan:j?j.charAt(0).toUpperCase()+j.slice(1).toLowerCase():"Unknown",quotas:i}}catch(a){return{message:`GLM error: ${a.message}`}}}async function R(a,b=null){if(!a)return{message:"Vercel AI Gateway API key not available."};try{let c=await (0,d.Fm)(M,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},b);if(401===c.status||403===c.status)return{message:"Vercel AI Gateway API key invalid or expired."};if(!c.ok){let a=await c.text().catch(()=>""),b=a?`: ${a.slice(0,200)}`:"";return{message:`Vercel AI Gateway credits API error (${c.status})${b}`}}let e=await c.json(),f=Number(e?.balance)||0,g=Number(e?.total_used)||0;if(f<=0&&g<=0)return{plan:"Pay-as-you-go",message:"Vercel AI Gateway connected. No credit allocation found (BYOK or unfunded account).",quotas:{}};return{plan:"Pay-as-you-go",quotas:{"Used (USD)":{used:g,total:0,remaining:0,remainingPercentage:100,unlimited:!0},"Remaining (USD)":{used:f,total:5,remaining:f,remainingPercentage:f/5*100,unlimited:!1}}}}catch(a){return{message:`Vercel AI Gateway error: ${a.message}`}}}async function S(a,b=null){if(!a)return{message:"Qoder usage unavailable: no access token"};try{let c=await (0,d.Fm)((0,e.U)("qoder").url,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},b);if(!c.ok)return{message:`Qoder connected. Usage fetch returned ${c.status}.`};let f=await c.json().catch(()=>null);if(!f)return{message:"Qoder connected. Usage response was not JSON."};let g=f.userQuota||{},h=f.orgResourcePackage||{},i=Number.isFinite(Number(f.expiresAt))&&Number(f.expiresAt)>0?Number(f.expiresAt):null,j=i?new Date(i).toISOString():null;return{quotas:{user:{total:Number(g.total)||0,used:Number(g.used)||0,remaining:Number(g.remaining)||0,unit:g.unit||"credits",resetAt:j},organization:{total:Number(h.total)||0,used:Number(h.used)||0,remaining:Number(h.remaining)||0,unit:h.unit||"credits",resetAt:j}},totalUsagePercentage:Number(f.totalUsagePercentage)||0,isQuotaExceeded:!!f.isQuotaExceeded,expiresAt:i}}catch(a){return{message:`Qoder connected. Unable to fetch usage: ${a.message}`}}}let T={github:a=>f(a.accessToken,a.providerSpecificData,a.proxyOptions),"gemini-cli":a=>j(a.accessToken,a.providerDataWithProjectId,a.proxyOptions),antigravity:a=>l(a.accessToken,a.providerSpecificData,a.proxyOptions),claude:a=>(0,n.g)(a.accessToken,a.proxyOptions,{force:a.force}),codex:a=>(0,o.Tl)(a.accessToken,a.proxyOptions),kiro:a=>q(a.accessToken,a.providerSpecificData,a.proxyOptions),qoder:a=>S(a.accessToken,a.proxyOptions),qwen:a=>N(a.accessToken,a.providerSpecificData),iflow:a=>O(a.accessToken),ollama:a=>P(a.apiKey,a.providerSpecificData,a.proxyOptions),glm:a=>Q(a.apiKey,a.provider,a.proxyOptions),"glm-cn":a=>Q(a.apiKey,a.provider,a.proxyOptions),minimax:a=>y(a.apiKey,a.provider,a.proxyOptions),"minimax-cn":a=>y(a.apiKey,a.provider,a.proxyOptions),"vercel-ai-gateway":a=>R(a.apiKey,a.proxyOptions),"codebuddy-cn":a=>C(a.accessToken,a.apiKey,a.providerSpecificData,a.proxyOptions),kimi:a=>F(a.accessToken,a.apiKey,a.proxyOptions,a.providerSpecificData),"kimi-coding":a=>F(a.accessToken,a.apiKey,a.proxyOptions,a.providerSpecificData),deepseek:a=>G(a.apiKey,a.proxyOptions),"grok-cli":a=>K(a.accessToken,a.providerSpecificData,a.proxyOptions)};async function U(a,b=null,c={}){let{provider:d,accessToken:e,apiKey:f,providerSpecificData:g,projectId:h}=a,i={...g||{},...h?{projectId:h}:{}},j=T[d];return j?await j({provider:d,accessToken:e,apiKey:f,providerSpecificData:g,providerDataWithProjectId:i,proxyOptions:b,force:!0===c.force}):{message:`Usage API not implemented for ${d}`}}},66451:(a,b,c)=>{c.d(b,{Xh:()=>f,js:()=>h,sc:()=>g});var d=c(58976);let e={el:"elevenlabs",jina:"jina-ai","jina-ai":"jina-ai",polly:"aws-polly","aws-polly":"aws-polly"};for(let a of d.A)for(let b of(e[a.id]=a.id,a.alias&&(e[a.alias]=a.id),a.aliases||[]))e[b]=a.id;function f(a){if(!a)return{provider:null,model:null,isAlias:!1,providerAlias:null};if(a.includes("/")){let b=a.indexOf("/"),c=a.slice(0,b),d=a.slice(b+1);return{provider:e[c]||c,model:d,isAlias:!1,providerAlias:c}}return{provider:null,model:a,isAlias:!0,providerAlias:null}}function g(a,b){var c,d;if(!b||"string"!=typeof a)return null;let f=b[a];if(!f){for(let[c,d]of Object.entries(b))if("string"==typeof c&&c.includes("*"))try{let b="^"+c.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*")+"$";if(RegExp(b,"i").test(a)){f=d;break}}catch{}}if(!f)return null;if("string"==typeof f&&f.includes("/")){let a=f.indexOf("/");return{provider:e[c=f.slice(0,a)]||c,model:f.slice(a+1)}}return"object"==typeof f&&f.provider&&f.model?{provider:e[d=f.provider]||d,model:f.model}:"string"==typeof f?{provider:null,model:f}:null}async function h(a,b){let c=f(a);if(!c.isAlias)return{provider:c.provider,model:c.model};let d="function"==typeof b?await b():b,e=g(c.model,d);return e||{provider:function(a){if(!a)return"openai";let b=a.toLowerCase();return i.find(([a])=>a.test(b))?.[1]||"openai"}(c.model),model:c.model}}let i=[[/^grok-build$/,"grok-cli"],[/^claude-/,"anthropic"],[/^gemini-/,"gemini"],[/^gpt-/,"openai"],[/^o[134]/,"openai"],[/^deepseek-/,"openrouter"]]},75008:(a,b,c)=>{c.d(b,{R:()=>f});var d=c(57034);let e=/^arn:(aws|aws-us-gov):codewhisperer:([^:]+):(\d{12}):profile\/([^/]+)$/;function f(a){let b="string"==typeof a?a.trim():"",c=b.match(e);return c&&(0,d.i7)(c[2])?{profileArn:b,region:c[2]}:null}},88705:(a,b,c)=>{c.d(b,{IQ:()=>h,U:()=>f,eZ:()=>g,gD:()=>i,u9:()=>j});var d=c(45350),e=c(46052);let f=a=>d.xq[a]?.usage||{};function g(a){if(!a)return null;try{if(a instanceof Date)return a.toISOString();if("number"==typeof a)return new Date(a<1e12?1e3*a:a).toISOString();if("string"==typeof a){if(/^\d+$/.test(a)){let b=Number(a);return new Date(b<1e12?1e3*b:b).toISOString()}return new Date(a).toISOString()}return null}catch(b){return console.warn(`Failed to parse reset time: ${a}`,b),null}}function h(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&a.trim()){let b=Number(a);if(Number.isFinite(b))return b}return b}function i(a){return"string"==typeof a?a.trim()||null:a&&"object"==typeof a&&"string"==typeof a.id&&a.id.trim()||null}async function j(a,b,c=1e4,d=null){let f=new AbortController,g=setTimeout(()=>f.abort(),c);try{return await (0,e.Fm)(a,{...b,signal:f.signal},d)}finally{clearTimeout(g)}}},98594:(a,b,c)=>{c.d(b,{g:()=>j});var d=c(46052),e=c(92675),f=c(88705);let g={oauthUsageUrl:(0,f.U)("claude").oauthUrl,usageUrl:(0,f.U)("claude").orgUrl,settingsUrl:(0,f.U)("claude").settingsUrl,apiVersion:e.b8},h=new Map,i=new Map;async function j(a,b=null,c={}){let d=c?.force===!0;if(!d&&a){let b=i.get(a);if(b?.promise)return b.promise;if(b&&b.expiresAt>Date.now())return b.result}let e=!d&&a&&i.get(a)?.result||null,f=(async()=>{let c=await k(a,b);return a&&c?.quotas?(i.set(a,{result:c,expiresAt:Date.now()+3e5}),c):e||c})();return a&&i.set(a,{promise:f}),f.then(()=>{let b=i.get(a);a&&b?.promise===f&&i.delete(a)}),f}async function k(a,b=null){try{let c=h.get(a);if(c&&Date.now()<c)return await l(a,b);let e=await (0,d.Fm)(g.oauthUsageUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-beta":"oauth-2025-04-20","anthropic-version":g.apiVersion},identity:"claude-cli",provider:"claude",format:"claude"},b);if(e.ok){let a=await e.json(),b={},c=a=>a&&"object"==typeof a&&"number"==typeof a.utilization,d=a=>{let b=a.utilization,c=Math.max(0,100-b);return{used:b,total:100,remaining:c,remainingPercentage:c,resetAt:(0,f.eZ)(a.resets_at),unlimited:!1}};for(let[e,f]of(c(a.five_hour)&&(b["session (5h)"]=d(a.five_hour)),c(a.seven_day)&&(b["weekly (7d)"]=d(a.seven_day)),Object.entries(a)))if(e.startsWith("seven_day_")&&"seven_day"!==e&&c(f)){let a=e.replace("seven_day_","");b[`weekly ${a} (7d)`]=d(f)}return{plan:"Claude Code",extraUsage:a.extra_usage??null,quotas:b}}return 429===e.status&&h.set(a,Date.now()+18e4),console.warn(`[Claude Usage] OAuth endpoint returned ${e.status}, falling back to legacy`),await l(a,b)}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}async function l(a,b=null){try{let c=await (0,d.Fm)(g.settingsUrl,{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":g.apiVersion},identity:"claude-cli",provider:"claude",format:"claude"},b);if(c.ok){let e=await c.json();if(e.organization_id){let c=await (0,d.Fm)(g.usageUrl.replace("{org_id}",e.organization_id),{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":g.apiVersion},identity:"claude-cli",provider:"claude",format:"claude"},b);if(c.ok){let a=await c.json();return{plan:e.plan||"Unknown",organization:e.organization_name,quotas:a}}}return{plan:e.plan||"Unknown",organization:e.organization_name,message:"Claude connected. Usage details require admin access."}}return{message:"Claude connected. Usage API requires admin permissions."}}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}}};
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
latency_ms = excluded.latency_ms,
|
|
12
12
|
failure_class = excluded.failure_class,
|
|
13
13
|
failure_message = excluded.failure_message,
|
|
14
|
-
checked_at = excluded.checked_at`,[b,c,d,f,g,j,a.failureClass||null,a.failureMessage?String(a.failureMessage).slice(0,500):null,i]),{providerId:b,scopeKey:c,modelId:d,kind:f,status:g,latencyMs:j,failureClass:a.failureClass||null,failureMessage:a.failureMessage||null,checkedAt:i}}async function E(a,b){return(await (0,e.c)()).all("SELECT * FROM provider_model_probe WHERE provider_id = ? AND scope_key = ? ORDER BY checked_at DESC",[a,b]).map(C).filter(Boolean)}async function F(a,b,c,d=null,f={}){let g=String(c||"").trim();if(!["ok","dead","retryable"].includes(g))throw Error("Invalid probe status");let h=[...new Set((Array.isArray(f.excludeFailureClasses)?f.excludeFailureClasses:[]).map(a=>String(a||"").trim()).filter(Boolean))],i=await (0,e.c)(),j=[a,b,g],k="SELECT model_id FROM provider_model_probe WHERE provider_id = ? AND scope_key = ? AND status = ?";return d&&(k+=" AND kind = ?",j.push(d)),h.length>0&&(k+=` AND (failure_class IS NULL OR failure_class NOT IN (${h.map(()=>"?").join(", ")}))`,j.push(...h)),i.all(k,j).map(a=>a.model_id)}async function G(a,b){let c=(await (0,e.c)()).run("DELETE FROM provider_model_probe WHERE provider_id = ? AND scope_key = ?",[a,b]);return c?.changes||0}var H=c(23832);let I=null,J=0;async function K(){if(I&&Date.now()-J<5e3)return I;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,42655)),b=await a(),d="false"!==process.env.OBSERVABILITY_ENABLED;I={enabled:"boolean"==typeof b.enableObservability?b.enableObservability:d,maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10)),maxBuffer:parseInt(process.env.OBSERVABILITY_MAX_BUFFER||String(5e3),10)||5e3}}catch{I={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120,maxBuffer:5e3}}return J=Date.now(),I}let L=[],M=null,N=!1,O=0,P=0;function Q(a,b){let c;if(null==a)return{};try{c=JSON.stringify(a)}catch{let b=String(a).substring(0,200);return{_truncated:!0,_originalSize:b.length,_preview:b,_error:"stringify_failed"}}return c.length>b?{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}:a}async function R(){if(!N&&0!==L.length){N=!0;try{for(;L.length>0;){let a=L.splice(0,L.length),b=await (0,e.c)(),c=await K();b.transaction(()=>{for(let d of a){d.id||(d.id=function(a){let b=new Date().toISOString(),c=Math.random().toString(36).substring(2,8),d=a?a.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown";return`${b}-${c}-${d}`}(d.model)),d.timestamp||(d.timestamp=new Date().toISOString());let a={id:d.id,provider:d.provider||null,model:d.model||null,connectionId:d.connectionId||null,timestamp:d.timestamp,status:d.status||null,latency:d.latency||{},tokens:d.tokens||{},request:Q(d.request,c.maxJsonSize),providerRequest:Q(d.providerRequest,c.maxJsonSize),providerResponse:Q(d.providerResponse,c.maxJsonSize),response:Q(d.response,c.maxJsonSize),pxpipe:d.pxpipe||void 0};b.run("INSERT INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET timestamp = excluded.timestamp, provider = excluded.provider, model = excluded.model, connectionId = excluded.connectionId, status = excluded.status, data = excluded.data",[a.id,a.timestamp,a.provider,a.model,a.connectionId,a.status,(0,f.s)(a)])}b.run(`DELETE FROM requestDetails WHERE id IN (
|
|
14
|
+
checked_at = excluded.checked_at`,[b,c,d,f,g,j,a.failureClass||null,a.failureMessage?String(a.failureMessage).slice(0,500):null,i]),{providerId:b,scopeKey:c,modelId:d,kind:f,status:g,latencyMs:j,failureClass:a.failureClass||null,failureMessage:a.failureMessage||null,checkedAt:i}}async function E(a,b){return(await (0,e.c)()).all("SELECT * FROM provider_model_probe WHERE provider_id = ? AND scope_key = ? ORDER BY checked_at DESC",[a,b]).map(C).filter(Boolean)}async function F(a,b,c,d=null,f={}){let g=String(c||"").trim();if(!["ok","dead","retryable"].includes(g))throw Error("Invalid probe status");let h=[...new Set((Array.isArray(f.excludeFailureClasses)?f.excludeFailureClasses:[]).map(a=>String(a||"").trim()).filter(Boolean))],i=await (0,e.c)(),j=[a,b,g],k="SELECT model_id FROM provider_model_probe WHERE provider_id = ? AND scope_key = ? AND status = ?";return d&&(k+=" AND kind = ?",j.push(d)),h.length>0&&(k+=` AND (failure_class IS NULL OR failure_class NOT IN (${h.map(()=>"?").join(", ")}))`,j.push(...h)),i.all(k,j).map(a=>a.model_id)}async function G(a,b){let c=(await (0,e.c)()).run("DELETE FROM provider_model_probe WHERE provider_id = ? AND scope_key = ?",[a,b]);return c?.changes||0}var H=c(23832);let I=null,J=0;async function K(){if(I&&Date.now()-J<5e3)return I;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,42655)),b=await a(),d="false"!==process.env.OBSERVABILITY_ENABLED;I={enabled:"boolean"==typeof b.enableObservability?b.enableObservability:d,maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10)),maxBuffer:parseInt(process.env.OBSERVABILITY_MAX_BUFFER||String(5e3),10)||5e3}}catch{I={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120,maxBuffer:5e3}}return J=Date.now(),I}let L=[],M=null,N=!1,O=0,P=0;function Q(a,b){let c;if(null==a)return{};try{c=JSON.stringify(a)}catch{let b=String(a).substring(0,200);return{_truncated:!0,_originalSize:b.length,_preview:b,_error:"stringify_failed"}}return c.length>b?{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}:a}async function R(){if(!N&&0!==L.length){N=!0;try{for(;L.length>0;){let a=L.splice(0,L.length),b=await (0,e.c)(),c=await K();b.transaction(()=>{for(let d of a){d.id||(d.id=function(a){let b=new Date().toISOString(),c=Math.random().toString(36).substring(2,8),d=a?a.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown";return`${b}-${c}-${d}`}(d.model)),d.timestamp||(d.timestamp=new Date().toISOString());let a={id:d.id,provider:d.provider||null,model:d.model||null,connectionId:d.connectionId||null,timestamp:d.timestamp,status:d.status||null,latency:d.latency||{},tokens:d.tokens||{},request:Q(d.request,c.maxJsonSize),providerRequest:Q(d.providerRequest,c.maxJsonSize),providerResponse:Q(d.providerResponse,c.maxJsonSize),response:Q(d.response,c.maxJsonSize),pxpipe:d.pxpipe||void 0,rtk:d.rtk?{...d.rtk,hits:d.rtk.hits?.slice(0,50)}:void 0};b.run("INSERT INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET timestamp = excluded.timestamp, provider = excluded.provider, model = excluded.model, connectionId = excluded.connectionId, status = excluded.status, data = excluded.data",[a.id,a.timestamp,a.provider,a.model,a.connectionId,a.status,(0,f.s)(a)])}b.run(`DELETE FROM requestDetails WHERE id IN (
|
|
15
15
|
SELECT id FROM requestDetails
|
|
16
16
|
WHERE id NOT IN (
|
|
17
17
|
SELECT id FROM requestDetails ORDER BY timestamp DESC LIMIT ?
|
|
18
18
|
)
|
|
19
|
-
)`,[c.maxRecords])})}}catch(a){console.error("[requestDetailsRepo] Batch write failed:",a)}finally{N=!1}}}async function S(a){let b=await K();if(!b.enabled)return;let c=function(a,b){if(!a||"object"!=typeof a)return a;let c={...a};return c.request?.headers&&(c.request={...c.request,headers:function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","x-switchboard-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(c.request.headers)}),c.request=Q(c.request,b),c.providerRequest=Q(c.providerRequest,b),c.providerResponse=Q(c.providerResponse,b),c.response=Q(c.response,b),c.body&&(c.body=Q(c.body,b)),c.raw&&(c.raw=Q(c.raw,b)),c}(a,b.maxJsonSize);if(L.length>=b.maxBuffer){L.shift(),P++;let a=Date.now();a-O>6e4&&(console.warn(`[requestDetailsRepo] observability buffer full (${b.maxBuffer}); dropped ${P} record(s). Raise OBSERVABILITY_MAX_BUFFER or lower OBSERVABILITY_FLUSH_INTERVAL_MS.`),O=a,P=0)}L.push(c),L.length>=b.batchSize?(M&&(clearTimeout(M),M=null),R().catch(a=>console.error("[requestDetailsRepo] flush err:",a))):M||(M=setTimeout(()=>{M=null,R().catch(()=>{})},b.flushIntervalMs))}async function T(a={}){let b=await (0,e.c)(),c=[],d=[];a.provider&&(c.push("provider = ?"),d.push(a.provider)),a.model&&(c.push("model = ?"),d.push(a.model)),a.connectionId&&(c.push("connectionId = ?"),d.push(a.connectionId)),a.status&&(c.push("status = ?"),d.push(a.status)),a.startDate&&(c.push("timestamp >= ?"),d.push(
|
|
19
|
+
)`,[c.maxRecords])})}}catch(a){console.error("[requestDetailsRepo] Batch write failed:",a)}finally{N=!1}}}async function S(a){let b=await K();if(!b.enabled)return;let c=function(a,b){if(!a||"object"!=typeof a)return a;let c={...a};return c.request?.headers&&(c.request={...c.request,headers:function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","x-switchboard-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(c.request.headers)}),c.request=Q(c.request,b),c.providerRequest=Q(c.providerRequest,b),c.providerResponse=Q(c.providerResponse,b),c.response=Q(c.response,b),c.body&&(c.body=Q(c.body,b)),c.raw&&(c.raw=Q(c.raw,b)),c}(a,b.maxJsonSize);if(L.length>=b.maxBuffer){L.shift(),P++;let a=Date.now();a-O>6e4&&(console.warn(`[requestDetailsRepo] observability buffer full (${b.maxBuffer}); dropped ${P} record(s). Raise OBSERVABILITY_MAX_BUFFER or lower OBSERVABILITY_FLUSH_INTERVAL_MS.`),O=a,P=0)}L.push(c),L.length>=b.batchSize?(M&&(clearTimeout(M),M=null),R().catch(a=>console.error("[requestDetailsRepo] flush err:",a))):M||(M=setTimeout(()=>{M=null,R().catch(()=>{})},b.flushIntervalMs))}async function T(a={}){let b=await (0,e.c)(),c=[],d=[];a.provider&&(c.push("provider = ?"),d.push(a.provider)),a.model&&(c.push("model = ?"),d.push(a.model)),a.connectionId&&(c.push("connectionId = ?"),d.push(a.connectionId)),a.status&&(c.push("status = ?"),d.push(a.status));let g=a=>{let b=new Date(a).getTime();return Number.isFinite(b)?new Date(b).toISOString():null},h=a.startDate?g(a.startDate):null,i=a.endDate?g(a.endDate):null;h&&(c.push("timestamp >= ?"),d.push(h)),i&&(c.push("timestamp <= ?"),d.push(i));let j=c.length?`WHERE ${c.join(" AND ")}`:"",k=b.get(`SELECT COUNT(*) as c FROM requestDetails ${j}`,d),l=k?k.c:0,m=a.page||1,n=a.pageSize||50,o=Math.ceil(l/n);return{details:b.all(`SELECT data FROM requestDetails ${j} ORDER BY timestamp DESC LIMIT ? OFFSET ?`,[...d,n,(m-1)*n]).map(a=>(0,f.q)(a.data,{})),pagination:{page:m,pageSize:n,totalItems:l,totalPages:o,hasNext:m<o,hasPrev:m>1}}}let U=async()=>{M&&(clearTimeout(M),M=null),L.length>0&&await R()},V="__switchboardRequestDetailsBeforeExitHandler";(d=globalThis[V])&&process.off("beforeExit",d),globalThis[V]=U,process.on("beforeExit",U),c(44196),c(34772);var W=c(2142);async function X(){let a=await (0,e.c)(),{exportSettings:b}=await Promise.resolve().then(c.bind(c,42655)),d={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,keyPrefix:a.keyPrefix,lookupDigest:a.lookupDigest,name:a.name,machineId:a.machineId,isActive:1===a.isActive,createdAt:a.createdAt,allowedModels:(0,f.q)(a.allowedModels,[]),allowedCombos:(0,f.q)(a.allowedCombos,[]),expiresAt:a.expiresAt||null,rateLimitPerMinute:a.rateLimitPerMinute??null,concurrencyLimit:a.concurrencyLimit??null,spendLimitUsd:a.spendLimitUsd??null,spentUsd:Number(a.spentUsd||0)})),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:{}};for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'modelAliases'"))d.modelAliases[b.key]=(0,f.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'customModels'"))d.customModels.push((0,f.q)(b.value));for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'mitmAlias'"))d.mitmAlias[b.key]=(0,f.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'pricing'"))d.pricing[b.key]=(0,f.q)(b.value);return d}async function Y(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let b=await (0,e.c)();return b.transaction(()=>{for(let c of(b.run("DELETE FROM settings"),b.run("DELETE FROM providerConnections"),b.run("DELETE FROM providerNodes"),b.run("DELETE FROM proxyPools"),b.run("DELETE FROM apiKeys"),b.run("DELETE FROM combos"),b.run("DELETE FROM kv WHERE scope IN ('modelAliases', 'customModels', 'mitmAlias', 'pricing')"),a.settings&&b.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,f.s)(a.settings)]),a.providerConnections||[])){let a=(0,g.connToRow)(c);b.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a.id,a.provider,a.authType||"oauth",a.name,a.email,a.priority,a.isActive,a.data,a.createdAt||new Date().toISOString(),a.updatedAt||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||[]){let a=(0,h.Yh)(c.key),d="string"==typeof a&&(0,h.BA)(a).legacy?(0,h.ws)(a):a,e=(0,h.BA)(d);b.run(`INSERT OR REPLACE INTO apiKeys(id, key, keyPrefix, lookupDigest, name, machineId, isActive, createdAt, allowedModels, allowedCombos, expiresAt, rateLimitPerMinute, concurrencyLimit, spendLimitUsd, spentUsd)
|
|
20
20
|
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[c.id,d,e.prefix||null,e.lookupDigest||null,c.name||null,c.machineId||null,+(!1!==c.isActive),c.createdAt||new Date().toISOString(),null==c.allowedModels?null:(0,f.s)(c.allowedModels),null==c.allowedCombos?null:(0,f.s)(c.allowedCombos),c.expiresAt||null,c.rateLimitPerMinute??null,c.concurrencyLimit??null,c.spendLimitUsd??null,Number(c.spentUsd||0)])}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 X()}},22846:(a,b,c)=>{c.d(b,{U:()=>f});var d=c(36366),e=c(644);function f(a){return{async get(b,c=null){let f=(await (0,d.c)()).get("SELECT value FROM kv WHERE scope = ? AND key = ?",[a,b]);return f?(0,e.q)(f.value,c):c},async getAll(){let b=(await (0,d.c)()).all("SELECT key, value FROM kv WHERE scope = ?",[a]),c={};for(let a of b)c[a.key]=(0,e.q)(a.value);return c},async set(b,c){(await (0,d.c)()).run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,b,(0,e.s)(c)])},async setMany(b){let c=await (0,d.c)();c.transaction(()=>{for(let[d,f]of Object.entries(b))c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,d,(0,e.s)(f)])})},async remove(b){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ? AND key = ?",[a,b])},async clear(){(await (0,d.c)()).run("DELETE FROM kv WHERE scope = ?",[a])}}}},23832:(a,b,c)=>{c.d(b,{E5:()=>E,U_:()=>y,rg:()=>x,j$:()=>D,b7:()=>w,Zx:()=>F,Jo:()=>B,BY:()=>C,sZ:()=>z,_V:()=>o,uw:()=>v});var d=c(94735),e=c(36366),f=c(644),g=c(5125),h=c(73274),i=c(2903);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._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0}),global._statsEmitTimers||(global._statsEmitTimers={pending:null,update:null});let j=global._pendingRequests,k=global._lastErrorProvider,l=global._recentRing,m=global._connectionMapCache,n=global._statsEmitTimers,o=global._statsEmitter;function p(a,b=150){let c="update"===a?"update":"pending";n[c]||(n[c]=setTimeout(()=>{n[c]=null,o.emit(a)},b),n[c]?.unref?.())}function q(a){if(!a||null!==Object.getPrototypeOf(a)){let b=Object.create(null);return a&&Object.assign(b,a),b}return a}function r(a,b,c){let d=function(a){if(null==a)return null;let b=String(a);return"__proto__"===b||"constructor"===b||"prototype"===b?`__safe_${b}`:b}(b);null!=d&&(a[d]||(a[d]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0}),a[d].requests+=c.requests||1,a[d].promptTokens+=c.promptTokens||0,a[d].completionTokens+=c.completionTokens||0,a[d].cachedTokens+=c.cachedTokens||0,a[d].cost+=c.cost||0,c.meta&&Object.assign(a[d],c.meta))}async function s(){if(Date.now()-m.ts<3e4)return m.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;m.map=d,m.ts=Date.now()}catch{}return m.map}async function t(){if(!l.initialized){l.initialized=!0;try{l.items=(await (0,e.c)()).all("SELECT timestamp, provider, model, connectionId, clientKeyId, 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,clientKeyId:a.clientKeyId,endpoint:a.endpoint,cost:a.cost,status:a.status,tokens:(0,f.q)(a.tokens,{})}))}catch{}}}async function u(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{calculateCostFromTokens:g}=await c.e(4646).then(c.bind(c,84646));return g(d,f)}catch(a){return console.error("Error calculating cost:",a),0}}function v(a,b,c,d,e=!1){let f=b?`${a} (${b})`:a;j.byModel[f]||(j.byModel[f]=0),j.byModel[f]=Math.max(0,j.byModel[f]+(d?1:-1)),0===j.byModel[f]&&delete j.byModel[f],c&&(j.byAccount[c]||(j.byAccount[c]={}),j.byAccount[c][f]||(j.byAccount[c][f]=0),j.byAccount[c][f]=Math.max(0,j.byAccount[c][f]+(d?1:-1)),0===j.byAccount[c][f]&&(delete j.byAccount[c][f],0===Object.keys(j.byAccount[c]).length&&delete j.byAccount[c])),!d&&e&&b&&(k.provider=b.toLowerCase(),k.ts=Date.now());let g=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"});console.log(`[${g}] [PENDING] ${d?"START":"END"}${e?" (ERROR)":""} | provider=${b} | model=${a}`),p("pending")}function w(a){let b=j.byAccount[a];if(!b)return 0;let c=0;for(let a in b){let d=Number(b[a]);Number.isFinite(d)&&d>0&&(c+=d)}return c}async function x(){let a=[],b=await s();for(let[c,d]of Object.entries(j.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})}await t();let c=new Set;return{activeRequests:a,recentRequests:[...l.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"}}).filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let b=a.timestamp?a.timestamp.slice(0,16):"",d=`${a.model}|${a.provider}|${a.promptTokens}|${a.completionTokens}|${b}`;return!c.has(d)&&(c.add(d),!0)}).slice(0,20),errorProvider:Date.now()-k.ts<1e4?k.provider:""}}function y(){let a=new Map;for(let b of Object.values(j.byAccount))for(let[c,d]of Object.entries(b)){if(d<=0)continue;let b=c.match(/^(.*) \((.*)\)$/),e=b?.[2]||"unknown";a.set(e,(a.get(e)||0)+d)}return{activeRequests:[...a.entries()].sort(([a],[b])=>a.localeCompare(b)).map(([a,b])=>({provider:a,count:b}))}}async function z(a){try{let b=await (0,e.c)();a.timestamp||(a.timestamp=new Date().toISOString()),a.cost=await u(a.provider,a.model,a.tokens);let c=a.tokens||{},d=(0,h.T)(c.prompt_tokens||c.input_tokens||0,"usage.promptTokens",{integer:!0}),j=(0,h.T)(c.completion_tokens||c.output_tokens||0,"usage.completionTokens",{integer:!0}),k=(0,h.T)(c.cached_tokens||c.cache_read_input_tokens||0,"usage.cachedTokens",{integer:!0}),m=(0,h.T)(a.cost,"usage.cost"),n=!1;(b.transaction(()=>{var e;let h,l,o,p,s,t,u,v,w,x,y,z,A=a.requestId||null;if(A&&b.get("SELECT id FROM usageHistory WHERE requestId = ?",[A]))return;b.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, clientKeyId, endpoint, promptTokens, completionTokens, cost, status, tokens, meta, requestId) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a.timestamp,a.provider||null,a.model||null,a.connectionId||null,a.clientKeyId||null,a.endpoint||null,d,j,a.cost||0,a.status||"ok",(0,f.s)(c),(0,f.s)({}),A]),a.clientKeyId&&b.run("UPDATE apiKeys SET spentUsd = spentUsd + ? WHERE id = ?",[Number(a.cost||0),a.clientKeyId]);let B=parseInt(process.env.USAGE_HISTORY_MAX||"50000",10),C=b.get("SELECT value FROM _meta WHERE key = 'usageHistoryCount'");if(h=C?.value!=null?parseInt(C.value,10)+1:b.get("SELECT COUNT(*) as c FROM usageHistory")?.c||0,Number.isFinite(B)&&B>0&&h>B){let a=h-B;b.run("DELETE FROM usageHistory WHERE id IN (SELECT id FROM usageHistory ORDER BY id ASC LIMIT ?)",[a]),h=B}b.run("INSERT INTO _meta(key, value) VALUES('usageHistoryCount', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[String(h)]);let D=(l=(e=a.timestamp)?new Date(e):new Date,`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`),E=b.get("SELECT data FROM usageDaily WHERE dateKey = ?",[D]),F=E?(0,f.q)(E.data,{}):{requests:0,promptTokens:0,completionTokens:0,cost:0,byProvider:{},byModel:{},byAccount:{},byClientKey:{},byEndpoint:{}};o=a.tokens?.prompt_tokens||a.tokens?.input_tokens||0,p=a.tokens?.completion_tokens||a.tokens?.output_tokens||0,s=a.tokens?.cached_tokens||a.tokens?.cache_read_input_tokens||0,t=a.cost||0,u={promptTokens:o,completionTokens:p,cachedTokens:s,cost:t},F.requests=(F.requests||0)+1,F.promptTokens=(F.promptTokens||0)+o,F.completionTokens=(F.completionTokens||0)+p,F.cachedTokens=(F.cachedTokens||0)+s,F.cost=(F.cost||0)+t,F.byProvider=q(F.byProvider||{}),F.byModel=q(F.byModel||{}),F.byAccount=q(F.byAccount||{}),F.byClientKey=q(F.byClientKey||{}),F.byEndpoint=q(F.byEndpoint||{}),a.provider&&r(F.byProvider,a.provider,u),v=a.provider?`${a.model}|${a.provider}`:a.model,r(F.byModel,v,{...u,meta:{rawModel:a.model,provider:a.provider}}),a.connectionId&&r(F.byAccount,a.connectionId,{...u,meta:{rawModel:a.model,provider:a.provider}}),w=a.clientKeyId&&"string"==typeof a.clientKeyId?a.clientKeyId:null,x=`${w||"local-no-key"}|${a.model}|${a.provider||"unknown"}`,r(F.byClientKey,x,{...u,meta:{rawModel:a.model,provider:a.provider,clientKeyId:w}}),y=a.endpoint||"Unknown",z=`${y}|${a.model}|${a.provider||"unknown"}`,r(F.byEndpoint,z,{...u,meta:{endpoint:y,rawModel:a.model,provider:a.provider}}),b.run("INSERT INTO usageDaily(dateKey, data) VALUES(?, ?) ON CONFLICT(dateKey) DO UPDATE SET data = excluded.data",[D,(0,f.s)(F)]),(0,g.Bq)(b,()=>{let c=(0,i.ry)(b,a.provider)?a.provider:"unknown",e=b.get(`SELECT provider, requests, promptTokens, completionTokens, cachedTokens, cost
|
|
21
21
|
FROM prometheusUsageTotals WHERE provider = ?`,[c]);e&&(0,g.Kd)(e),e&&(0,g.Kd)({provider:c,requests:e.requests+1,promptTokens:e.promptTokens+d,completionTokens:e.completionTokens+j,cachedTokens:e.cachedTokens+k,cost:e.cost+m}),b.run(`INSERT INTO prometheusUsageTotals(provider, requests, promptTokens, completionTokens, cachedTokens, cost)
|
|
22
22
|
VALUES(?, 1, ?, ?, ?, ?)
|