omniroute 2.4.1 → 2.4.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/README.md +76 -76
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +74 -72
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/routes-manifest.json +14 -0
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/agents/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/agents/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +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.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +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-log/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js.nft.json +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/cli-tools/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +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.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +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.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +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.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +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.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +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.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +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 +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +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 +2 -2
- 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.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +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.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +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.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +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.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +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/translator/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +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.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/.well-known/agent.json/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/400/page.js +1 -1
- package/app/.next/server/app/400/page.js.nft.json +1 -1
- package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page.js +1 -1
- package/app/.next/server/app/401/page.js.nft.json +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page.js +1 -1
- package/app/.next/server/app/403/page.js.nft.json +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page.js +1 -1
- package/app/.next/server/app/408/page.js.nft.json +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page.js +1 -1
- package/app/.next/server/app/429/page.js.nft.json +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page.js +1 -1
- package/app/.next/server/app/500/page.js.nft.json +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page.js +1 -1
- package/app/.next/server/app/502/page.js.nft.json +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/page.js +1 -1
- package/app/.next/server/app/503/page.js.nft.json +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 +2 -2
- 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.js +1 -1
- package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/a2a/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/a2a/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/a2a/tasks/[id]/cancel/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/a2a/tasks/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/a2a/tasks/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/acp/agents/route.js +1 -1
- package/app/.next/server/app/api/acp/agents/route.js.nft.json +1 -1
- package/app/.next/server/app/api/acp/agents/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/login/route.js +1 -1
- package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +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/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +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/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/auto/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +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/route_client-reference-manifest.js +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/combos/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/export/route.js +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/export/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/import/route.js +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/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/route.js +1 -1
- package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/init/route.js +1 -1
- package/app/.next/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/route.js +1 -1
- package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/audit/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/audit/stats/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/sse/route.js +1 -1
- package/app/.next/server/app/api/mcp/sse/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/sse/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/status/route.js +1 -1
- package/app/.next/server/app/api/mcp/status/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/stream/route.js +1 -1
- package/app/.next/server/app/api/mcp/stream/route.js.nft.json +1 -1
- package/app/.next/server/app/api/mcp/stream/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/catalog/route.js +2 -2
- package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/openrouter-catalog/route.js +1 -1
- package/app/.next/server/app/api/models/openrouter-catalog/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/openrouter-catalog/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/route.js +1 -1
- package/app/.next/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/route_client-reference-manifest.js +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/monitoring/health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +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/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +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/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js +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/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/models/route.js +1 -1
- package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/route.js +1 -1
- package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-models/route.js +1 -1
- package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js +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/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js +2 -2
- package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js +2 -2
- package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/refresh/route.js +1 -0
- package/app/.next/server/app/api/providers/[id]/refresh/route.js.nft.json +1 -0
- package/app/.next/server/app/api/providers/[id]/refresh/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/route.js +1 -1
- package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/route_client-reference-manifest.js +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/test-batch/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/validate/route.js +1 -1
- package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/rate-limits/route.js +1 -1
- package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
- package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/resilience/route.js +1 -1
- package/app/.next/server/app/api/resilience/route.js.nft.json +1 -1
- package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/background-degradation/route.js +1 -1
- package/app/.next/server/app/api/settings/background-degradation/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/background-degradation/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/combo-defaults/route.js +1 -1
- package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/model-aliases/route.js +1 -1
- package/app/.next/server/app/api/settings/model-aliases/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/model-aliases/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/proxy/route.js +1 -1
- package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/proxy/test/route.js +1 -1
- package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/route.js +1 -1
- package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route.js +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/task-routing/route.js +1 -0
- package/app/.next/server/app/api/settings/task-routing/route.js.nft.json +1 -0
- package/app/.next/server/app/api/settings/task-routing/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/settings/thinking-budget/route.js +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/cloud/route.js +1 -1
- package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/initialize/route.js +1 -1
- package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/token-health/route.js +1 -1
- package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/analytics/route.js +1 -1
- package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +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/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/proxy-logs/route.js +1 -1
- package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/quota/route.js +1 -1
- package/app/.next/server/app/api/usage/quota/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/quota/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js +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/speech/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/models/route.js +1 -1
- package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/moderations/route.js +1 -1
- package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/music/generations/route.js +1 -1
- package/app/.next/server/app/api/v1/music/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/music/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +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]/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +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]/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +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]/images/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/rerank/route.js +1 -1
- package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/route.js +1 -1
- package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route.js +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js +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/[...path]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page.js +1 -1
- package/app/.next/server/app/callback/page.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.js.nft.json +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page.js +1 -1
- package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page.js +1 -1
- package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page.js +2 -2
- package/app/.next/server/app/landing/page.js.nft.json +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page.js +1 -1
- package/app/.next/server/app/login/page.js.nft.json +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page.js +1 -1
- package/app/.next/server/app/maintenance/page.js.nft.json +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page.js +1 -1
- package/app/.next/server/app/offline/page.js.nft.json +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page.js +1 -1
- package/app/.next/server/app/page.js.nft.json +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page.js +1 -1
- package/app/.next/server/app/privacy/page.js.nft.json +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page.js +1 -1
- package/app/.next/server/app/status/page.js.nft.json +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page.js +1 -1
- package/app/.next/server/app/terms/page.js.nft.json +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +74 -72
- package/app/.next/server/chunks/1308.js +1 -1
- package/app/.next/server/chunks/1714.js +135 -0
- package/app/.next/server/chunks/1909.js +1 -1
- package/app/.next/server/chunks/1960.js +1 -1
- package/app/.next/server/chunks/2391.js +1 -1
- package/app/.next/server/chunks/2476.js +1 -0
- package/app/.next/server/chunks/2767.js +3 -3
- package/app/.next/server/chunks/3061.js +2 -2
- package/app/.next/server/chunks/3596.js +1 -1
- package/app/.next/server/chunks/3648.js +5 -5
- package/app/.next/server/chunks/406.js +13 -13
- package/app/.next/server/chunks/4755.js +1 -1
- package/app/.next/server/chunks/5585.js +1 -0
- package/app/.next/server/chunks/595.js +1 -1
- package/app/.next/server/chunks/5979.js +1 -1
- package/app/.next/server/chunks/6094.js +1 -0
- package/app/.next/server/chunks/6197.js +46 -0
- package/app/.next/server/chunks/6440.js +1 -0
- package/app/.next/server/chunks/7109.js +2 -2
- package/app/.next/server/chunks/7136.js +1 -0
- package/app/.next/server/chunks/7327.js +1 -1
- package/app/.next/server/chunks/7544.js +1 -1
- package/app/.next/server/chunks/7669.js +1 -1
- package/app/.next/server/chunks/8369.js +1 -1
- package/app/.next/server/chunks/8907.js +1 -1
- package/app/.next/server/chunks/9631.js +1 -1
- package/app/.next/server/chunks/9704.js +2 -2
- package/app/.next/server/instrumentation.js +1 -1
- package/app/.next/server/middleware.js +4 -4
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/{server/chunks/3922.js → static/chunks/5846-dc138c1880db7dc4.js} +2 -1
- package/app/.next/static/chunks/647-bf8bc535ac3648d0.js +21 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/agents/page-576b27a05c09fba5.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-3c3f3b0b558e9302.js +15 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-81244e4816fac7ea.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/{page-08c2aa1b8887ab74.js → page-8b96e2f6d76d6f2d.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/page-2d456b7ddbf3d41e.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media/page-5ed5bdc9e926936c.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-799001b6cea7d5bc.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/playground/page-0fff47edc56250ea.js +2 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-01465d13a7217fd4.js +1 -0
- package/app/.next/static/chunks/app/.well-known/agent.json/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/400/layout-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/401/layout-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/403/layout-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/408/layout-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/429/layout-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/500/layout-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/502/layout-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/503/layout-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/_global-error/page-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/_not-found/page-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/a2a/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/a2a/status/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/a2a/tasks/[id]/cancel/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/a2a/tasks/[id]/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/a2a/tasks/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/acp/agents/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/auth/login/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/auth/logout/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/auth/status/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cache/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cache/stats/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/backups/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw/auto-order/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/status/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/auth/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/combos/[id]/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/combos/auto/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/combos/metrics/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/combos/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/combos/test/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/compliance/audit-log/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/export/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/exportAll/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/import/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/evals/[suiteId]/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/evals/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/fallback/chains/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/init/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/keys/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/logs/console/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/audit/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/audit/stats/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/sse/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/status/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/stream/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/mcp/tools/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/models/alias/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/models/availability/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/models/catalog/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/models/openrouter-catalog/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/models/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/monitoring/health/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/policies/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/defaults/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/models/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/provider-metrics/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/provider-models/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/refresh/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/providers/client/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/providers/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/providers/test-batch/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/providers/validate/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/rate-limit/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/rate-limits/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/resilience/reset/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/resilience/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/restart/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/sessions/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/settings/background-degradation/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/settings/combo-defaults/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/settings/ip-filter/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/settings/model-aliases/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy/test/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/settings/require-login/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/settings/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/settings/system-prompt/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/settings/task-routing/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/settings/thinking-budget/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/shutdown/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/storage/health/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/sync/cloud/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/sync/initialize/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/tags/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/telemetry/summary/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/token-health/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/translator/detect/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/translator/history/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/translator/load/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/translator/save/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/translator/send/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/translator/translate/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/usage/analytics/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/usage/budget/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/usage/call-logs/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/usage/history/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/usage/logs/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/usage/proxy-logs/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/usage/quota/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-logs/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/api/chat/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/completions/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/embeddings/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/images/generations/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/moderations/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/music/generations/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/rerank/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1/videos/generations/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/route-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/app/landing/{page-75b0c988db383cfc.js → page-8f652c1fbc33efd2.js} +1 -1
- package/app/.next/static/chunks/app/page-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-a4c3bff638878498.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-a4c3bff638878498.js +1 -0
- package/app/.next/static/css/0a5545f707228079.css +1 -0
- package/app/.next/static/vyty8kP9IuZktMt159X9L/_buildManifest.js +1 -0
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next/server/chunks/2901.js +0 -46
- package/app/.next/server/chunks/786.js +0 -135
- package/app/.next/server/chunks/9679.js +0 -1
- package/app/.next/static/chunks/5846-995a9fadc90d26d3.js +0 -2
- package/app/.next/static/chunks/647-27f02a9e225826d5.js +0 -21
- package/app/.next/static/chunks/app/(dashboard)/dashboard/agents/page-4ec5a1458c077143.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-ad968920ad7029fd.js +0 -15
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-c92198822ec0da04.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/page-95e4b5e0bf023d76.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media/page-07cbc45d62a20735.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-23797ed1fe047ef7.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/playground/page-4c93d045288f7d9e.js +0 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-e3a0a2f5334efeed.js +0 -1
- package/app/.next/static/chunks/app/.well-known/agent.json/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/400/layout-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/401/layout-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/403/layout-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/408/layout-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/429/layout-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/500/layout-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/502/layout-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/503/layout-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/_global-error/page-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/_not-found/page-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/a2a/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/a2a/status/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/a2a/tasks/[id]/cancel/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/a2a/tasks/[id]/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/a2a/tasks/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/acp/agents/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/auth/login/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/auth/logout/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/auth/status/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cache/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cache/stats/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/backups/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/openclaw/auto-order/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/status/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/auth/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/combos/[id]/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/combos/auto/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/combos/metrics/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/combos/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/combos/test/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/compliance/audit-log/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/export/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/exportAll/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/import/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/evals/[suiteId]/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/evals/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/fallback/chains/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/init/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/keys/[id]/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/keys/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/logs/console/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/audit/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/audit/stats/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/sse/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/status/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/stream/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/mcp/tools/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/models/alias/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/models/availability/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/models/catalog/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/models/openrouter-catalog/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/models/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/monitoring/health/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/policies/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/defaults/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/models/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/provider-metrics/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/provider-models/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/providers/client/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/providers/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/providers/test-batch/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/providers/validate/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/rate-limit/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/rate-limits/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/resilience/reset/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/resilience/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/restart/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/sessions/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/settings/background-degradation/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/settings/combo-defaults/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/settings/ip-filter/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/settings/model-aliases/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy/test/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/settings/require-login/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/settings/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/settings/system-prompt/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/settings/thinking-budget/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/shutdown/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/storage/health/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/sync/cloud/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/sync/initialize/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/tags/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/telemetry/summary/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/token-health/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/translator/detect/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/translator/history/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/translator/load/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/translator/save/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/translator/send/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/translator/translate/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/usage/analytics/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/usage/budget/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/usage/call-logs/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/usage/history/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/usage/logs/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/usage/proxy-logs/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/usage/quota/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-logs/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/api/chat/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/completions/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/embeddings/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/images/generations/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/moderations/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/music/generations/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/rerank/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1/videos/generations/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/route-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/app/page-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-4fd91743f3ac831d.js +0 -1
- package/app/.next/static/css/f8997b4d505d4a63.css +0 -1
- package/app/.next/static/ig97FitGiiNqfOhrQUGzh/_buildManifest.js +0 -1
- /package/app/.next/static/{ig97FitGiiNqfOhrQUGzh → vyty8kP9IuZktMt159X9L}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=7327,exports.ids=[4755,7327],exports.modules={21020:(a,b,c)=>{c.d(b,{Pt:()=>p,Tr:()=>q,c1:()=>n,kI:()=>r,vk:()=>o});var d=c(22901),e=c(82742),f=c(74163),g=c(27976);function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function i(a){return"string"==typeof a&&a.trim().length>0?a:null}function j(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&a.trim().length>0){let c=Number(a);return Number.isFinite(c)?c:b}return b}function k(a){let b=h(a);return{id:i(b.id)||"",isActive:!0===b.isActive,rateLimitedUntil:i(b.rateLimitedUntil),testStatus:i(b.testStatus),apiKey:i(b.apiKey),accessToken:i(b.accessToken),refreshToken:i(b.refreshToken),tokenExpiresAt:i(b.tokenExpiresAt),expiresAt:i(b.expiresAt),projectId:i(b.projectId),providerSpecificData:h(b.providerSpecificData),lastUsedAt:i(b.lastUsedAt),consecutiveUseCount:j(b.consecutiveUseCount,0),priority:j(b.priority,999),lastError:i(b.lastError),errorCode:"string"==typeof b.errorCode||"number"==typeof b.errorCode?b.errorCode:null,backoffLevel:j(b.backoffLevel,0)}}let l=Promise.resolve(),m=new Map;async function n(a,b=null){let c,h=l;l=new Promise(a=>{c=a});try{let c;await h;let i=await (0,d.getProviderConnections)({provider:a,isActive:!0}),l=(Array.isArray(i)?i:[]).map(k).filter(a=>a.id.length>0);if(g.debug("AUTH",`${a} | total connections: ${l.length}, excludeId: ${b||"none"}`),0===l.length){let b=await (0,d.getProviderConnections)({provider:a}),c=(Array.isArray(b)?b:[]).map(k).filter(a=>a.id.length>0);if(g.debug("AUTH",`${a} | all connections (incl inactive): ${c.length}`),c.length>0){let b=(0,f.UY)(c);if(b)return g.warn("AUTH",`${a} | all ${c.length} accounts rate limited (${(0,f.Qo)(b)})`),{allRateLimited:!0,retryAfter:b,retryAfterHuman:(0,f.Qo)(b)};g.warn("AUTH",`${a} | ${c.length} accounts found but none active`),c.forEach(a=>{g.debug("AUTH",` → ${a.id?.slice(0,8)} | isActive=${a.isActive} | rateLimitedUntil=${a.rateLimitedUntil||"none"} | testStatus=${a.testStatus}`)})}return g.warn("AUTH",`No credentials for ${a}`),null}let m=l.filter(a=>!(b&&a.id===b||(0,f.AO)(a.rateLimitedUntil)));if(g.debug("AUTH",`${a} | available: ${m.length}/${l.length}`),l.forEach(a=>{let c=b&&a.id===b,d=(0,f.AO)(a.rateLimitedUntil);(c||d)&&g.debug("AUTH",` → ${a.id?.slice(0,8)} | ${c?"excluded":""} ${d?`rateLimited until ${a.rateLimitedUntil}`:""}`)}),0===m.length){let b=(0,f.UY)(l);if(b){let c=l.filter(a=>a.rateLimitedUntil&&new Date(a.rateLimitedUntil).getTime()>Date.now()).sort((a,b)=>new Date(a.rateLimitedUntil||0).getTime()-new Date(b.rateLimitedUntil||0).getTime())[0];return g.warn("AUTH",`${a} | all ${l.length} active accounts rate limited (${(0,f.Qo)(b)}) | lastErrorCode=${c?.errorCode}, lastError=${c?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:b,retryAfterHuman:(0,f.Qo)(b),lastError:c?.lastError||null,lastErrorCode:c?.errorCode||null}}return g.warn("AUTH",`${a} | all ${l.length} accounts unavailable`),null}let n=m.filter(a=>!(0,e.DC)(a.id)),o=m.filter(a=>(0,e.DC)(a.id)),p=n.length>0?[...n,...o]:m;o.length>0&&g.debug("AUTH",`${a} | quota-aware: ${n.length} with quota, ${o.length} exhausted`);let q=await (0,d.V7)(),r=q.fallbackStrategy||"fill-first";if("round-robin"===r){let a=j(q.stickyRoundRobinLimit,3),b=[...p].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt).getTime()-new Date(a.lastUsedAt).getTime():-1:1:(a.priority||999)-(b.priority||999))[0],e=b?.consecutiveUseCount||0;b&&b.lastUsedAt&&e<a?(c=b,await (0,d.rj)(c.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(c.consecutiveUseCount||0)+1})):(c=[...p].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt).getTime()-new Date(b.lastUsedAt).getTime():1:-1:(a.priority||999)-(b.priority||999))[0],await (0,d.rj)(c.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else if("p2c"===r)if(p.length<=2)c=p[0];else{let a=Math.floor(Math.random()*p.length),b=Math.floor(Math.random()*(p.length-1));b>=a&&b++;let d=p[a],e=p[b],f=(d.consecutiveUseCount||0)+10*!!d.lastError,g=(e.consecutiveUseCount||0)+10*!!e.lastError;c=f<=g?d:e}else if("random"===r){let a=Math.floor(Math.random()*p.length);c=p[a]}else c="least-used"===r?[...p].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt).getTime()-new Date(b.lastUsedAt).getTime():1:-1:(a.priority||999)-(b.priority||999))[0]:"cost-optimized"===r?[...p].sort((a,b)=>(a.priority||999)-(b.priority||999))[0]:p[0];return{apiKey:c.apiKey,accessToken:c.accessToken,refreshToken:c.refreshToken,expiresAt:c.tokenExpiresAt||c.expiresAt||null,projectId:c.projectId,copilotToken:"string"==typeof c.providerSpecificData.copilotToken?c.providerSpecificData.copilotToken:null,providerSpecificData:c.providerSpecificData,connectionId:c.id,testStatus:c.testStatus,lastError:c.lastError,rateLimitedUntil:c.rateLimitedUntil}}finally{c&&c()}}async function o(a,b,c,e=null,h=null){let i,j=m.get(a)||Promise.resolve();m.set(a,new Promise(a=>{i=a}));try{await j;let i=await (0,d.getProviderConnections)({provider:e}),l=(Array.isArray(i)?i:[]).map(k).filter(a=>a.id.length>0).find(b=>b.id===a),m=l?.backoffLevel||0;if(l?.rateLimitedUntil&&new Date(l.rateLimitedUntil).getTime()>Date.now())return g.info("AUTH",`${a.slice(0,8)} already marked unavailable (until ${l.rateLimitedUntil}), skipping duplicate mark`),{shouldFallback:!0,cooldownMs:new Date(l.rateLimitedUntil).getTime()-Date.now()};let{shouldFallback:n,cooldownMs:o,newBackoffLevel:p,reason:q}=(0,f.hk)(b,c,m,h,e);if(!n)return{shouldFallback:!1,cooldownMs:0};let r=(0,f.vp)(o),s="string"==typeof c?c.slice(0,100):"Provider error";return await (0,d.rj)(a,{rateLimitedUntil:r,testStatus:"unavailable",lastError:s,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:p??m}),e&&h&&o>0&&(0,f.R7)(e,a,h,q||"unknown",o),e&&b&&s&&console.error(`❌ ${e} [${b}]: ${s}`),{shouldFallback:!0,cooldownMs:o}}finally{i&&i(),m.delete(a)}}async function p(a,b){("unavailable"===b.testStatus||b.lastError||b.rateLimitedUntil)&&(await (0,d.rj)(a,{testStatus:"active",lastError:null,lastErrorAt:null,rateLimitedUntil:null,backoffLevel:0}),g.info("AUTH",`Account ${a.slice(0,8)} error cleared`))}function q(a){let b=a.headers.get("Authorization");return b?.startsWith("Bearer ")?b.slice(7):null}async function r(a){return!!a&&await (0,d.ek)(a)}},27976:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>m,error:()=>p,info:()=>n,maskKey:()=>k.s9,request:()=>q,response:()=>r,stream:()=>s,warn:()=>o});var d=c(74552),e=c.n(d),f=c(33873),g=c(29021);function h(){let a="false"!==process.env.LOG_TO_FILE,b=process.env.LOG_FILE_PATH||(0,f.join)(process.cwd(),"logs/application/app.log");return{logToFile:a,logFilePath:b,maxFileSize:function(a){if(!a)return 0x3200000;let b=a.match(/^(\d+)\s*(k|m|g|kb|mb|gb)?$/i);if(!b)return 0x3200000;let c=parseInt(b[1],10);switch((b[2]||"").toLowerCase()){case"k":case"kb":return 1024*c;case"m":case"mb":return 1024*c*1024;case"g":case"gb":return 1024*c*1048576;default:return c}}(process.env.LOG_MAX_FILE_SIZE),retentionDays:parseInt(process.env.LOG_RETENTION_DAYS||String(7),10)}}let i={level:process.env.LOG_LEVEL||"info",base:{service:"omniroute"},timestamp:e().stdTimeFunctions.isoTime,formatters:{level:a=>({level:a})}},j=function(){let a=h(),b=i.level||"info";if(a.logToFile)try{let d=h();if(d.logToFile){var c;let a;c=d.logFilePath,a=(0,f.dirname)(c),(0,g.existsSync)(a)||(0,g.mkdirSync)(a,{recursive:!0}),function(a,b){try{if(!(0,g.existsSync)(a)||(0,g.statSync)(a).size<b)return;let c=(0,f.dirname)(a),d=(0,f.extname)(a),e=(0,f.basename)(a,d),h=new Date,i=`${h.getFullYear()}-${String(h.getMonth()+1).padStart(2,"0")}-${String(h.getDate()).padStart(2,"0")}_${String(h.getHours()).padStart(2,"0")}${String(h.getMinutes()).padStart(2,"0")}${String(h.getSeconds()).padStart(2,"0")}`,j=(0,f.join)(c,`${e}.${i}${d}`);(0,g.renameSync)(a,j)}catch{}}(d.logFilePath,d.maxFileSize),function(a,b){try{let c=(0,f.dirname)(a);if(!(0,g.existsSync)(c))return;let d=(0,f.extname)(a),e=(0,f.basename)(a,d),h=(0,g.readdirSync)(c),i=Date.now()-24*b*36e5;for(let b of h)if(b.startsWith(e+".")&&b.endsWith(d)&&b!==(0,f.basename)(a)){let a=(0,f.join)(c,b);try{(0,g.statSync)(a).mtimeMs<i&&(0,g.unlinkSync)(a)}catch{}}}catch{}}(d.logFilePath,d.retentionDays)}let j=(0,f.resolve)(a.logFilePath);return e()({...i,transport:{targets:[{target:"pino/file",options:{destination:1},level:b},{target:"pino/file",options:{destination:j,mkdir:!0},level:b}]}})}catch(c){console.warn("[logger] Failed to set up file transport, attempting sync fallback...",c?.message||c);try{let c=(0,f.resolve)(a.logFilePath),d=e().destination({dest:c,mkdir:!0,sync:!0});return e()(i,e().multistream([{stream:process.stdout,level:b},{stream:d,level:b}]))}catch(a){console.warn("[logger] Sync fallback also failed, falling back to console only",a?.message||a)}}return e()(i)}();var k=c(89794);let l=j.child({module:"sse"});function m(a,b,c){l.debug({tag:a,...t(c)},b)}function n(a,b,c){l.info({tag:a,...t(c)},b)}function o(a,b,c){l.warn({tag:a,...t(c)},b)}function p(a,b,c){l.error({tag:a,...t(c)},b)}function q(a,b,c){l.info({tag:"HTTP",method:a,path:b,...t(c)},`📥 ${a} ${b}`)}function r(a,b,c){l[a<400?"info":"error"]({tag:"HTTP",status:a,duration:b,...t(c)},`📤 ${a} (${b}ms)`)}function s(a,b){l.debug({tag:"STREAM",event:a,...t(b)},`🌊 ${a}`)}function t(a){return a?"string"==typeof a?{detail:a}:"object"==typeof a?a:{detail:String(a)}:{}}},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},70884:(a,b,c)=>{c.d(b,{S:()=>j});var d=c(21020),e=c(22901),f=c(78790),g=c(71861),h=c(60293),i=c(27976);async function j(a,b){let c=(0,d.Tr)(a);if(!c)return{apiKey:null,apiKeyInfo:null,rejection:null};let j=null;try{j=await (0,e.v9)(c)}catch(a){return i.error("API_POLICY","Failed to fetch API key metadata. Request blocked.",{error:a}),{apiKey:c,apiKeyInfo:null,rejection:(0,g.yj)(h.gx.SERVICE_UNAVAILABLE,"API key policy unavailable")}}if(!j)return{apiKey:c,apiKeyInfo:null,rejection:null};if(b&&j.allowedModels&&j.allowedModels.length>0&&!await (0,e.Oo)(c,b))return{apiKey:c,apiKeyInfo:j,rejection:(0,g.yj)(h.gx.FORBIDDEN,`Model "${b}" is not allowed for this API key`)};if(j.id)try{let a=(0,f.Ik)(j.id);if(!a.allowed)return{apiKey:c,apiKeyInfo:j,rejection:(0,g.yj)(h.gx.RATE_LIMITED,a.reason||"Budget limit exceeded")}}catch(a){return i.error("API_POLICY","Budget check failed. Request blocked.",{error:a}),{apiKey:c,apiKeyInfo:j,rejection:(0,g.yj)(h.gx.SERVICE_UNAVAILABLE,"Budget policy unavailable")}}return{apiKey:c,apiKeyInfo:j,rejection:null}}},78790:(a,b,c)=>{c.d(b,{Ik:()=>j,n5:()=>i,qV:()=>g,uN:()=>k});var d=c(97917);function e(a){if(!Array.isArray(a))return[];let b=[];for(let c of a){if(!c||"object"!=typeof c||Array.isArray(c))continue;let a="number"==typeof c.cost?c.cost:Number(c.cost??0),d="number"==typeof c.timestamp?c.timestamp:Number(c.timestamp??0);Number.isFinite(a)&&Number.isFinite(d)&&b.push({cost:a,timestamp:d})}return b}let f=new Map;function g(a,b){let c={dailyLimitUsd:b.dailyLimitUsd,monthlyLimitUsd:b.monthlyLimitUsd||0,warningThreshold:b.warningThreshold??.8};f.set(a,c);try{(0,d.zd)(a,c)}catch{}}function h(a){if(f.has(a))return f.get(a);try{let b=(0,d.io)(a);if(b)return f.set(a,b),b}catch{}return null}function i(a,b){let c=Date.now();try{(0,d.tv)(a,b,c)}catch{}}function j(a,b=0){let c=h(a);if(!c)return{allowed:!0,dailyUsed:0,dailyLimit:0,warningReached:!1};let f=function(a){let b=new Date;b.setHours(0,0,0,0);let c=b.getTime();try{return e((0,d.qA)(a,c)).reduce((a,b)=>a+b.cost,0)}catch{return 0}}(a),g=f+b,i=g>=c.dailyLimitUsd*c.warningThreshold;return g>c.dailyLimitUsd?{allowed:!1,reason:`Daily budget exceeded: $${g.toFixed(4)} / $${c.dailyLimitUsd.toFixed(2)}`,dailyUsed:f,dailyLimit:c.dailyLimitUsd,warningReached:!0}:{allowed:!0,dailyUsed:f,dailyLimit:c.dailyLimitUsd,warningReached:i}}function k(a){let b=new Date,c=new Date(b);c.setHours(0,0,0,0);let f=new Date(b.getFullYear(),b.getMonth(),1);try{let b=e((0,d.qA)(a,c.getTime())),g=e((0,d.qA)(a,f.getTime())),i=b.reduce((a,b)=>a+b.cost,0),j=g.reduce((a,b)=>a+b.cost,0);return{dailyTotal:i,monthlyTotal:j,totalEntries:g.length,budget:h(a)}}catch{return{dailyTotal:0,monthlyTotal:0,totalEntries:0,budget:h(a)}}}},92556:(a,b,c)=>{c.d(b,{$N:()=>e,J5:()=>d});let d=process.env.CORS_ORIGIN||"*",e={"Access-Control-Allow-Origin":d,"Access-Control-Allow-Methods":"GET, POST, PUT, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, x-api-key, anthropic-version"}},94755:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}}};
|
|
1
|
+
"use strict";exports.id=7327,exports.ids=[4755,7136,7327],exports.modules={21020:(a,b,c)=>{c.d(b,{Pt:()=>p,Tr:()=>q,c1:()=>n,kI:()=>r,vk:()=>o});var d=c(75585),e=c(82742),f=c(74163),g=c(27976);function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function i(a){return"string"==typeof a&&a.trim().length>0?a:null}function j(a,b=0){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&a.trim().length>0){let c=Number(a);return Number.isFinite(c)?c:b}return b}function k(a){let b=h(a);return{id:i(b.id)||"",isActive:!0===b.isActive,rateLimitedUntil:i(b.rateLimitedUntil),testStatus:i(b.testStatus),apiKey:i(b.apiKey),accessToken:i(b.accessToken),refreshToken:i(b.refreshToken),tokenExpiresAt:i(b.tokenExpiresAt),expiresAt:i(b.expiresAt),projectId:i(b.projectId),providerSpecificData:h(b.providerSpecificData),lastUsedAt:i(b.lastUsedAt),consecutiveUseCount:j(b.consecutiveUseCount,0),priority:j(b.priority,999),lastError:i(b.lastError),errorCode:"string"==typeof b.errorCode||"number"==typeof b.errorCode?b.errorCode:null,backoffLevel:j(b.backoffLevel,0)}}let l=Promise.resolve(),m=new Map;async function n(a,b=null){let c,h=l;l=new Promise(a=>{c=a});try{let c;await h;let i=await (0,d.getProviderConnections)({provider:a,isActive:!0}),l=(Array.isArray(i)?i:[]).map(k).filter(a=>a.id.length>0);if(g.debug("AUTH",`${a} | total connections: ${l.length}, excludeId: ${b||"none"}`),0===l.length){let b=await (0,d.getProviderConnections)({provider:a}),c=(Array.isArray(b)?b:[]).map(k).filter(a=>a.id.length>0);if(g.debug("AUTH",`${a} | all connections (incl inactive): ${c.length}`),c.length>0){let b=(0,f.UY)(c);if(b)return g.warn("AUTH",`${a} | all ${c.length} accounts rate limited (${(0,f.Qo)(b)})`),{allRateLimited:!0,retryAfter:b,retryAfterHuman:(0,f.Qo)(b)};g.warn("AUTH",`${a} | ${c.length} accounts found but none active`),c.forEach(a=>{g.debug("AUTH",` → ${a.id?.slice(0,8)} | isActive=${a.isActive} | rateLimitedUntil=${a.rateLimitedUntil||"none"} | testStatus=${a.testStatus}`)})}return g.warn("AUTH",`No credentials for ${a}`),null}let m=l.filter(a=>!(b&&a.id===b||(0,f.AO)(a.rateLimitedUntil)));if(g.debug("AUTH",`${a} | available: ${m.length}/${l.length}`),l.forEach(a=>{let c=b&&a.id===b,d=(0,f.AO)(a.rateLimitedUntil);(c||d)&&g.debug("AUTH",` → ${a.id?.slice(0,8)} | ${c?"excluded":""} ${d?`rateLimited until ${a.rateLimitedUntil}`:""}`)}),0===m.length){let b=(0,f.UY)(l);if(b){let c=l.filter(a=>a.rateLimitedUntil&&new Date(a.rateLimitedUntil).getTime()>Date.now()).sort((a,b)=>new Date(a.rateLimitedUntil||0).getTime()-new Date(b.rateLimitedUntil||0).getTime())[0];return g.warn("AUTH",`${a} | all ${l.length} active accounts rate limited (${(0,f.Qo)(b)}) | lastErrorCode=${c?.errorCode}, lastError=${c?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:b,retryAfterHuman:(0,f.Qo)(b),lastError:c?.lastError||null,lastErrorCode:c?.errorCode||null}}return g.warn("AUTH",`${a} | all ${l.length} accounts unavailable`),null}let n=m.filter(a=>!(0,e.DC)(a.id)),o=m.filter(a=>(0,e.DC)(a.id)),p=n.length>0?[...n,...o]:m;o.length>0&&g.debug("AUTH",`${a} | quota-aware: ${n.length} with quota, ${o.length} exhausted`);let q=await (0,d.V7)(),r=q.fallbackStrategy||"fill-first";if("round-robin"===r){let e=j(q.stickyRoundRobinLimit,3);if(null!==b)c=[...p].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt).getTime()-new Date(b.lastUsedAt).getTime():1:-1:(a.priority||999)-(b.priority||999))[0],g.info("AUTH",`${a} round-robin: FALLBACK MODE - excluded ${b?.slice(0,8)}..., picked LRU ${c.id?.slice(0,8)}...`),await (0,d.rj)(c.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1});else{let b=[...p].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt).getTime()-new Date(a.lastUsedAt).getTime():-1:1:(a.priority||999)-(b.priority||999))[0],f=b?.consecutiveUseCount||0;b&&b.lastUsedAt&&f<e?(c=b,g.debug("AUTH",`${a} round-robin: staying with ${b.id?.slice(0,8)}... (count=${f}/${e})`),await (0,d.rj)(c.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(c.consecutiveUseCount||0)+1})):(c=[...p].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt).getTime()-new Date(b.lastUsedAt).getTime():1:-1:(a.priority||999)-(b.priority||999))[0],g.debug("AUTH",`${a} round-robin: switching to LRU ${c.id?.slice(0,8)}... (current count=${f} >= limit=${e} or no lastUsedAt)`),await (0,d.rj)(c.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}}else if("p2c"===r)if(p.length<=2)c=p[0];else{let a=Math.floor(Math.random()*p.length),b=Math.floor(Math.random()*(p.length-1));b>=a&&b++;let d=p[a],e=p[b],f=(d.consecutiveUseCount||0)+10*!!d.lastError,g=(e.consecutiveUseCount||0)+10*!!e.lastError;c=f<=g?d:e}else if("random"===r){let a=Math.floor(Math.random()*p.length);c=p[a]}else c="least-used"===r?[...p].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt).getTime()-new Date(b.lastUsedAt).getTime():1:-1:(a.priority||999)-(b.priority||999))[0]:"cost-optimized"===r?[...p].sort((a,b)=>(a.priority||999)-(b.priority||999))[0]:p[0];return{apiKey:c.apiKey,accessToken:c.accessToken,refreshToken:c.refreshToken,expiresAt:c.tokenExpiresAt||c.expiresAt||null,projectId:c.projectId,copilotToken:"string"==typeof c.providerSpecificData.copilotToken?c.providerSpecificData.copilotToken:null,providerSpecificData:c.providerSpecificData,connectionId:c.id,testStatus:c.testStatus,lastError:c.lastError,rateLimitedUntil:c.rateLimitedUntil}}finally{c&&c()}}async function o(a,b,c,e=null,h=null){let i,j=m.get(a)||Promise.resolve();m.set(a,new Promise(a=>{i=a}));try{await j;let i=await (0,d.getProviderConnections)({provider:e}),l=(Array.isArray(i)?i:[]).map(k).filter(a=>a.id.length>0).find(b=>b.id===a),m=l?.backoffLevel||0;if(l?.rateLimitedUntil&&new Date(l.rateLimitedUntil).getTime()>Date.now())return g.info("AUTH",`${a.slice(0,8)} already marked unavailable (until ${l.rateLimitedUntil}), skipping duplicate mark`),{shouldFallback:!0,cooldownMs:new Date(l.rateLimitedUntil).getTime()-Date.now()};let{shouldFallback:n,cooldownMs:o,newBackoffLevel:p,reason:q}=(0,f.hk)(b,c,m,h,e);if(!n)return{shouldFallback:!1,cooldownMs:0};let r=(0,f.vp)(o),s="string"==typeof c?c.slice(0,100):"Provider error";return await (0,d.rj)(a,{rateLimitedUntil:r,testStatus:"unavailable",lastError:s,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:p??m}),e&&h&&o>0&&(0,f.R7)(e,a,h,q||"unknown",o),e&&b&&s&&console.error(`❌ ${e} [${b}]: ${s}`),{shouldFallback:!0,cooldownMs:o}}finally{i&&i(),m.delete(a)}}async function p(a,b){("unavailable"===b.testStatus||b.lastError||b.rateLimitedUntil)&&(await (0,d.rj)(a,{testStatus:"active",lastError:null,lastErrorAt:null,rateLimitedUntil:null,backoffLevel:0}),g.info("AUTH",`Account ${a.slice(0,8)} error cleared`))}function q(a){let b=a.headers.get("Authorization");return b?.startsWith("Bearer ")?b.slice(7):null}async function r(a){return!!a&&await (0,d.ek)(a)}},27976:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>m,error:()=>p,info:()=>n,maskKey:()=>k.s9,request:()=>q,response:()=>r,stream:()=>s,warn:()=>o});var d=c(74552),e=c.n(d),f=c(33873),g=c(29021);function h(){let a="false"!==process.env.LOG_TO_FILE,b=process.env.LOG_FILE_PATH||(0,f.join)(process.cwd(),"logs/application/app.log");return{logToFile:a,logFilePath:b,maxFileSize:function(a){if(!a)return 0x3200000;let b=a.match(/^(\d+)\s*(k|m|g|kb|mb|gb)?$/i);if(!b)return 0x3200000;let c=parseInt(b[1],10);switch((b[2]||"").toLowerCase()){case"k":case"kb":return 1024*c;case"m":case"mb":return 1024*c*1024;case"g":case"gb":return 1024*c*1048576;default:return c}}(process.env.LOG_MAX_FILE_SIZE),retentionDays:parseInt(process.env.LOG_RETENTION_DAYS||String(7),10)}}let i={level:process.env.LOG_LEVEL||"info",base:{service:"omniroute"},timestamp:e().stdTimeFunctions.isoTime,formatters:{level:a=>({level:a})}},j=function(){let a=h(),b=i.level||"info";if(a.logToFile)try{let d=h();if(d.logToFile){var c;let a;c=d.logFilePath,a=(0,f.dirname)(c),(0,g.existsSync)(a)||(0,g.mkdirSync)(a,{recursive:!0}),function(a,b){try{if(!(0,g.existsSync)(a)||(0,g.statSync)(a).size<b)return;let c=(0,f.dirname)(a),d=(0,f.extname)(a),e=(0,f.basename)(a,d),h=new Date,i=`${h.getFullYear()}-${String(h.getMonth()+1).padStart(2,"0")}-${String(h.getDate()).padStart(2,"0")}_${String(h.getHours()).padStart(2,"0")}${String(h.getMinutes()).padStart(2,"0")}${String(h.getSeconds()).padStart(2,"0")}`,j=(0,f.join)(c,`${e}.${i}${d}`);(0,g.renameSync)(a,j)}catch{}}(d.logFilePath,d.maxFileSize),function(a,b){try{let c=(0,f.dirname)(a);if(!(0,g.existsSync)(c))return;let d=(0,f.extname)(a),e=(0,f.basename)(a,d),h=(0,g.readdirSync)(c),i=Date.now()-24*b*36e5;for(let b of h)if(b.startsWith(e+".")&&b.endsWith(d)&&b!==(0,f.basename)(a)){let a=(0,f.join)(c,b);try{(0,g.statSync)(a).mtimeMs<i&&(0,g.unlinkSync)(a)}catch{}}}catch{}}(d.logFilePath,d.retentionDays)}let j=(0,f.resolve)(a.logFilePath);return e()({...i,transport:{targets:[{target:"pino/file",options:{destination:1},level:b},{target:"pino/file",options:{destination:j,mkdir:!0},level:b}]}})}catch(c){console.warn("[logger] Failed to set up file transport, attempting sync fallback...",c?.message||c);try{let c=(0,f.resolve)(a.logFilePath),d=e().destination({dest:c,mkdir:!0,sync:!0});return e()(i,e().multistream([{stream:process.stdout,level:b},{stream:d,level:b}]))}catch(a){console.warn("[logger] Sync fallback also failed, falling back to console only",a?.message||a)}}return e()(i)}();var k=c(89794);let l=j.child({module:"sse"});function m(a,b,c){l.debug({tag:a,...t(c)},b)}function n(a,b,c){l.info({tag:a,...t(c)},b)}function o(a,b,c){l.warn({tag:a,...t(c)},b)}function p(a,b,c){l.error({tag:a,...t(c)},b)}function q(a,b,c){l.info({tag:"HTTP",method:a,path:b,...t(c)},`📥 ${a} ${b}`)}function r(a,b,c){l[a<400?"info":"error"]({tag:"HTTP",status:a,duration:b,...t(c)},`📤 ${a} (${b}ms)`)}function s(a,b){l.debug({tag:"STREAM",event:a,...t(b)},`🌊 ${a}`)}function t(a){return a?"string"==typeof a?{detail:a}:"object"==typeof a?a:{detail:String(a)}:{}}},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},70884:(a,b,c)=>{c.d(b,{S:()=>j});var d=c(21020),e=c(75585),f=c(78790),g=c(71861),h=c(60293),i=c(27976);async function j(a,b){let c=(0,d.Tr)(a);if(!c)return{apiKey:null,apiKeyInfo:null,rejection:null};let j=null;try{j=await (0,e.v9)(c)}catch(a){return i.error("API_POLICY","Failed to fetch API key metadata. Request blocked.",{error:a}),{apiKey:c,apiKeyInfo:null,rejection:(0,g.yj)(h.gx.SERVICE_UNAVAILABLE,"API key policy unavailable")}}if(!j)return{apiKey:c,apiKeyInfo:null,rejection:null};if(b&&j.allowedModels&&j.allowedModels.length>0&&!await (0,e.Oo)(c,b))return{apiKey:c,apiKeyInfo:j,rejection:(0,g.yj)(h.gx.FORBIDDEN,`Model "${b}" is not allowed for this API key`)};if(j.id)try{let a=(0,f.Ik)(j.id);if(!a.allowed)return{apiKey:c,apiKeyInfo:j,rejection:(0,g.yj)(h.gx.RATE_LIMITED,a.reason||"Budget limit exceeded")}}catch(a){return i.error("API_POLICY","Budget check failed. Request blocked.",{error:a}),{apiKey:c,apiKeyInfo:j,rejection:(0,g.yj)(h.gx.SERVICE_UNAVAILABLE,"Budget policy unavailable")}}return{apiKey:c,apiKeyInfo:j,rejection:null}}},78790:(a,b,c)=>{c.d(b,{Ik:()=>j,n5:()=>i,qV:()=>g,uN:()=>k});var d=c(97917);function e(a){if(!Array.isArray(a))return[];let b=[];for(let c of a){if(!c||"object"!=typeof c||Array.isArray(c))continue;let a="number"==typeof c.cost?c.cost:Number(c.cost??0),d="number"==typeof c.timestamp?c.timestamp:Number(c.timestamp??0);Number.isFinite(a)&&Number.isFinite(d)&&b.push({cost:a,timestamp:d})}return b}let f=new Map;function g(a,b){let c={dailyLimitUsd:b.dailyLimitUsd,monthlyLimitUsd:b.monthlyLimitUsd||0,warningThreshold:b.warningThreshold??.8};f.set(a,c);try{(0,d.zd)(a,c)}catch{}}function h(a){if(f.has(a))return f.get(a);try{let b=(0,d.io)(a);if(b)return f.set(a,b),b}catch{}return null}function i(a,b){let c=Date.now();try{(0,d.tv)(a,b,c)}catch{}}function j(a,b=0){let c=h(a);if(!c)return{allowed:!0,dailyUsed:0,dailyLimit:0,warningReached:!1};let f=function(a){let b=new Date;b.setHours(0,0,0,0);let c=b.getTime();try{return e((0,d.qA)(a,c)).reduce((a,b)=>a+b.cost,0)}catch{return 0}}(a),g=f+b,i=g>=c.dailyLimitUsd*c.warningThreshold;return g>c.dailyLimitUsd?{allowed:!1,reason:`Daily budget exceeded: $${g.toFixed(4)} / $${c.dailyLimitUsd.toFixed(2)}`,dailyUsed:f,dailyLimit:c.dailyLimitUsd,warningReached:!0}:{allowed:!0,dailyUsed:f,dailyLimit:c.dailyLimitUsd,warningReached:i}}function k(a){let b=new Date,c=new Date(b);c.setHours(0,0,0,0);let f=new Date(b.getFullYear(),b.getMonth(),1);try{let b=e((0,d.qA)(a,c.getTime())),g=e((0,d.qA)(a,f.getTime())),i=b.reduce((a,b)=>a+b.cost,0),j=g.reduce((a,b)=>a+b.cost,0);return{dailyTotal:i,monthlyTotal:j,totalEntries:g.length,budget:h(a)}}catch{return{dailyTotal:0,monthlyTotal:0,totalEntries:0,budget:h(a)}}}},92556:(a,b,c)=>{c.d(b,{$N:()=>e,J5:()=>d});let d=process.env.CORS_ORIGIN||"*",e={"Access-Control-Allow-Origin":d,"Access-Control-Allow-Methods":"GET, POST, PUT, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, x-api-key, anthropic-version"}},94755:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}}};
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
`))}}k>=1e3&&console.warn("[Kiro] Max iterations reached in event parsing")},flush(a){if(!g.finishEmitted){g.finishEmitted=!0;let c={id:e,object:"chat.completion.chunk",created:f,model:b,choices:[{index:0,delta:{},finish_reason:g.hasToolCalls?"tool_calls":"stop"}]};a.enqueue(new TextEncoder().encode(`data: ${JSON.stringify(c)}
|
|
14
14
|
|
|
15
|
-
`))}a.enqueue(new TextEncoder().encode("data: [DONE]\n\n"))}});return new Response(a.body.pipeThrough(h),{status:a.status,statusText:a.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}async refreshCredentials(a,b){if(!a.refreshToken)return null;try{return await (0,g.Ql)(a.refreshToken,a.providerSpecificData,b)}catch(c){let a=c instanceof Error?c:Error(String(c));return b?.error?.("TOKEN",`Kiro refresh error: ${a.message}`),null}}}},37544:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{SB:()=>n});var e=c(14938),f=c(24978),g=c(39033),h=c(71751),i=c(36589),j=c(93831),k=c(93792),l=c(18221);c(39859);var m=a([k]);k=(m.then?(await m)():m)[0];let o={antigravity:new e.c,"gemini-cli":new f.V,github:new g.x,iflow:new h.r,kiro:new i.B,codex:new j.T,cursor:new k.o,cu:new k.o},p=new Map;function n(a){return o[a]?o[a]:(p.has(a)||p.set(a,new l.L(a)),p.get(a))}d()}catch(a){d(a)}})},39033:(a,b,c)=>{c.d(b,{x:()=>g});var d=c(39859),e=c(60293),f=c(23969);class g extends d.H{constructor(){super("github",e.xq.github)}buildUrl(a,b,c=0){return"openai-responses"===(0,f.ux)("gh",a)?this.config.responsesBaseUrl||this.config.baseUrl?.replace(/\/chat\/completions\/?$/,"/responses")||"https://api.githubcopilot.com/responses":this.config.baseUrl}buildHeaders(a,b=!0){let c=a.copilotToken||a.accessToken;return{Authorization:`Bearer ${c}`,"Content-Type":"application/json","copilot-integration-id":"vscode-chat","editor-version":"vscode/1.107.1","editor-plugin-version":"copilot-chat/0.26.7","user-agent":"GitHubCopilotChat/0.26.7","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-request-id":crypto.randomUUID?.()||`${Date.now()}-${Math.random().toString(36).slice(2)}`,"x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:b?"text/event-stream":"application/json"}}async refreshCopilotToken(a,b){try{let c=await fetch("https://api.github.com/copilot_internal/v2/token",{headers:{Authorization:`token ${a}`,"User-Agent":"GithubCopilot/1.0","Editor-Version":"vscode/1.100.0","Editor-Plugin-Version":"copilot/1.300.0",Accept:"application/json"}});if(!c.ok)return null;let d=await c.json();return b?.info?.("TOKEN","Copilot token refreshed"),{token:d.token,expiresAt:d.expires_at}}catch(a){return b?.error?.("TOKEN",`Copilot refresh error: ${a.message}`),null}}async refreshGitHubToken(a,b){try{let c=await fetch(e.NA.github.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:this.config.clientId,client_secret:this.config.clientSecret})});if(!c.ok)return null;let d=await c.json();return b?.info?.("TOKEN","GitHub token refreshed"),{accessToken:d.access_token,refreshToken:d.refresh_token||a,expiresIn:d.expires_in}}catch(a){return b?.error?.("TOKEN",`GitHub refresh error: ${a.message}`),null}}async refreshCredentials(a,b){let c=await this.refreshCopilotToken(a.accessToken,b);if(!c&&a.refreshToken){let d=await this.refreshGitHubToken(a.refreshToken,b);if(d?.accessToken)return(c=await this.refreshCopilotToken(d.accessToken,b))?{...d,copilotToken:c.token,copilotTokenExpiresAt:c.expiresAt}:d}return c?{accessToken:a.accessToken,refreshToken:a.refreshToken,copilotToken:c.token,copilotTokenExpiresAt:c.expiresAt}:null}needsRefresh(a){if(!a.copilotToken)return!0;if(a.copilotTokenExpiresAt){let b=a.copilotTokenExpiresAt;if("number"==typeof b&&b<1e12?b*=1e3:"string"==typeof b&&(b=new Date(b).getTime()),b-Date.now()<3e5)return!0}return super.needsRefresh(a)}}},39859:(a,b,c)=>{c.d(b,{H:()=>f});var d=c(60293),e=c(78103);class f{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}buildUrl(a,b,c=0,d=null){if(this.provider?.startsWith?.("openai-compatible-")){let a=("string"==typeof d?.providerSpecificData?.baseUrl?d.providerSpecificData.baseUrl:"https://api.openai.com/v1").replace(/\/$/,""),b=this.provider.includes("responses")?"/responses":"/chat/completions";return`${a}${b}`}let e=this.getBaseUrls();return e[c]||e[0]||this.config.baseUrl}buildHeaders(a,b=!0){let c={"Content-Type":"application/json",...this.config.headers},d=this.config?.id||this.provider;if(d){let a=`${d.toUpperCase().replace(/[^A-Z0-9]/g,"_")}_USER_AGENT`,b=process.env[a]?.trim();b&&(c["User-Agent"]=b,c["user-agent"]&&(c["user-agent"]=b))}return a.accessToken?c.Authorization=`Bearer ${a.accessToken}`:a.apiKey&&(c.Authorization=`Bearer ${a.apiKey}`),b&&(c.Accept="text/event-stream"),c}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}}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}`}}async execute({model:a,body:b,stream:c,credentials:g,signal:h,log:i,extendedContext:j}){let k=this.getFallbackCount(),l=null,m=0,n={};for(let o=0;o<k;o++){let p=this.buildUrl(a,c,o,g),q=this.buildHeaders(g,c);if(j){let b=["claude-opus-4-6","claude-sonnet-4-6","claude-sonnet-4-5","claude-sonnet-4"],c=a.replace(/-\d{8}$/,"");if(b.some(b=>c===b||a===b||a.startsWith(b))){let a=q["Anthropic-Beta"];a?q["Anthropic-Beta"]=a+",context-1m-2025-08-07":q["Anthropic-Beta"]="context-1m-2025-08-07"}}let r=this.transformRequest(a,b,c,g);try{let a=c?null:AbortSignal.timeout(d.MT),b=h&&a?function(a,b){let c=new AbortController,d=()=>{c.signal.aborted||c.abort()};return a.aborted||b.aborted?d():(a.addEventListener("abort",d,{once:!0}),b.addEventListener("abort",d,{once:!0})),c.signal}(h,a):h||a,g=q,j=JSON.stringify(r);if((0,e.IL)(this.provider)){let a=(0,e.BI)(this.provider,q,r);g=a.headers,j=a.bodyString}let k={method:"POST",headers:g,body:j};b&&(k.signal=b);let l=await fetch(p,k);if(l.status===d.gx.RATE_LIMITED&&(n[o]??0)<f.RETRY_CONFIG.maxAttempts){n[o]=(n[o]??0)+1;let a=n[o];i?.debug?.("RETRY",`429 intra-retry ${a}/${f.RETRY_CONFIG.maxAttempts} on ${p} — waiting ${f.RETRY_CONFIG.delayMs}ms`),await new Promise(a=>setTimeout(a,f.RETRY_CONFIG.delayMs)),o--;continue}if(this.shouldRetry(l.status,o)){i?.debug?.("RETRY",`${l.status} on ${p}, trying fallback ${o+1}`),m=l.status;continue}return{response:l,url:p,headers:q,transformedBody:r}}catch(b){let a=b instanceof Error?b:Error(String(b));if("TimeoutError"===a.name&&i?.warn?.("TIMEOUT",`Fetch timeout after ${d.MT}ms on ${p}`),l=a,o+1<k){i?.debug?.("RETRY",`Error on ${p}, trying fallback ${o+1}`);continue}throw a}}throw l||Error(`All ${k} URLs failed with status ${m}`)}}},50101:(a,b,c)=>{c.d(b,{Gh:()=>j,IF:()=>n,O9:()=>g,OF:()=>m,WL:()=>h,f5:()=>k,lm:()=>f});var d=c(19704),e=c(55120);let f={reset:"\x1b[0m",red:"\x1b[31m",green:"\x1b[32m",yellow:"\x1b[33m",blue:"\x1b[34m",cyan:"\x1b[36m"};function g(a){if(!a||"object"!=typeof a)return a;let b={...a};return void 0!==b.input_tokens&&(b.input_tokens+=2e3),void 0!==b.prompt_tokens&&(b.prompt_tokens+=2e3),void 0!==b.total_tokens?b.total_tokens+=2e3:void 0!==b.prompt_tokens&&void 0!==b.completion_tokens&&(b.total_tokens=b.prompt_tokens+b.completion_tokens),b}function h(a,b){if(!a||"object"!=typeof a)return a;let c={[e.h.CLAUDE]:["input_tokens","output_tokens","cache_read_input_tokens","cache_creation_input_tokens","estimated"],[e.h.GEMINI]:["promptTokenCount","candidatesTokenCount","totalTokenCount","cachedContentTokenCount","thoughtsTokenCount","estimated"],[e.h.OPENAI_RESPONSES]:["input_tokens","output_tokens","input_tokens_details","output_tokens_details","estimated"],default:["prompt_tokens","completion_tokens","total_tokens","cached_tokens","reasoning_tokens","prompt_tokens_details","completion_tokens_details","estimated"]},d=c[b];b===e.h.GEMINI_CLI||b===e.h.ANTIGRAVITY?d=c[e.h.GEMINI]:b===e.h.OPENAI_RESPONSE?d=c[e.h.OPENAI_RESPONSES]:d||(d=c.default);let f={};for(let b of d)void 0!==a[b]&&(f[b]=a[b]);return f}function i(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b={},c=(a,c)=>{if(null==c)return;let d=Number(c);Number.isFinite(d)&&(b[a]=d)};return(c("prompt_tokens",a?.prompt_tokens),c("completion_tokens",a?.completion_tokens),c("total_tokens",a?.total_tokens),c("cache_read_input_tokens",a?.cache_read_input_tokens),c("cache_creation_input_tokens",a?.cache_creation_input_tokens),c("cached_tokens",a?.cached_tokens),c("reasoning_tokens",a?.reasoning_tokens),0===Object.keys(b).length)?null:b}function j(a){if(!a||"object"!=typeof a)return!1;for(let b of["prompt_tokens","completion_tokens","total_tokens","input_tokens","output_tokens","promptTokenCount","candidatesTokenCount"])if("number"==typeof a[b]&&a[b]>0)return!0;return!1}function k(a){if(!a||"object"!=typeof a)return null;if("message_delta"===a.type&&a.usage&&"object"==typeof a.usage)return i({prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens});if(("response.completed"===a.type||"response.done"===a.type)&&a.response?.usage&&"object"==typeof a.response.usage){let b=a.response.usage;return i({prompt_tokens:b.input_tokens||b.prompt_tokens||0,completion_tokens:b.output_tokens||b.completion_tokens||0,cached_tokens:b.input_tokens_details?.cached_tokens,reasoning_tokens:b.output_tokens_details?.reasoning_tokens})}return a.usage&&"object"==typeof a.usage&&void 0!==a.usage.prompt_tokens?i({prompt_tokens:a.usage.prompt_tokens,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens}):a.usageMetadata&&"object"==typeof a.usageMetadata?i({prompt_tokens:a.usageMetadata?.promptTokenCount||0,completion_tokens:a.usageMetadata?.candidatesTokenCount||0,total_tokens:a.usageMetadata?.totalTokenCount,cached_tokens:a.usageMetadata?.cachedContentTokenCount,reasoning_tokens:a.usageMetadata?.thoughtsTokenCount}):null}function l(a){if(!a||"string"!=typeof a)return 0;let b=a.match(/[\u3000-\u9fff\uf900-\ufaff\u{20000}-\u{2fa1f}]/gu);return(b?b.length:0)+Math.ceil(1.3*a.replace(/[\u3000-\u9fff\uf900-\ufaff]/g," ").split(/(\s+|[^\w\s]|(?<=[a-z])(?=[A-Z]))/).filter(a=>a&&a.trim().length>0).length)}function m(a,b,c=e.h.OPENAI){var d,f;return d=function(a){if(!a||"object"!=typeof a)return 0;try{let b=0,c=0;if(a.tools&&Array.isArray(a.tools)){let d=JSON.stringify(a.tools);b=Math.ceil(d.length/6);let{tools:e,...f}=a;c=l(JSON.stringify(f))}else c=l(JSON.stringify(a));return c+b}catch(a){return 0}}(a),f=b&&!(b<=0)?Math.max(1,Math.ceil(b/3.5)):0,c===e.h.CLAUDE?g({input_tokens:d,output_tokens:f,estimated:!0}):g({prompt_tokens:d,completion_tokens:f,total_tokens:d+f,estimated:!0})}function n(a,b,c=null,e=null,g=null){if(!b||"object"!=typeof b)return;let h=a?.toUpperCase()||"UNKNOWN",i=b?.prompt_tokens||b?.input_tokens||0,j=b?.completion_tokens||b?.output_tokens||0,k=e?e.slice(0,8)+"...":"unknown",l=`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}] 📊 ${f.green}[USAGE] ${h} | in=${i} | out=${j} | account=${k}${f.reset}`;b.estimated&&(l+=` ${f.yellow}(estimated)${f.reset}`);let m=b.cache_read_input_tokens||b.cached_tokens;m&&(l+=` | cache_read=${m}`);let o=b.cache_creation_input_tokens;o&&(l+=` | cache_create=${o}`);let p=b.reasoning_tokens;p&&(l+=` | reasoning=${p}`),console.log(l);let q={input:i,output:j,cacheRead:m||0,cacheCreation:o||0,reasoning:p||0};(0,d.sZ)({model:c,provider:a,connectionId:e,apiKeyId:g?.id||void 0,apiKeyName:g?.name||void 0,tokens:q}).catch(()=>{}),(0,d.E5)({model:c,provider:a,connectionId:e,tokens:q,status:"200 OK"}).catch(()=>{})}},51082:(a,b,c)=>{c.d(b,{CP:()=>r,yI:()=>o});var d=c(94755),e=c(74075),f=c.n(e);let g="1"===process.env.CURSOR_PROTOBUF_DEBUG,h=(a,...b)=>g&&console.log(`[PROTOBUF:${a}]`,...b),i=new TextDecoder,j="1.1.3",k=new Set([1,2,3,9,10,11,27,1,25]);function l(a){let b=[];for(;a>=128;)b.push(127&a|128),a>>>=7;return b.push(127&a),new Uint8Array(b)}function m(a,b,c){let d=l(a<<3|b);if(0===b)return n(d,l(c));if(2===b){let a="string"==typeof c?new TextEncoder().encode(c):c instanceof Uint8Array?c:Buffer.isBuffer(c)?new Uint8Array(c):new Uint8Array(0);return n(d,l(a.length),a)}return new Uint8Array(0)}function n(...a){let b=new Uint8Array(a.reduce((a,b)=>a+b.length,0)),c=0;for(let d of a)b.set(d,c),c+=d.length;return b}function o(a,b,c=[],e=null){h("BODY",`Generating: ${a.length} msgs, model=${b}, tools=${c.length}, reasoning=${e||"none"}`);let g=function(a,b,c=[],e=null){return m(1,2,function(a,b,c=[],e=null){let f,g=c?.length>0,i=[],j=[],k=[];for(let b=0;b<a.length;b++){let c=a[b],d=Array.isArray(c?.tool_calls)&&c.tool_calls.length>0,e=Array.isArray(c?.tool_results)&&c.tool_results.length>0;if(c?.role==="assistant"&&d&&e){h("ENCODE",`normalizing mixed assistant tool payload at msg[${b}] (calls=${c.tool_calls.length}, results=${c.tool_results.length})`),k.push({...c,tool_results:[]});let d=a[b+1],e=d?.role==="assistant"&&Array.isArray(d?.tool_results)&&d.tool_results.length>0,f=new Set(c.tool_results.map(a=>a?.tool_call_id).filter(a=>"string"==typeof a)),g=new Set((d?.tool_results||[]).map(a=>a?.tool_call_id).filter(a=>"string"==typeof a)),i=f.size>0&&f.size===g.size;if(i){for(let a of f)if(!g.has(a)){i=!1;break}}e&&i||k.push({role:"assistant",content:"",tool_results:c.tool_results});continue}k.push(c)}for(let a=0;a<k.length;a++){let b=k[a],c="user"===b.role?1:2,e=(0,d.A)(),f=a===k.length-1;i.push({content:b.content,role:c,messageId:e,isLast:f,hasTools:g,toolResults:b.tool_results||[]}),j.push({messageId:e,role:c})}let o=0;return"medium"===e?o=1:"high"===e&&(o=2),n(...i.map(a=>m(1,2,function(a,b,c,d=null,e=!1,f=!1,g=[]){return n(m(1,2,a),m(2,0,b),m(13,2,c),...g.length>0?g.map(a=>m(18,2,function(a){var b,c,d,e,f;let g,{toolCallId:h,modelCallId:i}=function(a){if("string"!=typeof a||0===a.length)return{toolCallId:"",modelCallId:null};let b="\nmc_",c=a.indexOf(b);return c>=0?{toolCallId:a.slice(0,c),modelCallId:a.slice(c+b.length)}:{toolCallId:a,modelCallId:null}}(a.tool_call_id||""),j=function(a){let b="string"==typeof a&&a.length>0?a:"tool";if(b.startsWith("mcp__")){let a=b.slice(5),c=a.indexOf("__");if(c>=0){let b=a.slice(0,c)||"custom",d=a.slice(c+2)||"tool";return`mcp_${b}_${d}`}return`mcp_custom_${a||"tool"}`}return b.startsWith("mcp_")?b:`mcp_custom_${b}`}(a.name||""),{selectedTool:k,serverName:l}=function(a){if("string"!=typeof a||!a.startsWith("mcp_"))return{serverName:"custom",selectedTool:a||"tool"};let b=a.slice(4),c=b.indexOf("_");return c<0?{serverName:"custom",selectedTool:b||"tool"}:{serverName:b.slice(0,c)||"custom",selectedTool:b.slice(c+1)||"tool"}}(j),o=a.index>0?a.index:1,p=a.raw_args||"{}",q=(b=h,c=i,d=k,e=o,f=a.result||"",g=n(m(1,2,"string"==typeof d&&d.length>0?d:"tool"),m(2,2,"string"==typeof f?f:"")),n(m(1,0,19),m(28,2,g),...b?[m(35,2,b)]:[],...c?[m(48,2,c)]:[],m(49,0,e))),r=function(a,b,c,d,e,f,g){let h;return n(m(1,0,19),m(27,2,(h=n(m(1,2,d||"tool"),m(3,2,f||"{}"),m(4,2,e||"custom")),m(1,2,h))),...a?[m(3,2,a)]:[],m(9,2,c||"tool"),m(10,2,f||"{}"),m(48,0,g>0?g:1),...b?[m(49,2,b)]:[])}(h,i,j,k,l,p,o);return n(m(1,2,h),m(2,2,j),m(3,0,o),...i?[m(12,2,i)]:[],m(5,2,p),...q?[m(8,2,q)]:[],m(11,2,r))}(a))):[],m(29,0,+!!f),m(47,0,f?2:1),...e&&f?[m(51,2,l(1))]:[])}(a.content,a.role,a.messageId,null,a.isLast,a.hasTools,a.toolResults))),m(2,0,1),m(3,2,new Uint8Array(0)),m(4,0,1),m(5,2,n(m(1,2,b),m(4,2,new Uint8Array(0)))),m(8,2,""),m(13,0,1),m(15,2,(f=n(m(1,2,new Uint8Array(0)),m(2,2,new Uint8Array(0))),n(m(1,2,"cursor\\aisettings"),m(3,2,new Uint8Array(0)),m(6,2,f),m(8,0,1),m(9,0,1)))),m(19,0,1),m(23,2,(0,d.A)()),m(26,2,n(m(1,2,process.platform||"linux"),m(2,2,process.arch||"x64"),m(3,2,process.version||"v20.0.0"),m(4,2,process.cwd?.()||"/"),m(5,2,new Date().toISOString()))),m(27,0,+!!g),...g?[m(29,2,l(1))]:[],...j.map(a=>m(30,2,function(a,b,c=null){return n(m(1,2,a),...c?[m(2,2,c)]:[],m(3,0,b))}(a.messageId,a.role))),...c?.length>0?c.map(a=>{let b,c,d;return m(34,2,(b=a.function?.name||a.name||"",c=a.function?.description||a.description||"",d=a.function?.parameters||a.input_schema||{},n(...b?[m(1,2,b)]:[],...c?[m(2,2,c)]:[],...Object.keys(d).length>0?[m(3,2,JSON.stringify(d))]:[],m(4,2,"custom"))))}):[],m(35,0,0),m(38,0,0),m(46,0,g?2:1),m(47,2,""),m(48,0,+!g),m(49,0,o),m(51,0,0),m(53,0,1),m(54,2,g?"Agent":"Ask"))}(a,b,c,e))}(a,b,c,e),i=function(a,b=!1){let c=a,d=0;b&&(c=new Uint8Array(f().gzipSync(Buffer.from(a))),d=1);let e=new Uint8Array(5+c.length);return e[0]=d,e[1]=c.length>>24&255,e[2]=c.length>>16&255,e[3]=c.length>>8&255,e[4]=255&c.length,e.set(c,5),e}(g,!1);return h("BODY",`Protobuf=${g.length}B, Framed=${i.length}B`),i}function p(a,b){let c=0,d=0,e=b;for(;e<a.length;){let b=a[e];if(c|=(127&b)<<d,e++,!(128&b))break;d+=7}return[c,e]}function q(a){let b=new Map,c=0;for(;c<a.length;){let[d,e,f,g]=function(a,b){let c;if(b>=a.length)return[null,null,null,b];let[d,e]=p(a,b),f=7&d,g=e;if(0===f)[c,g]=p(a,g);else if(2===f){let[b,d]=p(a,g);c=a.slice(d,d+b),g=d+b}else 1===f?(c=a.slice(g,g+8),g+=8):5===f?(c=a.slice(g,g+4),g+=4):c=null;return[d>>3,f,c,g]}(a,c);if(null===d)break;b.has(d)||b.set(d,[]),b.get(d).push({wireType:e,value:f}),c=g}return b}function r(a){try{let b=q(a);for(let a of b.keys())k.has(a)||h("SCHEMA",`Unknown response field #${a} detected. Schema v${j} may be outdated.`);if(b.has(1)){let a=function(a){let b=q(a),c="",d="",e="",f=!1;if(b.has(3)&&(c=i.decode(b.get(3)[0].value)),b.has(9)&&(d=i.decode(b.get(9)[0].value)),b.has(11)?f=0!==b.get(11)[0].value:b.has(15)&&(f=0!==b.get(15)[0].value),b.has(27))try{let a=q(b.get(27)[0].value);if(a.has(1)){let b=q(a.get(1)[0].value);b.has(1)&&(d=i.decode(b.get(1)[0].value)),b.has(3)&&(e=i.decode(b.get(3)[0].value))}}catch(a){h("EXTRACT",`MCP parse error: ${a.message}`)}return(!e&&b.has(10)&&(e=i.decode(b.get(10)[0].value)),c&&d)?{id:c,type:"function",function:{name:d,arguments:e||"{}"},isLast:f}:null}(b.get(1)[0].value);if(a)return h("EXTRACT",`Tool call: ${a.function.name}`),{text:null,error:null,toolCall:a,thinking:null}}if(b.has(2)){let{text:a,thinking:c}=function(a){let b=q(a),c=null,d=null;if(b.has(1)&&(c=i.decode(b.get(1)[0].value)),b.has(25))try{let a=q(b.get(25)[0].value);a.has(1)&&(d=i.decode(a.get(1)[0].value))}catch(a){h("EXTRACT",`Thinking parse error: ${a.message}`)}return{text:c,thinking:d}}(b.get(2)[0].value);if(a||c)return{text:a,error:null,toolCall:null,thinking:c}}return{text:null,error:null,toolCall:null,thinking:null}}catch(b){return h("EXTRACT",`Decode failed (schema v${j}): ${b.message}`),{text:null,error:null,toolCall:null,thinking:null,raw:Buffer.from(a).toString("base64"),decodeError:b.message}}}},71751:(a,b,c)=>{c.d(b,{r:()=>h});var d=c(55511),e=c.n(d),f=c(39859),g=c(60293);class h extends f.H{constructor(){super("iflow",g.xq.iflow)}createIFlowSignature(a,b,c,d){if(!d)return"";let f=`${a}:${b}:${c}`,g=e().createHmac("sha256",d);return g.update(f),g.digest("hex")}buildHeaders(a,b=!0){let c=`session-${e().randomUUID()}`,d=Date.now(),f=this.config.headers?.["User-Agent"]||"iFlow-Cli",g=a.apiKey||a.accessToken||"",h=this.createIFlowSignature(f,c,d,g),i={"Content-Type":"application/json",...this.config.headers,"session-id":c,"x-iflow-timestamp":d.toString(),"x-iflow-signature":h};return a.apiKey?i.Authorization=`Bearer ${a.apiKey}`:a.accessToken&&(i.Authorization=`Bearer ${a.accessToken}`),b&&(i.Accept="text/event-stream"),i}buildUrl(a,b,c=0,d=null){return this.config.baseUrl}transformRequest(a,b,c,d){return b}}},78103:(a,b,c)=>{c.d(b,{BI:()=>e,IL:()=>h,fT:()=>g});let d={codex:{headerOrder:["Host","Content-Type","Authorization","Accept","User-Agent","Accept-Encoding"],bodyFieldOrder:["model","messages","temperature","top_p","max_tokens","stream","tools","tool_choice","response_format","n","stop"],userAgent:"codex-cli"},claude:{headerOrder:["Host","Content-Type","x-api-key","anthropic-version","Accept","User-Agent","Accept-Encoding"],bodyFieldOrder:["model","max_tokens","messages","system","temperature","top_p","top_k","stream","tools","tool_choice","metadata"],userAgent:"claude-code"},github:{headerOrder:["Host","Authorization","X-Request-Id","Vscode-Sessionid","Vscode-Machineid","Editor-Version","Editor-Plugin-Version","Copilot-Integration-Id","Openai-Organization","Openai-Intent","Content-Type","User-Agent","Accept","Accept-Encoding"],bodyFieldOrder:["messages","model","temperature","top_p","max_tokens","n","stream","intent","intent_threshold","intent_content"],userAgent:"GitHubCopilotChat"},antigravity:{headerOrder:["Host","Content-Type","Authorization","User-Agent","Accept","Accept-Encoding"],bodyFieldOrder:["project","model","userAgent","requestType","requestId","request"],userAgent:"antigravity"}};function e(a,b,c){let e=d[a?.toLowerCase()];return e?(e.userAgent&&(b["User-Agent"]=e.userAgent),e.extraHeaders&&Object.assign(b,e.extraHeaders),{headers:function(a,b){if(!b?.length||!a)return a;let c={},d=new Map;for(let[b,c]of Object.entries(a))d.set(b.toLowerCase(),[b,c]);for(let a of b){let b=d.get(a.toLowerCase());b&&(c[b[0]]=b[1],d.delete(a.toLowerCase()))}for(let[,[a,b]]of d)c[a]=b;return c}(b,e.headerOrder),bodyString:JSON.stringify(c&&"object"==typeof c&&!Array.isArray(c)?function(a,b){if(!b?.length||!a||"object"!=typeof a)return a;let c={},d=new Set(Object.keys(a));for(let e of b)e in a&&(c[e]=a[e],d.delete(e));for(let b of d)c[b]=a[b];return c}(c,e.bodyFieldOrder):c)}):{headers:b,bodyString:JSON.stringify(c)}}let f=new Set;function g(a){f=new Set((a||[]).map(a=>a.toLowerCase()))}function h(a){let b=a?.toLowerCase().replace(/[^a-z0-9]/g,"_");if(f.has(a?.toLowerCase()))return!0;let c=`CLI_COMPAT_${b?.toUpperCase()}`;return"1"===process.env[c]||"true"===process.env[c]||"1"===process.env.CLI_COMPAT_ALL||"true"===process.env.CLI_COMPAT_ALL}},85081:(a,b,c)=>{c.d(b,{Ay:()=>j});var d=c(77598);let e=function(a){return Array.isArray(a)?a=Buffer.from(a):"string"==typeof a&&(a=Buffer.from(a,"utf8")),(0,d.createHash)("sha1").update(a).digest()},f=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i,g=function(a){let b;if(!("string"==typeof a&&f.test(a)))throw TypeError("Invalid UUID");return Uint8Array.of((b=parseInt(a.slice(0,8),16))>>>24,b>>>16&255,b>>>8&255,255&b,(b=parseInt(a.slice(9,13),16))>>>8,255&b,(b=parseInt(a.slice(14,18),16))>>>8,255&b,(b=parseInt(a.slice(19,23),16))>>>8,255&b,(b=parseInt(a.slice(24,36),16))/0x10000000000&255,b/0x100000000&255,b>>>24&255,b>>>16&255,b>>>8&255,255&b)};var h=c(50122);function i(a,b,c,d){var f=b,i=d;let j="string"==typeof a?function(a){let b=new Uint8Array((a=unescape(encodeURIComponent(a))).length);for(let c=0;c<a.length;++c)b[c]=a.charCodeAt(c);return b}(a):a,k="string"==typeof f?g(f):f;if("string"==typeof f&&(f=g(f)),f?.length!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+j.length);if(l.set(k),l.set(j,k.length),(l=e(l))[6]=15&l[6]|80,l[8]=63&l[8]|128,c){i=i||0;for(let a=0;a<16;++a)c[i+a]=l[a];return c}return(0,h.k)(l)}i.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",i.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8";let j=i},93792:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{o:()=>s});var e=c(39859),f=c(60293),g=c(51082),h=c(50101),i=c(55120),j=c(55511),k=c.n(j),l=c(85081),m=c(74075),n=c.n(m);let a=null;if(!("u">typeof caches&&"object"==typeof caches||"u">typeof EdgeRuntime))try{a=await Promise.resolve().then(c.t.bind(c,73496,23))}catch{}let q="1"===process.env.CURSOR_STREAM_DEBUG,r=(...a)=>{q&&console.log(...a)};function o(a,b){if(a.length>10&&123===a[0]&&34===a[1])try{if(a.toString("utf-8").startsWith('{"error"'))return r("[DECOMPRESS] Detected JSON error, skipping decompression"),a}catch{}if(1===b||2===b||3===b)try{return n().gunzipSync(a)}catch(c){try{return n().inflateSync(a)}catch(d){try{return n().inflateRawSync(a)}catch(e){r(`[DECOMPRESS ERROR] flags=${b}, payloadSize=${a.length}, gzip=${c.message}, deflate=${d.message}, raw=${e.message}`),r("[DECOMPRESS ERROR] First 50 bytes (hex):",a.slice(0,50).toString("hex")),r("[DECOMPRESS ERROR] First 50 bytes (utf8):",a.slice(0,50).toString("utf8").replace(/[^\x20-\x7E]/g,"."))}}}return a}function p(a){let b=a?.error?.details?.[0]?.debug?.details?.title||a?.error?.details?.[0]?.debug?.details?.detail||a?.error?.message||"API Error",c=a?.error?.code==="resource_exhausted";return new Response(JSON.stringify({error:{message:b,type:c?"rate_limit_error":"api_error",code:a?.error?.details?.[0]?.debug?.error||"unknown"}}),{status:c?f.gx.RATE_LIMITED:f.gx.BAD_REQUEST,headers:{"Content-Type":"application/json"}})}class s extends e.H{constructor(){super("cursor",f.xq.cursor)}buildUrl(){return`${this.config.baseUrl}${this.config.chatPath||""}`}generateChecksum(a){let b=Math.floor(Date.now()/1e6),c=new Uint8Array([b>>40&255,b>>32&255,b>>24&255,b>>16&255,b>>8&255,255&b]),d=165;for(let a=0;a<c.length;a++)c[a]=(c[a]^d)+a%256&255,d=c[a];let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",f="";for(let a=0;a<c.length;a+=3){let b=c[a],d=a+1<c.length?c[a+1]:0,g=a+2<c.length?c[a+2]:0;f+=e[b>>2],f+=e[(3&b)<<4|d>>4],a+1<c.length&&(f+=e[(15&d)<<2|g>>6]),a+2<c.length&&(f+=e[63&g])}return`${f}${a}`}buildHeaders(a){let b=a.accessToken,c=a.providerSpecificData?.machineId,d=a.providerSpecificData?.ghostMode!==!1;if(!c)throw Error("Machine ID is required for Cursor API");let e=b.includes("::")?b.split("::")[1]:b;return{authorization:`Bearer ${e}`,"connect-accept-encoding":"gzip","connect-protocol-version":"1","content-type":"application/connect+proto","user-agent":"connect-es/1.6.1","x-amzn-trace-id":`Root=${k().randomUUID()}`,"x-client-key":k().createHash("sha256").update(e).digest("hex"),"x-cursor-checksum":this.generateChecksum(c),"x-cursor-client-version":"2.3.41","x-cursor-client-type":"ide","x-cursor-client-os":"win32"===process.platform?"windows":"darwin"===process.platform?"macos":"linux","x-cursor-client-arch":"arm64"===process.arch?"aarch64":"x64","x-cursor-client-device-type":"desktop","x-cursor-config-version":k().randomUUID(),"x-cursor-timezone":Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC","x-ghost-mode":d?"true":"false","x-request-id":k().randomUUID(),"x-session-id":(0,l.Ay)(e,l.Ay.DNS)}}transformRequest(a,b,c,d){let e=b.messages||[],f=b.tools||[],h=b.reasoning_effort||null;return(0,g.yI)(e,a,f,h)}async makeFetchRequest(a,b,c,d){let e=await fetch(a,{method:"POST",headers:b,body:c,signal:d});return{status:e.status,headers:Object.fromEntries(e.headers.entries()),body:Buffer.from(await e.arrayBuffer())}}makeHttp2Request(b,c,d,e){if(!a)throw Error("http2 module not available");return new Promise((g,h)=>{let i=new URL(b),j=a.connect(`https://${i.host}`),k=[],l={};j.on("error",h);let m=j.request({":method":"POST",":path":i.pathname,":authority":i.host,":scheme":"https",...c});m.on("response",a=>{l=a}),m.on("data",a=>{k.push(a)}),m.on("end",()=>{j.close(),g({status:"number"==typeof l[":status"]?l[":status"]:Number(l[":status"]||f.gx.SERVER_ERROR),headers:l,body:Buffer.concat(k)})}),m.on("error",a=>{j.close(),h(a)}),e&&e.addEventListener("abort",()=>{m.close(),j.close(),h(Error("Request aborted"))}),m.write(d),m.end()})}async execute({model:b,body:c,stream:d,credentials:e,signal:g,log:h}){let i=this.buildUrl(),j=this.buildHeaders(e),k=this.transformRequest(b,c,d,e);try{let e=a?await this.makeHttp2Request(i,j,k,g):await this.makeFetchRequest(i,j,k,g);if(200!==e.status){let a=e.body?.toString()||"Unknown error";return{response:new Response(JSON.stringify({error:{message:`[${e.status}]: ${a}`,type:"invalid_request_error",code:""}}),{status:e.status,headers:{"Content-Type":"application/json"}}),url:i,headers:j,transformedBody:c}}return{response:!1!==d?this.transformProtobufToSSE(e.body,b,c):this.transformProtobufToJSON(e.body,b,c),url:i,headers:j,transformedBody:c}}catch(a){return{response:new Response(JSON.stringify({error:{message:a.message,type:"connection_error",code:""}}),{status:f.gx.SERVER_ERROR,headers:{"Content-Type":"application/json"}}),url:i,headers:j,transformedBody:c}}}transformProtobufToJSON(a,b,c){let d=`chatcmpl-cursor-${Date.now()}`,e=Math.floor(Date.now()/1e3),j=0,k="",l=[],m=new Map,n=new Set,q=0;for(r(`[CURSOR BUFFER] Total length: ${a.length} bytes`);j<a.length;){if(j+5>a.length){r(`[CURSOR BUFFER] Reached end, offset=${j}, remaining=${a.length-j}`);break}let b=a[j],c=a.readUInt32BE(j+1);if(r(`[CURSOR BUFFER] Frame ${q+1}: flags=0x${b.toString(16).padStart(2,"0")}, length=${c}`),j+5+c>a.length){r(`[CURSOR BUFFER] Incomplete frame, offset=${j}, length=${c}, buffer.length=${a.length}`);break}let d=a.slice(j+5,j+5+c);if(j+=5+c,q++,!(d=o(d,b))){r(`[CURSOR BUFFER] Frame ${q}: decompression failed, skipping`);continue}if(d.length>0&&123===d[0])try{let a=d.toString("utf-8");if(a.includes('"error"')){let b=k||m.size>0;if(r(`[CURSOR BUFFER] Error frame (hasContent=${b}): ${a.slice(0,500)}`),b)break;return p(JSON.parse(a))}}catch{}let e=(0,g.CP)(new Uint8Array(d));if(r(`[CURSOR DECODED] Frame ${q}:`,e),e.error){let a=k||m.size>0;if(r(`[CURSOR BUFFER] Decoded error (hasContent=${a}): ${e.error}`),a)break;return new Response(JSON.stringify({error:{message:e.error,type:"rate_limit_error",code:"rate_limited"}}),{status:f.gx.RATE_LIMITED,headers:{"Content-Type":"application/json"}})}if(e.toolCall){let a=e.toolCall;if(m.has(a.id)){let b=m.get(a.id);b.function.arguments+=a.function.arguments,b.isLast=a.isLast}else m.set(a.id,{...a});if(a.isLast){let b=m.get(a.id);n.add(a.id),l.push({id:b.id,type:b.type,function:{name:b.function.name,arguments:b.function.arguments}})}}e.text&&(k+=e.text)}for(let[a,b]of(r(`[CURSOR BUFFER] Parsed ${q} frames, toolCallsMap size: ${m.size}, finalized toolCalls: ${l.length}`),m.entries()))n.has(a)||(r(`[CURSOR BUFFER] Finalizing incomplete tool call: ${a}, isLast=${b.isLast}`),l.push({id:b.id,type:b.type,function:{name:b.function.name,arguments:b.function.arguments}}));r(`[CURSOR BUFFER] Final toolCalls count: ${l.length}`);let s={role:"assistant",content:k||null};l.length>0&&(s.tool_calls=l);let t=(0,h.OF)(c,k.length,i.h.OPENAI),u={id:d,object:"chat.completion",created:e,model:b,choices:[{index:0,message:s,finish_reason:l.length>0?"tool_calls":"stop"}],usage:t};return new Response(JSON.stringify(u),{status:200,headers:{"Content-Type":"application/json"}})}transformProtobufToSSE(a,b,c){let d=`chatcmpl-cursor-${Date.now()}`,e=Math.floor(Date.now()/1e3),j=[],k=0,l="",m=[],n=new Map,q=new Set,s=new Set,t=0;for(r(`[CURSOR BUFFER SSE] Total length: ${a.length} bytes`);k<a.length;){if(k+5>a.length){r(`[CURSOR BUFFER SSE] Reached end, offset=${k}, remaining=${a.length-k}`);break}let c=a[k],h=a.readUInt32BE(k+1);if(r(`[CURSOR BUFFER SSE] Frame ${t+1}: flags=0x${c.toString(16).padStart(2,"0")}, length=${h}`),k+5+h>a.length){r(`[CURSOR BUFFER SSE] Incomplete frame, offset=${k}, length=${h}, buffer.length=${a.length}`);break}let i=a.slice(k+5,k+5+h);if(k+=5+h,t++,!(i=o(i,c))){r(`[CURSOR BUFFER SSE] Frame ${t}: decompression failed, skipping`);continue}if(123===i[0])try{let a=i.toString("utf-8");if(a.includes('"error"')){let b=j.length>0||l||n.size>0;if(r(`[CURSOR BUFFER SSE] Error frame (hasContent=${b}): ${a.slice(0,500)}`),b)break;return p(JSON.parse(a))}}catch{}let u=(0,g.CP)(new Uint8Array(i));if(r(`[CURSOR DECODED SSE] Frame ${t}:`,u),u.error){let a=j.length>0||l||n.size>0;if(r(`[CURSOR BUFFER SSE] Decoded error (hasContent=${a}): ${u.error}`),a)break;return new Response(JSON.stringify({error:{message:u.error,type:"rate_limit_error",code:"rate_limited"}}),{status:f.gx.RATE_LIMITED,headers:{"Content-Type":"application/json"}})}if(u.toolCall){let a=u.toolCall;if(0===j.length&&j.push(`data: ${JSON.stringify({id:d,object:"chat.completion.chunk",created:e,model:b,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}
|
|
15
|
+
`))}a.enqueue(new TextEncoder().encode("data: [DONE]\n\n"))}});return new Response(a.body.pipeThrough(h),{status:a.status,statusText:a.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}async refreshCredentials(a,b){if(!a.refreshToken)return null;try{return await (0,g.Ql)(a.refreshToken,a.providerSpecificData,b)}catch(c){let a=c instanceof Error?c:Error(String(c));return b?.error?.("TOKEN",`Kiro refresh error: ${a.message}`),null}}}},37544:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{SB:()=>n});var e=c(14938),f=c(24978),g=c(39033),h=c(71751),i=c(36589),j=c(93831),k=c(93792),l=c(18221);c(39859);var m=a([k]);k=(m.then?(await m)():m)[0];let o={antigravity:new e.c,"gemini-cli":new f.V,github:new g.x,iflow:new h.r,kiro:new i.B,codex:new j.T,cursor:new k.o,cu:new k.o},p=new Map;function n(a){return o[a]?o[a]:(p.has(a)||p.set(a,new l.L(a)),p.get(a))}d()}catch(a){d(a)}})},39033:(a,b,c)=>{c.d(b,{x:()=>g});var d=c(39859),e=c(60293),f=c(23969);class g extends d.H{constructor(){super("github",e.xq.github)}buildUrl(a,b,c=0){return"openai-responses"===(0,f.ux)("gh",a)?this.config.responsesBaseUrl||this.config.baseUrl?.replace(/\/chat\/completions\/?$/,"/responses")||"https://api.githubcopilot.com/responses":this.config.baseUrl}buildHeaders(a,b=!0){let c=a.copilotToken||a.accessToken;return{Authorization:`Bearer ${c}`,"Content-Type":"application/json","copilot-integration-id":"vscode-chat","editor-version":"vscode/1.107.1","editor-plugin-version":"copilot-chat/0.26.7","user-agent":"GitHubCopilotChat/0.26.7","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-request-id":crypto.randomUUID?.()||`${Date.now()}-${Math.random().toString(36).slice(2)}`,"x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:b?"text/event-stream":"application/json"}}async refreshCopilotToken(a,b){try{let c=await fetch("https://api.github.com/copilot_internal/v2/token",{headers:{Authorization:`token ${a}`,"User-Agent":"GithubCopilot/1.0","Editor-Version":"vscode/1.100.0","Editor-Plugin-Version":"copilot/1.300.0",Accept:"application/json"}});if(!c.ok)return null;let d=await c.json();return b?.info?.("TOKEN","Copilot token refreshed"),{token:d.token,expiresAt:d.expires_at}}catch(a){return b?.error?.("TOKEN",`Copilot refresh error: ${a.message}`),null}}async refreshGitHubToken(a,b){try{let c=await fetch(e.NA.github.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:this.config.clientId,client_secret:this.config.clientSecret})});if(!c.ok)return null;let d=await c.json();return b?.info?.("TOKEN","GitHub token refreshed"),{accessToken:d.access_token,refreshToken:d.refresh_token||a,expiresIn:d.expires_in}}catch(a){return b?.error?.("TOKEN",`GitHub refresh error: ${a.message}`),null}}async refreshCredentials(a,b){let c=await this.refreshCopilotToken(a.accessToken,b);if(!c&&a.refreshToken){let d=await this.refreshGitHubToken(a.refreshToken,b);if(d?.accessToken)return(c=await this.refreshCopilotToken(d.accessToken,b))?{...d,copilotToken:c.token,copilotTokenExpiresAt:c.expiresAt}:d}return c?{accessToken:a.accessToken,refreshToken:a.refreshToken,copilotToken:c.token,copilotTokenExpiresAt:c.expiresAt}:null}needsRefresh(a){if(!a.copilotToken)return!0;if(a.copilotTokenExpiresAt){let b=a.copilotTokenExpiresAt;if("number"==typeof b&&b<1e12?b*=1e3:"string"==typeof b&&(b=new Date(b).getTime()),b-Date.now()<3e5)return!0}return super.needsRefresh(a)}}},39859:(a,b,c)=>{c.d(b,{H:()=>f});var d=c(60293),e=c(78103);class f{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}buildUrl(a,b,c=0,d=null){if(this.provider?.startsWith?.("openai-compatible-")){let a=("string"==typeof d?.providerSpecificData?.baseUrl?d.providerSpecificData.baseUrl:"https://api.openai.com/v1").replace(/\/$/,""),b=this.provider.includes("responses")?"/responses":"/chat/completions";return`${a}${b}`}let e=this.getBaseUrls();return e[c]||e[0]||this.config.baseUrl}buildHeaders(a,b=!0){let c={"Content-Type":"application/json",...this.config.headers},d=this.config?.id||this.provider;if(d){let a=`${d.toUpperCase().replace(/[^A-Z0-9]/g,"_")}_USER_AGENT`,b=process.env[a]?.trim();b&&(c["User-Agent"]=b,c["user-agent"]&&(c["user-agent"]=b))}return a.accessToken?c.Authorization=`Bearer ${a.accessToken}`:a.apiKey&&(c.Authorization=`Bearer ${a.apiKey}`),b&&(c.Accept="text/event-stream"),c}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}}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}`}}async execute({model:a,body:b,stream:c,credentials:g,signal:h,log:i,extendedContext:j}){let k=this.getFallbackCount(),l=null,m=0,n={};for(let o=0;o<k;o++){let p=this.buildUrl(a,c,o,g),q=this.buildHeaders(g,c);if(j){let b=["claude-opus-4-6","claude-sonnet-4-6","claude-sonnet-4-5","claude-sonnet-4"],c=a.replace(/-\d{8}$/,"");if(b.some(b=>c===b||a===b||a.startsWith(b))){let a=q["Anthropic-Beta"];a?q["Anthropic-Beta"]=a+",context-1m-2025-08-07":q["Anthropic-Beta"]="context-1m-2025-08-07"}}let r=this.transformRequest(a,b,c,g);try{let a=c?null:AbortSignal.timeout(d.MT),b=h&&a?function(a,b){let c=new AbortController,d=()=>{c.signal.aborted||c.abort()};return a.aborted||b.aborted?d():(a.addEventListener("abort",d,{once:!0}),b.addEventListener("abort",d,{once:!0})),c.signal}(h,a):h||a,g=q,j=JSON.stringify(r);if((0,e.IL)(this.provider)){let a=(0,e.BI)(this.provider,q,r);g=a.headers,j=a.bodyString}let k={method:"POST",headers:g,body:j};b&&(k.signal=b);let l=await fetch(p,k);if(l.status===d.gx.RATE_LIMITED&&(n[o]??0)<f.RETRY_CONFIG.maxAttempts){n[o]=(n[o]??0)+1;let a=n[o];i?.debug?.("RETRY",`429 intra-retry ${a}/${f.RETRY_CONFIG.maxAttempts} on ${p} — waiting ${f.RETRY_CONFIG.delayMs}ms`),await new Promise(a=>setTimeout(a,f.RETRY_CONFIG.delayMs)),o--;continue}if(this.shouldRetry(l.status,o)){i?.debug?.("RETRY",`${l.status} on ${p}, trying fallback ${o+1}`),m=l.status;continue}return{response:l,url:p,headers:q,transformedBody:r}}catch(b){let a=b instanceof Error?b:Error(String(b));if("TimeoutError"===a.name&&i?.warn?.("TIMEOUT",`Fetch timeout after ${d.MT}ms on ${p}`),l=a,o+1<k){i?.debug?.("RETRY",`Error on ${p}, trying fallback ${o+1}`);continue}throw a}}throw l||Error(`All ${k} URLs failed with status ${m}`)}}},50101:(a,b,c)=>{c.d(b,{Gh:()=>j,IF:()=>n,O9:()=>g,OF:()=>m,WL:()=>h,f5:()=>k,lm:()=>f});var d=c(19704),e=c(55120);let f={reset:"\x1b[0m",red:"\x1b[31m",green:"\x1b[32m",yellow:"\x1b[33m",blue:"\x1b[34m",cyan:"\x1b[36m"};function g(a){if(!a||"object"!=typeof a)return a;let b={...a};return void 0!==b.input_tokens&&(b.input_tokens+=2e3),void 0!==b.prompt_tokens&&(b.prompt_tokens+=2e3),void 0!==b.total_tokens?b.total_tokens+=2e3:void 0!==b.prompt_tokens&&void 0!==b.completion_tokens&&(b.total_tokens=b.prompt_tokens+b.completion_tokens),b}function h(a,b){if(!a||"object"!=typeof a)return a;let c={[e.h.CLAUDE]:["input_tokens","output_tokens","cache_read_input_tokens","cache_creation_input_tokens","estimated"],[e.h.GEMINI]:["promptTokenCount","candidatesTokenCount","totalTokenCount","cachedContentTokenCount","thoughtsTokenCount","estimated"],[e.h.OPENAI_RESPONSES]:["input_tokens","output_tokens","input_tokens_details","output_tokens_details","estimated"],default:["prompt_tokens","completion_tokens","total_tokens","cached_tokens","reasoning_tokens","prompt_tokens_details","completion_tokens_details","estimated"]},d=c[b];b===e.h.GEMINI_CLI||b===e.h.ANTIGRAVITY?d=c[e.h.GEMINI]:b===e.h.OPENAI_RESPONSE?d=c[e.h.OPENAI_RESPONSES]:d||(d=c.default);let f={};for(let b of d)void 0!==a[b]&&(f[b]=a[b]);return f}function i(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b={},c=(a,c)=>{if(null==c)return;let d=Number(c);Number.isFinite(d)&&(b[a]=d)};return(c("prompt_tokens",a?.prompt_tokens),c("completion_tokens",a?.completion_tokens),c("total_tokens",a?.total_tokens),c("cache_read_input_tokens",a?.cache_read_input_tokens),c("cache_creation_input_tokens",a?.cache_creation_input_tokens),c("cached_tokens",a?.cached_tokens),c("reasoning_tokens",a?.reasoning_tokens),0===Object.keys(b).length)?null:b}function j(a){if(!a||"object"!=typeof a)return!1;for(let b of["prompt_tokens","completion_tokens","total_tokens","input_tokens","output_tokens","promptTokenCount","candidatesTokenCount"])if("number"==typeof a[b]&&a[b]>0)return!0;return!1}function k(a){if(!a||"object"!=typeof a)return null;if("message_start"===a.type&&a.message?.usage){let b=a.message.usage,c=b.input_tokens||b.prompt_tokens||0;if(c>0)return i({prompt_tokens:c,completion_tokens:b.output_tokens||b.completion_tokens||0,cache_read_input_tokens:b.cache_read_input_tokens,cache_creation_input_tokens:b.cache_creation_input_tokens})}if("message_delta"===a.type&&a.usage&&"object"==typeof a.usage)return i({prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens});if(("response.completed"===a.type||"response.done"===a.type)&&a.response?.usage&&"object"==typeof a.response.usage){let b=a.response.usage;return i({prompt_tokens:b.input_tokens||b.prompt_tokens||0,completion_tokens:b.output_tokens||b.completion_tokens||0,cached_tokens:b.input_tokens_details?.cached_tokens,reasoning_tokens:b.output_tokens_details?.reasoning_tokens})}return a.usage&&"object"==typeof a.usage&&void 0!==a.usage.prompt_tokens?i({prompt_tokens:a.usage.prompt_tokens,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens}):a.usageMetadata&&"object"==typeof a.usageMetadata?i({prompt_tokens:a.usageMetadata?.promptTokenCount||0,completion_tokens:a.usageMetadata?.candidatesTokenCount||0,total_tokens:a.usageMetadata?.totalTokenCount,cached_tokens:a.usageMetadata?.cachedContentTokenCount,reasoning_tokens:a.usageMetadata?.thoughtsTokenCount}):null}function l(a){if(!a||"string"!=typeof a)return 0;let b=a.match(/[\u3000-\u9fff\uf900-\ufaff\u{20000}-\u{2fa1f}]/gu);return(b?b.length:0)+Math.ceil(1.3*a.replace(/[\u3000-\u9fff\uf900-\ufaff]/g," ").split(/(\s+|[^\w\s]|(?<=[a-z])(?=[A-Z]))/).filter(a=>a&&a.trim().length>0).length)}function m(a,b,c=e.h.OPENAI){var d,f;return d=function(a){if(!a||"object"!=typeof a)return 0;try{let b=0,c=0;if(a.tools&&Array.isArray(a.tools)){let d=JSON.stringify(a.tools);b=Math.ceil(d.length/6);let{tools:e,...f}=a;c=l(JSON.stringify(f))}else c=l(JSON.stringify(a));return c+b}catch(a){return 0}}(a),f=b&&!(b<=0)?Math.max(1,Math.ceil(b/3.5)):0,c===e.h.CLAUDE?g({input_tokens:d,output_tokens:f,estimated:!0}):g({prompt_tokens:d,completion_tokens:f,total_tokens:d+f,estimated:!0})}function n(a,b,c=null,e=null,g=null){if(!b||"object"!=typeof b)return;let h=a?.toUpperCase()||"UNKNOWN",i=b?.prompt_tokens||b?.input_tokens||0,j=b?.completion_tokens||b?.output_tokens||0,k=e?e.slice(0,8)+"...":"unknown",l=`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}] 📊 ${f.green}[USAGE] ${h} | in=${i} | out=${j} | account=${k}${f.reset}`;b.estimated&&(l+=` ${f.yellow}(estimated)${f.reset}`);let m=b.cache_read_input_tokens||b.cached_tokens;m&&(l+=` | cache_read=${m}`);let o=b.cache_creation_input_tokens;o&&(l+=` | cache_create=${o}`);let p=b.reasoning_tokens;p&&(l+=` | reasoning=${p}`),console.log(l);let q={input:i,output:j,cacheRead:m||0,cacheCreation:o||0,reasoning:p||0};(0,d.sZ)({model:c,provider:a,connectionId:e,apiKeyId:g?.id||void 0,apiKeyName:g?.name||void 0,tokens:q}).catch(()=>{}),(0,d.E5)({model:c,provider:a,connectionId:e,tokens:q,status:"200 OK"}).catch(()=>{})}},51082:(a,b,c)=>{c.d(b,{CP:()=>r,yI:()=>o});var d=c(94755),e=c(74075),f=c.n(e);let g="1"===process.env.CURSOR_PROTOBUF_DEBUG,h=(a,...b)=>g&&console.log(`[PROTOBUF:${a}]`,...b),i=new TextDecoder,j="1.1.3",k=new Set([1,2,3,9,10,11,27,1,25]);function l(a){let b=[];for(;a>=128;)b.push(127&a|128),a>>>=7;return b.push(127&a),new Uint8Array(b)}function m(a,b,c){let d=l(a<<3|b);if(0===b)return n(d,l(c));if(2===b){let a="string"==typeof c?new TextEncoder().encode(c):c instanceof Uint8Array?c:Buffer.isBuffer(c)?new Uint8Array(c):new Uint8Array(0);return n(d,l(a.length),a)}return new Uint8Array(0)}function n(...a){let b=new Uint8Array(a.reduce((a,b)=>a+b.length,0)),c=0;for(let d of a)b.set(d,c),c+=d.length;return b}function o(a,b,c=[],e=null){h("BODY",`Generating: ${a.length} msgs, model=${b}, tools=${c.length}, reasoning=${e||"none"}`);let g=function(a,b,c=[],e=null){return m(1,2,function(a,b,c=[],e=null){let f,g=c?.length>0,i=[],j=[],k=[];for(let b=0;b<a.length;b++){let c=a[b],d=Array.isArray(c?.tool_calls)&&c.tool_calls.length>0,e=Array.isArray(c?.tool_results)&&c.tool_results.length>0;if(c?.role==="assistant"&&d&&e){h("ENCODE",`normalizing mixed assistant tool payload at msg[${b}] (calls=${c.tool_calls.length}, results=${c.tool_results.length})`),k.push({...c,tool_results:[]});let d=a[b+1],e=d?.role==="assistant"&&Array.isArray(d?.tool_results)&&d.tool_results.length>0,f=new Set(c.tool_results.map(a=>a?.tool_call_id).filter(a=>"string"==typeof a)),g=new Set((d?.tool_results||[]).map(a=>a?.tool_call_id).filter(a=>"string"==typeof a)),i=f.size>0&&f.size===g.size;if(i){for(let a of f)if(!g.has(a)){i=!1;break}}e&&i||k.push({role:"assistant",content:"",tool_results:c.tool_results});continue}k.push(c)}for(let a=0;a<k.length;a++){let b=k[a],c="user"===b.role?1:2,e=(0,d.A)(),f=a===k.length-1;i.push({content:b.content,role:c,messageId:e,isLast:f,hasTools:g,toolResults:b.tool_results||[]}),j.push({messageId:e,role:c})}let o=0;return"medium"===e?o=1:"high"===e&&(o=2),n(...i.map(a=>m(1,2,function(a,b,c,d=null,e=!1,f=!1,g=[]){return n(m(1,2,a),m(2,0,b),m(13,2,c),...g.length>0?g.map(a=>m(18,2,function(a){var b,c,d,e,f;let g,{toolCallId:h,modelCallId:i}=function(a){if("string"!=typeof a||0===a.length)return{toolCallId:"",modelCallId:null};let b="\nmc_",c=a.indexOf(b);return c>=0?{toolCallId:a.slice(0,c),modelCallId:a.slice(c+b.length)}:{toolCallId:a,modelCallId:null}}(a.tool_call_id||""),j=function(a){let b="string"==typeof a&&a.length>0?a:"tool";if(b.startsWith("mcp__")){let a=b.slice(5),c=a.indexOf("__");if(c>=0){let b=a.slice(0,c)||"custom",d=a.slice(c+2)||"tool";return`mcp_${b}_${d}`}return`mcp_custom_${a||"tool"}`}return b.startsWith("mcp_")?b:`mcp_custom_${b}`}(a.name||""),{selectedTool:k,serverName:l}=function(a){if("string"!=typeof a||!a.startsWith("mcp_"))return{serverName:"custom",selectedTool:a||"tool"};let b=a.slice(4),c=b.indexOf("_");return c<0?{serverName:"custom",selectedTool:b||"tool"}:{serverName:b.slice(0,c)||"custom",selectedTool:b.slice(c+1)||"tool"}}(j),o=a.index>0?a.index:1,p=a.raw_args||"{}",q=(b=h,c=i,d=k,e=o,f=a.result||"",g=n(m(1,2,"string"==typeof d&&d.length>0?d:"tool"),m(2,2,"string"==typeof f?f:"")),n(m(1,0,19),m(28,2,g),...b?[m(35,2,b)]:[],...c?[m(48,2,c)]:[],m(49,0,e))),r=function(a,b,c,d,e,f,g){let h;return n(m(1,0,19),m(27,2,(h=n(m(1,2,d||"tool"),m(3,2,f||"{}"),m(4,2,e||"custom")),m(1,2,h))),...a?[m(3,2,a)]:[],m(9,2,c||"tool"),m(10,2,f||"{}"),m(48,0,g>0?g:1),...b?[m(49,2,b)]:[])}(h,i,j,k,l,p,o);return n(m(1,2,h),m(2,2,j),m(3,0,o),...i?[m(12,2,i)]:[],m(5,2,p),...q?[m(8,2,q)]:[],m(11,2,r))}(a))):[],m(29,0,+!!f),m(47,0,f?2:1),...e&&f?[m(51,2,l(1))]:[])}(a.content,a.role,a.messageId,null,a.isLast,a.hasTools,a.toolResults))),m(2,0,1),m(3,2,new Uint8Array(0)),m(4,0,1),m(5,2,n(m(1,2,b),m(4,2,new Uint8Array(0)))),m(8,2,""),m(13,0,1),m(15,2,(f=n(m(1,2,new Uint8Array(0)),m(2,2,new Uint8Array(0))),n(m(1,2,"cursor\\aisettings"),m(3,2,new Uint8Array(0)),m(6,2,f),m(8,0,1),m(9,0,1)))),m(19,0,1),m(23,2,(0,d.A)()),m(26,2,n(m(1,2,process.platform||"linux"),m(2,2,process.arch||"x64"),m(3,2,process.version||"v20.0.0"),m(4,2,process.cwd?.()||"/"),m(5,2,new Date().toISOString()))),m(27,0,+!!g),...g?[m(29,2,l(1))]:[],...j.map(a=>m(30,2,function(a,b,c=null){return n(m(1,2,a),...c?[m(2,2,c)]:[],m(3,0,b))}(a.messageId,a.role))),...c?.length>0?c.map(a=>{let b,c,d;return m(34,2,(b=a.function?.name||a.name||"",c=a.function?.description||a.description||"",d=a.function?.parameters||a.input_schema||{},n(...b?[m(1,2,b)]:[],...c?[m(2,2,c)]:[],...Object.keys(d).length>0?[m(3,2,JSON.stringify(d))]:[],m(4,2,"custom"))))}):[],m(35,0,0),m(38,0,0),m(46,0,g?2:1),m(47,2,""),m(48,0,+!g),m(49,0,o),m(51,0,0),m(53,0,1),m(54,2,g?"Agent":"Ask"))}(a,b,c,e))}(a,b,c,e),i=function(a,b=!1){let c=a,d=0;b&&(c=new Uint8Array(f().gzipSync(Buffer.from(a))),d=1);let e=new Uint8Array(5+c.length);return e[0]=d,e[1]=c.length>>24&255,e[2]=c.length>>16&255,e[3]=c.length>>8&255,e[4]=255&c.length,e.set(c,5),e}(g,!1);return h("BODY",`Protobuf=${g.length}B, Framed=${i.length}B`),i}function p(a,b){let c=0,d=0,e=b;for(;e<a.length;){let b=a[e];if(c|=(127&b)<<d,e++,!(128&b))break;d+=7}return[c,e]}function q(a){let b=new Map,c=0;for(;c<a.length;){let[d,e,f,g]=function(a,b){let c;if(b>=a.length)return[null,null,null,b];let[d,e]=p(a,b),f=7&d,g=e;if(0===f)[c,g]=p(a,g);else if(2===f){let[b,d]=p(a,g);c=a.slice(d,d+b),g=d+b}else 1===f?(c=a.slice(g,g+8),g+=8):5===f?(c=a.slice(g,g+4),g+=4):c=null;return[d>>3,f,c,g]}(a,c);if(null===d)break;b.has(d)||b.set(d,[]),b.get(d).push({wireType:e,value:f}),c=g}return b}function r(a){try{let b=q(a);for(let a of b.keys())k.has(a)||h("SCHEMA",`Unknown response field #${a} detected. Schema v${j} may be outdated.`);if(b.has(1)){let a=function(a){let b=q(a),c="",d="",e="",f=!1;if(b.has(3)&&(c=i.decode(b.get(3)[0].value)),b.has(9)&&(d=i.decode(b.get(9)[0].value)),b.has(11)?f=0!==b.get(11)[0].value:b.has(15)&&(f=0!==b.get(15)[0].value),b.has(27))try{let a=q(b.get(27)[0].value);if(a.has(1)){let b=q(a.get(1)[0].value);b.has(1)&&(d=i.decode(b.get(1)[0].value)),b.has(3)&&(e=i.decode(b.get(3)[0].value))}}catch(a){h("EXTRACT",`MCP parse error: ${a.message}`)}return(!e&&b.has(10)&&(e=i.decode(b.get(10)[0].value)),c&&d)?{id:c,type:"function",function:{name:d,arguments:e||"{}"},isLast:f}:null}(b.get(1)[0].value);if(a)return h("EXTRACT",`Tool call: ${a.function.name}`),{text:null,error:null,toolCall:a,thinking:null}}if(b.has(2)){let{text:a,thinking:c}=function(a){let b=q(a),c=null,d=null;if(b.has(1)&&(c=i.decode(b.get(1)[0].value)),b.has(25))try{let a=q(b.get(25)[0].value);a.has(1)&&(d=i.decode(a.get(1)[0].value))}catch(a){h("EXTRACT",`Thinking parse error: ${a.message}`)}return{text:c,thinking:d}}(b.get(2)[0].value);if(a||c)return{text:a,error:null,toolCall:null,thinking:c}}return{text:null,error:null,toolCall:null,thinking:null}}catch(b){return h("EXTRACT",`Decode failed (schema v${j}): ${b.message}`),{text:null,error:null,toolCall:null,thinking:null,raw:Buffer.from(a).toString("base64"),decodeError:b.message}}}},71751:(a,b,c)=>{c.d(b,{r:()=>h});var d=c(55511),e=c.n(d),f=c(39859),g=c(60293);class h extends f.H{constructor(){super("iflow",g.xq.iflow)}createIFlowSignature(a,b,c,d){if(!d)return"";let f=`${a}:${b}:${c}`,g=e().createHmac("sha256",d);return g.update(f),g.digest("hex")}buildHeaders(a,b=!0){let c=`session-${e().randomUUID()}`,d=Date.now(),f=this.config.headers?.["User-Agent"]||"iFlow-Cli",g=a.apiKey||a.accessToken||"",h=this.createIFlowSignature(f,c,d,g),i={"Content-Type":"application/json",...this.config.headers,"session-id":c,"x-iflow-timestamp":d.toString(),"x-iflow-signature":h};return a.apiKey?i.Authorization=`Bearer ${a.apiKey}`:a.accessToken&&(i.Authorization=`Bearer ${a.accessToken}`),b&&(i.Accept="text/event-stream"),i}buildUrl(a,b,c=0,d=null){return this.config.baseUrl}transformRequest(a,b,c,d){return b}}},78103:(a,b,c)=>{c.d(b,{BI:()=>e,IL:()=>h,fT:()=>g});let d={codex:{headerOrder:["Host","Content-Type","Authorization","Accept","User-Agent","Accept-Encoding"],bodyFieldOrder:["model","messages","temperature","top_p","max_tokens","stream","tools","tool_choice","response_format","n","stop"],userAgent:"codex-cli"},claude:{headerOrder:["Host","Content-Type","x-api-key","anthropic-version","Accept","User-Agent","Accept-Encoding"],bodyFieldOrder:["model","max_tokens","messages","system","temperature","top_p","top_k","stream","tools","tool_choice","metadata"],userAgent:"claude-code"},github:{headerOrder:["Host","Authorization","X-Request-Id","Vscode-Sessionid","Vscode-Machineid","Editor-Version","Editor-Plugin-Version","Copilot-Integration-Id","Openai-Organization","Openai-Intent","Content-Type","User-Agent","Accept","Accept-Encoding"],bodyFieldOrder:["messages","model","temperature","top_p","max_tokens","n","stream","intent","intent_threshold","intent_content"],userAgent:"GitHubCopilotChat"},antigravity:{headerOrder:["Host","Content-Type","Authorization","User-Agent","Accept","Accept-Encoding"],bodyFieldOrder:["project","model","userAgent","requestType","requestId","request"],userAgent:"antigravity"},qwen:{headerOrder:["Host","Content-Type","Authorization","User-Agent","X-Dashscope-AuthType","X-Dashscope-CacheControl","X-Dashscope-UserAgent","X-Stainless-Arch","X-Stainless-Lang","X-Stainless-Os","X-Stainless-Package-Version","X-Stainless-Retry-Count","X-Stainless-Runtime","X-Stainless-Runtime-Version","Connection","Accept","Accept-Language","Sec-Fetch-Mode","Accept-Encoding"],bodyFieldOrder:["model","messages","temperature","top_p","max_tokens","stream","tools","tool_choice","response_format","n","stop"],userAgent:"QwenCode/0.12.3 (linux; x64)",extraHeaders:{"X-Dashscope-AuthType":"qwen-oauth","X-Dashscope-CacheControl":"enable","X-Dashscope-UserAgent":"QwenCode/0.12.3 (linux; x64)","X-Stainless-Arch":"x64","X-Stainless-Lang":"js","X-Stainless-Os":"Linux","X-Stainless-Package-Version":"5.11.0","X-Stainless-Retry-Count":"1","X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":"v18.19.1",Connection:"keep-alive","Accept-Language":"*","Sec-Fetch-Mode":"cors"}}};function e(a,b,c){let e=d[a?.toLowerCase()];return e?(e.userAgent&&(b["User-Agent"]=e.userAgent),e.extraHeaders&&Object.assign(b,e.extraHeaders),{headers:function(a,b){if(!b?.length||!a)return a;let c={},d=new Map;for(let[b,c]of Object.entries(a))d.set(b.toLowerCase(),[b,c]);for(let a of b){let b=d.get(a.toLowerCase());b&&(c[b[0]]=b[1],d.delete(a.toLowerCase()))}for(let[,[a,b]]of d)c[a]=b;return c}(b,e.headerOrder),bodyString:JSON.stringify(c&&"object"==typeof c&&!Array.isArray(c)?function(a,b){if(!b?.length||!a||"object"!=typeof a)return a;let c={},d=new Set(Object.keys(a));for(let e of b)e in a&&(c[e]=a[e],d.delete(e));for(let b of d)c[b]=a[b];return c}(c,e.bodyFieldOrder):c)}):{headers:b,bodyString:JSON.stringify(c)}}let f=new Set;function g(a){f=new Set((a||[]).map(a=>a.toLowerCase()))}function h(a){let b=a?.toLowerCase().replace(/[^a-z0-9]/g,"_");if(f.has(a?.toLowerCase()))return!0;let c=`CLI_COMPAT_${b?.toUpperCase()}`;return"1"===process.env[c]||"true"===process.env[c]||"1"===process.env.CLI_COMPAT_ALL||"true"===process.env.CLI_COMPAT_ALL}},85081:(a,b,c)=>{c.d(b,{Ay:()=>j});var d=c(77598);let e=function(a){return Array.isArray(a)?a=Buffer.from(a):"string"==typeof a&&(a=Buffer.from(a,"utf8")),(0,d.createHash)("sha1").update(a).digest()},f=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i,g=function(a){let b;if(!("string"==typeof a&&f.test(a)))throw TypeError("Invalid UUID");return Uint8Array.of((b=parseInt(a.slice(0,8),16))>>>24,b>>>16&255,b>>>8&255,255&b,(b=parseInt(a.slice(9,13),16))>>>8,255&b,(b=parseInt(a.slice(14,18),16))>>>8,255&b,(b=parseInt(a.slice(19,23),16))>>>8,255&b,(b=parseInt(a.slice(24,36),16))/0x10000000000&255,b/0x100000000&255,b>>>24&255,b>>>16&255,b>>>8&255,255&b)};var h=c(50122);function i(a,b,c,d){var f=b,i=d;let j="string"==typeof a?function(a){let b=new Uint8Array((a=unescape(encodeURIComponent(a))).length);for(let c=0;c<a.length;++c)b[c]=a.charCodeAt(c);return b}(a):a,k="string"==typeof f?g(f):f;if("string"==typeof f&&(f=g(f)),f?.length!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+j.length);if(l.set(k),l.set(j,k.length),(l=e(l))[6]=15&l[6]|80,l[8]=63&l[8]|128,c){i=i||0;for(let a=0;a<16;++a)c[i+a]=l[a];return c}return(0,h.k)(l)}i.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",i.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8";let j=i},93792:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{o:()=>s});var e=c(39859),f=c(60293),g=c(51082),h=c(50101),i=c(55120),j=c(55511),k=c.n(j),l=c(85081),m=c(74075),n=c.n(m);let a=null;if(!("u">typeof caches&&"object"==typeof caches||"u">typeof EdgeRuntime))try{a=await Promise.resolve().then(c.t.bind(c,73496,23))}catch{}let q="1"===process.env.CURSOR_STREAM_DEBUG,r=(...a)=>{q&&console.log(...a)};function o(a,b){if(a.length>10&&123===a[0]&&34===a[1])try{if(a.toString("utf-8").startsWith('{"error"'))return r("[DECOMPRESS] Detected JSON error, skipping decompression"),a}catch{}if(1===b||2===b||3===b)try{return n().gunzipSync(a)}catch(c){try{return n().inflateSync(a)}catch(d){try{return n().inflateRawSync(a)}catch(e){r(`[DECOMPRESS ERROR] flags=${b}, payloadSize=${a.length}, gzip=${c.message}, deflate=${d.message}, raw=${e.message}`),r("[DECOMPRESS ERROR] First 50 bytes (hex):",a.slice(0,50).toString("hex")),r("[DECOMPRESS ERROR] First 50 bytes (utf8):",a.slice(0,50).toString("utf8").replace(/[^\x20-\x7E]/g,"."))}}}return a}function p(a){let b=a?.error?.details?.[0]?.debug?.details?.title||a?.error?.details?.[0]?.debug?.details?.detail||a?.error?.message||"API Error",c=a?.error?.code==="resource_exhausted";return new Response(JSON.stringify({error:{message:b,type:c?"rate_limit_error":"api_error",code:a?.error?.details?.[0]?.debug?.error||"unknown"}}),{status:c?f.gx.RATE_LIMITED:f.gx.BAD_REQUEST,headers:{"Content-Type":"application/json"}})}class s extends e.H{constructor(){super("cursor",f.xq.cursor)}buildUrl(){return`${this.config.baseUrl}${this.config.chatPath||""}`}generateChecksum(a){let b=Math.floor(Date.now()/1e6),c=new Uint8Array([b>>40&255,b>>32&255,b>>24&255,b>>16&255,b>>8&255,255&b]),d=165;for(let a=0;a<c.length;a++)c[a]=(c[a]^d)+a%256&255,d=c[a];let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",f="";for(let a=0;a<c.length;a+=3){let b=c[a],d=a+1<c.length?c[a+1]:0,g=a+2<c.length?c[a+2]:0;f+=e[b>>2],f+=e[(3&b)<<4|d>>4],a+1<c.length&&(f+=e[(15&d)<<2|g>>6]),a+2<c.length&&(f+=e[63&g])}return`${f}${a}`}buildHeaders(a){let b=a.accessToken,c=a.providerSpecificData?.machineId,d=a.providerSpecificData?.ghostMode!==!1;if(!c)throw Error("Machine ID is required for Cursor API");let e=b.includes("::")?b.split("::")[1]:b;return{authorization:`Bearer ${e}`,"connect-accept-encoding":"gzip","connect-protocol-version":"1","content-type":"application/connect+proto","user-agent":"connect-es/1.6.1","x-amzn-trace-id":`Root=${k().randomUUID()}`,"x-client-key":k().createHash("sha256").update(e).digest("hex"),"x-cursor-checksum":this.generateChecksum(c),"x-cursor-client-version":"2.3.41","x-cursor-client-type":"ide","x-cursor-client-os":"win32"===process.platform?"windows":"darwin"===process.platform?"macos":"linux","x-cursor-client-arch":"arm64"===process.arch?"aarch64":"x64","x-cursor-client-device-type":"desktop","x-cursor-config-version":k().randomUUID(),"x-cursor-timezone":Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC","x-ghost-mode":d?"true":"false","x-request-id":k().randomUUID(),"x-session-id":(0,l.Ay)(e,l.Ay.DNS)}}transformRequest(a,b,c,d){let e=b.messages||[],f=b.tools||[],h=b.reasoning_effort||null;return(0,g.yI)(e,a,f,h)}async makeFetchRequest(a,b,c,d){let e=await fetch(a,{method:"POST",headers:b,body:c,signal:d});return{status:e.status,headers:Object.fromEntries(e.headers.entries()),body:Buffer.from(await e.arrayBuffer())}}makeHttp2Request(b,c,d,e){if(!a)throw Error("http2 module not available");return new Promise((g,h)=>{let i=new URL(b),j=a.connect(`https://${i.host}`),k=[],l={};j.on("error",h);let m=j.request({":method":"POST",":path":i.pathname,":authority":i.host,":scheme":"https",...c});m.on("response",a=>{l=a}),m.on("data",a=>{k.push(a)}),m.on("end",()=>{j.close(),g({status:"number"==typeof l[":status"]?l[":status"]:Number(l[":status"]||f.gx.SERVER_ERROR),headers:l,body:Buffer.concat(k)})}),m.on("error",a=>{j.close(),h(a)}),e&&e.addEventListener("abort",()=>{m.close(),j.close(),h(Error("Request aborted"))}),m.write(d),m.end()})}async execute({model:b,body:c,stream:d,credentials:e,signal:g,log:h}){let i=this.buildUrl(),j=this.buildHeaders(e),k=this.transformRequest(b,c,d,e);try{let e=a?await this.makeHttp2Request(i,j,k,g):await this.makeFetchRequest(i,j,k,g);if(200!==e.status){let a=e.body?.toString()||"Unknown error";return{response:new Response(JSON.stringify({error:{message:`[${e.status}]: ${a}`,type:"invalid_request_error",code:""}}),{status:e.status,headers:{"Content-Type":"application/json"}}),url:i,headers:j,transformedBody:c}}return{response:!1!==d?this.transformProtobufToSSE(e.body,b,c):this.transformProtobufToJSON(e.body,b,c),url:i,headers:j,transformedBody:c}}catch(a){return{response:new Response(JSON.stringify({error:{message:a.message,type:"connection_error",code:""}}),{status:f.gx.SERVER_ERROR,headers:{"Content-Type":"application/json"}}),url:i,headers:j,transformedBody:c}}}transformProtobufToJSON(a,b,c){let d=`chatcmpl-cursor-${Date.now()}`,e=Math.floor(Date.now()/1e3),j=0,k="",l=[],m=new Map,n=new Set,q=0;for(r(`[CURSOR BUFFER] Total length: ${a.length} bytes`);j<a.length;){if(j+5>a.length){r(`[CURSOR BUFFER] Reached end, offset=${j}, remaining=${a.length-j}`);break}let b=a[j],c=a.readUInt32BE(j+1);if(r(`[CURSOR BUFFER] Frame ${q+1}: flags=0x${b.toString(16).padStart(2,"0")}, length=${c}`),j+5+c>a.length){r(`[CURSOR BUFFER] Incomplete frame, offset=${j}, length=${c}, buffer.length=${a.length}`);break}let d=a.slice(j+5,j+5+c);if(j+=5+c,q++,!(d=o(d,b))){r(`[CURSOR BUFFER] Frame ${q}: decompression failed, skipping`);continue}if(d.length>0&&123===d[0])try{let a=d.toString("utf-8");if(a.includes('"error"')){let b=k||m.size>0;if(r(`[CURSOR BUFFER] Error frame (hasContent=${b}): ${a.slice(0,500)}`),b)break;return p(JSON.parse(a))}}catch{}let e=(0,g.CP)(new Uint8Array(d));if(r(`[CURSOR DECODED] Frame ${q}:`,e),e.error){let a=k||m.size>0;if(r(`[CURSOR BUFFER] Decoded error (hasContent=${a}): ${e.error}`),a)break;return new Response(JSON.stringify({error:{message:e.error,type:"rate_limit_error",code:"rate_limited"}}),{status:f.gx.RATE_LIMITED,headers:{"Content-Type":"application/json"}})}if(e.toolCall){let a=e.toolCall;if(m.has(a.id)){let b=m.get(a.id);b.function.arguments+=a.function.arguments,b.isLast=a.isLast}else m.set(a.id,{...a});if(a.isLast){let b=m.get(a.id);n.add(a.id),l.push({id:b.id,type:b.type,function:{name:b.function.name,arguments:b.function.arguments}})}}e.text&&(k+=e.text)}for(let[a,b]of(r(`[CURSOR BUFFER] Parsed ${q} frames, toolCallsMap size: ${m.size}, finalized toolCalls: ${l.length}`),m.entries()))n.has(a)||(r(`[CURSOR BUFFER] Finalizing incomplete tool call: ${a}, isLast=${b.isLast}`),l.push({id:b.id,type:b.type,function:{name:b.function.name,arguments:b.function.arguments}}));r(`[CURSOR BUFFER] Final toolCalls count: ${l.length}`);let s={role:"assistant",content:k||null};l.length>0&&(s.tool_calls=l);let t=(0,h.OF)(c,k.length,i.h.OPENAI),u={id:d,object:"chat.completion",created:e,model:b,choices:[{index:0,message:s,finish_reason:l.length>0?"tool_calls":"stop"}],usage:t};return new Response(JSON.stringify(u),{status:200,headers:{"Content-Type":"application/json"}})}transformProtobufToSSE(a,b,c){let d=`chatcmpl-cursor-${Date.now()}`,e=Math.floor(Date.now()/1e3),j=[],k=0,l="",m=[],n=new Map,q=new Set,s=new Set,t=0;for(r(`[CURSOR BUFFER SSE] Total length: ${a.length} bytes`);k<a.length;){if(k+5>a.length){r(`[CURSOR BUFFER SSE] Reached end, offset=${k}, remaining=${a.length-k}`);break}let c=a[k],h=a.readUInt32BE(k+1);if(r(`[CURSOR BUFFER SSE] Frame ${t+1}: flags=0x${c.toString(16).padStart(2,"0")}, length=${h}`),k+5+h>a.length){r(`[CURSOR BUFFER SSE] Incomplete frame, offset=${k}, length=${h}, buffer.length=${a.length}`);break}let i=a.slice(k+5,k+5+h);if(k+=5+h,t++,!(i=o(i,c))){r(`[CURSOR BUFFER SSE] Frame ${t}: decompression failed, skipping`);continue}if(123===i[0])try{let a=i.toString("utf-8");if(a.includes('"error"')){let b=j.length>0||l||n.size>0;if(r(`[CURSOR BUFFER SSE] Error frame (hasContent=${b}): ${a.slice(0,500)}`),b)break;return p(JSON.parse(a))}}catch{}let u=(0,g.CP)(new Uint8Array(i));if(r(`[CURSOR DECODED SSE] Frame ${t}:`,u),u.error){let a=j.length>0||l||n.size>0;if(r(`[CURSOR BUFFER SSE] Decoded error (hasContent=${a}): ${u.error}`),a)break;return new Response(JSON.stringify({error:{message:u.error,type:"rate_limit_error",code:"rate_limited"}}),{status:f.gx.RATE_LIMITED,headers:{"Content-Type":"application/json"}})}if(u.toolCall){let a=u.toolCall;if(0===j.length&&j.push(`data: ${JSON.stringify({id:d,object:"chat.completion.chunk",created:e,model:b,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}
|
|
16
16
|
|
|
17
17
|
`),n.has(a.id)){let c=n.get(a.id);c.function.arguments.length,c.function.arguments+=a.function.arguments,c.isLast=a.isLast,a.function.arguments&&(s.add(a.id),j.push(`data: ${JSON.stringify({id:d,object:"chat.completion.chunk",created:e,model:b,choices:[{index:0,delta:{tool_calls:[{index:c.index,id:a.id,type:"function",function:{name:a.function.name,arguments:a.function.arguments}}]},finish_reason:null}]})}
|
|
18
18
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=7669,exports.ids=[7669],exports.modules={12620:(a,b,c)=>{c.d(b,{ez:()=>i,getAllCircuitBreakerStatuses:()=>l,getCircuitBreaker:()=>k,resetAllCircuitBreakers:()=>m});var d=c(97917);let e="CLOSED",f="OPEN",g="HALF_OPEN";class h{constructor(a,b={}){this.name=a,this.failureThreshold=b.failureThreshold??5,this.resetTimeout=b.resetTimeout??3e4,this.halfOpenRequests=b.halfOpenRequests??1,this.onStateChange=b.onStateChange||null,this.isFailure=b.isFailure||(()=>!0),this.state=e,this.failureCount=0,this.successCount=0,this.lastFailureTime=null,this.halfOpenAllowed=0,this._restoreFromDb()}_restoreFromDb(){try{let a=(0,d.vX)(this.name);a&&((a.state===e||a.state===f||a.state===g)&&(this.state=a.state),this.failureCount=a.failureCount,this.lastFailureTime=a.lastFailureTime,this.state===g&&(this.halfOpenAllowed=this.halfOpenRequests))}catch{}}_persistToDb(){try{(0,d.QM)(this.name,{state:this.state,failureCount:this.failureCount,lastFailureTime:this.lastFailureTime,options:{failureThreshold:this.failureThreshold,resetTimeout:this.resetTimeout,halfOpenRequests:this.halfOpenRequests}})}catch{}}async execute(a){if(this.state===f)if(this._shouldAttemptReset())this._transition(g);else throw new i(`Circuit breaker "${this.name}" is OPEN. Try again later.`,this.name,this._timeUntilReset());if(this.state===g&&this.halfOpenAllowed<=0)throw new i(`Circuit breaker "${this.name}" is HALF_OPEN, no more probe requests allowed.`,this.name,this._timeUntilReset());this.state===g&&this.halfOpenAllowed--;try{let b=await a();return this._onSuccess(),b}catch(a){throw this.isFailure(a)&&this._onFailure(),a}}canExecute(){return this.state===e||(this.state===f?this._shouldAttemptReset():this.state===g&&this.halfOpenAllowed>0)}getStatus(){return{name:this.name,state:this.state,failureCount:this.failureCount,lastFailureTime:this.lastFailureTime}}reset(){this._transition(e),this.failureCount=0,this.successCount=0,this.lastFailureTime=null,this._persistToDb()}_onSuccess(){this.state===g&&(this.successCount++,this._transition(e),this.failureCount=0),this.failureCount=0,this._persistToDb()}_onFailure(){this.failureCount++,this.lastFailureTime=Date.now(),this.state===g?this._transition(f):this.failureCount>=this.failureThreshold&&this._transition(f),this._persistToDb()}_shouldAttemptReset(){return!this.lastFailureTime||Date.now()-this.lastFailureTime>=this.resetTimeout}_timeUntilReset(){return this.lastFailureTime?Math.max(0,this.resetTimeout-(Date.now()-this.lastFailureTime)):0}_transition(a){let b=this.state;this.state=a,a===g&&(this.halfOpenAllowed=this.halfOpenRequests),this.onStateChange&&b!==a&&this.onStateChange(this.name,b,a)}}class i extends Error{constructor(a,b,c){super(a),this.name="CircuitBreakerOpenError",this.circuitName=b,this.retryAfterMs=c}}let j=new Map;function k(a,b){return j.has(a)||j.set(a,new h(a,b)),j.get(a)}function l(){try{for(let a of(0,d.xd)())j.has(a.name)||k(a.name)}catch{}return Array.from(j.values()).map(a=>a.getStatus())}function m(){for(let a of j.values())a.reset();j.clear();try{(0,d.G7)()}catch{}}},17669:(a,b,c)=>{c.d(b,{Pr:()=>w,Vg:()=>function a(b,c,d=new Set,e=0){if(e>3)throw Error(`Max combo nesting depth (3) exceeded at "${b}"`);if(d.has(b))throw Error(`Circular combo reference detected: ${b}`);d.add(b);let f=Array.isArray(c)?c:c?.combos||[],g=f.find(a=>a.name===b);if(g&&g.models)for(let b of g.models){let c=r(b).model;f.find(a=>a.name===c)&&a(c,f,new Set(d),e+1)}}});var d=c(74163),e=c(71861),f=c(27899);let g={strategy:"priority",maxRetries:1,retryDelayMs:2e3,timeoutMs:12e4,concurrencyPerModel:3,queueTimeoutMs:3e4,healthCheckEnabled:!0,healthCheckTimeoutMs:3e3,maxComboDepth:3,trackMetrics:!0};function h(a,b,c){let d=b?.comboDefaults||{},e=c&&b?.providerOverrides?.[c]||{},f=a?.config||{},h=a=>Object.fromEntries(Object.entries(a).filter(([,a])=>null!=a));return{...g,...h(d),...h(e),...h(f)}}let i=new Map;function j(a,b=3){i.has(a)||i.set(a,{running:0,max:b,queue:[],rateLimitedUntil:null});let c=i.get(a);return c.max=b,c}function k(a){return!!a.rateLimitedUntil&&(!(Date.now()>=a.rateLimitedUntil)||(a.rateLimitedUntil=null,!1))}function l(a){let b=i.get(a);if(b)for(;b.queue.length>0&&b.running<b.max&&!k(b);){let c=b.queue.shift();clearTimeout(c.timer),b.running++,c.resolve(m(a))}}function m(a){let b=!1;return()=>{if(b)return;b=!0;let c=i.get(a);c&&c.running>0&&(c.running--,l(a))}}var n=c(12620),o=c(99939);let p=[429,502,503,504],q=new Map;function r(a){return"string"==typeof a?{model:a,weight:0}:{model:a.model,weight:a.weight||0}}function s(a,b,c=new Set,d=0){if(d>3)return a.models.map(a=>r(a).model);if(c.has(a.name))return[];c.add(a.name);let e=Array.isArray(b)?b:b?.combos||[],f=[];for(let b of a.models||[]){let a=r(b).model,g=e.find(b=>b.name===a);if(g){let a=s(g,e,new Set(c),d+1);f.push(...a)}else f.push(a)}return f}function t(a){let b=a.map(a=>r(a)),c=b.reduce((a,b)=>a+b.weight,0);if(c<=0)return b[Math.floor(Math.random()*b.length)].model;let d=Math.random()*c;for(let a of b)if((d-=a.weight)<=0)return a.model;return b[b.length-1].model}function u(a,b){let c=a.map(a=>r(a));return[c.find(a=>a.model===b),...c.filter(a=>a.model!==b).sort((a,b)=>b.weight-a.weight)].filter(Boolean).map(a=>a.model)}async function v(a){try{let{getPricingForModel:b}=await Promise.resolve().then(c.bind(c,22901)),d=await Promise.all(a.map(async a=>{let c=(0,o.Xh)(a),d=c.provider||c.providerAlias||"unknown",e=c.model||a;try{let c=await b(d,e);return{modelStr:a,cost:c?.input??1/0}}catch{return{modelStr:a,cost:1/0}}}));return d.sort((a,b)=>a.cost-b.cost),d.map(a=>a.modelStr)}catch{return a}}async function w({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l}){let m,q=b.strategy||"priority",w=b.models||[];if("round-robin"===q)return x({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l});let y=k?h(b,k):{...g,...b.config||{}},z=y.maxRetries??1,A=y.retryDelayMs??2e3;if(l){let a=s(b,l);if("weighted"===q){let a=t(w);m=(m=u(w,a)).flatMap(a=>{let b=(Array.isArray(l)?l:l?.combos||[]).find(b=>b.name===a);return b?s(b,l):[a]}),j.info("COMBO",`Weighted selection with nested resolution: ${m.length} total models`)}else m=a,j.info("COMBO",`${q} with nested resolution: ${m.length} total models`)}else if("weighted"===q){let a=t(w);m=u(w,a),j.info("COMBO",`Weighted selection: ${a} (from ${w.length} models)`)}else m=w.map(a=>r(a).model);"random"===q?(m=function(a){for(let b=a.length-1;b>0;b--){let c=Math.floor(Math.random()*(b+1));[a[b],a[c]]=[a[c],a[b]]}return a}([...m]),j.info("COMBO",`Random shuffle: ${m.length} models`)):"least-used"===q?(m=function(a,b){let c=(0,f.A5)(b);if(!c||!c.byModel)return a;let d=a.map(a=>({modelStr:a,requests:c.byModel[a]?.requests??0}));return d.sort((a,b)=>a.requests-b.requests),d.map(a=>a.modelStr)}(m,b.name),j.info("COMBO",`Least-used ordering: ${m[0]} has fewest requests`)):"cost-optimized"===q&&(m=await v(m),j.info("COMBO",`Cost-optimized ordering: cheapest first (${m[0]})`));let B=null,C=null,D=null,E=Date.now(),F=0;for(let e=0;e<m.length;e++){let g=m[e],h=(0,o.Xh)(g),k=h.provider||h.providerAlias||"unknown",l=(0,d.T_)(k),r=`combo:${g}`,s=(0,n.getCircuitBreaker)(r,{failureThreshold:l.circuitBreakerThreshold,resetTimeout:l.circuitBreakerReset});if(!s.canExecute()){j.info("COMBO",`Skipping ${g}: circuit breaker OPEN for ${k}`),e>0&&F++;continue}if(i&&!await i(g)){j.info("COMBO",`Skipping ${g} (all accounts in cooldown)`),e>0&&F++;continue}for(let h=0;h<=z;h++){h>0&&(j.info("COMBO",`Retrying ${g} in ${A}ms (attempt ${h+1}/${z+1})`),await new Promise(a=>setTimeout(a,A))),j.info("COMBO",`Trying model ${e+1}/${m.length}: ${g}${h>0?` (retry ${h})`:""}`);let i=await c(a,g);if(i.ok){let a=Date.now()-E;return j.info("COMBO",`Model ${g} succeeded (${a}ms, ${F} fallbacks)`),(0,f.JF)(b.name,g,{success:!0,latencyMs:a,fallbackCount:F,strategy:q}),i}let l=i.statusText||"",n=null;try{let a=i.clone();try{let b=await a.json();l=b?.error?.message||b?.error||b?.message||l,n=b?.retryAfter||null}catch{try{let a=await i.text();a&&(l=a.substring(0,500))}catch{}}}catch{}if(n&&(!C||new Date(n)<new Date(C))&&(C=n),"string"!=typeof l)try{l=JSON.stringify(l)}catch{l=String(l)}let{shouldFallback:o,cooldownMs:r}=(0,d.hk)(i.status,l,0,null,k);if(p.includes(i.status)&&s._onFailure(),!o)return j.warn("COMBO",`Model ${g} failed (no fallback)`,{status:i.status}),i;let t=[408,429,500,502,503,504].includes(i.status);if(!(h<z)||!t){B=l||String(i.status),D||(D=i.status),e>0&&F++,j.warn("COMBO",`Model ${g} failed, trying next`,{status:i.status});break}}}let G=m.every(a=>!(0,n.getCircuitBreaker)(`combo:${a}`).canExecute()),H=Date.now()-E;if((0,f.JF)(b.name,null,{success:!1,latencyMs:H,fallbackCount:F,strategy:q}),G)return j.warn("COMBO","All models have circuit breaker OPEN — aborting"),(0,e.wO)(503,"All providers temporarily unavailable (circuit breakers open)");let I=D||406,J=B||"All combo models unavailable";if(C){let a=(0,d.Qo)(C);return j.warn("COMBO",`All models failed | ${J} (${a})`),(0,e.wO)(I,J,C,a)}return j.warn("COMBO",`All models failed | ${J}`),new Response(JSON.stringify({error:{message:J}}),{status:I,headers:{"Content-Type":"application/json"}})}async function x({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:t,settings:u,allCombos:v}){let w,x=b.models||[],y=u?h(b,u):{...g,...b.config||{}},z=y.concurrencyPerModel??3,A=y.queueTimeoutMs??3e4,B=y.maxRetries??1,C=y.retryDelayMs??2e3,D=(w=v?s(b,v):x.map(a=>r(a).model)).length;if(0===D)return(0,e.wO)(406,"Round-robin combo has no models");let E=q.get(b.name)||0;q.set(b.name,E+1);let F=E%D,G=Date.now(),H=null,I=null,J=null,K=0;for(let e=0;e<D;e++){let g,h=w[(F+e)%D],q=(0,o.Xh)(h),r=q.provider||q.providerAlias||"unknown",s=(0,d.T_)(r),u=`combo:${h}`,v=(0,n.getCircuitBreaker)(u,{failureThreshold:s.circuitBreakerThreshold,resetTimeout:s.circuitBreakerReset});if(!v.canExecute()){t.info("COMBO-RR",`Skipping ${h}: circuit breaker OPEN for ${r}`),e>0&&K++;continue}if(i&&!await i(h)){t.info("COMBO-RR",`Skipping ${h} (all accounts in cooldown)`),e>0&&K++;continue}try{g=await function(a,{maxConcurrency:b=3,timeoutMs:c=3e4}={}){let d=j(a,b);return d.running<d.max&&!k(d)?(d.running++,Promise.resolve(m(a))):new Promise((b,e)=>{let f=setTimeout(()=>{let b=d.queue.findIndex(a=>a.timer===f);-1!==b&&d.queue.splice(b,1);let g=Error(`Semaphore timeout after ${c}ms for ${a}`);g.code="SEMAPHORE_TIMEOUT",e(g)},c);d.queue.push({resolve:b,reject:e,timer:f})})}(h,{maxConcurrency:z,timeoutMs:A})}catch(a){if("SEMAPHORE_TIMEOUT"===a.code){t.warn("COMBO-RR",`Semaphore timeout for ${h}, trying next model`),e>0&&K++;continue}throw a}try{for(let g=0;g<=B;g++){g>0&&(t.info("COMBO-RR",`Retrying ${h} in ${C}ms (attempt ${g+1}/${B+1})`),await new Promise(a=>setTimeout(a,C))),t.info("COMBO-RR",`[RR #${E}] → ${h}${e>0?` (fallback +${e})`:""}${g>0?` (retry ${g})`:""}`);let i=await c(a,h);if(i.ok){let a=Date.now()-G;return t.info("COMBO-RR",`${h} succeeded (${a}ms, ${K} fallbacks)`),(0,f.JF)(b.name,h,{success:!0,latencyMs:a,fallbackCount:K,strategy:"round-robin"}),i}let k=i.statusText||"",m=null;try{let a=i.clone();try{let b=await a.json();k=b?.error?.message||b?.error||b?.message||k,m=b?.retryAfter||null}catch{try{let a=await i.text();a&&(k=a.substring(0,500))}catch{}}}catch{}if(m&&(!J||new Date(m)<new Date(J))&&(J=m),"string"!=typeof k)try{k=JSON.stringify(k)}catch{k=String(k)}let{shouldFallback:n,cooldownMs:o}=(0,d.hk)(i.status,k,0,null,r);if(p.includes(i.status)&&o>0&&(!function(a,b){let c=j(a);c.rateLimitedUntil=Date.now()+b,setTimeout(()=>{c.rateLimitedUntil&&Date.now()>=c.rateLimitedUntil&&(c.rateLimitedUntil=null,l(a))},b+50)}(h,o),v._onFailure(),t.warn("COMBO-RR",`${h} error ${i.status}, cooldown ${o}ms (breaker: ${v.getStatus().failureCount}/${s.circuitBreakerThreshold})`)),!n)return t.warn("COMBO-RR",`${h} failed (no fallback)`,{status:i.status}),i;let q=[408,429,500,502,503,504].includes(i.status);if(!(g<B)||!q){H=k||String(i.status),I||(I=i.status),e>0&&K++,t.warn("COMBO-RR",`${h} failed, trying next model`,{status:i.status});break}}}finally{g()}}let L=Date.now()-G;if((0,f.JF)(b.name,null,{success:!1,latencyMs:L,fallbackCount:K,strategy:"round-robin"}),w.every(a=>!(0,n.getCircuitBreaker)(`combo:${a}`).canExecute()))return t.warn("COMBO-RR","All models have circuit breaker OPEN — aborting"),(0,e.wO)(503,"All providers temporarily unavailable (circuit breakers open)");let M=I||406,N=H||"All round-robin combo models unavailable";if(J){let a=(0,d.Qo)(J);return t.warn("COMBO-RR",`All models failed | ${N} (${a})`),(0,e.wO)(M,N,J,a)}return t.warn("COMBO-RR",`All models failed | ${N}`),new Response(JSON.stringify({error:{message:N}}),{status:M,headers:{"Content-Type":"application/json"}})}},27899:(a,b,c)=>{c.d(b,{A5:()=>f,BS:()=>g,Go:()=>i,JF:()=>e,NZ:()=>h});let d=new Map;function e(a,b,{success:c,latencyMs:e,fallbackCount:f=0,strategy:g="priority"}){d.has(a)||d.set(a,{totalRequests:0,totalSuccesses:0,totalFailures:0,totalFallbacks:0,totalLatencyMs:0,strategy:g,lastUsedAt:null,byModel:{}});let h=d.get(a);if(h&&(h.totalRequests++,h.totalLatencyMs+=e,h.totalFallbacks+=f,h.lastUsedAt=new Date().toISOString(),h.strategy=g,c?h.totalSuccesses++:h.totalFailures++,b)){h.byModel[b]||(h.byModel[b]={requests:0,successes:0,failures:0,totalLatencyMs:0,lastStatus:null,lastUsedAt:null});let a=h.byModel[b];a.requests++,a.totalLatencyMs+=e,a.lastUsedAt=new Date().toISOString(),c?(a.successes++,a.lastStatus="ok"):(a.failures++,a.lastStatus="error")}}function f(a){let b=d.get(a);return b?{...b,avgLatencyMs:b.totalRequests>0?Math.round(b.totalLatencyMs/b.totalRequests):0,successRate:b.totalRequests>0?Math.round(b.totalSuccesses/b.totalRequests*100):0,fallbackRate:b.totalRequests>0?Math.round(b.totalFallbacks/b.totalRequests*100):0,byModel:Object.fromEntries(Object.entries(b.byModel).map(([a,b])=>[a,{...b,avgLatencyMs:b.requests>0?Math.round(b.totalLatencyMs/b.requests):0,successRate:b.requests>0?Math.round(b.successes/b.requests*100):0}]))}:null}function g(){let a={};for(let[b]of d)a[b]=f(b);return a}function h(a){d.delete(a)}function i(){d.clear()}},99939:(a,b,c)=>{c.d(b,{Xh:()=>i,js:()=>j});var d=c(23969);let e={};for(let[a,b]of Object.entries(d.PROVIDER_ID_TO_ALIAS))e[b]&&console.log(`[MODEL] Warning: alias "${b}" maps to both "${e[b]}" and "${a}". Using "${a}".`),e[b]=a;let f={github:{"claude-4.5-opus":"claude-opus-4-5-20251101","claude-opus-4.5":"claude-opus-4-5-20251101","gemini-3-pro":"gemini-3-pro-preview","gemini-3-flash":"gemini-3-flash-preview","raptor-mini":"oswe-vscode-prime"},antigravity:{}},g=new Map;for(let[a,b]of Object.entries(d.vq)){let c=e[a]||a;for(let a of b||[]){let b=a?.id;if(!b)continue;let d=g.get(b)||[];d.includes(c)||(d.push(c),g.set(b,d))}}function h(a,b){if(!b||"string"!=typeof b)return b;let c=f[e[a]||a];return c?.[b]||b}function i(a){if(!a)return{provider:null,model:null,isAlias:!1,providerAlias:null,extendedContext:!1};if(/\.\.[\/\\]/.test(a)||/[\x00-\x1f]/.test(a))return console.log(`[MODEL] Warning: rejected malformed model string: "${a.substring(0,50)}"`),{provider:null,model:null,isAlias:!1,providerAlias:null,extendedContext:!1};let b=!1,c=a;if(c.endsWith("[1m]")&&(b=!0,c=c.slice(0,-4)),c.includes("/")){let a=c.indexOf("/"),d=c.slice(0,a),f=c.slice(a+1);return{provider:e[d]||d,model:f,isAlias:!1,providerAlias:d,extendedContext:b}}return{provider:null,model:c,isAlias:!0,providerAlias:null,extendedContext:b}}async function j(a,b){let c=i(a),{extendedContext:f}=c;if(!c.isAlias){let a=h(c.provider,c.model);return{provider:c.provider,model:a,extendedContext:f}}let j="function"==typeof b?await b():b,k=function(a,b){var c,d;if(!b)return null;let f=b[a];if(!f)return null;if("string"==typeof f&&f.includes("/")){let a=f.indexOf("/");return{provider:e[c=f.slice(0,a)]||c,model:f.slice(a+1)}}return"object"==typeof f&&f.provider&&f.model?{provider:e[d=f.provider]||d,model:f.model}:null}(c.model,j);if(k){let a=h(k.provider,k.model);return{provider:k.provider,model:a,extendedContext:f}}let l=c.model,m=g.get(l)||[];if(m.includes("openai"))return{provider:"openai",model:l,extendedContext:f};let n=m.filter(a=>"openai"!==a);if(1===n.length){let a=n[0],b=h(a,l);return{provider:a,model:b,extendedContext:f}}if(n.length>1){let a=n.map(a=>d.PROVIDER_ID_TO_ALIAS[a]||a),b=a.slice(0,2).map(a=>`${a}/${l}`),c=`Ambiguous model '${l}'. Use provider/model prefix (ex: ${b.join(" or ")}).`;return console.warn(`[MODEL] ${c} Candidates: ${a.join(", ")}`),{provider:null,model:l,errorType:"ambiguous_model",errorMessage:c,candidateProviders:n,candidateAliases:a}}return{provider:"openai",model:l,extendedContext:f}}}};
|
|
1
|
+
"use strict";exports.id=7669,exports.ids=[7669],exports.modules={12620:(a,b,c)=>{c.d(b,{ez:()=>i,getAllCircuitBreakerStatuses:()=>l,getCircuitBreaker:()=>k,resetAllCircuitBreakers:()=>m});var d=c(97917);let e="CLOSED",f="OPEN",g="HALF_OPEN";class h{constructor(a,b={}){this.name=a,this.failureThreshold=b.failureThreshold??5,this.resetTimeout=b.resetTimeout??3e4,this.halfOpenRequests=b.halfOpenRequests??1,this.onStateChange=b.onStateChange||null,this.isFailure=b.isFailure||(()=>!0),this.state=e,this.failureCount=0,this.successCount=0,this.lastFailureTime=null,this.halfOpenAllowed=0,this._restoreFromDb()}_restoreFromDb(){try{let a=(0,d.vX)(this.name);a&&((a.state===e||a.state===f||a.state===g)&&(this.state=a.state),this.failureCount=a.failureCount,this.lastFailureTime=a.lastFailureTime,this.state===g&&(this.halfOpenAllowed=this.halfOpenRequests))}catch{}}_persistToDb(){try{(0,d.QM)(this.name,{state:this.state,failureCount:this.failureCount,lastFailureTime:this.lastFailureTime,options:{failureThreshold:this.failureThreshold,resetTimeout:this.resetTimeout,halfOpenRequests:this.halfOpenRequests}})}catch{}}async execute(a){if(this.state===f)if(this._shouldAttemptReset())this._transition(g);else throw new i(`Circuit breaker "${this.name}" is OPEN. Try again later.`,this.name,this._timeUntilReset());if(this.state===g&&this.halfOpenAllowed<=0)throw new i(`Circuit breaker "${this.name}" is HALF_OPEN, no more probe requests allowed.`,this.name,this._timeUntilReset());this.state===g&&this.halfOpenAllowed--;try{let b=await a();return this._onSuccess(),b}catch(a){throw this.isFailure(a)&&this._onFailure(),a}}canExecute(){return this.state===e||(this.state===f?this._shouldAttemptReset():this.state===g&&this.halfOpenAllowed>0)}getStatus(){return{name:this.name,state:this.state,failureCount:this.failureCount,lastFailureTime:this.lastFailureTime}}reset(){this._transition(e),this.failureCount=0,this.successCount=0,this.lastFailureTime=null,this._persistToDb()}_onSuccess(){this.state===g&&(this.successCount++,this._transition(e),this.failureCount=0),this.failureCount=0,this._persistToDb()}_onFailure(){this.failureCount++,this.lastFailureTime=Date.now(),this.state===g?this._transition(f):this.failureCount>=this.failureThreshold&&this._transition(f),this._persistToDb()}_shouldAttemptReset(){return!this.lastFailureTime||Date.now()-this.lastFailureTime>=this.resetTimeout}_timeUntilReset(){return this.lastFailureTime?Math.max(0,this.resetTimeout-(Date.now()-this.lastFailureTime)):0}_transition(a){let b=this.state;this.state=a,a===g&&(this.halfOpenAllowed=this.halfOpenRequests),this.onStateChange&&b!==a&&this.onStateChange(this.name,b,a)}}class i extends Error{constructor(a,b,c){super(a),this.name="CircuitBreakerOpenError",this.circuitName=b,this.retryAfterMs=c}}let j=new Map;function k(a,b){return j.has(a)||j.set(a,new h(a,b)),j.get(a)}function l(){try{for(let a of(0,d.xd)())j.has(a.name)||k(a.name)}catch{}return Array.from(j.values()).map(a=>a.getStatus())}function m(){for(let a of j.values())a.reset();j.clear();try{(0,d.G7)()}catch{}}},17669:(a,b,c)=>{c.d(b,{Pr:()=>w,Vg:()=>function a(b,c,d=new Set,e=0){if(e>3)throw Error(`Max combo nesting depth (3) exceeded at "${b}"`);if(d.has(b))throw Error(`Circular combo reference detected: ${b}`);d.add(b);let f=Array.isArray(c)?c:c?.combos||[],g=f.find(a=>a.name===b);if(g&&g.models)for(let b of g.models){let c=r(b).model;f.find(a=>a.name===c)&&a(c,f,new Set(d),e+1)}}});var d=c(74163),e=c(71861),f=c(27899);let g={strategy:"priority",maxRetries:1,retryDelayMs:2e3,timeoutMs:12e4,concurrencyPerModel:3,queueTimeoutMs:3e4,healthCheckEnabled:!0,healthCheckTimeoutMs:3e3,maxComboDepth:3,trackMetrics:!0};function h(a,b,c){let d=b?.comboDefaults||{},e=c&&b?.providerOverrides?.[c]||{},f=a?.config||{},h=a=>Object.fromEntries(Object.entries(a).filter(([,a])=>null!=a));return{...g,...h(d),...h(e),...h(f)}}let i=new Map;function j(a,b=3){i.has(a)||i.set(a,{running:0,max:b,queue:[],rateLimitedUntil:null});let c=i.get(a);return c.max=b,c}function k(a){return!!a.rateLimitedUntil&&(!(Date.now()>=a.rateLimitedUntil)||(a.rateLimitedUntil=null,!1))}function l(a){let b=i.get(a);if(b)for(;b.queue.length>0&&b.running<b.max&&!k(b);){let c=b.queue.shift();clearTimeout(c.timer),b.running++,c.resolve(m(a))}}function m(a){let b=!1;return()=>{if(b)return;b=!0;let c=i.get(a);c&&c.running>0&&(c.running--,l(a))}}var n=c(12620),o=c(85863);let p=[429,502,503,504],q=new Map;function r(a){return"string"==typeof a?{model:a,weight:0}:{model:a.model,weight:a.weight||0}}function s(a,b,c=new Set,d=0){if(d>3)return a.models.map(a=>r(a).model);if(c.has(a.name))return[];c.add(a.name);let e=Array.isArray(b)?b:b?.combos||[],f=[];for(let b of a.models||[]){let a=r(b).model,g=e.find(b=>b.name===a);if(g){let a=s(g,e,new Set(c),d+1);f.push(...a)}else f.push(a)}return f}function t(a){let b=a.map(a=>r(a)),c=b.reduce((a,b)=>a+b.weight,0);if(c<=0)return b[Math.floor(Math.random()*b.length)].model;let d=Math.random()*c;for(let a of b)if((d-=a.weight)<=0)return a.model;return b[b.length-1].model}function u(a,b){let c=a.map(a=>r(a));return[c.find(a=>a.model===b),...c.filter(a=>a.model!==b).sort((a,b)=>b.weight-a.weight)].filter(Boolean).map(a=>a.model)}async function v(a){try{let{getPricingForModel:b}=await Promise.resolve().then(c.bind(c,75585)),d=await Promise.all(a.map(async a=>{let c=(0,o.Xh)(a),d=c.provider||c.providerAlias||"unknown",e=c.model||a;try{let c=await b(d,e);return{modelStr:a,cost:c?.input??1/0}}catch{return{modelStr:a,cost:1/0}}}));return d.sort((a,b)=>a.cost-b.cost),d.map(a=>a.modelStr)}catch{return a}}async function w({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l}){let m,q=b.strategy||"priority",w=b.models||[];if("round-robin"===q)return x({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l});let y=k?h(b,k):{...g,...b.config||{}},z=y.maxRetries??1,A=y.retryDelayMs??2e3;if(l){let a=s(b,l);if("weighted"===q){let a=t(w);m=(m=u(w,a)).flatMap(a=>{let b=(Array.isArray(l)?l:l?.combos||[]).find(b=>b.name===a);return b?s(b,l):[a]}),j.info("COMBO",`Weighted selection with nested resolution: ${m.length} total models`)}else m=a,j.info("COMBO",`${q} with nested resolution: ${m.length} total models`)}else if("weighted"===q){let a=t(w);m=u(w,a),j.info("COMBO",`Weighted selection: ${a} (from ${w.length} models)`)}else m=w.map(a=>r(a).model);"random"===q?(m=function(a){for(let b=a.length-1;b>0;b--){let c=Math.floor(Math.random()*(b+1));[a[b],a[c]]=[a[c],a[b]]}return a}([...m]),j.info("COMBO",`Random shuffle: ${m.length} models`)):"least-used"===q?(m=function(a,b){let c=(0,f.A5)(b);if(!c||!c.byModel)return a;let d=a.map(a=>({modelStr:a,requests:c.byModel[a]?.requests??0}));return d.sort((a,b)=>a.requests-b.requests),d.map(a=>a.modelStr)}(m,b.name),j.info("COMBO",`Least-used ordering: ${m[0]} has fewest requests`)):"cost-optimized"===q&&(m=await v(m),j.info("COMBO",`Cost-optimized ordering: cheapest first (${m[0]})`));let B=null,C=null,D=null,E=Date.now(),F=0;for(let e=0;e<m.length;e++){let g=m[e],h=(0,o.Xh)(g),k=h.provider||h.providerAlias||"unknown",l=(0,d.T_)(k),r=`combo:${g}`,s=(0,n.getCircuitBreaker)(r,{failureThreshold:l.circuitBreakerThreshold,resetTimeout:l.circuitBreakerReset});if(!s.canExecute()){j.info("COMBO",`Skipping ${g}: circuit breaker OPEN for ${k}`),e>0&&F++;continue}if(i&&!await i(g)){j.info("COMBO",`Skipping ${g} (all accounts in cooldown)`),e>0&&F++;continue}for(let h=0;h<=z;h++){h>0&&(j.info("COMBO",`Retrying ${g} in ${A}ms (attempt ${h+1}/${z+1})`),await new Promise(a=>setTimeout(a,A))),j.info("COMBO",`Trying model ${e+1}/${m.length}: ${g}${h>0?` (retry ${h})`:""}`);let i=await c(a,g);if(i.ok){let a=Date.now()-E;return j.info("COMBO",`Model ${g} succeeded (${a}ms, ${F} fallbacks)`),(0,f.JF)(b.name,g,{success:!0,latencyMs:a,fallbackCount:F,strategy:q}),i}let l=i.statusText||"",n=null;try{let a=i.clone();try{let b=await a.json();l=b?.error?.message||b?.error||b?.message||l,n=b?.retryAfter||null}catch{try{let a=await i.text();a&&(l=a.substring(0,500))}catch{}}}catch{}if(n&&(!C||new Date(n)<new Date(C))&&(C=n),"string"!=typeof l)try{l=JSON.stringify(l)}catch{l=String(l)}let{shouldFallback:o,cooldownMs:r}=(0,d.hk)(i.status,l,0,null,k);if(p.includes(i.status)&&s._onFailure(),!o)return j.warn("COMBO",`Model ${g} failed (no fallback)`,{status:i.status}),i;let t=[408,429,500,502,503,504].includes(i.status);if(!(h<z)||!t){B=l||String(i.status),D||(D=i.status),e>0&&F++,j.warn("COMBO",`Model ${g} failed, trying next`,{status:i.status});break}}}let G=m.every(a=>!(0,n.getCircuitBreaker)(`combo:${a}`).canExecute()),H=Date.now()-E;if((0,f.JF)(b.name,null,{success:!1,latencyMs:H,fallbackCount:F,strategy:q}),G)return j.warn("COMBO","All models have circuit breaker OPEN — aborting"),(0,e.wO)(503,"All providers temporarily unavailable (circuit breakers open)");let I=D||406,J=B||"All combo models unavailable";if(C){let a=(0,d.Qo)(C);return j.warn("COMBO",`All models failed | ${J} (${a})`),(0,e.wO)(I,J,C,a)}return j.warn("COMBO",`All models failed | ${J}`),new Response(JSON.stringify({error:{message:J}}),{status:I,headers:{"Content-Type":"application/json"}})}async function x({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:t,settings:u,allCombos:v}){let w,x=b.models||[],y=u?h(b,u):{...g,...b.config||{}},z=y.concurrencyPerModel??3,A=y.queueTimeoutMs??3e4,B=y.maxRetries??1,C=y.retryDelayMs??2e3,D=(w=v?s(b,v):x.map(a=>r(a).model)).length;if(0===D)return(0,e.wO)(406,"Round-robin combo has no models");let E=q.get(b.name)||0;q.set(b.name,E+1);let F=E%D,G=Date.now(),H=null,I=null,J=null,K=0;for(let e=0;e<D;e++){let g,h=w[(F+e)%D],q=(0,o.Xh)(h),r=q.provider||q.providerAlias||"unknown",s=(0,d.T_)(r),u=`combo:${h}`,v=(0,n.getCircuitBreaker)(u,{failureThreshold:s.circuitBreakerThreshold,resetTimeout:s.circuitBreakerReset});if(!v.canExecute()){t.info("COMBO-RR",`Skipping ${h}: circuit breaker OPEN for ${r}`),e>0&&K++;continue}if(i&&!await i(h)){t.info("COMBO-RR",`Skipping ${h} (all accounts in cooldown)`),e>0&&K++;continue}try{g=await function(a,{maxConcurrency:b=3,timeoutMs:c=3e4}={}){let d=j(a,b);return d.running<d.max&&!k(d)?(d.running++,Promise.resolve(m(a))):new Promise((b,e)=>{let f=setTimeout(()=>{let b=d.queue.findIndex(a=>a.timer===f);-1!==b&&d.queue.splice(b,1);let g=Error(`Semaphore timeout after ${c}ms for ${a}`);g.code="SEMAPHORE_TIMEOUT",e(g)},c);d.queue.push({resolve:b,reject:e,timer:f})})}(h,{maxConcurrency:z,timeoutMs:A})}catch(a){if("SEMAPHORE_TIMEOUT"===a.code){t.warn("COMBO-RR",`Semaphore timeout for ${h}, trying next model`),e>0&&K++;continue}throw a}try{for(let g=0;g<=B;g++){g>0&&(t.info("COMBO-RR",`Retrying ${h} in ${C}ms (attempt ${g+1}/${B+1})`),await new Promise(a=>setTimeout(a,C))),t.info("COMBO-RR",`[RR #${E}] → ${h}${e>0?` (fallback +${e})`:""}${g>0?` (retry ${g})`:""}`);let i=await c(a,h);if(i.ok){let a=Date.now()-G;return t.info("COMBO-RR",`${h} succeeded (${a}ms, ${K} fallbacks)`),(0,f.JF)(b.name,h,{success:!0,latencyMs:a,fallbackCount:K,strategy:"round-robin"}),i}let k=i.statusText||"",m=null;try{let a=i.clone();try{let b=await a.json();k=b?.error?.message||b?.error||b?.message||k,m=b?.retryAfter||null}catch{try{let a=await i.text();a&&(k=a.substring(0,500))}catch{}}}catch{}if(m&&(!J||new Date(m)<new Date(J))&&(J=m),"string"!=typeof k)try{k=JSON.stringify(k)}catch{k=String(k)}let{shouldFallback:n,cooldownMs:o}=(0,d.hk)(i.status,k,0,null,r);if(p.includes(i.status)&&o>0&&(!function(a,b){let c=j(a);c.rateLimitedUntil=Date.now()+b,setTimeout(()=>{c.rateLimitedUntil&&Date.now()>=c.rateLimitedUntil&&(c.rateLimitedUntil=null,l(a))},b+50)}(h,o),v._onFailure(),t.warn("COMBO-RR",`${h} error ${i.status}, cooldown ${o}ms (breaker: ${v.getStatus().failureCount}/${s.circuitBreakerThreshold})`)),!n)return t.warn("COMBO-RR",`${h} failed (no fallback)`,{status:i.status}),i;let q=[408,429,500,502,503,504].includes(i.status);if(!(g<B)||!q){H=k||String(i.status),I||(I=i.status),e>0&&K++,t.warn("COMBO-RR",`${h} failed, trying next model`,{status:i.status});break}}}finally{g()}}let L=Date.now()-G;if((0,f.JF)(b.name,null,{success:!1,latencyMs:L,fallbackCount:K,strategy:"round-robin"}),w.every(a=>!(0,n.getCircuitBreaker)(`combo:${a}`).canExecute()))return t.warn("COMBO-RR","All models have circuit breaker OPEN — aborting"),(0,e.wO)(503,"All providers temporarily unavailable (circuit breakers open)");let M=I||406,N=H||"All round-robin combo models unavailable";if(J){let a=(0,d.Qo)(J);return t.warn("COMBO-RR",`All models failed | ${N} (${a})`),(0,e.wO)(M,N,J,a)}return t.warn("COMBO-RR",`All models failed | ${N}`),new Response(JSON.stringify({error:{message:N}}),{status:M,headers:{"Content-Type":"application/json"}})}},27899:(a,b,c)=>{c.d(b,{A5:()=>f,BS:()=>g,Go:()=>i,JF:()=>e,NZ:()=>h});let d=new Map;function e(a,b,{success:c,latencyMs:e,fallbackCount:f=0,strategy:g="priority"}){d.has(a)||d.set(a,{totalRequests:0,totalSuccesses:0,totalFailures:0,totalFallbacks:0,totalLatencyMs:0,strategy:g,lastUsedAt:null,byModel:{}});let h=d.get(a);if(h&&(h.totalRequests++,h.totalLatencyMs+=e,h.totalFallbacks+=f,h.lastUsedAt=new Date().toISOString(),h.strategy=g,c?h.totalSuccesses++:h.totalFailures++,b)){h.byModel[b]||(h.byModel[b]={requests:0,successes:0,failures:0,totalLatencyMs:0,lastStatus:null,lastUsedAt:null});let a=h.byModel[b];a.requests++,a.totalLatencyMs+=e,a.lastUsedAt=new Date().toISOString(),c?(a.successes++,a.lastStatus="ok"):(a.failures++,a.lastStatus="error")}}function f(a){let b=d.get(a);return b?{...b,avgLatencyMs:b.totalRequests>0?Math.round(b.totalLatencyMs/b.totalRequests):0,successRate:b.totalRequests>0?Math.round(b.totalSuccesses/b.totalRequests*100):0,fallbackRate:b.totalRequests>0?Math.round(b.totalFallbacks/b.totalRequests*100):0,byModel:Object.fromEntries(Object.entries(b.byModel).map(([a,b])=>[a,{...b,avgLatencyMs:b.requests>0?Math.round(b.totalLatencyMs/b.requests):0,successRate:b.requests>0?Math.round(b.successes/b.requests*100):0}]))}:null}function g(){let a={};for(let[b]of d)a[b]=f(b);return a}function h(a){d.delete(a)}function i(){d.clear()}},85863:(a,b,c)=>{c.d(b,{js:()=>k,Xh:()=>j});var d=c(23969);let e={};for(let[a,b]of Object.entries(d.PROVIDER_ID_TO_ALIAS))e[b]&&console.log(`[MODEL] Warning: alias "${b}" maps to both "${e[b]}" and "${a}". Using "${a}".`),e[b]=a;let f={github:{"claude-4.5-opus":"claude-opus-4-5-20251101","claude-opus-4.5":"claude-opus-4-5-20251101","gemini-3-pro":"gemini-3-pro-preview","gemini-3-flash":"gemini-3-flash-preview","raptor-mini":"oswe-vscode-prime"},antigravity:{}},g=new Map;for(let[a,b]of Object.entries(d.vq)){let c=e[a]||a;for(let a of b||[]){let b=a?.id;if(!b)continue;let d=g.get(b)||[];d.includes(c)||(d.push(c),g.set(b,d))}}function h(a){return e[a]||a}function i(a,b){if(!b||"string"!=typeof b)return b;let c=f[h(a)];return c?.[b]||b}function j(a){if(!a)return{provider:null,model:null,isAlias:!1,providerAlias:null,extendedContext:!1};if(/\.\.[\/\\]/.test(a)||/[\x00-\x1f]/.test(a))return console.log(`[MODEL] Warning: rejected malformed model string: "${a.substring(0,50)}"`),{provider:null,model:null,isAlias:!1,providerAlias:null,extendedContext:!1};let b=!1,c=a;if(c.endsWith("[1m]")&&(b=!0,c=c.slice(0,-4)),c.includes("/")){let a=c.indexOf("/"),d=c.slice(0,a),e=c.slice(a+1);return{provider:h(d),model:e,isAlias:!1,providerAlias:d,extendedContext:b}}return{provider:null,model:c,isAlias:!0,providerAlias:null,extendedContext:b}}async function k(a,b){let c=j(a),{extendedContext:e}=c;if(!c.isAlias){let a=i(c.provider,c.model);return{provider:c.provider,model:a,extendedContext:e}}let f="function"==typeof b?await b():b,k=function(a,b){if(!b)return null;let c=b[a];if(!c)return null;if("string"==typeof c&&c.includes("/")){let a=c.indexOf("/");return{provider:h(c.slice(0,a)),model:c.slice(a+1)}}return"object"==typeof c&&c.provider&&c.model?{provider:h(c.provider),model:c.model}:null}(c.model,f);if(k){let a=i(k.provider,k.model);return{provider:k.provider,model:a,extendedContext:e}}if(f&&"object"==typeof f){let a=Object.entries(f).map(([a,b])=>({pattern:a,target:b})),b=function(a,b){if(!a||!b||!Array.isArray(b))return null;let c=[];for(let d of b){let b=d.pattern||d.alias||d.from,e=d.target||d.model||d.to;b&&e&&function(a,b){if(!a||!b)return!1;if("*"===b||b===a)return!0;let c=b.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return RegExp(`^${c}$`,"i").test(a)}(a,b)&&c.push({pattern:b,target:e,specificity:function(a){if(!a)return 0;let b=0;for(let c of a.split(/[/*?]/))c.length>0&&(b+=10*c.length);let c=(a.match(/\*/g)||[]).length,d=(a.match(/\?/g)||[]).length;return b-=50*c,b-=5*d,b+=a.length}(b),...d})}return 0===c.length?null:(c.sort((a,b)=>b.specificity-a.specificity),c[0])}(c.model,a);if(b){let a=b.target;if(a.includes("/")){let c=a.indexOf("/"),d=a.slice(0,c),f=a.slice(c+1),g=h(d),j=i(g,f);return{provider:g,model:j,extendedContext:e,wildcardPattern:b.pattern}}}}let l=c.model,m=g.get(l)||[];if(m.includes("openai"))return{provider:"openai",model:l,extendedContext:e};let n=m.filter(a=>"openai"!==a);if(1===n.length){let a=n[0],b=i(a,l);return{provider:a,model:b,extendedContext:e}}if(n.length>1){let a=n.map(a=>d.PROVIDER_ID_TO_ALIAS[a]||a),b=a.slice(0,2).map(a=>`${a}/${l}`),c=`Ambiguous model '${l}'. Use provider/model prefix (ex: ${b.join(" or ")}).`;return console.warn(`[MODEL] ${c} Candidates: ${a.join(", ")}`),{provider:null,model:l,errorType:"ambiguous_model",errorMessage:c,candidateProviders:n,candidateAliases:a}}return/^claude-/i.test(l)?{provider:"antigravity",model:l,extendedContext:e}:/^gemini-/i.test(l)||/^gemma-/i.test(l)?{provider:"gemini",model:l,extendedContext:e}:{provider:"openai",model:l,extendedContext:e}}}};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";exports.id=8369,exports.ids=[8369],exports.modules={8959:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{DI:()=>m,IS:()=>i,JH:()=>l,Q2:()=>n,fg:()=>k,gb:()=>h,js:()=>o,mq:()=>g,zN:()=>j});var e=c(43701),f=a([e]);e=(f.then?(await f)():f)[0];let i={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},j={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},k={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",hasFree:!0,freeNote:"Free tier: 30 RPM / 14.4K RPD — no credit card"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://inference.cerebras.ai",hasFree:!0,freeNote:"Free: 1M tokens/day, 60K TPM — world's fastest inference"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://build.nvidia.com",hasFree:!0,freeNote:"Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"}},l="openai-compatible-",m="anthropic-compatible-";function g(a){return"string"==typeof a&&a.startsWith(l)}function h(a){return"string"==typeof a&&a.startsWith(m)}let n={...i,...j,...k},o=Object.values(n).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(n).reduce((a,b)=>(a[b.id]=b.alias,a),{}),(0,e.LA)(i,"FREE_PROVIDERS"),(0,e.LA)(j,"OAUTH_PROVIDERS"),(0,e.LA)(k,"APIKEY_PROVIDERS"),d()}catch(a){d(a)}})},38369:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{j:()=>t});var e=c(83596),f=c(8959),g=a([f]);f=(g.then?(await g)():g)[0];let u=new Set(["openai","openai-responses"]),v=new Set(["gemini","gemini-cli"]);function h(a){return(a||"").trim().replace(/\/$/,"")}function i(a){return{"Content-Type":"application/json",Authorization:`Bearer ${a}`}}async function j({provider:a,apiKey:b,baseUrl:c,providerSpecificData:d={},modelId:e="gpt-4o-mini",modelsUrl:g}){if(!c)return{valid:!1,error:"Missing base URL"};let j=g||function(a){let b=h(a);if(!b)return"";for(let a of["/chat/completions","/responses","/chat","/messages"])if(b.endsWith(a))return`${b.slice(0,-a.length)}/models`;return`${b}/models`}(c);if(!j)return{valid:!1,error:"Invalid models endpoint"};let k=await fetch(j,{method:"GET",headers:i(b)});if(k.ok)return{valid:!0,error:null};if(401===k.status||403===k.status)return{valid:!1,error:"Invalid API key"};let l=function(a,b,c={}){let d=h(b);return d?(0,f.mq)(a)?c?.apiType==="responses"?`${d}/responses`:`${d}/chat/completions`:d.endsWith("/chat/completions")||d.endsWith("/responses")||d.endsWith("/chat")?d:d.endsWith("/v1")?`${d}/chat/completions`:d:""}(a,c,d);if(!l)return{valid:!1,error:`Validation failed: ${k.status}`};let m=await fetch(l,{method:"POST",headers:i(b),body:JSON.stringify({model:e,messages:[{role:"user",content:"test"}],max_tokens:1})});return m.ok?{valid:!0,error:null}:401===m.status||403===m.status?{valid:!1,error:"Invalid API key"}:404===m.status||405===m.status?{valid:!1,error:"Provider validation endpoint not supported"}:m.status>=500?{valid:!1,error:`Provider unavailable (${m.status})`}:{valid:!0,error:null}}async function k({apiKey:a,baseUrl:b,modelId:c,headers:d={}}){if(!b)return{valid:!1,error:"Missing base URL"};let e={"Content-Type":"application/json",...d};e["x-api-key"]||e["X-API-Key"]||(e["x-api-key"]=a),e["anthropic-version"]||e["Anthropic-Version"]||(e["anthropic-version"]="2023-06-01");let f=await fetch(b,{method:"POST",headers:e,body:JSON.stringify({model:c||"claude-3-5-sonnet-20241022",max_tokens:1,messages:[{role:"user",content:"test"}]})});return 401===f.status||403===f.status?{valid:!1,error:"Invalid API key"}:{valid:!0,error:null}}async function l({apiKey:a,baseUrl:b}){if(!b)return{valid:!1,error:"Missing base URL"};let c=b.includes("?")?"&":"?",d=await fetch(`${b}${c}key=${encodeURIComponent(a)}`,{method:"GET",headers:{"Content-Type":"application/json"}});return d.ok?{valid:!0,error:null}:401===d.status||403===d.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${d.status}`}}async function m({apiKey:a}){try{let b=await fetch("https://api.deepgram.com/v1/auth/token",{method:"GET",headers:{Authorization:`Token ${a}`}});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${b.status}`}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function n({apiKey:a}){try{let b=await fetch("https://api.assemblyai.com/v2/transcript?limit=1",{method:"GET",headers:{Authorization:a,"Content-Type":"application/json"}});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${b.status}`}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function o({apiKey:a}){try{let b=await fetch("https://api.nanobananaapi.ai/api/v1/nanobanana/generate",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({prompt:"test",model:"nanobanana-flash"})});if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function p({apiKey:a}){try{let b=await fetch("https://api.elevenlabs.io/v1/voices",{method:"GET",headers:{"xi-api-key":a,"Content-Type":"application/json"}});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${b.status}`}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function q({apiKey:a}){try{let b=await fetch("https://api.inworld.ai/tts/v1/voice",{method:"POST",headers:{Authorization:`Basic ${a}`,"Content-Type":"application/json"},body:JSON.stringify({text:"test",modelId:"inworld-tts-1.5-mini",audioConfig:{audioEncoding:"MP3"}})});if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function r({apiKey:a,providerSpecificData:b={}}){let c=h(b.baseUrl);if(!c)return{valid:!1,error:"No base URL configured for OpenAI compatible provider"};try{let b=await fetch(`${c}/models`,{method:"GET",headers:i(a)});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"}}catch{}let d=b.apiType||"chat",e=`${c}${"responses"===d?"/responses":"/chat/completions"}`;try{let b=await fetch(e,{method:"POST",headers:i(a),body:JSON.stringify({model:"gpt-4o-mini",messages:[{role:"user",content:"test"}],max_tokens:1})});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};if(b.status>=400&&b.status<500)return{valid:!0,error:null};if(b.status>=500)return{valid:!1,error:`Provider unavailable (${b.status})`}}catch{}try{let b=await fetch(c,{method:"GET",headers:i(a),signal:AbortSignal.timeout(5e3)});if(b.status<500)return{valid:!0,error:null};return{valid:!1,error:`Provider unavailable (${b.status})`}}catch(a){return{valid:!1,error:a.message||"Connection failed"}}}async function s({apiKey:a,providerSpecificData:b={}}){let c=h(b.baseUrl);if(!c)return{valid:!1,error:"No base URL configured for Anthropic compatible provider"};c.endsWith("/messages")&&(c=c.slice(0,-9));let d={"Content-Type":"application/json","x-api-key":a,"anthropic-version":"2023-06-01",Authorization:`Bearer ${a}`};try{let a=await fetch(`${c}/models`,{method:"GET",headers:d});if(a.ok)return{valid:!0,error:null};if(401===a.status||403===a.status)return{valid:!1,error:"Invalid API key"}}catch{}try{let a=await fetch(`${c}/messages`,{method:"POST",headers:d,body:JSON.stringify({model:"claude-3-5-sonnet-20241022",max_tokens:1,messages:[{role:"user",content:"test"}]})});if(401===a.status||403===a.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(a){return{valid:!1,error:a.message||"Connection failed"}}}async function t({provider:a,apiKey:b,providerSpecificData:c={}}){if(!a||!b)return{valid:!1,error:"Provider and API key required",unsupported:!1};if((0,f.mq)(a))try{return await r({apiKey:b,providerSpecificData:c})}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}if((0,f.gb)(a))try{return await s({apiKey:b,providerSpecificData:c})}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}let d={deepgram:m,assemblyai:n,nanobanana:o,elevenlabs:p,inworld:q};if(d[a])try{return await d[a]({apiKey:b,providerSpecificData:c})}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}let g=(0,e.qs)(a);if(!g)return{valid:!1,error:"Provider validation not supported",unsupported:!0};let i=g.models?.[0]?.id||null,t=function(a,b={}){return b?.baseUrl?h(b.baseUrl):a?.baseUrl?h(a.baseUrl):""}(g,c);try{if(u.has(g.format))return await j({provider:a,apiKey:b,baseUrl:t,providerSpecificData:c,modelId:i,modelsUrl:g.modelsUrl});if("claude"===g.format){let a=`${t}${g.urlSuffix||""}`,c={...g.headers||{}};return"x-api-key"===(g.authHeader||"").toLowerCase()?c["x-api-key"]=b:c.Authorization=`Bearer ${b}`,await k({apiKey:b,baseUrl:a,modelId:i,headers:c})}if(v.has(g.format))return await l({apiKey:b,baseUrl:t});return{valid:!1,error:"Provider validation not supported",unsupported:!0}}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}}d()}catch(a){d(a)}})},43701:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{LA:()=>g});var e=c(42971),f=a([e]);let h=(e=(f.then?(await f)():f)[0]).z.object({id:e.z.string().min(1),alias:e.z.string().min(1),name:e.z.string().min(1),icon:e.z.string().min(1),color:e.z.string().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:e.z.string().optional(),website:e.z.string().url().optional(),passthroughModels:e.z.boolean().optional()}),i=e.z.record(e.z.string(),h);function g(a,b){let c=i.safeParse(a);if(!c.success){let a=c.error.issues.map(a=>` ${a.path.join(".")}: ${a.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${b} has invalid entries:
|
|
1
|
+
"use strict";exports.id=8369,exports.ids=[8369],exports.modules={8959:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{DI:()=>m,IS:()=>i,JH:()=>l,Q2:()=>n,fg:()=>k,gb:()=>h,js:()=>o,mq:()=>g,zN:()=>j});var e=c(43701),f=a([e]);e=(f.then?(await f)():f)[0];let i={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},j={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},k={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",hasFree:!0,freeNote:"Free tier: 30 RPM / 14.4K RPD — no credit card"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://inference.cerebras.ai",hasFree:!0,freeNote:"Free: 1M tokens/day, 60K TPM — world's fastest inference"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://build.nvidia.com",hasFree:!0,freeNote:"Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",hasFree:!0,freeNote:"Free Inference API for thousands of models (Whisper, VITS, SDXL…)"},vertex:{id:"vertex",alias:"vertex",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VA",website:"https://cloud.google.com/vertex-ai",authHint:"Provide Service Account JSON or OAuth access_token"}},l="openai-compatible-",m="anthropic-compatible-";function g(a){return"string"==typeof a&&a.startsWith(l)}function h(a){return"string"==typeof a&&a.startsWith(m)}let n={...i,...j,...k},o=Object.values(n).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(n).reduce((a,b)=>(a[b.id]=b.alias,a),{}),(0,e.LA)(i,"FREE_PROVIDERS"),(0,e.LA)(j,"OAUTH_PROVIDERS"),(0,e.LA)(k,"APIKEY_PROVIDERS"),d()}catch(a){d(a)}})},38369:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{j:()=>t});var e=c(83596),f=c(8959),g=a([f]);f=(g.then?(await g)():g)[0];let u=new Set(["openai","openai-responses"]),v=new Set(["gemini","gemini-cli"]);function h(a){return(a||"").trim().replace(/\/$/,"")}function i(a){return{"Content-Type":"application/json",Authorization:`Bearer ${a}`}}async function j({provider:a,apiKey:b,baseUrl:c,providerSpecificData:d={},modelId:e="gpt-4o-mini",modelsUrl:g}){if(!c)return{valid:!1,error:"Missing base URL"};let j=g||function(a){let b=h(a);if(!b)return"";for(let a of["/chat/completions","/responses","/chat","/messages"])if(b.endsWith(a))return`${b.slice(0,-a.length)}/models`;return`${b}/models`}(c);if(!j)return{valid:!1,error:"Invalid models endpoint"};let k=await fetch(j,{method:"GET",headers:i(b)});if(k.ok)return{valid:!0,error:null};if(401===k.status||403===k.status)return{valid:!1,error:"Invalid API key"};let l=function(a,b,c={}){let d=h(b);return d?(0,f.mq)(a)?c?.apiType==="responses"?`${d}/responses`:`${d}/chat/completions`:d.endsWith("/chat/completions")||d.endsWith("/responses")||d.endsWith("/chat")?d:d.endsWith("/v1")?`${d}/chat/completions`:d:""}(a,c,d);if(!l)return{valid:!1,error:`Validation failed: ${k.status}`};let m=await fetch(l,{method:"POST",headers:i(b),body:JSON.stringify({model:e,messages:[{role:"user",content:"test"}],max_tokens:1})});return m.ok?{valid:!0,error:null}:401===m.status||403===m.status?{valid:!1,error:"Invalid API key"}:404===m.status||405===m.status?{valid:!1,error:"Provider validation endpoint not supported"}:m.status>=500?{valid:!1,error:`Provider unavailable (${m.status})`}:{valid:!0,error:null}}async function k({apiKey:a,baseUrl:b,modelId:c,headers:d={}}){if(!b)return{valid:!1,error:"Missing base URL"};let e={"Content-Type":"application/json",...d};e["x-api-key"]||e["X-API-Key"]||(e["x-api-key"]=a),e["anthropic-version"]||e["Anthropic-Version"]||(e["anthropic-version"]="2023-06-01");let f=await fetch(b,{method:"POST",headers:e,body:JSON.stringify({model:c||"claude-3-5-sonnet-20241022",max_tokens:1,messages:[{role:"user",content:"test"}]})});return 401===f.status||403===f.status?{valid:!1,error:"Invalid API key"}:{valid:!0,error:null}}async function l({apiKey:a,baseUrl:b}){if(!b)return{valid:!1,error:"Missing base URL"};let c=b.includes("?")?"&":"?",d=await fetch(`${b}${c}key=${encodeURIComponent(a)}`,{method:"GET",headers:{"Content-Type":"application/json"}});return d.ok?{valid:!0,error:null}:401===d.status||403===d.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${d.status}`}}async function m({apiKey:a}){try{let b=await fetch("https://api.deepgram.com/v1/auth/token",{method:"GET",headers:{Authorization:`Token ${a}`}});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${b.status}`}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function n({apiKey:a}){try{let b=await fetch("https://api.assemblyai.com/v2/transcript?limit=1",{method:"GET",headers:{Authorization:a,"Content-Type":"application/json"}});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${b.status}`}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function o({apiKey:a}){try{let b=await fetch("https://api.nanobananaapi.ai/api/v1/nanobanana/generate",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({prompt:"test",model:"nanobanana-flash"})});if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function p({apiKey:a}){try{let b=await fetch("https://api.elevenlabs.io/v1/voices",{method:"GET",headers:{"xi-api-key":a,"Content-Type":"application/json"}});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${b.status}`}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function q({apiKey:a}){try{let b=await fetch("https://api.inworld.ai/tts/v1/voice",{method:"POST",headers:{Authorization:`Basic ${a}`,"Content-Type":"application/json"},body:JSON.stringify({text:"test",modelId:"inworld-tts-1.5-mini",audioConfig:{audioEncoding:"MP3"}})});if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function r({apiKey:a,providerSpecificData:b={}}){let c=h(b.baseUrl);if(!c)return{valid:!1,error:"No base URL configured for OpenAI compatible provider"};try{let b=await fetch(`${c}/models`,{method:"GET",headers:i(a)});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"}}catch{}let d=b.apiType||"chat",e=`${c}${"responses"===d?"/responses":"/chat/completions"}`;try{let b=await fetch(e,{method:"POST",headers:i(a),body:JSON.stringify({model:"gpt-4o-mini",messages:[{role:"user",content:"test"}],max_tokens:1})});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};if(b.status>=400&&b.status<500)return{valid:!0,error:null};if(b.status>=500)return{valid:!1,error:`Provider unavailable (${b.status})`}}catch{}try{let b=await fetch(c,{method:"GET",headers:i(a),signal:AbortSignal.timeout(5e3)});if(b.status<500)return{valid:!0,error:null};return{valid:!1,error:`Provider unavailable (${b.status})`}}catch(a){return{valid:!1,error:a.message||"Connection failed"}}}async function s({apiKey:a,providerSpecificData:b={}}){let c=h(b.baseUrl);if(!c)return{valid:!1,error:"No base URL configured for Anthropic compatible provider"};c.endsWith("/messages")&&(c=c.slice(0,-9));let d={"Content-Type":"application/json","x-api-key":a,"anthropic-version":"2023-06-01",Authorization:`Bearer ${a}`};try{let a=await fetch(`${c}/models`,{method:"GET",headers:d});if(a.ok)return{valid:!0,error:null};if(401===a.status||403===a.status)return{valid:!1,error:"Invalid API key"}}catch{}try{let a=await fetch(`${c}/messages`,{method:"POST",headers:d,body:JSON.stringify({model:"claude-3-5-sonnet-20241022",max_tokens:1,messages:[{role:"user",content:"test"}]})});if(401===a.status||403===a.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(a){return{valid:!1,error:a.message||"Connection failed"}}}async function t({provider:a,apiKey:b,providerSpecificData:c={}}){if(!a||!b)return{valid:!1,error:"Provider and API key required",unsupported:!1};if((0,f.mq)(a))try{return await r({apiKey:b,providerSpecificData:c})}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}if((0,f.gb)(a))try{return await s({apiKey:b,providerSpecificData:c})}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}let d={deepgram:m,assemblyai:n,nanobanana:o,elevenlabs:p,inworld:q};if(d[a])try{return await d[a]({apiKey:b,providerSpecificData:c})}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}let g=(0,e.qs)(a);if(!g)return{valid:!1,error:"Provider validation not supported",unsupported:!0};let i=g.models?.[0]?.id||null,t=function(a,b={}){return b?.baseUrl?h(b.baseUrl):a?.baseUrl?h(a.baseUrl):""}(g,c);try{if(u.has(g.format))return await j({provider:a,apiKey:b,baseUrl:t,providerSpecificData:c,modelId:i,modelsUrl:g.modelsUrl});if("claude"===g.format){let a=`${t}${g.urlSuffix||""}`,c={...g.headers||{}};return"x-api-key"===(g.authHeader||"").toLowerCase()?c["x-api-key"]=b:c.Authorization=`Bearer ${b}`,await k({apiKey:b,baseUrl:a,modelId:i,headers:c})}if(v.has(g.format))return await l({apiKey:b,baseUrl:t});return{valid:!1,error:"Provider validation not supported",unsupported:!0}}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}}d()}catch(a){d(a)}})},43701:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{LA:()=>g});var e=c(42971),f=a([e]);let h=(e=(f.then?(await f)():f)[0]).z.object({id:e.z.string().min(1),alias:e.z.string().min(1),name:e.z.string().min(1),icon:e.z.string().min(1),color:e.z.string().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:e.z.string().optional(),website:e.z.string().url().optional(),passthroughModels:e.z.boolean().optional()}),i=e.z.record(e.z.string(),h);function g(a,b){let c=i.safeParse(a);if(!c.success){let a=c.error.issues.map(a=>` ${a.path.join(".")}: ${a.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${b} has invalid entries:
|
|
2
2
|
${a}`),Error(`Provider validation failed for ${b}`)}}d()}catch(a){d(a)}})}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=8907,exports.ids=[8907],exports.modules={19225:(a,b,c)=>{a.exports=c(44870)},76340:(a,b,c)=>{let d,e;c.d(b,{Wk:()=>t,jf:()=>q,qT:()=>s});var f=c(16698),g=c(79522);try{let a=c(22546);d="function"==typeof a.createSession?a.createSession:null}catch{d=null}class h{constructor(){this.session=null,this.available=!!d}async getSession(){if(!this.available)return null;if(this.session)return this.session;let a=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy||void 0,b={browser:"chrome_124",os:"macos"};return a&&(b.proxy=a,console.log(`[TlsClient] Using proxy: ${a}`)),this.session=await d(b),console.log("[TlsClient] Session created (Chrome 124 TLS fingerprint)"),this.session}async fetch(a,b={}){let c=await this.getSession();if(!c)throw Error("wreq-js not available");let d={method:(b.method||"GET").toUpperCase(),headers:function(a){if(!a)return;if(a instanceof Headers)return Object.fromEntries(a.entries());if(Array.isArray(a))return Object.fromEntries(a.map(([a,b])=>[a,String(b)]));let b={};for(let[c,d]of Object.entries(a))"string"==typeof d&&(b[c]=d);return b}(b.headers),body:b.body,redirect:"manual"===b.redirect?"manual":"follow"};return b.signal&&(d.signal=b.signal),await c.fetch(a,d)}async exit(){this.session&&(await this.session.close(),this.session=null)}}let i=new h;function j(){return"true"===process.env.ENABLE_TLS_FINGERPRINT}let k=new f.AsyncLocalStorage,l="u">typeof caches&&"object"==typeof caches,m=Symbol.for("omniroute.proxyFetch.state"),n=((e=globalThis)[m]||(e[m]={originalFetch:globalThis.fetch,proxyContext:new f.AsyncLocalStorage,isPatched:!1}),e[m]),o=n.originalFetch,p=n.proxyContext;async function q(a,b){if("function"!=typeof b)throw TypeError("runWithProxyContext requires a callback function");let c=a?(0,g.HN)(a):null;return p.run(a||null,async()=>(c&&console.log(`[ProxyFetch] Applied request proxy context: ${(0,g.OK)(c)}`),b()))}async function r(a,b={}){let c;if(b?.dispatcher)return o(a,b);let d="string"==typeof a?a:a&&"string"==typeof a.url?a.url:String(a);try{c=function(a){let b=p.getStore();if(b)return{source:"context",proxyUrl:(0,g.HN)(b)};let c=function(a){let b;if(function(a){let b,c=process.env.NO_PROXY||process.env.no_proxy;if(!c)return!1;try{b=new URL(a)}catch{return!1}let d=b.hostname.toLowerCase(),e=b.port||("https:"===b.protocol?"443":"80");return c.split(",").map(a=>a.trim().toLowerCase()).filter(Boolean).some(a=>{if("*"===a)return!0;let[b,c]=a.split(":");return(!c||c===e)&&!!b&&(b.startsWith(".")?d.endsWith(b)||d===b.slice(1):d===b||d.endsWith(`.${b}`))})}(a))return null;try{b=new URL(a).protocol}catch{return null}let c="https:"===b?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy;return c?(0,g.zP)(c,"environment proxy"):null}(a);return c?{source:"env",proxyUrl:c}:{source:"direct",proxyUrl:null}}(d)}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy configuration error: ${a}`),b}let{source:e,proxyUrl:f}=c;if(!f){if(j()&&i.available)try{let a=k.getStore();return a&&(a.used=!0),await i.fetch(d,{...b,headers:b.headers})}catch(c){let a=c instanceof Error?c.message:String(c);console.warn(`[ProxyFetch] TLS fingerprint failed, falling back to native fetch: ${a}`);let b=k.getStore();b&&(b.used=!1)}return o(a,b)}try{let c=(0,g.I_)(f);return await o(a,{...b,dispatcher:c})}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy request failed (${e}, fail-closed): ${a}`),b}}async function s(a){let b={used:!1};return{result:await k.run(b,a),tlsFingerprintUsed:b.used}}function t(){return j()&&i.available}l||n.isPatched||(globalThis.fetch=r,n.isPatched=!0)},79522:(a,b,c)=>{c.d(b,{HN:()=>p,I_:()=>q,L8:()=>i,OK:()=>n,QX:()=>m,zP:()=>o});var d=c(47774),e=c(20406);let f=Symbol.for("omniroute.proxyDispatcher.cache"),g=new Set(["http:","https:","socks5:"]);function h(){let a=globalThis;return a[f]||(a[f]=new Map),a[f]}function i(){h().clear()}function j(a){try{let b=a.match(/:\/\/(?:[^@]*@)?[^:/\s]+:(\d+)/);if(b){let a=Number(b[1]);if(Number.isInteger(a)&&a>=1&&a<=65535)return String(a)}}catch{}return null}function k(a){return"https:"===a||"wss:"===a?"443":"socks5:"===a?"1080":"8080"}function l(a,b){if(!a)return k(b);let c=Number(a);if(!Number.isInteger(c)||c<1||c>65535)throw Error("[ProxyDispatcher] Invalid proxy port");return String(c)}function m(){return"true"===process.env.ENABLE_SOCKS5_PROXY}function n(a){let b=j(a),c=new URL(a),d=b||c.port||k(c.protocol);return`${c.protocol}//${c.hostname}:${d}`}function o(a,b="proxy",{allowSocks5:c=m()}={}){var d;let e,f,h=j(a);try{e=new URL(a)}catch{throw Error(`[ProxyDispatcher] Invalid ${b} URL`)}if(!g.has(e.protocol))throw Error(`[ProxyDispatcher] Unsupported ${b} protocol: ${e.protocol.replace(":","")}`);if("socks5:"===e.protocol&&!c)throw Error("[ProxyDispatcher] SOCKS5 proxy is disabled (set ENABLE_SOCKS5_PROXY=true to enable)");if(!e.hostname)throw Error(`[ProxyDispatcher] Invalid ${b} host`);let i=h||l(e.port,e.protocol);return f=(d=e).username?`${d.username}${d.password?`:${d.password}`:""}@`:"",`${d.protocol}//${f}${d.hostname}:${i}`}function p(a,{allowSocks5:b=m()}={}){if(!a)return null;if("string"==typeof a)return o(a,"context proxy",{allowSocks5:b});if("object"!=typeof a||Array.isArray(a))throw Error("[ProxyDispatcher] Invalid context proxy config");let c=String(a.type||"http").toLowerCase(),d=`${c}:`;if(!g.has(d))throw Error(`[ProxyDispatcher] Unsupported context proxy protocol: ${c}`);if("socks5:"===d&&!b)throw Error("[ProxyDispatcher] SOCKS5 proxy is disabled (set ENABLE_SOCKS5_PROXY=true to enable)");if(!a.host)throw Error("[ProxyDispatcher] Context proxy host is required");let e=l(a.port,d),f=a.username?`${encodeURIComponent(a.username)}:${a.password?encodeURIComponent(a.password):""}@`:"";return o(`${c}://${f}${a.host}:${e}`,"context proxy",{allowSocks5:b})}function q(a){let b=o(a,"proxy dispatcher"),c=h(),f=c.get(b);if(f)return f;let g=new URL(b),i=j(b)||l(g.port,g.protocol);if("socks5:"===g.protocol){let a={type:5,host:g.hostname,port:Number(i)};g.username&&(a.userId=decodeURIComponent(g.username)),g.password&&(a.password=decodeURIComponent(g.password)),f=(0,e.vI)(a)}else f=new d.ProxyAgent(b);return c.set(b,f),f}},82742:(a,b,c)=>{c.d(b,{DC:()=>h,Dk:()=>i,fr:()=>g}),c(86181),c(22901),c(76340);var d=c(89794);let e=new Map;function f(a){let b=new Date(a).getTime();return Number.isNaN(b)?null:b}function g(a,b,c){let g,h=function(a){let b={};for(let[c,e]of Object.entries(a))e&&"object"==typeof e&&(b[c]={remainingPercentage:(0,d.Q1)(e.remainingPercentage)??(e.total>0?Math.round((e.total-(e.used||0))/e.total*100):0),resetAt:e.resetAt||null});return b}(c),i=0!==(g=Object.values(h)).length&&g.every(a=>a.remainingPercentage<=0);e.set(a,{connectionId:a,provider:b,quotas:h,fetchedAt:Date.now(),exhausted:i,nextResetAt:i?function(a){let b=null,c=1/0;for(let d of Object.values(a)){if(!d.resetAt)continue;let a=f(d.resetAt);null!==a&&a<c&&(c=a,b=d.resetAt)}return b}(h):null})}function h(a){let b=e.get(a);if(!b||!b.exhausted)return!1;if(b.nextResetAt){let a=f(b.nextResetAt);if(null!==a&&a<=Date.now())return!1}let c=Date.now()-b.fetchedAt;return!!b.nextResetAt||!(c>3e5)}function i(a,b){e.set(a,{connectionId:a,provider:b,quotas:{},fetchedAt:Date.now(),exhausted:!0,nextResetAt:null})}},86181:(a,b,c)=>{c.d(b,{m:()=>k});var d=c(60293),e=c(89794);let f={quotaApiUrl:"https://cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels",loadProjectApiUrl:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",tokenUrl:"https://oauth2.googleapis.com/token",get clientId(){return d.xq.antigravity.clientId},get clientSecret(){return d.xq.antigravity.clientSecret},userAgent:"antigravity/1.11.3 Darwin/arm64"},g="2023-06-01";function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function i(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 j(a,b,c){let d=h(a);return d[b]??d[c]??null}async function k(a){let{provider:b,accessToken:c,providerSpecificData:d}=a;switch(b){case"github":return await m(c,d);case"gemini-cli":return await o(c);case"antigravity":return await q(c,void 0);case"claude":return await t(c);case"codex":return await v(c,d);case"kiro":return await w(c,d);case"kimi-coding":return await y(c);case"qwen":return await z(c,d);case"iflow":return await A(c);default:return{message:`Usage API not implemented for ${b}`}}}function l(a){if(!a)return null;try{if(a instanceof Date)return a.toISOString();if("number"==typeof a||"string"==typeof a)return new Date(a).toISOString();return null}catch(b){return console.warn(`Failed to parse reset time: ${a}`,b),null}}async function m(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:{Authorization:`token ${a}`,Accept:"application/json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"GitHubCopilotChat/0.26.7","Editor-Version":"vscode/1.100.0","Editor-Plugin-Version":"copilot-chat/0.26.7"}});if(!b.ok){let a=await b.text();throw Error(`GitHub API error: ${a}`)}let c=await b.json();if(c.quota_snapshots){let a=c.quota_snapshots,b=l(c.quota_reset_date);return{plan:c.copilot_plan,resetDate:c.quota_reset_date,quotas:{chat:{...n(a.chat),resetAt:b},completions:{...n(a.completions),resetAt:b},premium_interactions:{...n(a.premium_interactions),resetAt:b}}}}if(c.monthly_quotas||c.limited_user_quotas){let a=c.monthly_quotas||{},b=c.limited_user_quotas||{},d=l(c.limited_user_reset_date);return{plan:c.copilot_plan||c.access_type_sku,resetDate:c.limited_user_reset_date,quotas:{chat:{used:b.chat||0,total:a.chat||0,unlimited:!1,resetAt:d},completions:{used:b.completions||0,total:a.completions||0,unlimited:!1,resetAt:d}}}}return{message:"GitHub Copilot connected. Unable to parse quota data."}}catch(a){throw Error(`Failed to fetch GitHub usage: ${a.message}`)}}function n(a){return a?{used:a.entitlement-a.remaining,total:a.entitlement,remaining:a.remaining,unlimited:a.unlimited||!1}:{used:0,total:0,unlimited:!0}}async function o(a){try{if(!(await fetch("https://cloudresourcemanager.googleapis.com/v1/projects?filter=lifecycleState:ACTIVE",{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}})).ok)return{message:"Gemini CLI uses Google Cloud quotas. Check Google Cloud Console for details."};return{message:"Gemini CLI connected. Usage tracked via Google Cloud Console."}}catch(a){return{message:"Unable to fetch Gemini usage. Check Google Cloud Console."}}}let p=new Map;async function q(a,b){try{let b=await r(a),c=b?.cloudaicompanionProject||null,d=await fetch(f.quotaApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"User-Agent":f.userAgent,"Content-Type":"application/json"},body:JSON.stringify(c?{project:c}:{})});if(403===d.status)return{message:"Antigravity access forbidden. Check subscription."};if(!d.ok)throw Error(`Antigravity API error: ${d.status}`);let e=await d.json(),g=h(e),j=h(g.models),k={};if(Object.keys(j).length>0){let a=["claude-opus-4-6-thinking","claude-sonnet-4-6","gemini-3.1-pro-high","gemini-3.1-pro-low","gemini-3-flash","gpt-oss-120b-medium"];for(let[b,c]of Object.entries(j)){let d=h(c),e=h(d.quotaInfo);if(0===Object.keys(e).length||!0===d.isInternal||!a.includes(b))continue;let f=i(e.remainingFraction,0),g=100*f,j=Math.round(1e3*f),m=1e3-j;k[b]={used:m,total:1e3,resetAt:l(e.resetTime),remainingPercentage:g,unlimited:!1,displayName:"string"==typeof d.displayName?d.displayName:b}}}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:k,subscriptionInfo:b}}catch(a){return{message:`Antigravity error: ${a.message}`}}}async function r(a){let b=a.substring(0,16),c=p.get(b);if(c&&Date.now()-c.fetchedAt<3e5)return c.data;let d=await s(a);return p.set(b,{data:d,fetchedAt:Date.now()}),d}async function s(a){try{let b=await fetch(f.loadProjectApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"google-cloud-sdk vscode_cloudshelleditor/0.1","Client-Metadata":JSON.stringify({ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"})},body:JSON.stringify({metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"}})});if(!b.ok)return null;return await b.json()}catch{return null}}async function t(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":g}});if(b.ok){let a=await b.json(),c={},d=a=>a&&"object"==typeof a&&void 0!==(0,e.Q1)(a.utilization),f=a=>{let b=(0,e.Q1)(a.utilization),c=Math.max(0,100-b);return{used:b,total:100,remaining:c,resetAt:l(a.resets_at),remainingPercentage:c,unlimited:!1}};for(let[b,e]of(d(a.five_hour)&&(c["session (5h)"]=f(a.five_hour)),d(a.seven_day)&&(c["weekly (7d)"]=f(a.seven_day)),Object.entries(a))){let a=h(e);if(b.startsWith("seven_day_")&&"seven_day"!==b&&d(a)){let d=b.replace("seven_day_","");c[`weekly ${d} (7d)`]=f(a)}}return{plan:"Claude Code",quotas:c,extraUsage:a.extra_usage??null}}return console.warn(`[Claude Usage] OAuth endpoint returned ${b.status}, falling back to legacy`),await u(a)}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}async function u(a){try{let b=await fetch("https://api.anthropic.com/v1/settings",{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":g}});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":g}});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 v(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)throw Error(`Codex API error: ${e.status}`);let f=await e.json(),g=h(j(f,"rate_limit","rateLimit")),k=h(j(g,"primary_window","primaryWindow")),m=h(j(g,"secondary_window","secondaryWindow")),n=a=>{let b=i(j(a,"reset_at","resetAt"),0),c=i(j(a,"reset_after_seconds","resetAfterSeconds"),0);return b>0?l(1e3*b):c>0?l(Date.now()+1e3*c):null},o={};if(Object.keys(k).length>0){let a=i(j(k,"used_percent","usedPercent"),0);o.session={used:a,total:100,remaining:100-a,resetAt:n(k),unlimited:!1}}if(Object.keys(m).length>0){let a=i(j(m,"used_percent","usedPercent"),0);o.weekly={used:a,total:100,remaining:100-a,resetAt:n(m),unlimited:!1}}let p=h(j(f,"code_review_rate_limit","codeReviewRateLimit")),q=h(j(p,"primary_window","primaryWindow")),r=j(q,"used_percent","usedPercent"),s=j(q,"remaining_count","remainingCount");if(null!==r||null!==s){let a=i(r,0);o.code_review={used:a,total:100,remaining:100-a,resetAt:n(q),unlimited:!1}}return{plan:String(j(f,"plan_type","planType")||"unknown"),limitReached:!!j(g,"limit_reached","limitReached"),quotas:o}}catch(a){throw Error(`Failed to fetch Codex usage: ${a.message}`)}}async function w(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=l(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 x(a){return a?({LEVEL_BASIC:"Moderato",LEVEL_INTERMEDIATE:"Allegretto",LEVEL_ADVANCED:"Allegro",LEVEL_STANDARD:"Vivace"})[a]||a.replace("LEVEL_","").toLowerCase():""}async function y(a){let b="kimi-usage-"+Date.now(),c="u">typeof process?`${process.platform} ${process.arch}`:"unknown";try{let d,f=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}}),g=await f.text();if(!f.ok)return{plan:"Kimi Coding",message:`Kimi Coding connected. API Error ${f.status}: ${g.slice(0,100)}`};try{d=JSON.parse(g)}catch{return{plan:"Kimi Coding",message:"Kimi Coding connected. Invalid JSON response from API."}}let j={},k=h(d),m=h(k.usage),n=i(m.limit||m.Limit,0),o=i(m.used||m.Used,0),p=i(m.remaining||m.Remaining,0),q=m.resetTime||m.ResetTime||m.reset_at||m.resetAt;n>0&&(j.Weekly={used:o,total:n,remaining:p,remainingPercentage:n>0?p/n*100:0,resetAt:l(q),unlimited:!1});let r=Array.isArray(k.limits)?k.limits:[];for(let a=0;a<r.length;a++){let b=h(r[a]);h(b.window);let c=h(b.detail),d=i(c.limit||c.Limit,0),e=i(c.remaining||c.Remaining,0),f=c.resetTime||c.reset_at||c.resetAt;d>0&&(j.Ratelimit={used:d-e,total:d,remaining:e,remainingPercentage:d>0?e/d*100:0,resetAt:l(f),unlimited:!1})}let s=a=>a&&"object"==typeof a&&void 0!==(0,e.Q1)(a.utilization),t=a=>{let b=(0,e.Q1)(a.utilization);return{used:100-b,total:100,remaining:b,resetAt:l(a.resets_at),remainingPercentage:b,unlimited:!1}};for(let[a,b]of(s(h(k.five_hour))&&(j["session (5h)"]=t(h(k.five_hour))),s(h(k.seven_day))&&(j["weekly (7d)"]=t(h(k.seven_day))),Object.entries(k))){let c=h(b);if(a.startsWith("seven_day_")&&"seven_day"!==a&&s(c)){let b=a.replace("seven_day_","");j[`weekly ${b} (7d)`]=t(c)}}if(Object.keys(j).length>0){let a=h(k.user),b=h(a.membership).level;return{plan:x(b)||"Kimi Coding",quotas:j}}let u=h(k.user),v=h(u.membership).level;return{plan:x(v)||"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 z(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 A(a){try{return{message:"iFlow connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch iFlow usage."}}}},89794:(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})},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}}};
|
|
1
|
+
"use strict";exports.id=8907,exports.ids=[8907],exports.modules={19225:(a,b,c)=>{a.exports=c(44870)},76340:(a,b,c)=>{let d,e;c.d(b,{Wk:()=>t,jf:()=>q,qT:()=>s});var f=c(16698),g=c(79522);try{let a=c(22546);d="function"==typeof a.createSession?a.createSession:null}catch{d=null}class h{constructor(){this.session=null,this.available=!!d}async getSession(){if(!this.available)return null;if(this.session)return this.session;let a=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy||void 0,b={browser:"chrome_124",os:"macos"};return a&&(b.proxy=a,console.log(`[TlsClient] Using proxy: ${a}`)),this.session=await d(b),console.log("[TlsClient] Session created (Chrome 124 TLS fingerprint)"),this.session}async fetch(a,b={}){let c=await this.getSession();if(!c)throw Error("wreq-js not available");let d={method:(b.method||"GET").toUpperCase(),headers:function(a){if(!a)return;if(a instanceof Headers)return Object.fromEntries(a.entries());if(Array.isArray(a))return Object.fromEntries(a.map(([a,b])=>[a,String(b)]));let b={};for(let[c,d]of Object.entries(a))"string"==typeof d&&(b[c]=d);return b}(b.headers),body:b.body,redirect:"manual"===b.redirect?"manual":"follow"};return b.signal&&(d.signal=b.signal),await c.fetch(a,d)}async exit(){this.session&&(await this.session.close(),this.session=null)}}let i=new h;function j(){return"true"===process.env.ENABLE_TLS_FINGERPRINT}let k=new f.AsyncLocalStorage,l="u">typeof caches&&"object"==typeof caches,m=Symbol.for("omniroute.proxyFetch.state"),n=((e=globalThis)[m]||(e[m]={originalFetch:globalThis.fetch,proxyContext:new f.AsyncLocalStorage,isPatched:!1}),e[m]),o=n.originalFetch,p=n.proxyContext;async function q(a,b){if("function"!=typeof b)throw TypeError("runWithProxyContext requires a callback function");let c=a?(0,g.HN)(a):null;return p.run(a||null,async()=>(c&&console.log(`[ProxyFetch] Applied request proxy context: ${(0,g.OK)(c)}`),b()))}async function r(a,b={}){let c;if(b?.dispatcher)return o(a,b);let d="string"==typeof a?a:a&&"string"==typeof a.url?a.url:String(a);try{c=function(a){let b=p.getStore();if(b)return{source:"context",proxyUrl:(0,g.HN)(b)};let c=function(a){let b;if(function(a){let b,c=process.env.NO_PROXY||process.env.no_proxy;if(!c)return!1;try{b=new URL(a)}catch{return!1}let d=b.hostname.toLowerCase(),e=b.port||("https:"===b.protocol?"443":"80");return c.split(",").map(a=>a.trim().toLowerCase()).filter(Boolean).some(a=>{if("*"===a)return!0;let[b,c]=a.split(":");return(!c||c===e)&&!!b&&(b.startsWith(".")?d.endsWith(b)||d===b.slice(1):d===b||d.endsWith(`.${b}`))})}(a))return null;try{b=new URL(a).protocol}catch{return null}let c="https:"===b?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy;return c?(0,g.zP)(c,"environment proxy"):null}(a);return c?{source:"env",proxyUrl:c}:{source:"direct",proxyUrl:null}}(d)}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy configuration error: ${a}`),b}let{source:e,proxyUrl:f}=c;if(!f){if(j()&&i.available)try{let a=k.getStore();return a&&(a.used=!0),await i.fetch(d,{...b,headers:b.headers})}catch(c){let a=c instanceof Error?c.message:String(c);console.warn(`[ProxyFetch] TLS fingerprint failed, falling back to native fetch: ${a}`);let b=k.getStore();b&&(b.used=!1)}return o(a,b)}try{let c=(0,g.I_)(f);return await o(a,{...b,dispatcher:c})}catch(b){let a=b instanceof Error?b.message:String(b);throw console.error(`[ProxyFetch] Proxy request failed (${e}, fail-closed): ${a}`),b}}async function s(a){let b={used:!1};return{result:await k.run(b,a),tlsFingerprintUsed:b.used}}function t(){return j()&&i.available}l||n.isPatched||(globalThis.fetch=r,n.isPatched=!0)},79522:(a,b,c)=>{c.d(b,{HN:()=>p,I_:()=>q,L8:()=>i,OK:()=>n,QX:()=>m,zP:()=>o});var d=c(47774),e=c(20406);let f=Symbol.for("omniroute.proxyDispatcher.cache"),g=new Set(["http:","https:","socks5:"]);function h(){let a=globalThis;return a[f]||(a[f]=new Map),a[f]}function i(){h().clear()}function j(a){try{let b=a.match(/:\/\/(?:[^@]*@)?[^:/\s]+:(\d+)/);if(b){let a=Number(b[1]);if(Number.isInteger(a)&&a>=1&&a<=65535)return String(a)}}catch{}return null}function k(a){return"https:"===a||"wss:"===a?"443":"socks5:"===a?"1080":"8080"}function l(a,b){if(!a)return k(b);let c=Number(a);if(!Number.isInteger(c)||c<1||c>65535)throw Error("[ProxyDispatcher] Invalid proxy port");return String(c)}function m(){return"true"===process.env.ENABLE_SOCKS5_PROXY}function n(a){let b=j(a),c=new URL(a),d=b||c.port||k(c.protocol);return`${c.protocol}//${c.hostname}:${d}`}function o(a,b="proxy",{allowSocks5:c=m()}={}){var d;let e,f,h=j(a);try{e=new URL(a)}catch{throw Error(`[ProxyDispatcher] Invalid ${b} URL`)}if(!g.has(e.protocol))throw Error(`[ProxyDispatcher] Unsupported ${b} protocol: ${e.protocol.replace(":","")}`);if("socks5:"===e.protocol&&!c)throw Error("[ProxyDispatcher] SOCKS5 proxy is disabled (set ENABLE_SOCKS5_PROXY=true to enable)");if(!e.hostname)throw Error(`[ProxyDispatcher] Invalid ${b} host`);let i=h||l(e.port,e.protocol);return f=(d=e).username?`${d.username}${d.password?`:${d.password}`:""}@`:"",`${d.protocol}//${f}${d.hostname}:${i}`}function p(a,{allowSocks5:b=m()}={}){if(!a)return null;if("string"==typeof a)return o(a,"context proxy",{allowSocks5:b});if("object"!=typeof a||Array.isArray(a))throw Error("[ProxyDispatcher] Invalid context proxy config");let c=String(a.type||"http").toLowerCase(),d=`${c}:`;if(!g.has(d))throw Error(`[ProxyDispatcher] Unsupported context proxy protocol: ${c}`);if("socks5:"===d&&!b)throw Error("[ProxyDispatcher] SOCKS5 proxy is disabled (set ENABLE_SOCKS5_PROXY=true to enable)");if(!a.host)throw Error("[ProxyDispatcher] Context proxy host is required");let e=l(a.port,d),f=a.username?`${encodeURIComponent(a.username)}:${a.password?encodeURIComponent(a.password):""}@`:"";return o(`${c}://${f}${a.host}:${e}`,"context proxy",{allowSocks5:b})}function q(a){let b=o(a,"proxy dispatcher"),c=h(),f=c.get(b);if(f)return f;let g=new URL(b),i=j(b)||l(g.port,g.protocol);if("socks5:"===g.protocol){let a={type:5,host:g.hostname,port:Number(i)};g.username&&(a.userId=decodeURIComponent(g.username)),g.password&&(a.password=decodeURIComponent(g.password)),f=(0,e.vI)(a)}else f=new d.ProxyAgent(b);return c.set(b,f),f}},82742:(a,b,c)=>{c.d(b,{DC:()=>h,Dk:()=>i,fr:()=>g}),c(86181),c(75585),c(76340);var d=c(89794);let e=new Map;function f(a){let b=new Date(a).getTime();return Number.isNaN(b)?null:b}function g(a,b,c){let g,h=function(a){let b={};for(let[c,e]of Object.entries(a))e&&"object"==typeof e&&(b[c]={remainingPercentage:(0,d.Q1)(e.remainingPercentage)??(e.total>0?Math.round((e.total-(e.used||0))/e.total*100):0),resetAt:e.resetAt||null});return b}(c),i=0!==(g=Object.values(h)).length&&g.every(a=>a.remainingPercentage<=0);e.set(a,{connectionId:a,provider:b,quotas:h,fetchedAt:Date.now(),exhausted:i,nextResetAt:i?function(a){let b=null,c=1/0;for(let d of Object.values(a)){if(!d.resetAt)continue;let a=f(d.resetAt);null!==a&&a<c&&(c=a,b=d.resetAt)}return b}(h):null})}function h(a){let b=e.get(a);if(!b||!b.exhausted)return!1;let c=Date.now();if(function(a,b){if(!a.nextResetAt)return null;let c=f(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 i(a,b){e.set(a,{connectionId:a,provider:b,quotas:{},fetchedAt:Date.now(),exhausted:!0,nextResetAt:null})}},86181:(a,b,c)=>{c.d(b,{m:()=>k});var d=c(60293),e=c(89794);let f={quotaApiUrl:"https://cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels",loadProjectApiUrl:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",tokenUrl:"https://oauth2.googleapis.com/token",get clientId(){return d.xq.antigravity.clientId},get clientSecret(){return d.xq.antigravity.clientSecret},userAgent:"antigravity/1.11.3 Darwin/arm64"},g="2023-06-01";function h(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}function i(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 j(a,b,c){let d=h(a);return d[b]??d[c]??null}async function k(a){let{provider:b,accessToken:c,providerSpecificData:d}=a;switch(b){case"github":return await m(c,d);case"gemini-cli":return await o(c);case"antigravity":return await q(c,void 0);case"claude":return await t(c);case"codex":return await v(c,d);case"kiro":return await w(c,d);case"kimi-coding":return await y(c);case"qwen":return await z(c,d);case"iflow":return await A(c);default:return{message:`Usage API not implemented for ${b}`}}}function l(a){if(!a)return null;try{if(a instanceof Date)return a.toISOString();if("number"==typeof a||"string"==typeof a)return new Date(a).toISOString();return null}catch(b){return console.warn(`Failed to parse reset time: ${a}`,b),null}}async function m(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:{Authorization:`token ${a}`,Accept:"application/json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"GitHubCopilotChat/0.26.7","Editor-Version":"vscode/1.100.0","Editor-Plugin-Version":"copilot-chat/0.26.7"}});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();if(c.quota_snapshots){let a=c.quota_snapshots,b=l(c.quota_reset_date);return{plan:c.copilot_plan,resetDate:c.quota_reset_date,quotas:{chat:{...n(a.chat),resetAt:b},completions:{...n(a.completions),resetAt:b},premium_interactions:{...n(a.premium_interactions),resetAt:b}}}}if(c.monthly_quotas||c.limited_user_quotas){let a=c.monthly_quotas||{},b=c.limited_user_quotas||{},d=l(c.limited_user_reset_date);return{plan:c.copilot_plan||c.access_type_sku,resetDate:c.limited_user_reset_date,quotas:{chat:{used:b.chat||0,total:a.chat||0,unlimited:!1,resetAt:d},completions:{used:b.completions||0,total:a.completions||0,unlimited:!1,resetAt:d}}}}return{message:"GitHub Copilot connected. Unable to parse quota data."}}catch(a){throw Error(`Failed to fetch GitHub usage: ${a.message}`)}}function n(a){return a?{used:a.entitlement-a.remaining,total:a.entitlement,remaining:a.remaining,unlimited:a.unlimited||!1}:{used:0,total:0,unlimited:!0}}async function o(a){try{if(!(await fetch("https://cloudresourcemanager.googleapis.com/v1/projects?filter=lifecycleState:ACTIVE",{headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}})).ok)return{message:"Gemini CLI uses Google Cloud quotas. Check Google Cloud Console for details."};return{message:"Gemini CLI connected. Usage tracked via Google Cloud Console."}}catch(a){return{message:"Unable to fetch Gemini usage. Check Google Cloud Console."}}}let p=new Map;async function q(a,b){try{let b=await r(a),c=b?.cloudaicompanionProject||null,d=await fetch(f.quotaApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"User-Agent":f.userAgent,"Content-Type":"application/json"},body:JSON.stringify(c?{project:c}:{})});if(403===d.status)return{message:"Antigravity access forbidden. Check subscription."};if(!d.ok)throw Error(`Antigravity API error: ${d.status}`);let e=await d.json(),g=h(e),j=h(g.models),k={};if(Object.keys(j).length>0){let a=["claude-opus-4-6-thinking","claude-sonnet-4-6","gemini-3.1-pro-high","gemini-3.1-pro-low","gemini-3-flash","gpt-oss-120b-medium"];for(let[b,c]of Object.entries(j)){let d=h(c),e=h(d.quotaInfo);if(0===Object.keys(e).length||!0===d.isInternal||!a.includes(b))continue;let f=i(e.remainingFraction,0),g=100*f,j=Math.round(1e3*f),m=1e3-j;k[b]={used:m,total:1e3,resetAt:l(e.resetTime),remainingPercentage:g,unlimited:!1,displayName:"string"==typeof d.displayName?d.displayName:b}}}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:k,subscriptionInfo:b}}catch(a){return{message:`Antigravity error: ${a.message}`}}}async function r(a){let b=a.substring(0,16),c=p.get(b);if(c&&Date.now()-c.fetchedAt<3e5)return c.data;let d=await s(a);return p.set(b,{data:d,fetchedAt:Date.now()}),d}async function s(a){try{let b=await fetch(f.loadProjectApiUrl,{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"google-cloud-sdk vscode_cloudshelleditor/0.1","Client-Metadata":JSON.stringify({ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"})},body:JSON.stringify({metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"}})});if(!b.ok)return null;return await b.json()}catch{return null}}async function t(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":g}});if(b.ok){let a=await b.json(),c={},d=a=>a&&"object"==typeof a&&void 0!==(0,e.Q1)(a.utilization),f=a=>{let b=(0,e.Q1)(a.utilization),c=Math.max(0,100-b);return{used:b,total:100,remaining:c,resetAt:l(a.resets_at),remainingPercentage:c,unlimited:!1}};for(let[b,e]of(d(a.five_hour)&&(c["session (5h)"]=f(a.five_hour)),d(a.seven_day)&&(c["weekly (7d)"]=f(a.seven_day)),Object.entries(a))){let a=h(e);if(b.startsWith("seven_day_")&&"seven_day"!==b&&d(a)){let d=b.replace("seven_day_","");c[`weekly ${d} (7d)`]=f(a)}}return{plan:"Claude Code",quotas:c,extraUsage:a.extra_usage??null}}return console.warn(`[Claude Usage] OAuth endpoint returned ${b.status}, falling back to legacy`),await u(a)}catch(a){return{message:`Claude connected. Unable to fetch usage: ${a.message}`}}}async function u(a){try{let b=await fetch("https://api.anthropic.com/v1/settings",{method:"GET",headers:{Authorization:`Bearer ${a}`,"anthropic-version":g}});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":g}});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 v(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=h(j(f,"rate_limit","rateLimit")),k=h(j(g,"primary_window","primaryWindow")),m=h(j(g,"secondary_window","secondaryWindow")),n=a=>{let b=i(j(a,"reset_at","resetAt"),0),c=i(j(a,"reset_after_seconds","resetAfterSeconds"),0);return b>0?l(1e3*b):c>0?l(Date.now()+1e3*c):null},o={};if(Object.keys(k).length>0){let a=i(j(k,"used_percent","usedPercent"),0);o.session={used:a,total:100,remaining:100-a,resetAt:n(k),unlimited:!1}}if(Object.keys(m).length>0){let a=i(j(m,"used_percent","usedPercent"),0);o.weekly={used:a,total:100,remaining:100-a,resetAt:n(m),unlimited:!1}}let p=h(j(f,"code_review_rate_limit","codeReviewRateLimit")),q=h(j(p,"primary_window","primaryWindow")),r=j(q,"used_percent","usedPercent"),s=j(q,"remaining_count","remainingCount");if(null!==r||null!==s){let a=i(r,0);o.code_review={used:a,total:100,remaining:100-a,resetAt:n(q),unlimited:!1}}return{plan:String(j(f,"plan_type","planType")||"unknown"),limitReached:!!j(g,"limit_reached","limitReached"),quotas:o}}catch(a){throw Error(`Failed to fetch Codex usage: ${a.message}`)}}async function w(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=l(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 x(a){return a?({LEVEL_BASIC:"Moderato",LEVEL_INTERMEDIATE:"Allegretto",LEVEL_ADVANCED:"Allegro",LEVEL_STANDARD:"Vivace"})[a]||a.replace("LEVEL_","").toLowerCase():""}async function y(a){let b="kimi-usage-"+Date.now(),c="u">typeof process?`${process.platform} ${process.arch}`:"unknown";try{let d,f=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}}),g=await f.text();if(!f.ok)return{plan:"Kimi Coding",message:`Kimi Coding connected. API Error ${f.status}: ${g.slice(0,100)}`};try{d=JSON.parse(g)}catch{return{plan:"Kimi Coding",message:"Kimi Coding connected. Invalid JSON response from API."}}let j={},k=h(d),m=h(k.usage),n=i(m.limit||m.Limit,0),o=i(m.used||m.Used,0),p=i(m.remaining||m.Remaining,0),q=m.resetTime||m.ResetTime||m.reset_at||m.resetAt;n>0&&(j.Weekly={used:o,total:n,remaining:p,remainingPercentage:n>0?p/n*100:0,resetAt:l(q),unlimited:!1});let r=Array.isArray(k.limits)?k.limits:[];for(let a=0;a<r.length;a++){let b=h(r[a]);h(b.window);let c=h(b.detail),d=i(c.limit||c.Limit,0),e=i(c.remaining||c.Remaining,0),f=c.resetTime||c.reset_at||c.resetAt;d>0&&(j.Ratelimit={used:d-e,total:d,remaining:e,remainingPercentage:d>0?e/d*100:0,resetAt:l(f),unlimited:!1})}let s=a=>a&&"object"==typeof a&&void 0!==(0,e.Q1)(a.utilization),t=a=>{let b=(0,e.Q1)(a.utilization);return{used:100-b,total:100,remaining:b,resetAt:l(a.resets_at),remainingPercentage:b,unlimited:!1}};for(let[a,b]of(s(h(k.five_hour))&&(j["session (5h)"]=t(h(k.five_hour))),s(h(k.seven_day))&&(j["weekly (7d)"]=t(h(k.seven_day))),Object.entries(k))){let c=h(b);if(a.startsWith("seven_day_")&&"seven_day"!==a&&s(c)){let b=a.replace("seven_day_","");j[`weekly ${b} (7d)`]=t(c)}}if(Object.keys(j).length>0){let a=h(k.user),b=h(a.membership).level;return{plan:x(b)||"Kimi Coding",quotas:j}}let u=h(k.user),v=h(u.membership).level;return{plan:x(v)||"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 z(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 A(a){try{return{message:"iFlow connected. Usage tracked per request."}}catch(a){return{message:"Unable to fetch iFlow usage."}}}},89794:(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})},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}}};
|