omniroute 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +55 -55
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/.well-known/agent.json/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +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_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/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.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +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.js +1 -1
- package/app/.next/server/app/api/cli-tools/backups/route.js.nft.json +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.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +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.js +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +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.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/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.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/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_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.js +1 -1
- package/app/.next/server/app/api/combos/auto/route.js.nft.json +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_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_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.js +1 -1
- package/app/.next/server/app/api/evals/route.js.nft.json +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.js +2 -2
- package/app/.next/server/app/api/fallback/chains/route.js.nft.json +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_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_client-reference-manifest.js +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_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.js +1 -1
- package/app/.next/server/app/api/models/availability/route.js.nft.json +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_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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +2 -2
- 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_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_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.js +2 -2
- package/app/.next/server/app/api/policies/route.js.nft.json +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_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.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route.js.nft.json +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_client-reference-manifest.js +1 -1
- 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_client-reference-manifest.js +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 +2 -2
- 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.js +1 -1
- package/app/.next/server/app/api/settings/ip-filter/route.js.nft.json +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.js.nft.json +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_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/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_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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/detect/route.js +1 -1
- package/app/.next/server/app/api/translator/detect/route.js.nft.json +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.js +1 -1
- package/app/.next/server/app/api/translator/save/route.js.nft.json +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 +2 -2
- 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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/budget/route.js +2 -2
- package/app/.next/server/app/api/usage/budget/route.js.nft.json +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_client-reference-manifest.js +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_client-reference-manifest.js +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_client-reference-manifest.js +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_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/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.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/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_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_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_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +55 -55
- package/app/.next/server/chunks/1313.js +1 -0
- package/app/.next/server/chunks/1909.js +1 -1
- package/app/.next/server/chunks/2180.js +1 -247
- package/app/.next/server/chunks/2767.js +1 -1
- package/app/.next/server/chunks/292.js +2 -2
- package/app/.next/server/chunks/4488.js +3 -3
- package/app/.next/server/chunks/4631.js +1 -1
- package/app/.next/server/chunks/4935.js +1 -0
- package/app/.next/server/chunks/7327.js +1 -0
- package/app/.next/server/chunks/{2951.js → 7544.js} +2 -2
- package/app/.next/server/chunks/8158.js +1 -0
- package/app/.next/server/chunks/8252.js +135 -0
- package/app/.next/server/chunks/8907.js +1 -0
- package/app/.next/server/chunks/9854.js +2 -2
- package/app/.next/server/instrumentation.js +1 -1
- 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/static/chunks/{5846-014698d5430bb218.js → 5846-24bfc997547aa5eb.js} +1 -1
- package/app/.next/static/chunks/647-2caa8c920fe18ef0.js +21 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-65334129a8e63369.js +1 -0
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next/server/chunks/6242.js +0 -1
- package/app/.next/server/chunks/9340.js +0 -1
- package/app/.next/static/chunks/647-52d3e2e64d7de62e.js +0 -21
- package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-e8a28e4cf62889bd.js +0 -1
- /package/app/.next/static/{GDoUzLvy4YDqhnGqUCiZ0 → zQe0APljlfwuFfOOippgL}/_buildManifest.js +0 -0
- /package/app/.next/static/{GDoUzLvy4YDqhnGqUCiZ0 → zQe0APljlfwuFfOOippgL}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=4488,exports.ids=[4488],exports.modules={44488:(a,b,c)=>{c.d(b,{getDbInstance:()=>
|
|
1
|
+
"use strict";exports.id=4488,exports.ids=[4488],exports.modules={44488:(a,b,c)=>{c.d(b,{G6:()=>y,getDbInstance:()=>A,kB:()=>x});var d=c(87550),e=c.n(d),f=c(76760),g=c.n(f),h=c(73024),i=c.n(h),j=c(48161),k=c.n(j);let l="omniroute";function m(){try{return k().homedir()}catch{return process.cwd()}}function n(a){if("string"!=typeof a)return null;let b=a.trim();return b?g().resolve(b):null}function o(){return g().join(m(),`.${l}`)}var p=c(73136);let q=function(){try{let a="file:///home/diegosouzapw/dev/proxys/9router/src/lib/db/migrationRunner.ts";if(a&&a.startsWith("file://")){let b=(0,p.fileURLToPath)(a);return g().join(g().dirname(b),"migrations")}}catch{}return g().join(process.cwd(),"src","lib","db","migrations")}(),r="object"==typeof globalThis.caches&&null!==globalThis.caches,s="phase-production-build"===process.env.NEXT_PHASE,t=function({isCloud:a=!1}={}){if(a)return"/tmp";let b=n(process.env.DATA_DIR);if(b)return b;let c=m();if("win32"===process.platform){let a=process.env.APPDATA||g().join(c,"AppData","Roaming");return g().join(a,l)}let d=n(process.env.XDG_CONFIG_HOME);return d?g().join(d,l):o()}({isCloud:r});r||o();let u=r?null:g().join(t,"storage.sqlite"),v=r?null:g().join(t,"db.json");if(r||g().join(t,"db_backups"),!r&&!i().existsSync(t))try{i().mkdirSync(t,{recursive:!0})}catch(b){let a=b instanceof Error?b.message:String(b);console.warn(`[DB] Cannot create data directory '${t}': ${a}
|
|
2
2
|
[DB] Set the DATA_DIR environment variable to a writable path, e.g.:
|
|
3
3
|
[DB] DATA_DIR=/path/to/writable/dir omniroute`)}let w=`
|
|
4
4
|
CREATE TABLE IF NOT EXISTS provider_connections (
|
|
@@ -201,7 +201,7 @@
|
|
|
201
201
|
);
|
|
202
202
|
CREATE INDEX IF NOT EXISTS idx_sc_sig ON semantic_cache(signature);
|
|
203
203
|
CREATE INDEX IF NOT EXISTS idx_sc_model ON semantic_cache(model);
|
|
204
|
-
|
|
204
|
+
`;function x(a){if(!a)return null;let b={};for(let[c,d]of Object.entries(a)){let a=c.replace(/_([a-z])/g,(a,b)=>b.toUpperCase());if("isActive"===a||"rateLimitProtection"===a)b[a]=1===d||!0===d;else if("providerSpecificData"===a&&"string"==typeof d)try{b[a]=JSON.parse(d)}catch{b[a]=d}else b[a]=d}return b}function y(a){let b={};for(let[c,d]of Object.entries(a||{}))null!=d&&(b[c]=d);return b}let z=null;function A(){if(z)return z;if(r||s){s&&console.log("[DB] Build phase detected — using in-memory SQLite (read-only)");let a=new(e())(":memory:");return a.pragma("journal_mode = WAL"),a.exec(w),z=a,a}if(!u)throw Error("SQLITE_FILE is unavailable for local mode");if(i().existsSync(u))try{let a=new(e())(u,{readonly:!0});if(a.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='schema_migrations'").get()){let b=!1;try{let c=a.prepare("SELECT COUNT(*) as c FROM provider_connections").get();b=!!(c&&c.c>0)}catch{}if(a.close(),b){console.log(`[DB] Old schema_migrations table found but data exists — preserving data (#146)`);let a=new(e())(u);try{a.exec("DROP TABLE IF EXISTS schema_migrations"),a.pragma("wal_checkpoint(TRUNCATE)")}catch(b){let a=b instanceof Error?b.message:String(b);console.warn("[DB] Could not clean up old schema table:",a)}finally{a.close()}}else{let a=u+".old-schema";for(let b of(console.log(`[DB] Old incompatible schema detected (empty) — renaming to ${g().basename(a)}`),i().renameSync(u,a),["-wal","-shm"]))try{i().existsSync(u+b)&&i().unlinkSync(u+b)}catch{}}}else a.close()}catch(a){console.warn("[DB] Could not probe existing DB, will create fresh:",a instanceof Error?a.message:String(a));try{i().unlinkSync(u)}catch{}}let a=new(e())(u);a.pragma("journal_mode = WAL"),a.pragma("busy_timeout = 5000"),a.pragma("synchronous = NORMAL"),a.exec(w);try{let b=a.prepare("PRAGMA table_info(provider_connections)").all();new Set(b.map(a=>String(a.name??""))).has("rate_limit_protection")||(a.exec("ALTER TABLE provider_connections ADD COLUMN rate_limit_protection INTEGER DEFAULT 0"),console.log("[DB] Added provider_connections.rate_limit_protection column"))}catch(a){console.warn("[DB] Failed to verify provider_connections schema:",a instanceof Error?a.message:String(a))}return a.exec(`
|
|
205
205
|
CREATE TABLE IF NOT EXISTS _omniroute_migrations (
|
|
206
206
|
version TEXT PRIMARY KEY,
|
|
207
207
|
name TEXT NOT NULL,
|
|
@@ -244,4 +244,4 @@
|
|
|
244
244
|
`);for(let a of d.combos||[])f.run({id:a.id,name:a.name,data:JSON.stringify(a),createdAt:a.createdAt||new Date().toISOString(),updatedAt:a.updatedAt||new Date().toISOString()});let g=a.prepare(`
|
|
245
245
|
INSERT OR REPLACE INTO api_keys (id, name, key, machine_id, allowed_models, no_log, created_at)
|
|
246
246
|
VALUES (@id, @name, @key, @machineId, @allowedModels, @noLog, @createdAt)
|
|
247
|
-
`);for(let a of d.apiKeys||[])g.run({id:a.id,name:a.name,key:a.key,machineId:a.machineId||null,allowedModels:JSON.stringify(a.allowedModels||[]),noLog:+!!a.noLog,createdAt:a.createdAt||new Date().toISOString()})})();let j=b+".migrated";i().renameSync(b,j),console.log(`[DB] ✓ Migration complete. Original saved as ${j}`);let k=g().join(t,"db_backups");if(i().existsSync(k)){let a=i().readdirSync(k).filter(a=>a.endsWith(".json"));a.length>0&&console.log(`[DB] Note: ${a.length} legacy .json backups remain in ${k}`)}}catch(a){console.error("[DB] Migration from db.json failed:",a.message)}}(a,v),a.prepare("INSERT OR REPLACE INTO db_meta (key, value) VALUES ('schema_version', '1')").run(),
|
|
247
|
+
`);for(let a of d.apiKeys||[])g.run({id:a.id,name:a.name,key:a.key,machineId:a.machineId||null,allowedModels:JSON.stringify(a.allowedModels||[]),noLog:+!!a.noLog,createdAt:a.createdAt||new Date().toISOString()})})();let j=b+".migrated";i().renameSync(b,j),console.log(`[DB] ✓ Migration complete. Original saved as ${j}`);let k=g().join(t,"db_backups");if(i().existsSync(k)){let a=i().readdirSync(k).filter(a=>a.endsWith(".json"));a.length>0&&console.log(`[DB] Note: ${a.length} legacy .json backups remain in ${k}`)}}catch(a){console.error("[DB] Migration from db.json failed:",a.message)}}(a,v),a.prepare("INSERT OR REPLACE INTO db_meta (key, value) VALUES ('schema_version', '1')").run(),z=a,console.log(`[DB] SQLite database ready: ${u}`),a}}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=4631,exports.ids=[4631],exports.modules={1237:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(67484),f=c(65953),g=c(53156);function h({isOpen:a,onClose:b,title:c="Manual Configuration",configs:h=[]}){let[i,j]=(0,e.useState)(null),k=async(a,b)=>{try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(a);else{let b=document.createElement("textarea");b.value=a,b.style.position="fixed",b.style.left="-9999px",b.style.top="-9999px",b.style.opacity="0",document.body.appendChild(b),b.focus(),b.select(),document.execCommand("copy"),document.body.removeChild(b)}j(b),setTimeout(()=>j(null),2e3)}catch(a){console.log("Failed to copy:",a)}};return(0,d.jsx)(f.default,{isOpen:a,onClose:b,title:c,size:"xl",children:(0,d.jsx)("div",{className:"flex flex-col gap-4",children:h.map((a,b)=>(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm font-medium text-text-main",children:a.filename}),(0,d.jsxs)(g.default,{variant:"ghost",size:"sm",onClick:()=>k(a.content,b),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:i===b?"check":"content_copy"}),i===b?"Copied!":"Copy"]})]}),(0,d.jsx)("pre",{className:"px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs overflow-x-auto whitespace-pre-wrap break-all max-h-60 overflow-y-auto border border-border",children:a.content})]},b))})})}},2490:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(31846);function f({children:a,title:b,subtitle:c,icon:f,action:g,padding:h="md",hover:i=!1,className:j,...k}){return(0,d.jsxs)("div",{className:(0,e.cn)("bg-surface","border border-black/5 dark:border-white/5","rounded-lg shadow-sm",i&&"hover:shadow-md hover:border-primary/30 transition-all cursor-pointer",{none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"}[h],j),...k,children:[(b||g)&&(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[f&&(0,d.jsx)("div",{className:"p-2 rounded-lg bg-bg text-text-muted",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:f})}),(0,d.jsxs)("div",{children:[b&&(0,d.jsx)("h3",{className:"text-text-main font-semibold",children:b}),c&&(0,d.jsx)("p",{className:"text-sm text-text-muted",children:c})]})]}),g]}),a]})}f.Section=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-4 rounded-lg","bg-black/[0.02] dark:bg-white/[0.02]","border border-black/5 dark:border-white/5",b),...c,children:a})},f.Row=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-3 -mx-3 px-3 transition-colors","border-b border-black/5 dark:border-white/5 last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]",b),...c,children:a})},f.ListItem=function({children:a,actions:b,className:c,...f}){return(0,d.jsxs)("div",{className:(0,e.cn)("group flex items-center justify-between p-3 -mx-3 px-3","border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]","transition-colors",c),...f,children:[(0,d.jsx)("div",{className:"flex-1 min-w-0",children:a}),b&&(0,d.jsx)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity",children:b})]})}},4355:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(31846);let f={default:"bg-black/5 dark:bg-white/10 text-text-muted",primary:"bg-primary/10 text-primary",success:"bg-green-500/10 text-green-600 dark:text-green-400",warning:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",error:"bg-red-500/10 text-red-600 dark:text-red-400",info:"bg-blue-500/10 text-blue-600 dark:text-blue-400"},g={sm:"px-2 py-0.5 text-[10px]",md:"px-2.5 py-1 text-xs",lg:"px-3 py-1.5 text-sm"};function h({children:a,variant:b="default",size:c="md",dot:h=!1,icon:i,className:j}){return(0,d.jsxs)("span",{className:(0,e.cn)("inline-flex items-center gap-1.5 rounded-full font-semibold",f[b],g[c],j),children:[h&&(0,d.jsx)("span",{"aria-hidden":"true",className:(0,e.cn)("size-1.5 rounded-full","success"===b&&"bg-green-500","warning"===b&&"bg-yellow-500","error"===b&&"bg-red-500","info"===b&&"bg-blue-500","primary"===b&&"bg-primary","default"===b&&"bg-gray-500")}),i&&(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]","aria-hidden":"true",children:i}),a]})}},8744:(a,b,c)=>{c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(65953),i=c(53156),j=c(29518),k=c(73295);let l=new Set(["antigravity","gemini-cli"]);function m({isOpen:a,provider:b,providerInfo:c,onSuccess:f,onClose:g,idcConfig:m}){let[n,o]=(0,e.useState)("waiting"),[p,q]=(0,e.useState)(null),[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)(null),[v,w]=(0,e.useState)(!1),[x,y]=(0,e.useState)(null),[z,A]=(0,e.useState)(!1),B=(0,e.useRef)(null),{copied:C,copy:D}=(0,k.C)(),[E,F]=(0,e.useState)(!1),[G,H]=(0,e.useState)("/callback?code=...");(0,e.useRef)(!1),(0,e.useRef)(!1);let[I,J]=(0,e.useState)(!1),K=(0,e.useCallback)(async(a,c)=>{if(p)try{let d=await fetch(`/api/oauth/${b}/exchange`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:a,redirectUri:p.redirectUri,codeVerifier:p.codeVerifier,state:c})}),e=await d.json();if(!d.ok)throw Error(e.error);o("success"),f?.()}catch(a){a.message?.toLowerCase().includes("redirect_uri_mismatch")&&l.has(b)?u("redirect_uri_mismatch: As credenciais padr\xe3o do Google OAuth s\xf3 funcionam em localhost. Para uso remoto, configure suas pr\xf3prias credenciais OAuth nas vari\xe1veis de ambiente: "+("antigravity"===b?"ANTIGRAVITY_OAUTH_CLIENT_ID e ANTIGRAVITY_OAUTH_CLIENT_SECRET":"GEMINI_OAUTH_CLIENT_ID e GEMINI_OAUTH_CLIENT_SECRET")+". Veja o README, se\xe7\xe3o 'OAuth em Servidor Remoto'."):u(a.message),o("error")}},[p,b,f]),L=(0,e.useCallback)(async(a,c,d,e)=>{A(!0);for(let g=0;g<60;g++){await new Promise(a=>setTimeout(a,1e3*d));try{let g=await fetch(`/api/oauth/${b}/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceCode:a,codeVerifier:c,extraData:e})}),h=await g.json();if(h.success){o("success"),A(!1),f?.();return}if("expired_token"===h.error||"access_denied"===h.error)throw Error(h.errorDescription||h.error);"slow_down"===h.error&&(d=Math.min(d+5,30))}catch(a){u(a.message),o("error"),A(!1);return}}u("Authorization timeout"),o("error"),A(!1)},[b,f]),M=(0,e.useCallback)(async()=>{if(b)try{let a;if(u(null),"github"===b||"qwen"===b||"kiro"===b||"kimi-coding"===b||"kilocode"===b){w(!0),o("waiting");let a=await fetch(`/api/oauth/${b}/device-code`),c=await a.json();if(!a.ok)throw Error(c.error);y(c);let d=c.verification_uri_complete||c.verification_uri;d&&window.open(d,"oauth_verify");let e="kiro"===b?{_clientId:c._clientId,_clientSecret:c._clientSecret}:null;L(c.device_code,c.codeVerifier,c.interval||5,e);return}if("codex"===b&&E){try{let a=await fetch("/api/oauth/codex/start-callback-server"),b=await a.json();if(!a.ok)throw Error(b.error);q({...b,redirectUri:b.redirectUri}),o("waiting"),window.open(b.authUrl,"oauth_auth"),A(!0);for(let a=0;a<150;a++){await new Promise(a=>setTimeout(a,2e3));let a=await fetch("/api/oauth/codex/poll-callback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}),b=await a.json();if(b.success){o("success"),A(!1),f?.();return}if(b.error&&!b.pending)throw Error(b.errorDescription||b.error)}throw A(!1),Error("Authorization timeout")}catch(a){A(!1),o("input"),u(a.message+" — You can paste the callback URL manually below.")}return}if("codex"===b||"openai"===b)a="http://localhost:1455/auth/callback";else if(l.has(b)){let b=window.location.port||"20128";a=`http://localhost:${b}/callback`}else if(E){let b=window.location.port||("https:"===window.location.protocol?"443":"80");a=`http://localhost:${b}/callback`}else{let b=window.location.origin;a=`${b}/callback`}let c=await fetch(`/api/oauth/${b}/authorize?redirect_uri=${encodeURIComponent(a)}`),d=await c.json();if(!c.ok)throw Error(d.error);q({...d,redirectUri:a}),I?(o("waiting"),B.current=window.open(d.authUrl,"oauth_popup","width=600,height=700"),B.current||o("input")):(o("input"),window.open(d.authUrl,"oauth_auth"))}catch(a){u(a.message),o("error")}},[b,E,I,L,f]),N=async()=>{try{u(null);let a=new URL(r),b=a.searchParams.get("code"),c=a.searchParams.get("state"),d=a.searchParams.get("error");if(d)throw Error(a.searchParams.get("error_description")||d);if(!b)throw Error("No authorization code found in URL");await K(b,c)}catch(a){u(a.message),o("error")}};return b&&c?(0,d.jsx)(h.default,{isOpen:a,title:`Connect ${c.name}`,onClose:g,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:["waiting"===n&&!v&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Waiting for Authorization"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Complete the authorization in the popup window."}),(0,d.jsx)(i.default,{variant:"ghost",onClick:()=>o("input"),children:"Popup blocked? Enter URL manually"})]}),"waiting"===n&&v&&x&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"text-center py-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Visit the URL below and enter the code:"}),(0,d.jsxs)("div",{className:"bg-sidebar p-4 rounded-lg mb-4",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Verification URL"}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("code",{className:"flex-1 text-sm break-all",children:x.verification_uri}),(0,d.jsx)(i.default,{size:"sm",variant:"ghost",icon:"verify_url"===C?"check":"content_copy",onClick:()=>D(x.verification_uri,"verify_url")})]})]}),(0,d.jsxs)("div",{className:"bg-primary/10 p-4 rounded-lg",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Your Code"}),(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,d.jsx)("p",{className:"text-2xl font-mono font-bold text-primary",children:x.user_code}),(0,d.jsx)(i.default,{size:"sm",variant:"ghost",icon:"user_code"===C?"check":"content_copy",onClick:()=>D(x.user_code,"user_code")})]})]})]}),z&&(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),"Waiting for authorization..."]})]}),"input"===n&&!v&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-4",children:[!I&&l.has(b)&&(0,d.jsxs)("div",{className:"rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-200",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm align-middle mr-1",children:"warning"}),(0,d.jsx)("strong",{children:"Acesso remoto + Google OAuth:"})," As credenciais padr\xe3o s\xf3 aceitam redirect para ",(0,d.jsx)("code",{children:"localhost"}),". Ap\xf3s autorizar, o browser tentar\xe1 abrir",(0,d.jsx)("code",{children:"localhost"})," — copie essa URL completa e cole abaixo. Para uso totalmente remoto sem esse passo manual,"," ",(0,d.jsx)("a",{href:"https://github.com/diegosouzapw/OmniRoute#oauth-em-servidor-remoto",target:"_blank",rel:"noreferrer",className:"underline",children:"configure suas pr\xf3prias credenciais OAuth"}),"."]}),!I&&!l.has(b)&&(0,d.jsxs)("div",{className:"rounded-lg border border-blue-500/30 bg-blue-500/10 p-3 text-xs text-blue-200",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm align-middle mr-1",children:"info"}),(0,d.jsx)("strong",{children:"Remote access:"})," Since you're accessing OmniRoute remotely, after authorizing you'll see an error page (localhost not found). That's expected — just copy the full URL from your browser's address bar and paste it below."]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.default,{value:p?.authUrl||"",readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,d.jsx)(i.default,{variant:"secondary",icon:"auth_url"===C?"check":"content_copy",onClick:()=>D(p?.authUrl,"auth_url"),children:"Copy"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser."}),(0,d.jsx)(j.default,{value:r,onChange:a=>s(a.target.value),placeholder:G,className:"font-mono text-xs"})]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(i.default,{onClick:N,fullWidth:!0,disabled:!r,children:"Connect"}),(0,d.jsx)(i.default,{onClick:g,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===n&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your ",c.name," account has been connected."]}),(0,d.jsx)(i.default,{onClick:g,fullWidth:!0,children:"Done"})]}),"error"===n&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,d.jsx)("p",{className:"text-sm text-red-600 mb-4",children:t}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(i.default,{onClick:M,variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,d.jsx)(i.default,{onClick:g,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})}):null}m.propTypes={isOpen:g().bool.isRequired,provider:g().string,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired}},16116:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(49885),f=c.n(e),g=c(59869);function h({children:a}){return(0,d.jsxs)("div",{className:"min-h-screen flex flex-col relative bg-bg transition-colors duration-500 overflow-x-hidden selection:bg-primary/20 selection:text-primary",children:[(0,d.jsx)("div",{className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] bg-primary/5 dark:bg-primary/5 rounded-full blur-[100px] pointer-events-none z-0"}),(0,d.jsx)("div",{className:"fixed bottom-0 right-0 w-[600px] h-[600px] bg-orange-200/20 dark:bg-orange-900/10 rounded-full blur-[120px] pointer-events-none z-0 translate-y-1/3 translate-x-1/3"}),(0,d.jsx)("div",{className:"absolute top-6 right-6 z-20",children:(0,d.jsx)(g.default,{variant:"card"})}),(0,d.jsx)("main",{className:"flex-1 flex flex-col items-center justify-center p-4 sm:p-6 z-10 w-full h-full",children:a})]})}h.propTypes={children:f().node.isRequired}},17908:(a,b,c)=>{function d(a){try{return new Date(a).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return"-"}}function e(a){return a?a<1e3?`${a}ms`:`${(a/1e3).toFixed(1)}s`:"-"}function f(a){if(!a||"-"===a)return"-";let b=a.indexOf("@");return b>3?a.slice(0,3)+"***"+a.slice(b):a.length>8?a.slice(0,5)+"***":a}function g(a,b){if(!a&&!b)return"—";let c=a||"key";return b?`${c} (${function(a,b=2,c=2){return a?a.length<=b+c?`${a.slice(0,1)}***`:`${a.slice(0,b)}***${a.slice(-c)}`:""}(b,4,4)})`:c}function h(a){return a>=1e9?`${(a/1e9).toFixed(1)}B`:a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(1)}K`:new Intl.NumberFormat().format(a||0)}function i(a){return new Intl.NumberFormat().format(a||0)}function j(a){return`$${(a||0).toFixed(2)}`}function k(a,b=50){if(!a)return"-";try{let c=new URL(a),d=c.hostname+c.pathname;return d.length>b?d.slice(0,b)+"…":d}catch{return a.length>b?a.slice(0,b)+"…":a}}c.d(b,{F0:()=>j,Ib:()=>f,VK:()=>h,VO:()=>g,Y1:()=>k,a3:()=>e,fU:()=>d,xW:()=>i})},18732:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(35005),f=c(67484);let g={success:"✓",error:"✕",warning:"⚠",info:"ℹ"},h={success:{bg:"rgba(16, 185, 129, 0.15)",border:"rgba(16, 185, 129, 0.4)",icon:"#10b981"},error:{bg:"rgba(239, 68, 68, 0.15)",border:"rgba(239, 68, 68, 0.4)",icon:"#ef4444"},warning:{bg:"rgba(245, 158, 11, 0.15)",border:"rgba(245, 158, 11, 0.4)",icon:"#f59e0b"},info:{bg:"rgba(59, 130, 246, 0.15)",border:"rgba(59, 130, 246, 0.4)",icon:"#3b82f6"}};function i({notification:a,onDismiss:b}){let[c,e]=(0,f.useState)(!1),i=h[a.type]||h.info;return(0,d.jsxs)("div",{role:"alert","aria-live":"polite",style:{display:"flex",alignItems:"flex-start",gap:"12px",padding:"14px 16px",borderRadius:"10px",backgroundColor:i.bg,border:`1px solid ${i.border}`,backdropFilter:"blur(12px)",boxShadow:"0 8px 32px rgba(0,0,0,0.2)",minWidth:"320px",maxWidth:"420px",animation:c?"toastOut 0.2s ease-in forwards":"toastIn 0.3s ease-out forwards",transition:"all 0.2s ease"},children:[(0,d.jsx)("span",{style:{fontSize:"18px",color:i.icon,fontWeight:"bold",lineHeight:1,marginTop:"2px"},children:g[a.type]}),(0,d.jsxs)("div",{style:{flex:1,minWidth:0},children:[a.title&&(0,d.jsx)("div",{style:{fontWeight:600,fontSize:"14px",color:"var(--text-primary, #fff)",marginBottom:"2px"},children:a.title}),(0,d.jsx)("div",{style:{fontSize:"13px",color:"var(--text-secondary, #ccc)",lineHeight:1.4},children:a.message})]}),a.dismissible&&(0,d.jsx)("button",{onClick:()=>{e(!0),setTimeout(()=>b(a.id),200)},"aria-label":"Dismiss notification",style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-secondary, #999)",fontSize:"16px",padding:"0 2px",lineHeight:1,opacity:.6,transition:"opacity 0.15s"},onMouseEnter:a=>a.currentTarget.style.opacity="1",onMouseLeave:a=>a.currentTarget.style.opacity="0.6",children:"\xd7"})]})}function j(){let{notifications:a,removeNotification:b}=(0,e.i)();return 0===a.length?null:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("style",{children:`
|
|
1
|
+
"use strict";exports.id=4631,exports.ids=[4631],exports.modules={1237:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(67484),f=c(65953),g=c(53156);function h({isOpen:a,onClose:b,title:c="Manual Configuration",configs:h=[]}){let[i,j]=(0,e.useState)(null),k=async(a,b)=>{try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(a);else{let b=document.createElement("textarea");b.value=a,b.style.position="fixed",b.style.left="-9999px",b.style.top="-9999px",b.style.opacity="0",document.body.appendChild(b),b.focus(),b.select(),document.execCommand("copy"),document.body.removeChild(b)}j(b),setTimeout(()=>j(null),2e3)}catch(a){console.log("Failed to copy:",a)}};return(0,d.jsx)(f.default,{isOpen:a,onClose:b,title:c,size:"xl",children:(0,d.jsx)("div",{className:"flex flex-col gap-4",children:h.map((a,b)=>(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm font-medium text-text-main",children:a.filename}),(0,d.jsxs)(g.default,{variant:"ghost",size:"sm",onClick:()=>k(a.content,b),children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:i===b?"check":"content_copy"}),i===b?"Copied!":"Copy"]})]}),(0,d.jsx)("pre",{className:"px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs overflow-x-auto whitespace-pre-wrap break-all max-h-60 overflow-y-auto border border-border",children:a.content})]},b))})})}},2490:(a,b,c)=>{c.d(b,{default:()=>f});var d=c(48249),e=c(31846);function f({children:a,title:b,subtitle:c,icon:f,action:g,padding:h="md",hover:i=!1,className:j,...k}){return(0,d.jsxs)("div",{className:(0,e.cn)("bg-surface","border border-black/5 dark:border-white/5","rounded-lg shadow-sm",i&&"hover:shadow-md hover:border-primary/30 transition-all cursor-pointer",{none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"}[h],j),...k,children:[(b||g)&&(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[f&&(0,d.jsx)("div",{className:"p-2 rounded-lg bg-bg text-text-muted",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:f})}),(0,d.jsxs)("div",{children:[b&&(0,d.jsx)("h3",{className:"text-text-main font-semibold",children:b}),c&&(0,d.jsx)("p",{className:"text-sm text-text-muted",children:c})]})]}),g]}),a]})}f.Section=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-4 rounded-lg","bg-black/[0.02] dark:bg-white/[0.02]","border border-black/5 dark:border-white/5",b),...c,children:a})},f.Row=function({children:a,className:b,...c}){return(0,d.jsx)("div",{className:(0,e.cn)("p-3 -mx-3 px-3 transition-colors","border-b border-black/5 dark:border-white/5 last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]",b),...c,children:a})},f.ListItem=function({children:a,actions:b,className:c,...f}){return(0,d.jsxs)("div",{className:(0,e.cn)("group flex items-center justify-between p-3 -mx-3 px-3","border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]","transition-colors",c),...f,children:[(0,d.jsx)("div",{className:"flex-1 min-w-0",children:a}),b&&(0,d.jsx)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity",children:b})]})}},4355:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(31846);let f={default:"bg-black/5 dark:bg-white/10 text-text-muted",primary:"bg-primary/10 text-primary",success:"bg-green-500/10 text-green-600 dark:text-green-400",warning:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",error:"bg-red-500/10 text-red-600 dark:text-red-400",info:"bg-blue-500/10 text-blue-600 dark:text-blue-400"},g={sm:"px-2 py-0.5 text-[10px]",md:"px-2.5 py-1 text-xs",lg:"px-3 py-1.5 text-sm"};function h({children:a,variant:b="default",size:c="md",dot:h=!1,icon:i,className:j}){return(0,d.jsxs)("span",{className:(0,e.cn)("inline-flex items-center gap-1.5 rounded-full font-semibold",f[b],g[c],j),children:[h&&(0,d.jsx)("span",{"aria-hidden":"true",className:(0,e.cn)("size-1.5 rounded-full","success"===b&&"bg-green-500","warning"===b&&"bg-yellow-500","error"===b&&"bg-red-500","info"===b&&"bg-blue-500","primary"===b&&"bg-primary","default"===b&&"bg-gray-500")}),i&&(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]","aria-hidden":"true",children:i}),a]})}},8744:(a,b,c)=>{c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(65953),i=c(53156),j=c(29518),k=c(73295);let l=new Set(["antigravity","gemini-cli"]);function m({isOpen:a,provider:b,providerInfo:c,onSuccess:f,onClose:g,idcConfig:m}){let[n,o]=(0,e.useState)("waiting"),[p,q]=(0,e.useState)(null),[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)(null),[v,w]=(0,e.useState)(!1),[x,y]=(0,e.useState)(null),[z,A]=(0,e.useState)(!1),B=(0,e.useRef)(null),{copied:C,copy:D}=(0,k.C)(),[E,F]=(0,e.useState)(!1),[G,H]=(0,e.useState)("/callback?code=...");(0,e.useRef)(!1),(0,e.useRef)(!1);let[I,J]=(0,e.useState)(!1),K=(0,e.useCallback)(async(a,c)=>{if(p)try{let d=await fetch(`/api/oauth/${b}/exchange`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:a,redirectUri:p.redirectUri,codeVerifier:p.codeVerifier,state:c})}),e=await d.json();if(!d.ok)throw Error(e.error);o("success"),f?.()}catch(a){a.message?.toLowerCase().includes("redirect_uri_mismatch")&&l.has(b)?u("redirect_uri_mismatch: As credenciais padr\xe3o do Google OAuth s\xf3 funcionam em localhost. Para uso remoto, configure suas pr\xf3prias credenciais OAuth nas vari\xe1veis de ambiente: "+("antigravity"===b?"ANTIGRAVITY_OAUTH_CLIENT_ID e ANTIGRAVITY_OAUTH_CLIENT_SECRET":"GEMINI_OAUTH_CLIENT_ID e GEMINI_OAUTH_CLIENT_SECRET")+". Veja o README, se\xe7\xe3o 'OAuth em Servidor Remoto'."):u(a.message),o("error")}},[p,b,f]),L=(0,e.useCallback)(async(a,c,d,e)=>{A(!0);for(let g=0;g<60;g++){await new Promise(a=>setTimeout(a,1e3*d));try{let g=await fetch(`/api/oauth/${b}/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceCode:a,codeVerifier:c,extraData:e})}),h=await g.json();if(h.success){o("success"),A(!1),f?.();return}if("expired_token"===h.error||"access_denied"===h.error)throw Error(h.errorDescription||h.error);"slow_down"===h.error&&(d=Math.min(d+5,30))}catch(a){u(a.message),o("error"),A(!1);return}}u("Authorization timeout"),o("error"),A(!1)},[b,f]),M=(0,e.useCallback)(async()=>{if(b)try{let a;if(u(null),"github"===b||"qwen"===b||"kiro"===b||"kimi-coding"===b||"kilocode"===b){w(!0),o("waiting");let a=await fetch(`/api/oauth/${b}/device-code`),c=await a.json();if(!a.ok)throw Error(c.error);y(c);let d=c.verification_uri_complete||c.verification_uri;d&&window.open(d,"oauth_verify");let e="kiro"===b?{_clientId:c._clientId,_clientSecret:c._clientSecret}:null;L(c.device_code,c.codeVerifier,c.interval||5,e);return}if("codex"===b&&E){try{let a=await fetch("/api/oauth/codex/start-callback-server"),b=await a.json();if(!a.ok)throw Error(b.error);q({...b,redirectUri:b.redirectUri}),o("waiting"),window.open(b.authUrl,"oauth_auth"),A(!0);for(let a=0;a<150;a++){await new Promise(a=>setTimeout(a,2e3));let a=await fetch("/api/oauth/codex/poll-callback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})}),b=await a.json();if(b.success){o("success"),A(!1),f?.();return}if(b.error&&!b.pending)throw Error(b.errorDescription||b.error)}throw A(!1),Error("Authorization timeout")}catch(a){A(!1),o("input"),u(a.message+" — You can paste the callback URL manually below.")}return}if("codex"===b||"openai"===b)a="http://localhost:1455/auth/callback";else if(l.has(b)){let b=window.location.port||"20128";a=`http://localhost:${b}/callback`}else if(E){let b=window.location.port||("https:"===window.location.protocol?"443":"80");a=`http://localhost:${b}/callback`}else{let b=window.location.origin;a=`${b}/callback`}let c=await fetch(`/api/oauth/${b}/authorize?redirect_uri=${encodeURIComponent(a)}`),d=await c.json();if(!c.ok)throw Error(d.error);q({...d,redirectUri:a}),I?(o("waiting"),B.current=window.open(d.authUrl,"oauth_popup","width=600,height=700"),B.current||o("input")):(o("input"),window.open(d.authUrl,"oauth_auth"))}catch(a){u(a.message),o("error")}},[b,E,I,L,f]),N=async()=>{try{u(null);let a=new URL(r),b=a.searchParams.get("code"),c=a.searchParams.get("state"),d=a.searchParams.get("error");if(d)throw Error(a.searchParams.get("error_description")||d);if(!b)throw Error("No authorization code found in URL");await K(b,c)}catch(a){u(a.message),o("error")}};return b&&c?(0,d.jsx)(h.default,{isOpen:a,title:`Connect ${c.name}`,onClose:g,size:"lg",children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:["waiting"===n&&!v&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Waiting for Authorization"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Complete the authorization in the popup window."}),(0,d.jsx)(i.default,{variant:"ghost",onClick:()=>o("input"),children:"Popup blocked? Enter URL manually"})]}),"waiting"===n&&v&&x&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"text-center py-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Visit the URL below and enter the code:"}),(0,d.jsxs)("div",{className:"bg-sidebar p-4 rounded-lg mb-4",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Verification URL"}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("code",{className:"flex-1 text-sm break-all",children:x.verification_uri}),(0,d.jsx)(i.default,{size:"sm",variant:"ghost",icon:"verify_url"===C?"check":"content_copy",onClick:()=>D(x.verification_uri,"verify_url")})]})]}),(0,d.jsxs)("div",{className:"bg-primary/10 p-4 rounded-lg",children:[(0,d.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Your Code"}),(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,d.jsx)("p",{className:"text-2xl font-mono font-bold text-primary",children:x.user_code}),(0,d.jsx)(i.default,{size:"sm",variant:"ghost",icon:"user_code"===C?"check":"content_copy",onClick:()=>D(x.user_code,"user_code")})]})]})]}),z&&(0,d.jsxs)("div",{className:"flex items-center justify-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),"Waiting for authorization..."]})]}),"input"===n&&!v&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"space-y-4",children:[!I&&l.has(b)&&(0,d.jsxs)("div",{className:"rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-200",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm align-middle mr-1",children:"warning"}),(0,d.jsx)("strong",{children:"Acesso remoto + Google OAuth:"})," As credenciais padr\xe3o s\xf3 aceitam redirect para ",(0,d.jsx)("code",{children:"localhost"}),". Ap\xf3s autorizar, o browser tentar\xe1 abrir",(0,d.jsx)("code",{children:"localhost"})," — copie essa URL completa e cole abaixo. Para uso totalmente remoto sem esse passo manual,"," ",(0,d.jsx)("a",{href:"https://github.com/diegosouzapw/OmniRoute#oauth-em-servidor-remoto",target:"_blank",rel:"noreferrer",className:"underline",children:"configure suas pr\xf3prias credenciais OAuth"}),"."]}),!I&&!l.has(b)&&(0,d.jsxs)("div",{className:"rounded-lg border border-blue-500/30 bg-blue-500/10 p-3 text-xs text-blue-200",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm align-middle mr-1",children:"info"}),(0,d.jsx)("strong",{children:"Remote access:"})," Since you're accessing OmniRoute remotely, after authorizing you'll see an error page (localhost not found). That's expected — just copy the full URL from your browser's address bar and paste it below."]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.default,{value:p?.authUrl||"",readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,d.jsx)(i.default,{variant:"secondary",icon:"auth_url"===C?"check":"content_copy",onClick:()=>D(p?.authUrl,"auth_url"),children:"Copy"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,d.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser."}),(0,d.jsx)(j.default,{value:r,onChange:a=>s(a.target.value),placeholder:G,className:"font-mono text-xs"})]})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(i.default,{onClick:N,fullWidth:!0,disabled:!r,children:"Connect"}),(0,d.jsx)(i.default,{onClick:g,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===n&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,d.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your ",c.name," account has been connected."]}),(0,d.jsx)(i.default,{onClick:g,fullWidth:!0,children:"Done"})]}),"error"===n&&(0,d.jsxs)("div",{className:"text-center py-6",children:[(0,d.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,d.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,d.jsx)("p",{className:"text-sm text-red-600 mb-4",children:t}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(i.default,{onClick:M,variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,d.jsx)(i.default,{onClick:g,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})}):null}m.propTypes={isOpen:g().bool.isRequired,provider:g().string,providerInfo:g().shape({name:g().string}),onSuccess:g().func,onClose:g().func.isRequired}},16116:(a,b,c)=>{c.d(b,{default:()=>h});var d=c(48249),e=c(49885),f=c.n(e),g=c(59869);function h({children:a}){return(0,d.jsxs)("div",{className:"min-h-screen flex flex-col relative bg-bg transition-colors duration-500 overflow-x-hidden selection:bg-primary/20 selection:text-primary",children:[(0,d.jsx)("div",{className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] bg-primary/5 dark:bg-primary/5 rounded-full blur-[100px] pointer-events-none z-0"}),(0,d.jsx)("div",{className:"fixed bottom-0 right-0 w-[600px] h-[600px] bg-orange-200/20 dark:bg-orange-900/10 rounded-full blur-[120px] pointer-events-none z-0 translate-y-1/3 translate-x-1/3"}),(0,d.jsx)("div",{className:"absolute top-6 right-6 z-20",children:(0,d.jsx)(g.default,{variant:"card"})}),(0,d.jsx)("main",{className:"flex-1 flex flex-col items-center justify-center p-4 sm:p-6 z-10 w-full h-full",children:a})]})}h.propTypes={children:f().node.isRequired}},17908:(a,b,c)=>{function d(a){try{return new Date(a).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return"-"}}function e(a){return a?a<1e3?`${a}ms`:`${(a/1e3).toFixed(1)}s`:"-"}function f(a){if(!a||"-"===a)return"-";let b=a.indexOf("@");return b>3?a.slice(0,3)+"***"+a.slice(b):a.length>8?a.slice(0,5)+"***":a}function g(a,b){if(!a&&!b)return"—";let c=a||"key";return b?`${c} (${function(a,b=2,c=2){return a?a.length<=b+c?`${a.slice(0,1)}***`:`${a.slice(0,b)}***${a.slice(-c)}`:""}(b,4,4)})`:c}function h(a){return a>=1e9?`${(a/1e9).toFixed(1)}B`:a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(1)}K`:new Intl.NumberFormat().format(a||0)}function i(a){return new Intl.NumberFormat().format(a||0)}function j(a){return`$${(a||0).toFixed(2)}`}function k(a,b=50){if(!a)return"-";try{let c=new URL(a),d=c.hostname+c.pathname;return d.length>b?d.slice(0,b)+"…":d}catch{return a.length>b?a.slice(0,b)+"…":a}}function l(a){return"number"==typeof a&&isFinite(a)?a:void 0}c.d(b,{F0:()=>j,Ib:()=>f,Q1:()=>l,VK:()=>h,VO:()=>g,Y1:()=>k,a3:()=>e,fU:()=>d,xW:()=>i})},18732:(a,b,c)=>{c.d(b,{default:()=>j});var d=c(48249),e=c(35005),f=c(67484);let g={success:"✓",error:"✕",warning:"⚠",info:"ℹ"},h={success:{bg:"rgba(16, 185, 129, 0.15)",border:"rgba(16, 185, 129, 0.4)",icon:"#10b981"},error:{bg:"rgba(239, 68, 68, 0.15)",border:"rgba(239, 68, 68, 0.4)",icon:"#ef4444"},warning:{bg:"rgba(245, 158, 11, 0.15)",border:"rgba(245, 158, 11, 0.4)",icon:"#f59e0b"},info:{bg:"rgba(59, 130, 246, 0.15)",border:"rgba(59, 130, 246, 0.4)",icon:"#3b82f6"}};function i({notification:a,onDismiss:b}){let[c,e]=(0,f.useState)(!1),i=h[a.type]||h.info;return(0,d.jsxs)("div",{role:"alert","aria-live":"polite",style:{display:"flex",alignItems:"flex-start",gap:"12px",padding:"14px 16px",borderRadius:"10px",backgroundColor:i.bg,border:`1px solid ${i.border}`,backdropFilter:"blur(12px)",boxShadow:"0 8px 32px rgba(0,0,0,0.2)",minWidth:"320px",maxWidth:"420px",animation:c?"toastOut 0.2s ease-in forwards":"toastIn 0.3s ease-out forwards",transition:"all 0.2s ease"},children:[(0,d.jsx)("span",{style:{fontSize:"18px",color:i.icon,fontWeight:"bold",lineHeight:1,marginTop:"2px"},children:g[a.type]}),(0,d.jsxs)("div",{style:{flex:1,minWidth:0},children:[a.title&&(0,d.jsx)("div",{style:{fontWeight:600,fontSize:"14px",color:"var(--text-primary, #fff)",marginBottom:"2px"},children:a.title}),(0,d.jsx)("div",{style:{fontSize:"13px",color:"var(--text-secondary, #ccc)",lineHeight:1.4},children:a.message})]}),a.dismissible&&(0,d.jsx)("button",{onClick:()=>{e(!0),setTimeout(()=>b(a.id),200)},"aria-label":"Dismiss notification",style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-secondary, #999)",fontSize:"16px",padding:"0 2px",lineHeight:1,opacity:.6,transition:"opacity 0.15s"},onMouseEnter:a=>a.currentTarget.style.opacity="1",onMouseLeave:a=>a.currentTarget.style.opacity="0.6",children:"\xd7"})]})}function j(){let{notifications:a,removeNotification:b}=(0,e.i)();return 0===a.length?null:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("style",{children:`
|
|
2
2
|
@keyframes toastIn {
|
|
3
3
|
from { opacity: 0; transform: translateX(100%) scale(0.95); }
|
|
4
4
|
to { opacity: 1; transform: translateX(0) scale(1); }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports.id=4935,exports.ids=[4935],exports.modules={76046:(a,b,c)=>{"use strict";c.d(b,{Jb:()=>e,kf:()=>f});var d=c(50292);function e(a,b){let c=a.safeParse(b);return c.success?{success:!0,data:c.data}:{success:!1,error:{message:"Invalid request",details:(Array.isArray(c.error?.issues)?c.error.issues:[]).map(a=>({field:a.path.join("."),message:a.message}))}}}function f(a){return!1===a.success}d.Ikc({password:d.YjP().min(1,"Password is required").max(200)})},78335:()=>{},91363:(a,b,c)=>{"use strict";c.d(b,{$Q:()=>x,$g:()=>P,$q:()=>R,$z:()=>ay,A1:()=>v,AL:()=>al,BR:()=>f,C9:()=>U,CN:()=>as,DD:()=>aE,E4:()=>ag,F0:()=>u,FO:()=>af,GE:()=>ab,GR:()=>C,H3:()=>B,Hk:()=>aO,Ix:()=>aP,Jk:()=>ao,K3:()=>aj,KS:()=>Z,LQ:()=>aw,My:()=>ai,NZ:()=>ae,QC:()=>at,QI:()=>Q,Qd:()=>F,Qt:()=>ar,RD:()=>S,RK:()=>E,SQ:()=>X,Tp:()=>K,Tt:()=>an,X5:()=>n,XK:()=>aM,Ym:()=>A,Z0:()=>ak,_F:()=>k,_o:()=>aA,a6:()=>Y,aR:()=>aB,bF:()=>$,cf:()=>ah,cw:()=>aH,dB:()=>au,fZ:()=>aa,ij:()=>ax,jC:()=>z,jD:()=>L,jG:()=>aI,lP:()=>H,nq:()=>e,nu:()=>am,oL:()=>aL,q0:()=>aq,qt:()=>av,rE:()=>aG,rR:()=>I,rv:()=>G,s8:()=>az,t5:()=>w,tr:()=>m,uR:()=>O,wX:()=>T,x8:()=>aN,xd:()=>aF,yA:()=>y,zM:()=>ap});var d=c(50292);c(76046);let e=d.Ikc({provider:d.YjP().min(1).max(100),apiKey:d.YjP().min(1).max(1e4),name:d.YjP().min(1).max(200),priority:d.aig().int().min(1).max(100).optional(),globalPriority:d.aig().int().min(1).max(100).nullable().optional(),defaultModel:d.YjP().max(200).nullable().optional(),testStatus:d.YjP().max(50).optional()}),f=d.Ikc({name:d.YjP().min(1,"Name is required").max(200)}),g=d.KCZ([d.YjP(),d.Ikc({model:d.YjP().min(1),weight:d.aig().min(0).max(100).default(0)})]),h=d.Ikc({maxRetries:d.aig().int().min(0).max(10).optional(),retryDelayMs:d.aig().int().min(0).max(6e4).optional(),timeoutMs:d.aig().int().min(1e3).max(6e5).optional(),healthCheckEnabled:d.zMY().optional()}).optional(),i=d.k5n(["priority","weighted","round-robin","random","least-used","cost-optimized"]),j=d.Ikc({strategy:i.optional(),maxRetries:d.auy.number().int().min(0).max(10).optional(),retryDelayMs:d.auy.number().int().min(0).max(6e4).optional(),timeoutMs:d.auy.number().int().min(1e3).max(6e5).optional(),concurrencyPerModel:d.auy.number().int().min(1).max(20).optional(),queueTimeoutMs:d.auy.number().int().min(1e3).max(12e4).optional(),healthCheckEnabled:d.zMY().optional(),healthCheckTimeoutMs:d.auy.number().int().min(100).max(3e4).optional(),maxComboDepth:d.auy.number().int().min(1).max(10).optional(),trackMetrics:d.zMY().optional()}).strict(),k=d.Ikc({name:d.YjP().min(1,"Name is required").max(100).regex(/^[a-zA-Z0-9_/.-]+$/,"Name can only contain letters, numbers, -, _, / and ."),models:d.YOg(g).optional().default([]),strategy:i.optional().default("priority"),config:h}),l=d.Ikc({quota:d.aig().min(0).max(1),health:d.aig().min(0).max(1),costInv:d.aig().min(0).max(1),latencyInv:d.aig().min(0).max(1),taskFit:d.aig().min(0).max(1),stability:d.aig().min(0).max(1)}).optional(),m=d.Ikc({id:d.YjP().trim().min(1,"id is required").max(100),name:d.YjP().trim().min(1,"name is required").max(200),candidatePool:d.YOg(d.YjP().min(1)).optional().default([]),weights:l,modePack:d.YjP().max(100).optional(),budgetCap:d.aig().positive().optional(),explorationRate:d.aig().min(0).max(1).optional().default(.05)});d.Ikc({newPassword:d.YjP().min(1).max(200).optional(),currentPassword:d.YjP().max(200).optional(),theme:d.YjP().max(50).optional(),language:d.YjP().max(10).optional(),requireLogin:d.zMY().optional(),enableRequestLogs:d.zMY().optional(),enableSocks5Proxy:d.zMY().optional(),instanceName:d.YjP().max(100).optional(),corsOrigins:d.YjP().max(500).optional(),logRetentionDays:d.aig().int().min(1).max(365).optional(),cloudUrl:d.YjP().max(500).optional(),baseUrl:d.YjP().max(500).optional(),setupComplete:d.zMY().optional(),requireAuthForModels:d.zMY().optional(),blockedProviders:d.YOg(d.YjP().max(100)).optional(),hideHealthCheckLogs:d.zMY().optional(),fallbackStrategy:d.k5n(["fill-first","round-robin","p2c","random","least-used","cost-optimized"]).optional(),wildcardAliases:d.YOg(d.Ikc({pattern:d.YjP(),target:d.YjP()})).optional(),stickyRoundRobinLimit:d.aig().int().min(0).max(1e3).optional(),mcpEnabled:d.zMY().optional(),a2aEnabled:d.zMY().optional()});let n=d.Ikc({password:d.YjP().min(1,"Password is required").max(200)}),o=d.YjP().trim().min(1,"Model is required").max(200),p=d.YjP().trim().min(1,"Field is required"),q=d.YOg(d.aig().int().min(0)).min(1,"input token array must contain at least one item"),r=d.KCZ([p,d.YOg(p).min(1,"input must contain at least one item"),q,d.YOg(q).min(1,"input must contain at least one item")]),s=d.Ikc({role:d.YjP().trim().min(1,"messages[].role is required"),content:d.KCZ([p,d.YOg(d.L5J()).min(1),d.chJ()]).optional()}).catchall(d.L5J()),t=d.Ikc({content:d.KCZ([p,d.YOg(d.Ikc({type:d.YjP().optional(),text:d.YjP().optional()}).catchall(d.L5J())).min(1,"messages[].content must contain at least one item")])}).catchall(d.L5J()),u=d.Ikc({model:o,input:r,dimensions:d.auy.number().int().positive().optional(),encoding_format:d.k5n(["float","base64"]).optional()}).catchall(d.L5J()),v=d.Ikc({model:o,prompt:p}).catchall(d.L5J()),w=d.Ikc({model:o,input:p}).catchall(d.L5J()),x=d.Ikc({model:o.optional(),input:d.L5J().refine(a=>null!=a&&("string"==typeof a?a.trim().length>0:!Array.isArray(a)||a.length>0),"Input is required")}).catchall(d.L5J()),y=d.Ikc({model:o,query:p,documents:d.YOg(d.L5J()).min(1,"documents must contain at least one item")}).catchall(d.L5J()),z=d.Ikc({model:o,messages:d.YOg(s).min(1).optional(),input:d.KCZ([p,d.YOg(d.L5J()).min(1)]).optional(),prompt:p.optional()}).catchall(d.L5J()).superRefine((a,b)=>{void 0===a.messages&&void 0===a.input&&void 0===a.prompt&&b.addIssue({code:d.eqx.custom,message:"messages, input or prompt is required",path:[]})}),A=d.Ikc({messages:d.YOg(t).min(1,"messages must contain at least one item")}).catchall(d.L5J()),B=d.Ikc({apiKeyId:d.YjP().trim().min(1,"apiKeyId is required"),dailyLimitUsd:d.auy.number().positive("dailyLimitUsd must be greater than zero"),monthlyLimitUsd:d.auy.number().positive("monthlyLimitUsd must be greater than zero").optional(),warningThreshold:d.auy.number().min(0).max(1).optional()}),C=d.Ikc({action:d.k5n(["unlock"]),identifier:d.YjP().trim().min(1).optional()}).superRefine((a,b)=>{"unlock"!==a.action||a.identifier||b.addIssue({code:d.eqx.custom,message:"identifier is required for unlock action",path:["identifier"]})}),D=d.Ikc({provider:d.YjP().trim().min(1,"provider is required"),priority:d.aig().int().min(1).max(100).optional(),enabled:d.zMY().optional()}).catchall(d.L5J()),E=d.Ikc({model:o,chain:d.YOg(D).min(1,"chain must contain at least one provider")}),F=d.Ikc({model:o}),G=d.Ikc({model:o,alias:d.YjP().trim().min(1,"Alias is required").max(200)}),H=d.Ikc({provider:d.YjP().trim().min(1,"provider is required").max(120),model:o}),I=d.Ikc({provider:d.YjP().trim().min(1,"provider is required").max(120),modelId:d.YjP().trim().min(1,"modelId is required").max(240),modelName:d.YjP().trim().max(240).optional(),source:d.YjP().trim().max(80).optional(),apiFormat:d.k5n(["chat-completions","responses"]).default("chat-completions"),supportedEndpoints:d.YOg(d.k5n(["chat","embeddings","images","audio"])).default(["chat"])}),J=d.Ikc({input:d.aig().min(0).optional(),output:d.aig().min(0).optional(),cached:d.aig().min(0).optional(),reasoning:d.aig().min(0).optional(),cache_creation:d.aig().min(0).optional()}).strict(),K=d.g1P(d.YjP().trim().min(1),d.g1P(d.YjP().trim().min(1),J)),L=d.Ikc({connectionId:d.YjP().trim().min(1,"connectionId is required"),enabled:d.zMY()}),M=d.Ikc({transientCooldown:d.aig().min(0),rateLimitCooldown:d.aig().min(0),maxBackoffLevel:d.aig().int().min(0),circuitBreakerThreshold:d.aig().int().min(0),circuitBreakerReset:d.aig().min(0)}),N=d.Ikc({requestsPerMinute:d.aig().int().min(1).optional(),minTimeBetweenRequests:d.aig().int().min(1).optional(),concurrentRequests:d.aig().int().min(1).optional()}).strict(),O=d.Ikc({profiles:d.Ikc({oauth:M.optional(),apikey:M.optional()}).strict().optional(),defaults:N.optional()}).superRefine((a,b)=>{a.profiles||a.defaults||b.addIssue({code:d.eqx.custom,message:"Must provide profiles or defaults",path:[]})}),P=d.g1P(d.YjP(),d.L5J()),Q=d.Ikc({action:d.euz("reset-stats")}),R=d.Ikc({comboDefaults:j.optional(),providerOverrides:d.g1P(d.YjP().trim().min(1),j).optional()}).superRefine((a,b)=>{a.comboDefaults||a.providerOverrides||b.addIssue({code:d.eqx.custom,message:"Nothing to update",path:[]})}),S=d.Ikc({requireLogin:d.zMY().optional(),password:d.YjP().min(4,"Password must be at least 4 characters").optional()}).superRefine((a,b)=>{void 0!==a.requireLogin||a.password||b.addIssue({code:d.eqx.custom,message:"No valid fields to update",path:[]})}),T=d.Ikc({prompt:d.YjP().max(5e4).optional(),enabled:d.zMY().optional()}).strict().superRefine((a,b)=>{void 0===a.prompt&&void 0===a.enabled&&b.addIssue({code:d.eqx.custom,message:"No valid fields to update",path:[]})}),U=d.Ikc({mode:d.k5n(["passthrough","auto","custom","adaptive"]).optional(),customBudget:d.auy.number().int().min(0).max(131072).optional(),effortLevel:d.k5n(["none","low","medium","high"]).optional(),baseBudget:d.auy.number().int().min(0).max(131072).optional(),complexityMultiplier:d.auy.number().min(0).optional()}).strict().superRefine((a,b)=>{void 0===a.mode&&void 0===a.customBudget&&void 0===a.effortLevel&&void 0===a.baseBudget&&void 0===a.complexityMultiplier&&b.addIssue({code:d.eqx.custom,message:"No valid fields to update",path:[]})}),V=d.k5n(["blacklist","whitelist"]),W=d.Ikc({ip:d.YjP().trim().min(1),durationMs:d.auy.number().int().min(1).optional(),reason:d.YjP().max(200).optional()}),X=d.Ikc({enabled:d.zMY().optional(),mode:V.optional(),blacklist:d.YOg(d.YjP()).optional(),whitelist:d.YOg(d.YjP()).optional(),addBlacklist:d.YjP().optional(),removeBlacklist:d.YjP().optional(),addWhitelist:d.YjP().optional(),removeWhitelist:d.YjP().optional(),tempBan:W.optional(),removeBan:d.YjP().optional()}).strict().superRefine((a,b)=>{0===Object.keys(a).length&&b.addIssue({code:d.eqx.custom,message:"No valid fields to update",path:[]})}),Y=d.Ikc({aliases:d.g1P(d.YjP().trim().min(1),d.YjP().trim().min(1))}),Z=d.Ikc({from:d.YjP().trim().min(1),to:d.YjP().trim().min(1)}),$=d.Ikc({from:d.YjP().trim().min(1)}),_=d.Ikc({type:d.vkY(a=>"string"==typeof a?a.trim().toLowerCase():a,d.k5n(["http","https","socks5"])).optional(),host:d.YjP().trim().min(1).optional(),port:d.auy.number().int().min(1).max(65535).optional(),username:d.YjP().optional(),password:d.YjP().optional()}).strict(),aa=d.Ikc({proxy:_.nullable().optional(),global:_.nullable().optional(),providers:d.g1P(d.YjP().trim().min(1),_.nullable()).optional(),combos:d.g1P(d.YjP().trim().min(1),_.nullable()).optional(),keys:d.g1P(d.YjP().trim().min(1),_.nullable()).optional(),level:d.k5n(["global","provider","combo","key"]).optional(),id:d.YjP().optional()}).strict().superRefine((a,b)=>{void 0===a.proxy&&void 0===a.global&&void 0===a.providers&&void 0===a.combos&&void 0===a.keys&&void 0===a.level&&b.addIssue({code:d.eqx.custom,message:"No valid fields to update",path:[]}),void 0!==a.level&&void 0===a.proxy&&b.addIssue({code:d.eqx.custom,message:"proxy is required when level is provided",path:["proxy"]}),a.level&&"global"!==a.level&&!a.id?.trim()&&b.addIssue({code:d.eqx.custom,message:"id is required for provider/combo/key level updates",path:["id"]})}),ab=d.Ikc({proxy:d.Ikc({type:d.YjP().optional(),host:d.YjP().trim().min(1,"proxy.host is required"),port:d.KCZ([d.YjP(),d.aig()]),username:d.YjP().optional(),password:d.YjP().optional()})}),ac=d.g1P(d.YjP(),d.L5J()).refine(a=>Object.keys(a).length>0,"Body must be a non-empty object"),ad=d.k5n(["1_req_client.json","2_req_source.json","3_req_openai.json","4_req_target.json","5_res_provider.txt"]),ae=d.Ikc({body:ac}),af=d.Ikc({file:ad,content:d.YjP().min(1,"Content is required").max(1e6,"Content is too large")}),ag=d.Ikc({provider:d.YjP().trim().min(1,"Provider is required"),body:ac}),ah=d.Ikc({step:d.KCZ([d.aig().int().min(1).max(4),d.euz("direct")]),provider:d.YjP().trim().min(1).optional(),body:ac,sourceFormat:d.YjP().optional(),targetFormat:d.YjP().optional()}).superRefine((a,b)=>{"direct"===a.step||a.provider||b.addIssue({code:d.eqx.custom,message:"Step and provider are required",path:["provider"]})}),ai=d.Ikc({code:d.YjP().trim().min(1),redirectUri:d.YjP().trim().min(1),codeVerifier:d.YjP().trim().min(1),state:d.YjP().optional()}),aj=d.Ikc({deviceCode:d.YjP().trim().min(1),codeVerifier:d.YjP().optional(),extraData:d.L5J().optional()}),ak=d.Ikc({accessToken:d.YjP().trim().min(1,"Access token is required"),machineId:d.YjP().trim().min(1,"Machine ID is required")}),al=d.Ikc({refreshToken:d.YjP().trim().min(1,"Refresh token is required")}),am=d.Ikc({code:d.YjP().trim().min(1,"Code is required"),codeVerifier:d.YjP().trim().min(1,"Code verifier is required"),provider:d.k5n(["google","github"])}),an=d.Ikc({provider:d.YjP().trim().min(1,"Provider is required"),credentials:d.Ikc({accessToken:d.YjP().optional(),refreshToken:d.YjP().optional(),expiresIn:d.auy.number().positive().optional()}).strict().superRefine((a,b)=>{void 0===a.accessToken&&void 0===a.refreshToken&&void 0===a.expiresIn&&b.addIssue({code:d.eqx.custom,message:"At least one credential field must be provided",path:[]})})}),ao=d.Ikc({alias:d.YjP().trim().min(1,"Missing alias")}),ap=d.Ikc({model:d.YjP().trim().min(1,"Model and alias required"),alias:d.YjP().trim().min(1,"Model and alias required")}),aq=d.Ikc({action:d.k5n(["enable","sync","disable"])}),ar=d.Ikc({name:d.YjP().min(1,"Name is required").max(100).regex(/^[a-zA-Z0-9_/.-]+$/,"Name can only contain letters, numbers, -, _, / and .").optional(),models:d.YOg(g).optional(),strategy:i.optional(),config:j.optional(),isActive:d.zMY().optional()}).superRefine((a,b)=>{void 0===a.name&&void 0===a.models&&void 0===a.strategy&&void 0===a.config&&void 0===a.isActive&&b.addIssue({code:d.eqx.custom,message:"No valid fields to update",path:[]})}),as=d.Ikc({comboName:d.YjP().trim().min(1,"comboName is required")}),at=d.Ikc({backupId:d.YjP().trim().min(1,"backupId is required")}),au=d.Ikc({suiteId:d.YjP().trim().min(1,"suiteId is required"),outputs:d.g1P(d.YjP(),d.YjP())}),av=d.Ikc({allowedModels:d.YOg(d.YjP().trim().min(1)).max(1e3).optional(),noLog:d.zMY().optional()}).superRefine((a,b)=>{void 0===a.allowedModels&&void 0===a.noLog&&b.addIssue({code:d.eqx.custom,message:"No valid fields to update",path:[]})}),aw=d.Ikc({name:d.YjP().trim().min(1,"Name is required"),prefix:d.YjP().trim().min(1,"Prefix is required"),apiType:d.k5n(["chat","responses"]).optional(),baseUrl:d.YjP().trim().min(1).optional(),type:d.k5n(["openai-compatible","anthropic-compatible"]).optional()}).superRefine((a,b)=>{"openai-compatible"!==(a.type||"openai-compatible")||a.apiType||b.addIssue({code:d.eqx.custom,message:"Invalid OpenAI compatible API type",path:["apiType"]})}),ax=d.Ikc({name:d.YjP().trim().min(1,"Name is required"),prefix:d.YjP().trim().min(1,"Prefix is required"),apiType:d.k5n(["chat","responses"]).optional(),baseUrl:d.YjP().trim().min(1,"Base URL is required")}),ay=d.Ikc({baseUrl:d.YjP().trim().min(1,"Base URL and API key required"),apiKey:d.YjP().trim().min(1,"Base URL and API key required"),type:d.k5n(["openai-compatible","anthropic-compatible"]).optional()}),az=d.Ikc({name:d.YjP().max(200).optional(),priority:d.auy.number().int().min(1).max(100).optional(),globalPriority:d.KCZ([d.auy.number().int().min(1).max(100),d.chJ()]).optional(),defaultModel:d.KCZ([d.YjP().max(200),d.chJ()]).optional(),isActive:d.zMY().optional(),apiKey:d.YjP().max(1e4).optional(),testStatus:d.YjP().max(50).optional(),lastError:d.KCZ([d.YjP(),d.chJ()]).optional(),lastErrorAt:d.KCZ([d.YjP(),d.chJ()]).optional(),lastErrorType:d.KCZ([d.YjP(),d.chJ()]).optional(),lastErrorSource:d.KCZ([d.YjP(),d.chJ()]).optional(),errorCode:d.KCZ([d.YjP(),d.chJ()]).optional(),rateLimitedUntil:d.KCZ([d.YjP(),d.chJ()]).optional(),lastTested:d.KCZ([d.YjP(),d.chJ()]).optional(),healthCheckInterval:d.auy.number().int().min(0).optional()}).superRefine((a,b)=>{0===Object.keys(a).length&&b.addIssue({code:d.eqx.custom,message:"No valid fields to update",path:[]})}),aA=d.Ikc({mode:d.k5n(["provider","oauth","free","apikey","compatible","all"]),providerId:d.YjP().trim().min(1).optional()}).superRefine((a,b)=>{"provider"!==a.mode||a.providerId||b.addIssue({code:d.eqx.custom,message:"providerId is required when mode=provider",path:["providerId"]})}),aB=d.Ikc({provider:d.YjP().trim().min(1,"Provider and API key required"),apiKey:d.YjP().trim().min(1,"Provider and API key required")}),aC=d.Ikc({text:d.YjP().optional()}).catchall(d.L5J()),aD=d.Ikc({role:d.YjP().optional(),parts:d.YOg(aC).optional()}).catchall(d.L5J()),aE=d.Ikc({contents:d.YOg(aD).optional(),systemInstruction:d.Ikc({parts:d.YOg(aC).optional()}).catchall(d.L5J()).optional(),generationConfig:d.Ikc({stream:d.zMY().optional(),maxOutputTokens:d.auy.number().int().min(1).optional(),temperature:d.auy.number().optional(),topP:d.auy.number().optional()}).catchall(d.L5J()).optional()}).catchall(d.L5J()).superRefine((a,b)=>{a.contents||a.systemInstruction||b.addIssue({code:d.eqx.custom,message:"contents or systemInstruction is required",path:[]})}),aF=d.Ikc({apiKey:d.YjP().trim().min(1,"Missing apiKey"),sudoPassword:d.YjP().optional()}),aG=d.Ikc({sudoPassword:d.YjP().optional()}),aH=d.Ikc({tool:d.YjP().trim().min(1,"tool and mappings required"),mappings:d.g1P(d.YjP(),d.YjP().optional())}),aI=d.Ikc({tool:d.YjP().trim().min(1).optional(),toolId:d.YjP().trim().min(1).optional(),backupId:d.YjP().trim().min(1,"tool and backupId are required")}).superRefine((a,b)=>{a.tool||a.toolId||b.addIssue({code:d.eqx.custom,message:"tool and backupId are required",path:["tool"]})}),aJ=d.YjP().trim().min(1,"Environment key is required").max(120).regex(/^[A-Z_][A-Z0-9_]*$/,"Invalid environment key format"),aK=d.KCZ([d.YjP(),d.aig(),d.zMY()]).transform(a=>String(a)).refine(a=>a.length>0,"Environment value is required").refine(a=>a.length<=1e4,"Environment value is too long"),aL=d.Ikc({env:d.g1P(aJ,aK).refine(a=>Object.keys(a).length>0,"env must contain at least one key")}),aM=d.Ikc({baseUrl:d.YjP().trim().min(1,"baseUrl and model are required"),apiKey:d.YjP().optional(),model:d.YjP().trim().min(1,"baseUrl and model are required")}),aN=d.Ikc({name:d.YjP().trim().min(1,"Profile name is required")}),aO=d.Ikc({profileId:d.YjP().trim().min(1,"profileId is required")}),aP=d.Ikc({baseUrl:d.YjP().trim().min(1).optional(),apiKey:d.YjP().optional(),model:d.YjP().trim().min(1,"Model is required")})},96487:()=>{}};
|
|
@@ -0,0 +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,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=2951,exports.ids=[2951],exports.modules={14938:(a,b,c)=>{c.d(b,{c:()=>h});var d=c(55511),e=c.n(d),f=c(39859),g=c(60293);class h extends f.H{constructor(){super("antigravity",g.xq.antigravity)}buildUrl(a,b,c=0){let d=this.getBaseUrls(),e=d[c]||d[0];return`${e}/v1internal:${b?"streamGenerateContent?alt=sse":"generateContent"}`}buildHeaders(a,b=!0){return{"Content-Type":"application/json",Authorization:`Bearer ${a.accessToken}`,"User-Agent":this.config.headers?.["User-Agent"]||"antigravity/1.104.0 darwin/arm64","X-OmniRoute-Source":"omniroute",...b&&{Accept:"text/event-stream"}}}transformRequest(a,b,c,d){let f=b?.project,g=d?.projectId,h=f||g||this.generateProjectId();f||g||console.warn(`[Antigravity] ⚠️ No projectId provided via body or credentials — using generated fallback "${h}". This may cause 404 errors if the account has no active GCP project. Ensure the OAuth token includes a valid project or the request includes a project field.`);let i=(b.request?.contents?.map(a=>{let b=a.role;a.parts?.some(a=>a.functionResponse)&&(b="user");let c=a.parts?.filter(a=>!a.thought&&!a.thoughtSignature)||[];return{...a,role:b,parts:c}})||[]).filter(a=>!Array.isArray(a.parts)||a.parts.length>0),j={...b.request,...i.length>0&&{contents:i},sessionId:b.request?.sessionId||this.generateSessionId(),safetySettings:void 0,toolConfig:b.request?.tools?.length>0?{functionCallingConfig:{mode:"VALIDATED"}}:b.request?.toolConfig},k=a&&a.includes("/")?a.split("/").pop():a;return{...b,project:h,model:k,userAgent:"antigravity",requestType:"agent",requestId:`agent-${e().randomUUID()}`,request:j}}async refreshCredentials(a,b){if(!a.refreshToken)return null;try{let c=await fetch(g.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a.refreshToken,client_id:this.config.clientId,client_secret:this.config.clientSecret})});if(!c.ok)return null;let d=await c.json();return b?.info?.("TOKEN","Antigravity refreshed"),{accessToken:d.access_token,refreshToken:d.refresh_token||a.refreshToken,expiresIn:d.expires_in,projectId:a.projectId}}catch(a){return b?.error?.("TOKEN",`Antigravity refresh error: ${a.message}`),null}}generateProjectId(){let a=["useful","bright","swift","calm","bold"][Math.floor(5*Math.random())],b=["fuze","wave","spark","flow","core"][Math.floor(5*Math.random())];return`${a}-${b}-${e().randomUUID().slice(0,5)}`}generateSessionId(){return`-${Math.floor(9e18*Math.random())}`}parseRetryHeaders(a){if(!a?.get)return null;let b=a.get("retry-after");if(b){let a=parseInt(b,10);if(!isNaN(a)&&a>0)return 1e3*a;let c=new Date(b);if(!isNaN(c.getTime())){let a=c.getTime()-Date.now();return a>0?a:null}}let c=a.get("x-ratelimit-reset-after");if(c){let a=parseInt(c,10);if(!isNaN(a)&&a>0)return 1e3*a}let d=a.get("x-ratelimit-reset");if(d){let a=1e3*parseInt(d,10)-Date.now();return a>0?a:null}return null}parseRetryFromErrorMessage(a){if(!a||"string"!=typeof a)return null;let b=a.match(/reset after (\d+h)?(\d+m)?(\d+s)?/i);if(!b)return null;let c=0;return b[1]&&(c+=3600*parseInt(b[1])*1e3),b[2]&&(c+=60*parseInt(b[2])*1e3),b[3]&&(c+=1e3*parseInt(b[3])),c>0?c:null}async execute({model:a,body:b,stream:c,credentials:d,signal:e,log:f}){let h=this.getFallbackCount(),i=null,j=0,k={};for(let l=0;l<h;l++){let m=this.buildUrl(a,c,l),n=this.buildHeaders(d,c),o=this.transformRequest(a,b,c,d);k[l]||(k[l]=0);try{let a=await fetch(m,{method:"POST",headers:n,body:JSON.stringify(o),signal:e});if(a.status===g.gx.RATE_LIMITED||a.status===g.gx.SERVICE_UNAVAILABLE){let b=this.parseRetryHeaders(a.headers);if(!b)try{let c=await a.clone().text(),d=JSON.parse(c),e=d?.error?.message||d?.message||"";b=this.parseRetryFromErrorMessage(e)}catch(a){}if(b&&b<=1e4){f?.debug?.("RETRY",`${a.status} with Retry-After: ${Math.ceil(b/1e3)}s, waiting...`),await new Promise(a=>setTimeout(a,b)),l--;continue}if(a.status===g.gx.RATE_LIMITED&&(!b||0===b)&&k[l]<3){k[l]++;let a=Math.min(1e3*2**k[l],1e4);f?.debug?.("RETRY",`429 auto retry ${k[l]}/3 after ${a/1e3}s`),await new Promise(b=>setTimeout(b,a)),l--;continue}if(f?.debug?.("RETRY",`${a.status}, Retry-After ${b?`too long (${Math.ceil(b/1e3)}s)`:"missing"}, trying fallback`),j=a.status,l+1<h)continue}if(this.shouldRetry(a.status,l)){f?.debug?.("RETRY",`${a.status} on ${m}, trying fallback ${l+1}`),j=a.status;continue}return{response:a,url:m,headers:n,transformedBody:o}}catch(a){if(i=a,l+1<h){f?.debug?.("RETRY",`Error on ${m}, trying fallback ${l+1}`);continue}throw a}}throw i||Error(`All ${h} URLs failed with status ${j}`)}}},18221:(a,b,c)=>{c.d(b,{L:()=>g});var d=c(39859),e=c(60293),f=c(87068);class g extends d.H{constructor(a){super(a,e.xq[a]||e.xq.openai)}buildUrl(a,b,c=0,d=null){if(this.provider?.startsWith?.("openai-compatible-")){let a=(d?.providerSpecificData?.baseUrl||"https://api.openai.com/v1").replace(/\/$/,""),b=this.provider.includes("responses")?"/responses":"/chat/completions";return`${a}${b}`}if(this.provider?.startsWith?.("anthropic-compatible-")){let a=(d?.providerSpecificData?.baseUrl||"https://api.anthropic.com/v1").replace(/\/$/,"");return`${a}/messages`}switch(this.provider){case"claude":case"glm":case"kimi-coding":case"minimax":case"minimax-cn":return`${this.config.baseUrl}?beta=true`;case"gemini":return`${this.config.baseUrl}/${a}:${b?"streamGenerateContent?alt=sse":"generateContent"}`;default:return this.config.baseUrl}}buildHeaders(a,b=!0){let c={"Content-Type":"application/json",...this.config.headers};switch(this.provider){case"gemini":a.apiKey?c["x-goog-api-key"]=a.apiKey:c.Authorization=`Bearer ${a.accessToken}`;break;case"claude":a.apiKey?c["x-api-key"]=a.apiKey:c.Authorization=`Bearer ${a.accessToken}`;break;case"glm":case"kimi-coding":case"minimax":case"minimax-cn":c["x-api-key"]=a.apiKey||a.accessToken;break;default:this.provider?.startsWith?.("anthropic-compatible-")?(a.apiKey?c["x-api-key"]=a.apiKey:a.accessToken&&(c.Authorization=`Bearer ${a.accessToken}`),c["anthropic-version"]||(c["anthropic-version"]="2023-06-01")):c.Authorization=`Bearer ${a.apiKey||a.accessToken}`}return b&&(c.Accept="text/event-stream"),c}transformRequest(a,b,c,d){if(this.provider?.startsWith?.("openai-compatible-")||this.provider?.startsWith?.("anthropic-compatible-")){let c=a.includes("/")?a.split("/").pop():a;return{...b,model:c}}return b}async refreshCredentials(a,b){if(!a.refreshToken)return null;try{return await (0,f.iD)(this.provider,a,b)}catch(a){return b?.error?.("TOKEN",`${this.provider} refresh error: ${a.message}`),null}}}},24978:(a,b,c)=>{c.d(b,{V:()=>f});var d=c(39859),e=c(60293);class f extends d.H{constructor(){super("gemini-cli",e.xq["gemini-cli"])}buildUrl(a,b,c=0){return`${this.config.baseUrl}:${b?"streamGenerateContent?alt=sse":"generateContent"}`}buildHeaders(a,b=!0){return{"Content-Type":"application/json",Authorization:`Bearer ${a.accessToken}`,...b&&{Accept:"text/event-stream"}}}transformRequest(a,b,c,d){return!b.project&&d?.projectId&&(b.project=d.projectId),b}async refreshCredentials(a,b){if(!a.refreshToken)return null;try{let c=await fetch(e.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a.refreshToken,client_id:this.config.clientId,client_secret:this.config.clientSecret})});if(!c.ok)return null;let d=await c.json();return b?.info?.("TOKEN","Gemini CLI refreshed"),{accessToken:d.access_token,refreshToken:d.refresh_token||a.refreshToken,expiresIn:d.expires_in,projectId:a.projectId}}catch(a){return b?.error?.("TOKEN",`Gemini CLI refresh error: ${a.message}`),null}}}},36589:(a,b,c)=>{c.d(b,{B:()=>j});var d=c(39859),e=c(60293),f=c(94755),g=c(87068);let h=new Uint32Array(256);for(let a=0;a<256;a++){let b=a;for(let a=0;a<8;a++)b=1&b?0xedb88320^b>>>1:b>>>1;h[a]=b>>>0}function i(a){let b=0xffffffff;for(let c=0;c<a.length;c++)b=h[(b^a[c])&255]^b>>>8;return(0xffffffff^b)>>>0}class j extends d.H{constructor(){super("kiro",e.xq.kiro)}buildHeaders(a,b=!0){let c={...this.config.headers,"Amz-Sdk-Request":"attempt=1; max=3","Amz-Sdk-Invocation-Id":(0,f.A)()};return a.accessToken&&(c.Authorization=`Bearer ${a.accessToken}`),c}transformRequest(a,b,c,d){return b}async execute({model:a,body:b,stream:c,credentials:d,signal:e,log:f}){let g=this.buildUrl(a,c,0),h=this.buildHeaders(d,c),i=this.transformRequest(a,b,c,d),j=await fetch(g,{method:"POST",headers:h,body:JSON.stringify(i),signal:e});return j.ok?{response:this.transformEventStreamToSSE(j,a),url:g,headers:h,transformedBody:i}:{response:j,url:g,headers:h,transformedBody:i}}transformEventStreamToSSE(a,b){let c=new Uint8Array(0),d=0,e=`chatcmpl-${Date.now()}`,f=Math.floor(Date.now()/1e3),g={endDetected:!1,finishEmitted:!1,hasToolCalls:!1,toolCallIndex:0,seenToolIds:new Map},h=new TransformStream({async transform(a,h){let j=new Uint8Array(c.length+a.length);j.set(c),j.set(a,c.length),c=j;let k=0;for(;c.length>=16&&k<1e3;){k++;let a=new DataView(c.buffer,c.byteOffset).getUint32(0,!1);if(a<16||a>c.length||c.length<a)break;let j=c.slice(0,a);c=c.slice(a);let l=function(a){try{let b=new DataView(a.buffer,a.byteOffset);b.getUint32(0,!1);let c=b.getUint32(4,!1),d=b.getUint32(8,!1),e=i(a.slice(0,8));if(d!==e)return console.warn(`[Kiro] Prelude CRC mismatch: expected ${d}, got ${e} — skipping corrupted frame`),null;let f=b.getUint32(a.length-4,!1),g=i(a.slice(0,a.length-4));if(f!==g)return console.warn(`[Kiro] Message CRC mismatch: expected ${f}, got ${g} — skipping corrupted frame`),null;let h={},j=12,k=12+c;for(;j<k&&j<a.length;){let b=a[j];if(++j+b>a.length)break;let c=new TextDecoder().decode(a.slice(j,j+b)),d=a[j+=b];if(j++,7===d){let b=a[j]<<8|a[j+1];if((j+=2)+b>a.length)break;let d=new TextDecoder().decode(a.slice(j,j+b));j+=b,h[c]=d}else break}let l=12+c,m=a.length-4,n=null;if(m>l){let b=new TextDecoder().decode(a.slice(l,m));if(!b||!b.trim())return{headers:h,payload:null};try{n=JSON.parse(b)}catch(c){let a=c instanceof Error?c:Error(String(c));console.warn(`[Kiro] Failed to parse payload: ${a.message} | payload: ${b.substring(0,100)}`),n={raw:b}}}return{headers:h,payload:n}}catch(b){let a=b instanceof Error?b:Error(String(b));return console.warn(`[Kiro] Frame parse error: ${a.message}`),null}}(j);if(!l)continue;let m=l.headers[":event-type"]||"";if(g.totalContentLength||(g.totalContentLength=0),g.contextUsagePercentage||(g.contextUsagePercentage=0),"assistantResponseEvent"===m){let a="string"==typeof l.payload?.content?l.payload.content:"";if(!a)continue;g.totalContentLength+=a.length;let c={id:e,object:"chat.completion.chunk",created:f,model:b,choices:[{index:0,delta:0===d?{role:"assistant",content:a}:{content:a},finish_reason:null}]};d++,h.enqueue(new TextEncoder().encode(`data: ${JSON.stringify(c)}
|
|
1
|
+
"use strict";exports.id=7544,exports.ids=[7544],exports.modules={14938:(a,b,c)=>{c.d(b,{c:()=>h});var d=c(55511),e=c.n(d),f=c(39859),g=c(60293);class h extends f.H{constructor(){super("antigravity",g.xq.antigravity)}buildUrl(a,b,c=0){let d=this.getBaseUrls(),e=d[c]||d[0];return`${e}/v1internal:${b?"streamGenerateContent?alt=sse":"generateContent"}`}buildHeaders(a,b=!0){return{"Content-Type":"application/json",Authorization:`Bearer ${a.accessToken}`,"User-Agent":this.config.headers?.["User-Agent"]||"antigravity/1.104.0 darwin/arm64","X-OmniRoute-Source":"omniroute",...b&&{Accept:"text/event-stream"}}}transformRequest(a,b,c,d){let f=b?.project,g=d?.projectId,h=f||g||this.generateProjectId();f||g||console.warn(`[Antigravity] ⚠️ No projectId provided via body or credentials — using generated fallback "${h}". This may cause 404 errors if the account has no active GCP project. Ensure the OAuth token includes a valid project or the request includes a project field.`);let i=(b.request?.contents?.map(a=>{let b=a.role;a.parts?.some(a=>a.functionResponse)&&(b="user");let c=a.parts?.filter(a=>!a.thought&&!a.thoughtSignature)||[];return{...a,role:b,parts:c}})||[]).filter(a=>!Array.isArray(a.parts)||a.parts.length>0),j={...b.request,...i.length>0&&{contents:i},sessionId:b.request?.sessionId||this.generateSessionId(),safetySettings:void 0,toolConfig:b.request?.tools?.length>0?{functionCallingConfig:{mode:"VALIDATED"}}:b.request?.toolConfig},k=a&&a.includes("/")?a.split("/").pop():a;return{...b,project:h,model:k,userAgent:"antigravity",requestType:"agent",requestId:`agent-${e().randomUUID()}`,request:j}}async refreshCredentials(a,b){if(!a.refreshToken)return null;try{let c=await fetch(g.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a.refreshToken,client_id:this.config.clientId,client_secret:this.config.clientSecret})});if(!c.ok)return null;let d=await c.json();return b?.info?.("TOKEN","Antigravity refreshed"),{accessToken:d.access_token,refreshToken:d.refresh_token||a.refreshToken,expiresIn:d.expires_in,projectId:a.projectId}}catch(a){return b?.error?.("TOKEN",`Antigravity refresh error: ${a.message}`),null}}generateProjectId(){let a=["useful","bright","swift","calm","bold"][Math.floor(5*Math.random())],b=["fuze","wave","spark","flow","core"][Math.floor(5*Math.random())];return`${a}-${b}-${e().randomUUID().slice(0,5)}`}generateSessionId(){return`-${Math.floor(9e18*Math.random())}`}parseRetryHeaders(a){if(!a?.get)return null;let b=a.get("retry-after");if(b){let a=parseInt(b,10);if(!isNaN(a)&&a>0)return 1e3*a;let c=new Date(b);if(!isNaN(c.getTime())){let a=c.getTime()-Date.now();return a>0?a:null}}let c=a.get("x-ratelimit-reset-after");if(c){let a=parseInt(c,10);if(!isNaN(a)&&a>0)return 1e3*a}let d=a.get("x-ratelimit-reset");if(d){let a=1e3*parseInt(d,10)-Date.now();return a>0?a:null}return null}parseRetryFromErrorMessage(a){if(!a||"string"!=typeof a)return null;let b=a.match(/reset after (\d+h)?(\d+m)?(\d+s)?/i);if(!b)return null;let c=0;return b[1]&&(c+=3600*parseInt(b[1])*1e3),b[2]&&(c+=60*parseInt(b[2])*1e3),b[3]&&(c+=1e3*parseInt(b[3])),c>0?c:null}async execute({model:a,body:b,stream:c,credentials:d,signal:e,log:f}){let h=this.getFallbackCount(),i=null,j=0,k={};for(let l=0;l<h;l++){let m=this.buildUrl(a,c,l),n=this.buildHeaders(d,c),o=this.transformRequest(a,b,c,d);k[l]||(k[l]=0);try{let a=await fetch(m,{method:"POST",headers:n,body:JSON.stringify(o),signal:e});if(a.status===g.gx.RATE_LIMITED||a.status===g.gx.SERVICE_UNAVAILABLE){let b=this.parseRetryHeaders(a.headers);if(!b)try{let c=await a.clone().text(),d=JSON.parse(c),e=d?.error?.message||d?.message||"";b=this.parseRetryFromErrorMessage(e)}catch(a){}if(b&&b<=1e4){f?.debug?.("RETRY",`${a.status} with Retry-After: ${Math.ceil(b/1e3)}s, waiting...`),await new Promise(a=>setTimeout(a,b)),l--;continue}if(a.status===g.gx.RATE_LIMITED&&(!b||0===b)&&k[l]<3){k[l]++;let a=Math.min(1e3*2**k[l],1e4);f?.debug?.("RETRY",`429 auto retry ${k[l]}/3 after ${a/1e3}s`),await new Promise(b=>setTimeout(b,a)),l--;continue}if(f?.debug?.("RETRY",`${a.status}, Retry-After ${b?`too long (${Math.ceil(b/1e3)}s)`:"missing"}, trying fallback`),j=a.status,l+1<h)continue}if(this.shouldRetry(a.status,l)){f?.debug?.("RETRY",`${a.status} on ${m}, trying fallback ${l+1}`),j=a.status;continue}return{response:a,url:m,headers:n,transformedBody:o}}catch(a){if(i=a,l+1<h){f?.debug?.("RETRY",`Error on ${m}, trying fallback ${l+1}`);continue}throw a}}throw i||Error(`All ${h} URLs failed with status ${j}`)}}},18221:(a,b,c)=>{c.d(b,{L:()=>g});var d=c(39859),e=c(60293),f=c(87068);class g extends d.H{constructor(a){super(a,e.xq[a]||e.xq.openai)}buildUrl(a,b,c=0,d=null){if(this.provider?.startsWith?.("openai-compatible-")){let a=(d?.providerSpecificData?.baseUrl||"https://api.openai.com/v1").replace(/\/$/,""),b=this.provider.includes("responses")?"/responses":"/chat/completions";return`${a}${b}`}if(this.provider?.startsWith?.("anthropic-compatible-")){let a=(d?.providerSpecificData?.baseUrl||"https://api.anthropic.com/v1").replace(/\/$/,"");return`${a}/messages`}switch(this.provider){case"claude":case"glm":case"kimi-coding":case"minimax":case"minimax-cn":return`${this.config.baseUrl}?beta=true`;case"gemini":return`${this.config.baseUrl}/${a}:${b?"streamGenerateContent?alt=sse":"generateContent"}`;default:return this.config.baseUrl}}buildHeaders(a,b=!0){let c={"Content-Type":"application/json",...this.config.headers};switch(this.provider){case"gemini":a.apiKey?c["x-goog-api-key"]=a.apiKey:c.Authorization=`Bearer ${a.accessToken}`;break;case"claude":a.apiKey?c["x-api-key"]=a.apiKey:c.Authorization=`Bearer ${a.accessToken}`;break;case"glm":case"kimi-coding":case"minimax":case"minimax-cn":c["x-api-key"]=a.apiKey||a.accessToken;break;default:this.provider?.startsWith?.("anthropic-compatible-")?(a.apiKey?c["x-api-key"]=a.apiKey:a.accessToken&&(c.Authorization=`Bearer ${a.accessToken}`),c["anthropic-version"]||(c["anthropic-version"]="2023-06-01")):c.Authorization=`Bearer ${a.apiKey||a.accessToken}`}return b&&(c.Accept="text/event-stream"),c}transformRequest(a,b,c,d){if(this.provider?.startsWith?.("openai-compatible-")||this.provider?.startsWith?.("anthropic-compatible-")){let c=a.includes("/")?a.split("/").pop():a;return{...b,model:c}}return b}async refreshCredentials(a,b){if(!a.refreshToken)return null;try{return await (0,f.iD)(this.provider,a,b)}catch(a){return b?.error?.("TOKEN",`${this.provider} refresh error: ${a.message}`),null}}}},24978:(a,b,c)=>{c.d(b,{V:()=>f});var d=c(39859),e=c(60293);class f extends d.H{constructor(){super("gemini-cli",e.xq["gemini-cli"])}buildUrl(a,b,c=0){return`${this.config.baseUrl}:${b?"streamGenerateContent?alt=sse":"generateContent"}`}buildHeaders(a,b=!0){return{"Content-Type":"application/json",Authorization:`Bearer ${a.accessToken}`,...b&&{Accept:"text/event-stream"}}}transformRequest(a,b,c,d){return!b.project&&d?.projectId&&(b.project=d.projectId),b}async refreshCredentials(a,b){if(!a.refreshToken)return null;try{let c=await fetch(e.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a.refreshToken,client_id:this.config.clientId,client_secret:this.config.clientSecret})});if(!c.ok)return null;let d=await c.json();return b?.info?.("TOKEN","Gemini CLI refreshed"),{accessToken:d.access_token,refreshToken:d.refresh_token||a.refreshToken,expiresIn:d.expires_in,projectId:a.projectId}}catch(a){return b?.error?.("TOKEN",`Gemini CLI refresh error: ${a.message}`),null}}}},36589:(a,b,c)=>{c.d(b,{B:()=>j});var d=c(39859),e=c(60293),f=c(94755),g=c(87068);let h=new Uint32Array(256);for(let a=0;a<256;a++){let b=a;for(let a=0;a<8;a++)b=1&b?0xedb88320^b>>>1:b>>>1;h[a]=b>>>0}function i(a){let b=0xffffffff;for(let c=0;c<a.length;c++)b=h[(b^a[c])&255]^b>>>8;return(0xffffffff^b)>>>0}class j extends d.H{constructor(){super("kiro",e.xq.kiro)}buildHeaders(a,b=!0){let c={...this.config.headers,"Amz-Sdk-Request":"attempt=1; max=3","Amz-Sdk-Invocation-Id":(0,f.A)()};return a.accessToken&&(c.Authorization=`Bearer ${a.accessToken}`),c}transformRequest(a,b,c,d){return b}async execute({model:a,body:b,stream:c,credentials:d,signal:e,log:f}){let g=this.buildUrl(a,c,0),h=this.buildHeaders(d,c),i=this.transformRequest(a,b,c,d),j=await fetch(g,{method:"POST",headers:h,body:JSON.stringify(i),signal:e});return j.ok?{response:this.transformEventStreamToSSE(j,a),url:g,headers:h,transformedBody:i}:{response:j,url:g,headers:h,transformedBody:i}}transformEventStreamToSSE(a,b){let c=new Uint8Array(0),d=0,e=`chatcmpl-${Date.now()}`,f=Math.floor(Date.now()/1e3),g={endDetected:!1,finishEmitted:!1,hasToolCalls:!1,toolCallIndex:0,seenToolIds:new Map},h=new TransformStream({async transform(a,h){let j=new Uint8Array(c.length+a.length);j.set(c),j.set(a,c.length),c=j;let k=0;for(;c.length>=16&&k<1e3;){k++;let a=new DataView(c.buffer,c.byteOffset).getUint32(0,!1);if(a<16||a>c.length||c.length<a)break;let j=c.slice(0,a);c=c.slice(a);let l=function(a){try{let b=new DataView(a.buffer,a.byteOffset);b.getUint32(0,!1);let c=b.getUint32(4,!1),d=b.getUint32(8,!1),e=i(a.slice(0,8));if(d!==e)return console.warn(`[Kiro] Prelude CRC mismatch: expected ${d}, got ${e} — skipping corrupted frame`),null;let f=b.getUint32(a.length-4,!1),g=i(a.slice(0,a.length-4));if(f!==g)return console.warn(`[Kiro] Message CRC mismatch: expected ${f}, got ${g} — skipping corrupted frame`),null;let h={},j=12,k=12+c;for(;j<k&&j<a.length;){let b=a[j];if(++j+b>a.length)break;let c=new TextDecoder().decode(a.slice(j,j+b)),d=a[j+=b];if(j++,7===d){let b=a[j]<<8|a[j+1];if((j+=2)+b>a.length)break;let d=new TextDecoder().decode(a.slice(j,j+b));j+=b,h[c]=d}else break}let l=12+c,m=a.length-4,n=null;if(m>l){let b=new TextDecoder().decode(a.slice(l,m));if(!b||!b.trim())return{headers:h,payload:null};try{n=JSON.parse(b)}catch(c){let a=c instanceof Error?c:Error(String(c));console.warn(`[Kiro] Failed to parse payload: ${a.message} | payload: ${b.substring(0,100)}`),n={raw:b}}}return{headers:h,payload:n}}catch(b){let a=b instanceof Error?b:Error(String(b));return console.warn(`[Kiro] Frame parse error: ${a.message}`),null}}(j);if(!l)continue;let m=l.headers[":event-type"]||"";if(g.totalContentLength||(g.totalContentLength=0),g.contextUsagePercentage||(g.contextUsagePercentage=0),"assistantResponseEvent"===m){let a="string"==typeof l.payload?.content?l.payload.content:"";if(!a)continue;g.totalContentLength+=a.length;let c={id:e,object:"chat.completion.chunk",created:f,model:b,choices:[{index:0,delta:0===d?{role:"assistant",content:a}:{content:a},finish_reason:null}]};d++,h.enqueue(new TextEncoder().encode(`data: ${JSON.stringify(c)}
|
|
2
2
|
|
|
3
3
|
`))}if("codeEvent"===m&&l.payload?.content){let a={id:e,object:"chat.completion.chunk",created:f,model:b,choices:[{index:0,delta:{content:l.payload.content},finish_reason:null}]};d++,h.enqueue(new TextEncoder().encode(`data: ${JSON.stringify(a)}
|
|
4
4
|
|
|
@@ -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:()=>e});var d=c(60293);class e{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()}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:e,signal:f,log:g}){let h=this.getFallbackCount(),i=null,j=0;for(let k=0;k<h;k++){let l=this.buildUrl(a,c,k,e),m=this.buildHeaders(e,c),n=this.transformRequest(a,b,c,e);try{let a=c?null:AbortSignal.timeout(d.MT),b=f&&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}(f,a):f||a,e={method:"POST",headers:m,body:JSON.stringify(n)};b&&(e.signal=b);let h=await fetch(l,e);if(this.shouldRetry(h.status,k)){g?.debug?.("RETRY",`${h.status} on ${l}, trying fallback ${k+1}`),j=h.status;continue}return{response:h,url:l,headers:m,transformedBody:n}}catch(b){let a=b instanceof Error?b:Error(String(b));if("TimeoutError"===a.name&&g?.warn?.("TIMEOUT",`Fetch timeout after ${d.MT}ms on ${l}`),i=a,k+1<h){g?.debug?.("RETRY",`Error on ${l}, trying fallback ${k+1}`);continue}throw a}}throw i||Error(`All ${h} URLs failed with status ${j}`)}}},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:()=>p,yI:()=>m});var d=c(94755),e=c(74075),f=c.n(e);let g=(a,...b)=>console.log(`[PROTOBUF:${a}]`,...b),h="1.1.3",i=new Set([1,2,3,9,10,11,27,1,25]);function j(a){let b=[];for(;a>=128;)b.push(127&a|128),a>>>=7;return b.push(127&a),new Uint8Array(b)}function k(a,b,c){let d=j(a<<3|b);if(0===b)return l(d,j(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 l(d,j(a.length),a)}return new Uint8Array(0)}function l(...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 m(a,b,c=[],e=null){g("BODY",`Generating: ${a.length} msgs, model=${b}, tools=${c.length}, reasoning=${e||"none"}`);let h=function(a,b,c=[],e=null){return k(1,2,function(a,b,c=[],e=null){let f,g=c?.length>0,h=[],i=[];for(let b=0;b<a.length;b++){let c=a[b],e="user"===c.role?1:2,f=(0,d.A)(),j=b===a.length-1;h.push({content:c.content,role:e,messageId:f,isLast:j,hasTools:g,toolResults:c.tool_results||[]}),i.push({messageId:f,role:e})}let m=0;return"medium"===e?m=1:"high"===e&&(m=2),l(...h.map(a=>k(1,2,function(a,b,c,d=null,e=!1,f=!1,g=[]){return l(k(1,2,a),k(2,0,b),k(13,2,c),...g.length>0?g.map(a=>{let b,c,d,e;return k(18,2,(b=a.tool_call_id||"",c=a.name||"",d=a.index||0,e=a.raw_args||"{}",l(k(1,2,b),k(2,2,c),k(3,0,d),k(5,2,e))))}):[],k(29,0,+!!f),k(47,0,f?2:1),...e&&f?[k(51,2,j(1))]:[])}(a.content,a.role,a.messageId,null,a.isLast,a.hasTools,a.toolResults))),k(2,0,1),k(3,2,new Uint8Array(0)),k(4,0,1),k(5,2,l(k(1,2,b),k(4,2,new Uint8Array(0)))),k(8,2,""),k(13,0,1),k(15,2,(f=l(k(1,2,new Uint8Array(0)),k(2,2,new Uint8Array(0))),l(k(1,2,"cursor\\aisettings"),k(3,2,new Uint8Array(0)),k(6,2,f),k(8,0,1),k(9,0,1)))),k(19,0,1),k(23,2,(0,d.A)()),k(26,2,l(k(1,2,process.platform||"linux"),k(2,2,process.arch||"x64"),k(3,2,process.version||"v20.0.0"),k(4,2,process.cwd?.()||"/"),k(5,2,new Date().toISOString()))),k(27,0,+!!g),...g?[k(29,2,j(1))]:[],...i.map(a=>k(30,2,function(a,b,c=null){return l(k(1,2,a),...c?[k(2,2,c)]:[],k(3,0,b))}(a.messageId,a.role))),...c?.length>0?c.map(a=>{let b,c,d;return k(34,2,(b=a.function?.name||a.name||"",c=a.function?.description||a.description||"",d=a.function?.parameters||a.input_schema||{},l(...b?[k(1,2,b)]:[],...c?[k(2,2,c)]:[],...Object.keys(d).length>0?[k(3,2,JSON.stringify(d))]:[],k(4,2,"custom"))))}):[],k(35,0,0),k(38,0,0),k(46,0,g?2:1),k(47,2,""),k(48,0,+!g),k(49,0,m),k(51,0,0),k(53,0,1),k(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}(h,!1);return g("BODY",`Protobuf=${h.length}B, Framed=${i.length}B`),i}function n(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 o(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]=n(a,b),f=7&d,g=e;if(0===f)[c,g]=n(a,g);else if(2===f){let[b,d]=n(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 p(a){try{let b=o(a);for(let a of b.keys())i.has(a)||g("SCHEMA",`Unknown response field #${a} detected. Schema v${h} may be outdated.`);if(b.has(1)){let a=function(a){let b=o(a),c="",d="",e="",f=!1;if(b.has(3)&&(c=new TextDecoder().decode(b.get(3)[0].value).split("\n")[0]),b.has(9)&&(d=new TextDecoder().decode(b.get(9)[0].value)),b.has(11)&&(f=0!==b.get(11)[0].value),b.has(27))try{let a=o(b.get(27)[0].value);if(a.has(1)){let b=o(a.get(1)[0].value);b.has(1)&&(d=new TextDecoder().decode(b.get(1)[0].value)),b.has(3)&&(e=new TextDecoder().decode(b.get(3)[0].value))}}catch(a){g("EXTRACT",`MCP parse error: ${a.message}`)}return(!e&&b.has(10)&&(e=new TextDecoder().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 g("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=o(a),c=null,d=null;if(b.has(1)&&(c=new TextDecoder().decode(b.get(1)[0].value)),b.has(25))try{let a=o(b.get(25)[0].value);a.has(1)&&(d=new TextDecoder().decode(a.get(1)[0].value))}catch(a){g("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 g("EXTRACT",`Decode failed (schema v${h}): ${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}}},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}},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:()=>r});var e=c(39859),f=c(60293),g=c(51082),h=c(50101),i=c(55120),j=c(92773),k=c(55511),l=c.n(k),m=c(85081),n=c(74075),o=c.n(n);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{}function p(a,b){if(a.length>10&&123===a[0]&&34===a[1])try{if(a.toString("utf-8").startsWith('{"error"'))return console.log("[DECOMPRESS] Detected JSON error, skipping decompression"),a}catch{}if(1===b||2===b||3===b)try{return o().gunzipSync(a)}catch(c){console.log(`[DECOMPRESS ERROR] flags=${b}, payloadSize=${a.length}, error=${c.message}`),console.log("[DECOMPRESS ERROR] First 50 bytes (hex):",a.slice(0,50).toString("hex")),console.log("[DECOMPRESS ERROR] First 50 bytes (utf8):",a.slice(0,50).toString("utf8").replace(/[^\x20-\x7E]/g,"."))}return a}function q(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 r 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=${l().randomUUID()}`,"x-client-key":l().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":l().randomUUID(),"x-cursor-timezone":Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC","x-ghost-mode":d?"true":"false","x-request-id":l().randomUUID(),"x-session-id":(0,m.Ay)(e,m.Ay.DNS)}}transformRequest(a,b,c,d){let e=(0,j.k)(a,b,c,d),f=e.messages||[],h=e.tools||b.tools||[],i=b.reasoning_effort||null;return(0,g.yI)(f,a,h,i)}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=0;for(console.log(`[CURSOR BUFFER] Total length: ${a.length} bytes`);j<a.length;){if(j+5>a.length){console.log(`[CURSOR BUFFER] Reached end, offset=${j}, remaining=${a.length-j}`);break}let b=a[j],c=a.readUInt32BE(j+1);if(console.log(`[CURSOR BUFFER] Frame ${n+1}: flags=0x${b.toString(16).padStart(2,"0")}, length=${c}`),j+5+c>a.length){console.log(`[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,n++,!(d=p(d,b))){console.log(`[CURSOR BUFFER] Frame ${n}: decompression failed, skipping`);continue}try{let a=d.toString("utf-8");if(a.startsWith("{")&&a.includes('"error"'))return q(JSON.parse(a))}catch{}let e=(0,g.CP)(new Uint8Array(d));if(console.log(`[CURSOR DECODED] Frame ${n}:`,e),e.error)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);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(console.log(`[CURSOR BUFFER] Parsed ${n} frames, toolCallsMap size: ${m.size}, finalized toolCalls: ${l.length}`),m.entries()))l.find(b=>b.id===a)||(console.log(`[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}}));console.log(`[CURSOR BUFFER] Final toolCalls count: ${l.length}`);let o={role:"assistant",content:k||null};l.length>0&&(o.tool_calls=l);let r=(0,h.OF)(c,k.length,i.h.OPENAI),s={id:d,object:"chat.completion",created:e,model:b,choices:[{index:0,message:o,finish_reason:l.length>0?"tool_calls":"stop"}],usage:r};return new Response(JSON.stringify(s),{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,o=0;for(console.log(`[CURSOR BUFFER SSE] Total length: ${a.length} bytes`);k<a.length;){if(k+5>a.length){console.log(`[CURSOR BUFFER SSE] Reached end, offset=${k}, remaining=${a.length-k}`);break}let c=a[k],h=a.readUInt32BE(k+1);if(console.log(`[CURSOR BUFFER SSE] Frame ${o+1}: flags=0x${c.toString(16).padStart(2,"0")}, length=${h}`),k+5+h>a.length){console.log(`[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,o++,!(i=p(i,c))){console.log(`[CURSOR BUFFER SSE] Frame ${o}: decompression failed, skipping`);continue}try{let a=i.toString("utf-8");if(a.startsWith("{")&&a.includes('"error"'))return q(JSON.parse(a))}catch{}let r=(0,g.CP)(new Uint8Array(i));if(console.log(`[CURSOR DECODED SSE] Frame ${o}:`,r),r.error)return new Response(JSON.stringify({error:{message:r.error,type:"rate_limit_error",code:"rate_limited"}}),{status:f.gx.RATE_LIMITED,headers:{"Content-Type":"application/json"}});if(r.toolCall){let a=r.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:()=>e});var d=c(60293);class e{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()}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:e,signal:f,log:g}){let h=this.getFallbackCount(),i=null,j=0;for(let k=0;k<h;k++){let l=this.buildUrl(a,c,k,e),m=this.buildHeaders(e,c),n=this.transformRequest(a,b,c,e);try{let a=c?null:AbortSignal.timeout(d.MT),b=f&&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}(f,a):f||a,e={method:"POST",headers:m,body:JSON.stringify(n)};b&&(e.signal=b);let h=await fetch(l,e);if(this.shouldRetry(h.status,k)){g?.debug?.("RETRY",`${h.status} on ${l}, trying fallback ${k+1}`),j=h.status;continue}return{response:h,url:l,headers:m,transformedBody:n}}catch(b){let a=b instanceof Error?b:Error(String(b));if("TimeoutError"===a.name&&g?.warn?.("TIMEOUT",`Fetch timeout after ${d.MT}ms on ${l}`),i=a,k+1<h){g?.debug?.("RETRY",`Error on ${l}, trying fallback ${k+1}`);continue}throw a}}throw i||Error(`All ${h} URLs failed with status ${j}`)}}},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:()=>p,yI:()=>m});var d=c(94755),e=c(74075),f=c.n(e);let g=(a,...b)=>console.log(`[PROTOBUF:${a}]`,...b),h="1.1.3",i=new Set([1,2,3,9,10,11,27,1,25]);function j(a){let b=[];for(;a>=128;)b.push(127&a|128),a>>>=7;return b.push(127&a),new Uint8Array(b)}function k(a,b,c){let d=j(a<<3|b);if(0===b)return l(d,j(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 l(d,j(a.length),a)}return new Uint8Array(0)}function l(...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 m(a,b,c=[],e=null){g("BODY",`Generating: ${a.length} msgs, model=${b}, tools=${c.length}, reasoning=${e||"none"}`);let h=function(a,b,c=[],e=null){return k(1,2,function(a,b,c=[],e=null){let f,g=c?.length>0,h=[],i=[];for(let b=0;b<a.length;b++){let c=a[b],e="user"===c.role?1:2,f=(0,d.A)(),j=b===a.length-1;h.push({content:c.content,role:e,messageId:f,isLast:j,hasTools:g,toolResults:c.tool_results||[]}),i.push({messageId:f,role:e})}let m=0;return"medium"===e?m=1:"high"===e&&(m=2),l(...h.map(a=>k(1,2,function(a,b,c,d=null,e=!1,f=!1,g=[]){return l(k(1,2,a),k(2,0,b),k(13,2,c),...g.length>0?g.map(a=>{let b,c,d,e;return k(18,2,(b=a.tool_call_id||"",c=a.name||"",d=a.index||0,e=a.raw_args||"{}",l(k(1,2,b),k(2,2,c),k(3,0,d),k(5,2,e))))}):[],k(29,0,+!!f),k(47,0,f?2:1),...e&&f?[k(51,2,j(1))]:[])}(a.content,a.role,a.messageId,null,a.isLast,a.hasTools,a.toolResults))),k(2,0,1),k(3,2,new Uint8Array(0)),k(4,0,1),k(5,2,l(k(1,2,b),k(4,2,new Uint8Array(0)))),k(8,2,""),k(13,0,1),k(15,2,(f=l(k(1,2,new Uint8Array(0)),k(2,2,new Uint8Array(0))),l(k(1,2,"cursor\\aisettings"),k(3,2,new Uint8Array(0)),k(6,2,f),k(8,0,1),k(9,0,1)))),k(19,0,1),k(23,2,(0,d.A)()),k(26,2,l(k(1,2,process.platform||"linux"),k(2,2,process.arch||"x64"),k(3,2,process.version||"v20.0.0"),k(4,2,process.cwd?.()||"/"),k(5,2,new Date().toISOString()))),k(27,0,+!!g),...g?[k(29,2,j(1))]:[],...i.map(a=>k(30,2,function(a,b,c=null){return l(k(1,2,a),...c?[k(2,2,c)]:[],k(3,0,b))}(a.messageId,a.role))),...c?.length>0?c.map(a=>{let b,c,d;return k(34,2,(b=a.function?.name||a.name||"",c=a.function?.description||a.description||"",d=a.function?.parameters||a.input_schema||{},l(...b?[k(1,2,b)]:[],...c?[k(2,2,c)]:[],...Object.keys(d).length>0?[k(3,2,JSON.stringify(d))]:[],k(4,2,"custom"))))}):[],k(35,0,0),k(38,0,0),k(46,0,g?2:1),k(47,2,""),k(48,0,+!g),k(49,0,m),k(51,0,0),k(53,0,1),k(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}(h,!1);return g("BODY",`Protobuf=${h.length}B, Framed=${i.length}B`),i}function n(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 o(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]=n(a,b),f=7&d,g=e;if(0===f)[c,g]=n(a,g);else if(2===f){let[b,d]=n(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 p(a){try{let b=o(a);for(let a of b.keys())i.has(a)||g("SCHEMA",`Unknown response field #${a} detected. Schema v${h} may be outdated.`);if(b.has(1)){let a=function(a){let b=o(a),c="",d="",e="",f=!1;if(b.has(3)&&(c=new TextDecoder().decode(b.get(3)[0].value).split("\n")[0]),b.has(9)&&(d=new TextDecoder().decode(b.get(9)[0].value)),b.has(11)&&(f=0!==b.get(11)[0].value),b.has(27))try{let a=o(b.get(27)[0].value);if(a.has(1)){let b=o(a.get(1)[0].value);b.has(1)&&(d=new TextDecoder().decode(b.get(1)[0].value)),b.has(3)&&(e=new TextDecoder().decode(b.get(3)[0].value))}}catch(a){g("EXTRACT",`MCP parse error: ${a.message}`)}return(!e&&b.has(10)&&(e=new TextDecoder().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 g("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=o(a),c=null,d=null;if(b.has(1)&&(c=new TextDecoder().decode(b.get(1)[0].value)),b.has(25))try{let a=o(b.get(25)[0].value);a.has(1)&&(d=new TextDecoder().decode(a.get(1)[0].value))}catch(a){g("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 g("EXTRACT",`Decode failed (schema v${h}): ${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}}},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:()=>r});var e=c(39859),f=c(60293),g=c(51082),h=c(50101),i=c(55120),j=c(92773),k=c(55511),l=c.n(k),m=c(85081),n=c(74075),o=c.n(n);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{}function p(a,b){if(a.length>10&&123===a[0]&&34===a[1])try{if(a.toString("utf-8").startsWith('{"error"'))return console.log("[DECOMPRESS] Detected JSON error, skipping decompression"),a}catch{}if(1===b||2===b||3===b)try{return o().gunzipSync(a)}catch(c){console.log(`[DECOMPRESS ERROR] flags=${b}, payloadSize=${a.length}, error=${c.message}`),console.log("[DECOMPRESS ERROR] First 50 bytes (hex):",a.slice(0,50).toString("hex")),console.log("[DECOMPRESS ERROR] First 50 bytes (utf8):",a.slice(0,50).toString("utf8").replace(/[^\x20-\x7E]/g,"."))}return a}function q(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 r 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=${l().randomUUID()}`,"x-client-key":l().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":l().randomUUID(),"x-cursor-timezone":Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC","x-ghost-mode":d?"true":"false","x-request-id":l().randomUUID(),"x-session-id":(0,m.Ay)(e,m.Ay.DNS)}}transformRequest(a,b,c,d){let e=(0,j.k)(a,b,c,d),f=e.messages||[],h=e.tools||b.tools||[],i=b.reasoning_effort||null;return(0,g.yI)(f,a,h,i)}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=0;for(console.log(`[CURSOR BUFFER] Total length: ${a.length} bytes`);j<a.length;){if(j+5>a.length){console.log(`[CURSOR BUFFER] Reached end, offset=${j}, remaining=${a.length-j}`);break}let b=a[j],c=a.readUInt32BE(j+1);if(console.log(`[CURSOR BUFFER] Frame ${n+1}: flags=0x${b.toString(16).padStart(2,"0")}, length=${c}`),j+5+c>a.length){console.log(`[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,n++,!(d=p(d,b))){console.log(`[CURSOR BUFFER] Frame ${n}: decompression failed, skipping`);continue}try{let a=d.toString("utf-8");if(a.startsWith("{")&&a.includes('"error"'))return q(JSON.parse(a))}catch{}let e=(0,g.CP)(new Uint8Array(d));if(console.log(`[CURSOR DECODED] Frame ${n}:`,e),e.error)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);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(console.log(`[CURSOR BUFFER] Parsed ${n} frames, toolCallsMap size: ${m.size}, finalized toolCalls: ${l.length}`),m.entries()))l.find(b=>b.id===a)||(console.log(`[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}}));console.log(`[CURSOR BUFFER] Final toolCalls count: ${l.length}`);let o={role:"assistant",content:k||null};l.length>0&&(o.tool_calls=l);let r=(0,h.OF)(c,k.length,i.h.OPENAI),s={id:d,object:"chat.completion",created:e,model:b,choices:[{index:0,message:o,finish_reason:l.length>0?"tool_calls":"stop"}],usage:r};return new Response(JSON.stringify(s),{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,o=0;for(console.log(`[CURSOR BUFFER SSE] Total length: ${a.length} bytes`);k<a.length;){if(k+5>a.length){console.log(`[CURSOR BUFFER SSE] Reached end, offset=${k}, remaining=${a.length-k}`);break}let c=a[k],h=a.readUInt32BE(k+1);if(console.log(`[CURSOR BUFFER SSE] Frame ${o+1}: flags=0x${c.toString(16).padStart(2,"0")}, length=${h}`),k+5+h>a.length){console.log(`[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,o++,!(i=p(i,c))){console.log(`[CURSOR BUFFER SSE] Frame ${o}: decompression failed, skipping`);continue}try{let a=i.toString("utf-8");if(a.startsWith("{")&&a.includes('"error"'))return q(JSON.parse(a))}catch{}let r=(0,g.CP)(new Uint8Array(i));if(console.log(`[CURSOR DECODED SSE] Frame ${o}:`,r),r.error)return new Response(JSON.stringify({error:{message:r.error,type:"rate_limit_error",code:"rate_limited"}}),{status:f.gx.RATE_LIMITED,headers:{"Content-Type":"application/json"}});if(r.toolCall){let a=r.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&&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
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=8158,exports.ids=[8158],exports.modules={38158:(a,b,c)=>{c.d(b,{getDefaultPricing:()=>e});let d={cc:{"claude-opus-4-5-20251101":{input:15,output:75,cached:7.5,reasoning:75,cache_creation:15},"claude-sonnet-4-5-20250929":{input:3,output:15,cached:1.5,reasoning:15,cache_creation:3},"claude-haiku-4-5-20251001":{input:.5,output:2.5,cached:.25,reasoning:2.5,cache_creation:.5}},cx:{"gpt-5.2-codex":{input:5,output:20,cached:2.5,reasoning:30,cache_creation:5},"gpt-5.2":{input:5,output:20,cached:2.5,reasoning:30,cache_creation:5},"gpt-5.1-codex-max":{input:8,output:32,cached:4,reasoning:48,cache_creation:8},"gpt-5.1-codex":{input:4,output:16,cached:2,reasoning:24,cache_creation:4},"gpt-5.1-codex-mini":{input:1.5,output:6,cached:.75,reasoning:9,cache_creation:1.5},"gpt-5.1":{input:4,output:16,cached:2,reasoning:24,cache_creation:4},"gpt-5-codex":{input:3,output:12,cached:1.5,reasoning:18,cache_creation:3},"gpt-5-codex-mini":{input:1,output:4,cached:.5,reasoning:6,cache_creation:1}},gc:{"gemini-3-flash-preview":{input:.5,output:3,cached:.03,reasoning:4.5,cache_creation:.5},"gemini-3-pro-preview":{input:2,output:12,cached:.25,reasoning:18,cache_creation:2},"gemini-2.5-pro":{input:2,output:12,cached:.25,reasoning:18,cache_creation:2},"gemini-2.5-flash":{input:.3,output:2.5,cached:.03,reasoning:3.75,cache_creation:.3},"gemini-2.5-flash-lite":{input:.15,output:1.25,cached:.015,reasoning:1.875,cache_creation:.15}},qw:{"qwen3-coder-plus":{input:1,output:4,cached:.5,reasoning:6,cache_creation:1},"qwen3-coder-flash":{input:.5,output:2,cached:.25,reasoning:3,cache_creation:.5},"vision-model":{input:1.5,output:6,cached:.75,reasoning:9,cache_creation:1.5}},if:{"qwen3-coder-plus":{input:1,output:4,cached:.5,reasoning:6,cache_creation:1},"kimi-k2":{input:1,output:4,cached:.5,reasoning:6,cache_creation:1},"kimi-k2-thinking":{input:1.5,output:6,cached:.75,reasoning:9,cache_creation:1.5},"deepseek-r1":{input:.75,output:3,cached:.375,reasoning:4.5,cache_creation:.75},"deepseek-v3.2-chat":{input:.5,output:2,cached:.25,reasoning:3,cache_creation:.5},"deepseek-v3.2-reasoner":{input:.75,output:3,cached:.375,reasoning:4.5,cache_creation:.75},"minimax-m2":{input:.5,output:2,cached:.25,reasoning:3,cache_creation:.5},"glm-4.6":{input:.5,output:2,cached:.25,reasoning:3,cache_creation:.5},"glm-4.7":{input:.75,output:3,cached:.375,reasoning:4.5,cache_creation:.75}},ag:{"gemini-3.1-pro-low":{input:2,output:12,cached:.25,reasoning:18,cache_creation:2},"gemini-3.1-pro-high":{input:4,output:18,cached:.5,reasoning:27,cache_creation:4},"gemini-3-flash":{input:.5,output:3,cached:.03,reasoning:4.5,cache_creation:.5},"claude-sonnet-4-6":{input:3,output:15,cached:.3,reasoning:22.5,cache_creation:3},"claude-opus-4-6-thinking":{input:5,output:25,cached:.5,reasoning:37.5,cache_creation:5},"gpt-oss-120b-medium":{input:.5,output:2,cached:.25,reasoning:3,cache_creation:.5}},gh:{"gpt-5":{input:3,output:12,cached:1.5,reasoning:18,cache_creation:3},"gpt-5-mini":{input:.75,output:3,cached:.375,reasoning:4.5,cache_creation:.75},"gpt-5.1-codex":{input:4,output:16,cached:2,reasoning:24,cache_creation:4},"gpt-5.1-codex-max":{input:8,output:32,cached:4,reasoning:48,cache_creation:8},"gpt-4.1":{input:2.5,output:10,cached:1.25,reasoning:15,cache_creation:2.5},"claude-4.5-sonnet":{input:3,output:15,cached:.3,reasoning:22.5,cache_creation:3},"claude-4.5-opus":{input:5,output:25,cached:.5,reasoning:37.5,cache_creation:5},"claude-4.5-haiku":{input:.5,output:2.5,cached:.05,reasoning:3.75,cache_creation:.5},"gemini-3-pro":{input:2,output:12,cached:.25,reasoning:18,cache_creation:2},"gemini-3-flash":{input:.5,output:3,cached:.03,reasoning:4.5,cache_creation:.5},"gemini-2.5-pro":{input:2,output:12,cached:.25,reasoning:18,cache_creation:2},"grok-code-fast-1":{input:.5,output:2,cached:.25,reasoning:3,cache_creation:.5}},openai:{"gpt-4o":{input:2.5,output:10,cached:1.25,reasoning:15,cache_creation:2.5},"gpt-4o-mini":{input:.15,output:.6,cached:.075,reasoning:.9,cache_creation:.15},"gpt-4-turbo":{input:10,output:30,cached:5,reasoning:45,cache_creation:10},o1:{input:15,output:60,cached:7.5,reasoning:90,cache_creation:15},"o1-mini":{input:3,output:12,cached:1.5,reasoning:18,cache_creation:3}},anthropic:{"claude-sonnet-4-20250514":{input:3,output:15,cached:1.5,reasoning:15,cache_creation:3},"claude-opus-4-20250514":{input:15,output:75,cached:7.5,reasoning:112.5,cache_creation:15},"claude-3-5-sonnet-20241022":{input:3,output:15,cached:1.5,reasoning:15,cache_creation:3}},gemini:{"gemini-3-pro-preview":{input:2,output:12,cached:.25,reasoning:18,cache_creation:2},"gemini-2.5-pro":{input:2,output:12,cached:.25,reasoning:18,cache_creation:2},"gemini-2.5-flash":{input:.3,output:2.5,cached:.03,reasoning:3.75,cache_creation:.3},"gemini-2.5-flash-lite":{input:.15,output:1.25,cached:.015,reasoning:1.875,cache_creation:.15}},openrouter:{auto:{input:2,output:8,cached:1,reasoning:12,cache_creation:2}},glm:{"glm-4.7":{input:.75,output:3,cached:.375,reasoning:4.5,cache_creation:.75},"glm-4.6":{input:.5,output:2,cached:.25,reasoning:3,cache_creation:.5},"glm-4.6v":{input:.75,output:3,cached:.375,reasoning:4.5,cache_creation:.75}},kimi:{"kimi-latest":{input:1,output:4,cached:.5,reasoning:6,cache_creation:1}},minimax:{"MiniMax-M2.1":{input:.5,output:2,cached:.25,reasoning:3,cache_creation:.5}},groq:{"openai/gpt-oss-120b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"gpt-oss-120b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"llama-3.3-70b-versatile":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"meta-llama/llama-4-maverick-17b-128e-instruct":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"qwen/qwen3-32b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0}},blackbox:{"gpt-4o":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"gemini-2.5-flash":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"claude-sonnet-4":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"deepseek-v3":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},blackboxai:{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"blackboxai-pro":{input:0,output:0,cached:0,reasoning:0,cache_creation:0}},fireworks:{"accounts/fireworks/models/gpt-oss-120b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"gpt-oss-120b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"accounts/fireworks/models/deepseek-v3p1":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"accounts/fireworks/models/llama-v3p3-70b-instruct":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"accounts/fireworks/models/qwen3-235b-a22b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0}},cerebras:{"gpt-oss-120b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"zai-glm-4.7":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"llama-3.3-70b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"llama-4-scout-17b-16e-instruct":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"qwen-3-235b-a22b-instruct-2507":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"qwen-3-32b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0}},nvidia:{"openai/gpt-oss-120b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"gpt-oss-120b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"moonshotai/kimi-k2.5":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"z-ai/glm4.7":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"deepseek-ai/deepseek-v3.2":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"nvidia/llama-3.3-70b-instruct":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"meta/llama-4-maverick-17b-128e-instruct":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"deepseek/deepseek-r1":{input:0,output:0,cached:0,reasoning:0,cache_creation:0}},nebius:{"openai/gpt-oss-120b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"gpt-oss-120b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"meta-llama/Llama-3.3-70B-Instruct":{input:0,output:0,cached:0,reasoning:0,cache_creation:0}},siliconflow:{"openai/gpt-oss-120b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"gpt-oss-120b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"deepseek-ai/DeepSeek-V3.2":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"deepseek-ai/DeepSeek-V3.1":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"deepseek-ai/DeepSeek-R1":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"Qwen/Qwen3-235B-A22B-Instruct-2507":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"Qwen/Qwen3-32B":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"moonshotai/Kimi-K2.5":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"zai-org/GLM-4.7":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"baidu/ERNIE-4.5-300B-A47B":{input:0,output:0,cached:0,reasoning:0,cache_creation:0}},hyperbolic:{"openai/gpt-oss-120b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"gpt-oss-120b":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"Qwen/QwQ-32B":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"deepseek-ai/DeepSeek-R1":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"deepseek-ai/DeepSeek-V3":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"meta-llama/Llama-3.3-70B-Instruct":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"meta-llama/Llama-3.2-3B-Instruct":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"Qwen/Qwen2.5-72B-Instruct":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"Qwen/Qwen2.5-Coder-32B-Instruct":{input:0,output:0,cached:0,reasoning:0,cache_creation:0},"NousResearch/Hermes-3-Llama-3.1-70B":{input:0,output:0,cached:0,reasoning:0,cache_creation:0}},kiro:{"claude-sonnet-4.5":{input:3,output:15,cached:1.5,reasoning:15,cache_creation:3},"claude-haiku-4.5":{input:.5,output:2.5,cached:.25,reasoning:2.5,cache_creation:.5}}};function e(){return d}}};
|