omniroute 3.7.2 → 3.7.3
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/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +15 -15
- package/app/.next/build-manifest.json +3 -3
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/react-loadable-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/batch/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cache/media/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cache/media/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/memory/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +1 -1
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/acp/agents/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/app/.next/server/app/api/batches/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cache/entries/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cache/reasoning/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cache/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cache/stats/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/backups/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/qwen-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/qwen-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/status/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/builder/options/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/metrics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/reorder/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/route.js +1 -1
- package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/test/route.js +1 -1
- package/app/.next/server/app/api/combos/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/compliance/audit-log/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/export/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/exportAll/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/evals/route.js.nft.json +1 -1
- package/app/.next/server/app/api/evals/scorecard/route.js.nft.json +1 -1
- package/app/.next/server/app/api/evals/suites/[suiteId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/evals/suites/route.js.nft.json +1 -1
- package/app/.next/server/app/api/fallback/chains/route.js.nft.json +1 -1
- package/app/.next/server/app/api/files/[id]/content/route.js.nft.json +1 -1
- package/app/.next/server/app/api/files/route.js.nft.json +1 -1
- package/app/.next/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next/server/app/api/internal/codex-responses-ws/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/reveal/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/logs/active/route.js.nft.json +1 -1
- package/app/.next/server/app/api/logs/console/route.js.nft.json +1 -1
- package/app/.next/server/app/api/logs/detail/route.js.nft.json +1 -1
- package/app/.next/server/app/api/logs/export/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/sse/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/stream/route.js.nft.json +1 -1
- package/app/.next/server/app/api/memory/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/memory/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/memory/route.js.nft.json +1 -1
- package/app/.next/server/app/api/model-combo-mappings/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/model-combo-mappings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/openrouter-catalog/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/monitoring/health/route.js +1 -1
- package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next/server/app/api/openapi/try/route.js.nft.json +1 -1
- package/app/.next/server/app/api/policies/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/sync/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-metrics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/codex-auth/apply-local/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/codex-auth/export/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/refresh/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/sync-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/zed/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
- package/app/.next/server/app/api/resilience/reset/route.js.nft.json +1 -1
- package/app/.next/server/app/api/resilience/route.js.nft.json +1 -1
- package/app/.next/server/app/api/restart/route.js.nft.json +1 -1
- package/app/.next/server/app/api/search/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/search/stats/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/auto-disable-accounts/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/background-degradation/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/cache-config/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/cache-metrics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/export-json/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/favicon/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/import-json/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/ip-filter/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/lkgp-cache/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/memory/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/model-aliases/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/models-dev/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/payload-rules/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxies/assignments/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxies/bulk-assign/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxies/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxies/migrate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxies/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxy/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/purge-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/task-routing/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
- package/app/.next/server/app/api/shutdown/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/executions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/install/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/marketplace/install/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/marketplace/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/skillssh/install/route.js.nft.json +1 -1
- package/app/.next/server/app/api/skills/skillssh/route.js.nft.json +1 -1
- package/app/.next/server/app/api/storage/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/bundle/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/tokens/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/tokens/route.js.nft.json +1 -1
- package/app/.next/server/app/api/synced-available-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/system/env/repair/route.js.nft.json +1 -1
- package/app/.next/server/app/api/system/version/route.js +1 -1
- package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
- package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/cloudflared/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/tailscale/check/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/tailscale/disable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/tailscale/enable/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/tailscale/install/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/tailscale/login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/tailscale/route.js.nft.json +1 -1
- package/app/.next/server/app/api/tunnels/tailscale/start-daemon/route.js.nft.json +1 -1
- package/app/.next/server/app/api/upstream-proxy/[providerId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/budget/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/combo-health/route.js +1 -1
- package/app/.next/server/app/api/usage/combo-health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/provider-limits/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/proxy-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/quota/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/utilization/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/accounts/[id]/limits/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/batches/[id]/cancel/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/batches/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/batches/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/db/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/files/[id]/content/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/files/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/files/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/images/edits/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/issues/report/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/management/proxies/assignments/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/management/proxies/bulk-assign/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/management/proxies/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/management/proxies/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/music/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/limits/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/quotas/check/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/registered-keys/[id]/revoke/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/registered-keys/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/registered-keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/search/analytics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/ws/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version-manager/check-update/route.js +1 -1
- package/app/.next/server/app/api/version-manager/check-update/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version-manager/install/route.js +1 -1
- package/app/.next/server/app/api/version-manager/install/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version-manager/restart/route.js +1 -1
- package/app/.next/server/app/api/version-manager/restart/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version-manager/start/route.js +1 -1
- package/app/.next/server/app/api/version-manager/start/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version-manager/status/route.js +1 -1
- package/app/.next/server/app/api/version-manager/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/version-manager/stop/route.js +1 -1
- package/app/.next/server/app/api/version-manager/stop/route.js.nft.json +1 -1
- package/app/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/webhooks/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/webhooks/route.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +15 -15
- package/app/.next/server/chunks/12767.js +1 -1
- package/app/.next/server/chunks/19849.js +1 -1
- package/app/.next/server/chunks/20236.js +1 -1
- package/app/.next/server/chunks/36040.js +4 -4
- package/app/.next/server/chunks/3832.js +1 -1
- package/app/.next/server/chunks/39548.js +1 -1
- package/app/.next/server/chunks/39859.js +1 -1
- package/app/.next/server/chunks/44088.js +1 -1
- package/app/.next/server/chunks/45415.js +1 -1
- package/app/.next/server/chunks/55672.js +1 -0
- package/app/.next/server/chunks/59092.js +2 -2
- package/app/.next/server/chunks/66094.js +1 -1
- package/app/.next/server/chunks/69105.js +1 -1
- package/app/.next/server/chunks/75225.js +1 -1
- package/app/.next/server/chunks/77044.js +1 -1
- package/app/.next/server/chunks/83648.js +1 -1
- package/app/.next/server/chunks/93831.js +4 -4
- package/app/.next/server/chunks/9679.js +3 -3
- package/app/.next/server/chunks/99168.js +2 -2
- package/app/.next/server/middleware-build-manifest.js +1 -1
- package/app/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/app/.next/server/middleware.js +2 -2
- package/app/.next/server/pages/500.html +1 -1
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/{1999-fefe90c60eaa3b23.js → 1999-8cf58c233346f980.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cache/media/page-ad8091c5b7536b7a.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/page-ccc65d29bbb19d51.js +1 -0
- package/app/.next/static/chunks/app/{layout-3e3b043f9b52bb80.js → layout-fbebdd84c4996160.js} +1 -1
- package/app/.next/static/chunks/{webpack-117eac5998a94c69.js → webpack-ea5983ad4b51e934.js} +1 -1
- package/app/.next/static/css/7caa8a6802c65def.css +1 -0
- package/app/docs/openapi.yaml +1 -1
- package/app/open-sse/mcp-server/server.js +15 -1
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next/server/chunks/80812.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cache/media/page-f0289617f824bbf2.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/page-f24fde8a3f731108.js +0 -1
- package/app/.next/static/css/8d36e4e21725013b.css +0 -1
- /package/app/.next/static/{yvJ6rPtn4eb7sOBUCBGrF → qmeYzerLcoUXZ06JXgit3}/_buildManifest.js +0 -0
- /package/app/.next/static/{yvJ6rPtn4eb7sOBUCBGrF → qmeYzerLcoUXZ06JXgit3}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=69105,exports.ids=[69105],exports.modules={10885:(a,b,c)=>{function d(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}function e(a){return"number"==typeof a&&isFinite(a)?a:void 0}c.d(b,{Q1:()=>e,s9:()=>d})},14060:(a,b,c)=>{c.d(b,{e:()=>e});let d=["opencode","open-code","cline","roo-cline","roo_cline","cursor","windsurf","aider","continue.dev","copilot","avante","codecompanion","claude code","claude-code","kilo code","kilocode","omniroute"];function e(a){if(!a||0===d.length)return a;let b=a;for(let a of d){if(!a)continue;let c=RegExp(a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gi");b=b.replace(c,a=>a.length<=1?a:a[0]+""+a.slice(1))}return b}},24632:(a,b,c)=>{c.d(b,{cV:()=>I,fZ:()=>C,iU:()=>D});var d=c(55511),e=c.n(d),f=c(62894),g=c(49193),h=c(77421),i=c(40751),j=c(39852),k=c(96467),l=c(5746),m=c(14060),n=c(73145),o=c(95420);let p="_ide",q=["browser_subagent","command_status","find_by_name","generate_image","grep_search","list_dir","list_resources","multi_replace_file_content","notify_user","read_resource","read_terminal","read_url_content","replace_file_content","run_command","search_web","send_command_input","task_boundary","view_content_chunk","view_file","write_to_file"],r=[...q,"mcp_sequential-thinking_sequentialthinking"],s=new Set(q),t=r.map(a=>Object.freeze({name:a,description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}}));function u(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function v(a){return"string"==typeof a?a.trim():""}function w(a){return!(a.length>0)||s.has(a)||a.endsWith(p)?a:`${a}${p}`}var x=c(68445);let y=new Set(["gemini-3.1-pro"]),z=new Map,A=new Map,B=!1;function C(a){if(!B){B=!0;try{for(let[a,b]of(0,l.Vn)())A.has(a)||A.set(a,b)}catch{}}let b=A.get(a);return void 0!==b?b:null}function D(a,b){A.set(a,b);try{(0,l.AO)(a,b)}catch{}}function E(a){z.set(a,Date.now()+18e6)}function F(a,b,c){if(a&&"[DONE]"!==a)try{let c=JSON.parse(a),d=c?.response?.candidates?.[0];if(d?.content?.parts)for(let a of d.content.parts)"string"!=typeof a.text||a.thought||a.thoughtSignature||(b.textContent+=a.text);if(d?.finishReason&&(b.finishReason="stop"===d.finishReason.toLowerCase()?"stop":d.finishReason.toLowerCase()),c?.response?.usageMetadata){let a=c.response.usageMetadata;b.usage={prompt_tokens:a.promptTokenCount||0,completion_tokens:a.candidatesTokenCount||0,total_tokens:a.totalTokenCount||0}}Array.isArray(c?.remainingCredits)&&(b.remainingCredits=c.remainingCredits)}catch{c?.debug?.("SSE_PARSE",`Skipping malformed SSE line: ${a.slice(0,80)}`)}}function G(a,b,c,d){b.value+=a;let e=b.value.split("\n");for(let a of(b.value=e.pop()||"",e)){let b=a.trim();b.startsWith("data:")&&F(b.slice(5).trim(),c,d)}}function H(a,b){if(!b?.size||!a||"object"!=typeof a)return a;let c=Array.isArray(a)?[...a]:{...a};return Object.defineProperty(c,"_toolNameMap",{value:b,enumerable:!1,configurable:!0,writable:!0}),c}class I extends f.Hv{constructor(){super("antigravity",g.xq.antigravity)}buildUrl(a,b,c=0){let d=this.getBaseUrls(),e=d[c]||d[0];return`${e}/v1internal:streamGenerateContent?alt=sse`}buildHeaders(a,b=!0){let c={"Content-Type":"application/json",Authorization:`Bearer ${a.accessToken}`,"User-Agent":(0,i.FT)(),Accept:"text/event-stream","X-OmniRoute-Source":"omniroute"};return(0,h.l)(c)}transformRequest(a,b,c,d){let f=b?.project,g=d?.projectId,h="1"===process.env.OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE&&f?f:g||f;if(!h)return new Response(JSON.stringify({error:{message:"Missing Google projectId for Antigravity account. Please reconnect OAuth in Providers → Antigravity so OmniRoute can fetch your Cloud Code project.",type:"oauth_missing_project_id",code:"missing_project_id"}}),{status:422,headers:{"Content-Type":"application/json"}});let i=function(a){if(!a)return a;let b=a.includes("/")?a.split("/").pop():a;return b=(0,o.Vg)(b),y.has(b)&&(b=`${b}-low`),b}(a),j=b&&"object"==typeof b?b:{},k=(0,x.Y)(this.provider,i)?(0,x.T)(j):j,l=k.request?.contents?.map(a=>{let b=a.role;a.parts?.some(a=>a.functionResponse)&&(b="user");let c=a.parts?.some(a=>a.functionCall)||!1,d=a.parts?.filter(a=>("string"!=typeof a.text||""!==a.text)&&(!a.functionCall||!!a.functionCall.name)&&!a.thought&&(c||!a.thoughtSignature))||[];return{...a,role:b,parts:d}})||[],n=[];for(let a of l)Array.isArray(a.parts)&&0!==a.parts.length&&(n.length>0&&n[n.length-1].role===a.role?n[n.length-1].parts.push(...a.parts):n.push(a));let p={...k.request,...n.length>0&&{contents:n},sessionId:k.request?.sessionId||this.generateSessionId(),safetySettings:void 0,toolConfig:k.request?.tools?.length>0?{functionCallingConfig:{mode:"VALIDATED"}}:k.request?.toolConfig},q=p.contents;if(Array.isArray(q)){for(let a of q)if(Array.isArray(a.parts))for(let b of a.parts)"string"==typeof b.text&&(b.text=(0,m.e)(b.text))}return{...k,project:h,model:i,userAgent:"antigravity",requestType:"agent",requestId:`agent-${e().randomUUID()}`,request:p}}async refreshCredentials(a,b){if(!a.refreshToken)return null;try{let c=await fetch(g.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a.refreshToken,client_id:this.config.clientId,client_secret:this.config.clientSecret})});if(!c.ok)return null;let d=await c.json();return b?.info?.("TOKEN","Antigravity refreshed"),{accessToken:d.access_token,refreshToken:d.refresh_token||a.refreshToken,expiresIn:d.expires_in,projectId:a.projectId}}catch(a){return b?.error?.("TOKEN",`Antigravity refresh error: ${a.message}`),null}}generateSessionId(){return`-${parseInt((0,d.randomUUID)().replace(/-/g,"").substring(0,8),16)%9e18}`}parseRetryHeaders(a){if(!a?.get)return null;let b=a.get("retry-after");if(b){let a=parseInt(b,10);if(!isNaN(a)&&a>0)return 1e3*a;let c=new Date(b);if(!isNaN(c.getTime())){let a=c.getTime()-Date.now();return a>0?a:null}}let c=a.get("x-ratelimit-reset-after");if(c){let a=parseInt(c,10);if(!isNaN(a)&&a>0)return 1e3*a}let d=a.get("x-ratelimit-reset");if(d){let a=1e3*parseInt(d,10)-Date.now();return a>0?a:null}return null}parseRetryFromErrorMessage(a){if(!a||"string"!=typeof a)return null;let b=a.match(/reset (?:after|in) (\d+h)?(\d+m)?(\d+s)?/i);if(!b)return null;let c=0;return(b[1]&&(c+=3600*parseInt(b[1])*1e3),b[2]&&(c+=60*parseInt(b[2])*1e3),b[3]&&(c+=1e3*parseInt(b[3])),0===c)?2e3:c}collectStreamToResponse(a,b,c,d,f,g,h){let i=a.body.getReader(),j=new TextDecoder;return(async()=>{let k,l={textContent:"",finishReason:"stop",usage:null,remainingCredits:null},m={value:""},n=!1,o=AbortSignal.timeout(12e4);try{for(;;){if(h?.aborted)throw Error("Request aborted during SSE collection");let{done:a,value:b}=await Promise.race([i.read(),new Promise((a,b)=>o.addEventListener("abort",()=>b(Error("SSE collection timed out")),{once:!0}))]);if(a)break;G(j.decode(b,{stream:!0}),m,l,g)}}catch(b){let a=b?.message||String(b);n=a.includes("timed out"),g?.warn?.("SSE_COLLECT",`Error collecting SSE stream: ${a}`)}G(j.decode(),m,l,g),k=m.value.trim(),m.value="",k.startsWith("data:")&&F(k.slice(5).trim(),l,g);let p={id:`chatcmpl-${Date.now()}-${e().randomUUID().slice(0,8)}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:b,choices:[{index:0,message:{role:"assistant",content:l.textContent},finish_reason:n?"length":l.finishReason}],...l.usage&&{usage:l.usage},...l.remainingCredits&&{_remainingCredits:l.remainingCredits}},q=n?504:a.status;return{response:new Response(JSON.stringify(p),{status:q,statusText:n?"Gateway Timeout":a.statusText,headers:[["Content-Type","application/json"]]}),url:c,headers:d,transformedBody:f}})()}async execute({model:a,body:b,stream:c,credentials:d,signal:e,log:h,upstreamExtraHeaders:i}){await (0,n.f9)();let l=this.getFallbackCount(),m=null,o=0,p={},q=d?.connectionId||"unknown",r=(0,k.YX)(),s=(0,k.Ze)(d?.accessToken||"",r);for(let n=0;n<l;n++){let x=this.buildUrl(a,!0,n),y=this.buildHeaders(d,!0);(0,f._F)(y,i);let z=await this.transformRequest(a,b,!0,d),A=null;if(z instanceof Response)return{response:z,url:x,headers:y,transformedBody:b};if(z&&"object"==typeof z){let a=function(a){let b=u(a.request);if(!b)return{body:a,toolNameMap:null};let c=a._toolNameMap instanceof Map?a._toolNameMap:null,d=c?new Map(c):new Map,e=!1,f={...b};if(Array.isArray(b.tools)){let a=[],c=[];for(let f of b.tools){let b=u(f);if(!b||!Array.isArray(b.functionDeclarations)){a.push(f);continue}for(let a of b.functionDeclarations){let b=u(a);if(!b)continue;let f=v(b.name);if(!f){c.push({...b});continue}let g=w(f);g!==f&&(e=!0,d.set(g,d.get(f)??f)),c.push({...b,name:g})}}if(c.length>0){let b=new Set(c.map(a=>v(a.name)).filter(a=>a.length>0));f.tools=[...a,{functionDeclarations:[...c,...t.filter(a=>!b.has(a.name))]}],e=!0}}if(Array.isArray(b.contents)){let a=!1,c=b.contents.map(b=>{let c=u(b);if(!c||!Array.isArray(c.parts))return b;let e=!1,f=c.parts.map(a=>{let b=u(a);if(!b)return a;let c={...b},f=u(b.functionCall);if(f){let a=v(f.name),b=w(a);b!==a&&(c.functionCall={...f,name:b},d.set(b,d.get(a)??a),e=!0)}let g=u(b.functionResponse);if(g){let a=v(g.name),b=w(a);b!==a&&(c.functionResponse={...g,name:b},d.set(b,d.get(a)??a),e=!0)}return e?c:a});return e?(a=!0,{...c,parts:f}):b});a&&(f.contents=c,e=!0)}return e?{body:{...a,request:f},toolNameMap:d.size>0?d:null}:{body:a,toolNameMap:d.size>0?d:null}}(z);z=a.body,A=a.toolNameMap}s&&(z=(0,k.IE)(z),h?.debug?.("AG_CREDITS","Credits-first enabled (ANTIGRAVITY_CREDITS=always)")),p[n]||(p[n]=0);try{let b=await fetch(x,{method:"POST",headers:y,body:JSON.stringify(z),signal:e}),f=null;if(b.status===g.gx.RATE_LIMITED||b.status===g.gx.SERVICE_UNAVAILABLE){if(!(f=this.parseRetryHeaders(b.headers)))try{let i=await b.clone().text(),l=JSON.parse(i),m=l?.error?.message||l?.message||"",n=this.parseRetryFromErrorMessage(m),o=(0,j._c)(m),p=null!=z.enabledCreditTypes;if("quota_exhausted"===o&&p&&((0,k.Z1)(d?.accessToken||""),h?.warn?.("AG_CREDITS","Credits-first request 429'd — credits likely exhausted"),E(q)),"quota_exhausted"===o&&!p&&(0,k.SN)(d?.accessToken||"","off"!==r)){h?.info?.("AG_CREDITS","Retrying with Google One AI credits");let b=(0,k.IE)(z);try{let f=await fetch(x,{method:"POST",headers:y,body:JSON.stringify(b),signal:e});if(f.ok||f.status!==g.gx.RATE_LIMITED){if(h?.info?.("AG_CREDITS",`Credits retry succeeded: ${f.status}`),!c){let c=await this.collectStreamToResponse(f,a,x,y,b,h,e);try{let a=await c.response.clone().json(),b=a?._remainingCredits;if(Array.isArray(b)){let a=b.find(a=>"GOOGLE_ONE_AI"===a.creditType);if(a){let b=parseInt(a.creditAmount,10);isNaN(b)||D(q,b)}}}catch{}return{...c,transformedBody:H(b,A)}}return{response:f,url:x,headers:y,transformedBody:H(b,A)}}(0,k.Z1)(d?.accessToken||""),h?.warn?.("AG_CREDITS","Credits retry also 429'd"),E(q)}catch(a){(0,k.Z1)(d?.accessToken||""),h?.warn?.("AG_CREDITS",`Credits retry failed: ${a}`)}}let s=(0,j.M0)(o,n);f=s.retryAfterMs,h?.debug?.("AG_429",`Category: ${o}, Decision: ${s.kind} — ${s.reason}`)}catch(a){}if(f&&f<=6e4){let a=Math.min(f,6e4);h?.debug?.("RETRY",`${b.status} with Retry-After: ${Math.ceil(a/1e3)}s, waiting...`),await new Promise(b=>setTimeout(b,a)),n--;continue}if(b.status===g.gx.RATE_LIMITED&&(!f||0===f)&&p[n]<3){p[n]++;let a=Math.min(1e3*2**p[n],6e4);h?.debug?.("RETRY",`429 auto retry ${p[n]}/3 after ${a/1e3}s`),await new Promise(b=>setTimeout(b,a)),n--;continue}if(h?.debug?.("RETRY",`${b.status}, Retry-After ${f?`too long (${Math.ceil(f/1e3)}s)`:"missing"}, trying fallback`),o=b.status,n+1<l)continue}if(this.shouldRetry(b.status,n)){h?.debug?.("RETRY",`${b.status} on ${x}, trying fallback ${n+1}`),o=b.status;continue}if(b.status===g.gx.RATE_LIMITED&&f&&f>6e4)try{let a,c=await b.clone().text();try{a=JSON.parse(c)}catch{a={}}a.retryAfterMs=f;let d=JSON.stringify(a);return{response:new Response(d,{status:b.status,headers:b.headers}),url:x,headers:y,transformedBody:H(z,A)}}catch(a){h?.warn?.("RETRY",`Failed to embed retryAfterMs: ${a}`)}if(!c){let c=await this.collectStreamToResponse(b,a,x,y,z,h,e);try{let a=await c.response.clone().json(),b=a?._remainingCredits;if(Array.isArray(b)){let a=b.find(a=>a?.creditType==="GOOGLE_ONE_AI");if(a){let b=parseInt(a.creditAmount,10);isNaN(b)||D(q,b)}}}catch{}return{...c,transformedBody:H(z,A)}}if(b.body){let a="",c=new TextDecoder,d=new TransformStream({transform(b,d){d.enqueue(b);try{let d=c.decode(b,{stream:!0});if((a+=d).length>16384){let b=a.lastIndexOf("\n",a.length-16384);a=-1!==b?a.slice(b+1):""}}catch{}},flush(){try{let b=c.decode();a+=b}catch{}try{for(let b of a.split("\n")){let a=b.trim();if(!a.startsWith("data:"))continue;let c=a.slice(5).trim();if(c&&"[DONE]"!==c)try{let a=JSON.parse(c);if(Array.isArray(a?.remainingCredits)){let b=a.remainingCredits.find(a=>a?.creditType==="GOOGLE_ONE_AI");if(b){let a=parseInt(b.creditAmount,10);isNaN(a)||D(q,a)}}}catch{}}}catch{}a=""}}),e=b.body.pipeThrough(d);return{response:new Response(e,{status:b.status,statusText:b.statusText,headers:b.headers}),url:x,headers:y,transformedBody:H(z,A)}}return{response:b,url:x,headers:y,transformedBody:H(z,A)}}catch(a){if(m=a,n+1<l){h?.debug?.("RETRY",`Error on ${x}, trying fallback ${n+1}`);continue}throw a}}throw m||Error(`All ${l} URLs failed with status ${o}`)}}},25534:(a,b,c)=>{c.d(b,{QN:()=>f,Zd:()=>e});let d=new Map;function e(a,b){d.set(a,b)}async function f(a,b,c){let e;if(e=c?.providerSpecificData,e?.quotaPreflightEnabled!==!0)return{proceed:!0};let f=d.get(a);if(!f)return{proceed:!0};let g=null;try{g=await f(b,c)}catch{return{proceed:!0}}if(!g)return{proceed:!0};let{percentUsed:h}=g;return h>=.95?(console.info(`[QuotaPreflight] ${a}/${b}: ${(100*h).toFixed(1)}% used — switching`),{proceed:!1,reason:"quota_exhausted",quotaPercent:h,resetAt:g.resetAt??null}):(h>=.8&&console.warn(`[QuotaPreflight] ${a}/${b}: ${(100*h).toFixed(1)}% used — approaching limit`),{proceed:!0,quotaPercent:h})}},39852:(a,b,c)=>{c.d(b,{Ef:()=>i,M0:()=>g,_c:()=>f,dY:()=>j});let d=["quota_exhausted","quota exhausted"],e=["google_one_ai","insufficient credit","insufficient credits","not enough credit","not enough credits","credit exhausted","credits exhausted","credit balance","minimumcreditamountforusage","minimum credit amount for usage","minimum credit","resource has been exhausted"];function f(a){let b=(a||"").toLowerCase();for(let a of d)if(b.includes(a))return"quota_exhausted";for(let a of e)if(b.includes(a))return"quota_exhausted";return b.includes("per minute")||b.includes("rpm")||b.includes("rate limit")||b.includes("rate_limit")||b.includes("too many requests")?"rate_limited":b.includes("free tier")||b.includes("daily limit")||b.includes("exhausted your capacity")?"quota_exhausted":b.includes("try again")||b.includes("temporarily")?"soft_rate_limit":"unknown"}function g(a,b){switch(a){case"soft_rate_limit":return{kind:b&&b<=3e3?"instant_retry_same_auth":"soft_retry",retryAfterMs:b??2e3,reason:"Soft rate limit — brief backoff"};case"rate_limited":return{kind:b&&b<=3e5?"soft_retry":"short_cooldown_switch_auth",retryAfterMs:b??6e4,reason:"RPM rate limit — switch auth if cooldown is long"};case"quota_exhausted":return{kind:"full_quota_exhausted",retryAfterMs:b??864e5,reason:"Quota exhausted — skip this account"};default:return{kind:"soft_retry",retryAfterMs:b??5e3,reason:"Unknown 429 — generic backoff"}}}let h=new Map;function i(a){let b=h.get(a)??{count:0,disabledUntil:0};return(b.count++,b.count>=3)?(b.disabledUntil=Date.now()+18e6,h.set(a,b),!0):(h.set(a,b),!1)}function j(a){let b=h.get(a);return!!b&&(b.disabledUntil>Date.now()||(h.delete(a),!1))}},62894:(a,b,c)=>{c.d(b,{Hv:()=>r,OW:()=>q,Uv:()=>p,_F:()=>o});var d=c(49193),e=c(6714),f=c(76081),g=c(63108),h=c(20668),i=c(24518),j=c(5834),k=c(62724),l=c(81224),m=c(81711),n=c(77598);function o(a,b){if(b){for(let[c,d]of Object.entries(b))if("string"==typeof c&&c.length>0&&"string"==typeof d){if("user-agent"===c.toLowerCase()){p(a,d);continue}a[c]=d}}}function p(a,b){a["User-Agent"]=b,"user-agent"in a&&(a["user-agent"]=b)}function q(a,b){let c=new AbortController,d=a=>{c.signal.aborted||c.abort(a.reason)};return a.aborted?d(a):b.aborted?d(b):(a.addEventListener("abort",()=>d(a),{once:!0}),b.addEventListener("abort",()=>d(b),{once:!0})),c.signal}class r{constructor(a,b){this.provider=a,this.config=b}getProvider(){return this.provider}getBaseUrls(){return this.config.baseUrls||(this.config.baseUrl?[this.config.baseUrl]:[])}getFallbackCount(){return this.getBaseUrls().length||1}getTimeoutMs(){let a=this.config?.timeoutMs;return"number"==typeof a&&Number.isFinite(a)?Math.max(1,Math.floor(a)):d.MT}buildUrl(a,b,c=0,d=null){if(this.provider?.startsWith?.("openai-compatible-")){let a=d?.providerSpecificData,b=("string"==typeof a?.baseUrl?a.baseUrl:"https://api.openai.com/v1").replace(/\/$/,""),c="string"==typeof a?.chatPath&&a.chatPath?a.chatPath:null,e=c&&!("string"!=typeof c||!c.startsWith("/")||c.includes("\0")||c.includes(".."))&&!(c.length>512)&&1?c:null;if(e)return`${b}${e}`;let f="responses"===(0,g.J9)(this.provider,a)?"/responses":"/chat/completions";return`${b}${f}`}let e=this.getBaseUrls();return e[c]||e[0]||this.config.baseUrl}buildHeaders(a,b=!0,c){let d={"Content-Type":"application/json",...this.config.headers},e=this.config?.id||this.provider;if(e){let a=`${e.toUpperCase().replace(/[^A-Z0-9]/g,"_")}_USER_AGENT`,b=process.env[a]?.trim();b&&p(d,b)}if(a.accessToken)d.Authorization=`Bearer ${a.accessToken}`;else if(a.apiKey){let b=a.providerSpecificData?.extraApiKeys??[],c=b.length>0&&a.connectionId?(0,f.Cy)(a.connectionId,a.apiKey,b):a.apiKey;d.Authorization=`Bearer ${c}`}return d.Accept=b?"text/event-stream":"application/json",d}transformRequest(a,b,c,d){return b}shouldRetry(a,b){return a===d.gx.RATE_LIMITED&&b+1<this.getFallbackCount()}static{this.RETRY_CONFIG={maxAttempts:2,delayMs:2e3}}static{this.FETCH_START_TIMEOUT_MS=d.MT}async refreshCredentials(a,b){return null}needsRefresh(a){return!!a?.expiresAt&&new Date(a.expiresAt).getTime()-Date.now()<3e5}parseError(a,b){return{status:a.status,message:b||`HTTP ${a.status}`}}buildCountTokensUrl(a,b=null){let c=this.buildUrl(a,!1,0,b);if("string"!=typeof c||0===c.length||this.config?.format!=="claude"||!c.includes("/messages"))return null;let[d,e=""]=c.split("?"),f=(d.endsWith("/messages"),`${d}/count_tokens`);return e?`${f}?${e}`:f}async countTokens({model:a,body:b,credentials:c,signal:d,log:e}){let f=this.buildCountTokensUrl(a,c);if(!f)return null;let g=this.buildHeaders(c,!1),h=b&&"object"==typeof b?{...b,model:a}:{model:a},i=null,j=d||null,k=null,l=this.getTimeoutMs();j||(k=new AbortController,i=setTimeout(()=>k?.abort(),l),j=k.signal);try{let a=await fetch(f,{method:"POST",headers:g,body:JSON.stringify(h),signal:j||void 0}),b=await a.text();if(!a.ok){let c=this.parseError(a,b);throw Error(c.message)}let c=b?JSON.parse(b):{},d=Number(c?.input_tokens);if(!Number.isFinite(d))throw Error("Provider count_tokens response missing input_tokens");return{input_tokens:d,provider:this.provider,source:"provider"}}catch(b){return e?.debug?.("COUNT_TOKENS",`${this.provider}/${a} real count unavailable: ${b instanceof Error?b.message:String(b)}`),null}finally{i&&clearTimeout(i)}}async execute({model:a,body:b,stream:c,credentials:f,signal:s,log:t,extendedContext:u,upstreamExtraHeaders:v,clientHeaders:w}){let x=this.getFallbackCount(),y=null,z=0,A=f,B={};if(this.needsRefresh(f))try{let a=await this.refreshCredentials(f,t||null);a&&(A={...f,...a},arguments[0].onCredentialsRefreshed&&await arguments[0].onCredentialsRefreshed(a))}catch(a){t?.warn?.("TOKEN",`Credential refresh failed for ${this.provider}: ${a instanceof Error?a.message:String(a)}`)}for(let f=0;f<x;f++){let C=this.buildUrl(a,c,f,A),D=this.buildHeaders(A,c,w);!function(a,b){let c=("string"==typeof b?.customUserAgent?b.customUserAgent.trim():"")||null;c&&p(a,c)}(D,A?.providerSpecificData);let E=(0,g.GK)(this.provider)?(0,j.RG)(A?.providerSpecificData):{},F=u&&(0,i.zP)(a)&&!(0,g.GK)(this.provider),G=(0,g.GK)(this.provider)&&!0===E.context1m;(F||G)&&(0,i.QH)(D,i.c8);let H=await this.transformRequest(a,b,c,A);try{let b,c=this.getTimeoutMs(),i=c>0?new AbortController:null,j=null;i&&(j=setTimeout(()=>{let a=Error(`Fetch timeout after ${c}ms on ${C}`);a.name="TimeoutError",i.abort(a)},c));let p=i?.signal??null,u=s&&p?q(s,p):s||p,x=w?.["x-app"]==="cli"||w?.["user-agent"]&&w["user-agent"].toLowerCase().includes("claude-code")||w?.["user-agent"]&&w["user-agent"].toLowerCase().includes("claude-cli");if("claude"===this.provider&&x&&"object"==typeof H&&null!==H){(0,l.ye)(H),(0,m.oS)(H);let b="2.1.114",c=new Date().toISOString().slice(0,10),d=(0,n.createHash)("sha256").update(`${c}${b}`).digest("hex").slice(0,3),e=`x-anthropic-billing-header: cc_version=${b}.${d}; cc_entrypoint=cli; cch=00000;`;if(Array.isArray(H.system)){let a=H.system,b=a[0]&&"object"==typeof a[0]&&!Array.isArray(a[0])&&a[0].cache_control?a[0].cache_control:void 0,c={type:"text",text:e};b&&(c.cache_control=b),a.unshift(c)}else"string"==typeof H.system?H.system=[{type:"text",text:e},{type:"text",text:H.system}]:H.system=[{type:"text",text:e}];H.metadata&&"object"==typeof H.metadata||(H.metadata={user_id:JSON.stringify({device_id:(0,n.createHash)("sha256").update("omniroute").digest("hex").slice(0,24),account_uuid:"",session_id:(0,n.randomUUID)()})});let f=(0,k.j$)("claude",a);f&&!H.thinking&&(H.thinking={type:"adaptive"}),f&&!H.context_management&&(H.context_management={edits:[{type:"clear_thinking_20251015",keep:"all"}]}),f&&!H.output_config&&(H.output_config={effort:"high"});let g={"anthropic-version":"2023-06-01","anthropic-beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,redact-thinking-2026-02-12,context-management-2025-06-27,prompt-caching-scope-2026-01-05,advisor-tool-2026-03-01,advanced-tool-use-2025-11-20,effort-2025-11-24","anthropic-dangerous-direct-browser-access":"true","x-app":"cli","User-Agent":`claude-cli/${b} (external, cli)`,"X-Stainless-Package-Version":"0.81.0","X-Stainless-Timeout":"600","accept-language":"*","accept-encoding":"gzip, deflate, br, zstd",connection:"keep-alive","x-client-request-id":(0,n.randomUUID)(),"X-Claude-Code-Session-Id":(0,n.randomUUID)()},h=new Set(Object.keys(g).map(a=>a.toLowerCase()));for(let a of Object.keys(D))h.has(a.toLowerCase())&&delete D[a];Object.assign(D,g),delete D["X-Stainless-Helper-Method"],D["X-Stainless-Arch"]="x64",D["X-Stainless-Lang"]="js",D["X-Stainless-OS"]="Windows",D["X-Stainless-Runtime"]="node",D["X-Stainless-Runtime-Version"]="v24.3.0",D["X-Stainless-Retry-Count"]="0",delete D["X-Stainless-Os"],console.log(`[CLAUDE-PATCH] provider=${this.provider} tools remapped, billing header injected, body fields added, headers patched`)}let y=D,A=JSON.stringify(H);if((0,e.IL)(this.provider)){let a=(0,e.BI)(this.provider,D,H);y=a.headers,A=a.bodyString}((0,g.GK)(this.provider)||"claude"===this.provider)&&(A=await (0,h.jD)(A)),o(y,v);let E={method:"POST",headers:y,body:A};u&&(E.signal=u);try{b=await fetch(C,E)}finally{j&&(clearTimeout(j),j=null)}if(b.status===d.gx.RATE_LIMITED&&(B[f]??0)<r.RETRY_CONFIG.maxAttempts){B[f]=(B[f]??0)+1;let a=B[f];t?.debug?.("RETRY",`429 intra-retry ${a}/${r.RETRY_CONFIG.maxAttempts} on ${C} — waiting ${r.RETRY_CONFIG.delayMs}ms`),await new Promise(a=>setTimeout(a,r.RETRY_CONFIG.delayMs)),f--;continue}if(this.shouldRetry(b.status,f)){t?.debug?.("RETRY",`${b.status} on ${C}, trying fallback ${f+1}`),z=b.status;continue}return{response:b,url:C,headers:y,transformedBody:H}}catch(b){let a=b instanceof Error?b:Error(String(b));if("TimeoutError"===a.name&&t?.warn?.("TIMEOUT",`Fetch timeout after ${this.getTimeoutMs()}ms on ${C}`),y=a,f+1<x){t?.debug?.("RETRY",`Error on ${C}, trying fallback ${f+1}`);continue}throw a}}throw y||Error(`All ${x} URLs failed with status ${z}`)}}},68445:(a,b,c)=>{c.d(b,{T:()=>i,Y:()=>h});var d=c(76029);let e=[/^claude-/i,/^gpt-oss-/i,/^tab_/i];function f(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function g(a){if(!f(a)||!("thinkingConfig"in a)&&!("thinking_config"in a))return a;let b={...a};return delete b.thinkingConfig,delete b.thinking_config,b}function h(a,b){if(!a||!b)return!1;let c=String(b||"").trim().replace(/^models\//i,"").replace(/^(?:antigravity|gemini-cli)\//i,""),f=(0,d.js)(c);return"boolean"==typeof f?.supportsThinking?!f.supportsThinking:e.some(a=>a.test(c))}function i(a){let b={...a};if(delete b.reasoning_effort,delete b.reasoning,delete b.thinking,"generationConfig"in b&&(b.generationConfig=g(b.generationConfig)),f(b.request)){let a={...b.request};"generationConfig"in a&&(a.generationConfig=g(a.generationConfig)),b.request=a}return b}},69105:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{DEFAULT_QUOTA_THRESHOLD_PERCENT:()=>x,getQuotaCache:()=>o,getQuotaCacheStats:()=>w,getQuotaWindowStatus:()=>q,isAccountQuotaExhausted:()=>p,markAccountExhaustedFrom429:()=>r,setQuotaCache:()=>n,startBackgroundRefresh:()=>u,stopBackgroundRefresh:()=>v});var e=c(86552),f=c(73671),g=c(93603),h=c(10885),i=c(7938),j=a([f]);f=(j.then?(await j)():j)[0];let x=99,y=new Map,z=null,A=!1;function k(a){let b=new Date(a).getTime();return Number.isNaN(b)?null:b}function l(a){return Number.isFinite(a)?Math.max(0,Math.min(100,a)):0}function m(a){return"string"!=typeof a?"":a.toLowerCase().replace(/[^a-z0-9]+/g," ").trim()}function n(a,b,c){let d,e=function(a){let b={};for(let[c,d]of Object.entries(a))d&&"object"==typeof d&&(b[c]={remainingPercentage:(0,h.Q1)(d.remainingPercentage)??(d.total>0?Math.round((d.total-(d.used||0))/d.total*100):0),resetAt:d.resetAt||null});return b}(c),f=(d=Object.values(e),0!==d.length&&d.every(a=>a.remainingPercentage<=0)),g={connectionId:a,provider:b,quotas:e,fetchedAt:Date.now(),exhausted:f,nextResetAt:f?function(a){let b=null,c=1/0;for(let d of Object.values(a)){if(!d.resetAt)continue;let a=k(d.resetAt);null!==a&&a<c&&(c=a,b=d.resetAt)}return b}(e):null};if(y.set(a,g),g&&c)for(let[d,e]of Object.entries(c)){if(!e||"object"!=typeof e)continue;let c=(0,h.Q1)(e.remainingPercentage)??(e.total>0?Math.round((e.total-(e.used||0))/e.total*100):0);try{(0,i.KK)({provider:b,connection_id:a,window_key:d,remaining_percentage:c,is_exhausted:+!!g.exhausted,next_reset_at:e.resetAt??null,window_duration_ms:g.windowDurationMs??null,raw_data:null})}catch(a){console.error("[quotaCache] Failed to save snapshot:",a)}}}function o(a){return y.get(a)||null}function p(a){let b=y.get(a);if(!b||!b.exhausted)return!1;let c=Date.now();if(function(a,b){if(!a.nextResetAt)return null;let c=k(a.nextResetAt);return null===c?null:c<=b||a.windowDurationMs&&a.windowDurationMs>0&&b-c>=0?{exhausted:!1}:null}(b,c))return b.exhausted=!1,!1;let d=c-b.fetchedAt;return!!b.nextResetAt||!(d>3e5)}function q(a,b,c=x){let d=y.get(a);if(!d)return null;let e=Date.now(),f=function(a,b){let c=a[b];if(c)return c;let d=m(b);if(!d)return null;let e=[];for(let[b,c]of Object.entries(a)){let a=m(b);if(a){if(a===d)return c;a.startsWith(`${d} `)&&e.push({key:b,quota:c})}}return e.length>0?(e.sort((a,b)=>a.key.localeCompare(b.key)),e[0].quota):null}(d.quotas,b);if(!f)return null;let g=l(f.remainingPercentage),h=l(100-g),i=f.resetAt||null,j=!1;if(i){let a=k(i);null!==a&&a<=e&&(i=null,j=!0)}return{remainingPercentage:g,usedPercentage:h,resetAt:i,reachedThreshold:!j&&h>=c}}function r(a,b){y.set(a,{connectionId:a,provider:b,quotas:{},fetchedAt:Date.now(),exhausted:!0,nextResetAt:null})}let B=new Set;async function s(a){if(!B.has(a.connectionId)){B.add(a.connectionId);try{let b=await (0,f.McZ)(a.connectionId);if(!b||"oauth"!==b.authType||!b.isActive)return void y.delete(a.connectionId);let c=await (0,f.YDv)(a.connectionId),d=await (0,g.jf)(c?.proxy||null,()=>(0,e.m)(b));d?.quotas&&n(a.connectionId,a.provider,d.quotas)}catch(b){console.warn(`[QuotaCache] Refresh failed for ${a.connectionId.slice(0,8)}:`,b?.message||b)}finally{B.delete(a.connectionId)}}}async function t(){if(!A){A=!0;try{(0,i.Xx)();let a=Date.now(),b=[...y.values()].filter(b=>(function(a,b){let c=b-a.fetchedAt;if(a.exhausted&&a.nextResetAt){let c=k(a.nextResetAt);if(null!==c&&c<=b)return!0}return c>=3e5})(b,a));for(let a=0;a<b.length;a+=5){let c=b.slice(a,a+5);await Promise.allSettled(c.map(s))}}finally{A=!1}}}function u(){z||(z=setInterval(t,6e4),z?.unref?.())}function v(){z&&(clearInterval(z),z=null)}function w(){let a=[];for(let b of y.values())a.push({connectionId:b.connectionId.slice(0,8)+"...",provider:b.provider,exhausted:b.exhausted,nextResetAt:b.nextResetAt,ageMs:Date.now()-b.fetchedAt});return{total:y.size,entries:a}}d()}catch(a){d(a)}})},71181:(a,b,c)=>{c.d(b,{ZC:()=>k,br:()=>i});var d=c(25534),e=c(93786);let f=new Map,g=new Map,h=new Map;function i(a,b){h.set(a,b),(0,d.Zd)(a,b)}function j(a,b,c,d){let e=`${a}:${b}:${c}`,f=g.get(e)??0;return!(Date.now()-f<3e5)&&(g.set(e,Date.now()),console.warn(`[QuotaMonitor] session=${a} ${b}/${c}: ${(100*d).toFixed(1)}% quota used`),!0)}function k(a,b,c,d){let g;if(g=d?.providerSpecificData,g?.quotaMonitorEnabled!==!0)return;let i=f.get(a);if(i&&!i.stopped){if(i.provider===b&&i.accountId===c){i.connectionSnapshot=d,i.sessionBound=i.sessionBound||null!==(0,e.TT)(a);return}l(a)}f.set(a,{timer:null,stopped:!1,provider:b,accountId:c,connectionSnapshot:d,sessionBound:null!==(0,e.TT)(a),status:"starting",startedAt:Date.now(),lastPolledAt:null,lastSuccessAt:null,lastErrorAt:null,lastError:null,lastQuotaPercent:null,lastQuotaUsed:null,lastQuotaTotal:null,lastResetAt:null,lastAlertAt:null,nextPollDelayMs:null,nextPollAt:null,totalPolls:0,totalAlerts:0,consecutiveFailures:0}),function a(b,c){let d=f.get(b);if(!d||d.stopped)return;d.nextPollDelayMs=c,d.nextPollAt=Date.now()+c;let{provider:g,accountId:i}=d,k=setTimeout(async()=>{let c=f.get(b);if(c&&!c.stopped){if(c.sessionBound&&!(0,e.TT)(b))return void l(b);try{let d=h.get(g);if(!d){c.status=null===c.lastQuotaPercent?"idle":c.status,a(b,6e4);return}c.lastPolledAt=Date.now(),c.totalPolls+=1;let e=c.status,f=await d(i,c.connectionSnapshot||void 0),k=f&&"number"==typeof f.percentUsed&&Number.isFinite(f.percentUsed)?f.percentUsed:null;if(c.lastSuccessAt=Date.now(),c.lastError=null,c.lastErrorAt=null,c.consecutiveFailures=0,c.lastQuotaPercent=k,c.lastQuotaUsed=f&&"number"==typeof f.used&&Number.isFinite(f.used)?f.used:null,c.lastQuotaTotal=f&&"number"==typeof f.total&&Number.isFinite(f.total)?f.total:null,c.lastResetAt=f&&"string"==typeof f.resetAt&&f.resetAt.trim().length>0?f.resetAt:null,c.status=Number.isFinite(k)?k>=.95?"exhausted":k>=.8?"warning":"healthy":"idle",null!==k&&k>=.95){let d=j(b,g,i,k);d&&(c.lastAlertAt=Date.now(),c.totalAlerts+=1),(d||"exhausted"!==e)&&console.info(`[QuotaMonitor] session=${b}: marking ${i} for next-session cooldown`),a(b,15e3)}else null!==k&&k>=.8?(j(b,g,i,k)&&(c.lastAlertAt=Date.now(),c.totalAlerts+=1),a(b,15e3)):a(b,6e4)}catch(d){c.lastErrorAt=Date.now(),c.lastError=d instanceof Error?d.message:String(d),c.consecutiveFailures+=1,c.status="error",a(b,6e4)}}},c);"function"==typeof k.unref&&k.unref(),d.timer=k}(a,6e4)}function l(a){let b=f.get(a);if(b)for(let c of(b.stopped=!0,b.timer&&(clearTimeout(b.timer),b.timer=null),f.delete(a),g.keys()))c.startsWith(`${a}:`)&&g.delete(c)}},76029:(a,b,c)=>{c.d(b,{fn:()=>d,js:()=>e});let d={"gpt-5.5-mini":{maxOutputTokens:128e3,contextWindow:4e5,supportsThinking:!0,supportsTools:!0,supportsVision:!0},"gpt-5.5":{maxOutputTokens:128e3,contextWindow:105e4,supportsThinking:!0,supportsTools:!0,supportsVision:!0},"gemini-3-flash":{maxOutputTokens:65536,contextWindow:1048576,defaultThinkingBudget:0,thinkingBudgetCap:0,supportsThinking:!1,supportsTools:!0,supportsVision:!0,aliases:["gemini-3-flash-preview","gemini-3.1-flash-lite-preview"]},"gemini-3.1-pro-high":{maxOutputTokens:65535,contextWindow:1048576,defaultThinkingBudget:24576,thinkingBudgetCap:32768,thinkingOverhead:1e3,supportsThinking:!0,supportsTools:!0,supportsVision:!0,aliases:["gemini-3-pro-high","gemini-3-pro-preview","gemini-3.1-pro-preview","gemini-3.1-pro-preview-customtools"]},"gemini-3.1-pro-low":{maxOutputTokens:65535,contextWindow:1048576,defaultThinkingBudget:8192,thinkingBudgetCap:16e3,supportsThinking:!0,supportsTools:!0,supportsVision:!0,aliases:["gemini-3-pro-low"]},"claude-opus-4-5":{maxOutputTokens:32768,contextWindow:2e5,defaultThinkingBudget:1e4,thinkingBudgetCap:32e3,supportsThinking:!0,supportsTools:!0,supportsVision:!0},"claude-opus-4-7":{maxOutputTokens:128e3,contextWindow:1e6,supportsThinking:!0,supportsTools:!0,supportsVision:!0,aliases:["claude-opus-4.7"]},__default__:{maxOutputTokens:8192}};function e(a){if(d[a])return d[a];for(let[b,c]of Object.entries(d))if(c.aliases?.includes(a))return c;for(let[b,c]of Object.entries(d))if("__default__"!==b&&a.startsWith(b))return c}},76081:(a,b,c)=>{c.d(b,{Cy:()=>e});let d=new Map;function e(a,b,c=[]){let f=c.filter(a=>"string"==typeof a&&a.trim().length>0);if(0===f.length)return b;let g=[b,...f].filter(Boolean);if(g.length<=1)return b;let h=d.get(a)??0,i=h%g.length;return d.set(a,h+1),g[i]}},77421:(a,b,c)=>{c.d(b,{l:()=>e});let d=["x-forwarded-for","x-forwarded-host","x-forwarded-proto","x-forwarded-port","x-real-ip","forwarded","via","x-title","x-stainless-lang","x-stainless-package-version","x-stainless-os","x-stainless-arch","x-stainless-runtime","x-stainless-runtime-version","x-stainless-timeout","x-stainless-retry-count","x-stainless-helper-method","http-referer","referer","sec-ch-ua","sec-ch-ua-mobile","sec-ch-ua-platform","sec-fetch-mode","sec-fetch-site","sec-fetch-dest","priority","accept-encoding"];function e(a){let b={};for(let[c,e]of Object.entries(a))d.includes(c.toLowerCase())||(b[c]=e);return b["Accept-Encoding"]="gzip, deflate, br",b}},77608:(a,b,c)=>{c.d(b,{OZ:()=>m,PU:()=>l});var d=c(25534),e=c(71181);let f="/data/api.json?action=zeldaEasy.broadscope-bailian.codingPlan.queryCodingPlanInstanceInfoV2&product=broadscope-bailian&api=queryCodingPlanInstanceInfoV2",g=new Map,h=setInterval(()=>{let a=Date.now();for(let[b,c]of g)a-c.fetchedAt>3e5&&g.delete(b)},3e5);function i(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a){let b=parseFloat(a);if(Number.isFinite(b))return b}return b}function j(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function k(a){let b=j(a);if("ConsoleNeedLogin"===b.code||"Success"!==b.code&&"200"!==b.code)return null;let c=j(b.data).codingPlanInstanceInfos;if(!Array.isArray(c)||0===c.length)return null;let d=j(c[0]),e=j(d.codingPlanQuotaInfo);if(0===Object.keys(e).length)return null;let f=i(e.per5HourUsedQuota),g=i(e.per5HourTotalQuota),h=i(e.per5HourQuotaNextRefreshTime),k=g>0?f/g:0,l=i(e.perWeekUsedQuota),m=i(e.perWeekTotalQuota),n=i(e.perWeekQuotaNextRefreshTime),o=m>0?l/m:0,p=i(e.perBillMonthUsedQuota),q=i(e.perBillMonthTotalQuota),r=i(e.perBillMonthQuotaNextRefreshTime),s=q>0?p/q:0,t=Math.max(k,o,s),u={percentUsed:k,resetAt:h>0?new Date(1e3*h).toISOString():null},v={percentUsed:o,resetAt:n>0?new Date(1e3*n).toISOString():null},w={percentUsed:s,resetAt:r>0?new Date(1e3*r).toISOString():null},x=t===k?u.resetAt:t===o?v.resetAt:w.resetAt;return{used:Math.round(100*t),total:100,percentUsed:t,resetAt:x,window5h:u,windowWeekly:v,windowMonthly:w}}async function l(a,b){let c,d=g.get(a);if(d&&Date.now()-d.fetchedAt<6e4)return d.quota;let e=b?.providerSpecificData&&"object"==typeof b.providerSpecificData&&!Array.isArray(b.providerSpecificData)?b.providerSpecificData:void 0,h="string"==typeof b?.apiKey&&b.apiKey.trim().length>0?b.apiKey:"",i="string"==typeof(c=e?.consoleApiKey)&&c.trim().length>0?c:h;if(!i)return null;let l={Authorization:`Bearer ${i}`,"x-api-key":i,"X-DashScope-API-Key":i,"Content-Type":"application/json",Accept:"application/json"};try{let b,c=process.env.ALIBABA_CODING_PLAN_QUOTA_URL||`${!(b=process.env.ALIBABA_CODING_PLAN_HOST?.trim())?"https://modelstudio.console.alibabacloud.com":/^https?:\/\//i.test(b)?b:`https://${b}`}${f}`,d=await fetch(c,{method:"POST",headers:l,body:JSON.stringify({}),signal:AbortSignal.timeout(8e3)}),e=await d.json(),h=j(e);if("ConsoleNeedLogin"===h.code)try{let b=process.env.ALIBABA_CODING_PLAN_QUOTA_URL?c:`https://bailian.console.aliyun.com${f}`,d=await fetch(b,{method:"POST",headers:l,body:JSON.stringify({}),signal:AbortSignal.timeout(8e3)}),e=await d.json(),h=k(e);if(h)return g.set(a,{quota:h,fetchedAt:Date.now()}),h;return null}catch{return null}let i=k(e);if(!i)return null;return g.set(a,{quota:i,fetchedAt:Date.now()}),i}catch{return null}}function m(){(0,d.Zd)("bailian-coding-plan",l),(0,e.br)("bailian-coding-plan",l)}"object"==typeof h&&"unref"in h&&h.unref?.()},86552:(a,b,c)=>{c.d(b,{m:()=>H});var d=c(77598),e=c.n(d),f=c(49193),g=c(60382),h=c(20138),i=c(3235),j=c(10885),k=c(77608),l=c(40751),m=c(24632),n=c(96467);let o={quotaApiUrls:(0,g.aW)(),loadProjectApiUrl:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",tokenUrl:"https://oauth2.googleapis.com/token",get clientId(){return f.xq.antigravity.clientId},get clientSecret(){return f.xq.antigravity.clientSecret},get userAgent(){return(0,l.FT)()}},p="2023-06-01",q={usageUrl:"https://www.cursor.com/api/usage",userMetaUrl:"https://www.cursor.com/api/auth/me",subscriptionUrl:"https://www.cursor.com/api/subscription",clientVersion:i.Mr},r={minimax:{usageUrls:["https://www.minimax.io/v1/token_plan/remains","https://api.minimax.io/v1/api/openplatform/coding_plan/remains"]},"minimax-cn":{usageUrls:["https://www.minimaxi.com/v1/api/openplatform/coding_plan/remains","https://api.minimaxi.com/v1/api/openplatform/coding_plan/remains"]}};function s(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function t(a,b=0){let c="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):NaN;return Number.isFinite(c)?c:b}function u(a,b,c){let d=s(a);return d[b]??d[c]??null}function v(a){return Math.max(0,Math.min(100,a))}function w(a){return a.replace(/^copilot[_\s-]*/i,"").split(/[\s_-]+/).filter(Boolean).map(a=>/^pro\+$/i.test(a)?"Pro+":/^[a-z]{2,}$/.test(a)?a.charAt(0).toUpperCase()+a.slice(1).toLowerCase():a).join(" ").trim()}function x(a){return!!a&&(!a.unlimited||!(a.total<=0))&&(a.total>0||void 0!==a.remainingPercentage)}function y(a,b,c,d,e,f){let g=t(u(a,c,d),0);return g>0?new Date(b+g).toISOString():I(u(a,e,f))}function z(a){return Math.max(0,t(u(a,"current_interval_total_count","currentIntervalTotalCount"),0))}function A(a){return Math.max(0,t(u(a,"current_weekly_total_count","currentWeeklyTotalCount"),0))}function B(a,b){let c=a.filter(a=>b(a)>0),d=c.length>0?c:a;return 0===d.length?null:d.reduce((a,c)=>b(c)>b(a)?c:a)}function C(a,b,c,d){var e;let f,g,h;return e=d?Math.max(a-b,0):b,g=(f=Math.max(0,t(a,0)))>0?Math.min(Math.max(0,t(e,0)),f):0,h=f>0?Math.max(f-g,0):0,{used:g,total:f,remaining:h,remainingPercentage:f>0?v(h/f*100):0,resetAt:I(c),unlimited:!1}}async function D(a,b){if(!a)return{message:"MiniMax API key not available. Add a Token Plan API key."};let c=r[b].usageUrls,d="";for(let b=0;b<c.length;b+=1){let e=c[b],f=b<c.length-1;try{let b=await fetch(e,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"}}),c=await b.text(),g={};if(c)try{g=s(JSON.parse(c))}catch{g={}}let h=s(u(g,"base_resp","baseResp")),i=t(u(h,"status_code","statusCode"),0),j=String(u(h,"status_msg","statusMsg")??"").trim(),k=`${j} ${c}`.trim(),l=/token plan|coding plan|invalid api key|invalid key|unauthorized|inactive/i;if(401===b.status||403===b.status||1004===i||l.test(k))return{message:function(a){let b=a.toLowerCase();return b.includes("token plan")||b.includes("coding plan")||b.includes("active period")||b.includes("invalid api key")||b.includes("invalid key")||b.includes("subscription")?"MiniMax Token Plan API key invalid or inactive. Use an active Token Plan key.":"MiniMax access denied. Confirm the key is an active Token Plan API key."}(k)};if(!b.ok){if(d=function(a,b){let c=b.replace(/\s+/g," ").trim();return c?c.length<=160?`MiniMax usage endpoint error (${a}): ${c}`:`MiniMax usage endpoint error (${a}): ${c.slice(0,157)}...`:`MiniMax usage endpoint error (${a}).`}(b.status,k),(404===b.status||405===b.status||b.status>=500)&&f)continue;return{message:`MiniMax connected. ${d}`}}if(c&&0===Object.keys(g).length)return{message:"MiniMax connected. Unable to parse usage response."};if(0!==i){if(j)return{message:`MiniMax connected. ${j}`};return{message:"MiniMax connected. Upstream quota API returned an error."}}let m=Date.now(),n=u(g,"model_remains","modelRemains"),o=(Array.isArray(n)?n.map(a=>s(a)):[]).filter(a=>{let b=String(u(a,"model_name","modelName")??"");return function(a){let b=a.trim().toLowerCase();return b.startsWith("minimax-m")||b.startsWith("coding-plan")}(b)});if(0===o.length)return{message:"MiniMax connected. No text quota data was returned."};let p=e.includes("/coding_plan/remains"),q={},r=B(o,z);if(r){let a=z(r),b=Math.max(0,t(u(r,"current_interval_usage_count","currentIntervalUsageCount"),0));q["session (5h)"]=C(a,b,y(r,m,"remains_time","remainsTime","end_time","endTime"),p)}let v=B(o,A);if(v&&A(v)>0){let a=A(v),b=Math.max(0,t(u(v,"current_weekly_usage_count","currentWeeklyUsageCount"),0));q["weekly (7d)"]=C(a,b,y(v,m,"weekly_remains_time","weeklyRemainsTime","weekly_end_time","weeklyEndTime"),p)}if(0===Object.keys(q).length)return{message:"MiniMax connected. Unable to extract text quota usage."};return{quotas:q}}catch(a){if(d=a.message,!f)break}}return{message:d?`MiniMax connected. Unable to fetch usage: ${d}`:"MiniMax connected. Unable to fetch usage."}}async function E(a){let b;if(!a)return{message:"CrofAI API key not available. Add a key to view usage."};try{b=await fetch("https://crof.ai/usage_api/",{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}})}catch(a){return{message:`CrofAI connected. Unable to fetch usage: ${a.message}`}}let c=await b.text();if(401===b.status||403===b.status)return{message:"CrofAI connected. The API key was rejected by /usage_api/."};if(!b.ok)return{message:`CrofAI connected. /usage_api/ returned HTTP ${b.status}.`};let d={};if(c)try{d=s(JSON.parse(c))}catch{return{message:"CrofAI connected. Unable to parse /usage_api/ response."}}let e=d.usable_requests,f=null==e?null:t(e,0),g=t(d.credits,0),h={};if(null!==f){let a=Math.max(0,f),b=Math.max(1e3,a),c=Math.max(0,b-a),d=new Date,e=Date.UTC(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate(),5),g=new Date(e>d.getTime()?e:e+864e5).toISOString();h["Requests Today"]={used:c,total:b,remaining:a,resetAt:g,unlimited:!1,displayName:`Requests Today: ${a} left`}}return h.Credits={used:0,total:0,remaining:0,resetAt:null,unlimited:!0,displayName:`Credits: $${g.toFixed(4)}`},{quotas:h}}async function F(a,b){let c=(0,h.oS)(b),d=await fetch(c,{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}});if(!d.ok){if(401===d.status)throw Error("Invalid API key");throw Error(`GLM quota API error (${d.status})`)}let e=s((await d.json()).data),f=Array.isArray(e.limits)?e.limits:[],g={};for(let a of f){let b=s(a);if("TOKENS_LIMIT"!==b.type)continue;let c=t(b.percentage,0),d=t(b.nextResetTime,0),e=Math.max(0,100-c);g.session={used:c,total:100,remaining:e,remainingPercentage:e,resetAt:d>0?new Date(d).toISOString():null,unlimited:!1}}let i="string"==typeof e.level?e.level:"";return{plan:i?i.charAt(0).toUpperCase()+i.slice(1).toLowerCase():"Unknown",quotas:g}}async function G(a,b,c){try{let d=await (0,k.PU)(a,{apiKey:b,providerSpecificData:c});if(!d)return{message:"Bailian Coding Plan connected. Unable to fetch quota."};let e=d.used,f=d.total,g=Math.max(0,f-e),h=Math.round(g);return{plan:"Alibaba Coding Plan",used:e,total:f,remaining:g,remainingPercentage:h,resetAt:d.resetAt,unlimited:!1,displayName:"Alibaba Coding Plan"}}catch(a){return{message:`Bailian Coding Plan error: ${a.message}`}}}async function H(a){let{id:b,provider:c,accessToken:d,apiKey:e,providerSpecificData:f,projectId:g,email:h}=a;switch(c){case"github":return await J(d,f);case"gemini-cli":return await S(d,f,g);case"antigravity":return await X(d,f,g,b);case"claude":return await $(d);case"codex":return await aa(d,f);case"kiro":case"amazon-q":return await ab(d,f);case"kimi-coding":return await ad(d);case"qwen":return await ae(d,f);case"qoder":return await af(d);case"glm":case"glmt":return await F(e,f);case"minimax":case"minimax-cn":return await D(e,c);case"crof":return await E(e);case"cursor":return await Q(d);case"bailian-coding-plan":return await G(b,e,f);default:return{message:`Usage API not implemented for ${c}`}}}function I(a){if(!a)return null;try{let b;if(a instanceof Date)b=a;else if("number"==typeof a)b=new Date(a);else{if("string"!=typeof a)return null;b=new Date(a)}if(0>=b.getTime())return null;return b.toISOString()}catch(a){return null}}async function J(a,b){try{if(!a)throw Error("No GitHub access token available. Please re-authorize the connection.");let b=await fetch("https://api.github.com/copilot_internal/user",{headers:(0,i.wl)(`token ${a}`)});if(!b.ok){let a=await b.text();if(401===b.status||403===b.status)return{message:"GitHub token expired or permission denied. Please re-authenticate the connection."};throw Error(`GitHub API error: ${a}`)}let c=await b.json(),d=s(c);if(d.quota_snapshots){let a=s(d.quota_snapshots),b=I(u(d,"quota_reset_date","quotaResetDate")),c=K(a.premium_interactions,b),e=K(a.chat,b),f=K(a.completions,b),g={};return x(c)&&(g.premium_interactions=c),x(e)&&(g.chat=e),x(f)&&(g.completions=f),{plan:L(d,c),resetDate:u(d,"quota_reset_date","quotaResetDate"),quotas:g}}if(d.monthly_quotas||d.limited_user_quotas){let a=s(d.monthly_quotas),b=s(d.limited_user_quotas),c=u(d,"limited_user_reset_date","limitedUserResetDate"),e=I(c),f={},g=c=>{let d=t(u(a,c,c),0),g=Math.max(0,t(u(b,c,c),0));if(d<=0)return null;let h=Math.min(g,d);return f[c]={used:h,total:d,remaining:Math.max(d-h,0),remainingPercentage:v((d-h)/d*100),unlimited:!1,resetAt:e},f[c]},h=g("premium_interactions");return g("chat"),g("completions"),{plan:L(d,h),resetDate:c,quotas:f}}return{message:"GitHub Copilot connected. Unable to parse quota data."}}catch(a){throw Error(`Failed to fetch GitHub usage: ${a.message}`)}}function K(a,b=null){let c=s(a);if(0===Object.keys(c).length)return null;let d=!0===c.unlimited,e=t(c.entitlement,NaN),f=t(c.total,NaN),g=t(c.remaining,NaN),h=t(c.used,NaN),i=t(u(c,"percent_remaining","percentRemaining"),NaN),j=Number.isFinite(f)?Math.max(0,f):Number.isFinite(e)?Math.max(0,e):0,k=Number.isFinite(g)?Math.max(0,g):void 0,l=Number.isFinite(h)?Math.max(0,h):void 0,m=Number.isFinite(i)?v(i):void 0;return void 0===l&&j>0&&void 0!==k&&(l=Math.max(j-k,0)),void 0===k&&j>0&&void 0!==l&&(k=Math.max(j-l,0)),void 0===m&&j>0&&void 0!==k&&(m=v(k/j*100)),j<=0&&void 0!==m&&(j=100,l=100-m,k=m),{used:Math.max(0,l??0),total:j,remaining:k,remainingPercentage:m,resetAt:b,unlimited:d}}function L(a,b){let c=u(a,"copilot_plan","copilotPlan"),d=u(a,"access_type_sku","accessTypeSku"),e="string"==typeof c?c.trim():"",f="string"==typeof d?d.trim():"",g=`${f} ${e}`.trim().toUpperCase(),h=s(u(a,"monthly_quotas","monthlyQuotas")),i=b?.total||t(u(h,"premium_interactions","premiumInteractions"),0),j=t(u(h,"chat","chat"),0);if(g.includes("PRO+")||g.includes("PRO_PLUS")||g.includes("PROPLUS"))return"Copilot Pro+";if(g.includes("ENTERPRISE"))return"Copilot Enterprise";if(g.includes("BUSINESS"))return"Copilot Business";if(g.includes("STUDENT"))return"Copilot Student";if(g.includes("FREE"))return"Copilot Free";if(g.includes("PRO"))return"Copilot Pro";if(i>=1400)return"Copilot Pro+";if(i>=900)return"Copilot Enterprise";if(i>=250)return g.includes("INDIVIDUAL")?"Copilot Pro":"Copilot Business";if(i>0||50===j)return"Copilot Free";if(f){let a=w(f);return a?`Copilot ${a}`:"GitHub Copilot"}if(e){let a=w(e);return a?`Copilot ${a}`:"GitHub Copilot"}return"GitHub Copilot"}function M(...a){for(let b of a){let a=t(b,NaN);if(Number.isFinite(a)&&a>0)return a}return 0}function N(a,b){return M(u(b,"team_max_monthly_requests","teamMaxMonthlyRequests"),u(a,"team_max_request_usage","teamMaxRequestUsage"),u(b,"team_max_request_usage","teamMaxRequestUsage"),u(a,"hard_limit","hardLimit"),u(b,"max_monthly_requests","maxMonthlyRequests"))}function O(a,b,c){let d=Math.max(0,t(b,0)),e=Math.max(0,t(a,0)),f=d>0?Math.min(e,d):e,g=d>0?Math.max(d-f,0):0;return{used:f,total:d,remaining:g,remainingPercentage:d>0?v(g/d*100):0,resetAt:I(c),unlimited:!1}}async function P(a,b){let c=await fetch(a,{method:"GET",headers:(0,i.kU)(b,q.clientVersion)}),d=await c.text();if(!c.ok)return{ok:!1,status:c.status,data:{},text:d};try{let a=d?JSON.parse(d):{};return{ok:!0,status:c.status,data:s(a),text:d}}catch{return{ok:!1,status:c.status,data:{},text:d}}}async function Q(a){try{let b,c,d,e;if(!a)return{message:"Cursor token expired or unavailable. Please re-authenticate the connection."};let[f,g,h]=await Promise.all([P(q.usageUrl,a),P(q.userMetaUrl,a),P(q.subscriptionUrl,a)]);if([f,g,h].some(a=>401===a.status||403===a.status))return{message:"Cursor token expired or permission denied. Please re-authenticate the connection."};let i=f.data,j=g.data,k=h.data,l=(b=s(u(j,"team_info","teamInfo")),c=[u(j,"plan","plan"),u(j,"subscription_type","subscriptionType"),u(k,"subscription_type","subscriptionType"),u(k,"plan","plan")].find(a=>"string"==typeof a&&a.trim().length>0),d="string"==typeof c?c.trim().toLowerCase():"",Object.keys(b).length>0||d.includes("team")?"Cursor Team":d.includes("enterprise")?"Cursor Enterprise":d.includes("pro")?"Cursor Pro":d.includes("free")?"Cursor Free":"Cursor"),m={},n=u(i,"num_requests_total","numRequestsTotal"),o=N(i,k),p=u(i,"reset_date","resetDate")||u(k,"reset_date","resetDate");(t(n,0)>0||o>0)&&(m.requests=O(n,o,p));let r=s(u(i,"on_demand","onDemand")),v=u(r,"num_requests","numRequests"),w=(e=s(u(i,"on_demand","onDemand")),M(u(e,"max_requests","maxRequests"),N(i,k))),x=u(r,"reset_date","resetDate")||u(i,"reset_date","resetDate")||u(k,"reset_date","resetDate");if((t(v,0)>0||w>0)&&(m.on_demand=O(v,w,x)),Object.keys(m).length>0)return{plan:l,quotas:m};return{plan:l,message:"Cursor connected. Unable to parse quota data."}}catch(a){return{message:`Unable to fetch Cursor usage: ${a.message}`}}}let R=new Map;async function S(a,b,c){if(!a)return{plan:"Free",message:"Gemini CLI access token not available."};try{let d=await T(a),e=c||b?.projectId||d?.cloudaicompanionProject||null,f=function(a){if(!a||0===Object.keys(a).length)return"Free";let b="";if(Array.isArray(a.allowedTiers)){for(let c of a.allowedTiers)if(c.isDefault&&c.id){b=c.id.trim().toUpperCase();break}}if(b||(b=(a.currentTier?.id||"").toUpperCase()),b){if(b.includes("ULTRA"))return"Ultra";if(b.includes("PRO"))return"Pro";if(b.includes("ENTERPRISE"))return"Enterprise";if(b.includes("BUSINESS")||b.includes("STANDARD"))return"Business";if(b.includes("FREE")||b.includes("INDIVIDUAL")||b.includes("LEGACY"))return"Free"}let c=a.currentTier?.name||a.currentTier?.displayName||a.subscriptionType||a.tier||"",d=c.toUpperCase();return d.includes("ULTRA")?"Ultra":d.includes("PRO")?"Pro":d.includes("ENTERPRISE")?"Enterprise":d.includes("STANDARD")||d.includes("BUSINESS")?"Business":d.includes("INDIVIDUAL")||d.includes("FREE")||a.currentTier?.upgradeSubscriptionType?"Free":c?c.charAt(0).toUpperCase()+c.slice(1).toLowerCase():"Free"}(d);if(!e)return{plan:f,message:"Gemini CLI project ID not available."};let g=await fetch("https://cloudcode-pa.googleapis.com/v1internal:retrieveUserQuota",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({project:e}),signal:AbortSignal.timeout(1e4)});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=t(a.remainingFraction,0),c=100*b,d=Math.round(1e3*b),e=Math.max(0,1e3-d);i[a.modelId]={used:e,total:1e3,resetAt:I(a.resetTime),remainingPercentage:c,unlimited:!1}}return{plan:f,quotas:i}}catch(a){return{message:`Gemini CLI error: ${a.message}`}}}async function T(a){let b=R.get(a);if(b&&Date.now()-b.fetchedAt<3e5)return b.data;let c=await U(a);return R.set(a,{data:c,fetchedAt:Date.now()}),c}async function U(a){try{let b=await fetch("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"}})});if(!b.ok)return null;return await b.json()}catch{return null}}let V=new Map;async function W(a,b,c){try{if(!c)return null;for(let d of g.KJ){let f=`${d}/v1internal:streamGenerateContent?alt=sse`,g=`-${e().randomUUID()}`,h={project:c,model:"gemini-2-flash",userAgent:"antigravity",requestType:"agent",requestId:`credits-probe-${Date.now()}`,enabledCreditTypes:["GOOGLE_ONE_AI"],request:{model:"gemini-2-flash",contents:[{role:"user",parts:[{text:"hi"}]}],generationConfig:{maxOutputTokens:1},sessionId:g}},i={"Content-Type":"application/json",Authorization:`Bearer ${a}`,"User-Agent":(0,l.FT)(),"X-Goog-Api-Client":(0,l.nD)(),Accept:"text/event-stream"};try{let a=await fetch(f,{method:"POST",headers:i,body:JSON.stringify(h),signal:AbortSignal.timeout(1e4)});if(!a.ok)continue;for(let c of(await a.text()).split("\n")){let a=c.trim();if(!a.startsWith("data:"))continue;let d=a.slice(5).trim();if("[DONE]"===d)break;try{let a=JSON.parse(d);if(Array.isArray(a?.remainingCredits)){let c=a.remainingCredits.find(a=>a?.creditType==="GOOGLE_ONE_AI");if(c){let a=parseInt(c.creditAmount,10);if(!isNaN(a))return(0,m.iU)(b,a),a}}}catch{}}}catch{}}return null}catch{return null}}async function X(a,b,c,d){try{let b=await Y(a),e=c||b?.cloudaicompanionProject||null,f=d||"unknown",g=(0,m.fZ)(f),h=(0,n.YX)();null===g&&"off"!==h&&(g=await W(a,f,e));let i=null,j=null;for(let b of o.quotaApiUrls)try{if((i=await fetch(b,{method:"POST",headers:(0,l.He)("fetchAvailableModels",a),body:JSON.stringify(e?{project:e}:{}),signal:AbortSignal.timeout(1e4)})).ok||401===i.status||403===i.status)break}catch(a){j=a}if(!i)throw j||Error("Antigravity API unavailable");if(403===i.status)return{message:"Antigravity access forbidden. Check subscription."};if(!i.ok)throw Error(`Antigravity API error: ${i.status}`);let k=await i.json(),p=s(k),q=s(p.models),r={},u=new Set(["chat_20706","chat_23310","tab_flash_lite_preview","tab_jump_flash_lite_preview","gemini-2.5-flash-thinking","gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.5-flash-preview-image-generation","gemini-3.1-flash-image-preview","gemini-3-flash-agent","gemini-3.1-flash-lite","gemini-3-pro-low","gemini-3-pro-high"]);for(let[a,b]of Object.entries(q)){let c=s(b),d=s(c.quotaInfo);if(!0===c.isInternal||u.has(a)||0===Object.keys(d).length)continue;let e=t(d.remainingFraction,-1),f=I(d.resetTime),g=e<0?1:e,h=!f&&g>=1,i=100*g,j=Math.round(1e3*g),k=h?0:Math.max(0,1e3-j);r[a]={used:k,total:1e3*!h,resetAt:f,remainingPercentage:h?100:i,unlimited:h}}return{plan:function(a){if(!a||0===Object.keys(a).length)return"Free";let b="";if(Array.isArray(a.allowedTiers)){for(let c of a.allowedTiers)if(c.isDefault&&c.id){b=c.id.trim().toUpperCase();break}}if(b||(b=(a.currentTier?.id||"").toUpperCase()),b){if(b.includes("ULTRA"))return"Ultra";if(b.includes("PRO"))return"Pro";if(b.includes("ENTERPRISE"))return"Enterprise";if(b.includes("BUSINESS")||b.includes("STANDARD"))return"Business";if(b.includes("FREE")||b.includes("INDIVIDUAL")||b.includes("LEGACY"))return"Free"}let c=a.currentTier?.name||a.currentTier?.displayName||a.subscriptionType||a.tier||"",d=c.toUpperCase();return d.includes("ULTRA")?"Ultra":d.includes("PRO")?"Pro":d.includes("ENTERPRISE")?"Enterprise":d.includes("STANDARD")||d.includes("BUSINESS")?"Business":d.includes("INDIVIDUAL")||d.includes("FREE")||a.currentTier?.upgradeSubscriptionType?"Free":c?c.charAt(0).toUpperCase()+c.slice(1).toLowerCase():"Free"}(b),quotas:{...r,...null!==g&&{credits:{used:0,total:0,remaining:g,unlimited:!1,resetAt:null}}},subscriptionInfo:b}}catch(a){return{message:`Antigravity error: ${a.message}`}}}async function Y(a){let b=a.substring(0,16),c=V.get(b);if(c&&Date.now()-c.fetchedAt<3e5)return c.data;let d=await Z(a);return V.set(b,{data:d,fetchedAt:Date.now()}),d}async function Z(a){try{let b=await fetch(o.loadProjectApiUrl,{method:"POST",headers:(0,l.He)("loadCodeAssist",a),body:JSON.stringify({metadata:(0,l.iu)()})});if(!b.ok)return null;return await b.json()}catch{return null}}async function $(a){try{let b=await fetch("https://api.anthropic.com/api/oauth/usage",{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-beta":"oauth-2025-04-20","anthropic-version":p}});if(b.ok){let a=await b.json(),c={},d=a=>a&&"object"==typeof a&&void 0!==(0,j.Q1)(a.utilization),e=a=>{let b=(0,j.Q1)(a.utilization),c=Math.max(0,100-b);return{used:b,total:100,remaining:c,resetAt:I(a.resets_at),remainingPercentage:c,unlimited:!1}};for(let[b,f]of(d(a.five_hour)&&(c["session (5h)"]=e(a.five_hour)),d(a.seven_day)&&(c["weekly (7d)"]=e(a.seven_day)),Object.entries(a))){let a=s(f);if(b.startsWith("seven_day_")&&"seven_day"!==b&&d(a)){let d=b.replace("seven_day_","");c[`weekly ${d} (7d)`]=e(a)}}return{plan:("string"==typeof a.tier?a.tier:"string"==typeof a.plan?a.plan:"string"==typeof a.subscription_type?a.subscription_type:null)||"Claude Code",quotas:c,extraUsage:a.extra_usage??null}}return console.warn(`[Claude Usage] OAuth endpoint returned ${b.status}, falling back to legacy`),await _(a)}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}async function _(a){try{let b=await fetch("https://api.anthropic.com/v1/settings",{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":p}});if(b.ok){let c=await b.json();if(c.organization_id){let b=await fetch("https://api.anthropic.com/v1/organizations/{org_id}/usage".replace("{org_id}",c.organization_id),{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":p}});if(b.ok){let a=await b.json();return{plan:c.plan||"Unknown",organization:c.organization_name,quotas:a}}}return{plan:c.plan||"Unknown",organization:c.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}`}}}async function aa(a,b={}){try{let c="string"==typeof b.workspaceId?b.workspaceId:null,d={Authorization:`Bearer ${a}`,"Content-Type":"application/json",Accept:"application/json"};c&&(d["chatgpt-account-id"]=c);let e=await fetch("https://chatgpt.com/backend-api/wham/usage",{method:"GET",headers:d});if(!e.ok){if(401===e.status||403===e.status)return{message:"Codex token expired or access denied. Please re-authenticate the connection."};throw Error(`Codex API error: ${e.status}`)}let f=await e.json(),g=s(u(f,"rate_limit","rateLimit")),h=s(u(g,"primary_window","primaryWindow")),i=s(u(g,"secondary_window","secondaryWindow")),j=a=>{let b=t(u(a,"reset_at","resetAt"),0),c=t(u(a,"reset_after_seconds","resetAfterSeconds"),0);return b>0?I(1e3*b):c>0?I(Date.now()+1e3*c):null},k={};if(Object.keys(h).length>0){let a=t(u(h,"used_percent","usedPercent"),0);k.session={used:a,total:100,remaining:100-a,resetAt:j(h),unlimited:!1}}if(Object.keys(i).length>0){let a=t(u(i,"used_percent","usedPercent"),0);k.weekly={used:a,total:100,remaining:100-a,resetAt:j(i),unlimited:!1}}let l=s(u(f,"code_review_rate_limit","codeReviewRateLimit")),m=s(u(l,"primary_window","primaryWindow")),n=u(m,"used_percent","usedPercent"),o=u(m,"remaining_count","remainingCount");if(null!==n||null!==o){let a=t(n,0);k.code_review={used:a,total:100,remaining:100-a,resetAt:j(m),unlimited:!1}}return{plan:String(u(f,"plan_type","planType")||"unknown"),limitReached:!!u(g,"limit_reached","limitReached"),quotas:k}}catch(a){return{message:`Failed to fetch Codex usage: ${a.message}`}}}async function ab(a,b){try{let c=b?.profileArn;if(!c)return{message:"Kiro connected. Profile ARN not available for quota tracking."};let d=await fetch("https://codewhisperer.us-east-1.amazonaws.com",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.GetUsageLimits",Accept:"application/json"},body:JSON.stringify({origin:"AI_EDITOR",profileArn:c,resourceType:"AGENTIC_REQUEST"})});if(!d.ok){let a=await d.text();throw Error(`Kiro API error (${d.status}): ${a}`)}let e=await d.json(),f=e.usageBreakdownList||[],g={},h=I(e.nextDateReset||e.resetDate);return f.forEach(a=>{let b=a.resourceType?.toLowerCase()||"unknown",c=a.currentUsageWithPrecision||0,d=a.usageLimitWithPrecision||0;if(g[b]={used:c,total:d,remaining:d-c,resetAt:h,unlimited:!1},a.freeTrialInfo){let c=a.freeTrialInfo.currentUsageWithPrecision||0,d=a.freeTrialInfo.usageLimitWithPrecision||0;g[`${b}_freetrial`]={used:c,total:d,remaining:d-c,resetAt:h,unlimited:!1}}}),{plan:e.subscriptionInfo?.subscriptionTitle||"Kiro",quotas:g}}catch(a){throw Error(`Failed to fetch Kiro usage: ${a.message}`)}}function ac(a){return a?({LEVEL_BASIC:"Moderato",LEVEL_INTERMEDIATE:"Allegretto",LEVEL_ADVANCED:"Allegro",LEVEL_STANDARD:"Vivace"})[a]||a.replace("LEVEL_","").toLowerCase():""}async function ad(a){let b="kimi-usage-"+Date.now(),c="u">typeof process?`${process.platform} ${process.arch}`:"unknown";try{let d,e=await fetch("https://api.kimi.com/coding/v1/usages",{method:"GET",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","X-Msh-Platform":"omniroute","X-Msh-Version":"2.1.2","X-Msh-Device-Model":c,"X-Msh-Device-Id":b}}),f=await e.text();if(!e.ok)return{plan:"Kimi Coding",message:`Kimi Coding connected. API Error ${e.status}: ${f.slice(0,100)}`};try{d=JSON.parse(f)}catch{return{plan:"Kimi Coding",message:"Kimi Coding connected. Invalid JSON response from API."}}let g={},h=s(d),i=s(h.usage),k=t(i.limit||i.Limit,0),l=t(i.used||i.Used,0),m=t(i.remaining||i.Remaining,0),n=i.resetTime||i.ResetTime||i.reset_at||i.resetAt;k>0&&(g.Weekly={used:l,total:k,remaining:m,remainingPercentage:k>0?m/k*100:0,resetAt:I(n),unlimited:!1});let o=Array.isArray(h.limits)?h.limits:[];for(let a=0;a<o.length;a++){let b=s(o[a]);s(b.window);let c=s(b.detail),d=t(c.limit||c.Limit,0),e=t(c.remaining||c.Remaining,0),f=c.resetTime||c.reset_at||c.resetAt;d>0&&(g.Ratelimit={used:d-e,total:d,remaining:e,remainingPercentage:d>0?e/d*100:0,resetAt:I(f),unlimited:!1})}let p=a=>a&&"object"==typeof a&&void 0!==(0,j.Q1)(a.utilization),q=a=>{let b=(0,j.Q1)(a.utilization);return{used:100-b,total:100,remaining:b,resetAt:I(a.resets_at),remainingPercentage:b,unlimited:!1}};for(let[a,b]of(p(s(h.five_hour))&&(g["session (5h)"]=q(s(h.five_hour))),p(s(h.seven_day))&&(g["weekly (7d)"]=q(s(h.seven_day))),Object.entries(h))){let c=s(b);if(a.startsWith("seven_day_")&&"seven_day"!==a&&p(c)){let b=a.replace("seven_day_","");g[`weekly ${b} (7d)`]=q(c)}}if(Object.keys(g).length>0){let a=s(h.user),b=s(a.membership).level;return{plan:ac(b)||"Kimi Coding",quotas:g}}let r=s(h.user),u=s(r.membership).level;return{plan:ac(u)||"Kimi Coding",message:"Kimi Coding connected. Usage tracked per request."}}catch(a){return{message:`Kimi Coding connected. Unable to fetch usage: ${a.message}`}}}async function ae(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 af(a){try{return{message:"Qoder connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch Qoder usage."}}}},93786:(a,b,c)=>{c.d(b,{DD:()=>k,IN:()=>g,OT:()=>n,TT:()=>h,WO:()=>m,bb:()=>i,f6:()=>f,fF:()=>l});var d=c(77598);let e=new Map;function f(a,b={}){if(!a||"object"!=typeof a)return null;let c=[];a.model&&c.push(`model:${a.model}`),b.provider&&c.push(`provider:${b.provider}`);let e=function(a){if(!a||"object"!=typeof a)return null;if(a.system)return"string"==typeof a.system?a.system:JSON.stringify(a.system);if(Array.isArray(a.messages)){let b=a.messages.find(a=>"system"===a.role||"developer"===a.role);if(b)return"string"==typeof b.content?b.content:JSON.stringify(b.content)}return null}(a);e&&c.push(`sys:${o(e)}`);let g=function(a){if(!a||"object"!=typeof a)return null;let b=a.messages||a.input||[];if(!Array.isArray(b))return null;for(let a of b)if("user"===a.role)return"string"==typeof a.content?a.content:JSON.stringify(a.content);return null}(a);if(g&&c.push(`user0:${o(g)}`),a.tools&&Array.isArray(a.tools)&&a.tools.length>0){let b=a.tools.map(a=>a.name||a.function?.name||"").filter(Boolean).sort().join(",");b&&c.push(`tools:${o(b)}`)}if(b.connectionId&&c.push(`conn:${b.connectionId}`),0===c.length)return null;let h=c.join("|");return(0,d.createHash)("sha256").update(h).digest("hex").slice(0,16)}function g(a,b=null){if(!a)return;let c=e.get(a);c?(c.lastActive=Date.now(),c.requestCount++,b&&(c.connectionId=b)):e.set(a,{createdAt:Date.now(),lastActive:Date.now(),requestCount:1,connectionId:b})}function h(a){if(!a)return null;let b=e.get(a);return b?Date.now()-b.lastActive>18e5?(e.delete(a),null):{...b}:null}function i(a){let b=h(a);return b?.connectionId||null}setInterval(()=>{let a=Date.now();for(let[b,c]of e)if(a-c.lastActive>18e5)for(let[a,c]of(e.delete(b),j))c.delete(b),0===c.size&&j.delete(a)},6e4).unref();let j=new Map;function k(a,b){j.has(a)||j.set(a,new Set),j.get(a).add(b)}function l(a,b){return j.get(a)?.has(b)===!0}function m(a,b){if(!b||b<=0)return null;let c=j.get(a)?.size??0;return c<b?null:{code:"SESSION_LIMIT_EXCEEDED",message:`You have reached the maximum number of active sessions (${b}). Please close unused sessions or wait for them to expire.`,limit:b,current:c}}function n(a){if(!a||"function"!=typeof a.get)return null;let b=a.get("x-session-id")??a.get("x_session_id")??a.get("x-omniroute-session")??a.get("session-id")??null;return b&&b.trim()?`ext:${b.trim().slice(0,64)}`:null}function o(a){return(0,d.createHash)("sha256").update(a).digest("hex").slice(0,8)}},96467:(a,b,c)=>{c.d(b,{IE:()=>e,SN:()=>f,YX:()=>h,Z1:()=>g,Ze:()=>i});var d=c(39852);function e(a){return{...a,enabledCreditTypes:["GOOGLE_ONE_AI"]}}function f(a,b){return!(!b||(0,d.dY)(a))}function g(a){return(0,d.Ef)(a)}function h(){let a=(process.env.ANTIGRAVITY_CREDITS||"").trim().toLowerCase();return"always"===a||"retry"===a?a:"off"}function i(a,b){return!("always"!==b||(0,d.dY)(a))}}};
|
|
1
|
+
"use strict";exports.id=69105,exports.ids=[69105],exports.modules={10885:(a,b,c)=>{function d(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}function e(a){return"number"==typeof a&&isFinite(a)?a:void 0}c.d(b,{Q1:()=>e,s9:()=>d})},14060:(a,b,c)=>{c.d(b,{e:()=>e});let d=["opencode","open-code","cline","roo-cline","roo_cline","cursor","windsurf","aider","continue.dev","copilot","avante","codecompanion","claude code","claude-code","kilo code","kilocode","omniroute"];function e(a){if(!a||0===d.length)return a;let b=a;for(let a of d){if(!a)continue;let c=RegExp(a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gi");b=b.replace(c,a=>a.length<=1?a:a[0]+""+a.slice(1))}return b}},24632:(a,b,c)=>{c.d(b,{cV:()=>I,fZ:()=>C,iU:()=>D});var d=c(55511),e=c.n(d),f=c(62894),g=c(49193),h=c(77421),i=c(40751),j=c(39852),k=c(96467),l=c(5746),m=c(14060),n=c(73145),o=c(95420);let p="_ide",q=["browser_subagent","command_status","find_by_name","generate_image","grep_search","list_dir","list_resources","multi_replace_file_content","notify_user","read_resource","read_terminal","read_url_content","replace_file_content","run_command","search_web","send_command_input","task_boundary","view_content_chunk","view_file","write_to_file"],r=[...q,"mcp_sequential-thinking_sequentialthinking"],s=new Set(q),t=r.map(a=>Object.freeze({name:a,description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}}));function u(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function v(a){return"string"==typeof a?a.trim():""}function w(a){return!(a.length>0)||s.has(a)||a.endsWith(p)?a:`${a}${p}`}var x=c(68445);let y=new Set(["gemini-3.1-pro"]),z=new Map,A=new Map,B=!1;function C(a){if(!B){B=!0;try{for(let[a,b]of(0,l.Vn)())A.has(a)||A.set(a,b)}catch{}}let b=A.get(a);return void 0!==b?b:null}function D(a,b){A.set(a,b);try{(0,l.AO)(a,b)}catch{}}function E(a){z.set(a,Date.now()+18e6)}function F(a,b,c){if(a&&"[DONE]"!==a)try{let c=JSON.parse(a),d=c?.response?.candidates?.[0];if(d?.content?.parts)for(let a of d.content.parts)"string"!=typeof a.text||a.thought||a.thoughtSignature||(b.textContent+=a.text);if(d?.finishReason&&(b.finishReason="stop"===d.finishReason.toLowerCase()?"stop":d.finishReason.toLowerCase()),c?.response?.usageMetadata){let a=c.response.usageMetadata;b.usage={prompt_tokens:a.promptTokenCount||0,completion_tokens:a.candidatesTokenCount||0,total_tokens:a.totalTokenCount||0}}Array.isArray(c?.remainingCredits)&&(b.remainingCredits=c.remainingCredits)}catch{c?.debug?.("SSE_PARSE",`Skipping malformed SSE line: ${a.slice(0,80)}`)}}function G(a,b,c,d){b.value+=a;let e=b.value.split("\n");for(let a of(b.value=e.pop()||"",e)){let b=a.trim();b.startsWith("data:")&&F(b.slice(5).trim(),c,d)}}function H(a,b){if(!b?.size||!a||"object"!=typeof a)return a;let c=Array.isArray(a)?[...a]:{...a};return Object.defineProperty(c,"_toolNameMap",{value:b,enumerable:!1,configurable:!0,writable:!0}),c}class I extends f.Hv{constructor(){super("antigravity",g.xq.antigravity)}buildUrl(a,b,c=0){let d=this.getBaseUrls(),e=d[c]||d[0];return`${e}/v1internal:streamGenerateContent?alt=sse`}buildHeaders(a,b=!0){let c={"Content-Type":"application/json",Authorization:`Bearer ${a.accessToken}`,"User-Agent":(0,i.FT)(),Accept:"text/event-stream","X-OmniRoute-Source":"omniroute"};return(0,h.l)(c)}transformRequest(a,b,c,d){let f=b?.project,g=d?.projectId,h="1"===process.env.OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE&&f?f:g||f;if(!h)return new Response(JSON.stringify({error:{message:"Missing Google projectId for Antigravity account. Please reconnect OAuth in Providers → Antigravity so OmniRoute can fetch your Cloud Code project.",type:"oauth_missing_project_id",code:"missing_project_id"}}),{status:422,headers:{"Content-Type":"application/json"}});let i=function(a){if(!a)return a;let b=a.includes("/")?a.split("/").pop():a;return b=(0,o.Vg)(b),y.has(b)&&(b=`${b}-low`),b}(a),j=b&&"object"==typeof b?b:{},k=(0,x.Y)(this.provider,i)?(0,x.T)(j):j,l=k.request?.contents?.map(a=>{let b=a.role;a.parts?.some(a=>a.functionResponse)&&(b="user");let c=a.parts?.some(a=>a.functionCall)||!1,d=a.parts?.filter(a=>("string"!=typeof a.text||""!==a.text)&&(!a.functionCall||!!a.functionCall.name)&&!a.thought&&(c||!a.thoughtSignature))||[];return{...a,role:b,parts:d}})||[],n=[];for(let a of l)Array.isArray(a.parts)&&0!==a.parts.length&&(n.length>0&&n[n.length-1].role===a.role?n[n.length-1].parts.push(...a.parts):n.push(a));let p={...k.request,...n.length>0&&{contents:n},sessionId:k.request?.sessionId||this.generateSessionId(),safetySettings:void 0,toolConfig:k.request?.tools?.length>0?{functionCallingConfig:{mode:"VALIDATED"}}:k.request?.toolConfig},q=p.contents;if(Array.isArray(q)){for(let a of q)if(Array.isArray(a.parts))for(let b of a.parts)"string"==typeof b.text&&(b.text=(0,m.e)(b.text))}return{...k,project:h,model:i,userAgent:"antigravity",requestType:"agent",requestId:`agent-${e().randomUUID()}`,request:p}}async refreshCredentials(a,b){if(!a.refreshToken)return null;try{let c=await fetch(g.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a.refreshToken,client_id:this.config.clientId,client_secret:this.config.clientSecret})});if(!c.ok)return null;let d=await c.json();return b?.info?.("TOKEN","Antigravity refreshed"),{accessToken:d.access_token,refreshToken:d.refresh_token||a.refreshToken,expiresIn:d.expires_in,projectId:a.projectId}}catch(a){return b?.error?.("TOKEN",`Antigravity refresh error: ${a.message}`),null}}generateSessionId(){return`-${parseInt((0,d.randomUUID)().replace(/-/g,"").substring(0,8),16)%9e18}`}parseRetryHeaders(a){if(!a?.get)return null;let b=a.get("retry-after");if(b){let a=parseInt(b,10);if(!isNaN(a)&&a>0)return 1e3*a;let c=new Date(b);if(!isNaN(c.getTime())){let a=c.getTime()-Date.now();return a>0?a:null}}let c=a.get("x-ratelimit-reset-after");if(c){let a=parseInt(c,10);if(!isNaN(a)&&a>0)return 1e3*a}let d=a.get("x-ratelimit-reset");if(d){let a=1e3*parseInt(d,10)-Date.now();return a>0?a:null}return null}parseRetryFromErrorMessage(a){if(!a||"string"!=typeof a)return null;let b=a.match(/reset (?:after|in) (\d+h)?(\d+m)?(\d+s)?/i);if(!b)return null;let c=0;return(b[1]&&(c+=3600*parseInt(b[1])*1e3),b[2]&&(c+=60*parseInt(b[2])*1e3),b[3]&&(c+=1e3*parseInt(b[3])),0===c)?2e3:c}collectStreamToResponse(a,b,c,d,f,g,h){let i=a.body.getReader(),j=new TextDecoder;return(async()=>{let k,l={textContent:"",finishReason:"stop",usage:null,remainingCredits:null},m={value:""},n=!1,o=AbortSignal.timeout(12e4);try{for(;;){if(h?.aborted)throw Error("Request aborted during SSE collection");let{done:a,value:b}=await Promise.race([i.read(),new Promise((a,b)=>o.addEventListener("abort",()=>b(Error("SSE collection timed out")),{once:!0}))]);if(a)break;G(j.decode(b,{stream:!0}),m,l,g)}}catch(b){let a=b?.message||String(b);n=a.includes("timed out"),g?.warn?.("SSE_COLLECT",`Error collecting SSE stream: ${a}`)}G(j.decode(),m,l,g),k=m.value.trim(),m.value="",k.startsWith("data:")&&F(k.slice(5).trim(),l,g);let p={id:`chatcmpl-${Date.now()}-${e().randomUUID().slice(0,8)}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:b,choices:[{index:0,message:{role:"assistant",content:l.textContent},finish_reason:n?"length":l.finishReason}],...l.usage&&{usage:l.usage},...l.remainingCredits&&{_remainingCredits:l.remainingCredits}},q=n?504:a.status;return{response:new Response(JSON.stringify(p),{status:q,statusText:n?"Gateway Timeout":a.statusText,headers:[["Content-Type","application/json"]]}),url:c,headers:d,transformedBody:f}})()}async execute({model:a,body:b,stream:c,credentials:d,signal:e,log:h,upstreamExtraHeaders:i}){await (0,n.f9)();let l=this.getFallbackCount(),m=null,o=0,p={},q=d?.connectionId||"unknown",r=(0,k.YX)(),s=(0,k.Ze)(d?.accessToken||"",r);for(let n=0;n<l;n++){let x=this.buildUrl(a,!0,n),y=this.buildHeaders(d,!0);(0,f._F)(y,i);let z=await this.transformRequest(a,b,!0,d),A=null;if(z instanceof Response)return{response:z,url:x,headers:y,transformedBody:b};if(z&&"object"==typeof z){let a=function(a){let b=u(a.request);if(!b)return{body:a,toolNameMap:null};let c=a._toolNameMap instanceof Map?a._toolNameMap:null,d=c?new Map(c):new Map,e=!1,f={...b};if(Array.isArray(b.tools)){let a=[],c=[];for(let f of b.tools){let b=u(f);if(!b||!Array.isArray(b.functionDeclarations)){a.push(f);continue}for(let a of b.functionDeclarations){let b=u(a);if(!b)continue;let f=v(b.name);if(!f){c.push({...b});continue}let g=w(f);g!==f&&(e=!0,d.set(g,d.get(f)??f)),c.push({...b,name:g})}}if(c.length>0){let b=new Set(c.map(a=>v(a.name)).filter(a=>a.length>0));f.tools=[...a,{functionDeclarations:[...c,...t.filter(a=>!b.has(a.name))]}],e=!0}}if(Array.isArray(b.contents)){let a=!1,c=b.contents.map(b=>{let c=u(b);if(!c||!Array.isArray(c.parts))return b;let e=!1,f=c.parts.map(a=>{let b=u(a);if(!b)return a;let c={...b},f=u(b.functionCall);if(f){let a=v(f.name),b=w(a);b!==a&&(c.functionCall={...f,name:b},d.set(b,d.get(a)??a),e=!0)}let g=u(b.functionResponse);if(g){let a=v(g.name),b=w(a);b!==a&&(c.functionResponse={...g,name:b},d.set(b,d.get(a)??a),e=!0)}return e?c:a});return e?(a=!0,{...c,parts:f}):b});a&&(f.contents=c,e=!0)}return e?{body:{...a,request:f},toolNameMap:d.size>0?d:null}:{body:a,toolNameMap:d.size>0?d:null}}(z);z=a.body,A=a.toolNameMap}s&&(z=(0,k.IE)(z),h?.debug?.("AG_CREDITS","Credits-first enabled (ANTIGRAVITY_CREDITS=always)")),p[n]||(p[n]=0);try{let b=await fetch(x,{method:"POST",headers:y,body:JSON.stringify(z),signal:e}),f=null;if(b.status===g.gx.RATE_LIMITED||b.status===g.gx.SERVICE_UNAVAILABLE){if(!(f=this.parseRetryHeaders(b.headers)))try{let i=await b.clone().text(),l=JSON.parse(i),m=l?.error?.message||l?.message||"",n=this.parseRetryFromErrorMessage(m),o=(0,j._c)(m),p=null!=z.enabledCreditTypes;if("quota_exhausted"===o&&p&&((0,k.Z1)(d?.accessToken||""),h?.warn?.("AG_CREDITS","Credits-first request 429'd — credits likely exhausted"),E(q)),"quota_exhausted"===o&&!p&&(0,k.SN)(d?.accessToken||"","off"!==r)){h?.info?.("AG_CREDITS","Retrying with Google One AI credits");let b=(0,k.IE)(z);try{let f=await fetch(x,{method:"POST",headers:y,body:JSON.stringify(b),signal:e});if(f.ok||f.status!==g.gx.RATE_LIMITED){if(h?.info?.("AG_CREDITS",`Credits retry succeeded: ${f.status}`),!c){let c=await this.collectStreamToResponse(f,a,x,y,b,h,e);try{let a=await c.response.clone().json(),b=a?._remainingCredits;if(Array.isArray(b)){let a=b.find(a=>"GOOGLE_ONE_AI"===a.creditType);if(a){let b=parseInt(a.creditAmount,10);isNaN(b)||D(q,b)}}}catch{}return{...c,transformedBody:H(b,A)}}return{response:f,url:x,headers:y,transformedBody:H(b,A)}}(0,k.Z1)(d?.accessToken||""),h?.warn?.("AG_CREDITS","Credits retry also 429'd"),E(q)}catch(a){(0,k.Z1)(d?.accessToken||""),h?.warn?.("AG_CREDITS",`Credits retry failed: ${a}`)}}let s=(0,j.M0)(o,n);f=s.retryAfterMs,h?.debug?.("AG_429",`Category: ${o}, Decision: ${s.kind} — ${s.reason}`)}catch(a){}if(f&&f<=6e4){let a=Math.min(f,6e4);h?.debug?.("RETRY",`${b.status} with Retry-After: ${Math.ceil(a/1e3)}s, waiting...`),await new Promise(b=>setTimeout(b,a)),n--;continue}if(b.status===g.gx.RATE_LIMITED&&(!f||0===f)&&p[n]<3){p[n]++;let a=Math.min(1e3*2**p[n],6e4);h?.debug?.("RETRY",`429 auto retry ${p[n]}/3 after ${a/1e3}s`),await new Promise(b=>setTimeout(b,a)),n--;continue}if(h?.debug?.("RETRY",`${b.status}, Retry-After ${f?`too long (${Math.ceil(f/1e3)}s)`:"missing"}, trying fallback`),o=b.status,n+1<l)continue}if(this.shouldRetry(b.status,n)){h?.debug?.("RETRY",`${b.status} on ${x}, trying fallback ${n+1}`),o=b.status;continue}if(b.status===g.gx.RATE_LIMITED&&f&&f>6e4)try{let a,c=await b.clone().text();try{a=JSON.parse(c)}catch{a={}}a.retryAfterMs=f;let d=JSON.stringify(a);return{response:new Response(d,{status:b.status,headers:b.headers}),url:x,headers:y,transformedBody:H(z,A)}}catch(a){h?.warn?.("RETRY",`Failed to embed retryAfterMs: ${a}`)}if(!c){let c=await this.collectStreamToResponse(b,a,x,y,z,h,e);try{let a=await c.response.clone().json(),b=a?._remainingCredits;if(Array.isArray(b)){let a=b.find(a=>a?.creditType==="GOOGLE_ONE_AI");if(a){let b=parseInt(a.creditAmount,10);isNaN(b)||D(q,b)}}}catch{}return{...c,transformedBody:H(z,A)}}if(b.body){let a="",c=new TextDecoder,d=new TransformStream({transform(b,d){d.enqueue(b);try{let d=c.decode(b,{stream:!0});if((a+=d).length>16384){let b=a.lastIndexOf("\n",a.length-16384);a=-1!==b?a.slice(b+1):""}}catch{}},flush(){try{let b=c.decode();a+=b}catch{}try{for(let b of a.split("\n")){let a=b.trim();if(!a.startsWith("data:"))continue;let c=a.slice(5).trim();if(c&&"[DONE]"!==c)try{let a=JSON.parse(c);if(Array.isArray(a?.remainingCredits)){let b=a.remainingCredits.find(a=>a?.creditType==="GOOGLE_ONE_AI");if(b){let a=parseInt(b.creditAmount,10);isNaN(a)||D(q,a)}}}catch{}}}catch{}a=""}}),e=b.body.pipeThrough(d);return{response:new Response(e,{status:b.status,statusText:b.statusText,headers:b.headers}),url:x,headers:y,transformedBody:H(z,A)}}return{response:b,url:x,headers:y,transformedBody:H(z,A)}}catch(a){if(m=a,n+1<l){h?.debug?.("RETRY",`Error on ${x}, trying fallback ${n+1}`);continue}throw a}}throw m||Error(`All ${l} URLs failed with status ${o}`)}}},25534:(a,b,c)=>{c.d(b,{QN:()=>f,Zd:()=>e});let d=new Map;function e(a,b){d.set(a,b)}async function f(a,b,c){let e;if(e=c?.providerSpecificData,e?.quotaPreflightEnabled!==!0)return{proceed:!0};let f=d.get(a);if(!f)return{proceed:!0};let g=null;try{g=await f(b,c)}catch{return{proceed:!0}}if(!g)return{proceed:!0};let{percentUsed:h}=g;return h>=.95?(console.info(`[QuotaPreflight] ${a}/${b}: ${(100*h).toFixed(1)}% used — switching`),{proceed:!1,reason:"quota_exhausted",quotaPercent:h,resetAt:g.resetAt??null}):(h>=.8&&console.warn(`[QuotaPreflight] ${a}/${b}: ${(100*h).toFixed(1)}% used — approaching limit`),{proceed:!0,quotaPercent:h})}},39852:(a,b,c)=>{c.d(b,{Ef:()=>i,M0:()=>g,_c:()=>f,dY:()=>j});let d=["quota_exhausted","quota exhausted"],e=["google_one_ai","insufficient credit","insufficient credits","not enough credit","not enough credits","credit exhausted","credits exhausted","credit balance","minimumcreditamountforusage","minimum credit amount for usage","minimum credit","resource has been exhausted"];function f(a){let b=(a||"").toLowerCase();for(let a of d)if(b.includes(a))return"quota_exhausted";for(let a of e)if(b.includes(a))return"quota_exhausted";return b.includes("per minute")||b.includes("rpm")||b.includes("rate limit")||b.includes("rate_limit")||b.includes("too many requests")?"rate_limited":b.includes("free tier")||b.includes("daily limit")||b.includes("exhausted your capacity")?"quota_exhausted":b.includes("try again")||b.includes("temporarily")?"soft_rate_limit":"unknown"}function g(a,b){switch(a){case"soft_rate_limit":return{kind:b&&b<=3e3?"instant_retry_same_auth":"soft_retry",retryAfterMs:b??2e3,reason:"Soft rate limit — brief backoff"};case"rate_limited":return{kind:b&&b<=3e5?"soft_retry":"short_cooldown_switch_auth",retryAfterMs:b??6e4,reason:"RPM rate limit — switch auth if cooldown is long"};case"quota_exhausted":return{kind:"full_quota_exhausted",retryAfterMs:b??864e5,reason:"Quota exhausted — skip this account"};default:return{kind:"soft_retry",retryAfterMs:b??5e3,reason:"Unknown 429 — generic backoff"}}}let h=new Map;function i(a){let b=h.get(a)??{count:0,disabledUntil:0};return(b.count++,b.count>=3)?(b.disabledUntil=Date.now()+18e6,h.set(a,b),!0):(h.set(a,b),!1)}function j(a){let b=h.get(a);return!!b&&(b.disabledUntil>Date.now()||(h.delete(a),!1))}},62894:(a,b,c)=>{c.d(b,{Hv:()=>r,OW:()=>q,Uv:()=>p,_F:()=>o});var d=c(49193),e=c(6714),f=c(76081),g=c(63108),h=c(20668),i=c(24518),j=c(5834),k=c(62724),l=c(81224),m=c(81711),n=c(77598);function o(a,b){if(b){for(let[c,d]of Object.entries(b))if("string"==typeof c&&c.length>0&&"string"==typeof d){if("user-agent"===c.toLowerCase()){p(a,d);continue}a[c]=d}}}function p(a,b){a["User-Agent"]=b,"user-agent"in a&&(a["user-agent"]=b)}function q(a,b){let c=new AbortController,d=a=>{c.signal.aborted||c.abort(a.reason)};return a.aborted?d(a):b.aborted?d(b):(a.addEventListener("abort",()=>d(a),{once:!0}),b.addEventListener("abort",()=>d(b),{once:!0})),c.signal}class r{constructor(a,b){this.provider=a,this.config=b}getProvider(){return this.provider}getBaseUrls(){return this.config.baseUrls||(this.config.baseUrl?[this.config.baseUrl]:[])}getFallbackCount(){return this.getBaseUrls().length||1}getTimeoutMs(){let a=this.config?.timeoutMs;return"number"==typeof a&&Number.isFinite(a)?Math.max(1,Math.floor(a)):d.MT}buildUrl(a,b,c=0,d=null){if(this.provider?.startsWith?.("openai-compatible-")){let a=d?.providerSpecificData,b=("string"==typeof a?.baseUrl?a.baseUrl:"https://api.openai.com/v1").replace(/\/$/,""),c="string"==typeof a?.chatPath&&a.chatPath?a.chatPath:null,e=c&&!("string"!=typeof c||!c.startsWith("/")||c.includes("\0")||c.includes(".."))&&!(c.length>512)&&1?c:null;if(e)return`${b}${e}`;let f="responses"===(0,g.J9)(this.provider,a)?"/responses":"/chat/completions";return`${b}${f}`}let e=this.getBaseUrls();return e[c]||e[0]||this.config.baseUrl}buildHeaders(a,b=!0,c){let d={"Content-Type":"application/json",...this.config.headers},e=this.config?.id||this.provider;if(e){let a=`${e.toUpperCase().replace(/[^A-Z0-9]/g,"_")}_USER_AGENT`,b=process.env[a]?.trim();b&&p(d,b)}if(a.accessToken)d.Authorization=`Bearer ${a.accessToken}`;else if(a.apiKey){let b=a.providerSpecificData?.extraApiKeys??[],c=b.length>0&&a.connectionId?(0,f.Cy)(a.connectionId,a.apiKey,b):a.apiKey;d.Authorization=`Bearer ${c}`}return d.Accept=b?"text/event-stream":"application/json",d}transformRequest(a,b,c,d){return b}shouldRetry(a,b){return a===d.gx.RATE_LIMITED&&b+1<this.getFallbackCount()}static{this.RETRY_CONFIG={maxAttempts:2,delayMs:2e3}}static{this.FETCH_START_TIMEOUT_MS=d.MT}async refreshCredentials(a,b){return null}needsRefresh(a){return!!a?.expiresAt&&new Date(a.expiresAt).getTime()-Date.now()<3e5}parseError(a,b){return{status:a.status,message:b||`HTTP ${a.status}`}}buildCountTokensUrl(a,b=null){let c=this.buildUrl(a,!1,0,b);if("string"!=typeof c||0===c.length||this.config?.format!=="claude"||!c.includes("/messages"))return null;let[d,e=""]=c.split("?"),f=(d.endsWith("/messages"),`${d}/count_tokens`);return e?`${f}?${e}`:f}async countTokens({model:a,body:b,credentials:c,signal:d,log:e}){let f=this.buildCountTokensUrl(a,c);if(!f)return null;let g=this.buildHeaders(c,!1),h=b&&"object"==typeof b?{...b,model:a}:{model:a},i=null,j=d||null,k=null,l=this.getTimeoutMs();j||(k=new AbortController,i=setTimeout(()=>k?.abort(),l),j=k.signal);try{let a=await fetch(f,{method:"POST",headers:g,body:JSON.stringify(h),signal:j||void 0}),b=await a.text();if(!a.ok){let c=this.parseError(a,b);throw Error(c.message)}let c=b?JSON.parse(b):{},d=Number(c?.input_tokens);if(!Number.isFinite(d))throw Error("Provider count_tokens response missing input_tokens");return{input_tokens:d,provider:this.provider,source:"provider"}}catch(b){return e?.debug?.("COUNT_TOKENS",`${this.provider}/${a} real count unavailable: ${b instanceof Error?b.message:String(b)}`),null}finally{i&&clearTimeout(i)}}async execute({model:a,body:b,stream:c,credentials:f,signal:s,log:t,extendedContext:u,upstreamExtraHeaders:v,clientHeaders:w}){let x=this.getFallbackCount(),y=null,z=0,A=f,B={};if(this.needsRefresh(f))try{let a=await this.refreshCredentials(f,t||null);a&&(A={...f,...a},arguments[0].onCredentialsRefreshed&&await arguments[0].onCredentialsRefreshed(a))}catch(a){t?.warn?.("TOKEN",`Credential refresh failed for ${this.provider}: ${a instanceof Error?a.message:String(a)}`)}for(let f=0;f<x;f++){let C=this.buildUrl(a,c,f,A),D=this.buildHeaders(A,c,w);!function(a,b){let c=("string"==typeof b?.customUserAgent?b.customUserAgent.trim():"")||null;c&&p(a,c)}(D,A?.providerSpecificData);let E=(0,g.GK)(this.provider)?(0,j.RG)(A?.providerSpecificData):{},F=u&&(0,i.zP)(a)&&!(0,g.GK)(this.provider),G=(0,g.GK)(this.provider)&&!0===E.context1m;(F||G)&&(0,i.QH)(D,i.c8);let H=await this.transformRequest(a,b,c,A);try{let b,c=this.getTimeoutMs(),i=c>0?new AbortController:null,j=null;i&&(j=setTimeout(()=>{let a=Error(`Fetch timeout after ${c}ms on ${C}`);a.name="TimeoutError",i.abort(a)},c));let p=i?.signal??null,u=s&&p?q(s,p):s||p,x=w?.["x-app"]==="cli"||w?.["user-agent"]&&w["user-agent"].toLowerCase().includes("claude-code")||w?.["user-agent"]&&w["user-agent"].toLowerCase().includes("claude-cli");if("claude"===this.provider&&x&&"object"==typeof H&&null!==H){(0,l.ye)(H),(0,m.oS)(H);let b="2.1.114",c=new Date().toISOString().slice(0,10),d=(0,n.createHash)("sha256").update(`${c}${b}`).digest("hex").slice(0,3),e=`x-anthropic-billing-header: cc_version=${b}.${d}; cc_entrypoint=cli; cch=00000;`;if(Array.isArray(H.system)){let a=H.system;for(let b=a.length-1;b>=0;b--){let c=a[b];c&&"string"==typeof c.text&&c.text.startsWith("x-anthropic-billing-header:")&&a.splice(b,1)}let b=a[0]&&"object"==typeof a[0]&&!Array.isArray(a[0])&&a[0].cache_control?a[0].cache_control:void 0,c={type:"text",text:e};b&&(c.cache_control=b),a.unshift(c)}else"string"==typeof H.system?H.system=[{type:"text",text:e},{type:"text",text:H.system}]:H.system=[{type:"text",text:e}];H.metadata&&"object"==typeof H.metadata||(H.metadata={user_id:JSON.stringify({device_id:(0,n.createHash)("sha256").update("omniroute").digest("hex").slice(0,24),account_uuid:"",session_id:(0,n.randomUUID)()})});let f=(0,k.j$)("claude",a);f&&!H.thinking&&(H.thinking={type:"adaptive"}),f&&!H.context_management&&(H.context_management={edits:[{type:"clear_thinking_20251015",keep:"all"}]}),f&&!H.output_config&&(H.output_config={effort:"high"});let g={"anthropic-version":"2023-06-01","anthropic-beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,redact-thinking-2026-02-12,context-management-2025-06-27,prompt-caching-scope-2026-01-05,advisor-tool-2026-03-01,advanced-tool-use-2025-11-20,effort-2025-11-24","anthropic-dangerous-direct-browser-access":"true","x-app":"cli","User-Agent":`claude-cli/${b} (external, cli)`,"X-Stainless-Package-Version":"0.81.0","X-Stainless-Timeout":"600","accept-language":"*","accept-encoding":"gzip, deflate, br, zstd",connection:"keep-alive","x-client-request-id":(0,n.randomUUID)(),"X-Claude-Code-Session-Id":(0,n.randomUUID)()},h=new Set(Object.keys(g).map(a=>a.toLowerCase()));for(let a of Object.keys(D))h.has(a.toLowerCase())&&delete D[a];Object.assign(D,g),delete D["X-Stainless-Helper-Method"],D["X-Stainless-Arch"]="x64",D["X-Stainless-Lang"]="js",D["X-Stainless-OS"]="Windows",D["X-Stainless-Runtime"]="node",D["X-Stainless-Runtime-Version"]="v24.3.0",D["X-Stainless-Retry-Count"]="0",delete D["X-Stainless-Os"],console.log(`[CLAUDE-PATCH] provider=${this.provider} tools remapped, billing header injected, body fields added, headers patched`)}let y=D,A=JSON.stringify(H);if((0,e.IL)(this.provider)){let a=(0,e.BI)(this.provider,D,H);y=a.headers,A=a.bodyString}((0,g.GK)(this.provider)||"claude"===this.provider)&&(A=await (0,h.jD)(A)),o(y,v);let E={method:"POST",headers:y,body:A};u&&(E.signal=u);try{b=await fetch(C,E)}finally{j&&(clearTimeout(j),j=null)}if(b.status===d.gx.RATE_LIMITED&&(B[f]??0)<r.RETRY_CONFIG.maxAttempts){B[f]=(B[f]??0)+1;let a=B[f];t?.debug?.("RETRY",`429 intra-retry ${a}/${r.RETRY_CONFIG.maxAttempts} on ${C} — waiting ${r.RETRY_CONFIG.delayMs}ms`),await new Promise(a=>setTimeout(a,r.RETRY_CONFIG.delayMs)),f--;continue}if(this.shouldRetry(b.status,f)){t?.debug?.("RETRY",`${b.status} on ${C}, trying fallback ${f+1}`),z=b.status;continue}return{response:b,url:C,headers:y,transformedBody:H}}catch(b){let a=b instanceof Error?b:Error(String(b));if("TimeoutError"===a.name&&t?.warn?.("TIMEOUT",`Fetch timeout after ${this.getTimeoutMs()}ms on ${C}`),y=a,f+1<x){t?.debug?.("RETRY",`Error on ${C}, trying fallback ${f+1}`);continue}throw a}}throw y||Error(`All ${x} URLs failed with status ${z}`)}}},68445:(a,b,c)=>{c.d(b,{T:()=>i,Y:()=>h});var d=c(76029);let e=[/^claude-/i,/^gpt-oss-/i,/^tab_/i];function f(a){return!!a&&"object"==typeof a&&!Array.isArray(a)}function g(a){if(!f(a)||!("thinkingConfig"in a)&&!("thinking_config"in a))return a;let b={...a};return delete b.thinkingConfig,delete b.thinking_config,b}function h(a,b){if(!a||!b)return!1;let c=String(b||"").trim().replace(/^models\//i,"").replace(/^(?:antigravity|gemini-cli)\//i,""),f=(0,d.js)(c);return"boolean"==typeof f?.supportsThinking?!f.supportsThinking:e.some(a=>a.test(c))}function i(a){let b={...a};if(delete b.reasoning_effort,delete b.reasoning,delete b.thinking,"generationConfig"in b&&(b.generationConfig=g(b.generationConfig)),f(b.request)){let a={...b.request};"generationConfig"in a&&(a.generationConfig=g(a.generationConfig)),b.request=a}return b}},69105:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{DEFAULT_QUOTA_THRESHOLD_PERCENT:()=>x,getQuotaCache:()=>o,getQuotaCacheStats:()=>w,getQuotaWindowStatus:()=>q,isAccountQuotaExhausted:()=>p,markAccountExhaustedFrom429:()=>r,setQuotaCache:()=>n,startBackgroundRefresh:()=>u,stopBackgroundRefresh:()=>v});var e=c(86552),f=c(73671),g=c(93603),h=c(10885),i=c(7938),j=a([f]);f=(j.then?(await j)():j)[0];let x=99,y=new Map,z=null,A=!1;function k(a){let b=new Date(a).getTime();return Number.isNaN(b)?null:b}function l(a){return Number.isFinite(a)?Math.max(0,Math.min(100,a)):0}function m(a){return"string"!=typeof a?"":a.toLowerCase().replace(/[^a-z0-9]+/g," ").trim()}function n(a,b,c){let d,e=function(a){let b={};for(let[c,d]of Object.entries(a))d&&"object"==typeof d&&(b[c]={remainingPercentage:(0,h.Q1)(d.remainingPercentage)??(d.total>0?Math.round((d.total-(d.used||0))/d.total*100):0),resetAt:d.resetAt||null});return b}(c),f=(d=Object.values(e),0!==d.length&&d.every(a=>a.remainingPercentage<=0)),g={connectionId:a,provider:b,quotas:e,fetchedAt:Date.now(),exhausted:f,nextResetAt:f?function(a){let b=null,c=1/0;for(let d of Object.values(a)){if(!d.resetAt)continue;let a=k(d.resetAt);null!==a&&a<c&&(c=a,b=d.resetAt)}return b}(e):null};if(y.set(a,g),g&&c)for(let[d,e]of Object.entries(c)){if(!e||"object"!=typeof e)continue;let c=(0,h.Q1)(e.remainingPercentage)??(e.total>0?Math.round((e.total-(e.used||0))/e.total*100):0);try{(0,i.KK)({provider:b,connection_id:a,window_key:d,remaining_percentage:c,is_exhausted:+!!g.exhausted,next_reset_at:e.resetAt??null,window_duration_ms:g.windowDurationMs??null,raw_data:null})}catch(a){console.error("[quotaCache] Failed to save snapshot:",a)}}}function o(a){return y.get(a)||null}function p(a){let b=y.get(a);if(!b||!b.exhausted)return!1;let c=Date.now();if(function(a,b){if(!a.nextResetAt)return null;let c=k(a.nextResetAt);return null===c?null:c<=b||a.windowDurationMs&&a.windowDurationMs>0&&b-c>=0?{exhausted:!1}:null}(b,c))return b.exhausted=!1,!1;let d=c-b.fetchedAt;return!!b.nextResetAt||!(d>3e5)}function q(a,b,c=x){let d=y.get(a);if(!d)return null;let e=Date.now(),f=function(a,b){let c=a[b];if(c)return c;let d=m(b);if(!d)return null;let e=[];for(let[b,c]of Object.entries(a)){let a=m(b);if(a){if(a===d)return c;a.startsWith(`${d} `)&&e.push({key:b,quota:c})}}return e.length>0?(e.sort((a,b)=>a.key.localeCompare(b.key)),e[0].quota):null}(d.quotas,b);if(!f)return null;let g=l(f.remainingPercentage),h=l(100-g),i=f.resetAt||null,j=!1;if(i){let a=k(i);null!==a&&a<=e&&(i=null,j=!0)}return{remainingPercentage:g,usedPercentage:h,resetAt:i,reachedThreshold:!j&&h>=c}}function r(a,b){y.set(a,{connectionId:a,provider:b,quotas:{},fetchedAt:Date.now(),exhausted:!0,nextResetAt:null})}let B=new Set;async function s(a){if(!B.has(a.connectionId)){B.add(a.connectionId);try{let b=await (0,f.McZ)(a.connectionId);if(!b||"oauth"!==b.authType||!b.isActive)return void y.delete(a.connectionId);let c=await (0,f.YDv)(a.connectionId),d=await (0,g.jf)(c?.proxy||null,()=>(0,e.m)(b));d?.quotas&&n(a.connectionId,a.provider,d.quotas)}catch(b){console.warn(`[QuotaCache] Refresh failed for ${a.connectionId.slice(0,8)}:`,b?.message||b)}finally{B.delete(a.connectionId)}}}async function t(){if(!A){A=!0;try{(0,i.Xx)();let a=Date.now(),b=[...y.values()].filter(b=>(function(a,b){let c=b-a.fetchedAt;if(a.exhausted&&a.nextResetAt){let c=k(a.nextResetAt);if(null!==c&&c<=b)return!0}return c>=3e5})(b,a));for(let a=0;a<b.length;a+=5){let c=b.slice(a,a+5);await Promise.allSettled(c.map(s))}}finally{A=!1}}}function u(){z||(z=setInterval(t,6e4),z?.unref?.())}function v(){z&&(clearInterval(z),z=null)}function w(){let a=[];for(let b of y.values())a.push({connectionId:b.connectionId.slice(0,8)+"...",provider:b.provider,exhausted:b.exhausted,nextResetAt:b.nextResetAt,ageMs:Date.now()-b.fetchedAt});return{total:y.size,entries:a}}d()}catch(a){d(a)}})},71181:(a,b,c)=>{c.d(b,{ZC:()=>k,br:()=>i});var d=c(25534),e=c(93786);let f=new Map,g=new Map,h=new Map;function i(a,b){h.set(a,b),(0,d.Zd)(a,b)}function j(a,b,c,d){let e=`${a}:${b}:${c}`,f=g.get(e)??0;return!(Date.now()-f<3e5)&&(g.set(e,Date.now()),console.warn(`[QuotaMonitor] session=${a} ${b}/${c}: ${(100*d).toFixed(1)}% quota used`),!0)}function k(a,b,c,d){let g;if(g=d?.providerSpecificData,g?.quotaMonitorEnabled!==!0)return;let i=f.get(a);if(i&&!i.stopped){if(i.provider===b&&i.accountId===c){i.connectionSnapshot=d,i.sessionBound=i.sessionBound||null!==(0,e.TT)(a);return}l(a)}f.set(a,{timer:null,stopped:!1,provider:b,accountId:c,connectionSnapshot:d,sessionBound:null!==(0,e.TT)(a),status:"starting",startedAt:Date.now(),lastPolledAt:null,lastSuccessAt:null,lastErrorAt:null,lastError:null,lastQuotaPercent:null,lastQuotaUsed:null,lastQuotaTotal:null,lastResetAt:null,lastAlertAt:null,nextPollDelayMs:null,nextPollAt:null,totalPolls:0,totalAlerts:0,consecutiveFailures:0}),function a(b,c){let d=f.get(b);if(!d||d.stopped)return;d.nextPollDelayMs=c,d.nextPollAt=Date.now()+c;let{provider:g,accountId:i}=d,k=setTimeout(async()=>{let c=f.get(b);if(c&&!c.stopped){if(c.sessionBound&&!(0,e.TT)(b))return void l(b);try{let d=h.get(g);if(!d){c.status=null===c.lastQuotaPercent?"idle":c.status,a(b,6e4);return}c.lastPolledAt=Date.now(),c.totalPolls+=1;let e=c.status,f=await d(i,c.connectionSnapshot||void 0),k=f&&"number"==typeof f.percentUsed&&Number.isFinite(f.percentUsed)?f.percentUsed:null;if(c.lastSuccessAt=Date.now(),c.lastError=null,c.lastErrorAt=null,c.consecutiveFailures=0,c.lastQuotaPercent=k,c.lastQuotaUsed=f&&"number"==typeof f.used&&Number.isFinite(f.used)?f.used:null,c.lastQuotaTotal=f&&"number"==typeof f.total&&Number.isFinite(f.total)?f.total:null,c.lastResetAt=f&&"string"==typeof f.resetAt&&f.resetAt.trim().length>0?f.resetAt:null,c.status=Number.isFinite(k)?k>=.95?"exhausted":k>=.8?"warning":"healthy":"idle",null!==k&&k>=.95){let d=j(b,g,i,k);d&&(c.lastAlertAt=Date.now(),c.totalAlerts+=1),(d||"exhausted"!==e)&&console.info(`[QuotaMonitor] session=${b}: marking ${i} for next-session cooldown`),a(b,15e3)}else null!==k&&k>=.8?(j(b,g,i,k)&&(c.lastAlertAt=Date.now(),c.totalAlerts+=1),a(b,15e3)):a(b,6e4)}catch(d){c.lastErrorAt=Date.now(),c.lastError=d instanceof Error?d.message:String(d),c.consecutiveFailures+=1,c.status="error",a(b,6e4)}}},c);"function"==typeof k.unref&&k.unref(),d.timer=k}(a,6e4)}function l(a){let b=f.get(a);if(b)for(let c of(b.stopped=!0,b.timer&&(clearTimeout(b.timer),b.timer=null),f.delete(a),g.keys()))c.startsWith(`${a}:`)&&g.delete(c)}},76029:(a,b,c)=>{c.d(b,{fn:()=>d,js:()=>e});let d={"gpt-5.5-mini":{maxOutputTokens:128e3,contextWindow:4e5,supportsThinking:!0,supportsTools:!0,supportsVision:!0},"gpt-5.5":{maxOutputTokens:128e3,contextWindow:105e4,supportsThinking:!0,supportsTools:!0,supportsVision:!0},"gemini-3-flash":{maxOutputTokens:65536,contextWindow:1048576,defaultThinkingBudget:0,thinkingBudgetCap:0,supportsThinking:!1,supportsTools:!0,supportsVision:!0,aliases:["gemini-3-flash-preview","gemini-3.1-flash-lite-preview"]},"gemini-3.1-pro-high":{maxOutputTokens:65535,contextWindow:1048576,defaultThinkingBudget:24576,thinkingBudgetCap:32768,thinkingOverhead:1e3,supportsThinking:!0,supportsTools:!0,supportsVision:!0,aliases:["gemini-3-pro-high","gemini-3-pro-preview","gemini-3.1-pro-preview","gemini-3.1-pro-preview-customtools"]},"gemini-3.1-pro-low":{maxOutputTokens:65535,contextWindow:1048576,defaultThinkingBudget:8192,thinkingBudgetCap:16e3,supportsThinking:!0,supportsTools:!0,supportsVision:!0,aliases:["gemini-3-pro-low"]},"claude-opus-4-5":{maxOutputTokens:32768,contextWindow:2e5,defaultThinkingBudget:1e4,thinkingBudgetCap:32e3,supportsThinking:!0,supportsTools:!0,supportsVision:!0},"claude-opus-4-7":{maxOutputTokens:128e3,contextWindow:1e6,supportsThinking:!0,supportsTools:!0,supportsVision:!0,aliases:["claude-opus-4.7"]},__default__:{maxOutputTokens:8192}};function e(a){if(d[a])return d[a];for(let[b,c]of Object.entries(d))if(c.aliases?.includes(a))return c;for(let[b,c]of Object.entries(d))if("__default__"!==b&&a.startsWith(b))return c}},76081:(a,b,c)=>{c.d(b,{Cy:()=>e});let d=new Map;function e(a,b,c=[]){let f=c.filter(a=>"string"==typeof a&&a.trim().length>0);if(0===f.length)return b;let g=[b,...f].filter(Boolean);if(g.length<=1)return b;let h=d.get(a)??0,i=h%g.length;return d.set(a,h+1),g[i]}},77421:(a,b,c)=>{c.d(b,{l:()=>e});let d=["x-forwarded-for","x-forwarded-host","x-forwarded-proto","x-forwarded-port","x-real-ip","forwarded","via","x-title","x-stainless-lang","x-stainless-package-version","x-stainless-os","x-stainless-arch","x-stainless-runtime","x-stainless-runtime-version","x-stainless-timeout","x-stainless-retry-count","x-stainless-helper-method","http-referer","referer","sec-ch-ua","sec-ch-ua-mobile","sec-ch-ua-platform","sec-fetch-mode","sec-fetch-site","sec-fetch-dest","priority","accept-encoding"];function e(a){let b={};for(let[c,e]of Object.entries(a))d.includes(c.toLowerCase())||(b[c]=e);return b["Accept-Encoding"]="gzip, deflate, br",b}},77608:(a,b,c)=>{c.d(b,{OZ:()=>m,PU:()=>l});var d=c(25534),e=c(71181);let f="/data/api.json?action=zeldaEasy.broadscope-bailian.codingPlan.queryCodingPlanInstanceInfoV2&product=broadscope-bailian&api=queryCodingPlanInstanceInfoV2",g=new Map,h=setInterval(()=>{let a=Date.now();for(let[b,c]of g)a-c.fetchedAt>3e5&&g.delete(b)},3e5);function i(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a){let b=parseFloat(a);if(Number.isFinite(b))return b}return b}function j(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function k(a){let b=j(a);if("ConsoleNeedLogin"===b.code||"Success"!==b.code&&"200"!==b.code)return null;let c=j(b.data).codingPlanInstanceInfos;if(!Array.isArray(c)||0===c.length)return null;let d=j(c[0]),e=j(d.codingPlanQuotaInfo);if(0===Object.keys(e).length)return null;let f=i(e.per5HourUsedQuota),g=i(e.per5HourTotalQuota),h=i(e.per5HourQuotaNextRefreshTime),k=g>0?f/g:0,l=i(e.perWeekUsedQuota),m=i(e.perWeekTotalQuota),n=i(e.perWeekQuotaNextRefreshTime),o=m>0?l/m:0,p=i(e.perBillMonthUsedQuota),q=i(e.perBillMonthTotalQuota),r=i(e.perBillMonthQuotaNextRefreshTime),s=q>0?p/q:0,t=Math.max(k,o,s),u={percentUsed:k,resetAt:h>0?new Date(1e3*h).toISOString():null},v={percentUsed:o,resetAt:n>0?new Date(1e3*n).toISOString():null},w={percentUsed:s,resetAt:r>0?new Date(1e3*r).toISOString():null},x=t===k?u.resetAt:t===o?v.resetAt:w.resetAt;return{used:Math.round(100*t),total:100,percentUsed:t,resetAt:x,window5h:u,windowWeekly:v,windowMonthly:w}}async function l(a,b){let c,d=g.get(a);if(d&&Date.now()-d.fetchedAt<6e4)return d.quota;let e=b?.providerSpecificData&&"object"==typeof b.providerSpecificData&&!Array.isArray(b.providerSpecificData)?b.providerSpecificData:void 0,h="string"==typeof b?.apiKey&&b.apiKey.trim().length>0?b.apiKey:"",i="string"==typeof(c=e?.consoleApiKey)&&c.trim().length>0?c:h;if(!i)return null;let l={Authorization:`Bearer ${i}`,"x-api-key":i,"X-DashScope-API-Key":i,"Content-Type":"application/json",Accept:"application/json"};try{let b,c=process.env.ALIBABA_CODING_PLAN_QUOTA_URL||`${!(b=process.env.ALIBABA_CODING_PLAN_HOST?.trim())?"https://modelstudio.console.alibabacloud.com":/^https?:\/\//i.test(b)?b:`https://${b}`}${f}`,d=await fetch(c,{method:"POST",headers:l,body:JSON.stringify({}),signal:AbortSignal.timeout(8e3)}),e=await d.json(),h=j(e);if("ConsoleNeedLogin"===h.code)try{let b=process.env.ALIBABA_CODING_PLAN_QUOTA_URL?c:`https://bailian.console.aliyun.com${f}`,d=await fetch(b,{method:"POST",headers:l,body:JSON.stringify({}),signal:AbortSignal.timeout(8e3)}),e=await d.json(),h=k(e);if(h)return g.set(a,{quota:h,fetchedAt:Date.now()}),h;return null}catch{return null}let i=k(e);if(!i)return null;return g.set(a,{quota:i,fetchedAt:Date.now()}),i}catch{return null}}function m(){(0,d.Zd)("bailian-coding-plan",l),(0,e.br)("bailian-coding-plan",l)}"object"==typeof h&&"unref"in h&&h.unref?.()},86552:(a,b,c)=>{c.d(b,{m:()=>H});var d=c(77598),e=c.n(d),f=c(49193),g=c(60382),h=c(20138),i=c(3235),j=c(10885),k=c(77608),l=c(40751),m=c(24632),n=c(96467);let o={quotaApiUrls:(0,g.aW)(),loadProjectApiUrl:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",tokenUrl:"https://oauth2.googleapis.com/token",get clientId(){return f.xq.antigravity.clientId},get clientSecret(){return f.xq.antigravity.clientSecret},get userAgent(){return(0,l.FT)()}},p="2023-06-01",q={usageUrl:"https://www.cursor.com/api/usage",userMetaUrl:"https://www.cursor.com/api/auth/me",subscriptionUrl:"https://www.cursor.com/api/subscription",clientVersion:i.Mr},r={minimax:{usageUrls:["https://www.minimax.io/v1/token_plan/remains","https://api.minimax.io/v1/api/openplatform/coding_plan/remains"]},"minimax-cn":{usageUrls:["https://www.minimaxi.com/v1/api/openplatform/coding_plan/remains","https://api.minimaxi.com/v1/api/openplatform/coding_plan/remains"]}};function s(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function t(a,b=0){let c="number"==typeof a?a:"string"==typeof a&&a.trim().length>0?Number(a):NaN;return Number.isFinite(c)?c:b}function u(a,b,c){let d=s(a);return d[b]??d[c]??null}function v(a){return Math.max(0,Math.min(100,a))}function w(a){return a.replace(/^copilot[_\s-]*/i,"").split(/[\s_-]+/).filter(Boolean).map(a=>/^pro\+$/i.test(a)?"Pro+":/^[a-z]{2,}$/.test(a)?a.charAt(0).toUpperCase()+a.slice(1).toLowerCase():a).join(" ").trim()}function x(a){return!!a&&(!a.unlimited||!(a.total<=0))&&(a.total>0||void 0!==a.remainingPercentage)}function y(a,b,c,d,e,f){let g=t(u(a,c,d),0);return g>0?new Date(b+g).toISOString():I(u(a,e,f))}function z(a){return Math.max(0,t(u(a,"current_interval_total_count","currentIntervalTotalCount"),0))}function A(a){return Math.max(0,t(u(a,"current_weekly_total_count","currentWeeklyTotalCount"),0))}function B(a,b){let c=a.filter(a=>b(a)>0),d=c.length>0?c:a;return 0===d.length?null:d.reduce((a,c)=>b(c)>b(a)?c:a)}function C(a,b,c,d){var e;let f,g,h;return e=d?Math.max(a-b,0):b,g=(f=Math.max(0,t(a,0)))>0?Math.min(Math.max(0,t(e,0)),f):0,h=f>0?Math.max(f-g,0):0,{used:g,total:f,remaining:h,remainingPercentage:f>0?v(h/f*100):0,resetAt:I(c),unlimited:!1}}async function D(a,b){if(!a)return{message:"MiniMax API key not available. Add a Token Plan API key."};let c=r[b].usageUrls,d="";for(let b=0;b<c.length;b+=1){let e=c[b],f=b<c.length-1;try{let b=await fetch(e,{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"}}),c=await b.text(),g={};if(c)try{g=s(JSON.parse(c))}catch{g={}}let h=s(u(g,"base_resp","baseResp")),i=t(u(h,"status_code","statusCode"),0),j=String(u(h,"status_msg","statusMsg")??"").trim(),k=`${j} ${c}`.trim(),l=/token plan|coding plan|invalid api key|invalid key|unauthorized|inactive/i;if(401===b.status||403===b.status||1004===i||l.test(k))return{message:function(a){let b=a.toLowerCase();return b.includes("token plan")||b.includes("coding plan")||b.includes("active period")||b.includes("invalid api key")||b.includes("invalid key")||b.includes("subscription")?"MiniMax Token Plan API key invalid or inactive. Use an active Token Plan key.":"MiniMax access denied. Confirm the key is an active Token Plan API key."}(k)};if(!b.ok){if(d=function(a,b){let c=b.replace(/\s+/g," ").trim();return c?c.length<=160?`MiniMax usage endpoint error (${a}): ${c}`:`MiniMax usage endpoint error (${a}): ${c.slice(0,157)}...`:`MiniMax usage endpoint error (${a}).`}(b.status,k),(404===b.status||405===b.status||b.status>=500)&&f)continue;return{message:`MiniMax connected. ${d}`}}if(c&&0===Object.keys(g).length)return{message:"MiniMax connected. Unable to parse usage response."};if(0!==i){if(j)return{message:`MiniMax connected. ${j}`};return{message:"MiniMax connected. Upstream quota API returned an error."}}let m=Date.now(),n=u(g,"model_remains","modelRemains"),o=(Array.isArray(n)?n.map(a=>s(a)):[]).filter(a=>{let b=String(u(a,"model_name","modelName")??"");return function(a){let b=a.trim().toLowerCase();return b.startsWith("minimax-m")||b.startsWith("coding-plan")}(b)});if(0===o.length)return{message:"MiniMax connected. No text quota data was returned."};let p=e.includes("/coding_plan/remains"),q={},r=B(o,z);if(r){let a=z(r),b=Math.max(0,t(u(r,"current_interval_usage_count","currentIntervalUsageCount"),0));q["session (5h)"]=C(a,b,y(r,m,"remains_time","remainsTime","end_time","endTime"),p)}let v=B(o,A);if(v&&A(v)>0){let a=A(v),b=Math.max(0,t(u(v,"current_weekly_usage_count","currentWeeklyUsageCount"),0));q["weekly (7d)"]=C(a,b,y(v,m,"weekly_remains_time","weeklyRemainsTime","weekly_end_time","weeklyEndTime"),p)}if(0===Object.keys(q).length)return{message:"MiniMax connected. Unable to extract text quota usage."};return{quotas:q}}catch(a){if(d=a.message,!f)break}}return{message:d?`MiniMax connected. Unable to fetch usage: ${d}`:"MiniMax connected. Unable to fetch usage."}}async function E(a){let b;if(!a)return{message:"CrofAI API key not available. Add a key to view usage."};try{b=await fetch("https://crof.ai/usage_api/",{method:"GET",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}})}catch(a){return{message:`CrofAI connected. Unable to fetch usage: ${a.message}`}}let c=await b.text();if(401===b.status||403===b.status)return{message:"CrofAI connected. The API key was rejected by /usage_api/."};if(!b.ok)return{message:`CrofAI connected. /usage_api/ returned HTTP ${b.status}.`};let d={};if(c)try{d=s(JSON.parse(c))}catch{return{message:"CrofAI connected. Unable to parse /usage_api/ response."}}let e=d.usable_requests,f=null==e?null:t(e,0),g=t(d.credits,0),h={};if(null!==f){let a=Math.max(0,f),b=Math.max(1e3,a),c=Math.max(0,b-a),d=new Date,e=Date.UTC(d.getUTCFullYear(),d.getUTCMonth(),d.getUTCDate(),5),g=new Date(e>d.getTime()?e:e+864e5).toISOString();h["Requests Today"]={used:c,total:b,remaining:a,resetAt:g,unlimited:!1,displayName:`Requests Today: ${a} left`}}return h.Credits={used:0,total:0,remaining:0,resetAt:null,unlimited:!0,displayName:`Credits: $${g.toFixed(4)}`},{quotas:h}}async function F(a,b){let c=(0,h.oS)(b),d=await fetch(c,{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}});if(!d.ok){if(401===d.status)throw Error("Invalid API key");throw Error(`GLM quota API error (${d.status})`)}let e=s((await d.json()).data),f=Array.isArray(e.limits)?e.limits:[],g={};for(let a of f){let b=s(a);if("TOKENS_LIMIT"!==b.type)continue;let c=t(b.percentage,0),d=t(b.nextResetTime,0),e=Math.max(0,100-c);g.session={used:c,total:100,remaining:e,remainingPercentage:e,resetAt:d>0?new Date(d).toISOString():null,unlimited:!1}}let i="string"==typeof e.level?e.level:"";return{plan:i?i.charAt(0).toUpperCase()+i.slice(1).toLowerCase():"Unknown",quotas:g}}async function G(a,b,c){try{let d=await (0,k.PU)(a,{apiKey:b,providerSpecificData:c});if(!d)return{message:"Bailian Coding Plan connected. Unable to fetch quota."};let e=d.used,f=d.total,g=Math.max(0,f-e),h=Math.round(g);return{plan:"Alibaba Coding Plan",used:e,total:f,remaining:g,remainingPercentage:h,resetAt:d.resetAt,unlimited:!1,displayName:"Alibaba Coding Plan"}}catch(a){return{message:`Bailian Coding Plan error: ${a.message}`}}}async function H(a){let{id:b,provider:c,accessToken:d,apiKey:e,providerSpecificData:f,projectId:g,email:h}=a;switch(c){case"github":return await J(d,f);case"gemini-cli":return await S(d,f,g);case"antigravity":return await X(d,f,g,b);case"claude":return await $(d);case"codex":return await aa(d,f);case"kiro":case"amazon-q":return await ab(d,f);case"kimi-coding":return await ad(d);case"qwen":return await ae(d,f);case"qoder":return await af(d);case"glm":case"glmt":return await F(e,f);case"minimax":case"minimax-cn":return await D(e,c);case"crof":return await E(e);case"cursor":return await Q(d);case"bailian-coding-plan":return await G(b,e,f);default:return{message:`Usage API not implemented for ${c}`}}}function I(a){if(!a)return null;try{let b;if(a instanceof Date)b=a;else if("number"==typeof a)b=new Date(a);else{if("string"!=typeof a)return null;b=new Date(a)}if(0>=b.getTime())return null;return b.toISOString()}catch(a){return null}}async function J(a,b){try{if(!a)throw Error("No GitHub access token available. Please re-authorize the connection.");let b=await fetch("https://api.github.com/copilot_internal/user",{headers:(0,i.wl)(`token ${a}`)});if(!b.ok){let a=await b.text();if(401===b.status||403===b.status)return{message:"GitHub token expired or permission denied. Please re-authenticate the connection."};throw Error(`GitHub API error: ${a}`)}let c=await b.json(),d=s(c);if(d.quota_snapshots){let a=s(d.quota_snapshots),b=I(u(d,"quota_reset_date","quotaResetDate")),c=K(a.premium_interactions,b),e=K(a.chat,b),f=K(a.completions,b),g={};return x(c)&&(g.premium_interactions=c),x(e)&&(g.chat=e),x(f)&&(g.completions=f),{plan:L(d,c),resetDate:u(d,"quota_reset_date","quotaResetDate"),quotas:g}}if(d.monthly_quotas||d.limited_user_quotas){let a=s(d.monthly_quotas),b=s(d.limited_user_quotas),c=u(d,"limited_user_reset_date","limitedUserResetDate"),e=I(c),f={},g=c=>{let d=t(u(a,c,c),0),g=Math.max(0,t(u(b,c,c),0));if(d<=0)return null;let h=Math.min(g,d);return f[c]={used:h,total:d,remaining:Math.max(d-h,0),remainingPercentage:v((d-h)/d*100),unlimited:!1,resetAt:e},f[c]},h=g("premium_interactions");return g("chat"),g("completions"),{plan:L(d,h),resetDate:c,quotas:f}}return{message:"GitHub Copilot connected. Unable to parse quota data."}}catch(a){throw Error(`Failed to fetch GitHub usage: ${a.message}`)}}function K(a,b=null){let c=s(a);if(0===Object.keys(c).length)return null;let d=!0===c.unlimited,e=t(c.entitlement,NaN),f=t(c.total,NaN),g=t(c.remaining,NaN),h=t(c.used,NaN),i=t(u(c,"percent_remaining","percentRemaining"),NaN),j=Number.isFinite(f)?Math.max(0,f):Number.isFinite(e)?Math.max(0,e):0,k=Number.isFinite(g)?Math.max(0,g):void 0,l=Number.isFinite(h)?Math.max(0,h):void 0,m=Number.isFinite(i)?v(i):void 0;return void 0===l&&j>0&&void 0!==k&&(l=Math.max(j-k,0)),void 0===k&&j>0&&void 0!==l&&(k=Math.max(j-l,0)),void 0===m&&j>0&&void 0!==k&&(m=v(k/j*100)),j<=0&&void 0!==m&&(j=100,l=100-m,k=m),{used:Math.max(0,l??0),total:j,remaining:k,remainingPercentage:m,resetAt:b,unlimited:d}}function L(a,b){let c=u(a,"copilot_plan","copilotPlan"),d=u(a,"access_type_sku","accessTypeSku"),e="string"==typeof c?c.trim():"",f="string"==typeof d?d.trim():"",g=`${f} ${e}`.trim().toUpperCase(),h=s(u(a,"monthly_quotas","monthlyQuotas")),i=b?.total||t(u(h,"premium_interactions","premiumInteractions"),0),j=t(u(h,"chat","chat"),0);if(g.includes("PRO+")||g.includes("PRO_PLUS")||g.includes("PROPLUS"))return"Copilot Pro+";if(g.includes("ENTERPRISE"))return"Copilot Enterprise";if(g.includes("BUSINESS"))return"Copilot Business";if(g.includes("STUDENT"))return"Copilot Student";if(g.includes("FREE"))return"Copilot Free";if(g.includes("PRO"))return"Copilot Pro";if(i>=1400)return"Copilot Pro+";if(i>=900)return"Copilot Enterprise";if(i>=250)return g.includes("INDIVIDUAL")?"Copilot Pro":"Copilot Business";if(i>0||50===j)return"Copilot Free";if(f){let a=w(f);return a?`Copilot ${a}`:"GitHub Copilot"}if(e){let a=w(e);return a?`Copilot ${a}`:"GitHub Copilot"}return"GitHub Copilot"}function M(...a){for(let b of a){let a=t(b,NaN);if(Number.isFinite(a)&&a>0)return a}return 0}function N(a,b){return M(u(b,"team_max_monthly_requests","teamMaxMonthlyRequests"),u(a,"team_max_request_usage","teamMaxRequestUsage"),u(b,"team_max_request_usage","teamMaxRequestUsage"),u(a,"hard_limit","hardLimit"),u(b,"max_monthly_requests","maxMonthlyRequests"))}function O(a,b,c){let d=Math.max(0,t(b,0)),e=Math.max(0,t(a,0)),f=d>0?Math.min(e,d):e,g=d>0?Math.max(d-f,0):0;return{used:f,total:d,remaining:g,remainingPercentage:d>0?v(g/d*100):0,resetAt:I(c),unlimited:!1}}async function P(a,b){let c=await fetch(a,{method:"GET",headers:(0,i.kU)(b,q.clientVersion)}),d=await c.text();if(!c.ok)return{ok:!1,status:c.status,data:{},text:d};try{let a=d?JSON.parse(d):{};return{ok:!0,status:c.status,data:s(a),text:d}}catch{return{ok:!1,status:c.status,data:{},text:d}}}async function Q(a){try{let b,c,d,e;if(!a)return{message:"Cursor token expired or unavailable. Please re-authenticate the connection."};let[f,g,h]=await Promise.all([P(q.usageUrl,a),P(q.userMetaUrl,a),P(q.subscriptionUrl,a)]);if([f,g,h].some(a=>401===a.status||403===a.status))return{message:"Cursor token expired or permission denied. Please re-authenticate the connection."};let i=f.data,j=g.data,k=h.data,l=(b=s(u(j,"team_info","teamInfo")),c=[u(j,"plan","plan"),u(j,"subscription_type","subscriptionType"),u(k,"subscription_type","subscriptionType"),u(k,"plan","plan")].find(a=>"string"==typeof a&&a.trim().length>0),d="string"==typeof c?c.trim().toLowerCase():"",Object.keys(b).length>0||d.includes("team")?"Cursor Team":d.includes("enterprise")?"Cursor Enterprise":d.includes("pro")?"Cursor Pro":d.includes("free")?"Cursor Free":"Cursor"),m={},n=u(i,"num_requests_total","numRequestsTotal"),o=N(i,k),p=u(i,"reset_date","resetDate")||u(k,"reset_date","resetDate");(t(n,0)>0||o>0)&&(m.requests=O(n,o,p));let r=s(u(i,"on_demand","onDemand")),v=u(r,"num_requests","numRequests"),w=(e=s(u(i,"on_demand","onDemand")),M(u(e,"max_requests","maxRequests"),N(i,k))),x=u(r,"reset_date","resetDate")||u(i,"reset_date","resetDate")||u(k,"reset_date","resetDate");if((t(v,0)>0||w>0)&&(m.on_demand=O(v,w,x)),Object.keys(m).length>0)return{plan:l,quotas:m};return{plan:l,message:"Cursor connected. Unable to parse quota data."}}catch(a){return{message:`Unable to fetch Cursor usage: ${a.message}`}}}let R=new Map;async function S(a,b,c){if(!a)return{plan:"Free",message:"Gemini CLI access token not available."};try{let d=await T(a),e=c||b?.projectId||d?.cloudaicompanionProject||null,f=function(a){if(!a||0===Object.keys(a).length)return"Free";let b="";if(Array.isArray(a.allowedTiers)){for(let c of a.allowedTiers)if(c.isDefault&&c.id){b=c.id.trim().toUpperCase();break}}if(b||(b=(a.currentTier?.id||"").toUpperCase()),b){if(b.includes("ULTRA"))return"Ultra";if(b.includes("PRO"))return"Pro";if(b.includes("ENTERPRISE"))return"Enterprise";if(b.includes("BUSINESS")||b.includes("STANDARD"))return"Business";if(b.includes("FREE")||b.includes("INDIVIDUAL")||b.includes("LEGACY"))return"Free"}let c=a.currentTier?.name||a.currentTier?.displayName||a.subscriptionType||a.tier||"",d=c.toUpperCase();return d.includes("ULTRA")?"Ultra":d.includes("PRO")?"Pro":d.includes("ENTERPRISE")?"Enterprise":d.includes("STANDARD")||d.includes("BUSINESS")?"Business":d.includes("INDIVIDUAL")||d.includes("FREE")||a.currentTier?.upgradeSubscriptionType?"Free":c?c.charAt(0).toUpperCase()+c.slice(1).toLowerCase():"Free"}(d);if(!e)return{plan:f,message:"Gemini CLI project ID not available."};let g=await fetch("https://cloudcode-pa.googleapis.com/v1internal:retrieveUserQuota",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({project:e}),signal:AbortSignal.timeout(1e4)});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=t(a.remainingFraction,0),c=100*b,d=Math.round(1e3*b),e=Math.max(0,1e3-d);i[a.modelId]={used:e,total:1e3,resetAt:I(a.resetTime),remainingPercentage:c,unlimited:!1}}return{plan:f,quotas:i}}catch(a){return{message:`Gemini CLI error: ${a.message}`}}}async function T(a){let b=R.get(a);if(b&&Date.now()-b.fetchedAt<3e5)return b.data;let c=await U(a);return R.set(a,{data:c,fetchedAt:Date.now()}),c}async function U(a){try{let b=await fetch("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"}})});if(!b.ok)return null;return await b.json()}catch{return null}}let V=new Map;async function W(a,b,c){try{if(!c)return null;for(let d of g.KJ){let f=`${d}/v1internal:streamGenerateContent?alt=sse`,g=`-${e().randomUUID()}`,h={project:c,model:"gemini-2-flash",userAgent:"antigravity",requestType:"agent",requestId:`credits-probe-${Date.now()}`,enabledCreditTypes:["GOOGLE_ONE_AI"],request:{model:"gemini-2-flash",contents:[{role:"user",parts:[{text:"hi"}]}],generationConfig:{maxOutputTokens:1},sessionId:g}},i={"Content-Type":"application/json",Authorization:`Bearer ${a}`,"User-Agent":(0,l.FT)(),"X-Goog-Api-Client":(0,l.nD)(),Accept:"text/event-stream"};try{let a=await fetch(f,{method:"POST",headers:i,body:JSON.stringify(h),signal:AbortSignal.timeout(1e4)});if(!a.ok)continue;for(let c of(await a.text()).split("\n")){let a=c.trim();if(!a.startsWith("data:"))continue;let d=a.slice(5).trim();if("[DONE]"===d)break;try{let a=JSON.parse(d);if(Array.isArray(a?.remainingCredits)){let c=a.remainingCredits.find(a=>a?.creditType==="GOOGLE_ONE_AI");if(c){let a=parseInt(c.creditAmount,10);if(!isNaN(a))return(0,m.iU)(b,a),a}}}catch{}}}catch{}}return null}catch{return null}}async function X(a,b,c,d){try{let b=await Y(a),e=c||b?.cloudaicompanionProject||null,f=d||"unknown",g=(0,m.fZ)(f),h=(0,n.YX)();null===g&&"off"!==h&&(g=await W(a,f,e));let i=null,j=null;for(let b of o.quotaApiUrls)try{if((i=await fetch(b,{method:"POST",headers:(0,l.He)("fetchAvailableModels",a),body:JSON.stringify(e?{project:e}:{}),signal:AbortSignal.timeout(1e4)})).ok||401===i.status||403===i.status)break}catch(a){j=a}if(!i)throw j||Error("Antigravity API unavailable");if(403===i.status)return{message:"Antigravity access forbidden. Check subscription."};if(!i.ok)throw Error(`Antigravity API error: ${i.status}`);let k=await i.json(),p=s(k),q=s(p.models),r={},u=new Set(["chat_20706","chat_23310","tab_flash_lite_preview","tab_jump_flash_lite_preview","gemini-2.5-flash-thinking","gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.5-flash-preview-image-generation","gemini-3.1-flash-image-preview","gemini-3-flash-agent","gemini-3.1-flash-lite","gemini-3-pro-low","gemini-3-pro-high"]);for(let[a,b]of Object.entries(q)){let c=s(b),d=s(c.quotaInfo);if(!0===c.isInternal||u.has(a)||0===Object.keys(d).length)continue;let e=t(d.remainingFraction,-1),f=I(d.resetTime),g=e<0?1:e,h=!f&&g>=1,i=100*g,j=Math.round(1e3*g),k=h?0:Math.max(0,1e3-j);r[a]={used:k,total:1e3*!h,resetAt:f,remainingPercentage:h?100:i,unlimited:h}}return{plan:function(a){if(!a||0===Object.keys(a).length)return"Free";let b="";if(Array.isArray(a.allowedTiers)){for(let c of a.allowedTiers)if(c.isDefault&&c.id){b=c.id.trim().toUpperCase();break}}if(b||(b=(a.currentTier?.id||"").toUpperCase()),b){if(b.includes("ULTRA"))return"Ultra";if(b.includes("PRO"))return"Pro";if(b.includes("ENTERPRISE"))return"Enterprise";if(b.includes("BUSINESS")||b.includes("STANDARD"))return"Business";if(b.includes("FREE")||b.includes("INDIVIDUAL")||b.includes("LEGACY"))return"Free"}let c=a.currentTier?.name||a.currentTier?.displayName||a.subscriptionType||a.tier||"",d=c.toUpperCase();return d.includes("ULTRA")?"Ultra":d.includes("PRO")?"Pro":d.includes("ENTERPRISE")?"Enterprise":d.includes("STANDARD")||d.includes("BUSINESS")?"Business":d.includes("INDIVIDUAL")||d.includes("FREE")||a.currentTier?.upgradeSubscriptionType?"Free":c?c.charAt(0).toUpperCase()+c.slice(1).toLowerCase():"Free"}(b),quotas:{...r,...null!==g&&{credits:{used:0,total:0,remaining:g,unlimited:!1,resetAt:null}}},subscriptionInfo:b}}catch(a){return{message:`Antigravity error: ${a.message}`}}}async function Y(a){let b=a.substring(0,16),c=V.get(b);if(c&&Date.now()-c.fetchedAt<3e5)return c.data;let d=await Z(a);return V.set(b,{data:d,fetchedAt:Date.now()}),d}async function Z(a){try{let b=await fetch(o.loadProjectApiUrl,{method:"POST",headers:(0,l.He)("loadCodeAssist",a),body:JSON.stringify({metadata:(0,l.iu)()})});if(!b.ok)return null;return await b.json()}catch{return null}}async function $(a){try{let b=await fetch("https://api.anthropic.com/api/oauth/usage",{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-beta":"oauth-2025-04-20","anthropic-version":p}});if(b.ok){let a=await b.json(),c={},d=a=>a&&"object"==typeof a&&void 0!==(0,j.Q1)(a.utilization),e=a=>{let b=(0,j.Q1)(a.utilization),c=Math.max(0,100-b);return{used:b,total:100,remaining:c,resetAt:I(a.resets_at),remainingPercentage:c,unlimited:!1}};for(let[b,f]of(d(a.five_hour)&&(c["session (5h)"]=e(a.five_hour)),d(a.seven_day)&&(c["weekly (7d)"]=e(a.seven_day)),Object.entries(a))){let a=s(f);if(b.startsWith("seven_day_")&&"seven_day"!==b&&d(a)){let d=b.replace("seven_day_","");c[`weekly ${d} (7d)`]=e(a)}}return{plan:("string"==typeof a.tier?a.tier:"string"==typeof a.plan?a.plan:"string"==typeof a.subscription_type?a.subscription_type:null)||"Claude Code",quotas:c,extraUsage:a.extra_usage??null}}return console.warn(`[Claude Usage] OAuth endpoint returned ${b.status}, falling back to legacy`),await _(a)}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}async function _(a){try{let b=await fetch("https://api.anthropic.com/v1/settings",{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":p}});if(b.ok){let c=await b.json();if(c.organization_id){let b=await fetch("https://api.anthropic.com/v1/organizations/{org_id}/usage".replace("{org_id}",c.organization_id),{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":p}});if(b.ok){let a=await b.json();return{plan:c.plan||"Unknown",organization:c.organization_name,quotas:a}}}return{plan:c.plan||"Unknown",organization:c.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}`}}}async function aa(a,b={}){try{let c="string"==typeof b.workspaceId?b.workspaceId:null,d={Authorization:`Bearer ${a}`,"Content-Type":"application/json",Accept:"application/json"};c&&(d["chatgpt-account-id"]=c);let e=await fetch("https://chatgpt.com/backend-api/wham/usage",{method:"GET",headers:d});if(!e.ok){if(401===e.status||403===e.status)return{message:"Codex token expired or access denied. Please re-authenticate the connection."};throw Error(`Codex API error: ${e.status}`)}let f=await e.json(),g=s(u(f,"rate_limit","rateLimit")),h=s(u(g,"primary_window","primaryWindow")),i=s(u(g,"secondary_window","secondaryWindow")),j=a=>{let b=t(u(a,"reset_at","resetAt"),0),c=t(u(a,"reset_after_seconds","resetAfterSeconds"),0);return b>0?I(1e3*b):c>0?I(Date.now()+1e3*c):null},k={};if(Object.keys(h).length>0){let a=t(u(h,"used_percent","usedPercent"),0);k.session={used:a,total:100,remaining:100-a,resetAt:j(h),unlimited:!1}}if(Object.keys(i).length>0){let a=t(u(i,"used_percent","usedPercent"),0);k.weekly={used:a,total:100,remaining:100-a,resetAt:j(i),unlimited:!1}}let l=s(u(f,"code_review_rate_limit","codeReviewRateLimit")),m=s(u(l,"primary_window","primaryWindow")),n=u(m,"used_percent","usedPercent"),o=u(m,"remaining_count","remainingCount");if(null!==n||null!==o){let a=t(n,0);k.code_review={used:a,total:100,remaining:100-a,resetAt:j(m),unlimited:!1}}return{plan:String(u(f,"plan_type","planType")||"unknown"),limitReached:!!u(g,"limit_reached","limitReached"),quotas:k}}catch(a){return{message:`Failed to fetch Codex usage: ${a.message}`}}}async function ab(a,b){try{let c=b?.profileArn;if(!c)return{message:"Kiro connected. Profile ARN not available for quota tracking."};let d=await fetch("https://codewhisperer.us-east-1.amazonaws.com",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.GetUsageLimits",Accept:"application/json"},body:JSON.stringify({origin:"AI_EDITOR",profileArn:c,resourceType:"AGENTIC_REQUEST"})});if(!d.ok){let a=await d.text();throw Error(`Kiro API error (${d.status}): ${a}`)}let e=await d.json(),f=e.usageBreakdownList||[],g={},h=I(e.nextDateReset||e.resetDate);return f.forEach(a=>{let b=a.resourceType?.toLowerCase()||"unknown",c=a.currentUsageWithPrecision||0,d=a.usageLimitWithPrecision||0;if(g[b]={used:c,total:d,remaining:d-c,resetAt:h,unlimited:!1},a.freeTrialInfo){let c=a.freeTrialInfo.currentUsageWithPrecision||0,d=a.freeTrialInfo.usageLimitWithPrecision||0;g[`${b}_freetrial`]={used:c,total:d,remaining:d-c,resetAt:h,unlimited:!1}}}),{plan:e.subscriptionInfo?.subscriptionTitle||"Kiro",quotas:g}}catch(a){throw Error(`Failed to fetch Kiro usage: ${a.message}`)}}function ac(a){return a?({LEVEL_BASIC:"Moderato",LEVEL_INTERMEDIATE:"Allegretto",LEVEL_ADVANCED:"Allegro",LEVEL_STANDARD:"Vivace"})[a]||a.replace("LEVEL_","").toLowerCase():""}async function ad(a){let b="kimi-usage-"+Date.now(),c="u">typeof process?`${process.platform} ${process.arch}`:"unknown";try{let d,e=await fetch("https://api.kimi.com/coding/v1/usages",{method:"GET",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","X-Msh-Platform":"omniroute","X-Msh-Version":"2.1.2","X-Msh-Device-Model":c,"X-Msh-Device-Id":b}}),f=await e.text();if(!e.ok)return{plan:"Kimi Coding",message:`Kimi Coding connected. API Error ${e.status}: ${f.slice(0,100)}`};try{d=JSON.parse(f)}catch{return{plan:"Kimi Coding",message:"Kimi Coding connected. Invalid JSON response from API."}}let g={},h=s(d),i=s(h.usage),k=t(i.limit||i.Limit,0),l=t(i.used||i.Used,0),m=t(i.remaining||i.Remaining,0),n=i.resetTime||i.ResetTime||i.reset_at||i.resetAt;k>0&&(g.Weekly={used:l,total:k,remaining:m,remainingPercentage:k>0?m/k*100:0,resetAt:I(n),unlimited:!1});let o=Array.isArray(h.limits)?h.limits:[];for(let a=0;a<o.length;a++){let b=s(o[a]);s(b.window);let c=s(b.detail),d=t(c.limit||c.Limit,0),e=t(c.remaining||c.Remaining,0),f=c.resetTime||c.reset_at||c.resetAt;d>0&&(g.Ratelimit={used:d-e,total:d,remaining:e,remainingPercentage:d>0?e/d*100:0,resetAt:I(f),unlimited:!1})}let p=a=>a&&"object"==typeof a&&void 0!==(0,j.Q1)(a.utilization),q=a=>{let b=(0,j.Q1)(a.utilization);return{used:100-b,total:100,remaining:b,resetAt:I(a.resets_at),remainingPercentage:b,unlimited:!1}};for(let[a,b]of(p(s(h.five_hour))&&(g["session (5h)"]=q(s(h.five_hour))),p(s(h.seven_day))&&(g["weekly (7d)"]=q(s(h.seven_day))),Object.entries(h))){let c=s(b);if(a.startsWith("seven_day_")&&"seven_day"!==a&&p(c)){let b=a.replace("seven_day_","");g[`weekly ${b} (7d)`]=q(c)}}if(Object.keys(g).length>0){let a=s(h.user),b=s(a.membership).level;return{plan:ac(b)||"Kimi Coding",quotas:g}}let r=s(h.user),u=s(r.membership).level;return{plan:ac(u)||"Kimi Coding",message:"Kimi Coding connected. Usage tracked per request."}}catch(a){return{message:`Kimi Coding connected. Unable to fetch usage: ${a.message}`}}}async function ae(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 af(a){try{return{message:"Qoder connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch Qoder usage."}}}},93786:(a,b,c)=>{c.d(b,{DD:()=>k,IN:()=>g,OT:()=>n,TT:()=>h,WO:()=>m,bb:()=>i,f6:()=>f,fF:()=>l});var d=c(77598);let e=new Map;function f(a,b={}){if(!a||"object"!=typeof a)return null;let c=[];a.model&&c.push(`model:${a.model}`),b.provider&&c.push(`provider:${b.provider}`);let e=function(a){if(!a||"object"!=typeof a)return null;if(a.system)return"string"==typeof a.system?a.system:JSON.stringify(a.system);if(Array.isArray(a.messages)){let b=a.messages.find(a=>"system"===a.role||"developer"===a.role);if(b)return"string"==typeof b.content?b.content:JSON.stringify(b.content)}return null}(a);e&&c.push(`sys:${o(e)}`);let g=function(a){if(!a||"object"!=typeof a)return null;let b=a.messages||a.input||[];if(!Array.isArray(b))return null;for(let a of b)if("user"===a.role)return"string"==typeof a.content?a.content:JSON.stringify(a.content);return null}(a);if(g&&c.push(`user0:${o(g)}`),a.tools&&Array.isArray(a.tools)&&a.tools.length>0){let b=a.tools.map(a=>a.name||a.function?.name||"").filter(Boolean).sort().join(",");b&&c.push(`tools:${o(b)}`)}if(b.connectionId&&c.push(`conn:${b.connectionId}`),0===c.length)return null;let h=c.join("|");return(0,d.createHash)("sha256").update(h).digest("hex").slice(0,16)}function g(a,b=null){if(!a)return;let c=e.get(a);c?(c.lastActive=Date.now(),c.requestCount++,b&&(c.connectionId=b)):e.set(a,{createdAt:Date.now(),lastActive:Date.now(),requestCount:1,connectionId:b})}function h(a){if(!a)return null;let b=e.get(a);return b?Date.now()-b.lastActive>18e5?(e.delete(a),null):{...b}:null}function i(a){let b=h(a);return b?.connectionId||null}setInterval(()=>{let a=Date.now();for(let[b,c]of e)if(a-c.lastActive>18e5)for(let[a,c]of(e.delete(b),j))c.delete(b),0===c.size&&j.delete(a)},6e4).unref();let j=new Map;function k(a,b){j.has(a)||j.set(a,new Set),j.get(a).add(b)}function l(a,b){return j.get(a)?.has(b)===!0}function m(a,b){if(!b||b<=0)return null;let c=j.get(a)?.size??0;return c<b?null:{code:"SESSION_LIMIT_EXCEEDED",message:`You have reached the maximum number of active sessions (${b}). Please close unused sessions or wait for them to expire.`,limit:b,current:c}}function n(a){if(!a||"function"!=typeof a.get)return null;let b=a.get("x-session-id")??a.get("x_session_id")??a.get("x-omniroute-session")??a.get("session-id")??null;return b&&b.trim()?`ext:${b.trim().slice(0,64)}`:null}function o(a){return(0,d.createHash)("sha256").update(a).digest("hex").slice(0,8)}},96467:(a,b,c)=>{c.d(b,{IE:()=>e,SN:()=>f,YX:()=>h,Z1:()=>g,Ze:()=>i});var d=c(39852);function e(a){return{...a,enabledCreditTypes:["GOOGLE_ONE_AI"]}}function f(a,b){return!(!b||(0,d.dY)(a))}function g(a){return(0,d.Ef)(a)}function h(){let a=(process.env.ANTIGRAVITY_CREDITS||"").trim().toLowerCase();return"always"===a||"retry"===a?a:"off"}function i(a,b){return!("always"!==b||(0,d.dY)(a))}}};
|